Faz o rollback de uma aplicação para uma release anterior, restaurando o código, removendo os arquivos que ela não tinha e reiniciando-a, com variáveis opcionais.
Faz o rollback da aplicação para o código que ela tinha nesta release, depois a reinicia. O rollback é registrado como uma nova release com source: "rollback", então você pode desfazê-lo do mesmo jeito. Opcionalmente, ele também restaura as variáveis de ambiente salvas com essa release.Fazer rollback não altera os dados que a aplicação criou enquanto roda, como um arquivo de banco de dados ou uploads. Para trazer os dados de volta, use um snapshot.
O ID da release para a qual fazer o rollback, como retornado pela lista de releases. Precisa ser uma release cujo código ainda é mantido (rollback.available é true).
Opcional. true também substitui as variáveis de ambiente da aplicação pelas salvas com essa release. O padrão false mantém as variáveis que a aplicação tem agora. Confira antes as mudanças com a pré-visualização do rollback.
O que o rollback faz:
Código: cada arquivo de código da release é restaurado exatamente como estava. Arquivos de código que a release não tinha são apagados.
Dados: arquivos criados pela aplicação enquanto roda não são alterados nem apagados.
Variáveis: não mudam, a menos que restore_environment seja true.
Restart: a aplicação reinicia com um build forçado, então o comando de build dela roda de novo, se tiver um.
Histórico de releases: a versão que estava rodando passa para rolled_back, e a nova release passa a ser a ativa. O rollback.from dela é a release que você restaurou.
Outras regras se aplicam:
Um rollback não usa os slots de deploy do seu plano, mas dois rollbacks da mesma aplicação precisam de pelo menos 30 segundos entre eles. Rollbacks também têm limite horário próprio por conta, igual ao limite horário de deploy do seu plano. Ao ultrapassá-lo, a resposta é 429 DEPLOY_RATE_LIMITED, com details.limit, details.window_seconds e details.retry_after, e nenhum slot de deploy é usado.
Se o código da release não puder ser restaurado, a requisição falha com INTERNAL_SERVER_ERROR. Nada muda. Se o código salvo dessa release estiver danificado, falha com INVALID_ZIP_STRUCTURE (400) antes de qualquer arquivo ser tocado.
Se o restart falhar depois que os arquivos foram restaurados, a resposta é o erro do restart (por exemplo BUILD_FAILED). A aplicação já roda o código restaurado, então corrija a causa e reinicie-a.
Só as releases que o seu plano mantém podem ser restauradas. Veja Histórico de deploys e limites de rollback.Exige o escopo apps:write quando chamado com uma chave de API. Se restore_environment for true, a chave também precisa do escopo apps:envs; sem ele, a requisição retorna 403 API_KEY_SCOPE_DENIED. Para um membro do workspace, exige as permissões apps:files e apps:lifecycle, além de apps:envs ao restaurar variáveis.
AUTH_TOKEN_MISSING, API_KEY_INVALID, SESSION_REVOKED: o header Authorization está ausente, a chave de API é inválida ou a sessão do painel foi revogada (401).
API_KEY_IP_DENIED: a chave de API é usada a partir de um IP fora da sua allowlist (403).
APP_NOT_FOUND: a aplicação não existe, ou não pertence a esta conta ou workspace (404).
RELEASE_NOT_FOUND: a release não existe, ou pertence a outra aplicação (404).
PLAN_DOES_NOT_SUPPORT_ROLLBACK: o seu plano não inclui fazer rollback para releases anteriores (403). O rollback começa no Pro.
API_KEY_SCOPE_DENIED: a chave de API não tem o escopo apps:write, ou não tem apps:envs enquanto restore_environment é true (403).
RELEASE_ALREADY_ACTIVE: a release já é a que a aplicação roda, ou tem o mesmo código e restore_environment não mudaria nada (409).
RELEASE_EXPIRED: o código desta release não é mais mantido, porque expirou ou é mais antigo do que o número de releases que o seu plano mantém (410).
OPERATION_IN_PROGRESS: outra operação de ciclo de vida na mesma aplicação já está em execução (409). Nada foi alterado; aguarde alguns segundos e tente de novo.
RESTORE_COOLDOWN: o rollback anterior desta aplicação foi há menos de 30 segundos (429). Aguarde e tente de novo.
DEPLOY_RATE_LIMITED: o limite horário de rollbacks da conta foi atingido (429). details traz limit, window_seconds e retry_after. Aguarde e tente de novo.
Uma mensagem descritiva com detalhes adicionais sobre o erro.
{ "code": "RELEASE_EXPIRED"}
{ "code": "RESTORE_COOLDOWN"}
Última modificação em 28 de outubro de 2026
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Vertra Cloud","description":"Vertra Cloud is a Brazilian application hosting platform (PaaS): deploy from GitHub or a zip file, isolated containers, managed databases, file storage, snapshots, a CLI and a VS Code extension.","colors":{"primary":"#ff6100","light":"#ff7a24","dark":"#e65700"},"logo":{"light":"https://mintcdn.com/vertracloud/2O7-bfMOIoy6MCUx/logo/light.svg?fit=max\u0026auto=format\u0026n=2O7-bfMOIoy6MCUx\u0026q=85\u0026s=2fcb392041b562c0aab2f07ebef0f12e","dark":"https://mintcdn.com/vertracloud/2O7-bfMOIoy6MCUx/logo/light.svg?fit=max\u0026auto=format\u0026n=2O7-bfMOIoy6MCUx\u0026q=85\u0026s=2fcb392041b562c0aab2f07ebef0f12e"},"favicon":"https://mintcdn.com/vertracloud/2O7-bfMOIoy6MCUx/favicon.svg?fit=max\u0026auto=format\u0026n=2O7-bfMOIoy6MCUx\u0026q=85\u0026s=1bab95e4f8e35419e5901e69c7caa4b2","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","javascript","python","go"]},"mdx":{"auth":{"method":"bearer"},"server":"https://api.vertracloud.app"}},"background":{"color":{"light":"#f7f7f6","dark":"#121212"}},"navbar":{"links":[{"href":"mailto:[email protected]","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://vertracloud.app/dashboard"}},"footer":{"socials":{"github":"https://github.com/vertracloud","instagram":"https://instagram.com/vertracloud","x":"https://x.com/vertracloud","youtube":"https://www.youtube.com/@vertracloud","discord":"https://discord.gg/vertracloud"}},"seo":{"metatags":{"og:site_name":"Vertra Cloud Docs","og:type":"website","og:image":"https://docs.vertracloud.app/images/og.png","twitter:card":"summary_large_image","twitter:image":"https://docs.vertracloud.app/images/og.png","description":"Vertra Cloud is a Brazilian application hosting platform (PaaS): deploy from GitHub or a zip file, isolated containers, managed databases, file storage, snapshots, a CLI and a VS Code extension."},"indexing":"navigable"},"fonts":{"family":"Geist"},"contextual":{"options":["copy","view","chatgpt","claude","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","default":true,"href":""},{"language":"pt-BR","navbar":{"links":[{"href":"mailto:[email protected]","label":"Suporte"}],"primary":{"type":"button","label":"Dashboard","href":"https://vertracloud.app/dashboard"}},"href":"pt-br"},{"language":"es","navbar":{"links":[{"href":"mailto:[email protected]","label":"Soporte"}],"primary":{"type":"button","label":"Panel","href":"https://vertracloud.app/dashboard"}},"href":"es-es"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"vertracloud","hasAudioNarration":false,"actualSubdomain":"vertracloud","customDomains":["docs.vertracloud.app"],"gitSource":{"type":"github","owner":"vertracloud","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae51deb3bf34bcad38c5814","collectionId":"9f590012-0485-47b3-af80-9ffed670518c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae51deb3bf34bcad38c5814"},"entitlements":{},"buildId":"6ae51f8fceb92005b37aba26","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"en","tag":"API Reference","count":159},{"language":"es","tag":"Referencia de la API","count":159},{"language":"pt-BR","tag":"Referência da API","count":159},{"language":"en","tag":"Endpoints","count":156},{"language":"es","tag":"Endpoints","count":156},{"language":"pt-BR","tag":"Endpoints","count":156},{"language":"en","tag":"Templates","count":64},{"language":"es","tag":"Plantillas","count":64},{"language":"pt-BR","tag":"Templates","count":64},{"language":"es","tag":"Blob Storage","count":58},{"language":"pt-BR","tag":"Blob Storage","count":58},{"language":"en","tag":"Blob Storage","count":56},{"language":"en","tag":"Applications","count":46},{"language":"en","tag":"Changelog","count":46},{"language":"es","tag":"Aplicaciones","count":46},{"language":"es","tag":"Changelog","count":46},{"language":"pt-BR","tag":"Aplicações","count":46},{"language":"pt-BR","tag":"Changelog","count":46},{"language":"en","tag":"v26","count":35},{"language":"es","tag":"v26","count":35},{"language":"pt-BR","tag":"v26","count":35},{"language":"en","tag":"Blob API reference","count":30},{"language":"es","tag":"Referencia de la API de Blob","count":30},{"language":"pt-BR","tag":"Referência da API do Blob","count":30},{"language":"en","tag":"Workspaces","count":26},{"language":"en","tag":"Tutorials","count":26},{"language":"es","tag":"Workspaces","count":26},{"language":"es","tag":"Tutoriales","count":26},{"language":"pt-BR","tag":"Workspaces","count":26},{"language":"pt-BR","tag":"Tutoriais","count":26}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--gray-50:247 247 246;--gray-100:241 241 240;--gray-200:230 230 228;--gray-300:211 211 209;--gray-400:162 162 162;--gray-500:115 115 115;--gray-600:83 83 83;--gray-700:61 61 61;--gray-800:42 42 42;--gray-900:26 26 26;--gray-950:13 13 13}.vc-home{--vc-orange:#ff6100;--vc-orange-strong:#e65700;--vc-paper:#f7f7f6;--vc-surface:#ffffff;--vc-ink:#141414;--vc-ink-2:#3d3d3d;--vc-muted:#737373;--vc-line:#e6e6e4;color:var(--vc-ink)}.dark .vc-home{--vc-orange-strong:#ff7a24;--vc-paper:#121212;--vc-surface:#1a1a1a;--vc-ink:#f4f4f4;--vc-ink-2:#c6c6c6;--vc-muted:#8e8e8e;--vc-line:#2a2a2a}.vc-hero,.vc-hero-inner{display:flex;flex-direction:column;box-sizing:border-box;margin:0}.vc-hero{min-height:calc(100dvh - 120px);overflow:hidden;border-bottom:1px solid var(--vc-line);background-color:var(--vc-paper)}.vc-hero-inner{flex:0 0 auto;justify-content:center;max-width:40rem;padding:2.75rem 1.25rem 1.75rem;text-align:left}.vc-hero h1{margin:0;color:var(--vc-ink);font-size:clamp(2.15rem,.85rem + 1.9vw,3.15rem);font-weight:600;line-height:1.02;letter-spacing:-.045em;text-wrap:balance}.vc-hero-copy{max-width:36rem;margin:1.15rem 0 0;color:var(--vc-ink-2);font-size:1.05rem;line-height:1.55;text-wrap:pretty}.vc-actions{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:.75rem;margin-top:1.75rem}.vc-btn{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:44px;padding:0 1.15rem;border-radius:.5rem;font-size:.92rem;font-weight:500;line-height:1;text-decoration:none!important;border:1px solid transparent;transition:background-color .18s cubic-bezier(.22,1,.36,1),border-color .18s cubic-bezier(.22,1,.36,1)}.vc-btn:focus-visible{outline:2px solid var(--vc-orange);outline-offset:2px}.vc-btn-primary{background:var(--vc-orange);color:#fff!important}.vc-btn-primary:hover{background:var(--vc-orange-strong)}.vc-btn-ghost{background:0 0;border-color:var(--vc-line);color:var(--vc-ink)!important}.vc-btn-ghost:hover{border-color:var(--vc-ink)}.vc-hero-art{flex:1 1 auto;min-height:240px;border-top:1px solid var(--vc-line);background:#f4efe4 url(/images/hero-pillar.webp) 70% 68%/cover no-repeat}@media (min-width:1024px){.vc-hero{flex-direction:row;align-items:stretch;min-height:calc(100dvh - 112px)}.vc-hero-inner{flex:.78 1 0;max-width:none;padding:4rem clamp(1.75rem,4vw,4.5rem)}.vc-hero-art{flex:1.22 1 0;min-height:0;border-top:0;border-left:1px solid var(--vc-line);background-position:72% 50%}}.vc-section{max-width:1040px;margin:0 auto;padding:4.5rem 1.5rem 0}.vc-section:last-of-type{padding-bottom:4.5rem}.vc-heading{max-width:620px;margin-bottom:1.75rem}.vc-kicker{color:var(--vc-orange);font:600 .72rem ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase}.vc-heading h2{margin:.5rem 0 .6rem;color:var(--vc-ink);font-size:clamp(1.55rem,3vw,2.05rem);font-weight:700;letter-spacing:-.03em;text-wrap:balance}.vc-heading p{margin:0;color:var(--vc-muted);line-height:1.65}.vc-home .card{border-radius:.85rem;transition:border-color .18s ease,transform .18s ease}.vc-home a.card:hover{border-color:rgba(255,97,0,.6)!important;transform:translateY(-2px)}.vc-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.6rem}.vc-chip{display:flex;align-items:center;gap:.6rem;padding:.7rem .85rem;border:1px solid var(--vc-line);border-radius:.7rem;background:var(--vc-chip);color:var(--vc-ink)!important;font-size:.9rem;font-weight:500;text-decoration:none!important;transition:border-color .15s ease,transform .15s ease}.vc-chip:hover{border-color:rgba(255,97,0,.6);transform:translateY(-1px)}.vc-chip svg{flex-shrink:0}.vc-help{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem}.vc-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem;max-width:1040px;margin:4.5rem auto 0;padding:1.5rem 1.5rem 3rem;border-top:1px solid var(--vc-line);color:var(--vc-muted);font:.72rem ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}.vc-footer a{color:var(--vc-ink)!important;text-decoration:none!important}.vc-footer a:hover{color:var(--vc-orange)!important}@media (max-width:760px){.vc-section{padding:3.25rem 1rem 0}}[data-component-part=language-switcher] [data-language=en] a::before{content:'🇺🇸 '}[data-component-part=language-switcher] [data-language=pt-BR] a::before{content:'🇧🇷 '}[data-component-part=language-switcher] [data-language=es] a::before{content:'🇪🇸 '}"}],"page":{"pagePath":"pt-br/api-reference/endpoint/apps/releases/rollback","slug":"/pt-br/api-reference/endpoint/apps/releases/rollback","pageMetadata":{"title":"Fazer rollback da aplicação para uma release","sidebarTitle":"Fazer rollback","api":"POST https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","authMethod":"bearer","description":"Faz o rollback de uma aplicação para uma release anterior, restaurando o código, removendo os arquivos que ela não tinha e reiniciando-a, com variáveis opcionais.","href":"/pt-br/api-reference/endpoint/apps/releases/rollback"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Faz o rollback de uma aplicação para uma release anterior, restaurando o código, removendo os arquivos que ela não tinha e reiniciando-a, com variáveis opcionais.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Expandable,Heading,ParamField,ResponseField}=_components;if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Faz o rollback da aplicação para o código que ela tinha nesta release, depois a reinicia. O rollback é registrado como uma nova release com `,_jsx(_components.code,{children:`source: \"rollback\"`}),`, então você pode desfazê-lo do mesmo jeito. Opcionalmente, ele também restaura as variáveis de ambiente salvas com essa release.`]}),`\n`,_jsxs(_components.p,{children:[`Fazer rollback não altera os dados que a aplicação criou enquanto roda, como um arquivo de banco de dados ou uploads. Para trazer os dados de volta, use um `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/apps/snapshots/restore`,children:`snapshot`}),`.`]}),`\n`,_jsx(ParamField,{path:`id`,type:`string`,required:true,id:`param-id`,children:_jsxs(_components.p,{children:[`O ID da aplicação. Se a aplicação pertencer a um workspace, informe o ID dele no query parameter `,_jsx(_components.code,{children:`workspace_id`}),`.`]})}),`\n`,_jsx(ParamField,{path:`release_id`,type:`string`,required:true,id:`param-release-id`,children:_jsxs(_components.p,{children:[`O ID da release para a qual fazer o rollback, como retornado pela `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/apps/releases/list`,children:`lista de releases`}),`. Precisa ser uma release cujo código ainda é mantido (`,_jsx(_components.code,{children:`rollback.available`}),` é `,_jsx(_components.code,{children:`true`}),`).`]})}),`\n`,_jsx(ParamField,{query:`workspace_id`,type:`string`,id:`param-workspace-id`,children:_jsx(_components.p,{children:`Se a aplicação pertencer a um workspace, o ID do workspace.`})}),`\n`,_jsx(ParamField,{body:`restore_environment`,type:`boolean`,default:`false`,id:`param-restore-environment`,children:_jsxs(_components.p,{children:[`Opcional. `,_jsx(_components.code,{children:`true`}),` também substitui as variáveis de ambiente da aplicação pelas salvas com essa release. O padrão `,_jsx(_components.code,{children:`false`}),` mantém as variáveis que a aplicação tem agora. Confira antes as mudanças com a `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/apps/releases/rollback-preview`,children:`pré-visualização do rollback`}),`.`]})}),`\n`,_jsx(_components.p,{children:`O que o rollback faz:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Código:`}),` cada arquivo de código da release é restaurado exatamente como estava. Arquivos de código que a release não tinha são apagados.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Dados:`}),` arquivos criados pela aplicação enquanto roda não são alterados nem apagados.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Variáveis:`}),` não mudam, a menos que `,_jsx(_components.code,{children:`restore_environment`}),` seja `,_jsx(_components.code,{children:`true`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Restart:`}),` a aplicação reinicia com um build forçado, então o comando de build dela roda de novo, se tiver um.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Histórico de releases:`}),` a versão que estava rodando passa para `,_jsx(_components.code,{children:`rolled_back`}),`, e a nova release passa a ser a ativa. O `,_jsx(_components.code,{children:`rollback.from`}),` dela é a release que você restaurou.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Outras regras se aplicam:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Um rollback não usa os slots de deploy do seu plano, mas dois rollbacks da mesma aplicação precisam de pelo menos 30 segundos entre eles. Rollbacks também têm limite horário próprio por conta, igual ao limite horário de deploy do seu plano. Ao ultrapassá-lo, a resposta é `,_jsx(_components.code,{children:`429 DEPLOY_RATE_LIMITED`}),`, com `,_jsx(_components.code,{children:`details.limit`}),`, `,_jsx(_components.code,{children:`details.window_seconds`}),` e `,_jsx(_components.code,{children:`details.retry_after`}),`, e nenhum slot de deploy é usado.`]}),`\n`,_jsxs(_components.li,{children:[`Se o código da release não puder ser restaurado, a requisição falha com `,_jsx(_components.code,{children:`INTERNAL_SERVER_ERROR`}),`. Nada muda. Se o código salvo dessa release estiver danificado, falha com `,_jsx(_components.code,{children:`INVALID_ZIP_STRUCTURE`}),` (`,_jsx(_components.code,{children:`400`}),`) antes de qualquer arquivo ser tocado.`]}),`\n`,_jsxs(_components.li,{children:[`Se o restart falhar depois que os arquivos foram restaurados, a resposta é o erro do restart (por exemplo `,_jsx(_components.code,{children:`BUILD_FAILED`}),`). A aplicação já roda o código restaurado, então corrija a causa e reinicie-a.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Só as releases que o seu plano mantém podem ser restauradas. Veja `,_jsx(_components.a,{href:`/pt-br/plans-and-limits#limites-do-hist%C3%B3rico-de-deploys-e-do-rollback`,children:`Histórico de deploys e limites de rollback`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Exige o escopo `,_jsx(_components.code,{children:`apps:write`}),` quando chamado com uma chave de API. Se `,_jsx(_components.code,{children:`restore_environment`}),` for `,_jsx(_components.code,{children:`true`}),`, a chave também precisa do escopo `,_jsx(_components.code,{children:`apps:envs`}),`; sem ele, a requisição retorna `,_jsx(_components.code,{children:`403 API_KEY_SCOPE_DENIED`}),`. Para um membro do workspace, exige as permissões `,_jsx(_components.code,{children:`apps:files`}),` e `,_jsx(_components.code,{children:`apps:lifecycle`}),`, além de `,_jsx(_components.code,{children:`apps:envs`}),` ao restaurar variáveis.`]}),`\n`,_jsx(Heading,{level:`3`,id:`resposta`,children:`Resposta`}),`\n`,_jsxs(ResponseField,{name:`response`,type:`object`,id:`param-response`,children:[_jsx(_components.p,{children:`A nova release criada pelo rollback.`}),_jsxs(Expandable,{title:`Mostrar objeto`,children:[_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id-1`,children:_jsx(_components.p,{children:`O ID da nova release.`})}),_jsx(ResponseField,{name:`source`,type:`string`,id:`param-source`,children:_jsxs(_components.p,{children:[`Sempre `,_jsx(_components.code,{children:`rollback`}),` nesta resposta.`]})}),_jsx(ResponseField,{name:`status`,type:`string`,id:`param-status`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`active`}),`, a versão que a aplicação roda agora.`]})}),_jsx(ResponseField,{name:`rollback`,type:`object`,id:`param-rollback`,children:_jsxs(Expandable,{title:`Mostrar objeto`,children:[_jsx(ResponseField,{name:`available`,type:`boolean`,id:`param-available`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`false`}),` para a release ativa.`]})}),_jsx(ResponseField,{name:`from`,type:`string`,id:`param-from`,children:_jsx(_components.p,{children:`O ID da release que foi restaurada.`})})]})}),_jsx(ResponseField,{name:`message`,type:`string | null`,id:`param-message`,children:_jsxs(_components.p,{children:[`A mensagem da release. `,_jsx(_components.code,{children:`null`}),` quando nenhuma foi informada.`]})}),_jsx(ResponseField,{name:`files_changed`,type:`integer`,id:`param-files-changed`,children:_jsx(_components.p,{children:`Número de arquivos alterados pela operação que gerou esta release.`})}),_jsx(ResponseField,{name:`build_duration_ms`,type:`integer | null`,id:`param-build-duration-ms`,children:_jsx(_components.p,{children:`Tempo, em milissegundos, gasto no build e na inicialização da aplicação.`})}),_jsx(ResponseField,{name:`first_started_at`,type:`string | null`,id:`param-first-started-at`,children:_jsx(_components.p,{children:`Quando a aplicação iniciou pela primeira vez com o código desta release, ou seja, quando o restart do rollback terminou.`})}),_jsx(ResponseField,{name:`created_at`,type:`string`,format:`date-time`,id:`param-created-at`,children:_jsx(_components.p,{children:`Timestamp ISO de quando o rollback foi feito.`})}),_jsx(ResponseField,{name:`author`,type:`string`,id:`param-author`,children:_jsx(_components.p,{children:`O nome do usuário que fez o rollback.`})}),_jsx(ResponseField,{name:`app_id`,type:`string`,id:`param-app-id`,children:_jsx(_components.p,{children:`O ID da aplicação.`})}),_jsx(ResponseField,{name:`github`,type:`null`,id:`param-github`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`null`}),`, porque um rollback não é um push do GitHub.`]})}),_jsx(ResponseField,{name:`has_log`,type:`boolean`,id:`param-has-log`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`true`}),` quando um log de crash foi registrado para esta release.`]})})]})]}),`\n`,`\n`,_jsx(Heading,{level:`3`,id:`respostas-de-erro`,children:`Respostas de erro`}),`\n`,_jsxs(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:[_jsx(_components.p,{children:`Códigos de erro possíveis:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AUTH_TOKEN_MISSING`}),`, `,_jsx(_components.code,{children:`API_KEY_INVALID`}),`, `,_jsx(_components.code,{children:`SESSION_REVOKED`}),`: o header `,_jsx(_components.code,{children:`Authorization`}),` está ausente, a chave de API é inválida ou a sessão do painel foi revogada (`,_jsx(_components.code,{children:`401`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`API_KEY_IP_DENIED`}),`: a chave de API é usada a partir de um IP fora da sua allowlist (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`APP_NOT_FOUND`}),`: a aplicação não existe, ou não pertence a esta conta ou workspace (`,_jsx(_components.code,{children:`404`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RELEASE_NOT_FOUND`}),`: a release não existe, ou pertence a outra aplicação (`,_jsx(_components.code,{children:`404`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_DOES_NOT_SUPPORT_ROLLBACK`}),`: o seu plano não inclui fazer rollback para releases anteriores (`,_jsx(_components.code,{children:`403`}),`). O rollback começa no Pro.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`API_KEY_SCOPE_DENIED`}),`: a chave de API não tem o escopo `,_jsx(_components.code,{children:`apps:write`}),`, ou não tem `,_jsx(_components.code,{children:`apps:envs`}),` enquanto `,_jsx(_components.code,{children:`restore_environment`}),` é `,_jsx(_components.code,{children:`true`}),` (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RELEASE_ALREADY_ACTIVE`}),`: a release já é a que a aplicação roda, ou tem o mesmo código e `,_jsx(_components.code,{children:`restore_environment`}),` não mudaria nada (`,_jsx(_components.code,{children:`409`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RELEASE_EXPIRED`}),`: o código desta release não é mais mantido, porque expirou ou é mais antigo do que o número de releases que o seu plano mantém (`,_jsx(_components.code,{children:`410`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`OPERATION_IN_PROGRESS`}),`: outra operação de ciclo de vida na mesma aplicação já está em execução (`,_jsx(_components.code,{children:`409`}),`). Nada foi alterado; aguarde alguns segundos e tente de novo.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RESTORE_COOLDOWN`}),`: o rollback anterior desta aplicação foi há menos de 30 segundos (`,_jsx(_components.code,{children:`429`}),`). Aguarde e tente de novo.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`DEPLOY_RATE_LIMITED`}),`: o limite horário de rollbacks da conta foi atingido (`,_jsx(_components.code,{children:`429`}),`). `,_jsx(_components.code,{children:`details`}),` traz `,_jsx(_components.code,{children:`limit`}),`, `,_jsx(_components.code,{children:`window_seconds`}),` e `,_jsx(_components.code,{children:`retry_after`}),`. Aguarde e tente de novo.`]}),`\n`]})]}),`\n`,_jsx(ResponseField,{name:`message`,type:`string`,id:`param-message-1`,children:_jsx(_components.p,{children:`Uma mensagem descritiva com detalhes adicionais sobre o erro.`})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Fazer rollback da aplicação para uma release","sidebarTitle":"Fazer rollback","api":"POST https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","authMethod":"bearer","description":"Faz o rollback de uma aplicação para uma release anterior, restaurando o código, removendo os arquivos que ela não tinha e reiniciando-a, com variáveis opcionais.","href":"/pt-br/api-reference/endpoint/apps/releases/rollback"}}},"mdxSourceWithNoJs":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,ParamField,ResponseExample,ResponseField}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Faz o rollback da aplicação para o código que ela tinha nesta release, depois a reinicia. O rollback é registrado como uma nova release com `,_jsx(_components.code,{children:`source: \"rollback\"`}),`, então você pode desfazê-lo do mesmo jeito. Opcionalmente, ele também restaura as variáveis de ambiente salvas com essa release.`]}),`\n`,_jsxs(_components.p,{children:[`Fazer rollback não altera os dados que a aplicação criou enquanto roda, como um arquivo de banco de dados ou uploads. Para trazer os dados de volta, use um `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/apps/snapshots/restore`,children:`snapshot`}),`.`]}),`\n`,_jsx(ParamField,{path:`id`,type:`string`,required:true,id:`param-id`,children:_jsxs(_components.p,{children:[`O ID da aplicação. Se a aplicação pertencer a um workspace, informe o ID dele no query parameter `,_jsx(_components.code,{children:`workspace_id`}),`.`]})}),`\n`,_jsx(ParamField,{path:`release_id`,type:`string`,required:true,id:`param-release-id`,children:_jsxs(_components.p,{children:[`O ID da release para a qual fazer o rollback, como retornado pela `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/apps/releases/list`,children:`lista de releases`}),`. Precisa ser uma release cujo código ainda é mantido (`,_jsx(_components.code,{children:`rollback.available`}),` é `,_jsx(_components.code,{children:`true`}),`).`]})}),`\n`,_jsx(ParamField,{query:`workspace_id`,type:`string`,id:`param-workspace-id`,children:_jsx(_components.p,{children:`Se a aplicação pertencer a um workspace, o ID do workspace.`})}),`\n`,_jsx(ParamField,{body:`restore_environment`,type:`boolean`,default:`false`,id:`param-restore-environment`,children:_jsxs(_components.p,{children:[`Opcional. `,_jsx(_components.code,{children:`true`}),` também substitui as variáveis de ambiente da aplicação pelas salvas com essa release. O padrão `,_jsx(_components.code,{children:`false`}),` mantém as variáveis que a aplicação tem agora. Confira antes as mudanças com a `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/apps/releases/rollback-preview`,children:`pré-visualização do rollback`}),`.`]})}),`\n`,_jsx(_components.p,{children:`O que o rollback faz:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Código:`}),` cada arquivo de código da release é restaurado exatamente como estava. Arquivos de código que a release não tinha são apagados.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Dados:`}),` arquivos criados pela aplicação enquanto roda não são alterados nem apagados.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Variáveis:`}),` não mudam, a menos que `,_jsx(_components.code,{children:`restore_environment`}),` seja `,_jsx(_components.code,{children:`true`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Restart:`}),` a aplicação reinicia com um build forçado, então o comando de build dela roda de novo, se tiver um.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Histórico de releases:`}),` a versão que estava rodando passa para `,_jsx(_components.code,{children:`rolled_back`}),`, e a nova release passa a ser a ativa. O `,_jsx(_components.code,{children:`rollback.from`}),` dela é a release que você restaurou.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Outras regras se aplicam:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Um rollback não usa os slots de deploy do seu plano, mas dois rollbacks da mesma aplicação precisam de pelo menos 30 segundos entre eles. Rollbacks também têm limite horário próprio por conta, igual ao limite horário de deploy do seu plano. Ao ultrapassá-lo, a resposta é `,_jsx(_components.code,{children:`429 DEPLOY_RATE_LIMITED`}),`, com `,_jsx(_components.code,{children:`details.limit`}),`, `,_jsx(_components.code,{children:`details.window_seconds`}),` e `,_jsx(_components.code,{children:`details.retry_after`}),`, e nenhum slot de deploy é usado.`]}),`\n`,_jsxs(_components.li,{children:[`Se o código da release não puder ser restaurado, a requisição falha com `,_jsx(_components.code,{children:`INTERNAL_SERVER_ERROR`}),`. Nada muda. Se o código salvo dessa release estiver danificado, falha com `,_jsx(_components.code,{children:`INVALID_ZIP_STRUCTURE`}),` (`,_jsx(_components.code,{children:`400`}),`) antes de qualquer arquivo ser tocado.`]}),`\n`,_jsxs(_components.li,{children:[`Se o restart falhar depois que os arquivos foram restaurados, a resposta é o erro do restart (por exemplo `,_jsx(_components.code,{children:`BUILD_FAILED`}),`). A aplicação já roda o código restaurado, então corrija a causa e reinicie-a.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Só as releases que o seu plano mantém podem ser restauradas. Veja `,_jsx(_components.a,{href:`/pt-br/plans-and-limits#limites-do-hist%C3%B3rico-de-deploys-e-do-rollback`,children:`Histórico de deploys e limites de rollback`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Exige o escopo `,_jsx(_components.code,{children:`apps:write`}),` quando chamado com uma chave de API. Se `,_jsx(_components.code,{children:`restore_environment`}),` for `,_jsx(_components.code,{children:`true`}),`, a chave também precisa do escopo `,_jsx(_components.code,{children:`apps:envs`}),`; sem ele, a requisição retorna `,_jsx(_components.code,{children:`403 API_KEY_SCOPE_DENIED`}),`. Para um membro do workspace, exige as permissões `,_jsx(_components.code,{children:`apps:files`}),` e `,_jsx(_components.code,{children:`apps:lifecycle`}),`, além de `,_jsx(_components.code,{children:`apps:envs`}),` ao restaurar variáveis.`]}),`\n`,_jsx(Heading,{level:`3`,id:`resposta`,children:`Resposta`}),`\n`,_jsxs(ResponseField,{name:`response`,type:`object`,id:`param-response`,children:[_jsx(_components.p,{children:`A nova release criada pelo rollback.`}),_jsxs(Expandable,{title:`Mostrar objeto`,children:[_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id-1`,children:_jsx(_components.p,{children:`O ID da nova release.`})}),_jsx(ResponseField,{name:`source`,type:`string`,id:`param-source`,children:_jsxs(_components.p,{children:[`Sempre `,_jsx(_components.code,{children:`rollback`}),` nesta resposta.`]})}),_jsx(ResponseField,{name:`status`,type:`string`,id:`param-status`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`active`}),`, a versão que a aplicação roda agora.`]})}),_jsx(ResponseField,{name:`rollback`,type:`object`,id:`param-rollback`,children:_jsxs(Expandable,{title:`Mostrar objeto`,children:[_jsx(ResponseField,{name:`available`,type:`boolean`,id:`param-available`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`false`}),` para a release ativa.`]})}),_jsx(ResponseField,{name:`from`,type:`string`,id:`param-from`,children:_jsx(_components.p,{children:`O ID da release que foi restaurada.`})})]})}),_jsx(ResponseField,{name:`message`,type:`string | null`,id:`param-message`,children:_jsxs(_components.p,{children:[`A mensagem da release. `,_jsx(_components.code,{children:`null`}),` quando nenhuma foi informada.`]})}),_jsx(ResponseField,{name:`files_changed`,type:`integer`,id:`param-files-changed`,children:_jsx(_components.p,{children:`Número de arquivos alterados pela operação que gerou esta release.`})}),_jsx(ResponseField,{name:`build_duration_ms`,type:`integer | null`,id:`param-build-duration-ms`,children:_jsx(_components.p,{children:`Tempo, em milissegundos, gasto no build e na inicialização da aplicação.`})}),_jsx(ResponseField,{name:`first_started_at`,type:`string | null`,id:`param-first-started-at`,children:_jsx(_components.p,{children:`Quando a aplicação iniciou pela primeira vez com o código desta release, ou seja, quando o restart do rollback terminou.`})}),_jsx(ResponseField,{name:`created_at`,type:`string`,format:`date-time`,id:`param-created-at`,children:_jsx(_components.p,{children:`Timestamp ISO de quando o rollback foi feito.`})}),_jsx(ResponseField,{name:`author`,type:`string`,id:`param-author`,children:_jsx(_components.p,{children:`O nome do usuário que fez o rollback.`})}),_jsx(ResponseField,{name:`app_id`,type:`string`,id:`param-app-id`,children:_jsx(_components.p,{children:`O ID da aplicação.`})}),_jsx(ResponseField,{name:`github`,type:`null`,id:`param-github`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`null`}),`, porque um rollback não é um push do GitHub.`]})}),_jsx(ResponseField,{name:`has_log`,type:`boolean`,id:`param-has-log`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`true`}),` quando um log de crash foi registrado para esta release.`]})})]})]}),`\n`,_jsx(ResponseExample,{children:_jsx(CodeBlock,{filename:`Response`,numberOfLines:`21`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`21`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"response\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"5b8e3f10-2c4a-4d9b-a7e1-0f3c6b9d2e54\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"app_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"7a52e0d4-19b3-4f8e-b6c2-0d9e4a1f5c73\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"source\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"rollback\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"active\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"author\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"octocat\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"github\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"files_changed\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"rollback\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"available\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"expires_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"from\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"3f1c2a9e-8b7d-4c21-9e0a-5d6f7a8b9c01\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"has_log\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"build_duration_ms\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`12450`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"first_started_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-10-11T15:02:50.000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"created_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-10-11T15:02:37.000Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`3`,id:`respostas-de-erro`,children:`Respostas de erro`}),`\n`,_jsxs(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:[_jsx(_components.p,{children:`Códigos de erro possíveis:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AUTH_TOKEN_MISSING`}),`, `,_jsx(_components.code,{children:`API_KEY_INVALID`}),`, `,_jsx(_components.code,{children:`SESSION_REVOKED`}),`: o header `,_jsx(_components.code,{children:`Authorization`}),` está ausente, a chave de API é inválida ou a sessão do painel foi revogada (`,_jsx(_components.code,{children:`401`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`API_KEY_IP_DENIED`}),`: a chave de API é usada a partir de um IP fora da sua allowlist (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`APP_NOT_FOUND`}),`: a aplicação não existe, ou não pertence a esta conta ou workspace (`,_jsx(_components.code,{children:`404`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RELEASE_NOT_FOUND`}),`: a release não existe, ou pertence a outra aplicação (`,_jsx(_components.code,{children:`404`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_DOES_NOT_SUPPORT_ROLLBACK`}),`: o seu plano não inclui fazer rollback para releases anteriores (`,_jsx(_components.code,{children:`403`}),`). O rollback começa no Pro.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`API_KEY_SCOPE_DENIED`}),`: a chave de API não tem o escopo `,_jsx(_components.code,{children:`apps:write`}),`, ou não tem `,_jsx(_components.code,{children:`apps:envs`}),` enquanto `,_jsx(_components.code,{children:`restore_environment`}),` é `,_jsx(_components.code,{children:`true`}),` (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RELEASE_ALREADY_ACTIVE`}),`: a release já é a que a aplicação roda, ou tem o mesmo código e `,_jsx(_components.code,{children:`restore_environment`}),` não mudaria nada (`,_jsx(_components.code,{children:`409`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RELEASE_EXPIRED`}),`: o código desta release não é mais mantido, porque expirou ou é mais antigo do que o número de releases que o seu plano mantém (`,_jsx(_components.code,{children:`410`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`OPERATION_IN_PROGRESS`}),`: outra operação de ciclo de vida na mesma aplicação já está em execução (`,_jsx(_components.code,{children:`409`}),`). Nada foi alterado; aguarde alguns segundos e tente de novo.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RESTORE_COOLDOWN`}),`: o rollback anterior desta aplicação foi há menos de 30 segundos (`,_jsx(_components.code,{children:`429`}),`). Aguarde e tente de novo.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`DEPLOY_RATE_LIMITED`}),`: o limite horário de rollbacks da conta foi atingido (`,_jsx(_components.code,{children:`429`}),`). `,_jsx(_components.code,{children:`details`}),` traz `,_jsx(_components.code,{children:`limit`}),`, `,_jsx(_components.code,{children:`window_seconds`}),` e `,_jsx(_components.code,{children:`retry_after`}),`. Aguarde e tente de novo.`]}),`\n`]})]}),`\n`,_jsx(ResponseField,{name:`message`,type:`string`,id:`param-message-1`,children:_jsx(_components.p,{children:`Uma mensagem descritiva com detalhes adicionais sobre o erro.`})}),`\n`,_jsxs(ResponseExample,{children:[_jsx(CodeBlock,{filename:`Error Response (410)`,numberOfLines:`3`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"RELEASE_EXPIRED\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Error Response (429)`,numberOfLines:`3`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"RESTORE_COOLDOWN\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Fazer rollback da aplicação para uma release","sidebarTitle":"Fazer rollback","api":"POST https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","authMethod":"bearer","description":"Faz o rollback de uma aplicação para uma release anterior, restaurando o código, removendo os arquivos que ela não tinha e reiniciando-a, com variáveis opcionais.","href":"/pt-br/api-reference/endpoint/apps/releases/rollback"}}}},"mdxExtracts":{"tableOfContents":[{"title":"Resposta","slug":"resposta","depth":3,"children":[]},{"title":"Respostas de erro","slug":"respostas-de-erro","depth":3,"children":[]}],"codeExamples":{"response":{"type":"ResponseExample","children":[{"filename":"Response","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"21\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"response\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"5b8e3f10-2c4a-4d9b-a7e1-0f3c6b9d2e54\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"app_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"7a52e0d4-19b3-4f8e-b6c2-0d9e4a1f5c73\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"source\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"rollback\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"active\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"message\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"author\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"octocat\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"github\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"files_changed\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">4\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"rollback\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"available\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"expires_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"from\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"3f1c2a9e-8b7d-4c21-9e0a-5d6f7a8b9c01\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"has_log\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"build_duration_ms\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">12450\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"first_started_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-10-11T15:02:50.000Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"created_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-10-11T15:02:37.000Z\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]}},"endpoint":{"title":"Fazer rollback da aplicação para uma release","path":"/v1/apps/{id}/releases/{release_id}/rollback","servers":[{"url":"https://api.vertracloud.app"}],"method":"post","request":{"security":[{"title":"Bearer Auth","parameters":{"header":{"Authorization":{"type":"http","scheme":"bearer","description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token."}},"query":{},"cookie":{}}}],"parameters":{"query":{"workspace_id":{"schema":[{"type":"string","description":"Se a aplicação pertencer a um workspace, o ID do workspace."}]}},"header":{},"cookie":{},"path":{"id":{"schema":[{"type":"string","description":"O ID da aplicação. Se a aplicação pertencer a um workspace, informe o ID dele no query parameter `workspace_id` .","required":true}]},"release_id":{"schema":[{"type":"string","description":"O ID da release para a qual fazer o rollback, como retornado pela lista de releases . Precisa ser uma release cujo código ainda é mantido ( `rollback.available` é `true` ).","required":true}]}}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"restore_environment":[{"type":"boolean","description":"Opcional. `true` também substitui as variáveis de ambiente da aplicação pelas salvas com essa release. O padrão `false` mantém as variáveis que a aplicação tem agora. Confira antes as mudanças com a pré-visualização do rollback ."}]}}],"examples":{"example":{"value":{"restore_environment":true}}}}}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"response":[{"type":"object","properties":{"id":[{"type":"string","description":"O ID da nova release."}],"source":[{"type":"string","description":"Sempre `rollback` nesta resposta."}],"status":[{"type":"string","description":"`active` , a versão que a aplicação roda agora."}],"rollback":[{"type":"object","properties":{"available":[{"type":"boolean","description":"`false` para a release ativa."}],"from":[{"type":"string","description":"O ID da release que foi restaurada."}]}}],"message":[{"type":"object","properties":{},"description":"A mensagem da release. `null` quando nenhuma foi informada."}],"files_changed":[{"type":"integer","description":"Número de arquivos alterados pela operação que gerou esta release."}],"build_duration_ms":[{"type":"object","properties":{},"description":"Tempo, em milissegundos, gasto no build e na inicialização da aplicação."}],"first_started_at":[{"type":"object","properties":{},"description":"Quando a aplicação iniciou pela primeira vez com o código desta release, ou seja, quando o restart do rollback terminou."}],"created_at":[{"type":"string","description":"Timestamp ISO de quando o rollback foi feito."}],"author":[{"type":"string","description":"O nome do usuário que fez o rollback."}],"app_id":[{"type":"string","description":"O ID da aplicação."}],"github":[{"type":"null","description":"`null` , porque um rollback não é um push do GitHub."}],"has_log":[{"type":"boolean","description":"`true` quando um log de crash foi registrado para esta release."}]},"description":"A nova release criada pelo rollback."}],"code":[{"type":"string","description":"Códigos de erro possíveis: `AUTH_TOKEN_MISSING` , `API_KEY_INVALID` , `SESSION_REVOKED` : o header `Authorization` está ausente, a chave de API é inválida ou a sessão do painel foi revogada ( `401` ). `API_KEY_IP_DENIED` : a chave de API é usada a partir de um IP fora da sua allowlist ( `403` ). `APP_NOT_FOUND` : a aplicação não existe, ou não pertence a esta conta ou workspace ( `404` ). `RELEASE_NOT_FOUND` : a release não existe, ou pertence a outra aplicação ( `404` ). `PLAN_DOES_NOT_SUPPORT_ROLLBACK` : o seu plano não inclui fazer rollback para releases anteriores ( `403` ). O rollback começa no Pro. `API_KEY_SCOPE_DENIED` : a chave de API não tem o escopo `apps:write` , ou não tem `apps:envs` enquanto `restore_environment` é `true` ( `403` ). `RELEASE_ALREADY_ACTIVE` : a release já é a que a aplicação roda, ou tem o mesmo código e `restore_environment` não mudaria nada ( `409` ). `RELEASE_EXPIRED` : o código desta release não é mais mantido, porque expirou ou é mais antigo do que o número de releases que o seu plano mantém ( `410` ). `OPERATION_IN_PROGRESS` : outra operação de ciclo de vida na mesma aplicação já está em execução ( `409` ). Nada foi alterado; aguarde alguns segundos e tente de novo. `RESTORE_COOLDOWN` : o rollback anterior desta aplicação foi há menos de 30 segundos ( `429` ). Aguarde e tente de novo. `DEPLOY_RATE_LIMITED` : o limite horário de rollbacks da conta foi atingido ( `429` ). `details` traz `limit` , `window_seconds` e `retry_after` . Aguarde e tente de novo."}],"message":[{"type":"string","description":"Uma mensagem descritiva com detalhes adicionais sobre o erro."}]}}],"examples":{"example":{"value":{"response":{"id":"\u003cstring>","source":"\u003cstring>","status":"\u003cstring>","rollback":{"available":true,"from":"\u003cstring>"},"message":{},"files_changed":123,"build_duration_ms":{},"first_started_at":{},"created_at":"\u003cstring>","author":"\u003cstring>","app_id":"\u003cstring>","github":null,"has_log":true},"code":"\u003cstring>","message":"\u003cstring>"}}}}}},"deprecated":false}},"jsLinks":[],"subdomain":"vertracloud","siteName":"Vertra Cloud","title":"Fazer rollback da aplicação para uma release - Vertra Cloud","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/endpoint/apps/releases/rollback","matchLevel":1},"pt-BR":{"href":"/pt-br/api-reference/endpoint/apps/releases/rollback","matchLevel":0},"es":{"href":"/es-es","matchLevel":4}}},"lastModified":"2026-10-30T22:45:17.865Z","gitLastModified":"2026-10-28T22:06:31.000Z","originalFileLocation":"pt-br/api-reference/endpoint/apps/releases/rollback.mdx","locale":"pt-BR"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Faz o rollback de uma aplicação para uma release anterior, restaurando o código, removendo os arquivos que ela não tinha e reiniciando-a, com variáveis opcionais.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Vertra Cloud\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Fazer rollback da aplicação para uma release - Vertra Cloud\">\u003cmeta data-mint-head property=\"og:description\" content=\"Faz o rollback de uma aplicação para uma release anterior, restaurando o código, removendo os arquivos que ela não tinha e reiniciando-a, com variáveis opcionais.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Vertra Cloud Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/releases/rollback\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.vertracloud.app/images/og.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Fazer rollback da aplicação para uma release - Vertra Cloud\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Faz o rollback de uma aplicação para uma release anterior, restaurando o código, removendo os arquivos que ela não tinha e reiniciando-a, com variáveis opcionais.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.vertracloud.app/images/og.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Vertra Cloud\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff6100\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/releases/rollback\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/pt-br/api-reference/endpoint/apps/releases/rollback.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/releases/rollback\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.vertracloud.app/api-reference/endpoint/apps/releases/rollback\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.vertracloud.app/api-reference/endpoint/apps/releases/rollback\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.vertracloud.app/#organization\",\"name\":\"Vertra Cloud\",\"url\":\"https://docs.vertracloud.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/vertracloud/2O7-bfMOIoy6MCUx/logo/light.svg?fit=max\u0026auto=format\u0026n=2O7-bfMOIoy6MCUx\u0026q=85\u0026s=2fcb392041b562c0aab2f07ebef0f12e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.vertracloud.app#website\",\"name\":\"Vertra Cloud\",\"url\":\"https://docs.vertracloud.app\",\"publisher\":{\"@id\":\"https://docs.vertracloud.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/releases/rollback#webpage\",\"url\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/releases/rollback\",\"name\":\"Fazer rollback da aplicação para uma release\",\"description\":\"Faz o rollback de uma aplicação para uma release anterior, restaurando o código, removendo os arquivos que ela não tinha e reiniciando-a, com variáveis opcionais.\",\"dateModified\":\"2026-10-28T22:06:31.000Z\",\"isPartOf\":{\"@id\":\"https://docs.vertracloud.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/releases/rollback#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/releases/rollback#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/users/me\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Aplicações\",\"item\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/get\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Releases\",\"item\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/releases/list\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Fazer rollback da aplicação para uma release\",\"item\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/releases/rollback\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/releases/rollback#apireference\",\"headline\":\"Fazer rollback da aplicação para uma release\",\"name\":\"Fazer rollback da aplicação para uma release\",\"description\":\"Faz o rollback de uma aplicação para uma release anterior, restaurando o código, removendo os arquivos que ela não tinha e reiniciando-a, com variáveis opcionais.\",\"url\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/releases/rollback\",\"mainEntityOfPage\":{\"@id\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/apps/releases/rollback#webpage\"},\"image\":\"https://docs.vertracloud.app/images/og.png\",\"dateModified\":\"2026-10-28T22:06:31.000Z\",\"publisher\":{\"@id\":\"https://docs.vertracloud.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.vertracloud.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Vertra Cloud\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Vertra Cloud","nav":{"global":null,"languages":[{"language":"en","default":true,"pages":[{"title":"en","href":"/api-reference/endpoint/apps/releases/rollback"}]},{"language":"pt-BR","navbar":{"links":[{"href":"mailto:[email protected]","label":"Suporte"}],"primary":{"type":"button","label":"Dashboard","href":"https://vertracloud.app/dashboard"}},"tabs":[{"tab":"Primeiros passos","pages":[{"title":"Primeiros passos","href":"/pt-br"}]},{"tab":"Recursos","pages":[{"title":"Recursos","href":"/pt-br/applications"}]},{"tab":"Tutoriais","pages":[{"title":"Tutoriais","href":"/pt-br/tutorials/introduction"}]},{"tab":"Guias","pages":[{"title":"Guias","href":"/pt-br/guides/custom-domain"}]},{"tab":"Ferramentas","pages":[{"title":"Ferramentas","href":"/pt-br/cli"}]},{"tab":"Blob Storage","pages":[{"title":"Blob Storage","href":"/pt-br/blob/overview"}]},{"tab":"Templates","pages":[{"title":"Templates","href":"/pt-br/templates/overview"}]},{"tab":"Referência da API","groups":[{"group":"Visão geral","icon":"book","pages":[{"title":"Referência da API pública da Vertra Cloud","sidebarTitle":"API pública","href":"/pt-br/api-reference/introduction"},{"title":"Limites e cotas da plataforma na Vertra Cloud","sidebarTitle":"Limites","href":"/pt-br/api-reference/limitations"},{"title":"Códigos de erro da API da Vertra Cloud","sidebarTitle":"Códigos de erro","href":"/pt-br/api-reference/errors"}]},{"group":"Endpoints","icon":"plug","pages":[{"group":"Usuários","icon":"user","pages":[{"title":"Informações do usuário","sidebarTitle":"Dados do usuário","api":"GET https://api.vertracloud.app/v1/users/me","href":"/pt-br/api-reference/endpoint/users/me"},{"title":"Atualizar perfil do usuário","sidebarTitle":"Atualizar perfil","api":"PATCH https://api.vertracloud.app/v1/users/me","href":"/pt-br/api-reference/endpoint/users/update-me"},{"title":"Listar todos os snapshots da conta","sidebarTitle":"Todos os snapshots","api":"GET https://api.vertracloud.app/v1/users/snapshots","href":"/pt-br/api-reference/endpoint/users/snapshots"},{"title":"Organização pessoal de recursos","sidebarTitle":"Pastas e favoritos","href":"/pt-br/api-reference/endpoint/users/resource-organization"},{"title":"Listar sessões","sidebarTitle":"Sessões","api":"GET https://api.vertracloud.app/v1/users/me/sessions","href":"/pt-br/api-reference/endpoint/users/sessions"}]},{"group":"Status","icon":"heart-pulse","pages":[{"title":"Verificar status da infraestrutura","sidebarTitle":"Verificar status","api":"GET https://api.vertracloud.app/v1/status","href":"/pt-br/api-reference/endpoint/services/status"}]},{"group":"Aplicações","icon":"rocket","pages":[{"title":"Detalhes da aplicação","sidebarTitle":"Obter aplicação","api":"GET https://api.vertracloud.app/v1/apps/{id}","href":"/pt-br/api-reference/endpoint/apps/get"},{"title":"Status da aplicação","sidebarTitle":"Obter status da aplicação","api":"GET https://api.vertracloud.app/v1/apps/{id}/status","href":"/pt-br/api-reference/endpoint/apps/status"},{"title":"Status de todas as aplicações","sidebarTitle":"Status de todas as aplicações","api":"GET https://api.vertracloud.app/v1/apps/status","href":"/pt-br/api-reference/endpoint/apps/allstatus"},{"title":"Listar runtimes","sidebarTitle":"Runtimes","api":"GET https://api.vertracloud.app/v1/apps/runtimes","href":"/pt-br/api-reference/endpoint/apps/runtimes"},{"title":"Métricas da aplicação","sidebarTitle":"Métricas da aplicação","api":"GET https://api.vertracloud.app/v1/apps/{id}/metrics","href":"/pt-br/api-reference/endpoint/apps/metrics"},{"title":"Logs da aplicação em tempo real","sidebarTitle":"Logs em tempo real","api":"GET https://api.vertracloud.app/v1/apps/{id}/realtime","href":"/pt-br/api-reference/endpoint/apps/realtime"},{"title":"Baixar aplicação","sidebarTitle":"Baixar aplicação","api":"GET https://api.vertracloud.app/v1/apps/{id}/download","href":"/pt-br/api-reference/endpoint/apps/download"},{"title":"Logs da aplicação","sidebarTitle":"Logs da aplicação","api":"GET https://api.vertracloud.app/v1/apps/{id}/logs","href":"/pt-br/api-reference/endpoint/apps/logs"},{"title":"Criar aplicação","sidebarTitle":"Criar aplicação","api":"POST https://api.vertracloud.app/v1/apps","href":"/pt-br/api-reference/endpoint/apps/create"},{"title":"Criar aplicação a partir de imagem","sidebarTitle":"Criar a partir de imagem","api":"POST https://api.vertracloud.app/v1/apps/image","href":"/pt-br/api-reference/endpoint/apps/create-from-image"},{"title":"Iniciar aplicação","sidebarTitle":"Iniciar aplicação","api":"POST https://api.vertracloud.app/v1/apps/{id}/start","href":"/pt-br/api-reference/endpoint/apps/start"},{"title":"Reiniciar aplicação","sidebarTitle":"Reiniciar aplicação","api":"POST https://api.vertracloud.app/v1/apps/{id}/restart","href":"/pt-br/api-reference/endpoint/apps/restart"},{"title":"Parar aplicação","sidebarTitle":"Parar aplicação","api":"POST https://api.vertracloud.app/v1/apps/{id}/stop","href":"/pt-br/api-reference/endpoint/apps/stop"},{"title":"Atualizar configuração da aplicação","sidebarTitle":"Atualizar configuração","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/config","href":"/pt-br/api-reference/endpoint/apps/updateconfig"},{"title":"Excluir aplicação","sidebarTitle":"Excluir aplicação","api":"DELETE https://api.vertracloud.app/v1/apps/{id}","href":"/pt-br/api-reference/endpoint/apps/delete"},{"group":"Rede","icon":"globe","pages":[{"title":"Publicar aplicação na web","sidebarTitle":"Publicar / Despublicar","api":"POST https://api.vertracloud.app/v1/apps/{id}/network/publish","href":"/pt-br/api-reference/endpoint/apps/network/publish"},{"title":"Alterar subdomínio da aplicação","sidebarTitle":"Alterar subdomínio","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/network/subdomain","href":"/pt-br/api-reference/endpoint/apps/network/subdomain"},{"title":"Limpar cache","sidebarTitle":"Limpar cache","api":"POST https://api.vertracloud.app/v1/apps/{id}/network/purge-cache","href":"/pt-br/api-reference/endpoint/apps/network/purgecache"}]},{"group":"Domínios","icon":"link","pages":[{"title":"Listar domínios da aplicação","sidebarTitle":"Listar domínios","api":"GET https://api.vertracloud.app/v1/apps/{id}/domains","href":"/pt-br/api-reference/endpoint/apps/domains/list"},{"title":"Adicionar domínio à aplicação","sidebarTitle":"Adicionar domínio","api":"POST https://api.vertracloud.app/v1/apps/{id}/domains","href":"/pt-br/api-reference/endpoint/apps/domains/create"},{"title":"Atualizar domínio da aplicação","sidebarTitle":"Atualizar domínio","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}","href":"/pt-br/api-reference/endpoint/apps/domains/update"},{"title":"Remover domínio da aplicação","sidebarTitle":"Remover domínio","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}","href":"/pt-br/api-reference/endpoint/apps/domains/delete"},{"title":"Registros DNS do domínio","sidebarTitle":"Registros DNS do domínio","api":"GET https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}/dns","href":"/pt-br/api-reference/endpoint/apps/domains/dns"},{"title":"Configurar domínio automaticamente","sidebarTitle":"Configurar automaticamente","api":"POST https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}/connect","href":"/pt-br/api-reference/endpoint/apps/domains/connect"}]},{"group":"Gerenciador de arquivos","icon":"folder-open","pages":[{"title":"Obter conteúdo de arquivo da aplicação","sidebarTitle":"Obter conteúdo do arquivo","api":"GET https://api.vertracloud.app/v1/apps/{id}/files/content","href":"/pt-br/api-reference/endpoint/apps/filemanager/content"},{"title":"Obter arquivos da aplicação","sidebarTitle":"Obter arquivos","api":"GET https://api.vertracloud.app/v1/apps/{id}/files","href":"/pt-br/api-reference/endpoint/apps/filemanager/files"},{"title":"Obter árvore de arquivos da aplicação","sidebarTitle":"Obter árvore de arquivos","api":"GET https://api.vertracloud.app/v1/apps/{id}/files/tree","href":"/pt-br/api-reference/endpoint/apps/filemanager/tree"},{"title":"Enviar arquivos para a aplicação","sidebarTitle":"Enviar arquivos","api":"POST https://api.vertracloud.app/v1/apps/{id}/files/upload","href":"/pt-br/api-reference/endpoint/apps/filemanager/upload"},{"title":"Excluir arquivo ou pasta da aplicação","sidebarTitle":"Excluir arquivo ou pasta","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/files","href":"/pt-br/api-reference/endpoint/apps/filemanager/delete"},{"title":"Mover arquivo ou pasta da aplicação","sidebarTitle":"Mover arquivo ou pasta","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/files","href":"/pt-br/api-reference/endpoint/apps/filemanager/move"},{"title":"Criar ou atualizar arquivo ou pasta da aplicação","sidebarTitle":"Criar/atualizar arquivo ou pasta","api":"PUT https://api.vertracloud.app/v1/apps/{id}/files","href":"/pt-br/api-reference/endpoint/apps/filemanager/save"}]},{"group":"Variáveis de ambiente","icon":"key","pages":[{"title":"Obter variáveis de ambiente da aplicação","sidebarTitle":"Obter variáveis de ambiente","api":"GET https://api.vertracloud.app/v1/apps/{id}/envs","href":"/pt-br/api-reference/endpoint/apps/enviroments/get"},{"title":"Excluir uma variável de ambiente da aplicação","sidebarTitle":"Excluir variável de ambiente","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/envs/{envId}","href":"/pt-br/api-reference/endpoint/apps/enviroments/delete"},{"title":"Criar ou editar variáveis de ambiente da aplicação","sidebarTitle":"Criar/editar variáveis de ambiente","api":"POST https://api.vertracloud.app/v1/apps/{id}/envs","href":"/pt-br/api-reference/endpoint/apps/enviroments/createOrEdit"}]},{"group":"Snapshots","icon":"camera","pages":[{"title":"Obter snapshots da aplicação","sidebarTitle":"Obter snapshots","api":"GET https://api.vertracloud.app/v1/users/{id}/snapshots","href":"/pt-br/api-reference/endpoint/apps/snapshots/getall"},{"title":"Criar snapshot da aplicação","sidebarTitle":"Criar snapshot","api":"POST https://api.vertracloud.app/v1/users/{id}/snapshots","href":"/pt-br/api-reference/endpoint/apps/snapshots/create"},{"title":"Restaurar snapshot da aplicação","sidebarTitle":"Restaurar snapshot","api":"POST https://api.vertracloud.app/v1/users/{id}/snapshots/{snapshot_id}/restore","href":"/pt-br/api-reference/endpoint/apps/snapshots/restore"},{"title":"Baixar snapshot da aplicação","sidebarTitle":"Baixar snapshot","api":"GET https://api.vertracloud.app/v1/users/{id}/snapshots/{snapshot_id}/download","href":"/pt-br/api-reference/endpoint/apps/snapshots/download"}]},{"group":"Deploys","icon":"code-branch","pages":[{"title":"Obter URL do webhook de deploy","sidebarTitle":"URL do webhook","api":"GET https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/pt-br/api-reference/endpoint/apps/deploys/webhookurl"},{"title":"Obter deploys recentes","sidebarTitle":"Deploys recentes","api":"GET https://api.vertracloud.app/v1/apps/{app_id}/deploys","href":"/pt-br/api-reference/endpoint/apps/deploys/recents"},{"title":"Excluir webhook de deploy","sidebarTitle":"Excluir webhook","api":"DELETE https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/pt-br/api-reference/endpoint/apps/deploys/delete"},{"title":"Criar webhook de deploy","sidebarTitle":"Criar webhook","api":"POST https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/pt-br/api-reference/endpoint/apps/deploys/create"}]},{"group":"Releases","icon":"clock-rotate-left","pages":[{"title":"Listar releases da aplicação","sidebarTitle":"Listar releases","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases","href":"/pt-br/api-reference/endpoint/apps/releases/list"},{"title":"Obter log da release da aplicação","sidebarTitle":"Obter log da release","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/log","href":"/pt-br/api-reference/endpoint/apps/releases/log"},{"title":"Pré-visualizar rollback da aplicação","sidebarTitle":"Pré-visualizar rollback","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","description":"Pré-visualiza as variáveis de ambiente que um rollback para esta release adicionaria, alteraria ou removeria, só com nomes e tipos de mudança.","href":"/pt-br/api-reference/endpoint/apps/releases/rollback-preview"},{"title":"Fazer rollback da aplicação para uma release","sidebarTitle":"Fazer rollback","api":"POST https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","href":"/pt-br/api-reference/endpoint/apps/releases/rollback"}]}]},{"group":"Imagens Docker","icon":"docker","pages":[{"title":"Listar imagens","sidebarTitle":"Listar imagens","api":"GET https://api.vertracloud.app/v1/images","description":"Lista as imagens Docker personalizadas da conta.","href":"/pt-br/api-reference/endpoint/images/list"},{"title":"Obter imagem","sidebarTitle":"Obter imagem","api":"GET https://api.vertracloud.app/v1/images/{image_id}","href":"/pt-br/api-reference/endpoint/images/get"},{"title":"Verificar Dockerfile","sidebarTitle":"Verificar Dockerfile","api":"POST https://api.vertracloud.app/v1/images/check","href":"/pt-br/api-reference/endpoint/images/check"},{"title":"Criar imagem","sidebarTitle":"Criar imagem","api":"POST https://api.vertracloud.app/v1/images","href":"/pt-br/api-reference/endpoint/images/create"},{"title":"Atualizar imagem","sidebarTitle":"Atualizar imagem","api":"PATCH https://api.vertracloud.app/v1/images/{image_id}","href":"/pt-br/api-reference/endpoint/images/update"},{"title":"Reconstruir imagem","sidebarTitle":"Reconstruir imagem","api":"PUT https://api.vertracloud.app/v1/images/{image_id}","href":"/pt-br/api-reference/endpoint/images/rebuild"},{"title":"Listar versões da imagem","sidebarTitle":"Listar versões","api":"GET https://api.vertracloud.app/v1/images/{image_id}/versions","href":"/pt-br/api-reference/endpoint/images/versions"},{"title":"Logs de build da imagem","sidebarTitle":"Logs de build","api":"GET https://api.vertracloud.app/v1/images/{image_id}/logs","href":"/pt-br/api-reference/endpoint/images/logs"},{"title":"Baixar o contexto da imagem","sidebarTitle":"Baixar contexto","api":"GET https://api.vertracloud.app/v1/images/{image_id}/context","href":"/pt-br/api-reference/endpoint/images/context"},{"title":"Vincular imagem ao GitHub","sidebarTitle":"Vincular GitHub","api":"PUT https://api.vertracloud.app/v1/images/{image_id}/github","href":"/pt-br/api-reference/endpoint/images/github-link"},{"title":"Desvincular imagem do GitHub","sidebarTitle":"Desvincular GitHub","api":"DELETE https://api.vertracloud.app/v1/images/{image_id}/github","href":"/pt-br/api-reference/endpoint/images/github-unlink"},{"title":"Excluir imagem","sidebarTitle":"Excluir imagem","api":"DELETE https://api.vertracloud.app/v1/images/{image_id}","href":"/pt-br/api-reference/endpoint/images/delete"}]},{"group":"Templates","icon":"shapes","pages":[{"title":"Listar templates","sidebarTitle":"Listar templates","api":"GET https://api.vertracloud.app/v1/templates","href":"/pt-br/api-reference/endpoint/templates/list"},{"title":"Listar categorias de templates","sidebarTitle":"Listar categorias","api":"GET https://api.vertracloud.app/v1/templates/categories","href":"/pt-br/api-reference/endpoint/templates/categories"},{"title":"Obter template","sidebarTitle":"Obter template","api":"GET https://api.vertracloud.app/v1/templates/{template_id}","href":"/pt-br/api-reference/endpoint/templates/get"},{"title":"Listar versões do template","sidebarTitle":"Listar versões","api":"GET https://api.vertracloud.app/v1/templates/{template_id}/versions","href":"/pt-br/api-reference/endpoint/templates/versions"},{"title":"Validar manifesto de template","sidebarTitle":"Validar manifesto","api":"POST https://api.vertracloud.app/v1/templates/validate","href":"/pt-br/api-reference/endpoint/templates/validate"},{"title":"Fazer deploy de template","sidebarTitle":"Fazer deploy de template","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/deploy","href":"/pt-br/api-reference/endpoint/templates/deploy"},{"title":"Obter job de deploy de template","sidebarTitle":"Obter job de deploy","api":"GET https://api.vertracloud.app/v1/template-deploys/{deploy_id}","href":"/pt-br/api-reference/endpoint/templates/deploy-status"},{"title":"Transmitir os eventos de deploy de template","sidebarTitle":"Eventos de deploy","api":"GET https://api.vertracloud.app/v1/template-deploys/{deploy_id}/events","href":"/pt-br/api-reference/endpoint/templates/deploy-events"},{"title":"Obter informações de atualização do template","sidebarTitle":"Informações de atualização","api":"GET https://api.vertracloud.app/v1/apps/{id}/template/update","href":"/pt-br/api-reference/endpoint/templates/update-info"},{"title":"Atualizar um template ou mover uma aplicação para a versão mais recente","sidebarTitle":"Atualizar template","api":"POST https://api.vertracloud.app/v1/apps/{id}/template/update","href":"/pt-br/api-reference/endpoint/templates/update"},{"title":"Criar um template privado","sidebarTitle":"Criar template","api":"POST https://api.vertracloud.app/v1/templates","href":"/pt-br/api-reference/endpoint/templates/create"},{"title":"Salvar um app como template","sidebarTitle":"Criar a partir de app","api":"POST https://api.vertracloud.app/v1/templates/from-app/{app_id}","href":"/pt-br/api-reference/endpoint/templates/create-from-app"},{"title":"Salvar uma stack como template","sidebarTitle":"Criar a partir de stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","href":"/pt-br/api-reference/endpoint/templates/create-from-stack"},{"title":"Revisar o rascunho de um template a partir de uma aplicação ou stack","sidebarTitle":"Revisar rascunho","api":"GET https://api.vertracloud.app/v1/templates/from-app/{app_id}/draft","href":"/pt-br/api-reference/endpoint/templates/draft"},{"title":"Publicar uma nova versão de um template privado","sidebarTitle":"Nova versão","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/versions","href":"/pt-br/api-reference/endpoint/templates/new-version"},{"title":"Excluir um template privado","sidebarTitle":"Excluir template","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}","href":"/pt-br/api-reference/endpoint/templates/delete"},{"title":"Vincular um template privado ao GitHub","sidebarTitle":"Vincular GitHub","api":"PUT https://api.vertracloud.app/v1/templates/{template_id}/github","href":"/pt-br/api-reference/endpoint/templates/github-link"},{"title":"Desvincular um template privado do GitHub","sidebarTitle":"Desvincular GitHub","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}/github","href":"/pt-br/api-reference/endpoint/templates/github-unlink"},{"title":"Desvincular uma aplicação ou stack de um template","sidebarTitle":"Desvincular","api":"POST https://api.vertracloud.app/v1/apps/{id}/template/detach","href":"/pt-br/api-reference/endpoint/templates/detach"},{"group":"Links de compartilhamento","icon":"share-nodes","pages":[{"title":"Visualizar um link de compartilhamento de template","sidebarTitle":"Visualizar link","api":"GET https://api.vertracloud.app/v1/share/templates/{token}","href":"/pt-br/api-reference/endpoint/templates/share-links/preview"},{"title":"Fazer deploy a partir de um link de uso","sidebarTitle":"Usar link","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/deploy","href":"/pt-br/api-reference/endpoint/templates/share-links/deploy"},{"title":"Copiar um template a partir de um link de cópia completa","sidebarTitle":"Copiar pelo link","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/copy","href":"/pt-br/api-reference/endpoint/templates/share-links/copy"},{"title":"Denunciar um template","sidebarTitle":"Denunciar template","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/report","href":"/pt-br/api-reference/endpoint/templates/share-links/report"},{"title":"Criar um link de compartilhamento para um template","sidebarTitle":"Criar link","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/share-links","href":"/pt-br/api-reference/endpoint/templates/share-links/create"},{"title":"Listar os links de compartilhamento de um template","sidebarTitle":"Listar links","api":"GET https://api.vertracloud.app/v1/templates/{template_id}/share-links","href":"/pt-br/api-reference/endpoint/templates/share-links/list"},{"title":"Revogar um link de compartilhamento","sidebarTitle":"Revogar link","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}/share-links/{link_id}","href":"/pt-br/api-reference/endpoint/templates/share-links/revoke"}]}]},{"group":"Stacks","icon":"layer-group","pages":[{"title":"Listar stacks","sidebarTitle":"Listar stacks","api":"GET https://api.vertracloud.app/v1/stacks","href":"/pt-br/api-reference/endpoint/stacks/list"},{"title":"Obter stack","sidebarTitle":"Obter stack","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/pt-br/api-reference/endpoint/stacks/get"},{"title":"Criar stack","sidebarTitle":"Criar stack","api":"POST https://api.vertracloud.app/v1/stacks","href":"/pt-br/api-reference/endpoint/stacks/create"},{"title":"Atualizar stack","sidebarTitle":"Atualizar stack","api":"PATCH https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/pt-br/api-reference/endpoint/stacks/update"},{"title":"Excluir stack","sidebarTitle":"Excluir stack","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/pt-br/api-reference/endpoint/stacks/delete"},{"title":"Transformar pasta em stack","sidebarTitle":"Transformar em stack","api":"POST https://api.vertracloud.app/v1/stacks/transform","href":"/pt-br/api-reference/endpoint/stacks/transform"},{"title":"Obter código de conexão da stack","sidebarTitle":"Código de conexão","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/connection","href":"/pt-br/api-reference/endpoint/stacks/connection"},{"title":"Definir modo de rede da stack","sidebarTitle":"Modo de rede","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/network-mode","href":"/pt-br/api-reference/endpoint/stacks/network-mode"},{"group":"Membros","icon":"user-group","pages":[{"title":"Adicionar membro à stack","sidebarTitle":"Adicionar membro","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/members","href":"/pt-br/api-reference/endpoint/stacks/members/add"},{"title":"Remover membro da stack","sidebarTitle":"Remover membro","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}/members/{resource_type}/{resource_id}","href":"/pt-br/api-reference/endpoint/stacks/members/remove"}]},{"group":"Conexões","icon":"arrows-left-right","pages":[{"title":"Criar conexão da stack","sidebarTitle":"Criar conexão","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/bindings","href":"/pt-br/api-reference/endpoint/stacks/bindings/create"},{"title":"Excluir conexão da stack","sidebarTitle":"Excluir conexão","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}/bindings/{binding_id}","href":"/pt-br/api-reference/endpoint/stacks/bindings/delete"},{"title":"Listar conexões da stack","sidebarTitle":"Listar conexões","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/bindings","href":"/pt-br/api-reference/endpoint/stacks/bindings/list"},{"title":"Atualizar conexão da stack","sidebarTitle":"Atualizar conexão","api":"PATCH https://api.vertracloud.app/v1/stacks/{stack_id}/bindings/{binding_id}","href":"/pt-br/api-reference/endpoint/stacks/bindings/update"}]},{"group":"Bancos de dados","icon":"database","pages":[{"title":"Adicionar banco de dados à stack","sidebarTitle":"Adicionar banco de dados","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/databases","href":"/pt-br/api-reference/endpoint/stacks/databases/create"}]},{"group":"Blob","icon":"box-archive","pages":[{"title":"Adicionar pasta do Blob à stack","sidebarTitle":"Adicionar pasta do Blob","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/blob","href":"/pt-br/api-reference/endpoint/stacks/blob/create"}]},{"group":"Snapshots","icon":"camera","pages":[{"title":"Criar snapshot da stack","sidebarTitle":"Criar snapshot","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots","href":"/pt-br/api-reference/endpoint/stacks/snapshots/create"},{"title":"Listar snapshots da stack","sidebarTitle":"Listar snapshots","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots","href":"/pt-br/api-reference/endpoint/stacks/snapshots/list"},{"title":"Restaurar snapshot da stack","sidebarTitle":"Restaurar snapshot","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore","href":"/pt-br/api-reference/endpoint/stacks/snapshots/restore"}]}]},{"group":"Bancos de dados","icon":"database","pages":[{"title":"Criar banco de dados","sidebarTitle":"Criar banco de dados","api":"POST https://api.vertracloud.app/v1/databases","href":"/pt-br/api-reference/endpoint/databases/create"},{"title":"Obter banco de dados pelo ID","sidebarTitle":"Obter banco de dados","api":"GET https://api.vertracloud.app/v1/databases/{id}","href":"/pt-br/api-reference/endpoint/databases/get"},{"title":"Listar versões de banco de dados","sidebarTitle":"Versões","api":"GET https://api.vertracloud.app/v1/databases/versions","href":"/pt-br/api-reference/endpoint/databases/versions"},{"title":"Obter status do banco de dados pelo ID","sidebarTitle":"Obter status","api":"GET https://api.vertracloud.app/v1/databases/{id}/status","href":"/pt-br/api-reference/endpoint/databases/status"},{"title":"Obter o status de todos os bancos de dados","sidebarTitle":"Status de todos os bancos","api":"GET https://api.vertracloud.app/v1/databases/status","href":"/pt-br/api-reference/endpoint/databases/allstatus"},{"title":"Obter métricas do banco de dados pelo ID","sidebarTitle":"Obter métricas","api":"GET https://api.vertracloud.app/v1/databases/{id}/metrics","href":"/pt-br/api-reference/endpoint/databases/metrics"},{"title":"Redefinir banco de dados","sidebarTitle":"Redefinir banco de dados","api":"POST https://api.vertracloud.app/v1/databases/{id}/reset","href":"/pt-br/api-reference/endpoint/databases/reset"},{"title":"Iniciar banco de dados","sidebarTitle":"Iniciar banco de dados","api":"POST https://api.vertracloud.app/v1/databases/{id}/start","href":"/pt-br/api-reference/endpoint/databases/start"},{"title":"Parar banco de dados","sidebarTitle":"Parar banco de dados","api":"POST https://api.vertracloud.app/v1/databases/{id}/stop","href":"/pt-br/api-reference/endpoint/databases/stop"},{"title":"Atualizar banco de dados","sidebarTitle":"Atualizar banco de dados","api":"PUT https://api.vertracloud.app/v1/databases/{id}","href":"/pt-br/api-reference/endpoint/databases/update"},{"title":"Excluir banco de dados","sidebarTitle":"Excluir banco de dados","api":"DELETE https://api.vertracloud.app/v1/databases/{id}","href":"/pt-br/api-reference/endpoint/databases/delete"},{"group":"Credenciais","icon":"lock","pages":[{"title":"Obter certificado do banco de dados","sidebarTitle":"Obter certificado","api":"GET https://api.vertracloud.app/v1/databases/{id}/credentials/certificate","href":"/pt-br/api-reference/endpoint/databases/credentials/get"},{"title":"Redefinir certificados do banco de dados","sidebarTitle":"Redefinir certificados","api":"POST https://api.vertracloud.app/v1/databases/{id}/credentials/certificate/reset","href":"/pt-br/api-reference/endpoint/databases/credentials/reset"},{"title":"Redefinir a senha do banco de dados","sidebarTitle":"Redefinir senha","api":"POST https://api.vertracloud.app/v1/databases/{id}/credentials/reset","href":"/pt-br/api-reference/endpoint/databases/credentials/resetpassword"}]}]},{"group":"Workspaces","icon":"users","pages":[{"title":"Listar workspaces","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces","href":"/pt-br/api-reference/endpoint/workspaces/get-all"},{"title":"Obter workspace","sidebarTitle":"Obter","api":"GET https://api.vertracloud.app/v1/workspaces/{id}","href":"/pt-br/api-reference/endpoint/workspaces/get"},{"title":"Criar workspace","sidebarTitle":"Criar","api":"POST https://api.vertracloud.app/v1/workspaces","href":"/pt-br/api-reference/endpoint/workspaces/create"},{"title":"Atualizar workspace","sidebarTitle":"Atualizar","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}","href":"/pt-br/api-reference/endpoint/workspaces/update"},{"title":"Apagar workspace","sidebarTitle":"Apagar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}","href":"/pt-br/api-reference/endpoint/workspaces/delete"},{"group":"Membros","icon":"user-group","pages":[{"title":"Listar membros","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/members","href":"/pt-br/api-reference/endpoint/workspaces/members/list"},{"title":"Atualizar membro","sidebarTitle":"Atualizar","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}/members/{user_id}","href":"/pt-br/api-reference/endpoint/workspaces/members/update"},{"title":"Remover membro","sidebarTitle":"Remover","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/members/{user_id}","href":"/pt-br/api-reference/endpoint/workspaces/members/remove"}]},{"group":"Cargos","icon":"id-badge","pages":[{"title":"Listar papéis","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/roles","href":"/pt-br/api-reference/endpoint/workspaces/roles/list"},{"title":"Criar papel","sidebarTitle":"Criar","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/roles","href":"/pt-br/api-reference/endpoint/workspaces/roles/create"},{"title":"Atualizar papel","sidebarTitle":"Atualizar","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}/roles/{role_id}","href":"/pt-br/api-reference/endpoint/workspaces/roles/update"},{"title":"Apagar papel","sidebarTitle":"Apagar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/roles/{role_id}","href":"/pt-br/api-reference/endpoint/workspaces/roles/delete"}]},{"group":"Convites","icon":"envelope","pages":[{"title":"Listar convites","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/invites","href":"/pt-br/api-reference/endpoint/workspaces/invites/list"},{"title":"Revogar convite","sidebarTitle":"Revogar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/invites/{invite_id}","href":"/pt-br/api-reference/endpoint/workspaces/invites/revoke"},{"title":"Visualizar convite","sidebarTitle":"Visualizar","api":"GET https://api.vertracloud.app/v1/workspaces/invites/{token}","href":"/pt-br/api-reference/endpoint/workspaces/invites/preview"},{"title":"Aceitar convite","sidebarTitle":"Aceitar","api":"POST https://api.vertracloud.app/v1/workspaces/invites/{token}/accept","href":"/pt-br/api-reference/endpoint/workspaces/invites/accept"},{"title":"Recusar convite","sidebarTitle":"Recusar","api":"POST https://api.vertracloud.app/v1/workspaces/invites/{token}/decline","href":"/pt-br/api-reference/endpoint/workspaces/invites/decline"}]},{"group":"Aplicações e bancos","icon":"window-maximize","pages":[{"title":"Vincular aplicação","sidebarTitle":"Vincular app","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/apps/{app_id}","href":"/pt-br/api-reference/endpoint/workspaces/links/add-app"},{"title":"Desvincular aplicação","sidebarTitle":"Desvincular app","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/apps/{app_id}","href":"/pt-br/api-reference/endpoint/workspaces/links/remove-app"},{"title":"Vincular banco de dados","sidebarTitle":"Vincular banco de dados","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/databases/{db_id}","href":"/pt-br/api-reference/endpoint/workspaces/links/add-database"},{"title":"Desvincular banco de dados","sidebarTitle":"Desvincular banco de dados","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/databases/{db_id}","href":"/pt-br/api-reference/endpoint/workspaces/links/remove-database"},{"title":"Vincular template ou stack","sidebarTitle":"Vincular template ou stack","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}","href":"/pt-br/api-reference/endpoint/workspaces/links/add-template"},{"title":"Desvincular template ou stack","sidebarTitle":"Desvincular template ou stack","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}","href":"/pt-br/api-reference/endpoint/workspaces/links/remove-template"}]},{"group":"Organização de recursos","icon":"folder-tree","pages":[{"title":"Organização de recursos do workspace","sidebarTitle":"Pastas e favoritos","href":"/pt-br/api-reference/endpoint/workspaces/resource-organization"}]},{"group":"Solicitações de ação","icon":"square-check","pages":[{"title":"Listar solicitações de ação","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/action-requests","href":"/pt-br/api-reference/endpoint/workspaces/action-requests/list"},{"title":"Criar solicitação de ação","sidebarTitle":"Criar","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/action-requests","href":"/pt-br/api-reference/endpoint/workspaces/action-requests/create"}]}]},{"group":"Cobrança","icon":"credit-card","pages":[{"title":"Listar pedidos","sidebarTitle":"Listar pedidos","api":"GET https://api.vertracloud.app/v1/orders","href":"/pt-br/api-reference/endpoint/billing/list-orders"},{"title":"Obter status do pedido","sidebarTitle":"Status do pedido","api":"GET https://api.vertracloud.app/v1/orders/{orderId}/status","href":"/pt-br/api-reference/endpoint/billing/order-status"},{"title":"Criar pedido","sidebarTitle":"Criar pedido","api":"POST https://api.vertracloud.app/v1/orders","href":"/pt-br/api-reference/endpoint/billing/create-order"},{"title":"Iniciar pagamento via PIX","sidebarTitle":"Iniciar PIX","api":"POST https://api.vertracloud.app/v1/orders/{orderId}/initiate/pix","href":"/pt-br/api-reference/endpoint/billing/initiate-pix"},{"title":"Obter dados de cobrança","sidebarTitle":"Obter dados de cobrança","api":"GET https://api.vertracloud.app/v1/users/me/billing","href":"/pt-br/api-reference/endpoint/billing/get-billing-details"},{"title":"Atualizar dados de cobrança","sidebarTitle":"Atualizar dados de cobrança","api":"PUT https://api.vertracloud.app/v1/users/me/billing","href":"/pt-br/api-reference/endpoint/billing/update-billing-details"}]},{"group":"Resgate","icon":"ticket","pages":[{"title":"Resgatar código","sidebarTitle":"Resgatar código","api":"POST https://api.vertracloud.app/v1/redeem/{code}","href":"/pt-br/api-reference/endpoint/redeem/redeem"}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/pt-br/changelog"}]}],"global":{"anchors":[{"anchor":"Documentação","icon":"book-open-cover","href":"https://docs.vertracloud.app/pt-br"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/vertracloud"},{"anchor":"Status","icon":"heart-pulse","href":"https://status.vertracloud.app"}]}},{"language":"es","navbar":{"links":[{"href":"mailto:[email protected]","label":"Soporte"}],"primary":{"type":"button","label":"Panel","href":"https://vertracloud.app/dashboard"}},"pages":[{"title":"es","href":"/es-es"}]}]},"basePath":"","title":"Fazer rollback da aplicação para uma release - Vertra Cloud","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["c2aa737661","2b790eda92","b0f84f53ff"],"chunks":["OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","Page-DSVu9Ucl.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js"]}