サブジェクトの競合を解決する

POST /v1/connections/{connection_id}/subject-conflicts/{conflict_id}:resolve · 権限 users:write

未解決の SSO サブジェクトの競合 (接続のサブジェクトの競合を一覧表示する を参照) に対して、管理者の判断を適用します。新しいサブジェクトが誰のものかを ID プロバイダの管理者に確認してから判断してください。

resolution 意味 KeenAuth の動作
same_person 新しいサブジェクトは同じ人物のものです (たとえば、ID プロバイダでアカウントが作り直された場合)。 この接続におけるユーザーの古い ID を、新しいサブジェクトに置き換えます。次回以降のサインインから、ユーザーは新しいサブジェクトでサインインします。
different_person メールアドレスが別の人物に割り当てられました。 レコードを閉じ、何も紐付けません。新しい人物が既存のアカウントに入ることはありません。

different_person を選択したあと、新しい人物が次にサインインすると、新しいレコードが作成されます。新しい人物にサインインを許可するには、既存のアカウントのメールアドレスを変更するか、そのアカウントをブロックまたは削除してください。その後は通常のサインインルールが適用されます。

ID の変更、そのイベント、監査レコードは 1 つのトランザクションで書き込まれます。監査上の実行者は、この呼び出しを行った認証情報です。

同じ判断を繰り返した場合は、何も書き込まれずにレコードが返されます。解決済みのレコードに対して異なる判断を行うと、409 conflict が返されます。再試行時に元のレスポンスを取得するには、Idempotency-Key を送信してください。

リクエスト

フィールド 型 必須 説明
connection_id path はい 接続の ID (conn_…)。
conflict_id path はい サブジェクトの競合の ID (sscf_…)。
resolution body はい same_person または different_person。
{ "resolution": "same_person" }

レスポンス

解決済みのレコードを含む 200 OK:

{
  "id": "sscf_01j9xr4a6b8c0d2e4f6g8h0j2k",
  "connection_id": "conn_01j9xp6q0r1s5t7v9w1x3y5z7b",
  "user_id": "usr_01j9xm2n4p6q8r0s2t4v6w8x0y",
  "status": "resolved",
  "resolution": "same_person",
  "created_at": "2026-10-28T10:00:00Z",
  "last_seen_at": "2026-10-28T10:05:00Z",
  "expires_at": "2026-11-27T10:00:00Z",
  "closed_at": "2026-10-28T11:00:00Z"
}

エラー

HTTP code 発生条件
400 unknown_field / malformed_request ボディに未知のフィールドがある、または有効な JSON ではない場合。
401 unauthenticated 認証情報が指定されていない、無効、または取り消されている場合。
403 insufficient_permissions 認証情報に users:write がない場合。
403 user_not_active same_person の場合で、ユーザーがブロックされている、または削除中である場合。レコードは未解決のまま残ります。
404 not_found 接続またはレコードがこの環境に存在しない場合、レコードが別の接続に属している場合、または有効期限が切れている場合。
409 conflict レコードが別の判断で解決済みの場合。または same_person の場合で、接続が有効でない、新しいサブジェクトが別のユーザーに紐付けられている、またはユーザーの ID 数の上限に達している場合。same_person の場合、レコードは未解決のまま残ります。
422 validation_failed resolution がない、または 2 つの値のいずれでもない場合 (errors[].pointer = /resolution)。
429 rate_limited レート制限を超えた場合。Retry-After の期間が経過してから再試行してください。
503 service_unavailable 依存先が一時的に利用できない場合。Retry-After の期間が経過してから再試行してください。

例

curl -X POST "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/subject-conflicts/sscf_01j9xr4a6b8c0d2e4f6g8h0j2k:resolve" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"resolution":"different_person"}'
keenauth connections subject-conflicts resolve conn_01j9xp6q0r1s5t7v9w1x3y5z7b sscf_01j9xr4a6b8c0d2e4f6g8h0j2k \
  --resolution different_person --yes