Resolver un conflicto de sujeto

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

Aplica la decisión de un administrador a un conflicto de sujeto de SSO abierto (consulte Listar los conflictos de sujeto de una conexión). Tome la decisión solo después de confirmar con el administrador del proveedor de identidad a quién pertenece el nuevo sujeto.

resolution Significado Qué hace KeenAuth
same_person El nuevo sujeto pertenece a la misma persona (por ejemplo, la cuenta se volvió a crear en el proveedor de identidad). Reemplaza la identidad anterior del usuario en esta conexión por el nuevo sujeto. El usuario inicia sesión con el nuevo sujeto desde el siguiente inicio de sesión.
different_person La dirección de correo electrónico se asignó a otra persona. Cierra el registro y no vincula nada. La nueva persona nunca accede a la cuenta existente.

Después de different_person, el siguiente inicio de sesión de la nueva persona abre un nuevo registro. Para permitir que la nueva persona inicie sesión, cambie la dirección de correo electrónico de la cuenta existente, o bloquee o elimine esa cuenta; a partir de entonces se aplican las reglas normales de inicio de sesión.

El cambio de identidad, sus eventos y el registro de auditoría se escriben en una sola transacción. El actor de la auditoría es la credencial que realizó la llamada.

Repetir la misma decisión devuelve el registro sin escribir nada. Una decisión distinta sobre un registro ya resuelto devuelve 409 conflict. Envíe un Idempotency-Key para recibir la respuesta original en los reintentos.

Solicitud

Campo Tipo Obligatorio Descripción
connection_id ruta sí ID de la conexión (conn_…).
conflict_id ruta sí ID del conflicto de sujeto (sscf_…).
resolution cuerpo sí same_person o different_person.
{ "resolution": "same_person" }

Respuesta

200 OK con el registro resuelto:

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

Errores

HTTP código Cuándo
400 unknown_field / malformed_request El cuerpo tiene un campo desconocido o no es JSON válido.
401 unauthenticated La credencial falta, no es válida o fue revocada.
403 insufficient_permissions La credencial no tiene users:write.
403 user_not_active same_person: el usuario está bloqueado o en proceso de eliminación. El registro sigue abierto.
404 not_found La conexión o el registro no existen en este entorno, el registro pertenece a otra conexión o ha caducado.
409 conflict El registro se resolvió con la otra decisión; o, para same_person, la conexión no está activa, el nuevo sujeto ahora está vinculado a otro usuario, o se alcanzó el límite de identidades del usuario. En los casos de same_person, el registro sigue abierto.
422 validation_failed Falta resolution o no es uno de los dos valores (errors[].pointer = /resolution).
429 rate_limited Se superó el límite de frecuencia; reintente después del periodo indicado en Retry-After.
503 service_unavailable Una dependencia no está disponible temporalmente; reintente después del periodo indicado en Retry-After.

Ejemplo

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