Skip to main content

Permission Rules API

Manage the platform's declarative permission rules. Rules define which roles can perform which actions on which resources.

Most endpoints require Superadmin access. Space-scoped rules can be created by Space Admins.

Endpoints Overview​

MethodEndpointDescription
GET/permission-rulesList all rules
POST/permission-rulesCreate a rule
PATCH/permission-rules/{rule_id}Update a rule
DELETE/permission-rules/{rule_id}Delete a rule
POST/permission-rules/reset-defaultsReset to baseline
GET/permission-rules/resource-typesGet resource type config

List Rules​

GET /permission-rules

Requires: Superadmin

Query Parameters​

ParameterTypeDefaultDescription
resource_typestring—Filter by resource type
space_idUUID—Filter by space
include_disabledboolfalseInclude disabled rules
skipinteger0Pagination offset
limitinteger50Page size

Response​

{
"items": [
{
"id": "uuid",
"resource_type": "product",
"action": "edit",
"allowed_roles": ["superadmin", "space_admin", "owner"],
"condition_type": null,
"priority": 0,
"description": "Product owners and admins can edit",
"space_id": null,
"is_enabled": true,
"is_baseline": true,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-01T00:00:00Z"
}
],
"total": 42
}

Pagination headers (X-Total-Count, X-Page, X-Page-Size) are included in the response.


Create Rule​

POST /permission-rules

Requires: Superadmin (global rules) or Space Admin (space-scoped rules)

Request Body​

{
"resource_type": "ticket",
"action": "assign",
"allowed_roles": ["space_admin", "steward"],
"condition_type": null,
"priority": 10,
"description": "Only stewards and admins can assign tickets",
"space_id": null,
"is_enabled": true
}

Fields​

FieldTypeRequiredDescription
resource_typestring✅product, comment, ticket, meeting, request
actionstring✅view, edit, delete, create, approve, assign
allowed_rolesstring[]✅superadmin, space_admin, member, owner, steward
condition_typestring—is_author, is_owner, is_assignee, etc.
priorityinteger—Higher-priority rules are evaluated first (default: 0)
descriptionstring—Human-readable description
space_idUUID—Space scope (null = global)
is_enabledbool—Whether the rule is active (default: true)

Update Rule​

PATCH /permission-rules/{rule_id}

All fields are optional — only provided fields are updated.

{
"allowed_roles": ["superadmin", "space_admin"],
"is_enabled": false
}

Delete Rule​

DELETE /permission-rules/{rule_id}

Returns 204 No Content. Baseline rules cannot be deleted — returns 400.


Reset to Defaults​

POST /permission-rules/reset-defaults

Requires: Superadmin

Removes all custom rules and restores the baseline permission set.

{
"message": "Reset to defaults. 24 baseline rules restored."
}

Get Resource Types​

GET /permission-rules/resource-types

Requires: Superadmin

Returns the available resource types and their valid actions for use in rule creation UI.

Pipeline Authoring Note​

Permission rules are one layer of Pipeline Authoring authority. Workspace grants, repository and connector permissions, the immutable runtime permission profile, and exact effect approvals are evaluated separately; a rule cannot turn one approval type into another or expand the runtime profile. See Authoring Workspace Access and Authoring API Egress.