The eight scopes
GET /functions/v1/mandate-scopes
A closed vocabulary of eight scopes, matched exactly, with labels served by the engine so every consent screen reads identically.
Public, cacheable, and it carries no subject data. Optional accept-language: en, pt-BR, es, with a silent English fallback.
The scopes
| scope | What it authorises | Amount ceiling | Constraints |
|---|---|---|---|
login | Sign in as you | no | optional |
purchase | Buy something | allowed | optional |
payment | Pay someone | allowed | optional |
task | Carry out an action with no money involved | no | required |
signature | Sign a document | no | optional |
data_share | Share your data with a third party | no | optional |
id_proof | Prove an attribute without revealing it | no | optional |
access | Open a door or unlock a resource | no | optional |
The rules that keep the vocabulary closed
- Exact matching only — no wildcard, no prefix, no dot-notation. An unknown scope is refused with
UNKNOWN_SCOPE, a dotted scope withWILDCARD_SCOPE_FORBIDDEN. - One scope per use is promised publicly, so a consent screen can be written once.
- Only
purchaseandpaymenttake money; anything else with an amount isAMOUNT_CEILING_NOT_APPLICABLE. taskis the single scope for a non-money action and has no subtypes. It requires constraints, because an unconstrained task mandate is a shared password with a biometric proof attached.- Recurrence is
ceiling.period, never a scope.
Response
version: v2, locale, matching: "exact", money_scopes, constraint_required_scopes, and the scope list with { scope, accepts_amount_ceiling, requires_constraints, label, description }.
{
"version": "v2",
"locale": "en",
"matching": "exact",
"money_scopes": ["purchase", "payment"],
"constraint_required_scopes": ["task"],
"scopes": [
{
"scope": "login",
"accepts_amount_ceiling": false,
"requires_constraints": false,
"label": "Sign in",
"description": "Sign in on your behalf"
}
]
}{
"version": "v2",
"locale": "pt-BR",
"matching": "exact",
"scopes": [
{
"scope": "login",
"accepts_amount_ceiling": false,
"requires_constraints": false,
"label": "Entrar",
"description": "Entrar em seu nome"
}
]
}scope and every other field name are always English and never localised; only label and description change.
Why the labels come from the engine
Every client's consent screen then reads identically, instead of each one writing its own wording for the same authority.
Sidaxis is the human authorisation layer. It never moves money, holds funds or settles. The machine-readable contract is openapi.yaml.