
# Einen Subject-Konflikt auflösen

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

Wendet die Entscheidung einer Administratorin oder eines Administrators auf einen offenen SSO-Subject-Konflikt an (siehe [Die Subject-Konflikte einer Verbindung auflisten](subject-conflicts.md)). Entscheiden Sie erst, nachdem Sie mit der Administration des Identitätsanbieters geklärt haben, wem das neue Subject gehört.

| `resolution` | Bedeutung | Was KeenAuth tut |
|---|---|---|
| `same_person` | Das neue Subject gehört derselben Person (zum Beispiel wurde das Konto im Identitätsanbieter neu angelegt). | Ersetzt die bisherige Identität des Benutzers auf dieser Verbindung durch das neue Subject. Der Benutzer meldet sich ab der nächsten Anmeldung mit dem neuen Subject an. |
| `different_person` | Die E-Mail-Adresse wurde einer anderen Person zugewiesen. | Schließt den Datensatz und verknüpft nichts. Die neue Person gelangt nie in das bestehende Konto. |

Nach `different_person` öffnet die nächste Anmeldung der neuen Person einen neuen Datensatz. Damit die neue Person sich anmelden kann, ändern Sie die E-Mail-Adresse des bestehenden Kontos oder sperren oder löschen dieses Konto; danach gelten die üblichen Anmelderegeln.

Die Identitätsänderung, ihre Ereignisse und der Audit-Eintrag werden in einer Transaktion geschrieben. Als Auslöser des Audit-Eintrags gilt die Anmeldeinformation, die den Aufruf gestellt hat.

Wiederholen Sie dieselbe Entscheidung, gibt die Anfrage den Datensatz zurück, ohne etwas zu schreiben. Eine andere Entscheidung für einen bereits aufgelösten Datensatz liefert `409 conflict`. Senden Sie einen `Idempotency-Key`, damit Sie bei Wiederholungen die ursprüngliche Antwort erhalten.

## Anfrage

| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| `connection_id` | Pfad | ja | Verbindungs-ID (`conn_…`). |
| `conflict_id` | Pfad | ja | Subject-Konflikt-ID (`sscf_…`). |
| `resolution` | Body | ja | `same_person` oder `different_person`. |

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

## Antwort

`200 OK` mit dem aufgelösten Datensatz:

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

## Fehler

| HTTP | Code | Wann |
|---|---|---|
| 400 | `unknown_field` / `malformed_request` | Der Body enthält ein unbekanntes Feld oder ist kein gültiges JSON. |
| 401 | `unauthenticated` | Die Anmeldedaten fehlen, sind ungültig oder widerrufen. |
| 403 | `insufficient_permissions` | Die Anmeldedaten haben nicht `users:write`. |
| 403 | `user_not_active` | `same_person`: Der Benutzer ist gesperrt oder wird gerade gelöscht. Der Datensatz bleibt offen. |
| 404 | `not_found` | Die Verbindung oder der Datensatz existiert in dieser Umgebung nicht, der Datensatz gehört zu einer anderen Verbindung, oder er ist abgelaufen. |
| 409 | `conflict` | Der Datensatz wurde mit der anderen Entscheidung aufgelöst; oder, bei `same_person`, die Verbindung ist nicht aktiv, das neue Subject ist inzwischen mit einem anderen Benutzer verknüpft oder die Identitätsgrenze des Benutzers ist erreicht. Bei den `same_person`-Fällen bleibt der Datensatz offen. |
| 422 | `validation_failed` | `resolution` fehlt oder ist keiner der beiden Werte (`errors[].pointer` = `/resolution`). |
| 429 | `rate_limited` | Das Ratenlimit wurde überschritten; wiederholen Sie die Anfrage nach der Zeit aus `Retry-After`. |
| 503 | `service_unavailable` | Eine Abhängigkeit ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach der Zeit aus `Retry-After`. |

## Beispiel

```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
```
