Remplacer les autorisations d'un rôle d'environnement

PUT /v1/roles/{role_id}/permissions · autorisation roles:write

Remplace l'ensemble d'autorisations du rôle par permission_ids (l'ensemble complet ; un tableau vide retire toutes les autorisations ; l'ordre n'a pas d'importance). Un rôle d'environnement contient au plus 500 autorisations. Le rôle que les organisations utilisent comme rôle d'administrateur doit conserver toutes les autorisations système (permission_reserved). If-Match est facultatif ; s'il est fourni, il doit correspondre à l'ETag actuel. Réécrire le même ensemble ne change rien et conserve la version. La modification est auditée comme role.updated avec change=permissions, et les jetons émis après elle portent les nouvelles autorisations.

Demande

Paramètre Dans Requis Description
role_id path oui ID du rôle (rol_…).
If-Match header non ETag actuel ; 412 s'il ne correspond pas.
permission_ids string[] oui L'ensemble complet des ID d'autorisations (perm_…), au plus 500.

Réponse

200 OK avec le rôle et son ETag.

{
  "id": "rol_01j9xr7s1t2w6x8y0z2a4b6c8e",
  "organization_id": null,
  "key": "support",
  "name": "Support",
  "description": "",
  "is_privileged": false,
  "assignable_in_self_service": true,
  "permission_ids": [
    "perm_01j9xs0a2b4c6d8e0f2g4h6j8k",
    "perm_01j9xs0a2b4c6d8e0f2g4h6j8m"
  ],
  "created_at": "2026-10-12T09:31:00.123456Z",
  "updated_at": "2026-10-12T10:00:00Z",
  "version": 2
}

Erreurs

HTTP code Quand
404 not_found Le rôle n'existe pas dans cet environnement.
412 precondition_failed If-Match ne correspond pas à la version actuelle.
422 permission_reserved Le rôle est le rôle d'administrateur de l'organisation et l'ensemble retire une autorisation système.
422 validation_failed permission_ids est absent, contient un ID mal formé ou inconnu (unknown_permission), un doublon, ou plus de 500 éléments.
401 unauthenticated Le justificatif est absent, invalide ou révoqué.
403 insufficient_permissions Le justificatif ne possède pas l'autorisation requise.
429 rate_limited La limite de débit a été dépassée ; réessayez après la durée indiquée par Retry-After.
503 service_unavailable Une dépendance est temporairement indisponible ; réessayez après la durée indiquée par Retry-After.

Exemple

curl -i -X PUT "https://api.eu.keenauth.com/v1/roles/rol_01j9xr7s1t2w6x8y0z2a4b6c8e/permissions" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H 'If-Match: "1"' \
  -H "Content-Type: application/json" \
  -d '{"permission_ids":["perm_01j9xs0a2b4c6d8e0f2g4h6j8k","perm_01j9xs0a2b4c6d8e0f2g4h6j8m"]}'