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_typestringFilter by resource type
space_idUUIDFilter 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_typestringproduct, comment, ticket, meeting, request
actionstringview, edit, delete, create, approve, assign
allowed_rolesstring[]superadmin, space_admin, member, owner, steward
condition_typestringis_author, is_owner, is_assignee, etc.
priorityintegerHigher-priority rules are evaluated first (default: 0)
descriptionstringHuman-readable description
space_idUUIDSpace scope (null = global)
is_enabledboolWhether 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.