
# Sitzungen einer Organisation widerrufen

`POST /v1/organizations/{org_id}/sessions:revoke` · Berechtigung `sessions:write`

Widerruft jede aktive Sitzung, die im Kontext der Organisation geöffnet wurde, für alle ihre Benutzer, zusammen mit den Refresh-Token-Familien, die für die Organisation ausgestellt wurden oder an diese Sitzungen gebunden sind. Access-Token, die für die Organisation ausgestellt wurden, werden ab diesem Zeitpunkt von Introspection und der Widerrufsprüfung nicht mehr akzeptiert. Verwenden Sie dies nach einem Sicherheitsvorfall oder wenn eine Organisation offboardet wird; um einen einzelnen Benutzer oder eine einzelne Sitzung abzumelden, verwenden Sie [Sitzungen eines Benutzers widerrufen](../users/revoke-sessions.md).

Der Body muss einen `reason` enthalten. Er wird nur als Notiz im Verwaltungs-Audit-Datensatz gespeichert; die Sitzungen selbst enden mit dem Widerrufsgrund `admin`. Bereits widerrufene oder abgelaufene Sitzungen werden nicht mitgezählt; ein wiederholter Aufruf gelingt daher mit Anzahl null. Senden Sie einen `Idempotency-Key`-Header, damit Wiederholungen sicher sind.

## Anfrage

| Parameter | In | Erforderlich | Beschreibung |
|---|---|---|---|
| `org_id` | path | ja | Organisations-ID mit Präfix `org_`. |

Body:

| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| `reason` | string | ja | Ihre Notiz für das Audit-Log: 1-256 Zeichen, keine Steuerzeichen und keine Zeilenumbrüche. |

## Antwort

`200 OK`.

```json
{
  "revoked_sessions": 42,
  "revoked_token_families": 57
}
```

| Feld | Beschreibung |
|---|---|
| `revoked_sessions` | Durch diesen Aufruf widerrufene Sitzungen. |
| `revoked_token_families` | Durch diesen Aufruf widerrufene Refresh-Token-Familien. |

## Fehler

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

| HTTP | `code` | Wann |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | Der Body ist kein gültiges JSON oder enthält ein unbekanntes Feld. |
| 415 | `unsupported_media_type` | Ein Body wurde ohne `Content-Type: application/json` gesendet. |
| 422 | `validation_failed` | `reason` fehlt oder ist leer (`required`), ist länger als 256 Zeichen (`too_long`) oder enthält ein Steuerzeichen bzw. einen Zeilenumbruch (`invalid_value`). |
| 404 | `not_found` | Die Organisation existiert in dieser Umgebung nicht. |
| 401 | `unauthenticated` | Der API-Schlüssel fehlt, ist ungültig oder widerrufen. |
| 403 | `insufficient_permissions` | Dem Schlüssel fehlt die Berechtigung `sessions:write`. |
| 429 | `rate_limited` | Das Ratenlimit wurde überschritten; beachten Sie `Retry-After`. |
| 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/organizations/org_0a1b2c3d4e5f6g7h8j9k0m1n2p/sessions:revoke \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"reason": "Security incident INC-1042"}'
```

CLI: `keenauth organizations sessions revoke org_0a1b2c3d4e5f6g7h8j9k0m1n2p --reason "Security incident INC-1042" --yes`
