Devuelve la aplicación al código que tenía en esta release, y después la reinicia. El rollback se registra como una nueva release con source: "rollback", así que puedes deshacerlo de la misma forma. Opcionalmente, también restaura las variables de entorno guardadas con esa release.Un rollback no toca los datos que la aplicación creó mientras se ejecutaba, como un archivo de base de datos o las subidas. Para recuperar esos datos, usa un snapshot.
El ID de la release a la que hacer rollback, tal como lo devuelve la lista de releases. Debe ser una release cuyo código siga conservándose (rollback.available es true).
Opcional. true también reemplaza las variables de entorno de la aplicación por las guardadas con esa release. El valor predeterminado false mantiene las variables que la aplicación tiene ahora. Revisa antes los cambios con la previsualización del rollback.
Lo que hace el rollback:
Código: cada archivo de código de la release se restaura exactamente como estaba. Los archivos de código que la release no tenía se eliminan.
Datos: los archivos que la aplicación creó mientras se ejecutaba no se modifican ni se eliminan.
Variables: no cambian, salvo que restore_environment sea true.
Reinicio: la aplicación se reinicia con un build forzado, así que su comando de build se vuelve a ejecutar si tiene uno.
Historial de releases: la versión que estaba en ejecución pasa a rolled_back, y la nueva release pasa a ser la activa. Su rollback.from es la release que restauraste.
Se aplican además estas reglas:
Un rollback no usa los slots de despliegue de tu plan, pero dos rollbacks de la misma aplicación necesitan al menos 30 segundos entre sí. Los rollbacks también tienen su propio límite por hora y cuenta, igual al límite de despliegues por hora de tu plan. Si lo superas, se devuelve 429 DEPLOY_RATE_LIMITED, con details.limit, details.window_seconds y details.retry_after, y no consume ningún slot de despliegue.
Si el código de la release no se puede restaurar, la petición falla con INTERNAL_SERVER_ERROR. No cambia nada. Si el código guardado de esa release está dañado, falla con INVALID_ZIP_STRUCTURE (400) antes de tocar ningún archivo.
Si el reinicio falla después de restaurar los archivos, la respuesta es el error del reinicio (por ejemplo, BUILD_FAILED). La aplicación ya ejecuta el código restaurado, así que corrige la causa y reinícala.
Solo se pueden restaurar las releases que tu plan conserva. Consulta Historial de despliegues y límites de rollback.Requiere el scope apps:write cuando se llama con una clave de API. Si restore_environment es true, la clave también necesita el scope apps:envs; sin él, la petición devuelve 403 API_KEY_SCOPE_DENIED. Para un miembro de un workspace, requiere los permisos apps:files y apps:lifecycle, además de apps:envs si se restauran variables.
AUTH_TOKEN_MISSING, API_KEY_INVALID, SESSION_REVOKED: Falta la cabecera Authorization, la clave de API no es válida o la sesión del panel fue revocada (401).
API_KEY_IP_DENIED: La clave de API se usa desde una IP fuera de su lista de permitidas (403).
APP_NOT_FOUND: La aplicación no existe, o no pertenece a esta cuenta ni a este workspace (404).
RELEASE_NOT_FOUND: La release no existe, o pertenece a otra aplicación (404).
PLAN_DOES_NOT_SUPPORT_ROLLBACK: Tu plan no incluye hacer rollback a releases anteriores (403). El rollback empieza en Pro.
API_KEY_SCOPE_DENIED: La clave de API no tiene el scope apps:write, o le falta apps:envs mientras restore_environment es true (403).
RELEASE_ALREADY_ACTIVE: La release ya es la que ejecuta la aplicación, o tiene el mismo código y restore_environment no cambiaría nada (409).
RELEASE_EXPIRED: El código de esta release ya no se conserva, porque expiró o es más antigua que el número de releases que tu plan conserva (410).
OPERATION_IN_PROGRESS: Otra operación de ciclo de vida sobre la misma aplicación ya está en curso (409). No se cambió nada; espera unos segundos y vuelve a intentarlo.
RESTORE_COOLDOWN: El rollback anterior de esta aplicación fue hace menos de 30 segundos (429). Espera y vuelve a intentarlo.
DEPLOY_RATE_LIMITED: Se alcanzó el límite horario de rollbacks de la cuenta (429). details incluye limit, window_seconds y retry_after. Espera y vuelve a intentarlo.
Un mensaje descriptivo con más detalles sobre el error.
{ "code": "RELEASE_EXPIRED"}
{ "code": "RESTORE_COOLDOWN"}
Última modificación el 28 de octubre 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":"es-es/api-reference/endpoint/apps/releases/rollback","slug":"/es-es/api-reference/endpoint/apps/releases/rollback","pageMetadata":{"title":"Hacer rollback de la aplicación a una release","sidebarTitle":"Hacer rollback","api":"POST https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","authMethod":"bearer","description":"Devuelve la aplicación a una release anterior, restaurando su código, eliminando los archivos que no tenía y reiniciándola, con variables opcionales.","href":"/es-es/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: \"Devuelve la aplicación a una release anterior, restaurando su código, eliminando los archivos que no tenía y reiniciándola, con variables opcionales.\"\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:[`Devuelve la aplicación al código que tenía en esta release, y después la reinicia. El rollback se registra como una nueva release con `,_jsx(_components.code,{children:`source: \"rollback\"`}),`, así que puedes deshacerlo de la misma forma. Opcionalmente, también restaura las variables de entorno guardadas con esa release.`]}),`\n`,_jsxs(_components.p,{children:[`Un rollback no toca los datos que la aplicación creó mientras se ejecutaba, como un archivo de base de datos o las subidas. Para recuperar esos datos, usa un `,_jsx(_components.a,{href:`/es-es/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:[`El ID de la aplicación. Si la aplicación pertenece a un workspace, pasa su ID en el parámetro de consulta `,_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:[`El ID de la release a la que hacer rollback, tal como lo devuelve la `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/releases/list`,children:`lista de releases`}),`. Debe ser una release cuyo código siga conservándose (`,_jsx(_components.code,{children:`rollback.available`}),` es `,_jsx(_components.code,{children:`true`}),`).`]})}),`\n`,_jsx(ParamField,{query:`workspace_id`,type:`string`,id:`param-workspace-id`,children:_jsx(_components.p,{children:`Si la aplicación pertenece a un workspace, el ID del 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`}),` también reemplaza las variables de entorno de la aplicación por las guardadas con esa release. El valor predeterminado `,_jsx(_components.code,{children:`false`}),` mantiene las variables que la aplicación tiene ahora. Revisa antes los cambios con la `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/releases/rollback-preview`,children:`previsualización del rollback`}),`.`]})}),`\n`,_jsx(_components.p,{children:`Lo que hace el rollback:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Código:`}),` cada archivo de código de la release se restaura exactamente como estaba. Los archivos de código que la release no tenía se eliminan.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Datos:`}),` los archivos que la aplicación creó mientras se ejecutaba no se modifican ni se eliminan.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Variables:`}),` no cambian, salvo que `,_jsx(_components.code,{children:`restore_environment`}),` sea `,_jsx(_components.code,{children:`true`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Reinicio:`}),` la aplicación se reinicia con un build forzado, así que su comando de build se vuelve a ejecutar si tiene uno.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Historial de releases:`}),` la versión que estaba en ejecución pasa a `,_jsx(_components.code,{children:`rolled_back`}),`, y la nueva release pasa a ser la activa. Su `,_jsx(_components.code,{children:`rollback.from`}),` es la release que restauraste.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Se aplican además estas reglas:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Un rollback no usa los slots de despliegue de tu plan, pero dos rollbacks de la misma aplicación necesitan al menos 30 segundos entre sí. Los rollbacks también tienen su propio límite por hora y cuenta, igual al límite de despliegues por hora de tu plan. Si lo superas, se devuelve `,_jsx(_components.code,{children:`429 DEPLOY_RATE_LIMITED`}),`, con `,_jsx(_components.code,{children:`details.limit`}),`, `,_jsx(_components.code,{children:`details.window_seconds`}),` y `,_jsx(_components.code,{children:`details.retry_after`}),`, y no consume ningún slot de despliegue.`]}),`\n`,_jsxs(_components.li,{children:[`Si el código de la release no se puede restaurar, la petición falla con `,_jsx(_components.code,{children:`INTERNAL_SERVER_ERROR`}),`. No cambia nada. Si el código guardado de esa release está dañado, falla con `,_jsx(_components.code,{children:`INVALID_ZIP_STRUCTURE`}),` (`,_jsx(_components.code,{children:`400`}),`) antes de tocar ningún archivo.`]}),`\n`,_jsxs(_components.li,{children:[`Si el reinicio falla después de restaurar los archivos, la respuesta es el error del reinicio (por ejemplo, `,_jsx(_components.code,{children:`BUILD_FAILED`}),`). La aplicación ya ejecuta el código restaurado, así que corrige la causa y reinícala.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Solo se pueden restaurar las releases que tu plan conserva. Consulta `,_jsx(_components.a,{href:`/es-es/plans-and-limits#l%C3%ADmites-del-historial-de-despliegues-y-del-rollback`,children:`Historial de despliegues y límites de rollback`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Requiere el scope `,_jsx(_components.code,{children:`apps:write`}),` cuando se llama con una clave de API. Si `,_jsx(_components.code,{children:`restore_environment`}),` es `,_jsx(_components.code,{children:`true`}),`, la clave también necesita el scope `,_jsx(_components.code,{children:`apps:envs`}),`; sin él, la petición devuelve `,_jsx(_components.code,{children:`403 API_KEY_SCOPE_DENIED`}),`. Para un miembro de un workspace, requiere los permisos `,_jsx(_components.code,{children:`apps:files`}),` y `,_jsx(_components.code,{children:`apps:lifecycle`}),`, además de `,_jsx(_components.code,{children:`apps:envs`}),` si se restauran variables.`]}),`\n`,_jsx(Heading,{level:`3`,id:`respuesta`,children:`Respuesta`}),`\n`,_jsxs(ResponseField,{name:`response`,type:`object`,id:`param-response`,children:[_jsx(_components.p,{children:`La nueva release creada por el rollback.`}),_jsxs(Expandable,{title:`Mostrar objeto`,children:[_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id-1`,children:_jsx(_components.p,{children:`El ID de la nueva release.`})}),_jsx(ResponseField,{name:`source`,type:`string`,id:`param-source`,children:_jsxs(_components.p,{children:[`Siempre `,_jsx(_components.code,{children:`rollback`}),` en esta respuesta.`]})}),_jsx(ResponseField,{name:`status`,type:`string`,id:`param-status`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`active`}),`, la versión que la aplicación ejecuta ahora.`]})}),_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 la release activa.`]})}),_jsx(ResponseField,{name:`from`,type:`string`,id:`param-from`,children:_jsx(_components.p,{children:`El ID de la release que se restauró.`})})]})}),_jsx(ResponseField,{name:`message`,type:`string | null`,id:`param-message`,children:_jsxs(_components.p,{children:[`El mensaje de la release. `,_jsx(_components.code,{children:`null`}),` cuando no se indicó ninguno.`]})}),_jsx(ResponseField,{name:`files_changed`,type:`integer`,id:`param-files-changed`,children:_jsx(_components.p,{children:`Número de archivos modificados por la operación que produjo esta release.`})}),_jsx(ResponseField,{name:`build_duration_ms`,type:`integer | null`,id:`param-build-duration-ms`,children:_jsx(_components.p,{children:`Tiempo, en milisegundos, invertido en hacer el build y arrancar la aplicación.`})}),_jsx(ResponseField,{name:`first_started_at`,type:`string | null`,id:`param-first-started-at`,children:_jsx(_components.p,{children:`Cuándo arrancó por primera vez la aplicación con el código de esta release, es decir, cuándo terminó el reinicio del rollback.`})}),_jsx(ResponseField,{name:`created_at`,type:`string`,format:`date-time`,id:`param-created-at`,children:_jsx(_components.p,{children:`Marca de tiempo ISO de cuándo se hizo el rollback.`})}),_jsx(ResponseField,{name:`author`,type:`string`,id:`param-author`,children:_jsx(_components.p,{children:`El nombre del usuario que hizo el rollback.`})}),_jsx(ResponseField,{name:`app_id`,type:`string`,id:`param-app-id`,children:_jsx(_components.p,{children:`El ID de la aplicación.`})}),_jsx(ResponseField,{name:`github`,type:`null`,id:`param-github`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`null`}),`, porque un rollback no es un push de GitHub.`]})}),_jsx(ResponseField,{name:`has_log`,type:`boolean`,id:`param-has-log`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`true`}),` cuando se registró un log de fallo para esta release.`]})})]})]}),`\n`,`\n`,_jsx(Heading,{level:`3`,id:`respuestas-de-error`,children:`Respuestas de error`}),`\n`,_jsxs(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:[_jsx(_components.p,{children:`Códigos de error posibles:`}),_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`}),`: Falta la cabecera `,_jsx(_components.code,{children:`Authorization`}),`, la clave de API no es válida o la sesión del panel fue revocada (`,_jsx(_components.code,{children:`401`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`API_KEY_IP_DENIED`}),`: La clave de API se usa desde una IP fuera de su lista de permitidas (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`APP_NOT_FOUND`}),`: La aplicación no existe, o no pertenece a esta cuenta ni a este workspace (`,_jsx(_components.code,{children:`404`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RELEASE_NOT_FOUND`}),`: La release no existe, o pertenece a otra aplicación (`,_jsx(_components.code,{children:`404`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_DOES_NOT_SUPPORT_ROLLBACK`}),`: Tu plan no incluye hacer rollback a releases anteriores (`,_jsx(_components.code,{children:`403`}),`). El rollback empieza en Pro.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`API_KEY_SCOPE_DENIED`}),`: La clave de API no tiene el scope `,_jsx(_components.code,{children:`apps:write`}),`, o le falta `,_jsx(_components.code,{children:`apps:envs`}),` mientras `,_jsx(_components.code,{children:`restore_environment`}),` es `,_jsx(_components.code,{children:`true`}),` (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RELEASE_ALREADY_ACTIVE`}),`: La release ya es la que ejecuta la aplicación, o tiene el mismo código y `,_jsx(_components.code,{children:`restore_environment`}),` no cambiaría nada (`,_jsx(_components.code,{children:`409`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RELEASE_EXPIRED`}),`: El código de esta release ya no se conserva, porque expiró o es más antigua que el número de releases que tu plan conserva (`,_jsx(_components.code,{children:`410`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`OPERATION_IN_PROGRESS`}),`: Otra operación de ciclo de vida sobre la misma aplicación ya está en curso (`,_jsx(_components.code,{children:`409`}),`). No se cambió nada; espera unos segundos y vuelve a intentarlo.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RESTORE_COOLDOWN`}),`: El rollback anterior de esta aplicación fue hace menos de 30 segundos (`,_jsx(_components.code,{children:`429`}),`). Espera y vuelve a intentarlo.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`DEPLOY_RATE_LIMITED`}),`: Se alcanzó el límite horario de rollbacks de la cuenta (`,_jsx(_components.code,{children:`429`}),`). `,_jsx(_components.code,{children:`details`}),` incluye `,_jsx(_components.code,{children:`limit`}),`, `,_jsx(_components.code,{children:`window_seconds`}),` y `,_jsx(_components.code,{children:`retry_after`}),`. Espera y vuelve a intentarlo.`]}),`\n`]})]}),`\n`,_jsx(ResponseField,{name:`message`,type:`string`,id:`param-message-1`,children:_jsx(_components.p,{children:`Un mensaje descriptivo con más detalles sobre el error.`})})]})}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":"Hacer rollback de la aplicación a una release","sidebarTitle":"Hacer rollback","api":"POST https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","authMethod":"bearer","description":"Devuelve la aplicación a una release anterior, restaurando su código, eliminando los archivos que no tenía y reiniciándola, con variables opcionales.","href":"/es-es/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:[`Devuelve la aplicación al código que tenía en esta release, y después la reinicia. El rollback se registra como una nueva release con `,_jsx(_components.code,{children:`source: \"rollback\"`}),`, así que puedes deshacerlo de la misma forma. Opcionalmente, también restaura las variables de entorno guardadas con esa release.`]}),`\n`,_jsxs(_components.p,{children:[`Un rollback no toca los datos que la aplicación creó mientras se ejecutaba, como un archivo de base de datos o las subidas. Para recuperar esos datos, usa un `,_jsx(_components.a,{href:`/es-es/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:[`El ID de la aplicación. Si la aplicación pertenece a un workspace, pasa su ID en el parámetro de consulta `,_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:[`El ID de la release a la que hacer rollback, tal como lo devuelve la `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/releases/list`,children:`lista de releases`}),`. Debe ser una release cuyo código siga conservándose (`,_jsx(_components.code,{children:`rollback.available`}),` es `,_jsx(_components.code,{children:`true`}),`).`]})}),`\n`,_jsx(ParamField,{query:`workspace_id`,type:`string`,id:`param-workspace-id`,children:_jsx(_components.p,{children:`Si la aplicación pertenece a un workspace, el ID del 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`}),` también reemplaza las variables de entorno de la aplicación por las guardadas con esa release. El valor predeterminado `,_jsx(_components.code,{children:`false`}),` mantiene las variables que la aplicación tiene ahora. Revisa antes los cambios con la `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/releases/rollback-preview`,children:`previsualización del rollback`}),`.`]})}),`\n`,_jsx(_components.p,{children:`Lo que hace el rollback:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Código:`}),` cada archivo de código de la release se restaura exactamente como estaba. Los archivos de código que la release no tenía se eliminan.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Datos:`}),` los archivos que la aplicación creó mientras se ejecutaba no se modifican ni se eliminan.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Variables:`}),` no cambian, salvo que `,_jsx(_components.code,{children:`restore_environment`}),` sea `,_jsx(_components.code,{children:`true`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Reinicio:`}),` la aplicación se reinicia con un build forzado, así que su comando de build se vuelve a ejecutar si tiene uno.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Historial de releases:`}),` la versión que estaba en ejecución pasa a `,_jsx(_components.code,{children:`rolled_back`}),`, y la nueva release pasa a ser la activa. Su `,_jsx(_components.code,{children:`rollback.from`}),` es la release que restauraste.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Se aplican además estas reglas:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Un rollback no usa los slots de despliegue de tu plan, pero dos rollbacks de la misma aplicación necesitan al menos 30 segundos entre sí. Los rollbacks también tienen su propio límite por hora y cuenta, igual al límite de despliegues por hora de tu plan. Si lo superas, se devuelve `,_jsx(_components.code,{children:`429 DEPLOY_RATE_LIMITED`}),`, con `,_jsx(_components.code,{children:`details.limit`}),`, `,_jsx(_components.code,{children:`details.window_seconds`}),` y `,_jsx(_components.code,{children:`details.retry_after`}),`, y no consume ningún slot de despliegue.`]}),`\n`,_jsxs(_components.li,{children:[`Si el código de la release no se puede restaurar, la petición falla con `,_jsx(_components.code,{children:`INTERNAL_SERVER_ERROR`}),`. No cambia nada. Si el código guardado de esa release está dañado, falla con `,_jsx(_components.code,{children:`INVALID_ZIP_STRUCTURE`}),` (`,_jsx(_components.code,{children:`400`}),`) antes de tocar ningún archivo.`]}),`\n`,_jsxs(_components.li,{children:[`Si el reinicio falla después de restaurar los archivos, la respuesta es el error del reinicio (por ejemplo, `,_jsx(_components.code,{children:`BUILD_FAILED`}),`). La aplicación ya ejecuta el código restaurado, así que corrige la causa y reinícala.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Solo se pueden restaurar las releases que tu plan conserva. Consulta `,_jsx(_components.a,{href:`/es-es/plans-and-limits#l%C3%ADmites-del-historial-de-despliegues-y-del-rollback`,children:`Historial de despliegues y límites de rollback`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Requiere el scope `,_jsx(_components.code,{children:`apps:write`}),` cuando se llama con una clave de API. Si `,_jsx(_components.code,{children:`restore_environment`}),` es `,_jsx(_components.code,{children:`true`}),`, la clave también necesita el scope `,_jsx(_components.code,{children:`apps:envs`}),`; sin él, la petición devuelve `,_jsx(_components.code,{children:`403 API_KEY_SCOPE_DENIED`}),`. Para un miembro de un workspace, requiere los permisos `,_jsx(_components.code,{children:`apps:files`}),` y `,_jsx(_components.code,{children:`apps:lifecycle`}),`, además de `,_jsx(_components.code,{children:`apps:envs`}),` si se restauran variables.`]}),`\n`,_jsx(Heading,{level:`3`,id:`respuesta`,children:`Respuesta`}),`\n`,_jsxs(ResponseField,{name:`response`,type:`object`,id:`param-response`,children:[_jsx(_components.p,{children:`La nueva release creada por el rollback.`}),_jsxs(Expandable,{title:`Mostrar objeto`,children:[_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id-1`,children:_jsx(_components.p,{children:`El ID de la nueva release.`})}),_jsx(ResponseField,{name:`source`,type:`string`,id:`param-source`,children:_jsxs(_components.p,{children:[`Siempre `,_jsx(_components.code,{children:`rollback`}),` en esta respuesta.`]})}),_jsx(ResponseField,{name:`status`,type:`string`,id:`param-status`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`active`}),`, la versión que la aplicación ejecuta ahora.`]})}),_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 la release activa.`]})}),_jsx(ResponseField,{name:`from`,type:`string`,id:`param-from`,children:_jsx(_components.p,{children:`El ID de la release que se restauró.`})})]})}),_jsx(ResponseField,{name:`message`,type:`string | null`,id:`param-message`,children:_jsxs(_components.p,{children:[`El mensaje de la release. `,_jsx(_components.code,{children:`null`}),` cuando no se indicó ninguno.`]})}),_jsx(ResponseField,{name:`files_changed`,type:`integer`,id:`param-files-changed`,children:_jsx(_components.p,{children:`Número de archivos modificados por la operación que produjo esta release.`})}),_jsx(ResponseField,{name:`build_duration_ms`,type:`integer | null`,id:`param-build-duration-ms`,children:_jsx(_components.p,{children:`Tiempo, en milisegundos, invertido en hacer el build y arrancar la aplicación.`})}),_jsx(ResponseField,{name:`first_started_at`,type:`string | null`,id:`param-first-started-at`,children:_jsx(_components.p,{children:`Cuándo arrancó por primera vez la aplicación con el código de esta release, es decir, cuándo terminó el reinicio del rollback.`})}),_jsx(ResponseField,{name:`created_at`,type:`string`,format:`date-time`,id:`param-created-at`,children:_jsx(_components.p,{children:`Marca de tiempo ISO de cuándo se hizo el rollback.`})}),_jsx(ResponseField,{name:`author`,type:`string`,id:`param-author`,children:_jsx(_components.p,{children:`El nombre del usuario que hizo el rollback.`})}),_jsx(ResponseField,{name:`app_id`,type:`string`,id:`param-app-id`,children:_jsx(_components.p,{children:`El ID de la aplicación.`})}),_jsx(ResponseField,{name:`github`,type:`null`,id:`param-github`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`null`}),`, porque un rollback no es un push de GitHub.`]})}),_jsx(ResponseField,{name:`has_log`,type:`boolean`,id:`param-has-log`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`true`}),` cuando se registró un log de fallo 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:`respuestas-de-error`,children:`Respuestas de error`}),`\n`,_jsxs(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:[_jsx(_components.p,{children:`Códigos de error posibles:`}),_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`}),`: Falta la cabecera `,_jsx(_components.code,{children:`Authorization`}),`, la clave de API no es válida o la sesión del panel fue revocada (`,_jsx(_components.code,{children:`401`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`API_KEY_IP_DENIED`}),`: La clave de API se usa desde una IP fuera de su lista de permitidas (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`APP_NOT_FOUND`}),`: La aplicación no existe, o no pertenece a esta cuenta ni a este workspace (`,_jsx(_components.code,{children:`404`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RELEASE_NOT_FOUND`}),`: La release no existe, o pertenece a otra aplicación (`,_jsx(_components.code,{children:`404`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_DOES_NOT_SUPPORT_ROLLBACK`}),`: Tu plan no incluye hacer rollback a releases anteriores (`,_jsx(_components.code,{children:`403`}),`). El rollback empieza en Pro.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`API_KEY_SCOPE_DENIED`}),`: La clave de API no tiene el scope `,_jsx(_components.code,{children:`apps:write`}),`, o le falta `,_jsx(_components.code,{children:`apps:envs`}),` mientras `,_jsx(_components.code,{children:`restore_environment`}),` es `,_jsx(_components.code,{children:`true`}),` (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RELEASE_ALREADY_ACTIVE`}),`: La release ya es la que ejecuta la aplicación, o tiene el mismo código y `,_jsx(_components.code,{children:`restore_environment`}),` no cambiaría nada (`,_jsx(_components.code,{children:`409`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RELEASE_EXPIRED`}),`: El código de esta release ya no se conserva, porque expiró o es más antigua que el número de releases que tu plan conserva (`,_jsx(_components.code,{children:`410`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`OPERATION_IN_PROGRESS`}),`: Otra operación de ciclo de vida sobre la misma aplicación ya está en curso (`,_jsx(_components.code,{children:`409`}),`). No se cambió nada; espera unos segundos y vuelve a intentarlo.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`RESTORE_COOLDOWN`}),`: El rollback anterior de esta aplicación fue hace menos de 30 segundos (`,_jsx(_components.code,{children:`429`}),`). Espera y vuelve a intentarlo.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`DEPLOY_RATE_LIMITED`}),`: Se alcanzó el límite horario de rollbacks de la cuenta (`,_jsx(_components.code,{children:`429`}),`). `,_jsx(_components.code,{children:`details`}),` incluye `,_jsx(_components.code,{children:`limit`}),`, `,_jsx(_components.code,{children:`window_seconds`}),` y `,_jsx(_components.code,{children:`retry_after`}),`. Espera y vuelve a intentarlo.`]}),`\n`]})]}),`\n`,_jsx(ResponseField,{name:`message`,type:`string`,id:`param-message-1`,children:_jsx(_components.p,{children:`Un mensaje descriptivo con más detalles sobre el error.`})}),`\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":"Hacer rollback de la aplicación a una release","sidebarTitle":"Hacer rollback","api":"POST https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","authMethod":"bearer","description":"Devuelve la aplicación a una release anterior, restaurando su código, eliminando los archivos que no tenía y reiniciándola, con variables opcionales.","href":"/es-es/api-reference/endpoint/apps/releases/rollback"}}}},"mdxExtracts":{"tableOfContents":[{"title":"Respuesta","slug":"respuesta","depth":3,"children":[]},{"title":"Respuestas de error","slug":"respuestas-de-error","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":"Hacer rollback de la aplicación a una 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":"Si la aplicación pertenece a un workspace, el ID del workspace."}]}},"header":{},"cookie":{},"path":{"id":{"schema":[{"type":"string","description":"El ID de la aplicación. Si la aplicación pertenece a un workspace, pasa su ID en el parámetro de consulta `workspace_id` .","required":true}]},"release_id":{"schema":[{"type":"string","description":"El ID de la release a la que hacer rollback, tal como lo devuelve la lista de releases . Debe ser una release cuyo código siga conservándose ( `rollback.available` es `true` ).","required":true}]}}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"restore_environment":[{"type":"boolean","description":"Opcional. `true` también reemplaza las variables de entorno de la aplicación por las guardadas con esa release. El valor predeterminado `false` mantiene las variables que la aplicación tiene ahora. Revisa antes los cambios con la previsualización del rollback ."}]}}],"examples":{"example":{"value":{"restore_environment":true}}}}}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"response":[{"type":"object","properties":{"id":[{"type":"string","description":"El ID de la nueva release."}],"source":[{"type":"string","description":"Siempre `rollback` en esta respuesta."}],"status":[{"type":"string","description":"`active` , la versión que la aplicación ejecuta ahora."}],"rollback":[{"type":"object","properties":{"available":[{"type":"boolean","description":"`false` para la release activa."}],"from":[{"type":"string","description":"El ID de la release que se restauró."}]}}],"message":[{"type":"object","properties":{},"description":"El mensaje de la release. `null` cuando no se indicó ninguno."}],"files_changed":[{"type":"integer","description":"Número de archivos modificados por la operación que produjo esta release."}],"build_duration_ms":[{"type":"object","properties":{},"description":"Tiempo, en milisegundos, invertido en hacer el build y arrancar la aplicación."}],"first_started_at":[{"type":"object","properties":{},"description":"Cuándo arrancó por primera vez la aplicación con el código de esta release, es decir, cuándo terminó el reinicio del rollback."}],"created_at":[{"type":"string","description":"Marca de tiempo ISO de cuándo se hizo el rollback."}],"author":[{"type":"string","description":"El nombre del usuario que hizo el rollback."}],"app_id":[{"type":"string","description":"El ID de la aplicación."}],"github":[{"type":"null","description":"`null` , porque un rollback no es un push de GitHub."}],"has_log":[{"type":"boolean","description":"`true` cuando se registró un log de fallo para esta release."}]},"description":"La nueva release creada por el rollback."}],"code":[{"type":"string","description":"Códigos de error posibles: `AUTH_TOKEN_MISSING` , `API_KEY_INVALID` , `SESSION_REVOKED` : Falta la cabecera `Authorization` , la clave de API no es válida o la sesión del panel fue revocada ( `401` ). `API_KEY_IP_DENIED` : La clave de API se usa desde una IP fuera de su lista de permitidas ( `403` ). `APP_NOT_FOUND` : La aplicación no existe, o no pertenece a esta cuenta ni a este workspace ( `404` ). `RELEASE_NOT_FOUND` : La release no existe, o pertenece a otra aplicación ( `404` ). `PLAN_DOES_NOT_SUPPORT_ROLLBACK` : Tu plan no incluye hacer rollback a releases anteriores ( `403` ). El rollback empieza en Pro. `API_KEY_SCOPE_DENIED` : La clave de API no tiene el scope `apps:write` , o le falta `apps:envs` mientras `restore_environment` es `true` ( `403` ). `RELEASE_ALREADY_ACTIVE` : La release ya es la que ejecuta la aplicación, o tiene el mismo código y `restore_environment` no cambiaría nada ( `409` ). `RELEASE_EXPIRED` : El código de esta release ya no se conserva, porque expiró o es más antigua que el número de releases que tu plan conserva ( `410` ). `OPERATION_IN_PROGRESS` : Otra operación de ciclo de vida sobre la misma aplicación ya está en curso ( `409` ). No se cambió nada; espera unos segundos y vuelve a intentarlo. `RESTORE_COOLDOWN` : El rollback anterior de esta aplicación fue hace menos de 30 segundos ( `429` ). Espera y vuelve a intentarlo. `DEPLOY_RATE_LIMITED` : Se alcanzó el límite horario de rollbacks de la cuenta ( `429` ). `details` incluye `limit` , `window_seconds` y `retry_after` . Espera y vuelve a intentarlo."}],"message":[{"type":"string","description":"Un mensaje descriptivo con más detalles sobre el error."}]}}],"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":"Hacer rollback de la aplicación a una release - Vertra Cloud","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/","matchLevel":4},"pt-BR":{"href":"/pt-br","matchLevel":4},"es":{"href":"/es-es/api-reference/endpoint/apps/releases/rollback","matchLevel":0}}},"lastModified":"2026-10-30T22:45:18.677Z","gitLastModified":"2026-10-28T22:06:31.000Z","originalFileLocation":"es-es/api-reference/endpoint/apps/releases/rollback.mdx","locale":"es"},"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=\"Devuelve la aplicación a una release anterior, restaurando su código, eliminando los archivos que no tenía y reiniciándola, con variables opcionales.\">\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=\"Hacer rollback de la aplicación a una release - Vertra Cloud\">\u003cmeta data-mint-head property=\"og:description\" content=\"Devuelve la aplicación a una release anterior, restaurando su código, eliminando los archivos que no tenía y reiniciándola, con variables opcionales.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Vertra Cloud Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.vertracloud.app/es-es/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=\"Hacer rollback de la aplicación a una release - Vertra Cloud\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Devuelve la aplicación a una release anterior, restaurando su código, eliminando los archivos que no tenía y reiniciándola, con variables opcionales.\">\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/es-es/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=\"/es-es/api-reference/endpoint/apps/releases/rollback.md\">\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/es-es/api-reference/endpoint/apps/releases/rollback#webpage\",\"url\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/releases/rollback\",\"name\":\"Hacer rollback de la aplicación a una release\",\"description\":\"Devuelve la aplicación a una release anterior, restaurando su código, eliminando los archivos que no tenía y reiniciándola, con variables opcionales.\",\"dateModified\":\"2026-10-28T22:06:31.000Z\",\"isPartOf\":{\"@id\":\"https://docs.vertracloud.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/releases/rollback#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/releases/rollback#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/users/me\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Aplicaciones\",\"item\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/get\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Releases\",\"item\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/releases/list\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Hacer rollback de la aplicación a una release\",\"item\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/releases/rollback\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/releases/rollback#apireference\",\"headline\":\"Hacer rollback de la aplicación a una release\",\"name\":\"Hacer rollback de la aplicación a una release\",\"description\":\"Devuelve la aplicación a una release anterior, restaurando su código, eliminando los archivos que no tenía y reiniciándola, con variables opcionales.\",\"url\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/releases/rollback\",\"mainEntityOfPage\":{\"@id\":\"https://docs.vertracloud.app/es-es/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":"/"}]},{"language":"pt-BR","navbar":{"links":[{"href":"mailto:[email protected]","label":"Suporte"}],"primary":{"type":"button","label":"Dashboard","href":"https://vertracloud.app/dashboard"}},"pages":[{"title":"pt-BR","href":"/pt-br"}]},{"language":"es","navbar":{"links":[{"href":"mailto:[email protected]","label":"Soporte"}],"primary":{"type":"button","label":"Panel","href":"https://vertracloud.app/dashboard"}},"tabs":[{"tab":"Primeros pasos","pages":[{"title":"Primeros pasos","href":"/es-es"}]},{"tab":"Recursos","pages":[{"title":"Recursos","href":"/es-es/applications"}]},{"tab":"Tutoriales","pages":[{"title":"Tutoriales","href":"/es-es/tutorials/introduction"}]},{"tab":"Guías","pages":[{"title":"Guías","href":"/es-es/guides/custom-domain"}]},{"tab":"Herramientas","pages":[{"title":"Herramientas","href":"/es-es/cli"}]},{"tab":"Blob Storage","pages":[{"title":"Blob Storage","href":"/es-es/blob/overview"}]},{"tab":"Plantillas","pages":[{"title":"Plantillas","href":"/es-es/templates/overview"}]},{"tab":"Referencia de la API","groups":[{"group":"Visión general","icon":"book","pages":[{"title":"Referencia de la API pública de Vertra Cloud","sidebarTitle":"API pública","href":"/es-es/api-reference/introduction"},{"title":"Límites y cuotas de la plataforma en Vertra Cloud","sidebarTitle":"Límites","href":"/es-es/api-reference/limitations"},{"title":"Códigos de error de la API de Vertra Cloud","sidebarTitle":"Códigos de error","href":"/es-es/api-reference/errors"}]},{"group":"Endpoints","icon":"plug","pages":[{"group":"Usuarios","icon":"user","pages":[{"title":"Información del usuario","sidebarTitle":"Info del usuario","api":"GET https://api.vertracloud.app/v1/users/me","href":"/es-es/api-reference/endpoint/users/me"},{"title":"Actualizar perfil de usuario","sidebarTitle":"Actualizar perfil","api":"PATCH https://api.vertracloud.app/v1/users/me","href":"/es-es/api-reference/endpoint/users/update-me"},{"title":"Listar todos los snapshots de la cuenta","sidebarTitle":"Todos los snapshots","api":"GET https://api.vertracloud.app/v1/users/snapshots","href":"/es-es/api-reference/endpoint/users/snapshots"},{"title":"Organización personal de recursos","sidebarTitle":"Carpetas y favoritos","href":"/es-es/api-reference/endpoint/users/resource-organization"},{"title":"Listar sesiones","sidebarTitle":"Sesiones","api":"GET https://api.vertracloud.app/v1/users/me/sessions","href":"/es-es/api-reference/endpoint/users/sessions"}]},{"group":"Estado","icon":"heart-pulse","pages":[{"title":"Comprobar el estado de la infraestructura","sidebarTitle":"Comprobar estado","api":"GET https://api.vertracloud.app/v1/status","href":"/es-es/api-reference/endpoint/services/status"}]},{"group":"Aplicaciones","icon":"rocket","pages":[{"title":"Detalles de la aplicación","sidebarTitle":"Obtener aplicación","api":"GET https://api.vertracloud.app/v1/apps/{id}","href":"/es-es/api-reference/endpoint/apps/get"},{"title":"Estado de la aplicación","sidebarTitle":"Obtener estado de la aplicación","api":"GET https://api.vertracloud.app/v1/apps/{id}/status","href":"/es-es/api-reference/endpoint/apps/status"},{"title":"Estado de todas las aplicaciones","sidebarTitle":"Estado de todas las aplicaciones","api":"GET https://api.vertracloud.app/v1/apps/status","href":"/es-es/api-reference/endpoint/apps/allstatus"},{"title":"Listar runtimes","sidebarTitle":"Runtimes","api":"GET https://api.vertracloud.app/v1/apps/runtimes","href":"/es-es/api-reference/endpoint/apps/runtimes"},{"title":"Métricas de la aplicación","sidebarTitle":"Métricas de la aplicación","api":"GET https://api.vertracloud.app/v1/apps/{id}/metrics","href":"/es-es/api-reference/endpoint/apps/metrics"},{"title":"Logs de la aplicación en tiempo real","sidebarTitle":"Logs en tiempo real","api":"GET https://api.vertracloud.app/v1/apps/{id}/realtime","href":"/es-es/api-reference/endpoint/apps/realtime"},{"title":"Descargar aplicación","sidebarTitle":"Descargar aplicación","api":"GET https://api.vertracloud.app/v1/apps/{id}/download","href":"/es-es/api-reference/endpoint/apps/download"},{"title":"Logs de la aplicación","sidebarTitle":"Logs de la aplicación","api":"GET https://api.vertracloud.app/v1/apps/{id}/logs","href":"/es-es/api-reference/endpoint/apps/logs"},{"title":"Crear aplicación","sidebarTitle":"Crear aplicación","api":"POST https://api.vertracloud.app/v1/apps","href":"/es-es/api-reference/endpoint/apps/create"},{"title":"Crear aplicación desde imagen","sidebarTitle":"Crear desde imagen","api":"POST https://api.vertracloud.app/v1/apps/image","href":"/es-es/api-reference/endpoint/apps/create-from-image"},{"title":"Iniciar la aplicación","sidebarTitle":"Iniciar aplicación","api":"POST https://api.vertracloud.app/v1/apps/{id}/start","href":"/es-es/api-reference/endpoint/apps/start"},{"title":"Reiniciar la aplicación","sidebarTitle":"Reiniciar aplicación","api":"POST https://api.vertracloud.app/v1/apps/{id}/restart","href":"/es-es/api-reference/endpoint/apps/restart"},{"title":"Detener la aplicación","sidebarTitle":"Detener aplicación","api":"POST https://api.vertracloud.app/v1/apps/{id}/stop","href":"/es-es/api-reference/endpoint/apps/stop"},{"title":"Actualizar la configuración de la aplicación","sidebarTitle":"Actualizar configuración","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/config","href":"/es-es/api-reference/endpoint/apps/updateconfig"},{"title":"Eliminar aplicación","sidebarTitle":"Eliminar aplicación","api":"DELETE https://api.vertracloud.app/v1/apps/{id}","href":"/es-es/api-reference/endpoint/apps/delete"},{"group":"Red","icon":"globe","pages":[{"title":"Publicar la aplicación en la web","sidebarTitle":"Publicar / Despublicar","api":"POST https://api.vertracloud.app/v1/apps/{id}/network/publish","href":"/es-es/api-reference/endpoint/apps/network/publish"},{"title":"Cambiar el subdominio de la aplicación","sidebarTitle":"Cambiar subdominio","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/network/subdomain","href":"/es-es/api-reference/endpoint/apps/network/subdomain"},{"title":"Purgar caché","sidebarTitle":"Purgar caché","api":"POST https://api.vertracloud.app/v1/apps/{id}/network/purge-cache","href":"/es-es/api-reference/endpoint/apps/network/purgecache"}]},{"group":"Dominios","icon":"link","pages":[{"title":"Listar dominios de la aplicación","sidebarTitle":"Listar dominios","api":"GET https://api.vertracloud.app/v1/apps/{id}/domains","href":"/es-es/api-reference/endpoint/apps/domains/list"},{"title":"Añadir dominio a la aplicación","sidebarTitle":"Añadir dominio","api":"POST https://api.vertracloud.app/v1/apps/{id}/domains","href":"/es-es/api-reference/endpoint/apps/domains/create"},{"title":"Actualizar dominio de la aplicación","sidebarTitle":"Actualizar dominio","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}","href":"/es-es/api-reference/endpoint/apps/domains/update"},{"title":"Eliminar dominio de la aplicación","sidebarTitle":"Eliminar dominio","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}","href":"/es-es/api-reference/endpoint/apps/domains/delete"},{"title":"Registros DNS del dominio","sidebarTitle":"Registros DNS del dominio","api":"GET https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}/dns","href":"/es-es/api-reference/endpoint/apps/domains/dns"},{"title":"Configurar dominio automáticamente","sidebarTitle":"Configurar automáticamente","api":"POST https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}/connect","href":"/es-es/api-reference/endpoint/apps/domains/connect"}]},{"group":"Gestor de archivos","icon":"folder-open","pages":[{"title":"Obtener contenido de un archivo de la aplicación","sidebarTitle":"Obtener contenido de archivo","api":"GET https://api.vertracloud.app/v1/apps/{id}/files/content","href":"/es-es/api-reference/endpoint/apps/filemanager/content"},{"title":"Obtener archivos de la aplicación","sidebarTitle":"Obtener archivos","api":"GET https://api.vertracloud.app/v1/apps/{id}/files","href":"/es-es/api-reference/endpoint/apps/filemanager/files"},{"title":"Obtener árbol de archivos de la aplicación","sidebarTitle":"Obtener árbol de archivos","api":"GET https://api.vertracloud.app/v1/apps/{id}/files/tree","href":"/es-es/api-reference/endpoint/apps/filemanager/tree"},{"title":"Subir archivos a la aplicación","sidebarTitle":"Subir archivos","api":"POST https://api.vertracloud.app/v1/apps/{id}/files/upload","href":"/es-es/api-reference/endpoint/apps/filemanager/upload"},{"title":"Eliminar archivo o carpeta de la aplicación","sidebarTitle":"Eliminar archivo o carpeta","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/files","href":"/es-es/api-reference/endpoint/apps/filemanager/delete"},{"title":"Mover archivo o carpeta de la aplicación","sidebarTitle":"Mover archivo o carpeta","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/files","href":"/es-es/api-reference/endpoint/apps/filemanager/move"},{"title":"Crear o actualizar archivo o carpeta de la aplicación","sidebarTitle":"Crear/actualizar archivo o carpeta","api":"PUT https://api.vertracloud.app/v1/apps/{id}/files","href":"/es-es/api-reference/endpoint/apps/filemanager/save"}]},{"group":"Variables de entorno","icon":"key","pages":[{"title":"Obtener variables de entorno de la aplicación","sidebarTitle":"Obtener variables de entorno","api":"GET https://api.vertracloud.app/v1/apps/{id}/envs","href":"/es-es/api-reference/endpoint/apps/enviroments/get"},{"title":"Eliminar una variable de entorno de la aplicación","sidebarTitle":"Eliminar variable de entorno","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/envs/{envId}","href":"/es-es/api-reference/endpoint/apps/enviroments/delete"},{"title":"Crear o editar variables de entorno de la aplicación","sidebarTitle":"Crear/editar variables de entorno","api":"POST https://api.vertracloud.app/v1/apps/{id}/envs","href":"/es-es/api-reference/endpoint/apps/enviroments/createOrEdit"}]},{"group":"Snapshots","icon":"camera","pages":[{"title":"Obtener snapshots de la aplicación","sidebarTitle":"Obtener snapshots","api":"GET https://api.vertracloud.app/v1/users/{id}/snapshots","href":"/es-es/api-reference/endpoint/apps/snapshots/getall"},{"title":"Crear snapshot de la aplicación","sidebarTitle":"Crear snapshot","api":"POST https://api.vertracloud.app/v1/users/{id}/snapshots","href":"/es-es/api-reference/endpoint/apps/snapshots/create"},{"title":"Restaurar snapshot de la aplicación","sidebarTitle":"Restaurar snapshot","api":"POST https://api.vertracloud.app/v1/users/{id}/snapshots/{snapshot_id}/restore","href":"/es-es/api-reference/endpoint/apps/snapshots/restore"},{"title":"Descargar snapshot de la aplicación","sidebarTitle":"Descargar snapshot","api":"GET https://api.vertracloud.app/v1/users/{id}/snapshots/{snapshot_id}/download","href":"/es-es/api-reference/endpoint/apps/snapshots/download"}]},{"group":"Despliegues","icon":"code-branch","pages":[{"title":"Obtener URL del webhook de despliegue","sidebarTitle":"Obtener URL del webhook","api":"GET https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/es-es/api-reference/endpoint/apps/deploys/webhookurl"},{"title":"Obtener despliegues recientes","sidebarTitle":"Despliegues recientes","api":"GET https://api.vertracloud.app/v1/apps/{app_id}/deploys","href":"/es-es/api-reference/endpoint/apps/deploys/recents"},{"title":"Eliminar webhook de despliegue","sidebarTitle":"Eliminar webhook","api":"DELETE https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/es-es/api-reference/endpoint/apps/deploys/delete"},{"title":"Crear webhook de despliegue","sidebarTitle":"Crear webhook","api":"POST https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/es-es/api-reference/endpoint/apps/deploys/create"}]},{"group":"Releases","icon":"clock-rotate-left","pages":[{"title":"Listar releases de la aplicación","sidebarTitle":"Listar releases","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases","href":"/es-es/api-reference/endpoint/apps/releases/list"},{"title":"Obtener el log de una release de la aplicación","sidebarTitle":"Obtener log de la release","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/log","href":"/es-es/api-reference/endpoint/apps/releases/log"},{"title":"Previsualizar el rollback de la aplicación","sidebarTitle":"Previsualizar rollback","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","description":"Previsualiza qué variables de entorno añadiría, cambiaría o eliminaría un rollback a esta release, solo con nombres y tipos de cambio, nunca valores.","href":"/es-es/api-reference/endpoint/apps/releases/rollback-preview"},{"title":"Hacer rollback de la aplicación a una release","sidebarTitle":"Hacer rollback","api":"POST https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","href":"/es-es/api-reference/endpoint/apps/releases/rollback"}]}]},{"group":"Imágenes Docker","icon":"docker","pages":[{"title":"Listar imágenes","sidebarTitle":"Listar imágenes","api":"GET https://api.vertracloud.app/v1/images","description":"Lista las imágenes Docker personalizadas de la cuenta.","href":"/es-es/api-reference/endpoint/images/list"},{"title":"Obtener una imagen","sidebarTitle":"Obtener imagen","api":"GET https://api.vertracloud.app/v1/images/{image_id}","href":"/es-es/api-reference/endpoint/images/get"},{"title":"Comprobar un Dockerfile","sidebarTitle":"Comprobar Dockerfile","api":"POST https://api.vertracloud.app/v1/images/check","href":"/es-es/api-reference/endpoint/images/check"},{"title":"Crear una imagen","sidebarTitle":"Crear imagen","api":"POST https://api.vertracloud.app/v1/images","href":"/es-es/api-reference/endpoint/images/create"},{"title":"Actualizar imagen","sidebarTitle":"Actualizar imagen","api":"PATCH https://api.vertracloud.app/v1/images/{image_id}","href":"/es-es/api-reference/endpoint/images/update"},{"title":"Reconstruir imagen","sidebarTitle":"Reconstruir imagen","api":"PUT https://api.vertracloud.app/v1/images/{image_id}","href":"/es-es/api-reference/endpoint/images/rebuild"},{"title":"Listar versiones de la imagen","sidebarTitle":"Listar versiones","api":"GET https://api.vertracloud.app/v1/images/{image_id}/versions","href":"/es-es/api-reference/endpoint/images/versions"},{"title":"Logs de build de la imagen","sidebarTitle":"Logs de build","api":"GET https://api.vertracloud.app/v1/images/{image_id}/logs","href":"/es-es/api-reference/endpoint/images/logs"},{"title":"Descargar el contexto de una imagen","sidebarTitle":"Descargar contexto","api":"GET https://api.vertracloud.app/v1/images/{image_id}/context","href":"/es-es/api-reference/endpoint/images/context"},{"title":"Vincular imagen a GitHub","sidebarTitle":"Vincular GitHub","api":"PUT https://api.vertracloud.app/v1/images/{image_id}/github","href":"/es-es/api-reference/endpoint/images/github-link"},{"title":"Desvincular imagen de GitHub","sidebarTitle":"Desvincular GitHub","api":"DELETE https://api.vertracloud.app/v1/images/{image_id}/github","href":"/es-es/api-reference/endpoint/images/github-unlink"},{"title":"Eliminar una imagen","sidebarTitle":"Eliminar imagen","api":"DELETE https://api.vertracloud.app/v1/images/{image_id}","href":"/es-es/api-reference/endpoint/images/delete"}]},{"group":"Plantillas","icon":"shapes","pages":[{"title":"Listar plantillas","sidebarTitle":"Listar plantillas","api":"GET https://api.vertracloud.app/v1/templates","href":"/es-es/api-reference/endpoint/templates/list"},{"title":"Listar categorías de plantillas","sidebarTitle":"Listar categorías","api":"GET https://api.vertracloud.app/v1/templates/categories","href":"/es-es/api-reference/endpoint/templates/categories"},{"title":"Obtener plantilla","sidebarTitle":"Obtener plantilla","api":"GET https://api.vertracloud.app/v1/templates/{template_id}","href":"/es-es/api-reference/endpoint/templates/get"},{"title":"Listar versiones de la plantilla","sidebarTitle":"Listar versiones","api":"GET https://api.vertracloud.app/v1/templates/{template_id}/versions","href":"/es-es/api-reference/endpoint/templates/versions"},{"title":"Validar el manifiesto de una plantilla","sidebarTitle":"Validar manifiesto","api":"POST https://api.vertracloud.app/v1/templates/validate","href":"/es-es/api-reference/endpoint/templates/validate"},{"title":"Desplegar plantilla","sidebarTitle":"Desplegar plantilla","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/deploy","href":"/es-es/api-reference/endpoint/templates/deploy"},{"title":"Obtener trabajo de despliegue de plantilla","sidebarTitle":"Obtener trabajo de despliegue","api":"GET https://api.vertracloud.app/v1/template-deploys/{deploy_id}","href":"/es-es/api-reference/endpoint/templates/deploy-status"},{"title":"Transmitir eventos de despliegue de plantilla","sidebarTitle":"Eventos de despliegue","api":"GET https://api.vertracloud.app/v1/template-deploys/{deploy_id}/events","href":"/es-es/api-reference/endpoint/templates/deploy-events"},{"title":"Obtener información de actualización de la plantilla","sidebarTitle":"Información de actualización","api":"GET https://api.vertracloud.app/v1/apps/{id}/template/update","href":"/es-es/api-reference/endpoint/templates/update-info"},{"title":"Actualizar una plantilla o mover una aplicación a su última versión","sidebarTitle":"Actualizar plantilla","api":"POST https://api.vertracloud.app/v1/apps/{id}/template/update","href":"/es-es/api-reference/endpoint/templates/update"},{"title":"Crear una plantilla privada","sidebarTitle":"Crear plantilla","api":"POST https://api.vertracloud.app/v1/templates","href":"/es-es/api-reference/endpoint/templates/create"},{"title":"Guardar una aplicación como plantilla","sidebarTitle":"Crear desde aplicación","api":"POST https://api.vertracloud.app/v1/templates/from-app/{app_id}","href":"/es-es/api-reference/endpoint/templates/create-from-app"},{"title":"Guardar un stack como plantilla","sidebarTitle":"Crear desde stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","href":"/es-es/api-reference/endpoint/templates/create-from-stack"},{"title":"Revisar el borrador de una plantilla desde una aplicación o stack","sidebarTitle":"Revisar borrador","api":"GET https://api.vertracloud.app/v1/templates/from-app/{app_id}/draft","href":"/es-es/api-reference/endpoint/templates/draft"},{"title":"Publicar una nueva versión de una plantilla privada","sidebarTitle":"Nueva versión","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/versions","href":"/es-es/api-reference/endpoint/templates/new-version"},{"title":"Eliminar una plantilla privada","sidebarTitle":"Eliminar plantilla","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}","href":"/es-es/api-reference/endpoint/templates/delete"},{"title":"Vincular una plantilla privada a GitHub","sidebarTitle":"Vincular GitHub","api":"PUT https://api.vertracloud.app/v1/templates/{template_id}/github","href":"/es-es/api-reference/endpoint/templates/github-link"},{"title":"Desvincular una plantilla privada de GitHub","sidebarTitle":"Desvincular GitHub","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}/github","href":"/es-es/api-reference/endpoint/templates/github-unlink"},{"title":"Desvincular una aplicación o stack de una plantilla","sidebarTitle":"Desvincular","api":"POST https://api.vertracloud.app/v1/apps/{id}/template/detach","href":"/es-es/api-reference/endpoint/templates/detach"},{"group":"Enlaces para compartir","icon":"share-nodes","pages":[{"title":"Previsualizar un enlace para compartir plantilla","sidebarTitle":"Previsualizar enlace","api":"GET https://api.vertracloud.app/v1/share/templates/{token}","href":"/es-es/api-reference/endpoint/templates/share-links/preview"},{"title":"Usar un enlace para compartir plantilla para crear aplicaciones","sidebarTitle":"Usar enlace","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/deploy","href":"/es-es/api-reference/endpoint/templates/share-links/deploy"},{"title":"Copiar una plantilla desde un enlace para compartir de copia completa","sidebarTitle":"Copiar desde el enlace","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/copy","href":"/es-es/api-reference/endpoint/templates/share-links/copy"},{"title":"Reportar una plantilla","sidebarTitle":"Reportar plantilla","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/report","href":"/es-es/api-reference/endpoint/templates/share-links/report"},{"title":"Crear un enlace para compartir una plantilla","sidebarTitle":"Crear enlace","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/share-links","href":"/es-es/api-reference/endpoint/templates/share-links/create"},{"title":"Listar los enlaces para compartir de una plantilla","sidebarTitle":"Listar enlaces","api":"GET https://api.vertracloud.app/v1/templates/{template_id}/share-links","href":"/es-es/api-reference/endpoint/templates/share-links/list"},{"title":"Revocar un enlace para compartir","sidebarTitle":"Revocar enlace","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}/share-links/{link_id}","href":"/es-es/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":"/es-es/api-reference/endpoint/stacks/list"},{"title":"Obtener stack","sidebarTitle":"Obtener stack","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/es-es/api-reference/endpoint/stacks/get"},{"title":"Crear stack","sidebarTitle":"Crear stack","api":"POST https://api.vertracloud.app/v1/stacks","href":"/es-es/api-reference/endpoint/stacks/create"},{"title":"Actualizar stack","sidebarTitle":"Actualizar stack","api":"PATCH https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/es-es/api-reference/endpoint/stacks/update"},{"title":"Eliminar stack","sidebarTitle":"Eliminar stack","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/es-es/api-reference/endpoint/stacks/delete"},{"title":"Convertir carpeta en stack","sidebarTitle":"Convertir en stack","api":"POST https://api.vertracloud.app/v1/stacks/transform","href":"/es-es/api-reference/endpoint/stacks/transform"},{"title":"Obtener código de conexión del stack","sidebarTitle":"Código de conexión","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/connection","href":"/es-es/api-reference/endpoint/stacks/connection"},{"title":"Definir modo de red del stack","sidebarTitle":"Modo de red","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/network-mode","href":"/es-es/api-reference/endpoint/stacks/network-mode"},{"group":"Miembros","icon":"user-group","pages":[{"title":"Añadir miembro al stack","sidebarTitle":"Añadir miembro","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/members","href":"/es-es/api-reference/endpoint/stacks/members/add"},{"title":"Quitar miembro del stack","sidebarTitle":"Quitar miembro","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}/members/{resource_type}/{resource_id}","href":"/es-es/api-reference/endpoint/stacks/members/remove"}]},{"group":"Conexiones","icon":"arrows-left-right","pages":[{"title":"Crear conexión del stack","sidebarTitle":"Crear conexión","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/bindings","href":"/es-es/api-reference/endpoint/stacks/bindings/create"},{"title":"Eliminar conexión del stack","sidebarTitle":"Eliminar conexión","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}/bindings/{binding_id}","href":"/es-es/api-reference/endpoint/stacks/bindings/delete"},{"title":"Listar conexiones del stack","sidebarTitle":"Listar conexiones","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/bindings","href":"/es-es/api-reference/endpoint/stacks/bindings/list"},{"title":"Actualizar conexión del stack","sidebarTitle":"Actualizar conexión","api":"PATCH https://api.vertracloud.app/v1/stacks/{stack_id}/bindings/{binding_id}","href":"/es-es/api-reference/endpoint/stacks/bindings/update"}]},{"group":"Bases de datos","icon":"database","pages":[{"title":"Añadir base de datos al stack","sidebarTitle":"Añadir base de datos","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/databases","href":"/es-es/api-reference/endpoint/stacks/databases/create"}]},{"group":"Blob","icon":"box-archive","pages":[{"title":"Añadir carpeta de Blob al stack","sidebarTitle":"Añadir carpeta de Blob","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/blob","href":"/es-es/api-reference/endpoint/stacks/blob/create"}]},{"group":"Snapshots","icon":"camera","pages":[{"title":"Crear snapshot del stack","sidebarTitle":"Crear snapshot","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots","href":"/es-es/api-reference/endpoint/stacks/snapshots/create"},{"title":"Listar snapshots del stack","sidebarTitle":"Listar snapshots","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots","href":"/es-es/api-reference/endpoint/stacks/snapshots/list"},{"title":"Restaurar snapshot del stack","sidebarTitle":"Restaurar snapshot","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore","href":"/es-es/api-reference/endpoint/stacks/snapshots/restore"}]}]},{"group":"Bases de datos","icon":"database","pages":[{"title":"Crear una base de datos","sidebarTitle":"Crear base de datos","api":"POST https://api.vertracloud.app/v1/databases","href":"/es-es/api-reference/endpoint/databases/create"},{"title":"Obtener una base de datos por ID","sidebarTitle":"Obtener base de datos","api":"GET https://api.vertracloud.app/v1/databases/{id}","href":"/es-es/api-reference/endpoint/databases/get"},{"title":"Listar versiones de bases de datos","sidebarTitle":"Versiones","api":"GET https://api.vertracloud.app/v1/databases/versions","href":"/es-es/api-reference/endpoint/databases/versions"},{"title":"Obtener el estado de una base de datos por ID","sidebarTitle":"Obtener estado de base de datos","api":"GET https://api.vertracloud.app/v1/databases/{id}/status","href":"/es-es/api-reference/endpoint/databases/status"},{"title":"Obtener el estado de todas las bases de datos","sidebarTitle":"Estado de todas las bases de datos","api":"GET https://api.vertracloud.app/v1/databases/status","href":"/es-es/api-reference/endpoint/databases/allstatus"},{"title":"Obtener las métricas de una base de datos por ID","sidebarTitle":"Obtener métricas de base de datos","api":"GET https://api.vertracloud.app/v1/databases/{id}/metrics","href":"/es-es/api-reference/endpoint/databases/metrics"},{"title":"Restablecer una base de datos","sidebarTitle":"Restablecer base de datos","api":"POST https://api.vertracloud.app/v1/databases/{id}/reset","href":"/es-es/api-reference/endpoint/databases/reset"},{"title":"Iniciar una base de datos","sidebarTitle":"Iniciar base de datos","api":"POST https://api.vertracloud.app/v1/databases/{id}/start","href":"/es-es/api-reference/endpoint/databases/start"},{"title":"Detener una base de datos","sidebarTitle":"Detener base de datos","api":"POST https://api.vertracloud.app/v1/databases/{id}/stop","href":"/es-es/api-reference/endpoint/databases/stop"},{"title":"Actualizar una base de datos","sidebarTitle":"Actualizar base de datos","api":"PUT https://api.vertracloud.app/v1/databases/{id}","href":"/es-es/api-reference/endpoint/databases/update"},{"title":"Eliminar una base de datos","sidebarTitle":"Eliminar base de datos","api":"DELETE https://api.vertracloud.app/v1/databases/{id}","href":"/es-es/api-reference/endpoint/databases/delete"},{"group":"Credenciales","icon":"lock","pages":[{"title":"Obtener el certificado de una base de datos","sidebarTitle":"Obtener certificado","api":"GET https://api.vertracloud.app/v1/databases/{id}/credentials/certificate","href":"/es-es/api-reference/endpoint/databases/credentials/get"},{"title":"Restablecer los certificados de una base de datos","sidebarTitle":"Restablecer certificados","api":"POST https://api.vertracloud.app/v1/databases/{id}/credentials/certificate/reset","href":"/es-es/api-reference/endpoint/databases/credentials/reset"},{"title":"Restablecer la contraseña de una base de datos","sidebarTitle":"Restablecer contraseña","api":"POST https://api.vertracloud.app/v1/databases/{id}/credentials/reset","href":"/es-es/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":"/es-es/api-reference/endpoint/workspaces/get-all"},{"title":"Obtener workspace","sidebarTitle":"Obtener","api":"GET https://api.vertracloud.app/v1/workspaces/{id}","href":"/es-es/api-reference/endpoint/workspaces/get"},{"title":"Crear workspace","sidebarTitle":"Crear","api":"POST https://api.vertracloud.app/v1/workspaces","href":"/es-es/api-reference/endpoint/workspaces/create"},{"title":"Actualizar workspace","sidebarTitle":"Actualizar","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}","href":"/es-es/api-reference/endpoint/workspaces/update"},{"title":"Eliminar workspace","sidebarTitle":"Eliminar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}","href":"/es-es/api-reference/endpoint/workspaces/delete"},{"group":"Miembros","icon":"user-group","pages":[{"title":"Listar miembros","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/members","href":"/es-es/api-reference/endpoint/workspaces/members/list"},{"title":"Actualizar miembro","sidebarTitle":"Actualizar","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}/members/{user_id}","href":"/es-es/api-reference/endpoint/workspaces/members/update"},{"title":"Eliminar miembro","sidebarTitle":"Eliminar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/members/{user_id}","href":"/es-es/api-reference/endpoint/workspaces/members/remove"}]},{"group":"Roles","icon":"id-badge","pages":[{"title":"Listar roles","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/roles","href":"/es-es/api-reference/endpoint/workspaces/roles/list"},{"title":"Crear rol","sidebarTitle":"Crear","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/roles","href":"/es-es/api-reference/endpoint/workspaces/roles/create"},{"title":"Actualizar rol","sidebarTitle":"Actualizar","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}/roles/{role_id}","href":"/es-es/api-reference/endpoint/workspaces/roles/update"},{"title":"Eliminar rol","sidebarTitle":"Eliminar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/roles/{role_id}","href":"/es-es/api-reference/endpoint/workspaces/roles/delete"}]},{"group":"Invitaciones","icon":"envelope","pages":[{"title":"Listar invitaciones","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/invites","href":"/es-es/api-reference/endpoint/workspaces/invites/list"},{"title":"Revocar invitación","sidebarTitle":"Revocar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/invites/{invite_id}","href":"/es-es/api-reference/endpoint/workspaces/invites/revoke"},{"title":"Previsualizar invitación","sidebarTitle":"Previsualizar","api":"GET https://api.vertracloud.app/v1/workspaces/invites/{token}","href":"/es-es/api-reference/endpoint/workspaces/invites/preview"},{"title":"Aceptar invitación","sidebarTitle":"Aceptar","api":"POST https://api.vertracloud.app/v1/workspaces/invites/{token}/accept","href":"/es-es/api-reference/endpoint/workspaces/invites/accept"},{"title":"Rechazar invitación","sidebarTitle":"Rechazar","api":"POST https://api.vertracloud.app/v1/workspaces/invites/{token}/decline","href":"/es-es/api-reference/endpoint/workspaces/invites/decline"}]},{"group":"Aplicaciones y bases de datos","icon":"window-maximize","pages":[{"title":"Vincular aplicación","sidebarTitle":"Vincular app","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/apps/{app_id}","href":"/es-es/api-reference/endpoint/workspaces/links/add-app"},{"title":"Desvincular aplicación","sidebarTitle":"Desvincular app","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/apps/{app_id}","href":"/es-es/api-reference/endpoint/workspaces/links/remove-app"},{"title":"Vincular base de datos","sidebarTitle":"Vincular base de datos","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/databases/{db_id}","href":"/es-es/api-reference/endpoint/workspaces/links/add-database"},{"title":"Desvincular base de datos","sidebarTitle":"Desvincular base de datos","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/databases/{db_id}","href":"/es-es/api-reference/endpoint/workspaces/links/remove-database"},{"title":"Vincular plantilla o stack","sidebarTitle":"Vincular plantilla o stack","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}","href":"/es-es/api-reference/endpoint/workspaces/links/add-template"},{"title":"Desvincular plantilla o stack","sidebarTitle":"Desvincular plantilla o stack","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}","href":"/es-es/api-reference/endpoint/workspaces/links/remove-template"}]},{"group":"Organización de recursos","icon":"folder-tree","pages":[{"title":"Organización de recursos del workspace","sidebarTitle":"Carpetas y favoritos","href":"/es-es/api-reference/endpoint/workspaces/resource-organization"}]},{"group":"Solicitudes de acción","icon":"square-check","pages":[{"title":"Listar solicitudes de acción","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/action-requests","href":"/es-es/api-reference/endpoint/workspaces/action-requests/list"},{"title":"Crear solicitud de acción","sidebarTitle":"Crear","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/action-requests","href":"/es-es/api-reference/endpoint/workspaces/action-requests/create"}]}]},{"group":"Facturación","icon":"credit-card","pages":[{"title":"Listar pedidos","sidebarTitle":"Listar pedidos","api":"GET https://api.vertracloud.app/v1/orders","href":"/es-es/api-reference/endpoint/billing/list-orders"},{"title":"Obtener el estado de un pedido","sidebarTitle":"Estado del pedido","api":"GET https://api.vertracloud.app/v1/orders/{orderId}/status","href":"/es-es/api-reference/endpoint/billing/order-status"},{"title":"Crear pedido","sidebarTitle":"Crear pedido","api":"POST https://api.vertracloud.app/v1/orders","href":"/es-es/api-reference/endpoint/billing/create-order"},{"title":"Iniciar el pago por PIX","sidebarTitle":"Iniciar PIX","api":"POST https://api.vertracloud.app/v1/orders/{orderId}/initiate/pix","href":"/es-es/api-reference/endpoint/billing/initiate-pix"},{"title":"Obtener los datos de facturación","sidebarTitle":"Obtener datos de facturación","api":"GET https://api.vertracloud.app/v1/users/me/billing","href":"/es-es/api-reference/endpoint/billing/get-billing-details"},{"title":"Actualizar los datos de facturación","sidebarTitle":"Actualizar datos de facturación","api":"PUT https://api.vertracloud.app/v1/users/me/billing","href":"/es-es/api-reference/endpoint/billing/update-billing-details"}]},{"group":"Canje","icon":"ticket","pages":[{"title":"Canjear código","sidebarTitle":"Canjear código","api":"POST https://api.vertracloud.app/v1/redeem/{code}","href":"/es-es/api-reference/endpoint/redeem/redeem"}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/es-es/changelog"}]}],"global":{"anchors":[{"anchor":"Documentación","icon":"book-open-cover","href":"https://docs.vertracloud.app/es-es"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/vertracloud"},{"anchor":"Estado","icon":"heart-pulse","href":"https://status.vertracloud.app"}]}}]},"basePath":"","title":"Hacer rollback de la aplicación a una 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"]}