Rollen eines Mitglieds festlegen

PUT /fapi/v1/organizations/{org_id}/memberships/{membership_id}/roles · aufgerufen vom Anmeldehost der Umgebung

Ersetzt die Rollen einer Mitgliedschaft durch eine vollständige Menge, für eine Profilansicht der Organisation. Die Menge umfasst nur die Rollen, die Sie in dieser Organisation sehen können: ihre eigenen Rollen und die Umgebungsrollen, die Organisations-Admins offenstehen. Die übrigen Rollen des Mitglieds bleiben erhalten. Eine leere Menge entfernt alle Rollen, die Sie sehen können; hat das Mitglied danach keine Rolle mehr, wird ihm die Standardrolle der Organisation zugewiesen.

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). Der Benutzer muss aktives Mitglied der Organisation mit der Berechtigung idp_members:update_roles sein. Ein Benutzer, der kein Mitglied ist, erhält 404 not_found; ein Mitglied ohne die Berechtigung erhält 403 insufficient_permissions.

Zuweisungsregeln:

Mit @keenauth/js: await keenauth.organizations.setMemberRoles(orgId, membershipId, [roleId], { 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_…).

Body: {"role_ids": ["rol_…"]}, höchstens 50 Rollen. role_ids ist erforderlich; [] ist eine gültige Menge.

Antwort

200 OK mit der Mitgliedschaft (dieselben Felder wie ein Eintrag in der Mitgliederliste) und ETag: "<version>".

Fehler

Status Code Wann
400 malformed_request If-Match ist fehlerhaft.
400 unknown_field Der Body enthält ein anderes Feld als role_ids.
401 unauthenticated Kein gültiges Sitzungs-Cookie oder Token.
403 insufficient_permissions Dem Benutzer fehlt idp_members:update_roles in der Organisation.
403 role_not_assignable Eine der obigen Zuweisungsregeln verweigert die Änderung.
403 origin_not_allowed Das Origin stimmt nicht überein.
404 not_found Keine solche Organisation, Mitgliedschaft oder Rolle für diesen Benutzer; eine unbekannte, fehlerhafte oder fremde Kennung führt zur gleichen Antwort.
409 last_org_admin Die Änderung würde die Organisation ohne aktiven Admin zurücklassen.
409 role_limit_reached Das Mitglied würde mehr als 50 Rollen halten.
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 role_ids fehlt, ist zu lang oder enthält eine fehlerhafte Kennung.
503 service_unavailable Vorübergehend nicht verfügbar; nach Retry-After erneut versuchen.

Beispiel

curl -X PUT "https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a/memberships/mem_01jbz6x8kq3m2n4p5r6s7t8v9b/roles" \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -H "Content-Type: application/json" \
  -H 'If-Match: "3"' \
  -b cookies.txt \
  -d '{"role_ids":["rol_01jbz6x8kq3m2n4p5r6s7t8v9w"]}'
{
  "id": "mem_01jbz6x8kq3m2n4p5r6s7t8v9b",
  "user_id": "usr_01jbz6x8kq3m2n4p5r6s7t8v9c",
  "status": "active",
  "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-03T10:00:00Z",
  "version": 4
}

Personenbezogene Daten

Dieser Endpunkt verarbeitet personenbezogene Daten: Organisationsmitgliedschaften und Einladungen. Personenbezogene Daten in den KeenAuth-APIs 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).