
# 애플리케이션 업데이트

`PATCH /v1/applications/{application_id}` · 권한 `applications:write`

JSON 병합 패치(`application/merge-patch+json`, RFC 7396)를 사용하여 애플리케이션을 업데이트합니다: 전송한 필드가 변경되고, `null`은 nullable 필드를 지우고, 배열은 전체적으로 바뀝니다. `If-Match`가 필수입니다: 이것이 없으면 요청이 `428`로 실패하고, 오래된 버전이면 `412`로 실패합니다. 불변 필드(`key`, `app_type`, `registration_source` 및 `owner_org_id`)는 다른 값을 전송하면 코드 `immutable`과 함께 `422`를 반환합니다. 변경하지 않는 패치는 애플리케이션과 해당 버전을 그대로 유지합니다.

## 요청

**Headers**: `If-Match: "<version>"` (필수), `Content-Type: application/merge-patch+json`.

**Path**: `application_id` (`app_…`).

**Body**: 생성 페이지에 나열된 쓰기 가능 필드의 모든 부분집합(`key`, `name`, `app_type`, … `connection_ids`). `null`은 nullable인 필드를 지웁니다. 배열은 전체 목록을 바꾸고, `jwks`는 객체로 바뀝니다. 읽기 전용 필드(`id`, `client_id`, `version`, `created_at`, `updated_at`, `last_token_issued_at`, `last_token_asn`)는 거부됩니다.

## 응답

`200 OK`와 업데이트된 애플리케이션 및 새 `ETag`.

## 오류

| HTTP | `code` | 조건 |
|---|---|---|
| 401 | `unauthenticated` | 키가 누락되었거나, 유효하지 않거나, 취소되었습니다. |
| 403 | `insufficient_permissions` | 키에 필요한 권한이 없습니다. |
| 404 | `not_found` | 이 환경에서 애플리케이션이 존재하지 않습니다. |
| 428 | `precondition_required` | `If-Match` 헤더가 누락되었습니다. |
| 412 | `precondition_failed` | `If-Match`의 버전이 오래되었습니다. |
| 422 | `validation_failed` | 필드가 유효하지 않거나 불변 필드가 변경되었습니다. |
| 422 | `policy_conflict` | `allowed_first_factors`에 환경의 첫 번째 인수 집합과 공통된 방법이 없습니다. |
| 400 | `unknown_field` | 패치에 스키마에 없는 필드가 있습니다(`id` 같은 읽기 전용 필드 포함). |
| 415 | `unsupported_media_type` | `Content-Type`이 `application/merge-patch+json`이 아닙니다. |

## 예제

```bash
curl -X PATCH https://api.eu.keenauth.com/v1/applications/app_6f8d0cjgbmf0gtn2rg6pscp3cg \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/merge-patch+json" \
  -H 'If-Match: "1"' \
  -d '{"name":"Portal v2","login_host":null}'
```
