curl -X POST https://api.vertracloud.app/v1/templates/tpl-abc123def456/versions \
-H "Authorization: Bearer $VERTRA_API_KEY" \
-F 'manifest=<manifest.json' \
-F 'changelog={"pt-br":"Corrige o login","en":"Fixes login"}' \
-F 'sources[bot][email protected]'
{
"response": {
"id": "tplv-555666777888",
"version": "1.1.0",
"security": false,
"changelog": { "pt-br": "Corrige o login", "en": "Fixes login" },
"manifest": { "id": "support-bot", "version": "1.1.0", "category": "bots", "services": {} },
"created_at": "2026-10-27T15:30:00Z"
}
}
Templates
Publicar uma nova versão de um template privado
Publica uma nova versão de um template privado a partir de um manifesto atualizado e, para serviços com código, de novos arquivos ZIP.
POST
/
v1
/
templates
/
{template_id}
/
versions
curl -X POST https://api.vertracloud.app/v1/templates/tpl-abc123def456/versions \
-H "Authorization: Bearer $VERTRA_API_KEY" \
-F 'manifest=<manifest.json' \
-F 'changelog={"pt-br":"Corrige o login","en":"Fixes login"}' \
-F 'sources[bot][email protected]'
{
"response": {
"id": "tplv-555666777888",
"version": "1.1.0",
"security": false,
"changelog": { "pt-br": "Corrige o login", "en": "Fixes login" },
"manifest": { "id": "support-bot", "version": "1.1.0", "category": "bots", "services": {} },
"created_at": "2026-10-27T15:30:00Z"
}
}
Esta chamada publica uma nova versão de um template privado e responde
201 com a versão. A requisição é multipart/form-data, como em Criar um template privado. O número de versão do manifesto precisa ser maior que o atual, e o id do manifesto não pode mudar. Uma versão publicada nunca muda, e um número que já foi usado fica reservado mesmo se a versão for removida.
Precisa do escopo templates:write quando chamada com uma chave de API, e só o dono do template (em um workspace, o dono do workspace) pode publicar. Um serviço code sem uma nova parte ZIP mantém o código da versão anterior; se não tinha nenhum, a chamada falha com TEMPLATE_SOURCE_REQUIRED. Uma variável listada em env_hidden e ausente de env mantém o valor anterior; enviá-la novamente o substitui. As aplicações já criadas a partir do template não são tocadas: cada usuário atualiza quando quiser.
string
obrigatório
O ID do template.
string
obrigatório
O manifesto da nova versão, como string serializada em JSON.
file
Uma parte ZIP com o novo código de um serviço, nomeada com o ID do serviço. Opcional para um serviço que já tem código.
string
O que mudou, como objeto serializado em JSON com
pt-br (obrigatório), en e es.curl -X POST https://api.vertracloud.app/v1/templates/tpl-abc123def456/versions \
-H "Authorization: Bearer $VERTRA_API_KEY" \
-F 'manifest=<manifest.json' \
-F 'changelog={"pt-br":"Corrige o login","en":"Fixes login"}' \
-F 'sources[bot][email protected]'
Resposta
object
A nova versão.
{
"response": {
"id": "tplv-555666777888",
"version": "1.1.0",
"security": false,
"changelog": { "pt-br": "Corrige o login", "en": "Fixes login" },
"manifest": { "id": "support-bot", "version": "1.1.0", "category": "bots", "services": {} },
"created_at": "2026-10-27T15:30:00Z"
}
}
Respostas de erro
string
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 escopotemplates:write(403).TEMPLATE_NOT_FOUND: O template não existe ou não é seu (404).TEMPLATE_MANIFEST_INVALID: O manifesto não é válido, a versão não é maior que a atual, ou oidfoi alterado;details.issueslista os problemas encontrados.TEMPLATE_SOURCE_REQUIRED: Um serviçocodenão tem parte ZIP nem código de uma versão anterior.TEMPLATE_SECRET_IN_SOURCE: Um ZIP contém um segredo;details.fileslista os caminhos (400).IMAGE_NOT_FOUND: Um serviçoimageaponta para uma imagem que não é sua ou não tem build concluído com sucesso.WORKSPACE_OWNER_ONLY: Só o dono do workspace publica versões dos templates dele.
{
"code": "TEMPLATE_SOURCE_REQUIRED"
}
Última modificação em 28 de outubro de 2026