Sostituisci i ruoli diretti di un utente
PUT /v1/users/{user_id}/roles · permesso users:write
Sostituisce i ruoli diretti di ambiente dell'utente con role_ids (l'insieme completo, al massimo 50; un array vuoto li rimuove tutti). I ruoli di organizzazione non possono essere assegnati direttamente; assegnali tramite un'appartenenza all'organizzazione. Riscrivere lo stesso insieme non cambia nulla. Una modifica contrassegna le famiglie di refresh token dell'utente con roles_changed, così il successivo refresh include i nuovi ruoli, ed è registrata nell'audit come user.updated con change=roles. Se l'insieme contiene un ruolo privilegiato (is_privileged), che sia appena aggiunto o mantenuto, la credenziale deve avere anche roles:write; rimuovere un ruolo privilegiato dall'insieme richiede solo users:write.
Richiesta
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
user_id |
path | sì | ID utente (usr_…). |
role_ids |
string[] | sì | L'insieme completo degli ID dei ruoli di ambiente (rol_…), al massimo 50. |
Risposta
200 OK con i nuovi ID dei ruoli.
{
"role_ids": [
"rol_01j9xr7s1t2w6x8y0z2a4b6c8e"
]
}
Errori
| HTTP | code | Quando |
|---|---|---|
| 403 | role_not_assignable |
Un ruolo è un ruolo di organizzazione. |
| 404 | not_found |
L'utente non esiste in questo ambiente. |
| 422 | validation_failed |
role_ids manca, contiene un ID malformato o sconosciuto (unknown_role), un duplicato, oppure più di 50 elementi. |
| 401 | unauthenticated |
La credenziale manca, non è valida o è stata revocata. |
| 403 | insufficient_permissions |
La credenziale non ha il permesso richiesto. Assegnare un ruolo privilegiato (is_privileged) richiede anche roles:write; senza di esso non viene scritto nulla e required_permissions elenca entrambi i permessi. |
| 429 | rate_limited |
È stato superato il limite di richieste; riprova dopo il periodo indicato in Retry-After. |
| 503 | service_unavailable |
Una dipendenza non è disponibile temporaneamente; riprova dopo il periodo indicato in Retry-After. |
Esempio
curl -i -X PUT "https://api.eu.keenauth.com/v1/users/usr_01j9xh2k6p7q1r3s5t7v9w1x3y/roles" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"role_ids":["rol_01j9xr7s1t2w6x8y0z2a4b6c8e"]}'