ユーザーを更新

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