
# 애플리케이션 연결 바꾸기

`PUT /v1/applications/{application_id}/connections` · 권한 `applications:write` 및 `connections:write`

애플리케이션에서 활성화된 연결 목록 전체를 한 번에 바꿉니다. `connection_ids`의 순서는 호스팅된 로그인 페이지의 버튼 순서입니다. 빈 목록은 모든 연결을 비활성화합니다. 각 연결은 같은 환경에 있어야 합니다. 다른 환경의 연결은 존재하지 않는 것으로 취급되며(`/connection_ids`에서 `422`), 아무것도 기록되지 않습니다. 애플리케이션이 이미 가진 목록을 보내도 아무것도 바뀌지 않고 버전도 유지됩니다. 이 변경은 관리 감사 로그에 `application.updated`로 기록되고 `application_changed` 이벤트로 게시됩니다. 연결을 제거하면 다음 로그인부터 적용됩니다.

## 요청

**헤더**: `If-Match: "<version>"`(선택). `If-Match`를 지정하면 애플리케이션이 해당 버전일 때에만 목록이 기록됩니다(그렇지 않으면 `412`). 지정하지 않으면 버전과 관계없이 목록이 기록됩니다. 재시도를 안전하게 하려면 `Idempotency-Key` 헤더를 보내십시오.

| 매개변수 | 위치 | 필수 | 설명 |
|---|---|---|---|
| `application_id` | path | 예 | 애플리케이션 ID. 접두사는 `app_`입니다. |

**본문**

| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
| `connection_ids` | 문자열 배열 | 예 | 연결 ID(`conn_…`). 고유해야 하며, 최대 100개이고, 버튼 순서대로 지정합니다. |

## 응답

`200 OK`와 함께 애플리케이션 및 새 `ETag`를 반환합니다.

## 오류

모든 오류는 안정적인 `code`를 가진 `application/problem+json` 본문입니다.

| HTTP | `code` | 발생 조건 |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | 본문이 유효한 JSON이 아니거나 알 수 없는 필드가 있습니다. |
| 401 | `unauthenticated` | API 키가 없거나, 잘못되었거나, 해지되었습니다. |
| 403 | `insufficient_permissions` | 키에 `applications:write` 또는 `connections:write` 권한이 없습니다. |
| 404 | `not_found` | 이 환경에 애플리케이션이 없습니다(또는 ID 형식이 잘못되었습니다). |
| 412 | `precondition_failed` | `If-Match`의 버전이 오래되었습니다. |
| 422 | `validation_failed` | `connection_ids`가 없거나, 100개를 초과하거나, ID 형식이 잘못되었거나 중복되었거나, 이 환경에 없는 연결이 포함되어 있습니다. |
| 429 | `rate_limited` | 요청 한도를 초과했습니다. `Retry-After`를 따르십시오. |
| 503 | `service_unavailable` | 종속 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하십시오. |

## 예시

```bash
curl -X PUT https://api.eu.keenauth.com/v1/applications/app_6f8d0cjgbmf0gtn2rg6pscp3cg/connections \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"connection_ids":["conn_01h455vb4pex5vsknk084sn02q"]}'
```

CLI: `keenauth applications put-connections app_6f8d0cjgbmf0gtn2rg6pscp3cg --connection-ids conn_01h455vb4pex5vsknk084sn02q` (모든 연결을 비활성화하려면 `--data -`와 함께 `{"connection_ids":[]}`를 보내십시오)
