ユーザーを更新
PATCH /v1/users/{user_id} · 権限 users:write
JSON マージパッチ(Content-Type: application/merge-patch+json)でユーザーを更新します。送信したフィールドのみが変更されます。テキストフィールドは null または空文字列を送信するとクリアされます。email_verified と phone_verified はクリアできません。address は全体が置き換えられます。user_metadata と app_metadata はキーごとにマージされ、値が null のキーは削除されます。user_metadata または app_metadata 自体を null として送信すると、すべてが削除され {} になります。ステータスはここでは変更できません。ブロックとブロック解除を使用してください。削除保留中のユーザーは更新できません。If-Match は任意です。送信する場合、ユーザーの現在の ETag と一致する必要があります。
リクエスト
| パラメーター | 場所 | 必須 | 説明 |
|---|---|---|---|
user_id |
path | はい | usr_ で始まるユーザー ID。 |
If-Match |
header | いいえ | 以前の読み取りで取得した ETag。 |
リクエストボディには、ユーザーを作成 と同じフィールドをすべて任意で指定できます。さらに、以下の年齢フィールドも指定できます。スキーマにないフィールドは unknown_field により拒否されます。
年齢と保護者の同意
お客様独自の年齢確認または保護者の同意プロセスが完了したら、その結果を以下のフィールドでユーザーに記録してください。これらのフィールドは、すべてのユーザーオブジェクトにも返されます。null は、ユーザーが評価されていないことを意味します。
| フィールド | 値 | 備考 |
|---|---|---|
age_group |
adult, minor, unknown |
クリアできません。年齢が不明な場合は unknown を送信してください。 |
parental_consent_status |
not_required, pending, granted, denied, revoked |
null でクリアされます。not_required 以外の値は、ユーザーの age_group が minor の場合にのみ受け付けられます。 |
age_assurance_level |
self_declared, birthdate_declared, third_party_verified |
null でクリアされます。お客様のプロセスがどの程度強固に年齢を確認したかを示します。 |
age_group または parental_consent_status を変更すると、user.updated イベントが発行されます。これらのフィールドやメタデータに、これをサポートする目的で生年月日や身分証明書番号を入れないでください。結果のみを送信してください。
レスポンス
200 OK。ボディはユーザーオブジェクトです。ETag ヘッダーにはユーザーのバージョンが含まれます。
キーが 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 はマスクされません。
{
"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,
"age_group": "adult",
"parental_consent_status": null,
"age_assurance_level": "self_declared",
"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
}
エラー
すべてのエラーは、安定した code を持つ application/problem+json ボディで返されます。
| HTTP | code |
発生条件 |
|---|---|---|
| 400 | malformed_request, unknown_field |
パッチが JSON オブジェクトではない、またはフィールドがスキーマにない。または If-Match の形式が不正。 |
| 409 | conflict |
値がすでに使用されている、またはユーザーが削除保留中(errors[].code は user_pending_deletion)。 |
| 412 | precondition_failed |
If-Match が現在のバージョンと一致しない。 |
| 415 | unsupported_media_type |
Content-Type が application/merge-patch+json ではない。 |
| 422 | validation_failed |
値が無効、または型が誤っている。errors[].pointer がフィールドを示します。 |
| 404 | not_found |
この環境にユーザーが存在しない(または ID の形式が不正)。 |
| 401 | unauthenticated |
API キーが欠落している、無効、または取り消されている。 |
| 403 | insufficient_permissions |
キーに users:write 権限がない。 |
| 429 | rate_limited |
レート制限を超過した。Retry-After に従ってください。 |
| 503 | service_unavailable |
依存サービスが一時的に利用できない。後で再試行してください。 |
例
curl -X PATCH https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/merge-patch+json" \
-d '{"name": "Ada King", "app_metadata": {"tier": "gold"}}'
未成年者について、承認された保護者の同意を記録する場合:
curl -X PATCH https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/merge-patch+json" \
-d '{"age_group": "minor", "parental_consent_status": "granted", "age_assurance_level": "third_party_verified"}'
個人データ
このエンドポイントは個人データを扱います。対象は、エンドユーザーのプロフィールです。KeenAuth API における個人データ では、保存される内容、保存期間、削除方法について説明しています。いかなるフィールドにも、特別な種類の個人データ(健康、生体情報、宗教、政治的意見、性的指向)を送信しないでください。