Résoudre un conflit de sujet

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

Applique la décision d'un administrateur à un conflit de sujet SSO ouvert (voir Lister les conflits de sujet d'une connexion). Ne décidez qu'après avoir confirmé avec l'administrateur du fournisseur d'identité à qui appartient le nouveau sujet.

resolution Signification Ce que fait KeenAuth
same_person Le nouveau sujet appartient à la même personne (par exemple, le compte a été recréé chez le fournisseur d'identité). Remplace l'ancienne identité de l'utilisateur sur cette connexion par le nouveau sujet. L'utilisateur se connecte avec le nouveau sujet à partir de la connexion suivante.
different_person L'adresse e-mail a été attribuée à une autre personne. Clôture l'enregistrement et ne lie rien. La nouvelle personne n'accède jamais au compte existant.

Après different_person, la prochaine connexion de la nouvelle personne ouvre un nouvel enregistrement. Pour permettre à la nouvelle personne de se connecter, modifiez l'adresse e-mail du compte existant, ou bloquez ou supprimez ce compte ; les règles de connexion habituelles s'appliquent alors.

Le changement d'identité, ses événements et l'enregistrement d'audit sont écrits dans une seule transaction. L'acteur de l'audit est l'identifiant d'accès qui a effectué l'appel.

Répéter la même décision renvoie l'enregistrement sans rien écrire. Une décision différente sur un enregistrement déjà résolu renvoie 409 conflict. Envoyez un Idempotency-Key pour recevoir à nouveau la réponse d'origine lors des relances.

Requête

Champ Type Obligatoire Description
connection_id chemin oui Identifiant de la connexion (conn_…).
conflict_id chemin oui Identifiant du conflit de sujet (sscf_…).
resolution corps oui same_person ou different_person.
{ "resolution": "same_person" }

Réponse

200 OK avec l'enregistrement résolu :

{
  "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"
}

Erreurs

HTTP code Quand
400 unknown_field / malformed_request Le corps contient un champ inconnu ou n'est pas du JSON valide.
401 unauthenticated L'identifiant d'accès est absent, invalide ou révoqué.
403 insufficient_permissions L'identifiant d'accès ne dispose pas de users:write.
403 user_not_active same_person : l'utilisateur est bloqué ou en cours de suppression. L'enregistrement reste ouvert.
404 not_found La connexion ou l'enregistrement n'existe pas dans cet environnement, l'enregistrement appartient à une autre connexion, ou il a expiré.
409 conflict L'enregistrement a été résolu avec l'autre décision ; ou, pour same_person, la connexion n'est pas active, le nouveau sujet est désormais lié à un autre utilisateur, ou la limite d'identités de l'utilisateur est atteinte. L'enregistrement reste ouvert dans les cas same_person.
422 validation_failed resolution est absent ou ne correspond à aucune des deux valeurs (errors[].pointer = /resolution).
429 rate_limited La limite de débit a été dépassée ; réessayez après la durée indiquée par Retry-After.
503 service_unavailable Une dépendance est temporairement indisponible ; réessayez après la durée indiquée par Retry-After.

Exemple

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