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