Berechtigungen einer Rolle festlegen
PUT /fapi/v1/organizations/{org_id}/roles/{role_id}/permissions · wird vom Anmelde-Host der Umgebung aufgerufen
Ersetzt die Berechtigungsmenge einer Organisationsrolle. Es können nur Berechtigungen verwendet werden, die die Umgebung für Organisationsrollen zulässt, und Administratoren können nur Berechtigungen gewähren, die sie selbst besitzen. Berechtigungen und APIs können hier nicht angelegt werden. Erforderlich ist das Cookie __Host-idp_session des authentifizierten Benutzers; fehlt das Cookie, ist es abgelaufen oder widerrufen, wird 401 unauthenticated zurückgegeben. Eine Erstanbieter-Anwendung auf einem anderen Ursprung kann stattdessen ihr Front-API-Zugriffstoken senden (Authorization: DPoP <token> mit einem DPoP-Nachweis; siehe Front-API-Zugriffstoken). Der Benutzer muss aktives Mitglied der Organisation sein und die Berechtigung idp_roles:manage besitzen. Ein Benutzer, der kein Mitglied ist, erhält 404 not_found, damit die Existenz der Organisation nicht offengelegt wird; ein Mitglied ohne die Berechtigung erhält 403 insufficient_permissions. Organisationsrollen müssen für die Umgebung aktiviert und in deren Tarif enthalten sein.
Anfrage
Header:
| Header | Erforderlich | Beschreibung |
|---|---|---|
Idp-Client |
ja | SDK-Kennung. |
Origin |
ja | Muss exakt https://<sign-in host> sein. |
Content-Type |
mit Body | application/json. |
If-Match |
nein | "<version>" der Rolle, wie zuletzt gelesen; wurde die Rolle seitdem geändert, wird 412 precondition_failed zurückgegeben und nichts ändert sich. |
org_id: die Organisations-ID (org_…). role_id: die Rollen-ID (rol_…).
Body:
| Feld | Erforderlich | Beschreibung |
|---|---|---|
permission_ids |
ja | Die vollständige Menge, höchstens 100 Berechtigungs-IDs (perm_…); [] entfernt alle. |
Antwort
200 OK mit einem neuen ETag; der Body ist die Rolle (siehe Eine Organisationsrolle abrufen).
Fehler
| Status | Code | Wann |
|---|---|---|
| 401 | unauthenticated |
Kein gültiges Sitzungs-Cookie. |
| 403 | origin_not_allowed |
Origin fehlt oder ist falsch. |
| 403 | insufficient_permissions |
Der Benutzer besitzt idp_roles:manage in der Organisation nicht. |
| 403 | plan_feature_unavailable |
Der Tarif der Umgebung enthält keine Organisationsrollen (feature, required_plan). |
| 403 | org_custom_roles_disabled |
Organisationsrollen sind für die Umgebung deaktiviert. |
| 403 | role_not_assignable |
Die Rolle oder die neue Menge gewährt eine Berechtigung, die der Benutzer nicht besitzt, oder die eigene Mitgliedschaft des Benutzers trägt die Rolle. |
| 404 | not_found |
Für diesen Benutzer existiert keine solche Organisation oder Organisationsrolle; eine Umgebungsrolle, eine unbekannte, fehlerhafte oder fremde ID führt zur selben Antwort. |
| 409 | organization_pending_deletion |
Die Organisation ist zur Löschung vorgemerkt. |
| 412 | precondition_failed |
If-Match nennt nicht die aktuelle Version, oder die Rolle wurde während der Verarbeitung der Anfrage geändert. |
| 422 | permission_not_allowed |
Eine Berechtigung ist für Organisationsrollen nicht zulässig. |
| 422 | permission_reserved |
Eine Berechtigung ist der Plattform vorbehalten. |
| 422 | validation_failed |
Die Liste ist ungültig oder zu lang. |
| 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/roles/rol_01jbz6x8kq3m2n4p5r6s7t8v9w/permissions \
-H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
-H "Origin: https://example.keenauth.app" \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{"permission_ids":["perm_01jbz6x8kq3m2n4p5r6s7t8v9b"]}'