Products
Products, their variants and prices.
📄️ List products
Products sold at the outlet in `X-Outlet-ID` (a product with an empty `outlet_ids` list is sold at every outlet), with their variants and prices. Stock is not included; read it with `GET /inventory/stock/{item_type}/{item_id}`. Filter with `status`; without it every status is returned. Pages are offset-based: products added or removed while you page can shift rows between pages.
📄️ Create a product
Creates a product and its variants as the acting user. The answer is the product, without stock.
📄️ Get a product
One product with its variants. Stock is not included; read it with `GET /inventory/stock/{item_type}/{item_id}`. A product that does not exist, belongs to another merchant, or is not sold at this outlet answers `404 NOT_FOUND`.
📄️ Update a product
Writes the name and the variant prices (there is no separate name or price route). The selling status is changed with `PATCH /products/{id}/status`.
📄️ Delete a product
Deletes the product and its variants as the acting user, the way the back office does: they leave the catalog and sales, and past orders keep them. A product that does not exist, belongs to another merchant, or is not sold at the outlet in `X-Outlet-ID` answers `404 NOT_FOUND`. With the Price Management master switch off, company-wide legacy product configuration writes return 409 PRICE_ROLLOUT_PAUSED when any company outlet is prepared or was activated. No product, price, history, feed or product-change event is written. Unprepared legacy companies retain the existing compatibility semantics.
📄️ Change a product's selling status
Sets the product to `active` (sold) or `archived` (not sold) as the acting user, and answers the product. A product that does not exist, belongs to another merchant, or is not sold at that outlet answers `404 NOT_FOUND`. With the Price Management master switch off, company-wide legacy product configuration writes return 409 PRICE_ROLLOUT_PAUSED when any company outlet is prepared or was activated. No product, price, history, feed or product-change event is written. Unprepared legacy companies retain the existing compatibility semantics.