
# 構成リビジョンの一覧

`GET /v1/config-revisions` · 権限 `config:read`

成功した[プランの適用](../config-plans/apply.md)ごとに、リビジョンが保存されます。リビジョンとは、適用直前の、変更されたリソースの状態です。このリクエストは環境のリビジョンを新しいものから順に一覧表示します（`order=asc` で順序を逆にできます）。環境ごとに最新 50 件を保持し、各リビジョンは最大 90 日間保持されます。リビジョンに戻すには、[そのリビジョンを復元](restore.md)してください。

項目にはメタデータのみが含まれます。保存されたリソース仕様は返されず、リビジョンにシークレットの値が含まれることもありません（シークレットは `secret_ref` のプレースホルダーとしてのみ現れます）。

## リクエスト

| パラメータ | 場所 | 説明 |
|---|---|---|
| `limit` | query | ページサイズ（1–100）。 |
| `after` | query | 次のページのカーソル（`list_metadata.after`）。 |
| `before` | query | 前のページのカーソル（`list_metadata.before`）。 |
| `order` | query | `desc`（既定値、新しいものから）または `asc`。 |

## レスポンス

`200 OK`。`Cache-Control: no-store` 付き。

| フィールド | 説明 |
|---|---|
| `id` | リビジョンの ID（`cfgr_…`）。 |
| `plan_id` | リビジョンを保存したプランの適用元。プランが削除されると `null` になります（期限切れから 7 日後）。 |
| `created_by` | プランを適用した認証情報。 |
| `created_at` | プランが適用された日時。 |
| `kinds` | プランが対象とした種類。 |
| `summary` | 適用時の `create`、`update`、`delete`、`no_op` の件数。 |

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

## エラー

| HTTP | code | 発生条件 |
|---|---|---|
| 400 | `invalid_cursor` | カーソルの形式が不正か、別のリクエストのものです。 |
| 401 | `unauthenticated` | 認証情報がない、無効、または失効しています。 |
| 403 | `insufficient_permissions` | 認証情報に `config:read` がありません。 |
| 422 | `validation_failed` | クエリパラメータが無効です（例: `limit` が 1–100 の範囲外）。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` の時間が経過してから再試行してください。 |

## 例

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

keenauth config revisions list --limit 20
```
