> ## 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.

# Listar releases de la aplicación

> Lista las versiones del código de una aplicación, de la más nueva a la más antigua, con su origen, estado, mensaje, autor y si se puede restaurar.

Devuelve el historial de releases de una aplicación: una entrada por cada versión de su código, de la más nueva a la más antigua. Cada entrada indica cómo se creó la versión, si es la que se está ejecutando ahora y si se puede restaurar.

> [!NOTE]
>
> El historial empieza con el primer envío de código hecho después de que se lanzara esta función. Las releases creadas a partir de un snapshot no aparecen en él.

**id** `string` *required*

El ID de la aplicación. Si la aplicación pertenece a un workspace, pasa su ID en el parámetro de consulta `workspace_id`.

**page** `integer` (default: 1)

Número de página, empezando en `1`.

**limit** `integer` (default: 20)

Releases por página. Máximo `50`; los valores mayores devuelven `400 VALIDATION_ERROR`.

**workspace\_id** `string`

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

Requiere el scope `apps:read` cuando se llama con una clave de API.

### Respuesta

**response** `object`

Lista paginada, de la más nueva a la más antigua.

**Mostrar objeto**

**data** `APIApplicationRelease[]`

**Mostrar objeto**

**id** `string`

El ID de la release. Pásalo al endpoint de [log de la release](https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/releases/log.md).

**app\_id** `string`

El ID de la aplicación.

**source** `string`

Cómo se creó la release: `github` (push al repositorio conectado), `cli` (la CLI de Vertra), `upload` (subida desde el panel, un SDK o una extensión), `editor` (edición hecha en el gestor de archivos), `rollback` (restaura una release anterior) o `env_change` (variables de entorno cambiadas, sin cambio de código).

**status** `string`

En qué punto de su ciclo de vida está la release: `deploying` (en build y arranque), `active` (la versión que la aplicación ejecuta ahora; solo hay una), `superseded` (reemplazada por una release más nueva), `failed` (el despliegue no arrancó), `rolled_back` (reemplazada por un rollback) o `expired` (su código ya no se conserva).

**message** `string | null`

El mensaje del commit o de la subida. `null` cuando no se indicó ninguno, y siempre `null` en las ediciones del gestor de archivos.

**author** `string`

El usuario de GitHub que hizo el push, o el nombre del usuario que subió o editó los archivos.

**github** `object | null`

El push de GitHub que produjo esta release, con `app_id`, `commit_id`, `message`, `pusher`, `branch` y `created_at`. `null` para cualquier otro origen.

**files\_changed** `integer`

Número de archivos modificados por la operación que produjo esta release.

**rollback** `object`

Información de restauración de esta release.

**Mostrar objeto**

**available** `boolean`

`true` cuando puedes hacer rollback de la aplicación a esta release. Es `false` para la release activa, para una release expirada y cuando tu plan no permite hacer rollback a ella.

**expires\_at** `string | null`

Cuándo deja de conservarse el código de esta release, contado desde el momento en que dejó de ser la release activa. `null` para la release activa y cuando no se conservó código.

**from** `string | null`

La release que esta restaura, cuando `source` es `rollback`. `null` en los demás casos.

**has\_log** `boolean`

`true` cuando se registró un log de fallo para esta release. El log todavía puede expirar; consulta el endpoint de log de la release.

**build\_duration\_ms** `integer | null`

Tiempo, en milisegundos, invertido en instalar dependencias, hacer el build y arrancar esta release. `null` cuando no se desplegó con un build, por ejemplo, archivos confirmados sin reinicio.

**first\_started\_at** `string | null`

Cuándo arrancó por primera vez la aplicación con el código de esta release. `null` mientras el código está en la carpeta de la aplicación pero la aplicación todavía no se ha reiniciado con él: los cambios solo surten efecto tras un reinicio.

**created\_at** `string`

Marca de tiempo ISO de cuándo se creó la release.

**total\_count** `integer`

Total de releases en el historial.

**page** `integer`

Página actual.

**limit** `integer`

Releases por página.

**total\_pages** `integer`

Total de páginas.

**has\_next\_page** `boolean`

**has\_previous\_page** `boolean`

```json Response theme={null}
{
  "response": {
    "data": [
      {
        "id": "3f1c2a9e-8b7d-4c21-9e0a-5d6f7a8b9c01",
        "app_id": "7a52e0d4-19b3-4f8e-b6c2-0d9e4a1f5c73",
        "source": "github",
        "status": "active",
        "message": "Fix checkout total",
        "author": "octocat",
        "github": {
          "app_id": "7a52e0d4-19b3-4f8e-b6c2-0d9e4a1f5c73",
          "commit_id": "a3f9c1e7b2d4568f0e1c9a7b3d5f2e8c4a6b1d90",
          "message": "Fix checkout total",
          "pusher": "octocat",
          "branch": "main",
          "created_at": "2026-10-10T14:22:05.000Z"
        },
        "files_changed": 3,
        "rollback": {
          "available": false,
          "expires_at": null,
          "from": null
        },
        "has_log": false,
        "build_duration_ms": 48210,
        "first_started_at": "2026-10-10T14:22:53.000Z",
        "created_at": "2026-10-10T14:22:05.000Z"
      }
    ],
    "total_count": 1,
    "page": 1,
    "limit": 20,
    "total_pages": 1,
    "has_next_page": false,
    "has_previous_page": false
  }
}
```

### Respuestas de error

**code** `string`

Códigos de error posibles:

* `AUTH_TOKEN_MISSING`, `API_KEY_INVALID`, `SESSION_REVOKED`: Falta la cabecera `Authorization`, la clave de API no es válida o la sesión del panel fue revocada (`401`).
* `API_KEY_IP_DENIED`, `API_KEY_SCOPE_DENIED`: La clave de API se usa desde una IP fuera de su lista de permitidas, o no tiene el scope que requiere la ruta (`403`).
* `APP_NOT_FOUND`: La aplicación no existe, o no pertenece a esta cuenta ni a este workspace (`404`).
* `VALIDATION_ERROR`: El `page` o el `limit` no son válidos, por ejemplo un `limit` superior a `50` (`400`).

**message** `string`

Un mensaje descriptivo con más detalles sobre el error.

```json theme={null}
{
  "code": "APP_NOT_FOUND"
}
```

> [!NOTE]
>
> Las entradas de esta lista se conservan de forma permanente. Sin embargo, el código de las releases antiguas solo se conserva durante un periodo que depende de tu plan, y ese periodo empieza cuando una release deja de ser la activa, no cuando se creó. Una vez que el código expira, la entrada muestra `status: "expired"` y `rollback.available: false`.


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