Scopes
Grantable scopes are exactly the X9 catalogue. A capability flag on GET /capabilities is not a permission grant.
| Scope | Purpose | Endpoints |
|---|---|---|
customer.read | Look up an existing customer on the connection. | POST /v1/integrations/{integrationId}/actions/customer.lookup |
customer.write | Create or update a customer via command or inbound event. | POST /v1/integrations/{integrationId}/actions/customer.upsertPOST /v1/integrations/{integrationId}/events/customer.updated |
bill.read | Read bill facts carried on inbound bill events. | POST /v1/integrations/{integrationId}/events/bill.createdPOST /v1/integrations/{integrationId}/events/bill.updated |
bill.write | Send bill created/updated/voided events. | POST /v1/integrations/{integrationId}/events/bill.createdPOST /v1/integrations/{integrationId}/events/bill.updatedPOST /v1/integrations/{integrationId}/events/bill.voided |
transaction.read | Read sale-return transaction facts on inbound returns. | POST /v1/integrations/{integrationId}/events/sale.returned |
menu.read | Read menu snapshots on inbound menu.updated. | POST /v1/integrations/{integrationId}/events/menu.updated |
menu.write | Push a menu snapshot to the connection. | POST /v1/integrations/{integrationId}/actions/menu.push |
payment_types.read | Read payment-type catalogues on inbound payment-types.updated. | POST /v1/integrations/{integrationId}/events/payment-types.updated |
payment_types.write | Push payment types to the connection. | POST /v1/integrations/{integrationId}/actions/payment-types.push |
reward.validate | Validate a reward against a bill/customer. | POST /v1/integrations/{integrationId}/actions/reward.validate |
reward.redeem | Redeem a reward. | POST /v1/integrations/{integrationId}/actions/reward.redeem |
reward.revert | Revert a prior redemption. | POST /v1/integrations/{integrationId}/actions/reward.revert |
event.write | Send any inbound X9 event (customers, bills, returns, menu, payment types). | POST /v1/integrations/{integrationId}/events/{eventType}POST /v1/integrations/{integrationId}/webhooks |
GET capabilities and GET health already require HMAC. They are authenticated discovery, not grantable scopes. Do not request capabilities.read or health.read.