Scopes

Grantable scopes are exactly the X9 catalogue. A capability flag on GET /capabilities is not a permission grant.

ScopePurposeEndpoints
customer.readLook up an existing customer on the connection.POST /v1/integrations/{integrationId}/actions/customer.lookup
customer.writeCreate or update a customer via command or inbound event.POST /v1/integrations/{integrationId}/actions/customer.upsert
POST /v1/integrations/{integrationId}/events/customer.updated
bill.readRead bill facts carried on inbound bill events.POST /v1/integrations/{integrationId}/events/bill.created
POST /v1/integrations/{integrationId}/events/bill.updated
bill.writeSend bill created/updated/voided events.POST /v1/integrations/{integrationId}/events/bill.created
POST /v1/integrations/{integrationId}/events/bill.updated
POST /v1/integrations/{integrationId}/events/bill.voided
transaction.readRead sale-return transaction facts on inbound returns.POST /v1/integrations/{integrationId}/events/sale.returned
menu.readRead menu snapshots on inbound menu.updated.POST /v1/integrations/{integrationId}/events/menu.updated
menu.writePush a menu snapshot to the connection.POST /v1/integrations/{integrationId}/actions/menu.push
payment_types.readRead payment-type catalogues on inbound payment-types.updated.POST /v1/integrations/{integrationId}/events/payment-types.updated
payment_types.writePush payment types to the connection.POST /v1/integrations/{integrationId}/actions/payment-types.push
reward.validateValidate a reward against a bill/customer.POST /v1/integrations/{integrationId}/actions/reward.validate
reward.redeemRedeem a reward.POST /v1/integrations/{integrationId}/actions/reward.redeem
reward.revertRevert a prior redemption.POST /v1/integrations/{integrationId}/actions/reward.revert
event.writeSend 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.