Replace the whole permission document
Replace every role and permission at once.
PUT/v1/apps/{appId}/rules
To add, rename or remove one role, prefer roles.create, roles.update and roles.delete. Each permissions[].tables has the shape shown in roles.setPermissions. To change one role’s permissions, prefer roles.setPermissions, which cannot affect others. Send the revision returned by rules.get as baseRevision; if someone else changed the document since, the save is refused with 409 instead of overwriting their change.
Requires the schema:write scope. Operation rules.set. Not an MCP tool. Replacing every role at once is how one agent’s edit erases another role’s. A model adds, renames, removes and narrows roles one at a time with roles.create, roles.update, roles.delete and roles.setPermissions, none of which can reach another role. The whole document stays on the API and the CLI. CLI: grid82 rules set (npx grid82).
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
appId | string | yes |
Headers
| Name | Type | Required | Description |
|---|---|---|---|
Idempotency-Key | string | no | Any unique string. Sending the same key with the same request again returns the first response (marked Idempotency-Replayed: true) instead of running it twice. Reusing it for a different request is refused with 409. Kept for 24 hours. Up to 255 characters. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
version | 2 | yes | |
roles | object[] | yes | 1 to 100 items. |
permissions | object[] | yes | Up to 100 items. |
baseRevision | string | no |
Response
Success
dataobjectrequiredRefused
errorobjectrequired