Policies API
Manage role-based access control policies.
List Policies
GET /api/policies
Returns the policy matrix for your organization.
Response
{
"policies": [
{
"id": "uuid",
"role": "IC",
"scope_key": "engineering",
"effect": "allow",
"updated_by": "uuid",
"updated_at": "2025-01-15T10:30:00Z"
}
]
}
Set Policy
POST /api/policies
Create or update a policy rule. Admin only (CEO role).
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
role | string | Yes | Role name (CEO, Manager, IC, Contractor) |
scope_key | string | Yes | Scope to grant/deny |
effect | string | Yes | allow or deny |
Response
{
"ok": true,
"policy": {
"id": "uuid",
"role": "IC",
"scope_key": "engineering",
"effect": "allow"
}
}
Policy Resolution
Policies are resolved per role. Deny always beats allow:
graph LR
A[Role: IC] --> B[Policy: allow engineering]
A --> C[Policy: allow public-docs]
A --> D[Policy: deny finance]
B --> E[Result: engineering ✅]
C --> F[Result: public-docs ✅]
D --> G[Result: finance ❌]
Error Responses
| Status | Description |
|---|---|
401 | Not authenticated |
403 | Not admin (CEO) |
400 | Invalid role or scope |