
# Listar revisiones de configuración

`GET /v1/config-revisions` · permiso `config:read`

Cada [aplicación de un plan](../config-plans/apply.md) correcta guarda una revisión: el estado de los recursos que cambió, tal como estaba justo antes de la aplicación. Esta solicitud lista las revisiones del entorno, de la más reciente a la más antigua (`order=asc` invierte el orden). Un entorno conserva sus 50 revisiones más recientes, cada una durante 90 días como máximo. Para volver a una revisión, [restáurala](restore.md).

Los elementos solo contienen metadatos. No se devuelven las especificaciones de recursos guardadas, y las revisiones nunca contienen valores secretos (los secretos aparecen solo como marcadores `secret_ref`).

## Solicitud

| Parámetro | En | Descripción |
|---|---|---|
| `limit` | query | Tamaño de página, 1–100. |
| `after` | query | Cursor de la página siguiente (`list_metadata.after`). |
| `before` | query | Cursor de la página anterior (`list_metadata.before`). |
| `order` | query | `desc` (predeterminado, la más reciente primero) o `asc`. |

## Respuesta

`200 OK` con `Cache-Control: no-store`.

| Campo | Descripción |
|---|---|
| `id` | El id de la revisión, `cfgr_…`. |
| `plan_id` | El plan cuya aplicación guardó la revisión; `null` una vez eliminado el plan (7 días después de su caducidad). |
| `created_by` | La credencial que aplicó el plan. |
| `created_at` | Cuándo se aplicó el plan. |
| `kinds` | Los tipos que cubrió el plan. |
| `summary` | Los recuentos `create`, `update`, `delete` y `no_op` de la aplicación. |

```json
{
  "data": [
    {
      "id": "cfgr_01m4qpqtywfs7930tb6kqn5rc5",
      "plan_id": "cfgp_01m4qpqtywfs7930tb6kqn5rc5",
      "created_by": "key_01m4qpqtywfs7930tb6kqn5rc5",
      "created_at": "2026-10-19T10:00:00Z",
      "kinds": ["connection"],
      "summary": {"create": 1, "update": 1, "delete": 0, "no_op": 1}
    }
  ],
  "list_metadata": {"before": null, "after": null}
}
```

## Errores

| HTTP | code | Cuándo |
|---|---|---|
| 400 | `invalid_cursor` | El cursor está mal formado o pertenece a otra solicitud. |
| 401 | `unauthenticated` | La credencial falta, no es válida o está revocada. |
| 403 | `insufficient_permissions` | La credencial no tiene `config:read`. |
| 422 | `validation_failed` | Un parámetro de consulta no es válido (por ejemplo, `limit` fuera de 1–100). |
| 429 | `rate_limited` | Se superó el límite de frecuencia; reintenta después del periodo de `Retry-After`. |

## Ejemplo

```bash
curl "https://api.eu.keenauth.com/v1/config-revisions?limit=20" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"

keenauth config revisions list --limit 20
```
