
# 관리 클라이언트 수정

`PATCH /v1/management-clients/{application_id}` · 권한 `management-clients:write`

JSON 병합 패치(RFC 7396, `application/merge-patch+json`)로 관리 클라이언트 레코드를 수정합니다. 보낸 필드만 바뀌고 나머지는 그대로 유지됩니다. `If-Match`는 필수입니다. 없으면 요청은 `428`로 실패하고, 현재 버전과 일치하지 않으면 `412`로 실패합니다. API 키만 이 엔드포인트를 호출할 수 있습니다.

## 요청

| 매개변수 | 위치 | 설명 |
|---|---|---|
| `application_id` | 경로 | 애플리케이션 ID(`app_…`). |
| `If-Match` | 헤더 | 마지막 읽기 또는 쓰기에서 받은 `ETag`. |

본문: 아래 필드 중 아무거나.

| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| `permissions` | string[] | 아니요 | 알려진 `<resource>:<action>` 권한 1~200개. 목록 전체를 대체합니다. `null`일 수 없습니다. |
| `allowed_cidrs` | string[] \| null | 아니요 | 최대 20개의 CIDR 블록. 목록 전체를 대체합니다. `null` 또는 `[]`이면 호출 키 자신의 목록을 사용합니다. |

아무것도 바꾸지 않는 패치는 레코드, 그 버전, 감사 로그를 그대로 둡니다. 제한된 키는 자신보다 넓은 레코드를 바꿀 수 없습니다(`403 permission_escalation`).

## 응답

`200 OK`, 새 `ETag`와 함께 반환됩니다.

```json
{
  "application_id": "app_01h455vb4pex5vsknk084sn02q",
  "permissions": ["users:read"],
  "allowed_cidrs": ["203.0.113.0/24"]
}
```

## 오류

| HTTP | code | 발생 조건 |
|---|---|---|
| 400 | `unknown_field` | 패치에 `permissions`와 `allowed_cidrs` 외의 필드가 있습니다. |
| 403 | `permission_escalation` | 레코드 또는 패치 적용 후 레코드가 호출 키보다 넓습니다. |
| 404 | `not_found` | 이 환경에서 해당 애플리케이션에 레코드가 없습니다. |
| 412 | `precondition_failed` | `If-Match`가 현재 버전과 일치하지 않습니다. |
| 415 | `unsupported_media_type` | 콘텐츠 타입이 `application/merge-patch+json`이 아닙니다. |
| 422 | `validation_failed` | `permissions`가 `null`이거나 비어 있거나 알 수 없는 권한을 포함하거나, CIDR이 올바르지 않습니다. |
| 428 | `precondition_required` | `If-Match`가 없습니다. |

## 예제

```bash
curl -X PATCH https://api.eu.keenauth.com/v1/management-clients/app_01h455vb4pex5vsknk084sn02q \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/merge-patch+json" \
  -H 'If-Match: "3f2a9c0d7b1e4a6f8c5d2e1b0a9f8e7d"' \
  -d '{"permissions":["users:read"]}'
```

CLI: `keenauth management-clients update app_01h455vb4pex5vsknk084sn02q --permissions users:read --if-match '"3f2a9c0d7b1e4a6f8c5d2e1b0a9f8e7d"'`
