
# ユーザーの認証手段を一覧表示する

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

ユーザーの認証手段（パスキー、TOTP、SMS、メール、プッシュの各要素）を、作成日時の順に 1 ページで一覧表示します。過去 90 日以内に取り消されたものも含まれます。ユーザーごとの認証手段の数には上限があるため、一覧には `limit`、`after`、`before`、`order` がなく、`list_metadata` は常に `null` の値になります。返されるのはメタデータのみで、公開鍵、クレデンシャル ID、TOTP シークレット、リカバリーコードは決して返されません。

## 組織スコープ

組織の管理者向けにメンバーの診断ビューを作成する場合は、`org_id` を指定します。この場合、キーには `organizations:read` 権限も必要です。この権限がないと、何も読み取られる前に `403 insufficient_permissions` でリクエストが失敗します。ユーザーがその組織のメンバーでない場合（`invited`、`active`、`suspended` のいずれのメンバーシップもない場合）、リクエストは `404 not_found` で失敗します。これは存在しないユーザーの場合と同じレスポンスです。ユーザーがメンバーである場合、表示されるのは各認証手段の種類と MFA の登録有無だけです。一覧に含まれるのは有効な認証手段のみで、`label`、`last_used_at`、`revoked_at`、`revoked_by`、`revoke_reason` は `null`、`synced` は `false` になります。これは、組織外での本人のデバイス情報は組織の管理対象ではないためです。有効な認証手段のうち `role` が `second_factor` または `both` のものがあれば、MFA が登録されていると判断されます。`org_id` を指定しない場合、レスポンスは変わりません。

## リクエスト

| パラメータ | 位置 | 必須 | 説明 |
|---|---|---|---|
| `user_id` | path | はい | ユーザー ID。接頭辞は `usr_`。 |
| `org_id` | query | いいえ | 組織 ID。接頭辞は `org_`。ビューをその組織に限定します。[組織スコープ](#組織スコープ)を参照してください。`organizations:read` が必要です。 |

## レスポンス

`200 OK`。`data` には作成日時の順に並んだ認証手段が含まれます。一覧はページ分割されないため、`list_metadata` は常に `null` の値になります。空のフィールドは `null` です。

キーに `users:read_pii` 権限がない場合、`label` はイニシャル（`A. L.`）に縮小されます。

```json
{
  "data": [
    {
      "id": "cred_0a1b2c3d4e5f6g7h8j9k0m1n2p",
      "type": "webauthn",
      "role": "both",
      "label": "Laptop",
      "status": "active",
      "synced": true,
      "created_at": "2026-01-15T09:30:00Z",
      "last_used_at": "2026-02-01T08:00:00Z",
      "revoked_at": null,
      "revoked_by": null,
      "revoke_reason": null
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}
```

`type`: `webauthn`、`totp`、`sms`、`email`、`push` · `role`: `first_factor`、`second_factor`、`both` · `status`: `pending`、`active`、`revoked`、`clone_suspected`

## エラー

すべてのエラーは、安定した `code` を含む `application/problem+json` のボディで返されます。

| HTTP | `code` | 発生条件 |
|---|---|---|
| 404 | `not_found` | この環境にユーザーが存在しない（または ID の形式が不正）場合、または `org_id` を指定した際にユーザーがその組織のメンバーでない場合。 |
| 401 | `unauthenticated` | API キーが見つからない、無効である、または取り消されています。 |
| 403 | `insufficient_permissions` | キーに `users:read` 権限がない場合、または `org_id` を指定した際にキーに `organizations:read` がない場合。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` に従ってください。 |
| 503 | `service_unavailable` | 依存先が一時的に利用できません。しばらくしてから再試行してください。 |

## 例

```bash
curl https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p/authenticators \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

## 個人データ

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