
# Özne çakışmasını çözme

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

Açık bir SSO özne çakışmasına yönetici kararı uygular (bkz. [Bir bağlantının özne çakışmalarını listeleme](subject-conflicts.md)). Karar vermeden önce, yeni öznenin kime ait olduğunu kimlik sağlayıcının yöneticisiyle doğrulayın.

| `resolution` | Anlamı | KeenAuth ne yapar |
|---|---|---|
| `same_person` | Yeni özne aynı kişiye aittir (örneğin, hesap kimlik sağlayıcıda yeniden oluşturulmuştur). | Kullanıcının bu bağlantıdaki eski kimliğini yeni özneyle değiştirir. Kullanıcı bir sonraki oturum açmada yeni özneyle giriş yapar. |
| `different_person` | E-posta adresi başka birine verilmiştir. | Kaydı kapatır ve hiçbir şeyi bağlamaz. Yeni kişi mevcut hesaba hiçbir zaman erişemez. |

`different_person` kararının ardından, yeni kişinin bir sonraki oturum açma girişimi yeni bir kayıt açar. Yeni kişinin oturum açabilmesi için mevcut hesabın e-posta adresini değiştirin ya da bu hesabı engelleyin veya silin; ardından normal oturum açma kuralları uygulanır.

Kimlik değişikliği, ilgili olaylar ve denetim kaydı tek bir işlemde yazılır. Denetim kaydındaki işlemi yapan, çağrıyı gerçekleştiren kimlik bilgisidir.

Aynı kararı tekrar göndermek hiçbir şey yazmadan kaydı döndürür. Çözümlenmiş bir kayıt için farklı bir karar `409 conflict` döndürür. Yeniden denemelerde özgün yanıtı geri almak için bir `Idempotency-Key` gönderin.

## İstek

| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `connection_id` | yol | evet | Bağlantı kimliği (`conn_…`). |
| `conflict_id` | yol | evet | Özne çakışması kimliği (`sscf_…`). |
| `resolution` | gövde | evet | `same_person` veya `different_person`. |

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

## Yanıt

Çözümlenmiş kayıtla birlikte `200 OK`:

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

## Hatalar

| HTTP | code | Ne zaman |
|---|---|---|
| 400 | `unknown_field` / `malformed_request` | Gövdede bilinmeyen bir alan var veya geçerli JSON değil. |
| 401 | `unauthenticated` | Kimlik bilgisi eksik, geçersiz veya iptal edilmiş. |
| 403 | `insufficient_permissions` | Kimlik bilgisinde `users:write` izni yok. |
| 403 | `user_not_active` | `same_person`: kullanıcı engellenmiş veya silinmek üzere. Kayıt açık kalır. |
| 404 | `not_found` | Bağlantı veya kayıt bu ortamda yok, kayıt başka bir bağlantıya ait ya da süresi dolmuş. |
| 409 | `conflict` | Kayıt diğer kararla çözümlenmiş; ya da `same_person` için bağlantı aktif değil, yeni özne artık başka bir kullanıcıya bağlı veya kullanıcının kimlik sınırına ulaşılmış. `same_person` durumlarında kayıt açık kalır. |
| 422 | `validation_failed` | `resolution` eksik ya da iki değerden biri değil (`errors[].pointer` = `/resolution`). |
| 429 | `rate_limited` | Hız sınırı aşıldı; `Retry-After` süresinden sonra yeniden deneyin. |
| 503 | `service_unavailable` | Bir bağımlılık geçici olarak kullanılamıyor; `Retry-After` süresinden sonra yeniden deneyin. |

## Örnek

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