allowed_scopes allowlist, and the user granting consent can
further narrow the set on the consent screen.
Applies to OAuth only. API keys don’t use scopes — they’re
bound to the tenant with all-or-nothing access inside their
allowed_scopes.
OIDC core
Resource scopes
Composition
Scopes are space-separated in the token request:scope claim. Server-side
gate check is exact-match per route — requesting only
campaigns:read and trying to POST /api/v1/campaigns returns a
403 { "detail": "missing scope campaigns:write" }.
Principle of least privilege
Partners are expected to request only the scopes they need. AppExchange and similar review processes will flag a listing that requestscampaigns:write but never actually writes campaigns. Narrow the
set to what your integration actually uses.

