Saltar al contenido principal
POST
Mueve una aplicación o un stack a la última versión de su plantilla, como una única operación asíncrona, y responde 202 Accepted con un job de kind: "update". Hay dos rutas con el mismo body y la misma respuesta: POST /v1/apps/{id}/template/update y POST /v1/stacks/{stack_id}/template/update. El scope necesario es templates:deploy. Solo el propietario de la cuenta o del workspace puede actualizar; un miembro del workspace recibe WORKSPACE_OWNER_ONLY. Comprueba antes qué va a pasar con Obtener información de actualización de la plantilla. La actualización nunca se ejecuta por sí sola. El job toma un snapshot de seguridad, actualiza los servicios uno tras otro y, si algún paso falla, vuelve al snapshot y elimina lo que creó, de modo que todo vuelve a como estaba. Una aplicación de un stack creado a partir de una plantilla se actualiza junto con todo el stack. El job toma el mismo bloqueo de un deploy a la vez que Desplegar plantilla. Los pasos son los de Obtener job de deploy, más snapshot, y rollback cuando una actualización fallida vuelve atrás. Sigue el proceso con esa página o con el stream de eventos. Más detalles del comportamiento en Actualizaciones y rollback. Lo que cambia una actualización: la versión del código o de la imagen de los servicios, la memoria que necesitan, las nuevas variables que introdujo la plantilla y los servicios nuevos. Las variables que cambiaste, las que borraste y tus archivos propios se quedan como están. Los permisos nunca se vuelven más restrictivos. Un servicio que la nueva versión elimina sale de la plantilla, pero no se borra. Los servicios nuevos en la versión se crean con los mismos pasos de un deploy.
string
requerido
El ID de la aplicación (en la ruta /v1/apps/{id}/template/update).
string
requerido
El ID del stack (en la ruta /v1/stacks/{stack_id}/template/update).
object
Tus respuestas a las preguntas obligatorias que añade la nueva versión (new_inputs en Obtener información de actualización de la plantilla), por ID de pregunta. Las preguntas de la versión anterior no se vuelven a hacer. Una respuesta inválida o que falta falla con TEMPLATE_INPUT_INVALID.
object
La nueva memoria en MB, por ID de servicio, para los servicios cuya memoria mínima subió (ram_changes). Un servicio que sube y no tiene valor aquí pasa al nuevo mínimo, nunca por debajo.
Un body vacío es válido.

Respuesta

Estado 202 con el job en el estado queued.
object
El job, con los campos descritos en Obtener job de deploy. Aquí kind es update, y stack_id o application_id apuntan al recurso que se actualiza.

Respuestas de error

string
El código de error que indica el motivo del fallo. Valores posibles:
  • VALIDATION_ERROR: El ID o el body no son válidos (400).
  • TEMPLATE_INPUT_INVALID: Una respuesta es inválida, o un valor de memoria está fuera de lo que pide la nueva versión; details.issues las lista (400).
  • TEMPLATE_RAM_INSUFFICIENT: No hay suficiente memoria libre para la nueva versión (400).
  • API_KEY_SCOPE_DENIED: La clave de API no tiene el scope templates:deploy (403).
  • WORKSPACE_OWNER_ONLY: Solo el propietario del workspace puede actualizar (403).
  • TEMPLATE_PLAN_REQUIRED: La nueva versión necesita un plan superior al tuyo; details.reason dice por qué (403).
  • TEMPLATE_IMAGE_SLOTS_EXHAUSTED: La nueva versión necesita un slot de imagen y no hay ninguno libre (403).
  • APP_NOT_FOUND, STACK_NOT_FOUND: La aplicación o el stack no existe o no es tuyo (404).
  • TEMPLATE_NOT_FOUND: La aplicación o el stack no vino de una plantilla (404).
  • TEMPLATE_UPDATE_BLOCKED: La actualización no puede seguir. details.reason es uno de no_new_version, detached, template_removed, link_revoked o app_building (409).
  • TEMPLATE_DEPLOY_IN_PROGRESS: Otro deploy o actualización de tu cuenta está en curso (409).
  • RATE_LIMIT_EXCEEDED: Demasiadas peticiones (429).
  • INTERNAL_SERVER_ERROR: Fallo inesperado (500).
Un fallo después del 202 no se devuelve aquí: el job vuelve al snapshot y termina como failed, con el código en error.code.

Editar una plantilla privada

PATCH https://api.vertracloud.app/v1/templates/{template_id} cambia los datos de una de tus plantillas privadas: el nombre, la descripción, la categoría y las etiquetas. Necesita el scope templates:write y al menos un campo. Un manifiesto nuevo no es una edición: es una versión nueva, que se crea con Crear versión de plantilla.
object
El nombre en cada idioma: pt-br, en y es (hasta 50 caracteres cada uno).
object
La descripción en cada idioma (hasta 128 caracteres cada uno).
string
Una de las categorías devueltas por Listar categorías de plantillas.
string[]
Hasta 10 etiquetas.
La respuesta es la plantilla, con la misma forma que Obtener plantilla. Una plantilla que no es tuya responde TEMPLATE_NOT_FOUND (404).
Última modificación el 28 de octubre de 2026