
# ユーザーの同意を一覧表示

`GET /v1/users/{user_id}/consents` · 権限 `users:read`

ユーザーがアプリケーションに付与した OAuth の同意を、新しいものから順に一覧表示します。返されるのは有効な同意のみです。取り消された同意や、同じアプリケーションの新しい同意に置き換えられた同意は一覧に含まれません。一覧は前方へのみページングでき、総件数は返しません。レスポンスには、ユーザーが表示した同意画面のテキストは含まれません。

## リクエスト

| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
| `user_id` | path | はい | ユーザー ID。接頭辞は `usr_`。 |
| `limit` | query | いいえ | ページあたりの件数。1～100（既定値は 20）。 |
| `after` | query | いいえ | 同じユーザーの前のページの `list_metadata.after` から取得したカーソル。 |

`before` と `order=asc` はサポートされておらず、`422` を返します。

## レスポンス

`200 OK`。空のフィールドは `null` になります。

```json
{
  "data": [
    {
      "id": "cns_01jb2k8m5c3f6t9w2y4b7d0g3k",
      "user_id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p",
      "application_id": "app_0a1b2c3d4e5f6g7h8j9k0m1n2p",
      "api_id": "api_0a1b2c3d4e5f6g7h8j9k0m1n2p",
      "org_id": null,
      "scopes": ["openid", "profile", "orders:read"],
      "authorization_details_types": [],
      "granted_at": "2026-10-20T09:00:00Z",
      "consent_screen_version": "3",
      "locale": "en",
      "prompt_reason": "scope_expansion"
    }
  ],
  "list_metadata": {"before": null, "after": null}
}
```

| フィールド | 説明 |
|---|---|
| `id` | 同意 ID。接頭辞は `cns_`。 |
| `application_id` | 同意が付与されたアプリケーション。 |
| `api_id` | 同意の紐付け先の API（ある場合）。 |
| `org_id` | 同意が付与された組織のコンテキスト（ある場合）。 |
| `scopes` | 付与されたスコープ。ソート済みで重複はありません。 |
| `authorization_details_types` | 付与されたリッチ認可リクエストの種類。ない場合は空です。 |
| `consent_screen_version`, `locale` | ユーザーが承諾した同意画面のバージョンと言語。 |
| `prompt_reason` | 同意を求めた理由: `first`, `scope_expansion`, `prompt_consent`, `skip_consent`（同意画面のない自社アプリケーション）。 |

## エラー

すべてのエラーは、安定した `code` を含む `application/problem+json` 本文です。

| HTTP | `code` | 発生条件 |
|---|---|---|
| 400 | `invalid_cursor` | カーソルの形式が不正か、別の一覧に属しています。 |
| 422 | `validation_failed` | `limit` が範囲外か、`before` または昇順の `order` が送信されました。 |
| 404 | `not_found` | この環境にユーザーが存在しない（または ID の形式が不正）。 |
| 401 | `unauthenticated` | API キーがないか、無効または取り消されています。 |
| 403 | `insufficient_permissions` | キーに `users:read` 権限がありません。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` に従ってください。 |
| 503 | `service_unavailable` | 依存先が一時的に利用できません。後でリトライしてください。 |

## 例

```bash
curl "https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p/consents?limit=50" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth users consents list usr_0a1b2c3d4e5f6g7h8j9k0m1n2p --limit 50`

## 個人データ

このエンドポイントは個人データ（同意の記録）を扱います。[KeenAuth API における個人データ](/docs/policies/personal-data)では、保存される内容、保持期間、削除方法を説明しています。いかなるフィールドにも、特別な種類の個人データ（健康、生体データ、宗教、政治的意見、性的指向）を送信しないでください。
