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

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

## Respuesta

`200 OK` con el registro resuelto:

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

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

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