
# Uygulamayı askıya al

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

Uygulamanın `status` alanını `suspended` yapar. Bundan sonra uygulama yeni token alamaz: yetkilendirme, PAR, cihaz yetkilendirmesi, token ucu (refresh ve `client_credentials` dahil), introspection ve iptal ucu onu istemci olarak reddeder. Askı, uygulamanın elindekini de sonlandırır: KeenAuth askıdan önce açılmış aktif refresh token ailelerini iptal eder (neden `client_revoked`) ve `client_id`'sini işaretler; introspection ve userinfo o ana dek verilmiş access token'ları reddeder. Yalnız JWT imzasını doğrulayan bir kaynak sunucusu böyle bir access token'ı süresi dolana dek kabul etmeye devam eder. Uygulamanın istemci kimlik bilgileri silinmez; yeniden etkinleştirmek yeni sır gerektirmez. İsteğin gövdesi yoktur (boş ya da `{}`). Zaten askıdaki uygulamada bir şey değişmez; güncel uygulama aynı sürümle döner. Değişiklik yönetim audit'ine `application.updated` olarak yazılır ve `application_changed` ile `application_status_changed` olayları yayımlanır.

## İstek

**Başlıklar**: `If-Match: "<sürüm>"` (isteğe bağlı). `If-Match` verilirse değişiklik yalnız o sürüme uygulanır (değilse `412`); verilmezse en güncel sürüm kullanılır ve aynı anda başka bir yazar uygulamayı değiştirirse istek yeniden denenir. Yeniden denemeleri güvenli kılmak için `Idempotency-Key` başlığı gönderin.

| Parametre | Yer | Zorunlu | Açıklama |
|---|---|---|---|
| `application_id` | path | evet | `app_` önekli uygulama kimliği. |

## Yanıt

`200 OK`; uygulama (`"status": "suspended"`) ve `ETag`.

## Hatalar

Her hata kararlı bir `code` taşıyan `application/problem+json` gövdesidir.

| HTTP | `code` | Ne zaman |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | Geçerli JSON olmayan ya da alan taşıyan bir gövde gönderildi. |
| 401 | `unauthenticated` | API anahtarı yok, geçersiz ya da iptal edilmiş. |
| 403 | `insufficient_permissions` | Anahtarda `applications:write` izni yok. |
| 404 | `not_found` | Uygulama bu ortamda yok (ya da kimlik bozuk). |
| 412 | `precondition_failed` | `If-Match`'teki sürüm eski. |
| 429 | `rate_limited` | Hız sınırı aşıldı; `Retry-After`'a uyun. |
| 503 | `service_unavailable` | Bir bağımlılık geçici olarak erişilemez; sonra yeniden deneyin. |

## Örnek

```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`
