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

FieldTypeRequiredDescription
rolestringYesRole name (CEO, Manager, IC, Contractor)
scope_keystringYesScope to grant/deny
effectstringYesallow 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

StatusDescription
401Not authenticated
403Not admin (CEO)
400Invalid role or scope