
# Eine Mitgliedschaft sperren

`POST /v1/organizations/{org_id}/memberships/{membership_id}:suspend` · Berechtigung `organizations:write`

Sperrt eine aktive Mitgliedschaft (Grund `admin_suspended`). Ein gesperrtes Mitglied kann im Kontext der Organisation nicht anmelden, und seine Organisationssitzungen werden beendet. Der letzte aktive Admin der Organisation kann nicht gesperrt werden. Eine bereits gesperrte Mitgliedschaft zu sperren, schreibt nichts. Der Schreibvorgang wird als `organization_membership.updated` mit `change=suspended` protokolliert.

## Anfrage

| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| `org_id` | path | ja | Organisations-ID (`org_…`). |
| `membership_id` | path | ja | Mitgliedschafts-ID (`mem_…`). |
| `If-Match` | header | nein | Aktueller `ETag`; wenn angegeben, muss er übereinstimmen (`412`) und bindet den Schreibvorgang an diese Version. |

Kein Anfragekörper.

## Antwort

`200 OK` mit der aktualisierten Mitgliedschaft und ihrem `ETag`.

```json
{
  "id": "mem_01j9xn5p9s0t4v6w8x0y2z4a6c",
  "organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "user_id": "usr_01j9xh2k6p7q1r3s5t7v9w1x3y",
  "status": "suspended",
  "source": "admin_api",
  "reason": "admin_suspended",
  "roles": [
    {
      "role_id": "rol_01j9xr7s1t2w6x8y0z2a4b6c8e",
      "source": "admin_api",
      "assigned_at": "2026-10-12T09:31:00.123456Z"
    }
  ],
  "expires_at": null,
  "created_at": "2026-10-12T09:31:00.123456Z",
  "activated_at": "2026-10-12T09:31:00.123456Z",
  "suspended_at": "2026-10-12T10:00:00Z",
  "removed_at": null,
  "updated_at": "2026-10-12T10:00:00Z",
  "version": 2
}
```

## Fehler

| HTTP | code | Wann |
|---|---|---|
| 404 | `not_found` | Die Mitgliedschaft existiert in dieser Organisation nicht. |
| 409 | `last_org_admin` | Die Mitgliedschaft ist der letzte aktive Admin der Organisation. |
| 412 | `precondition_failed` | `If-Match` stimmt nicht mit der aktuellen Version überein. |
| 422 | `validation_failed` | Die Mitgliedschaft ist eingeladen oder entfernt (`/status invalid_state`). |
| 401 | `unauthenticated` | Die Anmeldedaten fehlen, sind ungültig oder widerrufen. |
| 403 | `insufficient_permissions` | Den Anmeldedaten fehlt die erforderliche Berechtigung. |
| 429 | `rate_limited` | Das Ratenlimit wurde überschritten; wiederholen Sie die Anfrage nach der Wartezeit aus `Retry-After`. |
| 503 | `service_unavailable` | Eine Abhängigkeit ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach der Wartezeit aus `Retry-After`. |

## Beispiel

```bash
curl -i -X POST "https://api.eu.keenauth.com/v1/organizations/org_01j9xk3m7q8r2s4t6v8w0y2z4a/memberships/mem_01j9xn5p9s0t4v6w8x0y2z4a6c:suspend" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H 'If-Match: "2"'
```

## 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. Übermitteln Sie in keinem Feld besondere Kategorien personenbezogener Daten (Gesundheit, biometrische Daten, Religion, politische Meinungen, sexuelle Orientierung).
