
# Mitglied sperren

`POST /fapi/v1/organizations/{org_id}/memberships/{membership_id}:suspend` · aufgerufen vom Anmeldehost der Umgebung

Sperrt eine Mitgliedschaft. Das Mitglied behält seine Rollen, kann in der Organisation aber nicht mehr handeln: Seine Sitzungen und Token im Kontext dieser Organisation werden widerrufen, und es kann die Organisation nicht auswählen, bis ein Mitglied es [reaktiviert](/docs/api/fapi/organizations/memberships/reactivate). Ein bereits gesperrtes Mitglied zu sperren, liefert die unveränderte Mitgliedschaft. Der letzte aktive Admin kann nicht gesperrt werden (`409 last_org_admin`).

Erfordert das Cookie `__Host-idp_session` des authentifizierten Benutzers mit exaktem `Origin` oder ein Front-API-Zugriffstoken einer Erstanbieter-Anwendung (`Authorization: DPoP <token>` mit einem DPoP-Nachweis; siehe [Front-API-Zugriffstoken](/docs/api/fapi/front-api-token)). Der Benutzer muss aktives Mitglied der Organisation mit sowohl der Berechtigung `idp_members:update_roles` als auch `idp_members:remove` sein. Ein Benutzer, der kein Mitglied ist, erhält `404 not_found`; ein Mitglied ohne beide Berechtigungen erhält `403 insufficient_permissions`. Sie können hier Ihre eigene Mitgliedschaft nicht ändern (`403 insufficient_permissions`), und nur ein Mitglied mit der Admin-Rolle kann ein Mitglied mit einer privilegierten Rolle ändern (`403 role_not_assignable`).

Mit `@keenauth/js`: `await keenauth.organizations.suspendMember(orgId, membershipId, { expectedVersion: 3 })`.

## Anfrage

Header:

| Header | Pflicht | Beschreibung |
| --- | --- | --- |
| `Idp-Client` | ja | SDK-Kennung. |
| `Origin` | ja, mit dem Cookie | `https://<Anmeldehost>`. |
| `If-Match` | nein | Eine Version, `"<version>"`, aus der Mitgliederliste. Eine nicht passende Version oder mehr als eine Version liefert `412 precondition_failed`. |

`org_id`: Kennung der Organisation (`org_…`). `membership_id`: Kennung der Mitgliedschaft (`mem_…`).

Kein Body.

## Antwort

`200 OK` mit der Mitgliedschaft (dieselben Felder wie ein Eintrag in [der Mitgliederliste](/docs/api/fapi/organizations/memberships/list)) und `ETag: "<version>"`.

## Fehler

| Status | Code | Wann |
| --- | --- | --- |
| 400 | `malformed_request` | `If-Match` ist fehlerhaft. |
| 401 | `unauthenticated` | Kein gültiges Sitzungs-Cookie oder Token. |
| 403 | `insufficient_permissions` | Dem Benutzer fehlt `idp_members:update_roles` oder `idp_members:remove`, oder die Mitgliedschaft ist die eigene des Benutzers. |
| 403 | `role_not_assignable` | Das Mitglied hat eine privilegierte Rolle, und der Benutzer hat nicht die Admin-Rolle. |
| 403 | `origin_not_allowed` | Das `Origin` stimmt nicht überein. |
| 404 | `not_found` | Keine solche Organisation oder Mitgliedschaft für diesen Benutzer; eine unbekannte, fehlerhafte oder fremde Kennung führt zur gleichen Antwort. |
| 409 | `last_org_admin` | Das Mitglied ist der letzte aktive Admin der Organisation. |
| 409 | `organization_disabled` | Die Organisation ist deaktiviert oder zur Löschung vorgemerkt (`organization_pending_deletion`). |
| 412 | `precondition_failed` | `If-Match` nennt nicht die aktuelle Version der Mitgliedschaft. |
| 422 | `validation_failed` | Die Mitgliedschaft wurde entfernt. |
| 503 | `service_unavailable` | Vorübergehend nicht verfügbar; nach `Retry-After` erneut versuchen. |

## Beispiel

```bash
curl -X POST "https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a/memberships/mem_01jbz6x8kq3m2n4p5r6s7t8v9b:suspend" \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -H 'If-Match: "3"' \
  -b cookies.txt
```

```json
{
  "id": "mem_01jbz6x8kq3m2n4p5r6s7t8v9b",
  "user_id": "usr_01jbz6x8kq3m2n4p5r6s7t8v9c",
  "status": "suspended",
  "roles": [{ "role_id": "rol_01jbz6x8kq3m2n4p5r6s7t8v9w", "source": "admin_api" }],
  "created_at": "2026-11-03T09:00:00Z",
  "activated_at": "2026-11-03T09:00:00Z",
  "expires_at": null,
  "updated_at": "2026-11-03T11:00:00Z",
  "version": 4
}
```

## Personenbezogene Daten

Dieser Endpunkt verarbeitet personenbezogene Daten: Organisationsmitgliedschaften und Einladungen. [Personenbezogene Daten in den KeenAuth-APIs](/docs/policies/personal-data) beschreibt, was gespeichert wird, wie lange es aufbewahrt wird und wie es gelöscht wird. Senden Sie in keinem Feld besondere Kategorien personenbezogener Daten (Gesundheit, biometrische Daten, Religion, politische Meinungen, sexuelle Orientierung).
