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, serialized units with serial numbers, the stock-movement ledger | Adjust or set counts on non-serialized products |
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 that have no firearm lines |
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 |
gift_certificates |
none / read / write | Codes, balances and each certificate's ledger | Issue certificates; redeem, reverse, reload and adjust balances (an Idempotency-Key is required); disable and enable |
store_credit |
none / read / write | Each customer's store credit balance and ledger | Issue credit (a refund or an adjustment) and redeem it (an Idempotency-Key is required) |
accounts |
none / read / write | House account terms and balances, invoices (with the orders they bill and pay links), account payments | Record a payment received elsewhere, applied to invoices (an Idempotency-Key is required) |
memberships |
none / read / write | Membership plans, members and their dues (with pay links and the member's save-a-card link) | Sign members up (billed by pay link or at the counter, or already paid on your channel), cancel, use guest passes |
card_transactions |
none / read | Every attempt at the shop's card processor: charges, declines, reversals and refunds. Never a card number or token. | – |
coupons |
none / read / write | Codes, rules and usage | Create, update 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 |
range |
none / read / write | Lanes and bays, classes, sessions, availability, reservations, the rental-gun fleet and its checkout history | Book lanes and class seats; check in, mark no-show and cancel reservations |
Notes:
- Range add-on.
rangecan only be granted when the shop has the Range add-on. - 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:
- The bound book (Acquisition & Disposition record) and its events.
- ATF Form 4473: the form itself, its transferee data, and NICS / E-Check results.
- ATF Form 3310.4 (multiple handgun sales reports).
- FFL-to-FFL transfer records.
- Customer identity documents: ID type, number, issuing state and expiry.
- Staff-only notes on customers, and FFL and tax-exemption certificate numbers.
Some API fields and statuses use neutral names instead:
- An order whose firearm is waiting on the 4473 has status
awaiting_transfer. - A product or line that needs a 4473 has
is_firearm: true. - Stock received shows up as quantities, never as acquisition entries.
Serial numbers are read-only. You can read a serialized unit's serial number (inventory:read), but no endpoint creates, changes or disposes of a serialized unit. Each of those is a bound-book entry, and bound-book entries are made in Iron Register by the licensee.