> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vertracloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Desvincular una aplicación o stack de una plantilla

> Desvincula una aplicación o stack de su plantilla para que deje de recibir versiones, y la regla confirm_detach de las rutas que cambian código.

Desvincular convierte una aplicación o un stack en uno normal: sigue funcionando tal como está, pero ya no ve nuevas versiones de la plantilla y no puede actualizarse desde ella. No se puede deshacer. Esta página cubre las dos rutas de desvinculación y la regla `confirm_detach`, que desvincula una aplicación cuando cambias su código.

Hay dos rutas: `POST /v1/apps/{id}/template/detach` para una aplicación y `POST /v1/stacks/{stack_id}/template/detach` para un stack. Desvincular un stack desvincula todas sus aplicaciones de la plantilla. La llamada es idempotente. Para una aplicación que no vino de una plantilla, o para un stack armado a mano, responde `404` con `TEMPLATE_NOT_FOUND`.

Una aplicación o un stack de una [plantilla cerrada](https://docs.vertracloud.app/es-es/templates/use/closed-templates.md) no puede desvincularse: la llamada falla con `TEMPLATE_CLOSED`, con `details.action` en `detach`. Un stack con un servicio cerrado tampoco puede desvincularse.

La ruta de aplicación necesita el ámbito `apps:write`, y la ruta de stack necesita `stacks:write`, cuando se llama con una clave de API.

**id** `string` *required*

El ID de la aplicación, en la ruta de aplicación.

**stack\_id** `string` *required*

El ID del stack, en la ruta de stack.

**workspace\_id** `string`

Si la aplicación o el stack pertenece a un workspace, el ID del workspace.

```bash cURL theme={null}
curl -X POST https://api.vertracloud.app/v1/apps/app-abc123def456/template/detach \
  -H "Authorization: Bearer $VERTRA_API_KEY"
```

### Respuesta

**response** `object`

La aplicación (consulta [Obtener aplicación](https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/get.md)) o el stack. El origen del recurso está en `template`, y ahora tiene `detached: true`.

**Objeto template**

**template\_id** `string`

El ID de la plantilla.

**slug** `string`

El slug de la plantilla.

**name** `object`

El nombre de la plantilla por idioma.

**origin** `string`

`vertra`, `community` o `private`.

**version\_id** `string`

El ID de la versión desde la que se creó el recurso o a la que se actualizó por última vez.

**version** `string`

Ese número de versión.

**closed** `boolean`

`true` para una aplicación de una plantilla cerrada.

**detached** `boolean`

`true` después de esta llamada.

**update\_available** `boolean`

`true` cuando hay una versión más nueva a la que el recurso puede actualizarse.

**latest\_version** `string | null`

La última versión, o `null`.

**removed** `boolean`

`true` cuando el autor eliminó la plantilla.

**icon\_url** `string | null`

La URL estable del icono de la plantilla, o `null` cuando no hay ninguno.

**via\_share\_link** `boolean`

`true` cuando el recurso se creó desde un enlace para compartir.

```json Response theme={null}
{
  "response": {
    "id": "app-abc123def456",
    "name": "support-bot",
    "template": {
      "template_id": "tpl-abc123def456",
      "slug": "support-bot",
      "name": { "pt-br": "Bot de suporte", "en": "Support bot" },
      "origin": "private",
      "version_id": "tplv-111222333444",
      "version": "1.0.0",
      "closed": false,
      "detached": true,
      "update_available": false,
      "latest_version": null,
      "removed": false,
      "via_share_link": true
    }
  }
}
```

### Cambiar el código desvincula la aplicación

Una aplicación de una plantilla abierta (una cuyos permisos te dejan editar el código) se desvincula cuando cambias su código. Las rutas que lo hacen piden confirmación primero. Sin `confirm_detach` en `true`, la petición no cambia nada y falla con `409` y `TEMPLATE_DETACH_CONFIRMATION_REQUIRED`; con él, el cambio se hace y, cuando tiene éxito, la aplicación se desvincula. El campo se ignora en una aplicación que no vino de una plantilla.

Las rutas son las que escriben archivos (`PUT`, `PATCH` y `DELETE` en `/v1/apps/{id}/files`), la subida de archivos, el enlace de GitHub de la aplicación y el commit del contenedor a una imagen. Envía `confirm_detach` como booleano en el cuerpo JSON, como parte de texto de un cuerpo multipart, o como query `confirm_detach=true` en cualquiera de ellas.

Los `details` del error indican qué acción pidió la confirmación:

**details.action** `string`

`files.write` (cambio de archivos), `deploy.code` (subida de código), `deploy.github` (vinculación de un repositorio) o `commit` (commit del contenedor a una imagen).

```bash Confirming a file change theme={null}
curl -X PUT "https://api.vertracloud.app/v1/apps/app-abc123def456/files?confirm_detach=true" \
  -H "Authorization: Bearer $VERTRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "path": "src/index.js", "content": "..." }'
```

Una aplicación de una plantilla cerrada no pregunta: las mismas rutas se rechazan con `TEMPLATE_CLOSED`, y el código queda fuera de alcance. Lee los detalles en [Plantillas cerradas](https://docs.vertracloud.app/es-es/templates/use/closed-templates.md).

### Respuestas de error

**code** `string`

El código de error que indica el motivo del fallo. Valores posibles:

* `API_KEY_SCOPE_DENIED`: La clave de API no tiene el ámbito `apps:write` (ruta de aplicación) o `stacks:write` (ruta de stack) (`403`).
* `TEMPLATE_NOT_FOUND`: La aplicación o el stack no vino de una plantilla (`404`).
* `APP_NOT_FOUND` o `STACK_NOT_FOUND`: La aplicación o el stack no existe o no es tuyo.
* `TEMPLATE_CLOSED`: La plantilla está cerrada, así que no puede desvincularse (`403`).
* `TEMPLATE_DETACH_CONFIRMATION_REQUIRED`: Se llamó a una ruta que cambia código sin `confirm_detach` (`409`). No se cambió nada.

```json Error Response theme={null}
{
  "code": "TEMPLATE_DETACH_CONFIRMATION_REQUIRED",
  "details": { "action": "files.write" }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.