Mitgliedschaft aktualisieren
PATCH /v1/organizations/{org_id}/memberships/{membership_id} · Berechtigung organizations:write
Ändert die role_ids der Mitgliedschaft (die vollständige Menge der manuell zugewiesenen Rollen) oder expires_at mithilfe eines JSON-Merge-Patch (Content-Type: application/merge-patch+json). Beide Felder können in derselben Anfrage geändert werden; sie werden in einer einzigen Transaktion angewendet, sodass entweder beide geschrieben werden oder keines, und es wird ein einziger Audit-Eintrag organization_membership.updated erstellt. expires_at muss in der Zukunft liegen und höchstens 365 Tage nach der Erstellung der Mitgliedschaft. null entfernt das Enddatum. role_ids: null hat keine Wirkung. Für Rollen gelten die Regeln von PUT …/roles. Ein Feld, dessen Wert dem aktuellen Wert entspricht, wird nicht geschrieben. Der Schreibvorgang wird als organization_membership.updated protokolliert.
Anfrage
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
org_id |
Pfad | ja | Organisations-ID (org_…). |
membership_id |
Pfad | ja | Mitgliedschafts-ID (mem_…). |
If-Match |
Header | nein | Aktuelles ETag; falls angegeben, muss es übereinstimmen (412) und bindet den Schreibvorgang an diese Version. |
role_ids |
string[] | nein | Vollständige Menge der manuell zugewiesenen Rollen-IDs (rol_…), maximal 50. |
expires_at |
string | null | nein | Ende der Mitgliedschaft (RFC 3339); null entfernt es. |
Antwort
200 OK mit der aktualisierten Mitgliedschaft und ihrem ETag.
{
"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": "2027-01-01T00:00:00Z",
"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
}
Fehler
| HTTP | Code | Wann |
|---|---|---|
| 404 | not_found |
Die Mitgliedschaft existiert in dieser Organisation nicht. |
| 403 | role_not_assignable |
Eine Rolle ist weder eine Umgebungsrolle noch eine Rolle dieser Organisation. |
| 409 | last_org_admin |
Die Änderung würde die Organisation ohne aktiven Administrator zurücklassen. |
| 412 | precondition_failed |
If-Match stimmt nicht mit der aktuellen Version überein. |
| 415 | unsupported_media_type |
Der Body ist nicht application/merge-patch+json. |
| 422 | validation_failed |
expires_at liegt außerhalb des zulässigen Bereichs oder die Mitgliedschaft ist entfernt (invalid_state), oder ein Wert ist ungültig. |
| 401 | unauthenticated |
Die Anmeldedaten fehlen, sind ungültig oder wurden widerrufen. |
| 403 | insufficient_permissions |
Die Anmeldedaten besitzen nicht die erforderliche Berechtigung. Das Zuweisen einer privilegierten Rolle (is_privileged) erfordert zusätzlich roles:write; ohne sie wird nichts geschrieben und required_permissions listet beide Berechtigungen auf. |
| 429 | rate_limited |
Das Ratenlimit wurde überschritten; wiederholen Sie die Anfrage nach dem Zeitraum aus Retry-After. |
| 503 | service_unavailable |
Ein Dienst ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach dem Zeitraum aus Retry-After. |
Beispiel
curl -i -X PATCH "https://api.eu.keenauth.com/v1/organizations/org_01j9xk3m7q8r2s4t6v8w0y2z4a/memberships/mem_01j9xn5p9s0t4v6w8x0y2z4a6c" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/merge-patch+json" \
-d '{"expires_at":"2027-01-01T00:00:00Z"}'
Personenbezogene Daten
Dieser Endpunkt verarbeitet personenbezogene Daten: Organisationsmitgliedschaften und Einladungen. Personenbezogene Daten in den KeenAuth-APIs beschreibt, welche Daten gespeichert werden, wie lange sie aufbewahrt und wie sie gelöscht werden. Senden Sie in keinem Feld besondere Kategorien personenbezogener Daten (Gesundheit, biometrische Daten, Religion, politische Meinungen, sexuelle Orientierung).