Remove Role Membership
Revoke a specific (client_id, role_id) assignment. The pair is passed in the request body rather than the URL — gorilla/mux can't put both IDs in the path here, and using the body keeps the API symmetric with create.
Effect is immediate: the next request from this client no longer carries this role's permissions. If that was their only role, they retain authentication ability but get no permission grants — your upstream service should treat them as "logged in but unauthorised".
Path parameters
id string (uuid) Req
Endpoint UUID.
Request body
client_id int64 Req
RBAC client whose membership to remove.
role_id int64 Req
Role to revoke.
Response (200 OK)
Returns the full updated memberships array for the endpoint (same shape as List Role Memberships), not 204. Removing a non-existent pairing still returns 200 with the unchanged list.
Errors
400 Bad Request
Missing/non-positive
client_id or role_id, unknown fields, or invalid JSON.401 Unauthorized
Missing auth.
403 Forbidden
Caller lacks the
endpoints:delete permission in the active account.404 Not Found
Endpoint doesn't exist or doesn't belong to the calling account.
Request
curl -X DELETE "https://api.ngris.com/v1/endpoints/<uuid>/rbac/memberships" \
-H "X-API-KEY: <your_api_key>" \
-H "Content-Type: application/json" \
-d '{"client_id": 11, "role_id": 3}'
Python
from ngris import Ngris
client = Ngris(api_key="<your_api_key>")
client.endpoint_rbac.delete_membership("<endpoint_uuid>", {
"client_id": 11,
"role_id": 3,
})
Response — 200 OK
[
{"id": 41, "client_id": 11, "role_id": 1, "assigned_by": 1024, "created_at": "2026-04-01T00:00:00Z", "updated_at": "2026-04-01T00:00:00Z"}
]