Skip to content

API Authentication

REST endpoints currently require API-key bearer authentication.

Terminal window
curl "https://roster.example.com/api/v1/projects?limit=10" \
-H "Authorization: Bearer ${ROSTER_API_KEY}"

API keys carry explicit api:* scopes. Endpoints also enforce platform authorization rules for the owning identity. Effective access is key scopes ∩ owner rights ∩ resource rules; scopes never elevate the key owner.

See Authorization for project ownership, entity CRUD, delegation, and resolve-access rules.

Authentication and authorization failures return strict Problem Details responses. Clients should branch on HTTP status and type, not on legacy error or message fields.

ScopePurpose
api:resolveRun resolve requests through REST.
api:resolve-requests:readRead visible resolve request history.
api:projects:readRead visible projects.
api:projects:writeCreate, update, or delete manageable projects.
api:participants:readRead visible participants and directory associations.
api:participants:writeManage participants and participant members.
api:labels:readRead the global label catalog as an active authenticated identity.
api:labels:writeManage labels as an admin or effective project owner.
api:delegations:readRead visible delegations.
api:delegations:writeCreate, update, or revoke delegations.

Write scopes include their matching read scopes when generated through Roster’s scope presets. Scopes grant access to a surface, but the API-key owner still needs the matching platform role and project read or management access for the target entity.

EntityRequired scopesPlatform rule
Projects

api:projects:read, api:projects:write

Reads follow project status and read access. Admins operate globally. Project owners manage owned projects.

Participants and members

api:participants:read, api:participants:write

Participant reads follow project read access. Writes require project management access.

Directory records searchapi:participants:readCached directory record lookup is exposed through participant access.
Labels

api:labels:read, api:labels:write

Active authenticated users can read the global label catalog. Admins and effective project owners can create and update labels. Non-admin project owners can delete only labels they created, and only when every usage is in projects they own.

Delegations

api:delegations:read, api:delegations:write

Admins read and manage any delegation. Project owners read and manage participant-scoped delegations for owned participants when the delegator is represented on that participant. Users read and manage their own eligible delegation context.

Resolve historyapi:resolve-requests:read

Admins read all history; project owners read history for owned projects; active users read their own requests.

POST /api/v1/resolve requires api:resolve. Resolution only uses project and participant context visible to the API-key owner. Live resolve requests are recorded with the authenticated actor so request history can apply the same visibility rules later.

ROSTER_REST_AUTH_MODE is reserved for later REST auth-mode switching. Current REST implementation requires API-key bearer auth.