
# Eine Anwendung aussetzen

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

Setzt den `status` der Anwendung auf `suspended`. Ab dann kann die Anwendung keine neuen Tokens mehr erhalten: Autorisierung, PAR, Geräteautorisierung, der Token-Endpunkt (einschließlich Refresh und `client_credentials`), Introspection und Widerruf lehnen sie als Client ab. Die Aussetzung beendet außerdem, was die Anwendung bereits besitzt: KeenAuth widerruft ihre aktiven Refresh-Token-Familien, die vor der Aussetzung geöffnet wurden (Grund `client_revoked`), und markiert ihre `client_id`, sodass Introspection und Userinfo Access-Token ablehnen, die ihr vor diesem Zeitpunkt ausgestellt wurden. Ein Resource Server, der nur die Signatur des JWT prüft, akzeptiert ein solches Access-Token bis zu seinem Ablauf weiterhin. Die Client-Zugangsdaten der Anwendung bleiben erhalten, daher benötigt das Fortsetzen kein neues Secret. Die Anfrage hat keinen Body (leer oder `{}`). Das Aussetzen einer bereits ausgesetzten Anwendung ändert nichts und liefert die aktuelle Anwendung mit derselben Version. Die Änderung wird als `application.updated` im Verwaltungs-Audit-Log protokolliert und als Ereignisse `application_changed` und `application_status_changed` veröffentlicht.

## Anfrage

**Header**: `If-Match: "<version>"` (optional). Mit `If-Match` gilt die Änderung nur für diese Version (sonst `412`); ohne Header wird die neueste Version verwendet, und die Anfrage wird wiederholt, wenn ein anderer Schreibvorgang die Anwendung gleichzeitig ändert. Senden Sie einen `Idempotency-Key`-Header, damit Wiederholungen sicher sind.

| Parameter | In | Pflicht | Beschreibung |
|---|---|---|---|
| `application_id` | path | ja | Anwendungs-ID, mit `app_` beginnend. |

## Antwort

`200 OK` mit der Anwendung (`"status": "suspended"`) und ihrem `ETag`.

## Fehler

Jeder Fehler ist ein `application/problem+json`-Body mit einem stabilen `code`.

| HTTP | `code` | Wann |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | Ein Body wurde gesendet, der kein gültiges JSON ist oder ein Feld enthält. |
| 401 | `unauthenticated` | Der API-Schlüssel fehlt, ist ungültig oder widerrufen. |
| 403 | `insufficient_permissions` | Der Schlüssel hat nicht die Berechtigung `applications:write`. |
| 404 | `not_found` | Die Anwendung existiert in dieser Umgebung nicht (oder die ID ist fehlerhaft). |
| 412 | `precondition_failed` | Die Version in `If-Match` ist veraltet. |
| 429 | `rate_limited` | Das Ratenlimit wurde überschritten; `Retry-After` beachten. |
| 503 | `service_unavailable` | Eine Abhängigkeit ist vorübergehend nicht verfügbar; später erneut versuchen. |

## Beispiel

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