Esta llamada guarda un stack como plantilla privada con una primera versión y responde 201 con la plantilla, con un servicio por cada miembro que elijas. Las variables de conexión del stack se convierten en marcadores que apuntan a los otros servicios ({{services.db.url}}, por ejemplo), y cada carpeta de Blob del stack se convierte en un servicio Blob. Un miembro que se deja fuera de la plantilla también deja fuera las variables que apuntaban a él. Las bases de datos se recrean vacías: sus datos nunca se copian.Requiere el scope templates:write cuando se llama con una clave de API. Se aplican las reglas de plan, límite y workspace de Crear una plantilla privada, la plantilla no la verifica Vertra Cloud, y las negativas de Guardar una aplicación como plantilla valen para cada miembro que sea aplicación. Lee antes la propuesta con Revisar borrador de plantilla.
Una revisión por variable de una aplicación. Una variable sin revisión queda fuera de la plantilla. Cada revisión tiene:
key: el nombre de la variable.
mode: question (se convierte en una pregunta que responde el usuario; el valor no se copia), keep (el valor se copia; se rechaza cuando parece una credencial), generate (se convierte en un secreto que la plataforma genera para cada usuario, con generate igual a random:<n> o uuid), hidden (se copia, pero se oculta a quien usa la plantilla; el valor queda fuera de su vista) u omit (se deja fuera).
label y help: textos por idioma (pt-br, en, es), usados por question y generate.
generate: cómo se genera el secreto, random:<n> o uuid.
Las rutas de /app de la aplicación que entran en la plantilla, para aplicaciones con código. Sin este campo, entra todo excepto lo que el borrador deja sin seleccionar. Los archivos .env*, la carpeta de la plataforma y las carpetas de dependencias nunca se pueden incluir.
El mismo objeto de plantilla que devuelve Crear una plantilla privada, con 201 Created. creates_stack es true y services tiene una entrada por miembro.
El código de error que indica el motivo del fallo. Valores posibles:
API_KEY_SCOPE_DENIED: La clave de API no tiene el scope templates:write (403).
STACK_NOT_FOUND: El stack no existe o no es tuyo.
APP_NOT_FOUND: Una aplicación miembro no existe.
TEMPLATE_SAVE_NOT_ALLOWED: Una aplicación miembro llegó desde un enlace para compartir, o ejecuta una imagen de la plataforma (403).
TEMPLATE_CLOSED: Un miembro procede de una plantilla cerrada (403).
TEMPLATE_MANIFEST_INVALID: El resultado no es un manifiesto válido; details.issues enumera los hallazgos.
TEMPLATE_SECRET_IN_SOURCE: Un archivo seleccionado contiene un secreto; details.files enumera las rutas (400).
TEMPLATE_SLUG_TAKEN: El slug ya está en uso entre tus plantillas o está reservado.
TEMPLATE_PRIVATE_LIMIT_REACHED: La cuenta ya tiene 5 plantillas privadas.
PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES: El plan no puede crear plantillas.
WORKSPACE_OWNER_ONLY: Solo el propietario del workspace guarda plantillas en él.
{ "code": "TEMPLATE_CLOSED"}
Ú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/templates/create-from-stack","slug":"/es-es/api-reference/endpoint/templates/create-from-stack","pageMetadata":{"title":"Guardar un stack como plantilla","sidebarTitle":"Crear desde stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","authMethod":"bearer","description":"Guarda uno de tus stacks como plantilla privada con un servicio por miembro, eligiendo variables y archivos para cada aplicación.","href":"/es-es/api-reference/endpoint/templates/create-from-stack"},"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: \"Guarda uno de tus stacks como plantilla privada con un servicio por miembro, eligiendo variables y archivos para cada aplicación.\"\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`,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:[`Esta llamada guarda un stack como plantilla privada con una primera versión y responde `,_jsx(_components.code,{children:`201`}),` con la plantilla, con un servicio por cada miembro que elijas. Las variables de conexión del stack se convierten en marcadores que apuntan a los otros servicios (`,_jsx(_components.code,{children:`{{services.db.url}}`}),`, por ejemplo), y cada carpeta de Blob del stack se convierte en un servicio Blob. Un miembro que se deja fuera de la plantilla también deja fuera las variables que apuntaban a él. Las bases de datos se recrean vacías: sus datos nunca se copian.`]}),`\n`,_jsxs(_components.p,{children:[`Requiere el scope `,_jsx(_components.code,{children:`templates:write`}),` cuando se llama con una clave de API. Se aplican las reglas de plan, límite y workspace de `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/templates/create`,children:`Crear una plantilla privada`}),`, la plantilla no la verifica Vertra Cloud, y las negativas de `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/templates/create-from-app`,children:`Guardar una aplicación como plantilla`}),` valen para cada miembro que sea aplicación. Lee antes la propuesta con `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/templates/draft`,children:`Revisar borrador de plantilla`}),`.`]}),`\n`,_jsx(ParamField,{path:`stack_id`,type:`string`,required:true,id:`param-stack-id`,children:_jsx(_components.p,{children:`El ID del stack.`})}),`\n`,_jsx(ParamField,{query:`workspace_id`,type:`string`,id:`param-workspace-id`,children:_jsx(_components.p,{children:`Si el stack pertenece a un workspace, el ID del workspace.`})}),`\n`,_jsx(ParamField,{body:`id`,type:`string`,required:true,id:`param-id`,children:_jsx(_components.p,{children:`El slug de la plantilla: letras minúsculas, dígitos y guiones.`})}),`\n`,_jsx(ParamField,{body:`name`,type:`object`,required:true,id:`param-name`,children:_jsxs(_components.p,{children:[`El nombre por idioma: `,_jsx(_components.code,{children:`pt-br`}),` (obligatorio), `,_jsx(_components.code,{children:`en`}),` y `,_jsx(_components.code,{children:`es`}),`, de hasta 50 caracteres cada uno.`]})}),`\n`,_jsx(ParamField,{body:`description`,type:`object`,required:true,id:`param-description`,children:_jsxs(_components.p,{children:[`La descripción por idioma, con la misma forma que `,_jsx(_components.code,{children:`name`}),`, de hasta 128 caracteres cada uno.`]})}),`\n`,_jsx(ParamField,{body:`category`,type:`string`,required:true,id:`param-category`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`automation`}),`, `,_jsx(_components.code,{children:`ai-agents`}),`, `,_jsx(_components.code,{children:`bots`}),`, `,_jsx(_components.code,{children:`apis`}),`, `,_jsx(_components.code,{children:`cms`}),`, `,_jsx(_components.code,{children:`monitoring`}),`, `,_jsx(_components.code,{children:`starters`}),`, `,_jsx(_components.code,{children:`databases`}),` u `,_jsx(_components.code,{children:`other`}),`.`]})}),`\n`,_jsx(ParamField,{body:`tags`,type:`string[]`,id:`param-tags`,children:_jsx(_components.p,{children:`Hasta 10 etiquetas.`})}),`\n`,_jsx(ParamField,{body:`version`,type:`string`,id:`param-version`,children:_jsxs(_components.p,{children:[`La primera versión, como versión semántica. Por defecto `,_jsx(_components.code,{children:`1.0.0`}),`.`]})}),`\n`,_jsx(ParamField,{body:`permissions`,type:`object`,id:`param-permissions`,children:_jsxs(_components.p,{children:[`Lo que pueden hacer los usuarios de la plantilla, como en los `,_jsx(_components.a,{href:`/es-es/templates/create/permissions`,children:`permisos`}),` del manifiesto.`]})}),`\n`,_jsxs(ParamField,{body:`members`,type:`object[]`,required:true,id:`param-members`,children:[_jsx(_components.p,{children:`Lo que se guarda de cada miembro del stack, una aplicación o una base de datos.`}),_jsxs(Expandable,{title:`Objeto member`,children:[_jsx(ResponseField,{name:`resource_id`,type:`string`,required:true,id:`param-resource-id`,children:_jsx(_components.p,{children:`El ID de la aplicación o de la base de datos que se guarda.`})}),_jsx(ResponseField,{name:`service_id`,type:`string`,required:true,id:`param-service-id`,children:_jsx(_components.p,{children:`El id que recibe el servicio en el manifiesto.`})}),_jsxs(ResponseField,{name:`env`,type:`object[]`,id:`param-env`,children:[_jsx(_components.p,{children:`Una revisión por variable de una aplicación. Una variable sin revisión queda fuera de la plantilla. Cada revisión tiene:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`key`}),`: el nombre de la variable.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`mode`}),`: `,_jsx(_components.code,{children:`question`}),` (se convierte en una pregunta que responde el usuario; el valor no se copia), `,_jsx(_components.code,{children:`keep`}),` (el valor se copia; se rechaza cuando parece una credencial), `,_jsx(_components.code,{children:`generate`}),` (se convierte en un secreto que la plataforma genera para cada usuario, con `,_jsx(_components.code,{children:`generate`}),` igual a `,_jsx(_components.code,{children:`random:\u003cn>`}),` o `,_jsx(_components.code,{children:`uuid`}),`), `,_jsx(_components.code,{children:`hidden`}),` (se copia, pero se oculta a quien usa la plantilla; el valor queda fuera de su vista) u `,_jsx(_components.code,{children:`omit`}),` (se deja fuera).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`label`}),` y `,_jsx(_components.code,{children:`help`}),`: textos por idioma (`,_jsx(_components.code,{children:`pt-br`}),`, `,_jsx(_components.code,{children:`en`}),`, `,_jsx(_components.code,{children:`es`}),`), usados por `,_jsx(_components.code,{children:`question`}),` y `,_jsx(_components.code,{children:`generate`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`generate`}),`: cómo se genera el secreto, `,_jsx(_components.code,{children:`random:\u003cn>`}),` o `,_jsx(_components.code,{children:`uuid`}),`.`]}),`\n`]}),_jsxs(_components.p,{children:[`Lee antes las sugerencias con `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/templates/draft`,children:`Revisar borrador de plantilla`}),`.`]})]}),_jsx(ResponseField,{name:`paths`,type:`string[]`,id:`param-paths`,children:_jsxs(_components.p,{children:[`Las rutas de `,_jsx(_components.code,{children:`/app`}),` de la aplicación que entran en la plantilla, para aplicaciones con código. Sin este campo, entra todo excepto lo que el borrador deja sin seleccionar. Los archivos `,_jsx(_components.code,{children:`.env*`}),`, la carpeta de la plataforma y las carpetas de dependencias nunca se pueden incluir.`]})}),_jsx(ResponseField,{name:`ram`,type:`object`,id:`param-ram`,children:_jsxs(_components.p,{children:[`La memoria del servicio en MB: `,_jsx(_components.code,{children:`min`}),`, `,_jsx(_components.code,{children:`recommended`}),` y `,_jsx(_components.code,{children:`max`}),` opcional.`]})})]})]}),`\n`,_jsx(ParamField,{body:`workspace_id`,type:`string`,id:`param-workspace-id-1`,children:_jsx(_components.p,{children:`El workspace que será propietario de la plantilla. Sin este campo, la plantilla te pertenece.`})}),`\n`,`\n`,_jsx(Heading,{level:`3`,id:`response`,children:`Response`}),`\n`,_jsxs(_components.p,{children:[`El mismo objeto de plantilla que devuelve `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/templates/create`,children:`Crear una plantilla privada`}),`, con `,_jsx(_components.code,{children:`201 Created`}),`. `,_jsx(_components.code,{children:`creates_stack`}),` es `,_jsx(_components.code,{children:`true`}),` y `,_jsx(_components.code,{children:`services`}),` tiene una entrada por miembro.`]}),`\n`,`\n`,_jsx(Heading,{level:`3`,id:`error-responses`,children:`Error Responses`}),`\n`,_jsxs(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:[_jsx(_components.p,{children:`El código de error que indica el motivo del fallo. Valores posibles:`}),_jsxs(_components.ul,{children:[`\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:`templates:write`}),` (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`STACK_NOT_FOUND`}),`: El stack no existe o no es tuyo.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`APP_NOT_FOUND`}),`: Una aplicación miembro no existe.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SAVE_NOT_ALLOWED`}),`: Una aplicación miembro llegó desde un enlace para compartir, o ejecuta una imagen de la plataforma (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_CLOSED`}),`: Un miembro procede de una plantilla cerrada (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_MANIFEST_INVALID`}),`: El resultado no es un manifiesto válido; `,_jsx(_components.code,{children:`details.issues`}),` enumera los hallazgos.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SECRET_IN_SOURCE`}),`: Un archivo seleccionado contiene un secreto; `,_jsx(_components.code,{children:`details.files`}),` enumera las rutas (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SLUG_TAKEN`}),`: El slug ya está en uso entre tus plantillas o está reservado.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_PRIVATE_LIMIT_REACHED`}),`: La cuenta ya tiene 5 plantillas privadas.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES`}),`: El plan no puede crear plantillas.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`WORKSPACE_OWNER_ONLY`}),`: Solo el propietario del workspace guarda plantillas en él.`]}),`\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":"Guardar un stack como plantilla","sidebarTitle":"Crear desde stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","authMethod":"bearer","description":"Guarda uno de tus stacks como plantilla privada con un servicio por miembro, eligiendo variables y archivos para cada aplicación.","href":"/es-es/api-reference/endpoint/templates/create-from-stack"}}},"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`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,ParamField,RequestExample,ResponseExample,ResponseField}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!RequestExample)_missingMdxReference(`RequestExample`,true);if(!ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Esta llamada guarda un stack como plantilla privada con una primera versión y responde `,_jsx(_components.code,{children:`201`}),` con la plantilla, con un servicio por cada miembro que elijas. Las variables de conexión del stack se convierten en marcadores que apuntan a los otros servicios (`,_jsx(_components.code,{children:`{{services.db.url}}`}),`, por ejemplo), y cada carpeta de Blob del stack se convierte en un servicio Blob. Un miembro que se deja fuera de la plantilla también deja fuera las variables que apuntaban a él. Las bases de datos se recrean vacías: sus datos nunca se copian.`]}),`\n`,_jsxs(_components.p,{children:[`Requiere el scope `,_jsx(_components.code,{children:`templates:write`}),` cuando se llama con una clave de API. Se aplican las reglas de plan, límite y workspace de `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/templates/create`,children:`Crear una plantilla privada`}),`, la plantilla no la verifica Vertra Cloud, y las negativas de `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/templates/create-from-app`,children:`Guardar una aplicación como plantilla`}),` valen para cada miembro que sea aplicación. Lee antes la propuesta con `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/templates/draft`,children:`Revisar borrador de plantilla`}),`.`]}),`\n`,_jsx(ParamField,{path:`stack_id`,type:`string`,required:true,id:`param-stack-id`,children:_jsx(_components.p,{children:`El ID del stack.`})}),`\n`,_jsx(ParamField,{query:`workspace_id`,type:`string`,id:`param-workspace-id`,children:_jsx(_components.p,{children:`Si el stack pertenece a un workspace, el ID del workspace.`})}),`\n`,_jsx(ParamField,{body:`id`,type:`string`,required:true,id:`param-id`,children:_jsx(_components.p,{children:`El slug de la plantilla: letras minúsculas, dígitos y guiones.`})}),`\n`,_jsx(ParamField,{body:`name`,type:`object`,required:true,id:`param-name`,children:_jsxs(_components.p,{children:[`El nombre por idioma: `,_jsx(_components.code,{children:`pt-br`}),` (obligatorio), `,_jsx(_components.code,{children:`en`}),` y `,_jsx(_components.code,{children:`es`}),`, de hasta 50 caracteres cada uno.`]})}),`\n`,_jsx(ParamField,{body:`description`,type:`object`,required:true,id:`param-description`,children:_jsxs(_components.p,{children:[`La descripción por idioma, con la misma forma que `,_jsx(_components.code,{children:`name`}),`, de hasta 128 caracteres cada uno.`]})}),`\n`,_jsx(ParamField,{body:`category`,type:`string`,required:true,id:`param-category`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`automation`}),`, `,_jsx(_components.code,{children:`ai-agents`}),`, `,_jsx(_components.code,{children:`bots`}),`, `,_jsx(_components.code,{children:`apis`}),`, `,_jsx(_components.code,{children:`cms`}),`, `,_jsx(_components.code,{children:`monitoring`}),`, `,_jsx(_components.code,{children:`starters`}),`, `,_jsx(_components.code,{children:`databases`}),` u `,_jsx(_components.code,{children:`other`}),`.`]})}),`\n`,_jsx(ParamField,{body:`tags`,type:`string[]`,id:`param-tags`,children:_jsx(_components.p,{children:`Hasta 10 etiquetas.`})}),`\n`,_jsx(ParamField,{body:`version`,type:`string`,id:`param-version`,children:_jsxs(_components.p,{children:[`La primera versión, como versión semántica. Por defecto `,_jsx(_components.code,{children:`1.0.0`}),`.`]})}),`\n`,_jsx(ParamField,{body:`permissions`,type:`object`,id:`param-permissions`,children:_jsxs(_components.p,{children:[`Lo que pueden hacer los usuarios de la plantilla, como en los `,_jsx(_components.a,{href:`/es-es/templates/create/permissions`,children:`permisos`}),` del manifiesto.`]})}),`\n`,_jsxs(ParamField,{body:`members`,type:`object[]`,required:true,id:`param-members`,children:[_jsx(_components.p,{children:`Lo que se guarda de cada miembro del stack, una aplicación o una base de datos.`}),_jsxs(Expandable,{title:`Objeto member`,children:[_jsx(ResponseField,{name:`resource_id`,type:`string`,required:true,id:`param-resource-id`,children:_jsx(_components.p,{children:`El ID de la aplicación o de la base de datos que se guarda.`})}),_jsx(ResponseField,{name:`service_id`,type:`string`,required:true,id:`param-service-id`,children:_jsx(_components.p,{children:`El id que recibe el servicio en el manifiesto.`})}),_jsxs(ResponseField,{name:`env`,type:`object[]`,id:`param-env`,children:[_jsx(_components.p,{children:`Una revisión por variable de una aplicación. Una variable sin revisión queda fuera de la plantilla. Cada revisión tiene:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`key`}),`: el nombre de la variable.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`mode`}),`: `,_jsx(_components.code,{children:`question`}),` (se convierte en una pregunta que responde el usuario; el valor no se copia), `,_jsx(_components.code,{children:`keep`}),` (el valor se copia; se rechaza cuando parece una credencial), `,_jsx(_components.code,{children:`generate`}),` (se convierte en un secreto que la plataforma genera para cada usuario, con `,_jsx(_components.code,{children:`generate`}),` igual a `,_jsx(_components.code,{children:`random:\u003cn>`}),` o `,_jsx(_components.code,{children:`uuid`}),`), `,_jsx(_components.code,{children:`hidden`}),` (se copia, pero se oculta a quien usa la plantilla; el valor queda fuera de su vista) u `,_jsx(_components.code,{children:`omit`}),` (se deja fuera).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`label`}),` y `,_jsx(_components.code,{children:`help`}),`: textos por idioma (`,_jsx(_components.code,{children:`pt-br`}),`, `,_jsx(_components.code,{children:`en`}),`, `,_jsx(_components.code,{children:`es`}),`), usados por `,_jsx(_components.code,{children:`question`}),` y `,_jsx(_components.code,{children:`generate`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`generate`}),`: cómo se genera el secreto, `,_jsx(_components.code,{children:`random:\u003cn>`}),` o `,_jsx(_components.code,{children:`uuid`}),`.`]}),`\n`]}),_jsxs(_components.p,{children:[`Lee antes las sugerencias con `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/templates/draft`,children:`Revisar borrador de plantilla`}),`.`]})]}),_jsx(ResponseField,{name:`paths`,type:`string[]`,id:`param-paths`,children:_jsxs(_components.p,{children:[`Las rutas de `,_jsx(_components.code,{children:`/app`}),` de la aplicación que entran en la plantilla, para aplicaciones con código. Sin este campo, entra todo excepto lo que el borrador deja sin seleccionar. Los archivos `,_jsx(_components.code,{children:`.env*`}),`, la carpeta de la plataforma y las carpetas de dependencias nunca se pueden incluir.`]})}),_jsx(ResponseField,{name:`ram`,type:`object`,id:`param-ram`,children:_jsxs(_components.p,{children:[`La memoria del servicio en MB: `,_jsx(_components.code,{children:`min`}),`, `,_jsx(_components.code,{children:`recommended`}),` y `,_jsx(_components.code,{children:`max`}),` opcional.`]})})]})]}),`\n`,_jsx(ParamField,{body:`workspace_id`,type:`string`,id:`param-workspace-id-1`,children:_jsx(_components.p,{children:`El workspace que será propietario de la plantilla. Sin este campo, la plantilla te pertenece.`})}),`\n`,_jsx(RequestExample,{children:_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`13`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`13`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.vertracloud.app/v1/templates/from-stack/stk-abc123def456`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$VERTRA_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"id\": \"api-with-postgres\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"name\": { \"pt-br\": \"API com Postgres\", \"en\": \"API with Postgres\" },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"description\": { \"pt-br\": \"API e banco prontos.\" },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"category\": \"apis\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"members\": [`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` { \"resource_id\": \"app-abc123def456\", \"service_id\": \"api\" },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` { \"resource_id\": \"db-abc123def456\", \"service_id\": \"db\" }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`3`,id:`response`,children:`Response`}),`\n`,_jsxs(_components.p,{children:[`El mismo objeto de plantilla que devuelve `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/templates/create`,children:`Crear una plantilla privada`}),`, con `,_jsx(_components.code,{children:`201 Created`}),`. `,_jsx(_components.code,{children:`creates_stack`}),` es `,_jsx(_components.code,{children:`true`}),` y `,_jsx(_components.code,{children:`services`}),` tiene una entrada por miembro.`]}),`\n`,_jsx(ResponseExample,{children:_jsx(CodeBlock,{filename:`Response`,numberOfLines:`17`,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:`17`,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:`\"tpl-abc123def456\"`}),_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:` \"slug\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"api-with-postgres\"`}),_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:` \"origin\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"private\"`}),_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:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"pt-br\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"API com Postgres\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"en\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"API with Postgres\"`}),_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:` \"category\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"apis\"`}),_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:` \"creates_stack\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_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:` \"services\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},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:`\"api\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"kind\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"app\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"source_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"database\"`}),_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:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"blob_visibility\"`}),_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:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"ram\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"min\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`256`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"recommended\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`512`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"web\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"required\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"conditional\"`}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},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:`\"db\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"kind\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"database\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"source_type\"`}),_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:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"database\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"postgres\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"blob_visibility\"`}),_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:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"ram\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"min\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`256`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"recommended\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`256`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"web\"`}),_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:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"conditional\"`}),_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`,_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:` \"ram_min_total\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`512`}),_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-27T14:02:00Z\"`}),_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:` \"updated_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-10-27T14:02:00Z\"`})]}),`\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:`error-responses`,children:`Error Responses`}),`\n`,_jsxs(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:[_jsx(_components.p,{children:`El código de error que indica el motivo del fallo. Valores posibles:`}),_jsxs(_components.ul,{children:[`\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:`templates:write`}),` (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`STACK_NOT_FOUND`}),`: El stack no existe o no es tuyo.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`APP_NOT_FOUND`}),`: Una aplicación miembro no existe.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SAVE_NOT_ALLOWED`}),`: Una aplicación miembro llegó desde un enlace para compartir, o ejecuta una imagen de la plataforma (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_CLOSED`}),`: Un miembro procede de una plantilla cerrada (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_MANIFEST_INVALID`}),`: El resultado no es un manifiesto válido; `,_jsx(_components.code,{children:`details.issues`}),` enumera los hallazgos.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SECRET_IN_SOURCE`}),`: Un archivo seleccionado contiene un secreto; `,_jsx(_components.code,{children:`details.files`}),` enumera las rutas (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SLUG_TAKEN`}),`: El slug ya está en uso entre tus plantillas o está reservado.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_PRIVATE_LIMIT_REACHED`}),`: La cuenta ya tiene 5 plantillas privadas.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES`}),`: El plan no puede crear plantillas.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`WORKSPACE_OWNER_ONLY`}),`: Solo el propietario del workspace guarda plantillas en él.`]}),`\n`]})]}),`\n`,_jsx(ResponseExample,{children:_jsx(CodeBlock,{filename:`Error Response`,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:`\"TEMPLATE_CLOSED\"`})]}),`\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":"Guardar un stack como plantilla","sidebarTitle":"Crear desde stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","authMethod":"bearer","description":"Guarda uno de tus stacks como plantilla privada con un servicio por miembro, eligiendo variables y archivos para cada aplicación.","href":"/es-es/api-reference/endpoint/templates/create-from-stack"}}}},"mdxExtracts":{"tableOfContents":[{"title":"Response","slug":"response","depth":3,"children":[]},{"title":"Error Responses","slug":"error-responses","depth":3,"children":[]}],"codeExamples":{"request":{"type":"RequestExample","children":[{"filename":"cURL","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=\"shellscript\">\u003ccode language=\"shellscript\" numberOfLines=\"13\">\u003cspan class=\"line\">\u003cspan style=\"color:#953800;--shiki-dark:#DCDCAA\">curl\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -X\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> POST\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> https://api.vertracloud.app/v1/templates/from-stack/stk-abc123def456\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -H\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"Authorization: Bearer \u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\">$VERTRA_API_KEY\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -H\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"Content-Type: application/json\"\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -d\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> '{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"id\": \"api-with-postgres\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"name\": { \"pt-br\": \"API com Postgres\", \"en\": \"API with Postgres\" },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"description\": { \"pt-br\": \"API e banco prontos.\" },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"category\": \"apis\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"members\": [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> { \"resource_id\": \"app-abc123def456\", \"service_id\": \"api\" },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> { \"resource_id\": \"db-abc123def456\", \"service_id\": \"db\" }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> }'\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]},"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=\"17\">\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\">\"tpl-abc123def456\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"slug\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"api-with-postgres\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"origin\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"private\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"name\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"pt-br\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"API com Postgres\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"en\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"API with Postgres\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"category\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"apis\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"creates_stack\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"services\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> { \u003c/span>\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\">\"api\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"kind\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"app\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"source_type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"code\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"database\"\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>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"blob_visibility\"\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>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"ram\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"min\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">256\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"recommended\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">512\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"web\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"required\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"conditional\"\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:#1F2328;--shiki-dark:#D4D4D4\"> { \u003c/span>\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\">\"db\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"kind\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"database\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"source_type\"\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>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"database\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"postgres\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"blob_visibility\"\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>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"ram\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"min\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">256\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"recommended\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">256\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"web\"\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>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"conditional\"\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:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"ram_min_total\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">512\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-27T14:02:00Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"updated_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-10-27T14:02:00Z\"\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":"Guardar un stack como plantilla","path":"/v1/templates/from-stack/{stack_id}","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 el stack pertenece a un workspace, el ID del workspace."}]}},"header":{},"cookie":{},"path":{"stack_id":{"schema":[{"type":"string","description":"El ID del stack.","required":true}]}}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"id":[{"type":"string","description":"El slug de la plantilla: letras minúsculas, dígitos y guiones.","required":true}],"name":[{"type":"object","properties":{},"description":"El nombre por idioma: `pt-br` (obligatorio), `en` y `es` , de hasta 50 caracteres cada uno.","required":true}],"description":[{"type":"object","properties":{},"description":"La descripción por idioma, con la misma forma que `name` , de hasta 128 caracteres cada uno.","required":true}],"category":[{"type":"string","description":"`automation` , `ai-agents` , `bots` , `apis` , `cms` , `monitoring` , `starters` , `databases` u `other` .","required":true}],"tags":[{"type":"array","items":[{"type":"string"}],"description":"Hasta 10 etiquetas."}],"version":[{"type":"string","description":"La primera versión, como versión semántica. Por defecto `1.0.0` ."}],"permissions":[{"type":"object","properties":{},"description":"Lo que pueden hacer los usuarios de la plantilla, como en los permisos del manifiesto."}],"members":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Lo que se guarda de cada miembro del stack, una aplicación o una base de datos.","required":true}],"workspace_id":[{"type":"string","description":"El workspace que será propietario de la plantilla. Sin este campo, la plantilla te pertenece."}]}}],"examples":{"example":{"value":{"id":"\u003cstring>","name":{},"description":{},"category":"\u003cstring>","tags":["\u003cstring>"],"version":"\u003cstring>","permissions":{},"members":[{}],"workspace_id":"\u003cstring>"}}}}}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"code":[{"type":"string","description":"El código de error que indica el motivo del fallo. Valores posibles: `API_KEY_SCOPE_DENIED` : La clave de API no tiene el scope `templates:write` ( `403` ). `STACK_NOT_FOUND` : El stack no existe o no es tuyo. `APP_NOT_FOUND` : Una aplicación miembro no existe. `TEMPLATE_SAVE_NOT_ALLOWED` : Una aplicación miembro llegó desde un enlace para compartir, o ejecuta una imagen de la plataforma ( `403` ). `TEMPLATE_CLOSED` : Un miembro procede de una plantilla cerrada ( `403` ). `TEMPLATE_MANIFEST_INVALID` : El resultado no es un manifiesto válido; `details.issues` enumera los hallazgos. `TEMPLATE_SECRET_IN_SOURCE` : Un archivo seleccionado contiene un secreto; `details.files` enumera las rutas ( `400` ). `TEMPLATE_SLUG_TAKEN` : El slug ya está en uso entre tus plantillas o está reservado. `TEMPLATE_PRIVATE_LIMIT_REACHED` : La cuenta ya tiene 5 plantillas privadas. `PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES` : El plan no puede crear plantillas. `WORKSPACE_OWNER_ONLY` : Solo el propietario del workspace guarda plantillas en él."}]}}],"examples":{"example":{"value":{"code":"\u003cstring>"}}}}}},"deprecated":false}},"jsLinks":[],"subdomain":"vertracloud","siteName":"Vertra Cloud","title":"Guardar un stack como plantilla - Vertra Cloud","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/","matchLevel":4},"pt-BR":{"href":"/pt-br","matchLevel":4},"es":{"href":"/es-es/api-reference/endpoint/templates/create-from-stack","matchLevel":0}}},"lastModified":"2026-10-30T22:45:18.411Z","gitLastModified":"2026-10-28T22:06:31.000Z","originalFileLocation":"es-es/api-reference/endpoint/templates/create-from-stack.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=\"Guarda uno de tus stacks como plantilla privada con un servicio por miembro, eligiendo variables y archivos para cada aplicación.\">\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=\"Guardar un stack como plantilla - Vertra Cloud\">\u003cmeta data-mint-head property=\"og:description\" content=\"Guarda uno de tus stacks como plantilla privada con un servicio por miembro, eligiendo variables y archivos para cada aplicación.\">\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/templates/create-from-stack\">\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=\"Guardar un stack como plantilla - Vertra Cloud\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Guarda uno de tus stacks como plantilla privada con un servicio por miembro, eligiendo variables y archivos para cada aplicación.\">\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/templates/create-from-stack\">\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/templates/create-from-stack.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/templates/create-from-stack#webpage\",\"url\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/templates/create-from-stack\",\"name\":\"Guardar un stack como plantilla\",\"description\":\"Guarda uno de tus stacks como plantilla privada con un servicio por miembro, eligiendo variables y archivos para cada aplicación.\",\"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/templates/create-from-stack#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/templates/create-from-stack#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\":\"Plantillas\",\"item\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/templates/list\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Guardar un stack como plantilla\",\"item\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/templates/create-from-stack\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/templates/create-from-stack#apireference\",\"headline\":\"Guardar un stack como plantilla\",\"name\":\"Guardar un stack como plantilla\",\"description\":\"Guarda uno de tus stacks como plantilla privada con un servicio por miembro, eligiendo variables y archivos para cada aplicación.\",\"url\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/templates/create-from-stack\",\"mainEntityOfPage\":{\"@id\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/templates/create-from-stack#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","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","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}","description":"Guarda una de tus aplicaciones como plantilla privada, eligiendo qué variables se convierten en preguntas y qué archivos se incluyen.","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","description":"Lista las variables y los archivos que la plataforma propone al guardar una aplicación o un stack como plantilla, sin incluir nunca valores.","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":"Guardar un stack como plantilla - 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"]}