Risolvi un conflitto di soggetto
POST /v1/connections/{connection_id}/subject-conflicts/{conflict_id}:resolve · autorizzazione users:write
Applica la decisione di un amministratore a un conflitto di soggetto SSO aperto (vedi Elenca i conflitti di soggetto di una connessione). Decidi solo dopo aver verificato con l'amministratore del provider di identità a chi appartiene il nuovo soggetto.
resolution |
Significato | Cosa fa KeenAuth |
|---|---|---|
same_person |
Il nuovo soggetto appartiene alla stessa persona (per esempio, l'account è stato ricreato nel provider di identità). | Sostituisce la vecchia identità dell'utente su questa connessione con il nuovo soggetto. L'utente accede con il nuovo soggetto a partire dal successivo accesso. |
different_person |
L'indirizzo email è stato assegnato a un'altra persona. | Chiude il record e non collega nulla. La nuova persona non entra mai nell'account esistente. |
Dopo different_person, il successivo accesso della nuova persona apre un nuovo record. Per permetterle di accedere, cambia l'indirizzo email dell'account esistente, oppure blocca o elimina quell'account; si applicano poi le normali regole di accesso.
La modifica dell'identità, i relativi eventi e il record di audit vengono scritti in un'unica transazione. L'attore dell'audit è la credenziale che ha effettuato la chiamata.
Ripetere la stessa decisione restituisce il record senza scrivere nulla. Una decisione diversa su un record già risolto restituisce 409 conflict. Invia un Idempotency-Key per ricevere di nuovo la risposta originale nei tentativi successivi.
Richiesta
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
connection_id |
path | sì | ID della connessione (conn_…). |
conflict_id |
path | sì | ID del conflitto di soggetto (sscf_…). |
resolution |
body | sì | same_person oppure different_person. |
{ "resolution": "same_person" }
Risposta
200 OK con il record risolto:
{
"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"
}
Errori
| HTTP | code | Quando |
|---|---|---|
| 400 | unknown_field / malformed_request |
Il corpo contiene un campo sconosciuto o non è JSON valido. |
| 401 | unauthenticated |
La credenziale è mancante, non valida o revocata. |
| 403 | insufficient_permissions |
La credenziale non ha users:write. |
| 403 | user_not_active |
same_person: l'utente è bloccato o in fase di eliminazione. Il record resta aperto. |
| 404 | not_found |
La connessione o il record non esistono in questo ambiente, il record appartiene a un'altra connessione, oppure è scaduto. |
| 409 | conflict |
Il record è stato risolto con l'altra decisione; oppure, per same_person, la connessione non è attiva, il nuovo soggetto è ora collegato a un altro utente, o è stato raggiunto il limite di identità dell'utente. Nei casi same_person il record resta aperto. |
| 422 | validation_failed |
resolution manca oppure non è uno dei due valori (errors[].pointer = /resolution). |
| 429 | rate_limited |
È stato superato il limite di richieste; riprova dopo il periodo indicato in Retry-After. |
| 503 | service_unavailable |
Una dipendenza non è temporaneamente disponibile; riprova dopo il periodo indicato in Retry-After. |
Esempio
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