Routes and permissions

Anis staff grant your application its permissions. Read your profile to see the ones it has right now.

Every call

CallPermissionAuthenticationLimits it counts toward
GET Read your profileprofile:readSigned readAll requests
GET List walletswallets:readSigned readAll requests
GET Read a walletwallets:readSigned readAll requests
GET List catalogue categoriescatalogue:readSigned readAll requests
GET List subcategories of a categorycatalogue:readSigned readAll requests
GET Read a subcategorycatalogue:readSigned readAll requests
GET List cards for salecatalogue:readSigned readAll requests
POST Place an orderorders:createSigned orderAll requests, Orders
GET Read an orderorders:read or orders:create for your own ordersSigned readAll requests
GET List owned cardscards:readSigned readAll requests
GET Read an owned cardcards:readSigned readAll requests
POST Reveal a cardcards:revealSigned changeAll requests, Reveals
POST Reveal an invoicecards:revealSigned changeAll requests, Reveals
POST Check your signaturediagnostics:useSigned changeAll requests
GET Read an invitationNoneEnrolment tokenNone
POST Submit a public keyNoneEnrolment tokenNone
POST Prove you hold the keyNoneEnrolment tokenNone
GET Read enrolment statusNoneEnrolment tokenNone
GET Anis’s public signing keysNonePublicNone

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.