
# Mitgliedschaften eines Benutzers auflisten

`GET /v1/users/{user_id}/memberships` · Berechtigung `users:read`

Listet die Organisationsmitgliedschaften des Benutzers auf, sortiert nach Organisations-ID (aufsteigend). Es wird nur die Vorwärtspaginierung unterstützt; folgen Sie `list_metadata.after`, bis der Wert `null` ist. Der Cursor ist an den Benutzer und den Filter `status` gebunden. Ohne `status` enthält die Liste Mitgliedschaften mit den Status `invited`, `active` und `suspended`; entfernte Mitgliedschaften nur mit `status=removed`. Ein unbekannter Benutzer liefert `404`.

## Anfrage

| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| `user_id` | Pfad | ja | Benutzer-ID (`usr_…`). |
| `limit` | Query | nein | 1–100, Standard 20. |
| `after` | Query | nein | Cursor aus `list_metadata.after`. |
| `status` | Query | nein | `invited`, `active`, `suspended` oder `removed`. |

## Antwort

`200 OK` mit einer Seite von Mitgliedschaften.

```json
{
  "data": [
    {
      "id": "mem_01j9xn5p9s0t4v6w8x0y2z4a6c",
      "organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
      "user_id": "usr_01j9xh2k6p7q1r3s5t7v9w1x3y",
      "status": "active",
      "source": "admin_api",
      "reason": null,
      "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": null,
      "removed_at": null,
      "updated_at": "2026-10-12T10:00:00Z",
      "version": 2
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}
```

## Fehler

| HTTP | code | Wann |
|---|---|---|
| 400 | `invalid_cursor` | Der Cursor ist ungültig oder gehört zu einem anderen Benutzer oder Filter. |
| 404 | `not_found` | Der Benutzer existiert in dieser Umgebung nicht. |
| 422 | `validation_failed` | `status` oder `limit` ist ungültig oder wurde wiederholt, oder `before` bzw. eine `order`, die nicht `asc` ist, wurde angegeben. |
| 401 | `unauthenticated` | Die Berechtigungsnachweise fehlen, sind ungültig oder wurden widerrufen. |
| 403 | `insufficient_permissions` | Die Berechtigungsnachweise haben nicht die erforderliche Berechtigung. |
| 429 | `rate_limited` | Das Ratenlimit wurde überschritten; wiederholen Sie die Anfrage nach dem Zeitraum aus `Retry-After`. |
| 503 | `service_unavailable` | Eine Abhängigkeit ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach dem Zeitraum aus `Retry-After`. |

## Beispiel

```bash
curl -i "https://api.eu.keenauth.com/v1/users/usr_01j9xh2k6p7q1r3s5t7v9w1x3y/memberships?status=active&limit=20" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

## Personenbezogene Daten

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