API docs
Permissions
Each API key has a permission grid with one row per resource. Each row is set to none, read or write, and write includes read. The owner sets the grid when creating the key and can change it at any time. The Full access preset sets every row to its highest level, except date of birth, which is always opt-in.
| Resource | Levels | Read gives you | Write adds |
|---|---|---|---|
products |
none / read / write | Products, prices, cost, categories, vendors | Create, update and delete products |
inventory |
none / read / write | On-hand quantity per location, lots with their lot number and expiry, serialized units with serial numbers, the stock-movement ledger | Adjust or set counts on products tracked by quantity (not serialized, not lot-tracked) |
customers |
none / read / write | Names, contact details, addresses, customer group, tags, marketing opt-in, store credit balance, spend totals | Create and update customers |
customer_dob |
none / read | Adds date_of_birth wherever a customer appears (customers, orders, the events feed) and lets you set it |
– |
orders |
none / read / write | Register sales, API orders, their lines and payments | Create orders; void orders |
returns |
none / read | Returns and refunds with their lines | – |
purchase_orders |
none / read / write | Purchase orders, their lines and quantities received | Create, edit, submit and cancel purchase orders; receive non-serialized lines against them, which adds stock (lot-tracked lines take a lot number) |
gift_certificates |
none / read / write | Codes, balances and their ledger | Issue certificates; redeem, reverse, reload and adjust balances (Idempotency-Key required); disable and enable |
store_credit |
none / read / write | Customer store credit balances and the credit ledger | Issue credit (a refund or an adjustment) and redeem it (Idempotency-Key required) |
coupons |
none / read / write | Codes, rules and usage | Create, edit and delete coupons (store+online ones sync to BigCommerce) |
locations |
none / read / write | Store names, addresses, hours, time zones, tax rates | Update phone, email and business hours only |
Notes:
- Missing permission. Calling an endpoint without the permission it needs returns
403 INSUFFICIENT_SCOPE, with the permission named indetails.required, e.g."products:read". - Customers on orders. A key without
customers:readsees only{ "object": "customer", "id": … }on an order, not the customer's details. - Customers created by orders.
orders:writecan create the buyer as a customer while creating an order, even withoutcustomers:write. The order is the reason the customer exists.
Never available
Some records aren't in the grid at all, so no key can reach them at any level:
- Customer identity documents: ID type, number, issuing state and expiry.
- Staff-only notes on customers, and tax-exemption certificate numbers.
- Staff and users: logins, PINs, roles and permissions.
- Billing: the shop's own Black Beach POS subscription.
Serial numbers and lots are read-only. You can read a serialized unit's serial number and a lot's number, expiry and quantity (inventory:read), but no endpoint creates or changes a serialized unit or a lot's quantity directly. Units and lots come in through receiving (the Receiving screen, or receiving a purchase order for lots) and leave through sales, returns and adjustments made in Black Beach POS.
