Esta chamada salva uma stack como template privado com uma primeira versão e responde 201 com o template, com um serviço por membro que você escolher. As variáveis de conexão da stack viram placeholders que apontam para os outros serviços ({{services.db.url}}, por exemplo), e cada pasta do Blob da stack vira um serviço Blob. Um membro deixado de fora do template também deixa de fora as variáveis que apontavam para ele. Os bancos de dados são recriados vazios: os dados deles nunca são copiados.Precisa do escopo templates:write quando chamado com uma chave de API. Valem o plano, o limite e as regras de workspace de Criar template privado, o template não é verificado pela Vertra Cloud, e as recusas de Criar template a partir de app valem para cada membro que é app. Leia antes a proposta com Revisar rascunho do template.
Uma revisão por variável de um app. Uma variável sem revisão fica de fora do template. Cada revisão tem:
key: o nome da variável.
mode: question (vira uma pergunta que o usuário responde; o valor não é copiado), keep (o valor é copiado; recusado quando parece uma credencial), generate (vira um segredo que a plataforma gera para cada usuário, com generate definido como random:<n> ou uuid), hidden (copiado, mas oculto de quem usa o template; o valor fica fora de vista de quem usa o template) ou omit (fica de fora).
label e help: textos por idioma (pt-br, en, es), usados por question e generate.
generate: como o segredo é gerado, random:<n> ou uuid.
Os caminhos de /app do app que entram no template, para apps com código. Sem ele, entra tudo, exceto o que o rascunho deixa sem selecionar. Arquivos .env*, a pasta da plataforma e as pastas de dependências nunca podem ser incluídos.
O código de erro que indica o motivo da falha. Valores possíveis:
API_KEY_SCOPE_DENIED: A chave de API não tem o escopo templates:write (403).
STACK_NOT_FOUND: A stack não existe ou não é sua.
APP_NOT_FOUND: Um app membro não existe.
TEMPLATE_SAVE_NOT_ALLOWED: Um app membro veio de um link de compartilhamento, ou executa uma imagem da plataforma (403).
TEMPLATE_CLOSED: Um membro vem de um template fechado (403).
TEMPLATE_MANIFEST_INVALID: O resultado não é um manifesto válido; details.issues lista os achados.
TEMPLATE_SECRET_IN_SOURCE: Um arquivo selecionado tem um segredo; details.files lista os caminhos (400).
TEMPLATE_SLUG_TAKEN: O slug já está em uso entre os seus templates ou é reservado.
TEMPLATE_PRIVATE_LIMIT_REACHED: A conta já tem 5 templates privados.
PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES: O plano não pode criar templates.
WORKSPACE_OWNER_ONLY: Só o dono do workspace salva templates nele.
{ "code": "TEMPLATE_CLOSED"}
Última modificação em 28 de outubro de 2026
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Vertra Cloud","description":"Vertra Cloud is a Brazilian application hosting platform (PaaS): deploy from GitHub or a zip file, isolated containers, managed databases, file storage, snapshots, a CLI and a VS Code extension.","colors":{"primary":"#ff6100","light":"#ff7a24","dark":"#e65700"},"logo":{"light":"https://mintcdn.com/vertracloud/2O7-bfMOIoy6MCUx/logo/light.svg?fit=max\u0026auto=format\u0026n=2O7-bfMOIoy6MCUx\u0026q=85\u0026s=2fcb392041b562c0aab2f07ebef0f12e","dark":"https://mintcdn.com/vertracloud/2O7-bfMOIoy6MCUx/logo/light.svg?fit=max\u0026auto=format\u0026n=2O7-bfMOIoy6MCUx\u0026q=85\u0026s=2fcb392041b562c0aab2f07ebef0f12e"},"favicon":"https://mintcdn.com/vertracloud/2O7-bfMOIoy6MCUx/favicon.svg?fit=max\u0026auto=format\u0026n=2O7-bfMOIoy6MCUx\u0026q=85\u0026s=1bab95e4f8e35419e5901e69c7caa4b2","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","javascript","python","go"]},"mdx":{"auth":{"method":"bearer"},"server":"https://api.vertracloud.app"}},"background":{"color":{"light":"#f7f7f6","dark":"#121212"}},"navbar":{"links":[{"href":"mailto:[email protected]","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://vertracloud.app/dashboard"}},"footer":{"socials":{"github":"https://github.com/vertracloud","instagram":"https://instagram.com/vertracloud","x":"https://x.com/vertracloud","youtube":"https://www.youtube.com/@vertracloud","discord":"https://discord.gg/vertracloud"}},"seo":{"metatags":{"og:site_name":"Vertra Cloud Docs","og:type":"website","og:image":"https://docs.vertracloud.app/images/og.png","twitter:card":"summary_large_image","twitter:image":"https://docs.vertracloud.app/images/og.png","description":"Vertra Cloud is a Brazilian application hosting platform (PaaS): deploy from GitHub or a zip file, isolated containers, managed databases, file storage, snapshots, a CLI and a VS Code extension."},"indexing":"navigable"},"fonts":{"family":"Geist"},"contextual":{"options":["copy","view","chatgpt","claude","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","default":true,"href":""},{"language":"pt-BR","navbar":{"links":[{"href":"mailto:[email protected]","label":"Suporte"}],"primary":{"type":"button","label":"Dashboard","href":"https://vertracloud.app/dashboard"}},"href":"pt-br"},{"language":"es","navbar":{"links":[{"href":"mailto:[email protected]","label":"Soporte"}],"primary":{"type":"button","label":"Panel","href":"https://vertracloud.app/dashboard"}},"href":"es-es"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"vertracloud","hasAudioNarration":false,"actualSubdomain":"vertracloud","customDomains":["docs.vertracloud.app"],"gitSource":{"type":"github","owner":"vertracloud","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae51deb3bf34bcad38c5814","collectionId":"9f590012-0485-47b3-af80-9ffed670518c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae51deb3bf34bcad38c5814"},"entitlements":{},"buildId":"6ae51f8fceb92005b37aba26","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"en","tag":"API Reference","count":159},{"language":"es","tag":"Referencia de la API","count":159},{"language":"pt-BR","tag":"Referência da API","count":159},{"language":"en","tag":"Endpoints","count":156},{"language":"es","tag":"Endpoints","count":156},{"language":"pt-BR","tag":"Endpoints","count":156},{"language":"en","tag":"Templates","count":64},{"language":"es","tag":"Plantillas","count":64},{"language":"pt-BR","tag":"Templates","count":64},{"language":"es","tag":"Blob Storage","count":58},{"language":"pt-BR","tag":"Blob Storage","count":58},{"language":"en","tag":"Blob Storage","count":56},{"language":"en","tag":"Applications","count":46},{"language":"en","tag":"Changelog","count":46},{"language":"es","tag":"Aplicaciones","count":46},{"language":"es","tag":"Changelog","count":46},{"language":"pt-BR","tag":"Aplicações","count":46},{"language":"pt-BR","tag":"Changelog","count":46},{"language":"en","tag":"v26","count":35},{"language":"es","tag":"v26","count":35},{"language":"pt-BR","tag":"v26","count":35},{"language":"en","tag":"Blob API reference","count":30},{"language":"es","tag":"Referencia de la API de Blob","count":30},{"language":"pt-BR","tag":"Referência da API do Blob","count":30},{"language":"en","tag":"Workspaces","count":26},{"language":"en","tag":"Tutorials","count":26},{"language":"es","tag":"Workspaces","count":26},{"language":"es","tag":"Tutoriales","count":26},{"language":"pt-BR","tag":"Workspaces","count":26},{"language":"pt-BR","tag":"Tutoriais","count":26}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--gray-50:247 247 246;--gray-100:241 241 240;--gray-200:230 230 228;--gray-300:211 211 209;--gray-400:162 162 162;--gray-500:115 115 115;--gray-600:83 83 83;--gray-700:61 61 61;--gray-800:42 42 42;--gray-900:26 26 26;--gray-950:13 13 13}.vc-home{--vc-orange:#ff6100;--vc-orange-strong:#e65700;--vc-paper:#f7f7f6;--vc-surface:#ffffff;--vc-ink:#141414;--vc-ink-2:#3d3d3d;--vc-muted:#737373;--vc-line:#e6e6e4;color:var(--vc-ink)}.dark .vc-home{--vc-orange-strong:#ff7a24;--vc-paper:#121212;--vc-surface:#1a1a1a;--vc-ink:#f4f4f4;--vc-ink-2:#c6c6c6;--vc-muted:#8e8e8e;--vc-line:#2a2a2a}.vc-hero,.vc-hero-inner{display:flex;flex-direction:column;box-sizing:border-box;margin:0}.vc-hero{min-height:calc(100dvh - 120px);overflow:hidden;border-bottom:1px solid var(--vc-line);background-color:var(--vc-paper)}.vc-hero-inner{flex:0 0 auto;justify-content:center;max-width:40rem;padding:2.75rem 1.25rem 1.75rem;text-align:left}.vc-hero h1{margin:0;color:var(--vc-ink);font-size:clamp(2.15rem,.85rem + 1.9vw,3.15rem);font-weight:600;line-height:1.02;letter-spacing:-.045em;text-wrap:balance}.vc-hero-copy{max-width:36rem;margin:1.15rem 0 0;color:var(--vc-ink-2);font-size:1.05rem;line-height:1.55;text-wrap:pretty}.vc-actions{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:.75rem;margin-top:1.75rem}.vc-btn{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:44px;padding:0 1.15rem;border-radius:.5rem;font-size:.92rem;font-weight:500;line-height:1;text-decoration:none!important;border:1px solid transparent;transition:background-color .18s cubic-bezier(.22,1,.36,1),border-color .18s cubic-bezier(.22,1,.36,1)}.vc-btn:focus-visible{outline:2px solid var(--vc-orange);outline-offset:2px}.vc-btn-primary{background:var(--vc-orange);color:#fff!important}.vc-btn-primary:hover{background:var(--vc-orange-strong)}.vc-btn-ghost{background:0 0;border-color:var(--vc-line);color:var(--vc-ink)!important}.vc-btn-ghost:hover{border-color:var(--vc-ink)}.vc-hero-art{flex:1 1 auto;min-height:240px;border-top:1px solid var(--vc-line);background:#f4efe4 url(/images/hero-pillar.webp) 70% 68%/cover no-repeat}@media (min-width:1024px){.vc-hero{flex-direction:row;align-items:stretch;min-height:calc(100dvh - 112px)}.vc-hero-inner{flex:.78 1 0;max-width:none;padding:4rem clamp(1.75rem,4vw,4.5rem)}.vc-hero-art{flex:1.22 1 0;min-height:0;border-top:0;border-left:1px solid var(--vc-line);background-position:72% 50%}}.vc-section{max-width:1040px;margin:0 auto;padding:4.5rem 1.5rem 0}.vc-section:last-of-type{padding-bottom:4.5rem}.vc-heading{max-width:620px;margin-bottom:1.75rem}.vc-kicker{color:var(--vc-orange);font:600 .72rem ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase}.vc-heading h2{margin:.5rem 0 .6rem;color:var(--vc-ink);font-size:clamp(1.55rem,3vw,2.05rem);font-weight:700;letter-spacing:-.03em;text-wrap:balance}.vc-heading p{margin:0;color:var(--vc-muted);line-height:1.65}.vc-home .card{border-radius:.85rem;transition:border-color .18s ease,transform .18s ease}.vc-home a.card:hover{border-color:rgba(255,97,0,.6)!important;transform:translateY(-2px)}.vc-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.6rem}.vc-chip{display:flex;align-items:center;gap:.6rem;padding:.7rem .85rem;border:1px solid var(--vc-line);border-radius:.7rem;background:var(--vc-chip);color:var(--vc-ink)!important;font-size:.9rem;font-weight:500;text-decoration:none!important;transition:border-color .15s ease,transform .15s ease}.vc-chip:hover{border-color:rgba(255,97,0,.6);transform:translateY(-1px)}.vc-chip svg{flex-shrink:0}.vc-help{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem}.vc-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem;max-width:1040px;margin:4.5rem auto 0;padding:1.5rem 1.5rem 3rem;border-top:1px solid var(--vc-line);color:var(--vc-muted);font:.72rem ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}.vc-footer a{color:var(--vc-ink)!important;text-decoration:none!important}.vc-footer a:hover{color:var(--vc-orange)!important}@media (max-width:760px){.vc-section{padding:3.25rem 1rem 0}}[data-component-part=language-switcher] [data-language=en] a::before{content:'🇺🇸 '}[data-component-part=language-switcher] [data-language=pt-BR] a::before{content:'🇧🇷 '}[data-component-part=language-switcher] [data-language=es] a::before{content:'🇪🇸 '}"}],"page":{"pagePath":"pt-br/api-reference/endpoint/templates/create-from-stack","slug":"/pt-br/api-reference/endpoint/templates/create-from-stack","pageMetadata":{"title":"Salvar uma stack como template","sidebarTitle":"Criar a partir de stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","authMethod":"bearer","description":"Salva uma das suas stacks como template privado, com um serviço por membro, escolhendo variáveis e arquivos de cada app.","href":"/pt-br/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: \"Salva uma das suas stacks como template privado, com um serviço por membro, escolhendo variáveis e arquivos de cada app.\"\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 chamada salva uma stack como template privado com uma primeira versão e responde `,_jsx(_components.code,{children:`201`}),` com o template, com um serviço por membro que você escolher. As variáveis de conexão da stack viram placeholders que apontam para os outros serviços (`,_jsx(_components.code,{children:`{{services.db.url}}`}),`, por exemplo), e cada pasta do Blob da stack vira um serviço Blob. Um membro deixado de fora do template também deixa de fora as variáveis que apontavam para ele. Os bancos de dados são recriados vazios: os dados deles nunca são copiados.`]}),`\n`,_jsxs(_components.p,{children:[`Precisa do escopo `,_jsx(_components.code,{children:`templates:write`}),` quando chamado com uma chave de API. Valem o plano, o limite e as regras de workspace de `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/templates/create`,children:`Criar template privado`}),`, o template não é verificado pela Vertra Cloud, e as recusas de `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/templates/create-from-app`,children:`Criar template a partir de app`}),` valem para cada membro que é app. Leia antes a proposta com `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/templates/draft`,children:`Revisar rascunho do template`}),`.`]}),`\n`,_jsx(ParamField,{path:`stack_id`,type:`string`,required:true,id:`param-stack-id`,children:_jsx(_components.p,{children:`O ID da stack.`})}),`\n`,_jsx(ParamField,{query:`workspace_id`,type:`string`,id:`param-workspace-id`,children:_jsx(_components.p,{children:`Se a stack pertencer a um workspace, o ID do workspace.`})}),`\n`,_jsx(ParamField,{body:`id`,type:`string`,required:true,id:`param-id`,children:_jsx(_components.p,{children:`O slug do template, com letras minúsculas, números e hífens.`})}),`\n`,_jsx(ParamField,{body:`name`,type:`object`,required:true,id:`param-name`,children:_jsxs(_components.p,{children:[`O nome por idioma: `,_jsx(_components.code,{children:`pt-br`}),` (obrigatório), `,_jsx(_components.code,{children:`en`}),` e `,_jsx(_components.code,{children:`es`}),`, de até 50 caracteres cada.`]})}),`\n`,_jsx(ParamField,{body:`description`,type:`object`,required:true,id:`param-description`,children:_jsxs(_components.p,{children:[`A descrição por idioma, no mesmo formato de `,_jsx(_components.code,{children:`name`}),`, de até 128 caracteres cada.`]})}),`\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`}),` ou `,_jsx(_components.code,{children:`other`}),`.`]})}),`\n`,_jsx(ParamField,{body:`tags`,type:`string[]`,id:`param-tags`,children:_jsx(_components.p,{children:`Até 10 tags.`})}),`\n`,_jsx(ParamField,{body:`version`,type:`string`,id:`param-version`,children:_jsxs(_components.p,{children:[`A primeira versão, como versão semântica. Padrão `,_jsx(_components.code,{children:`1.0.0`}),`.`]})}),`\n`,_jsx(ParamField,{body:`permissions`,type:`object`,id:`param-permissions`,children:_jsxs(_components.p,{children:[`O que os usuários do template podem fazer, como nas `,_jsx(_components.a,{href:`/pt-br/templates/create/permissions`,children:`permissões`}),` do manifesto.`]})}),`\n`,_jsxs(ParamField,{body:`members`,type:`object[]`,required:true,id:`param-members`,children:[_jsx(_components.p,{children:`O que salvar de cada membro da stack, um app ou um banco de dados.`}),_jsxs(Expandable,{title:\"Objeto `member`\",children:[_jsx(ResponseField,{name:`resource_id`,type:`string`,required:true,id:`param-resource-id`,children:_jsx(_components.p,{children:`O ID do app ou do banco de dados a salvar.`})}),_jsx(ResponseField,{name:`service_id`,type:`string`,required:true,id:`param-service-id`,children:_jsx(_components.p,{children:`O id que o serviço recebe no manifesto.`})}),_jsxs(ResponseField,{name:`env`,type:`object[]`,id:`param-env`,children:[_jsx(_components.p,{children:`Uma revisão por variável de um app. Uma variável sem revisão fica de fora do template. Cada revisão tem:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`key`}),`: o nome da variável.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`mode`}),`: `,_jsx(_components.code,{children:`question`}),` (vira uma pergunta que o usuário responde; o valor não é copiado), `,_jsx(_components.code,{children:`keep`}),` (o valor é copiado; recusado quando parece uma credencial), `,_jsx(_components.code,{children:`generate`}),` (vira um segredo que a plataforma gera para cada usuário, com `,_jsx(_components.code,{children:`generate`}),` definido como `,_jsx(_components.code,{children:`random:\u003cn>`}),` ou `,_jsx(_components.code,{children:`uuid`}),`), `,_jsx(_components.code,{children:`hidden`}),` (copiado, mas oculto de quem usa o template; o valor fica fora de vista de quem usa o template) ou `,_jsx(_components.code,{children:`omit`}),` (fica de fora).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`label`}),` e `,_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`}),` e `,_jsx(_components.code,{children:`generate`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`generate`}),`: como o segredo é gerado, `,_jsx(_components.code,{children:`random:\u003cn>`}),` ou `,_jsx(_components.code,{children:`uuid`}),`.`]}),`\n`]}),_jsxs(_components.p,{children:[`Leia antes as sugestões com `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/templates/draft`,children:`Revisar rascunho do template`}),`.`]})]}),_jsx(ResponseField,{name:`paths`,type:`string[]`,id:`param-paths`,children:_jsxs(_components.p,{children:[`Os caminhos de `,_jsx(_components.code,{children:`/app`}),` do app que entram no template, para apps com código. Sem ele, entra tudo, exceto o que o rascunho deixa sem selecionar. Arquivos `,_jsx(_components.code,{children:`.env*`}),`, a pasta da plataforma e as pastas de dependências nunca podem ser incluídos.`]})}),_jsx(ResponseField,{name:`ram`,type:`object`,id:`param-ram`,children:_jsxs(_components.p,{children:[`A memória do serviço em MB: `,_jsx(_components.code,{children:`min`}),`, `,_jsx(_components.code,{children:`recommended`}),` e `,_jsx(_components.code,{children:`max`}),` opcional.`]})})]})]}),`\n`,_jsx(ParamField,{body:`workspace_id`,type:`string`,id:`param-workspace-id-1`,children:_jsx(_components.p,{children:`O workspace que será dono do template. Sem ele, o template é seu.`})}),`\n`,`\n`,_jsx(Heading,{level:`3`,id:`resposta`,children:`Resposta`}),`\n`,_jsxs(_components.p,{children:[`O mesmo objeto de template retornado por `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/templates/create`,children:`Criar template privado`}),`, com `,_jsx(_components.code,{children:`201 Created`}),`. `,_jsx(_components.code,{children:`creates_stack`}),` é `,_jsx(_components.code,{children:`true`}),` e `,_jsx(_components.code,{children:`services`}),` tem uma entrada por membro.`]}),`\n`,`\n`,_jsx(Heading,{level:`3`,id:`respostas-de-erro`,children:`Respostas de erro`}),`\n`,_jsxs(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:[_jsx(_components.p,{children:`O código de erro que indica o motivo da falha. Valores possíveis:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`API_KEY_SCOPE_DENIED`}),`: A chave de API não tem o escopo `,_jsx(_components.code,{children:`templates:write`}),` (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`STACK_NOT_FOUND`}),`: A stack não existe ou não é sua.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`APP_NOT_FOUND`}),`: Um app membro não existe.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SAVE_NOT_ALLOWED`}),`: Um app membro veio de um link de compartilhamento, ou executa uma imagem da plataforma (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_CLOSED`}),`: Um membro vem de um template fechado (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_MANIFEST_INVALID`}),`: O resultado não é um manifesto válido; `,_jsx(_components.code,{children:`details.issues`}),` lista os achados.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SECRET_IN_SOURCE`}),`: Um arquivo selecionado tem um segredo; `,_jsx(_components.code,{children:`details.files`}),` lista os caminhos (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SLUG_TAKEN`}),`: O slug já está em uso entre os seus templates ou é reservado.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_PRIVATE_LIMIT_REACHED`}),`: A conta já tem 5 templates privados.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES`}),`: O plano não pode criar templates.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`WORKSPACE_OWNER_ONLY`}),`: Só o dono do workspace salva templates nele.`]}),`\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":"Salvar uma stack como template","sidebarTitle":"Criar a partir de stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","authMethod":"bearer","description":"Salva uma das suas stacks como template privado, com um serviço por membro, escolhendo variáveis e arquivos de cada app.","href":"/pt-br/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 chamada salva uma stack como template privado com uma primeira versão e responde `,_jsx(_components.code,{children:`201`}),` com o template, com um serviço por membro que você escolher. As variáveis de conexão da stack viram placeholders que apontam para os outros serviços (`,_jsx(_components.code,{children:`{{services.db.url}}`}),`, por exemplo), e cada pasta do Blob da stack vira um serviço Blob. Um membro deixado de fora do template também deixa de fora as variáveis que apontavam para ele. Os bancos de dados são recriados vazios: os dados deles nunca são copiados.`]}),`\n`,_jsxs(_components.p,{children:[`Precisa do escopo `,_jsx(_components.code,{children:`templates:write`}),` quando chamado com uma chave de API. Valem o plano, o limite e as regras de workspace de `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/templates/create`,children:`Criar template privado`}),`, o template não é verificado pela Vertra Cloud, e as recusas de `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/templates/create-from-app`,children:`Criar template a partir de app`}),` valem para cada membro que é app. Leia antes a proposta com `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/templates/draft`,children:`Revisar rascunho do template`}),`.`]}),`\n`,_jsx(ParamField,{path:`stack_id`,type:`string`,required:true,id:`param-stack-id`,children:_jsx(_components.p,{children:`O ID da stack.`})}),`\n`,_jsx(ParamField,{query:`workspace_id`,type:`string`,id:`param-workspace-id`,children:_jsx(_components.p,{children:`Se a stack pertencer a um workspace, o ID do workspace.`})}),`\n`,_jsx(ParamField,{body:`id`,type:`string`,required:true,id:`param-id`,children:_jsx(_components.p,{children:`O slug do template, com letras minúsculas, números e hífens.`})}),`\n`,_jsx(ParamField,{body:`name`,type:`object`,required:true,id:`param-name`,children:_jsxs(_components.p,{children:[`O nome por idioma: `,_jsx(_components.code,{children:`pt-br`}),` (obrigatório), `,_jsx(_components.code,{children:`en`}),` e `,_jsx(_components.code,{children:`es`}),`, de até 50 caracteres cada.`]})}),`\n`,_jsx(ParamField,{body:`description`,type:`object`,required:true,id:`param-description`,children:_jsxs(_components.p,{children:[`A descrição por idioma, no mesmo formato de `,_jsx(_components.code,{children:`name`}),`, de até 128 caracteres cada.`]})}),`\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`}),` ou `,_jsx(_components.code,{children:`other`}),`.`]})}),`\n`,_jsx(ParamField,{body:`tags`,type:`string[]`,id:`param-tags`,children:_jsx(_components.p,{children:`Até 10 tags.`})}),`\n`,_jsx(ParamField,{body:`version`,type:`string`,id:`param-version`,children:_jsxs(_components.p,{children:[`A primeira versão, como versão semântica. Padrão `,_jsx(_components.code,{children:`1.0.0`}),`.`]})}),`\n`,_jsx(ParamField,{body:`permissions`,type:`object`,id:`param-permissions`,children:_jsxs(_components.p,{children:[`O que os usuários do template podem fazer, como nas `,_jsx(_components.a,{href:`/pt-br/templates/create/permissions`,children:`permissões`}),` do manifesto.`]})}),`\n`,_jsxs(ParamField,{body:`members`,type:`object[]`,required:true,id:`param-members`,children:[_jsx(_components.p,{children:`O que salvar de cada membro da stack, um app ou um banco de dados.`}),_jsxs(Expandable,{title:\"Objeto `member`\",children:[_jsx(ResponseField,{name:`resource_id`,type:`string`,required:true,id:`param-resource-id`,children:_jsx(_components.p,{children:`O ID do app ou do banco de dados a salvar.`})}),_jsx(ResponseField,{name:`service_id`,type:`string`,required:true,id:`param-service-id`,children:_jsx(_components.p,{children:`O id que o serviço recebe no manifesto.`})}),_jsxs(ResponseField,{name:`env`,type:`object[]`,id:`param-env`,children:[_jsx(_components.p,{children:`Uma revisão por variável de um app. Uma variável sem revisão fica de fora do template. Cada revisão tem:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`key`}),`: o nome da variável.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`mode`}),`: `,_jsx(_components.code,{children:`question`}),` (vira uma pergunta que o usuário responde; o valor não é copiado), `,_jsx(_components.code,{children:`keep`}),` (o valor é copiado; recusado quando parece uma credencial), `,_jsx(_components.code,{children:`generate`}),` (vira um segredo que a plataforma gera para cada usuário, com `,_jsx(_components.code,{children:`generate`}),` definido como `,_jsx(_components.code,{children:`random:\u003cn>`}),` ou `,_jsx(_components.code,{children:`uuid`}),`), `,_jsx(_components.code,{children:`hidden`}),` (copiado, mas oculto de quem usa o template; o valor fica fora de vista de quem usa o template) ou `,_jsx(_components.code,{children:`omit`}),` (fica de fora).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`label`}),` e `,_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`}),` e `,_jsx(_components.code,{children:`generate`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`generate`}),`: como o segredo é gerado, `,_jsx(_components.code,{children:`random:\u003cn>`}),` ou `,_jsx(_components.code,{children:`uuid`}),`.`]}),`\n`]}),_jsxs(_components.p,{children:[`Leia antes as sugestões com `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/templates/draft`,children:`Revisar rascunho do template`}),`.`]})]}),_jsx(ResponseField,{name:`paths`,type:`string[]`,id:`param-paths`,children:_jsxs(_components.p,{children:[`Os caminhos de `,_jsx(_components.code,{children:`/app`}),` do app que entram no template, para apps com código. Sem ele, entra tudo, exceto o que o rascunho deixa sem selecionar. Arquivos `,_jsx(_components.code,{children:`.env*`}),`, a pasta da plataforma e as pastas de dependências nunca podem ser incluídos.`]})}),_jsx(ResponseField,{name:`ram`,type:`object`,id:`param-ram`,children:_jsxs(_components.p,{children:[`A memória do serviço em MB: `,_jsx(_components.code,{children:`min`}),`, `,_jsx(_components.code,{children:`recommended`}),` e `,_jsx(_components.code,{children:`max`}),` opcional.`]})})]})]}),`\n`,_jsx(ParamField,{body:`workspace_id`,type:`string`,id:`param-workspace-id-1`,children:_jsx(_components.p,{children:`O workspace que será dono do template. Sem ele, o template é seu.`})}),`\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:`resposta`,children:`Resposta`}),`\n`,_jsxs(_components.p,{children:[`O mesmo objeto de template retornado por `,_jsx(_components.a,{href:`/pt-br/api-reference/endpoint/templates/create`,children:`Criar template privado`}),`, com `,_jsx(_components.code,{children:`201 Created`}),`. `,_jsx(_components.code,{children:`creates_stack`}),` é `,_jsx(_components.code,{children:`true`}),` e `,_jsx(_components.code,{children:`services`}),` tem uma entrada por membro.`]}),`\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:`respostas-de-erro`,children:`Respostas de erro`}),`\n`,_jsxs(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:[_jsx(_components.p,{children:`O código de erro que indica o motivo da falha. Valores possíveis:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`API_KEY_SCOPE_DENIED`}),`: A chave de API não tem o escopo `,_jsx(_components.code,{children:`templates:write`}),` (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`STACK_NOT_FOUND`}),`: A stack não existe ou não é sua.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`APP_NOT_FOUND`}),`: Um app membro não existe.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SAVE_NOT_ALLOWED`}),`: Um app membro veio de um link de compartilhamento, ou executa uma imagem da plataforma (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_CLOSED`}),`: Um membro vem de um template fechado (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_MANIFEST_INVALID`}),`: O resultado não é um manifesto válido; `,_jsx(_components.code,{children:`details.issues`}),` lista os achados.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SECRET_IN_SOURCE`}),`: Um arquivo selecionado tem um segredo; `,_jsx(_components.code,{children:`details.files`}),` lista os caminhos (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SLUG_TAKEN`}),`: O slug já está em uso entre os seus templates ou é reservado.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_PRIVATE_LIMIT_REACHED`}),`: A conta já tem 5 templates privados.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES`}),`: O plano não pode criar templates.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`WORKSPACE_OWNER_ONLY`}),`: Só o dono do workspace salva templates nele.`]}),`\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":"Salvar uma stack como template","sidebarTitle":"Criar a partir de stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","authMethod":"bearer","description":"Salva uma das suas stacks como template privado, com um serviço por membro, escolhendo variáveis e arquivos de cada app.","href":"/pt-br/api-reference/endpoint/templates/create-from-stack"}}}},"mdxExtracts":{"tableOfContents":[{"title":"Resposta","slug":"resposta","depth":3,"children":[]},{"title":"Respostas de erro","slug":"respostas-de-erro","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":"Salvar uma stack como template","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":"Se a stack pertencer a um workspace, o ID do workspace."}]}},"header":{},"cookie":{},"path":{"stack_id":{"schema":[{"type":"string","description":"O ID da stack.","required":true}]}}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"id":[{"type":"string","description":"O slug do template, com letras minúsculas, números e hífens.","required":true}],"name":[{"type":"object","properties":{},"description":"O nome por idioma: `pt-br` (obrigatório), `en` e `es` , de até 50 caracteres cada.","required":true}],"description":[{"type":"object","properties":{},"description":"A descrição por idioma, no mesmo formato de `name` , de até 128 caracteres cada.","required":true}],"category":[{"type":"string","description":"`automation` , `ai-agents` , `bots` , `apis` , `cms` , `monitoring` , `starters` , `databases` ou `other` .","required":true}],"tags":[{"type":"array","items":[{"type":"string"}],"description":"Até 10 tags."}],"version":[{"type":"string","description":"A primeira versão, como versão semântica. Padrão `1.0.0` ."}],"permissions":[{"type":"object","properties":{},"description":"O que os usuários do template podem fazer, como nas permissões do manifesto."}],"members":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"O que salvar de cada membro da stack, um app ou um banco de dados.","required":true}],"workspace_id":[{"type":"string","description":"O workspace que será dono do template. Sem ele, o template é seu."}]}}],"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":"O código de erro que indica o motivo da falha. Valores possíveis: `API_KEY_SCOPE_DENIED` : A chave de API não tem o escopo `templates:write` ( `403` ). `STACK_NOT_FOUND` : A stack não existe ou não é sua. `APP_NOT_FOUND` : Um app membro não existe. `TEMPLATE_SAVE_NOT_ALLOWED` : Um app membro veio de um link de compartilhamento, ou executa uma imagem da plataforma ( `403` ). `TEMPLATE_CLOSED` : Um membro vem de um template fechado ( `403` ). `TEMPLATE_MANIFEST_INVALID` : O resultado não é um manifesto válido; `details.issues` lista os achados. `TEMPLATE_SECRET_IN_SOURCE` : Um arquivo selecionado tem um segredo; `details.files` lista os caminhos ( `400` ). `TEMPLATE_SLUG_TAKEN` : O slug já está em uso entre os seus templates ou é reservado. `TEMPLATE_PRIVATE_LIMIT_REACHED` : A conta já tem 5 templates privados. `PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES` : O plano não pode criar templates. `WORKSPACE_OWNER_ONLY` : Só o dono do workspace salva templates nele."}]}}],"examples":{"example":{"value":{"code":"\u003cstring>"}}}}}},"deprecated":false}},"jsLinks":[],"subdomain":"vertracloud","siteName":"Vertra Cloud","title":"Salvar uma stack como template - Vertra Cloud","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/endpoint/templates/create-from-stack","matchLevel":1},"pt-BR":{"href":"/pt-br/api-reference/endpoint/templates/create-from-stack","matchLevel":0},"es":{"href":"/es-es","matchLevel":4}}},"lastModified":"2026-10-30T22:45:17.625Z","gitLastModified":"2026-10-28T22:06:31.000Z","originalFileLocation":"pt-br/api-reference/endpoint/templates/create-from-stack.mdx","locale":"pt-BR"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Salva uma das suas stacks como template privado, com um serviço por membro, escolhendo variáveis e arquivos de cada app.\">\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=\"Salvar uma stack como template - Vertra Cloud\">\u003cmeta data-mint-head property=\"og:description\" content=\"Salva uma das suas stacks como template privado, com um serviço por membro, escolhendo variáveis e arquivos de cada app.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Vertra Cloud Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/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=\"Salvar uma stack como template - Vertra Cloud\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Salva uma das suas stacks como template privado, com um serviço por membro, escolhendo variáveis e arquivos de cada app.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.vertracloud.app/images/og.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Vertra Cloud\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff6100\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/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=\"/pt-br/api-reference/endpoint/templates/create-from-stack.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/templates/create-from-stack\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.vertracloud.app/#organization\",\"name\":\"Vertra Cloud\",\"url\":\"https://docs.vertracloud.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/vertracloud/2O7-bfMOIoy6MCUx/logo/light.svg?fit=max\u0026auto=format\u0026n=2O7-bfMOIoy6MCUx\u0026q=85\u0026s=2fcb392041b562c0aab2f07ebef0f12e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.vertracloud.app#website\",\"name\":\"Vertra Cloud\",\"url\":\"https://docs.vertracloud.app\",\"publisher\":{\"@id\":\"https://docs.vertracloud.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/templates/create-from-stack#webpage\",\"url\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/templates/create-from-stack\",\"name\":\"Salvar uma stack como template\",\"description\":\"Salva uma das suas stacks como template privado, com um serviço por membro, escolhendo variáveis e arquivos de cada app.\",\"dateModified\":\"2026-10-28T22:06:31.000Z\",\"isPartOf\":{\"@id\":\"https://docs.vertracloud.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/templates/create-from-stack#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/templates/create-from-stack#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/users/me\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Templates\",\"item\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/templates/list\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Salvar uma stack como template\",\"item\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/templates/create-from-stack\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/templates/create-from-stack#apireference\",\"headline\":\"Salvar uma stack como template\",\"name\":\"Salvar uma stack como template\",\"description\":\"Salva uma das suas stacks como template privado, com um serviço por membro, escolhendo variáveis e arquivos de cada app.\",\"url\":\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/templates/create-from-stack\",\"mainEntityOfPage\":{\"@id\":\"https://docs.vertracloud.app/pt-br/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":"/api-reference/endpoint/templates/create-from-stack"}]},{"language":"pt-BR","navbar":{"links":[{"href":"mailto:[email protected]","label":"Suporte"}],"primary":{"type":"button","label":"Dashboard","href":"https://vertracloud.app/dashboard"}},"tabs":[{"tab":"Primeiros passos","pages":[{"title":"Primeiros passos","href":"/pt-br"}]},{"tab":"Recursos","pages":[{"title":"Recursos","href":"/pt-br/applications"}]},{"tab":"Tutoriais","pages":[{"title":"Tutoriais","href":"/pt-br/tutorials/introduction"}]},{"tab":"Guias","pages":[{"title":"Guias","href":"/pt-br/guides/custom-domain"}]},{"tab":"Ferramentas","pages":[{"title":"Ferramentas","href":"/pt-br/cli"}]},{"tab":"Blob Storage","pages":[{"title":"Blob Storage","href":"/pt-br/blob/overview"}]},{"tab":"Templates","pages":[{"title":"Templates","href":"/pt-br/templates/overview"}]},{"tab":"Referência da API","groups":[{"group":"Visão geral","icon":"book","pages":[{"title":"Referência da API pública da Vertra Cloud","sidebarTitle":"API pública","href":"/pt-br/api-reference/introduction"},{"title":"Limites e cotas da plataforma na Vertra Cloud","sidebarTitle":"Limites","href":"/pt-br/api-reference/limitations"},{"title":"Códigos de erro da API da Vertra Cloud","sidebarTitle":"Códigos de erro","href":"/pt-br/api-reference/errors"}]},{"group":"Endpoints","icon":"plug","pages":[{"group":"Usuários","icon":"user","pages":[{"title":"Informações do usuário","sidebarTitle":"Dados do usuário","api":"GET https://api.vertracloud.app/v1/users/me","href":"/pt-br/api-reference/endpoint/users/me"},{"title":"Atualizar perfil do usuário","sidebarTitle":"Atualizar perfil","api":"PATCH https://api.vertracloud.app/v1/users/me","href":"/pt-br/api-reference/endpoint/users/update-me"},{"title":"Listar todos os snapshots da conta","sidebarTitle":"Todos os snapshots","api":"GET https://api.vertracloud.app/v1/users/snapshots","href":"/pt-br/api-reference/endpoint/users/snapshots"},{"title":"Organização pessoal de recursos","sidebarTitle":"Pastas e favoritos","href":"/pt-br/api-reference/endpoint/users/resource-organization"},{"title":"Listar sessões","sidebarTitle":"Sessões","api":"GET https://api.vertracloud.app/v1/users/me/sessions","href":"/pt-br/api-reference/endpoint/users/sessions"}]},{"group":"Status","icon":"heart-pulse","pages":[{"title":"Verificar status da infraestrutura","sidebarTitle":"Verificar status","api":"GET https://api.vertracloud.app/v1/status","href":"/pt-br/api-reference/endpoint/services/status"}]},{"group":"Aplicações","icon":"rocket","pages":[{"title":"Detalhes da aplicação","sidebarTitle":"Obter aplicação","api":"GET https://api.vertracloud.app/v1/apps/{id}","href":"/pt-br/api-reference/endpoint/apps/get"},{"title":"Status da aplicação","sidebarTitle":"Obter status da aplicação","api":"GET https://api.vertracloud.app/v1/apps/{id}/status","href":"/pt-br/api-reference/endpoint/apps/status"},{"title":"Status de todas as aplicações","sidebarTitle":"Status de todas as aplicações","api":"GET https://api.vertracloud.app/v1/apps/status","href":"/pt-br/api-reference/endpoint/apps/allstatus"},{"title":"Listar runtimes","sidebarTitle":"Runtimes","api":"GET https://api.vertracloud.app/v1/apps/runtimes","href":"/pt-br/api-reference/endpoint/apps/runtimes"},{"title":"Métricas da aplicação","sidebarTitle":"Métricas da aplicação","api":"GET https://api.vertracloud.app/v1/apps/{id}/metrics","href":"/pt-br/api-reference/endpoint/apps/metrics"},{"title":"Logs da aplicação em tempo real","sidebarTitle":"Logs em tempo real","api":"GET https://api.vertracloud.app/v1/apps/{id}/realtime","href":"/pt-br/api-reference/endpoint/apps/realtime"},{"title":"Baixar aplicação","sidebarTitle":"Baixar aplicação","api":"GET https://api.vertracloud.app/v1/apps/{id}/download","href":"/pt-br/api-reference/endpoint/apps/download"},{"title":"Logs da aplicação","sidebarTitle":"Logs da aplicação","api":"GET https://api.vertracloud.app/v1/apps/{id}/logs","href":"/pt-br/api-reference/endpoint/apps/logs"},{"title":"Criar aplicação","sidebarTitle":"Criar aplicação","api":"POST https://api.vertracloud.app/v1/apps","href":"/pt-br/api-reference/endpoint/apps/create"},{"title":"Criar aplicação a partir de imagem","sidebarTitle":"Criar a partir de imagem","api":"POST https://api.vertracloud.app/v1/apps/image","href":"/pt-br/api-reference/endpoint/apps/create-from-image"},{"title":"Iniciar aplicação","sidebarTitle":"Iniciar aplicação","api":"POST https://api.vertracloud.app/v1/apps/{id}/start","href":"/pt-br/api-reference/endpoint/apps/start"},{"title":"Reiniciar aplicação","sidebarTitle":"Reiniciar aplicação","api":"POST https://api.vertracloud.app/v1/apps/{id}/restart","href":"/pt-br/api-reference/endpoint/apps/restart"},{"title":"Parar aplicação","sidebarTitle":"Parar aplicação","api":"POST https://api.vertracloud.app/v1/apps/{id}/stop","href":"/pt-br/api-reference/endpoint/apps/stop"},{"title":"Atualizar configuração da aplicação","sidebarTitle":"Atualizar configuração","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/config","href":"/pt-br/api-reference/endpoint/apps/updateconfig"},{"title":"Excluir aplicação","sidebarTitle":"Excluir aplicação","api":"DELETE https://api.vertracloud.app/v1/apps/{id}","href":"/pt-br/api-reference/endpoint/apps/delete"},{"group":"Rede","icon":"globe","pages":[{"title":"Publicar aplicação na web","sidebarTitle":"Publicar / Despublicar","api":"POST https://api.vertracloud.app/v1/apps/{id}/network/publish","href":"/pt-br/api-reference/endpoint/apps/network/publish"},{"title":"Alterar subdomínio da aplicação","sidebarTitle":"Alterar subdomínio","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/network/subdomain","href":"/pt-br/api-reference/endpoint/apps/network/subdomain"},{"title":"Limpar cache","sidebarTitle":"Limpar cache","api":"POST https://api.vertracloud.app/v1/apps/{id}/network/purge-cache","href":"/pt-br/api-reference/endpoint/apps/network/purgecache"}]},{"group":"Domínios","icon":"link","pages":[{"title":"Listar domínios da aplicação","sidebarTitle":"Listar domínios","api":"GET https://api.vertracloud.app/v1/apps/{id}/domains","href":"/pt-br/api-reference/endpoint/apps/domains/list"},{"title":"Adicionar domínio à aplicação","sidebarTitle":"Adicionar domínio","api":"POST https://api.vertracloud.app/v1/apps/{id}/domains","href":"/pt-br/api-reference/endpoint/apps/domains/create"},{"title":"Atualizar domínio da aplicação","sidebarTitle":"Atualizar domínio","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}","href":"/pt-br/api-reference/endpoint/apps/domains/update"},{"title":"Remover domínio da aplicação","sidebarTitle":"Remover domínio","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}","href":"/pt-br/api-reference/endpoint/apps/domains/delete"},{"title":"Registros DNS do domínio","sidebarTitle":"Registros DNS do domínio","api":"GET https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}/dns","href":"/pt-br/api-reference/endpoint/apps/domains/dns"},{"title":"Configurar domínio automaticamente","sidebarTitle":"Configurar automaticamente","api":"POST https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}/connect","href":"/pt-br/api-reference/endpoint/apps/domains/connect"}]},{"group":"Gerenciador de arquivos","icon":"folder-open","pages":[{"title":"Obter conteúdo de arquivo da aplicação","sidebarTitle":"Obter conteúdo do arquivo","api":"GET https://api.vertracloud.app/v1/apps/{id}/files/content","href":"/pt-br/api-reference/endpoint/apps/filemanager/content"},{"title":"Obter arquivos da aplicação","sidebarTitle":"Obter arquivos","api":"GET https://api.vertracloud.app/v1/apps/{id}/files","href":"/pt-br/api-reference/endpoint/apps/filemanager/files"},{"title":"Obter árvore de arquivos da aplicação","sidebarTitle":"Obter árvore de arquivos","api":"GET https://api.vertracloud.app/v1/apps/{id}/files/tree","href":"/pt-br/api-reference/endpoint/apps/filemanager/tree"},{"title":"Enviar arquivos para a aplicação","sidebarTitle":"Enviar arquivos","api":"POST https://api.vertracloud.app/v1/apps/{id}/files/upload","href":"/pt-br/api-reference/endpoint/apps/filemanager/upload"},{"title":"Excluir arquivo ou pasta da aplicação","sidebarTitle":"Excluir arquivo ou pasta","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/files","href":"/pt-br/api-reference/endpoint/apps/filemanager/delete"},{"title":"Mover arquivo ou pasta da aplicação","sidebarTitle":"Mover arquivo ou pasta","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/files","href":"/pt-br/api-reference/endpoint/apps/filemanager/move"},{"title":"Criar ou atualizar arquivo ou pasta da aplicação","sidebarTitle":"Criar/atualizar arquivo ou pasta","api":"PUT https://api.vertracloud.app/v1/apps/{id}/files","href":"/pt-br/api-reference/endpoint/apps/filemanager/save"}]},{"group":"Variáveis de ambiente","icon":"key","pages":[{"title":"Obter variáveis de ambiente da aplicação","sidebarTitle":"Obter variáveis de ambiente","api":"GET https://api.vertracloud.app/v1/apps/{id}/envs","href":"/pt-br/api-reference/endpoint/apps/enviroments/get"},{"title":"Excluir uma variável de ambiente da aplicação","sidebarTitle":"Excluir variável de ambiente","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/envs/{envId}","href":"/pt-br/api-reference/endpoint/apps/enviroments/delete"},{"title":"Criar ou editar variáveis de ambiente da aplicação","sidebarTitle":"Criar/editar variáveis de ambiente","api":"POST https://api.vertracloud.app/v1/apps/{id}/envs","href":"/pt-br/api-reference/endpoint/apps/enviroments/createOrEdit"}]},{"group":"Snapshots","icon":"camera","pages":[{"title":"Obter snapshots da aplicação","sidebarTitle":"Obter snapshots","api":"GET https://api.vertracloud.app/v1/users/{id}/snapshots","href":"/pt-br/api-reference/endpoint/apps/snapshots/getall"},{"title":"Criar snapshot da aplicação","sidebarTitle":"Criar snapshot","api":"POST https://api.vertracloud.app/v1/users/{id}/snapshots","href":"/pt-br/api-reference/endpoint/apps/snapshots/create"},{"title":"Restaurar snapshot da aplicação","sidebarTitle":"Restaurar snapshot","api":"POST https://api.vertracloud.app/v1/users/{id}/snapshots/{snapshot_id}/restore","href":"/pt-br/api-reference/endpoint/apps/snapshots/restore"},{"title":"Baixar snapshot da aplicação","sidebarTitle":"Baixar snapshot","api":"GET https://api.vertracloud.app/v1/users/{id}/snapshots/{snapshot_id}/download","href":"/pt-br/api-reference/endpoint/apps/snapshots/download"}]},{"group":"Deploys","icon":"code-branch","pages":[{"title":"Obter URL do webhook de deploy","sidebarTitle":"URL do webhook","api":"GET https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/pt-br/api-reference/endpoint/apps/deploys/webhookurl"},{"title":"Obter deploys recentes","sidebarTitle":"Deploys recentes","api":"GET https://api.vertracloud.app/v1/apps/{app_id}/deploys","href":"/pt-br/api-reference/endpoint/apps/deploys/recents"},{"title":"Excluir webhook de deploy","sidebarTitle":"Excluir webhook","api":"DELETE https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/pt-br/api-reference/endpoint/apps/deploys/delete"},{"title":"Criar webhook de deploy","sidebarTitle":"Criar webhook","api":"POST https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/pt-br/api-reference/endpoint/apps/deploys/create"}]},{"group":"Releases","icon":"clock-rotate-left","pages":[{"title":"Listar releases da aplicação","sidebarTitle":"Listar releases","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases","href":"/pt-br/api-reference/endpoint/apps/releases/list"},{"title":"Obter log da release da aplicação","sidebarTitle":"Obter log da release","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/log","href":"/pt-br/api-reference/endpoint/apps/releases/log"},{"title":"Pré-visualizar rollback da aplicação","sidebarTitle":"Pré-visualizar rollback","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","href":"/pt-br/api-reference/endpoint/apps/releases/rollback-preview"},{"title":"Fazer rollback da aplicação para uma release","sidebarTitle":"Fazer rollback","api":"POST https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","href":"/pt-br/api-reference/endpoint/apps/releases/rollback"}]}]},{"group":"Imagens Docker","icon":"docker","pages":[{"title":"Listar imagens","sidebarTitle":"Listar imagens","api":"GET https://api.vertracloud.app/v1/images","href":"/pt-br/api-reference/endpoint/images/list"},{"title":"Obter imagem","sidebarTitle":"Obter imagem","api":"GET https://api.vertracloud.app/v1/images/{image_id}","href":"/pt-br/api-reference/endpoint/images/get"},{"title":"Verificar Dockerfile","sidebarTitle":"Verificar Dockerfile","api":"POST https://api.vertracloud.app/v1/images/check","href":"/pt-br/api-reference/endpoint/images/check"},{"title":"Criar imagem","sidebarTitle":"Criar imagem","api":"POST https://api.vertracloud.app/v1/images","href":"/pt-br/api-reference/endpoint/images/create"},{"title":"Atualizar imagem","sidebarTitle":"Atualizar imagem","api":"PATCH https://api.vertracloud.app/v1/images/{image_id}","href":"/pt-br/api-reference/endpoint/images/update"},{"title":"Reconstruir imagem","sidebarTitle":"Reconstruir imagem","api":"PUT https://api.vertracloud.app/v1/images/{image_id}","href":"/pt-br/api-reference/endpoint/images/rebuild"},{"title":"Listar versões da imagem","sidebarTitle":"Listar versões","api":"GET https://api.vertracloud.app/v1/images/{image_id}/versions","href":"/pt-br/api-reference/endpoint/images/versions"},{"title":"Logs de build da imagem","sidebarTitle":"Logs de build","api":"GET https://api.vertracloud.app/v1/images/{image_id}/logs","href":"/pt-br/api-reference/endpoint/images/logs"},{"title":"Baixar o contexto da imagem","sidebarTitle":"Baixar contexto","api":"GET https://api.vertracloud.app/v1/images/{image_id}/context","href":"/pt-br/api-reference/endpoint/images/context"},{"title":"Vincular imagem ao GitHub","sidebarTitle":"Vincular GitHub","api":"PUT https://api.vertracloud.app/v1/images/{image_id}/github","href":"/pt-br/api-reference/endpoint/images/github-link"},{"title":"Desvincular imagem do GitHub","sidebarTitle":"Desvincular GitHub","api":"DELETE https://api.vertracloud.app/v1/images/{image_id}/github","href":"/pt-br/api-reference/endpoint/images/github-unlink"},{"title":"Excluir imagem","sidebarTitle":"Excluir imagem","api":"DELETE https://api.vertracloud.app/v1/images/{image_id}","href":"/pt-br/api-reference/endpoint/images/delete"}]},{"group":"Templates","icon":"shapes","pages":[{"title":"Listar templates","sidebarTitle":"Listar templates","api":"GET https://api.vertracloud.app/v1/templates","href":"/pt-br/api-reference/endpoint/templates/list"},{"title":"Listar categorias de templates","sidebarTitle":"Listar categorias","api":"GET https://api.vertracloud.app/v1/templates/categories","href":"/pt-br/api-reference/endpoint/templates/categories"},{"title":"Obter template","sidebarTitle":"Obter template","api":"GET https://api.vertracloud.app/v1/templates/{template_id}","href":"/pt-br/api-reference/endpoint/templates/get"},{"title":"Listar versões do template","sidebarTitle":"Listar versões","api":"GET https://api.vertracloud.app/v1/templates/{template_id}/versions","href":"/pt-br/api-reference/endpoint/templates/versions"},{"title":"Validar manifesto de template","sidebarTitle":"Validar manifesto","api":"POST https://api.vertracloud.app/v1/templates/validate","href":"/pt-br/api-reference/endpoint/templates/validate"},{"title":"Fazer deploy de template","sidebarTitle":"Fazer deploy de template","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/deploy","href":"/pt-br/api-reference/endpoint/templates/deploy"},{"title":"Obter job de deploy de template","sidebarTitle":"Obter job de deploy","api":"GET https://api.vertracloud.app/v1/template-deploys/{deploy_id}","href":"/pt-br/api-reference/endpoint/templates/deploy-status"},{"title":"Transmitir os eventos de deploy de template","sidebarTitle":"Eventos de deploy","api":"GET https://api.vertracloud.app/v1/template-deploys/{deploy_id}/events","href":"/pt-br/api-reference/endpoint/templates/deploy-events"},{"title":"Obter informações de atualização do template","sidebarTitle":"Informações de atualização","api":"GET https://api.vertracloud.app/v1/apps/{id}/template/update","href":"/pt-br/api-reference/endpoint/templates/update-info"},{"title":"Atualizar um template ou mover uma aplicação para a versão mais recente","sidebarTitle":"Atualizar template","api":"POST https://api.vertracloud.app/v1/apps/{id}/template/update","href":"/pt-br/api-reference/endpoint/templates/update"},{"title":"Criar um template privado","sidebarTitle":"Criar template","api":"POST https://api.vertracloud.app/v1/templates","href":"/pt-br/api-reference/endpoint/templates/create"},{"title":"Salvar um app como template","sidebarTitle":"Criar a partir de app","api":"POST https://api.vertracloud.app/v1/templates/from-app/{app_id}","description":"Salva um dos seus apps como template privado, escolhendo quais variáveis viram perguntas e quais arquivos entram.","href":"/pt-br/api-reference/endpoint/templates/create-from-app"},{"title":"Salvar uma stack como template","sidebarTitle":"Criar a partir de stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","href":"/pt-br/api-reference/endpoint/templates/create-from-stack"},{"title":"Revisar o rascunho de um template a partir de uma aplicação ou stack","sidebarTitle":"Revisar rascunho","api":"GET https://api.vertracloud.app/v1/templates/from-app/{app_id}/draft","description":"Lista as variáveis e os arquivos que a plataforma sugere ao salvar uma aplicação ou stack como template, sem nunca incluir valores.","href":"/pt-br/api-reference/endpoint/templates/draft"},{"title":"Publicar uma nova versão de um template privado","sidebarTitle":"Nova versão","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/versions","href":"/pt-br/api-reference/endpoint/templates/new-version"},{"title":"Excluir um template privado","sidebarTitle":"Excluir template","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}","href":"/pt-br/api-reference/endpoint/templates/delete"},{"title":"Vincular um template privado ao GitHub","sidebarTitle":"Vincular GitHub","api":"PUT https://api.vertracloud.app/v1/templates/{template_id}/github","href":"/pt-br/api-reference/endpoint/templates/github-link"},{"title":"Desvincular um template privado do GitHub","sidebarTitle":"Desvincular GitHub","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}/github","href":"/pt-br/api-reference/endpoint/templates/github-unlink"},{"title":"Desvincular uma aplicação ou stack de um template","sidebarTitle":"Desvincular","api":"POST https://api.vertracloud.app/v1/apps/{id}/template/detach","href":"/pt-br/api-reference/endpoint/templates/detach"},{"group":"Links de compartilhamento","icon":"share-nodes","pages":[{"title":"Visualizar um link de compartilhamento de template","sidebarTitle":"Visualizar link","api":"GET https://api.vertracloud.app/v1/share/templates/{token}","href":"/pt-br/api-reference/endpoint/templates/share-links/preview"},{"title":"Fazer deploy a partir de um link de uso","sidebarTitle":"Usar link","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/deploy","href":"/pt-br/api-reference/endpoint/templates/share-links/deploy"},{"title":"Copiar um template a partir de um link de cópia completa","sidebarTitle":"Copiar pelo link","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/copy","href":"/pt-br/api-reference/endpoint/templates/share-links/copy"},{"title":"Denunciar um template","sidebarTitle":"Denunciar template","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/report","href":"/pt-br/api-reference/endpoint/templates/share-links/report"},{"title":"Criar um link de compartilhamento para um template","sidebarTitle":"Criar link","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/share-links","href":"/pt-br/api-reference/endpoint/templates/share-links/create"},{"title":"Listar os links de compartilhamento de um template","sidebarTitle":"Listar links","api":"GET https://api.vertracloud.app/v1/templates/{template_id}/share-links","href":"/pt-br/api-reference/endpoint/templates/share-links/list"},{"title":"Revogar um link de compartilhamento","sidebarTitle":"Revogar link","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}/share-links/{link_id}","href":"/pt-br/api-reference/endpoint/templates/share-links/revoke"}]}]},{"group":"Stacks","icon":"layer-group","pages":[{"title":"Listar stacks","sidebarTitle":"Listar stacks","api":"GET https://api.vertracloud.app/v1/stacks","href":"/pt-br/api-reference/endpoint/stacks/list"},{"title":"Obter stack","sidebarTitle":"Obter stack","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/pt-br/api-reference/endpoint/stacks/get"},{"title":"Criar stack","sidebarTitle":"Criar stack","api":"POST https://api.vertracloud.app/v1/stacks","href":"/pt-br/api-reference/endpoint/stacks/create"},{"title":"Atualizar stack","sidebarTitle":"Atualizar stack","api":"PATCH https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/pt-br/api-reference/endpoint/stacks/update"},{"title":"Excluir stack","sidebarTitle":"Excluir stack","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/pt-br/api-reference/endpoint/stacks/delete"},{"title":"Transformar pasta em stack","sidebarTitle":"Transformar em stack","api":"POST https://api.vertracloud.app/v1/stacks/transform","href":"/pt-br/api-reference/endpoint/stacks/transform"},{"title":"Obter código de conexão da stack","sidebarTitle":"Código de conexão","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/connection","href":"/pt-br/api-reference/endpoint/stacks/connection"},{"title":"Definir modo de rede da stack","sidebarTitle":"Modo de rede","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/network-mode","href":"/pt-br/api-reference/endpoint/stacks/network-mode"},{"group":"Membros","icon":"user-group","pages":[{"title":"Adicionar membro à stack","sidebarTitle":"Adicionar membro","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/members","href":"/pt-br/api-reference/endpoint/stacks/members/add"},{"title":"Remover membro da stack","sidebarTitle":"Remover membro","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}/members/{resource_type}/{resource_id}","href":"/pt-br/api-reference/endpoint/stacks/members/remove"}]},{"group":"Conexões","icon":"arrows-left-right","pages":[{"title":"Criar conexão da stack","sidebarTitle":"Criar conexão","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/bindings","href":"/pt-br/api-reference/endpoint/stacks/bindings/create"},{"title":"Excluir conexão da stack","sidebarTitle":"Excluir conexão","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}/bindings/{binding_id}","href":"/pt-br/api-reference/endpoint/stacks/bindings/delete"},{"title":"Listar conexões da stack","sidebarTitle":"Listar conexões","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/bindings","href":"/pt-br/api-reference/endpoint/stacks/bindings/list"},{"title":"Atualizar conexão da stack","sidebarTitle":"Atualizar conexão","api":"PATCH https://api.vertracloud.app/v1/stacks/{stack_id}/bindings/{binding_id}","href":"/pt-br/api-reference/endpoint/stacks/bindings/update"}]},{"group":"Bancos de dados","icon":"database","pages":[{"title":"Adicionar banco de dados à stack","sidebarTitle":"Adicionar banco de dados","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/databases","href":"/pt-br/api-reference/endpoint/stacks/databases/create"}]},{"group":"Blob","icon":"box-archive","pages":[{"title":"Adicionar pasta do Blob à stack","sidebarTitle":"Adicionar pasta do Blob","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/blob","href":"/pt-br/api-reference/endpoint/stacks/blob/create"}]},{"group":"Snapshots","icon":"camera","pages":[{"title":"Criar snapshot da stack","sidebarTitle":"Criar snapshot","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots","href":"/pt-br/api-reference/endpoint/stacks/snapshots/create"},{"title":"Listar snapshots da stack","sidebarTitle":"Listar snapshots","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots","href":"/pt-br/api-reference/endpoint/stacks/snapshots/list"},{"title":"Restaurar snapshot da stack","sidebarTitle":"Restaurar snapshot","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore","href":"/pt-br/api-reference/endpoint/stacks/snapshots/restore"}]}]},{"group":"Bancos de dados","icon":"database","pages":[{"title":"Criar banco de dados","sidebarTitle":"Criar banco de dados","api":"POST https://api.vertracloud.app/v1/databases","href":"/pt-br/api-reference/endpoint/databases/create"},{"title":"Obter banco de dados pelo ID","sidebarTitle":"Obter banco de dados","api":"GET https://api.vertracloud.app/v1/databases/{id}","href":"/pt-br/api-reference/endpoint/databases/get"},{"title":"Listar versões de banco de dados","sidebarTitle":"Versões","api":"GET https://api.vertracloud.app/v1/databases/versions","href":"/pt-br/api-reference/endpoint/databases/versions"},{"title":"Obter status do banco de dados pelo ID","sidebarTitle":"Obter status","api":"GET https://api.vertracloud.app/v1/databases/{id}/status","href":"/pt-br/api-reference/endpoint/databases/status"},{"title":"Obter o status de todos os bancos de dados","sidebarTitle":"Status de todos os bancos","api":"GET https://api.vertracloud.app/v1/databases/status","href":"/pt-br/api-reference/endpoint/databases/allstatus"},{"title":"Obter métricas do banco de dados pelo ID","sidebarTitle":"Obter métricas","api":"GET https://api.vertracloud.app/v1/databases/{id}/metrics","href":"/pt-br/api-reference/endpoint/databases/metrics"},{"title":"Redefinir banco de dados","sidebarTitle":"Redefinir banco de dados","api":"POST https://api.vertracloud.app/v1/databases/{id}/reset","href":"/pt-br/api-reference/endpoint/databases/reset"},{"title":"Iniciar banco de dados","sidebarTitle":"Iniciar banco de dados","api":"POST https://api.vertracloud.app/v1/databases/{id}/start","href":"/pt-br/api-reference/endpoint/databases/start"},{"title":"Parar banco de dados","sidebarTitle":"Parar banco de dados","api":"POST https://api.vertracloud.app/v1/databases/{id}/stop","href":"/pt-br/api-reference/endpoint/databases/stop"},{"title":"Atualizar banco de dados","sidebarTitle":"Atualizar banco de dados","api":"PUT https://api.vertracloud.app/v1/databases/{id}","href":"/pt-br/api-reference/endpoint/databases/update"},{"title":"Excluir banco de dados","sidebarTitle":"Excluir banco de dados","api":"DELETE https://api.vertracloud.app/v1/databases/{id}","href":"/pt-br/api-reference/endpoint/databases/delete"},{"group":"Credenciais","icon":"lock","pages":[{"title":"Obter certificado do banco de dados","sidebarTitle":"Obter certificado","api":"GET https://api.vertracloud.app/v1/databases/{id}/credentials/certificate","href":"/pt-br/api-reference/endpoint/databases/credentials/get"},{"title":"Redefinir certificados do banco de dados","sidebarTitle":"Redefinir certificados","api":"POST https://api.vertracloud.app/v1/databases/{id}/credentials/certificate/reset","href":"/pt-br/api-reference/endpoint/databases/credentials/reset"},{"title":"Redefinir a senha do banco de dados","sidebarTitle":"Redefinir senha","api":"POST https://api.vertracloud.app/v1/databases/{id}/credentials/reset","href":"/pt-br/api-reference/endpoint/databases/credentials/resetpassword"}]}]},{"group":"Workspaces","icon":"users","pages":[{"title":"Listar workspaces","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces","href":"/pt-br/api-reference/endpoint/workspaces/get-all"},{"title":"Obter workspace","sidebarTitle":"Obter","api":"GET https://api.vertracloud.app/v1/workspaces/{id}","href":"/pt-br/api-reference/endpoint/workspaces/get"},{"title":"Criar workspace","sidebarTitle":"Criar","api":"POST https://api.vertracloud.app/v1/workspaces","href":"/pt-br/api-reference/endpoint/workspaces/create"},{"title":"Atualizar workspace","sidebarTitle":"Atualizar","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}","href":"/pt-br/api-reference/endpoint/workspaces/update"},{"title":"Apagar workspace","sidebarTitle":"Apagar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}","href":"/pt-br/api-reference/endpoint/workspaces/delete"},{"group":"Membros","icon":"user-group","pages":[{"title":"Listar membros","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/members","href":"/pt-br/api-reference/endpoint/workspaces/members/list"},{"title":"Atualizar membro","sidebarTitle":"Atualizar","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}/members/{user_id}","href":"/pt-br/api-reference/endpoint/workspaces/members/update"},{"title":"Remover membro","sidebarTitle":"Remover","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/members/{user_id}","href":"/pt-br/api-reference/endpoint/workspaces/members/remove"}]},{"group":"Cargos","icon":"id-badge","pages":[{"title":"Listar papéis","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/roles","href":"/pt-br/api-reference/endpoint/workspaces/roles/list"},{"title":"Criar papel","sidebarTitle":"Criar","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/roles","href":"/pt-br/api-reference/endpoint/workspaces/roles/create"},{"title":"Atualizar papel","sidebarTitle":"Atualizar","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}/roles/{role_id}","href":"/pt-br/api-reference/endpoint/workspaces/roles/update"},{"title":"Apagar papel","sidebarTitle":"Apagar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/roles/{role_id}","href":"/pt-br/api-reference/endpoint/workspaces/roles/delete"}]},{"group":"Convites","icon":"envelope","pages":[{"title":"Listar convites","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/invites","href":"/pt-br/api-reference/endpoint/workspaces/invites/list"},{"title":"Revogar convite","sidebarTitle":"Revogar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/invites/{invite_id}","href":"/pt-br/api-reference/endpoint/workspaces/invites/revoke"},{"title":"Visualizar convite","sidebarTitle":"Visualizar","api":"GET https://api.vertracloud.app/v1/workspaces/invites/{token}","href":"/pt-br/api-reference/endpoint/workspaces/invites/preview"},{"title":"Aceitar convite","sidebarTitle":"Aceitar","api":"POST https://api.vertracloud.app/v1/workspaces/invites/{token}/accept","href":"/pt-br/api-reference/endpoint/workspaces/invites/accept"},{"title":"Recusar convite","sidebarTitle":"Recusar","api":"POST https://api.vertracloud.app/v1/workspaces/invites/{token}/decline","href":"/pt-br/api-reference/endpoint/workspaces/invites/decline"}]},{"group":"Aplicações e bancos","icon":"window-maximize","pages":[{"title":"Vincular aplicação","sidebarTitle":"Vincular app","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/apps/{app_id}","href":"/pt-br/api-reference/endpoint/workspaces/links/add-app"},{"title":"Desvincular aplicação","sidebarTitle":"Desvincular app","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/apps/{app_id}","href":"/pt-br/api-reference/endpoint/workspaces/links/remove-app"},{"title":"Vincular banco de dados","sidebarTitle":"Vincular banco de dados","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/databases/{db_id}","href":"/pt-br/api-reference/endpoint/workspaces/links/add-database"},{"title":"Desvincular banco de dados","sidebarTitle":"Desvincular banco de dados","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/databases/{db_id}","href":"/pt-br/api-reference/endpoint/workspaces/links/remove-database"},{"title":"Vincular template ou stack","sidebarTitle":"Vincular template ou stack","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}","href":"/pt-br/api-reference/endpoint/workspaces/links/add-template"},{"title":"Desvincular template ou stack","sidebarTitle":"Desvincular template ou stack","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}","href":"/pt-br/api-reference/endpoint/workspaces/links/remove-template"}]},{"group":"Organização de recursos","icon":"folder-tree","pages":[{"title":"Organização de recursos do workspace","sidebarTitle":"Pastas e favoritos","href":"/pt-br/api-reference/endpoint/workspaces/resource-organization"}]},{"group":"Solicitações de ação","icon":"square-check","pages":[{"title":"Listar solicitações de ação","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/action-requests","href":"/pt-br/api-reference/endpoint/workspaces/action-requests/list"},{"title":"Criar solicitação de ação","sidebarTitle":"Criar","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/action-requests","href":"/pt-br/api-reference/endpoint/workspaces/action-requests/create"}]}]},{"group":"Cobrança","icon":"credit-card","pages":[{"title":"Listar pedidos","sidebarTitle":"Listar pedidos","api":"GET https://api.vertracloud.app/v1/orders","href":"/pt-br/api-reference/endpoint/billing/list-orders"},{"title":"Obter status do pedido","sidebarTitle":"Status do pedido","api":"GET https://api.vertracloud.app/v1/orders/{orderId}/status","href":"/pt-br/api-reference/endpoint/billing/order-status"},{"title":"Criar pedido","sidebarTitle":"Criar pedido","api":"POST https://api.vertracloud.app/v1/orders","href":"/pt-br/api-reference/endpoint/billing/create-order"},{"title":"Iniciar pagamento via PIX","sidebarTitle":"Iniciar PIX","api":"POST https://api.vertracloud.app/v1/orders/{orderId}/initiate/pix","href":"/pt-br/api-reference/endpoint/billing/initiate-pix"},{"title":"Obter dados de cobrança","sidebarTitle":"Obter dados de cobrança","api":"GET https://api.vertracloud.app/v1/users/me/billing","href":"/pt-br/api-reference/endpoint/billing/get-billing-details"},{"title":"Atualizar dados de cobrança","sidebarTitle":"Atualizar dados de cobrança","api":"PUT https://api.vertracloud.app/v1/users/me/billing","href":"/pt-br/api-reference/endpoint/billing/update-billing-details"}]},{"group":"Resgate","icon":"ticket","pages":[{"title":"Resgatar código","sidebarTitle":"Resgatar código","api":"POST https://api.vertracloud.app/v1/redeem/{code}","href":"/pt-br/api-reference/endpoint/redeem/redeem"}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/pt-br/changelog"}]}],"global":{"anchors":[{"anchor":"Documentação","icon":"book-open-cover","href":"https://docs.vertracloud.app/pt-br"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/vertracloud"},{"anchor":"Status","icon":"heart-pulse","href":"https://status.vertracloud.app"}]}},{"language":"es","navbar":{"links":[{"href":"mailto:[email protected]","label":"Soporte"}],"primary":{"type":"button","label":"Panel","href":"https://vertracloud.app/dashboard"}},"pages":[{"title":"es","href":"/es-es"}]}]},"basePath":"","title":"Salvar uma stack como template - 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"]}