
# Elencare le revisioni della configurazione

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

Ogni [applicazione di un piano](../config-plans/apply.md) riuscita salva una revisione: lo stato delle risorse che ha modificato, così come era subito prima dell'applicazione. Questa richiesta elenca le revisioni dell'ambiente, dalla più recente (`order=asc` inverte l'ordine). Un ambiente conserva le sue 50 revisioni più recenti, ciascuna per al massimo 90 giorni. Per tornare a una revisione, [ripristinala](restore.md).

Gli elementi contengono solo metadati. Le specifiche delle risorse memorizzate non vengono restituite e le revisioni non contengono mai valori segreti (i segreti compaiono solo come segnaposto `secret_ref`).

## Richiesta

| Parametro | In | Descrizione |
|---|---|---|
| `limit` | query | Dimensione della pagina, 1–100. |
| `after` | query | Cursore della pagina successiva (`list_metadata.after`). |
| `before` | query | Cursore della pagina precedente (`list_metadata.before`). |
| `order` | query | `desc` (predefinito, dalla più recente) o `asc`. |

## Risposta

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

| Campo | Descrizione |
|---|---|
| `id` | L'id della revisione, `cfgr_…`. |
| `plan_id` | Il piano la cui applicazione ha salvato la revisione; `null` dopo l'eliminazione del piano (7 giorni dopo la sua scadenza). |
| `created_by` | La credenziale che ha applicato il piano. |
| `created_at` | Quando il piano è stato applicato. |
| `kinds` | I tipi coperti dal piano. |
| `summary` | I conteggi `create`, `update`, `delete` e `no_op` dell'applicazione. |

```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}
}
```

## Errori

| HTTP | code | Quando |
|---|---|---|
| 400 | `invalid_cursor` | Il cursore è malformato o appartiene a un'altra richiesta. |
| 401 | `unauthenticated` | La credenziale è mancante, non valida o revocata. |
| 403 | `insufficient_permissions` | La credenziale non ha `config:read`. |
| 422 | `validation_failed` | Un parametro di query non è valido (per esempio `limit` fuori da 1–100). |
| 429 | `rate_limited` | È stato superato il limite di frequenza; riprova dopo il periodo indicato in `Retry-After`. |

## Esempio

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

keenauth config revisions list --limit 20
```
