API and data
The e-commerce endpoints, what they are scoped to, and the tables behind them.
1 min readUpdated 3 August 2026api, reference, orders
Two surfaces. Everything under /api/ecommerce is scoped to the signed-in
customer. Everything under /api/admin/ecommerce carries an explicit
permission.
The platform pins the status at 200 and puts the real outcome in the body.
Read the body — a client that branches on the status code will treat a refused
order as a completed one.
Customer endpoints
GET/api/ecommerce/product
Browse the catalogueGET/api/ecommerce/product/{id}
One product with its variants and mediaGET/api/ecommerce/category
Categories, for navigation and filteringPOST/api/ecommerce/cart/checkout
Check out the signed-in customer's cartGET/api/ecommerce/order
The customer's ordersGET/api/ecommerce/order/{id}
One order in fullGET/api/ecommerce/download/{orderItemId}
Download a purchased digital productGET/api/ecommerce/shipping
Shipping options for an addressPOST/api/ecommerce/discount/validate
Validate a discount code against the cartGET/api/ecommerce/wishlist
The customer's wishlistPOST/api/ecommerce/review/{productId}
Leave a review on a productGET/api/ecommerce/landing
Landing page contentAdmin endpoints
Each requires its own permission; access to the addon alone is not enough.
GET/api/admin/ecommerce/dashboard
Shop dashboard figuresGET/api/admin/ecommerce/product
Product managementGET/api/admin/ecommerce/category
Category managementGET/api/admin/ecommerce/order
Order management, including status changesGET/api/admin/ecommerce/discount
Discount codesGET/api/admin/ecommerce/shipping
Shipping rulesGET/api/admin/ecommerce/review
Review moderationGET/api/admin/ecommerce/wishlist
Wishlist recordsReading the tables directly
Two things bite anyone querying the database rather than the API:
- Money is DECIMAL, and the driver returns it as a STRING.
"1" + 1is"11". Coerce before any arithmetic. - Stock decrements when an order is PAID, not when it is placed. A pending order has not reserved anything.
Order status is the single source of truth for whether a customer is entitled to a digital download — do not infer it from payment records.