ユーザーを検索
POST /v1/users:search · 権限 users:read
個人データを含むフィルターを使用してユーザーを検索します。これらのフィルターはリクエストボディでのみ受け付け、クエリ文字列では受け付けません。クエリ文字列はプロキシやクライアントのログに残るためです。フィルターは AND で組み合わせられ、ID に関するフィルターを少なくとも 1 つ指定する必要があります。一致は完全一致のみです。前方一致や部分一致による検索は提供していません。一致するユーザーが多すぎる検索は search_too_broad で失敗します。その場合はフィルターを絞り込んでください。
リクエスト
ページネーションのパラメーターはクエリ文字列で指定します。これらは個人データを含みません。
| パラメーター | 指定場所 | 必須 | 説明 |
|---|---|---|---|
limit |
query | いいえ | ページサイズ。1 から 100 まで。既定値は 20。 |
after |
query | いいえ | list_metadata.after から取得した不透明なカーソル。before とは同時に指定できません。 |
before |
query | いいえ | list_metadata.before から取得した不透明なカーソル。after とは同時に指定できません。 |
order |
query | いいえ | 作成日時による asc または desc。既定値は desc。 |
ボディのフィールド:
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
email |
string | いいえ | 完全一致のメールアドレス。 |
phone |
string | いいえ | E.164 形式の完全一致の電話番号。 |
username |
string | いいえ | 完全一致のユーザー名。 |
email_domain |
string | いいえ | 完全一致のメールドメイン。 |
app_metadata, user_metadata |
object | いいえ | トップレベルのキーは最大 3 つまで。各キーは単一の値と一致する必要があります。 |
status |
string | いいえ | active、blocked、pending_deletion のいずれか。 |
カーソルは、発行されたときと同じフィルターおよび順序でのみ有効です。
レスポンス
200 OK。data にはそのページのユーザーが含まれます。list_metadata.before と list_metadata.after は、前のページと次のページのカーソルです(該当するページがない場合は null)。総件数は返されません。
キーに users:read_pii 権限がない場合、個人データはマスクされます。email は a***@e***.com になり、phone_number は末尾 2 桁のみが残ります(+**********67)。name、given_name、family_name、middle_name、nickname はイニシャルになります(A. L.)。username は先頭 1 文字のみが残ります(a***)。birthdate は ****-**-** になり、address は {"redacted": true} になります。user_metadata と app_metadata はマスクされません。users:read_pii 権限のないキーでも、個人データの完全一致フィルターを使って検索できます。その場合、結果はマスクされます。
{
"data": [ {
"id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p",
"kind": "regular",
"status": "active",
"external_id": null,
"username": null,
"name": "Ada Lovelace",
"email": "ada@example.com",
"email_verified": true,
"phone_number": null,
"phone_verified": false,
"user_metadata": {},
"app_metadata": {},
"created_via": "admin_api",
"created_at": "2026-01-15T09:30:00Z",
"updated_at": "2026-01-15T09:30:00Z",
"last_sign_in_at": null,
"deletion_requested_at": null,
"deletion_due_at": null
} ],
"list_metadata": { "before": null, "after": "<opaque cursor>" }
}
エラー
すべてのエラーは、安定した code を含む application/problem+json のボディで返されます。
| HTTP | code |
発生条件 |
|---|---|---|
| 400 | unknown_field, invalid_cursor |
ボディに未対応のフィールドがある(例: 前方一致フィルター)、またはカーソルがリクエストと一致しない。 |
| 415 | unsupported_media_type |
Content-Type が application/json ではない。 |
| 422 | validation_failed, search_too_broad |
フィルターが無効、ID に関するフィルターが指定されていない、または一致するユーザーが多すぎる。 |
| 401 | unauthenticated |
API キーが未指定、無効、または取り消されている。 |
| 403 | insufficient_permissions |
キーに users:read 権限がない。 |
| 429 | rate_limited |
レート制限を超えた。Retry-After に従ってください。 |
| 503 | service_unavailable |
依存するサービスが一時的に利用できない。後で再試行してください。 |
例
curl -X POST "https://api.eu.keenauth.com/v1/users:search?limit=20" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "ada@example.com"}'
個人データ
このエンドポイントは個人データを扱います: エンドユーザーのプロフィール。KeenAuth API における個人データでは、保存される内容、保存期間、削除方法を説明しています。どのフィールドにも、特別な種類の個人データ(健康、生体データ、宗教、政治的意見、性的指向)を送信しないでください。