
# 애플리케이션 일시 중지

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

애플리케이션의 `status`를 `suspended`로 설정합니다. 이후 애플리케이션은 새 토큰을 받을 수 없습니다. 인가, PAR, 기기 인가, 토큰 엔드포인트(리프레시 및 `client_credentials` 포함), 내성(introspection), 해지는 모두 이 애플리케이션을 클라이언트로 거부합니다. 일시 중지는 애플리케이션이 이미 가진 것도 종료합니다. KeenAuth는 일시 중지 이전에 열린 활성 리프레시 토큰 패밀리를 해지하고(사유 `client_revoked`), 해당 `client_id`를 표시하므로, 내성과 userinfo는 그 시점 이전에 발급된 액세스 토큰을 거부합니다. JWT 서명만 검증하는 리소스 서버는 만료될 때까지 그런 액세스 토큰을 계속 받아들입니다. 애플리케이션의 클라이언트 자격 증명은 유지되므로, 다시 활성화할 때 새 시크릿이 필요하지 않습니다. 요청에는 본문이 없습니다(비어 있거나 `{}`). 이미 일시 중지된 애플리케이션을 일시 중지해도 아무것도 바뀌지 않으며, 같은 버전의 현재 애플리케이션을 반환합니다. 이 변경은 관리 감사 로그에 `application.updated`로 기록되고 `application_changed` 및 `application_status_changed` 이벤트로 게시됩니다.

## 요청

**헤더**: `If-Match: "<version>"`(선택). `If-Match`를 보내면 변경은 해당 버전에만 적용됩니다(아니면 `412`). 없으면 최신 버전을 사용하며, 다른 작성자가 같은 시점에 애플리케이션을 바꾸면 요청을 다시 시도합니다. 재시도를 안전하게 하려면 `Idempotency-Key` 헤더를 보내십시오.

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

## 응답

`200 OK`와 함께 애플리케이션(`"status": "suspended"`)과 해당 `ETag`를 반환합니다.

## 오류

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

| HTTP | `code` | 발생 시점 |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | 유효한 JSON이 아니거나 알 수 없는 필드가 있는 본문을 보낸 경우. |
| 401 | `unauthenticated` | API 키가 없거나, 잘못되었거나, 해지되었습니다. |
| 403 | `insufficient_permissions` | 키에 `applications:write` 권한이 없습니다. |
| 404 | `not_found` | 이 환경에 애플리케이션이 없습니다(또는 ID 형식이 잘못되었습니다). |
| 412 | `precondition_failed` | `If-Match`의 버전이 오래되었습니다. |
| 429 | `rate_limited` | 속도 제한을 초과했습니다. `Retry-After`를 따르십시오. |
| 503 | `service_unavailable` | 종속 구성 요소를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하십시오. |

## 예제

```bash
curl -X POST https://api.eu.keenauth.com/v1/applications/app_6f8d0cjgbmf0gtn2rg6pscp3cg:suspend \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
```

CLI: `keenauth applications suspend app_6f8d0cjgbmf0gtn2rg6pscp3cg --yes`
