Routes and permissions
Anis staff grant your application its permissions. Read your profile to see the ones it has right now.
Every call
| Call | Permission | Authentication | Limits it counts toward |
|---|---|---|---|
| GET Read your profile | profile:read | Signed read | All requests |
| GET List wallets | wallets:read | Signed read | All requests |
| GET Read a wallet | wallets:read | Signed read | All requests |
| GET List catalogue categories | catalogue:read | Signed read | All requests |
| GET List subcategories of a category | catalogue:read | Signed read | All requests |
| GET Read a subcategory | catalogue:read | Signed read | All requests |
| GET List cards for sale | catalogue:read | Signed read | All requests |
| POST Place an order | orders:create | Signed order | All requests, Orders |
| GET Read an order | orders:read or orders:create for your own orders | Signed read | All requests |
| GET List owned cards | cards:read | Signed read | All requests |
| GET Read an owned card | cards:read | Signed read | All requests |
| POST Reveal a card | cards:reveal | Signed change | All requests, Reveals |
| POST Reveal an invoice | cards:reveal | Signed change | All requests, Reveals |
| POST Check your signature | diagnostics:use | Signed change | All requests |
| GET Read an invitation | None | Enrolment token | None |
| POST Submit a public key | None | Enrolment token | None |
| POST Prove you hold the key | None | Enrolment token | None |
| GET Read enrolment status | None | Enrolment token | None |
| GET Anis’s public signing keys | None | Public | None |
The permissions are profile:read, wallets:read, catalogue:read, orders:create, orders:read,
cards:read, cards:reveal and diagnostics:use. orders:create also lets you read your own orders.
Before a call is looked at
Anis checks each of these before any business decision, so an order refused by one of them was never placed. The order in which they run is not part of the contract — do not rely on meeting one before another.
| Check | Refusal |
|---|---|
| The request’s shape and body, including a body where none is allowed | validation_failed |
| The body matches its digest | invalid_credentials |
| The key exists, is active and signed this request; the signature is fresh | invalid_credentials |
| The nonce was not seen before | replay_detected |
| A staff-set limit, or Anis’s own protection | rate_limited |
| The call comes from one of your allowed networks | insufficient_scope |
| Your application has the route’s permission | insufficient_scope |
| The wallet in the address is granted to your application | wallet_not_granted |
Paging
The list calls return a page and a nextCursor. Pass it back as cursor — exactly as received — to get the next
page; there is no nextCursor on the last one. A changed or malformed cursor is refused as
validation_failed.