Update RBAC Role

PUT /v1/endpoints/{id}/rbac/roles/{role_id}

Edit a role's name, description, priority, permissions, or default-assignment flag. Changes take effect on the next request from any client holding this role.

Be careful with permission changes — narrowing permissions is felt by everyone with the role. To stage the change, create a new role with the new permissions, migrate clients over, then delete the old one.

Path parameters

id string (uuid) Req
Endpoint UUID.
role_id int64 Req
Role ID.

Request body

Same fields as create. name is required. Omitting priority or is_default keeps the existing value; sending an empty/zeroed permissions object keeps the existing permissions (it is not cleared).

Response (200 OK)

The updated role (same shape as list entries).

Errors

400 Bad Request
Missing/invalid name, invalid JSON, or a duplicate role name (surfaced as an update failure, not a dedicated 409).
401 Unauthorized
Missing auth.
403 Forbidden
Caller lacks the endpoints:update permission in the active account.
404 Not Found
Endpoint doesn't belong to the calling account, or role not found.
Request
curl -X PUT "https://api.ngris.com/v1/endpoints/<uuid>/rbac/roles/3" \ -H "X-API-KEY: <your_api_key>" \ -H "Content-Type: application/json" \ -d '{ "name": "readonly", "description": "GET-only — Tier 1", "permissions": {"allowed_methods": ["GET"]}, "is_default": false }'
Python
from ngris import Ngris client = Ngris(api_key="<your_api_key>") client.endpoint_rbac.update_role( "<endpoint_uuid>", "3", { "name": "readonly", "description": "GET-only — Tier 1", "permissions": {"allowed_methods": ["GET"]}, "is_default": False, }, )
Response — 200 OK
{ "id": 3, "name": "readonly", "description": "GET-only — Tier 1", "priority": 10, "is_default": false, "permissions": {"allowed_methods": ["GET"]}, "created_at": "2026-04-01T00:00:00Z", "updated_at": "2026-04-29T15:00:00Z" }
On this page
Update RBAC Role
Iris