Update RBAC Role
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"
}