ユーザーを検索

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 における個人データでは、保存される内容、保存期間、削除方法を説明しています。どのフィールドにも、特別な種類の個人データ(健康、生体データ、宗教、政治的意見、性的指向)を送信しないでください。