c.l.cladDocs

Scopes & permissions

Coarse and resource scopes, admin-gated grants, and least-privilege keys.

Every API key carries a set of scopes. A field runs only if the key holds a scope that satisfies it. Requests missing a scope fail with FORBIDDEN.

Scopes come in two forms:

  • Coarse: read, write, admin. read satisfies any *:read scope; write satisfies any non-admin *:write scope; admin satisfies everything in the schema.
  • Resource: fine-grained resource:action grants for least-privilege keys.

Common resource scopes:

ScopeGrants
issues:readRead issues and their messages
issues:writeCreate and mutate issues (status, priority, tags, assignment)
issues:createCreate-only intake (open an issue; cannot list or mutate others)
thread:replyReply to issue threads
spam:writeMark issues as spam
accounts:read / accounts:writeRead / write CRM accounts
contacts:read / contacts:writeRead / write CRM contacts
articles:read / articles:writeRead / write knowledge-base articles
articles:publishPublish articles with public visibility
collections:writeManage KB collections
tags:writeManage workspace tags
views:read / views:writeRead / write saved account views
members:readRead org members
teams:writeManage teams and team membership
settings:read / settings:writeRead / write workspace settings
sla:readRead SLA policies and support-hours schedules
customfields:writeManage account/contact custom fields
widget:writeManage web widgets and widget forms
webhooks:manageManage webhook endpoints
apikeys:read / apikeys:revokeRead key metadata / revoke keys

Some scopes are admin-gated (settings:write, customfields:write, webhooks:manage, apikeys:read, apikeys:revoke): a coarse write does not satisfy them — the key needs the exact scope or admin.

Grant each key the narrowest set of scopes it needs.