
# 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](subject-conflicts.md)). 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`. |

```json
{ "resolution": "same_person" }
```

## Réponse

`200 OK` avec l'enregistrement résolu :

```json
{
  "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

```bash
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"}'
```

```bash
keenauth connections subject-conflicts resolve conn_01j9xp6q0r1s5t7v9w1x3y5z7b sscf_01j9xr4a6b8c0d2e4f6g8h0j2k \
  --resolution different_person --yes
```
