API/The eight scopes
v1.0.0-beta.mdGet API keys
Mandates

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

scopeWhat it authorisesAmount ceilingConstraints
loginSign in as younooptional
purchaseBuy somethingallowedoptional
paymentPay someoneallowedoptional
taskCarry out an action with no money involvednorequired
signatureSign a documentnooptional
data_shareShare your data with a third partynooptional
id_proofProve an attribute without revealing itnooptional
accessOpen a door or unlock a resourcenooptional

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 with WILDCARD_SCOPE_FORBIDDEN.
  • One scope per use is promised publicly, so a consent screen can be written once.
  • Only purchase and payment take money; anything else with an amount is AMOUNT_CEILING_NOT_APPLICABLE.
  • task is 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 }.

Accept-Language: en
{
  "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"
    }
  ]
}
Accept-Language: pt-BR
{
  "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.
Sidaxis API documentationQuickstartAuthenticationHosted or headlessSandbox and productionIdempotencyRate limitsErrors and refusalsField namesWebhooksAssuranceThe document ruleAlias availabilityMerchant themeMCP serverCompatibilityStatusRoadmapChangelogIdentityEnroll an identityRecognise a personDisclose an attributeMandatesThe eight scopesIssue a mandateCheck an actionConsume a mandateRead a mandateRevoke a mandateReceiptsRead a merchant's receiptsVerify a receiptHosted sessionsCreate a hosted sessionConsume a hosted sessionOne Face for agents