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).