
# 연결의 subject 충돌 목록 조회

`GET /v1/connections/{connection_id}/subject-conflicts` · 권한 `users:read`

엔터프라이즈(SAML 또는 OIDC) 연결의 SSO subject 충돌을 최신순으로 조회합니다.

subject 충돌은 ID 공급자가 이미 같은 연결에 다른 subject로 연결된 사용자의 확인된 이메일 주소와 함께 **새 subject**를 보낼 때 기록됩니다. 예를 들어 퇴사한 직원의 메일함을 새 직원에게 할당한 경우에 발생할 수 있습니다. KeenAuth는 새 subject를 자동으로 연결하지 않습니다. 로그인은 `sso_subject_conflict`와 함께 거부되며, 관리자가 [해결](resolve-subject-conflict.md)할 수 있도록 레코드가 생성됩니다.

- 레코드가 열려 있는 동안 같은 subject로 발생한 추가 로그인은 새 레코드를 만드는 대신 해당 레코드를 업데이트합니다.
- 열린 레코드는 생성된 후 30일이 지나면 만료됩니다.
- 레코드에는 외부 subject나 이메일 주소가 포함되지 않습니다.

레코드는 사용자 계정과 관련되므로 권한은 `users:read`입니다. 레코드를 해결하려면 `users:write`가 필요합니다.

## 요청

| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| `connection_id` | path | 예 | 연결 ID(`conn_…`)입니다. |
| `limit` | query | 아니요 | 페이지 크기이며, 1–100 사이입니다(기본값 20). |
| `after` / `before` | query | 아니요 | `list_metadata`의 커서입니다. 커서는 이를 생성한 연결에서만 사용할 수 있습니다. |
| `order` | query | 아니요 | 생성 시간 기준 `desc`(기본값) 또는 `asc`입니다. |

## 응답

`200 OK`:

```json
{
  "data": [
    {
      "id": "sscf_01j9xr4a6b8c0d2e4f6g8h0j2k",
      "connection_id": "conn_01j9xp6q0r1s5t7v9w1x3y5z7b",
      "user_id": "usr_01j9xm2n4p6q8r0s2t4v6w8x0y",
      "status": "open",
      "resolution": null,
      "created_at": "2026-10-28T10:00:00Z",
      "last_seen_at": "2026-10-28T10:05:00Z",
      "expires_at": "2026-11-27T10:00:00Z",
      "closed_at": null
    }
  ],
  "list_metadata": { "before": null, "after": null }
}
```

| 필드 | 설명 |
|---|---|
| `user_id` | 확인된 이메일 주소의 소유자이며, 다른 subject로 이미 이 연결에 연결된 사용자입니다. |
| `status` | `open`(결정 대기 중), `resolved` 또는 `expired`(결정 없이 생성 후 30일이 지나 종료됨)입니다. |
| `resolution` | `same_person` 또는 `different_person`입니다. `status`가 `resolved`인 경우에만 설정됩니다. |
| `last_seen_at` | 새 subject로 시도한 가장 최근 로그인 시도입니다. |
| `closed_at` | 레코드가 해결되거나 만료된 시점입니다. 열려 있는 동안에는 `null`입니다. 만료된 레코드도 `null`로 표시될 수 있습니다. |

## 오류

| HTTP | code | 발생 조건 |
|---|---|---|
| 400 | `invalid_cursor` | 커서 형식이 잘못되었거나 다른 연결 또는 쿼리에 속합니다. |
| 401 | `unauthenticated` | 자격 증명이 없거나 잘못되었거나 취소되었습니다. |
| 403 | `insufficient_permissions` | 자격 증명에 `users:read` 권한이 없습니다. |
| 404 | `not_found` | 이 환경에 연결이 존재하지 않습니다. |
| 422 | `validation_failed` | 쿼리 매개변수가 잘못되었습니다(예: `limit`이 100을 초과함). |
| 429 | `rate_limited` | 요청 한도를 초과했습니다. `Retry-After` 기간 후에 다시 시도하십시오. |
| 503 | `service_unavailable` | 종속 서비스를 일시적으로 사용할 수 없습니다. `Retry-After` 기간 후에 다시 시도하십시오. |

## 예제

```bash
curl "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/subject-conflicts?limit=20" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

```bash
keenauth connections subject-conflicts list conn_01j9xp6q0r1s5t7v9w1x3y5z7b --limit 20
```
