
# ディレクトリのユーザーの一覧

`GET /v1/directories/{directory_id}/users` · 権限 `directories:read`

ID 順に、ID プロバイダがディレクトリにプロビジョニングした有効なユーザーレコードを一覧表示します。正規化された属性、ユーザーのディレクトリグループ、環境のユーザーへのリンク、ドリフトフラグが含まれます。削除されたレコードは返しません。`state` フィルターと `group_id` フィルターは組み合わせて使用できます。ページングは前方向のみ対応しており、カーソルはディレクトリとフィルターに紐づきます。

`users:read_pii` 権限がない場合、認証情報には個人データがマスクされた状態で返されます。`user_name` は先頭 1 文字と `***`、`emails[].value` は `a***@e***.com`、`given_name`、`family_name`、`display_name` はイニシャル、`attributes` は `null` になります。`external_id`、`locale`、`zoneinfo`、グループ、各種 ID はマスクされません。シークレットキーはすべての権限を持ちます。

## リクエスト

| 項目 | 型 | 必須 | 説明 |
|---|---|---|---|
| `directory_id` | path | はい | SCIM ディレクトリ ID（`dir_…`）。 |
| `state` | query | いいえ | この状態のユーザーのみ：`active`、`inactive`、`held`（一括デプロビジョニング保留中）。 |
| `group_id` | query | いいえ | このディレクトリグループ（`dsg_…`）のメンバーのみ。別のディレクトリのグループを指定すると、空のページが返ります。 |
| `limit` | query | いいえ | 1〜100、既定値は 20。 |
| `after` | query | いいえ | `list_metadata.after` のカーソル。 |

リクエストボディはありません。

## レスポンス

`200 OK` とともに、ディレクトリユーザーのページを返します。

```json
{
  "data": [
    {
      "id": "dsu_01j9xp4q6r8s0t2v4w6x8y0z2b",
      "directory_id": "dir_01j9xm2n4p6q8r0s2t4v6w8y0z",
      "external_id": "00u1a2b3c4",
      "user_name": "jane@example.com",
      "emails": [{ "value": "jane@example.com", "primary": true }],
      "given_name": "Jane",
      "family_name": "Doe",
      "display_name": "Jane Doe",
      "locale": "en-US",
      "zoneinfo": "Europe/Berlin",
      "state": "active",
      "attributes": { "department": "Engineering" },
      "groups": [{ "id": "dsg_01j9xn3p5q7r9s1t3v5w7x9y1a", "name": "Engineering" }],
      "user_id": "usr_01j9xq5r7s9t1v3w5x7y9z1a3c",
      "link_status": "linked",
      "drift": false,
      "created_at": "2026-10-20T09:00:00Z",
      "updated_at": "2026-10-20T09:05:00Z"
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}
```

`link_status` は `linked`、`invited`、`blocked_other_org`、`duplicate`、`mirror_only`、`unlinked` のいずれかです。レコードがリンクされていない場合、`user_id` は `null` になります。空の値は `null` で表されます。

## エラー

| HTTP | code | 発生条件 |
|---|---|---|
| 400 | `invalid_cursor` | カーソルが無効であるか、別のディレクトリまたはフィルターに属しています。 |
| 404 | `not_found` | このenvironmentにディレクトリが存在しません。 |
| 422 | `validation_failed` | `state` または `group_id` が無効である、もしくは重複して指定されています。`limit` が範囲外である、または `before` もしくは `order` が指定されています（`unsupported`）。 |
| 401 | `unauthenticated` | 認証情報が見つからない、無効である、または取り消されています。 |
| 403 | `insufficient_permissions` | 認証情報に必要な権限がありません。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` の期間を待ってから再試行してください。 |
| 503 | `service_unavailable` | ディレクトリ同期が一時的に利用できないか、このデプロイメントで設定されていません。`Retry-After` の期間を待ってから再試行してください。 |

## 例

```bash
curl -i "https://api.eu.keenauth.com/v1/directories/dir_01j9xm2n4p6q8r0s2t4v6w8y0z/users?state=active&limit=20" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

## 個人データ

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