Définir les autorisations d'un rôle

PUT /fapi/v1/organizations/{org_id}/roles/{role_id}/permissions · appelé depuis l'hôte de connexion de l'environnement

Remplace l'ensemble des autorisations d'un rôle de l'organisation. Seules les autorisations que l'environnement autorise pour les rôles d'organisation peuvent être utilisées, et les administrateurs ne peuvent accorder que les autorisations qu'ils détiennent eux-mêmes. Les autorisations et les API ne peuvent pas être créées ici. Nécessite le cookie __Host-idp_session de l'utilisateur authentifié ; si le cookie est absent, expiré ou révoqué, renvoie 401 unauthenticated. Une application de première partie sur une autre origine peut à la place envoyer son jeton d'accès à l'API frontale (Authorization: DPoP <token> avec une preuve DPoP ; voir Jeton d'accès à l'API frontale). L'utilisateur doit être membre actif de l'organisation avec l'autorisation idp_roles:manage. Un utilisateur qui n'est pas membre reçoit 404 not_found, afin que l'existence de l'organisation ne soit pas divulguée ; un membre sans cette autorisation reçoit 403 insufficient_permissions. Les rôles d'organisation doivent être activés pour l'environnement et inclus dans son offre.

Requête

En-têtes :

En-tête Obligatoire Description
Idp-Client oui Identifiant du SDK.
Origin oui Doit être exactement https://<hôte de connexion>.
Content-Type avec un corps application/json.
If-Match non "<version>" du rôle tel que lu en dernier ; si le rôle a changé depuis, renvoie 412 precondition_failed et rien ne change.

org_id : l'identifiant de l'organisation (org_…). role_id : l'identifiant du rôle (rol_…).

Corps :

Champ Obligatoire Description
permission_ids oui L'ensemble complet, au maximum 100 identifiants d'autorisation (perm_…) ; [] retire toutes les autorisations.

Réponse

200 OK avec un nouvel ETag ; le corps est le rôle (voir Obtenir un rôle de l'organisation).

Erreurs

Statut Code Quand
401 unauthenticated Aucun cookie de session valide.
403 origin_not_allowed Origin est absent ou incorrect.
403 insufficient_permissions L'utilisateur ne dispose pas de idp_roles:manage dans l'organisation.
403 plan_feature_unavailable L'offre de l'environnement n'inclut pas les rôles d'organisation (feature, required_plan).
403 org_custom_roles_disabled Les rôles d'organisation sont désactivés pour l'environnement.
403 role_not_assignable Le rôle, ou le nouvel ensemble, accorde une autorisation que l'utilisateur ne détient pas, ou l'appartenance de l'utilisateur porte le rôle.
404 not_found Aucune organisation ou aucun rôle d'organisation correspondant pour cet utilisateur ; un rôle d'environnement, un identifiant inconnu, mal formé ou étranger reçoit la même réponse.
409 organization_pending_deletion L'organisation est programmée pour suppression.
412 precondition_failed If-Match ne désigne pas la version actuelle, ou le rôle a changé pendant le traitement de la requête.
422 permission_not_allowed Une autorisation n'est pas autorisée pour les rôles d'organisation.
422 permission_reserved Une autorisation est réservée à la plateforme.
422 validation_failed La liste est invalide ou trop longue.
503 service_unavailable Temporairement indisponible ; réessayer après Retry-After.

Exemple

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"]}'