03/11/2026 · Add pickup_code to the Adjust Serial Number response#
pickup_code sits right after pickup_id. The request body is unchanged.PK + (id + 100000), the same code GET /pickup/list shows. null when the id is null.
08/10/2026 · Add unit_name to products and variants#
¹ Also Get Product Detail by SKU, Add Product, Update Product Detail and Update Product Detail by SKU.unit_name is the stock unit, e.g. Thùng, Hộp. null when the product has no unit set.{ "sku": "COMBO-01", "esku": "ERP-COMBO-01", "unit_name": "Hộp", "variants": [ { "product_id": 123456, "sku": "COMBO-01-RED", "unit_name": "Hộp" } ] }
02/09/2026 · Category lookup, and variants[].product_id#
New endpoint Rename Behavior change| Change | Detail |
|---|
| New endpoint — Get Product Category | GET /api/v2/public/product/category. Returns the category_id values POST /product/add accepts, as a flat paginated list. No parameters gives the root categories; pass parent_category_id to walk down, or keyword to search. |
category_id on Add Product is documented and validated | An id that matches no category is rejected with 400 instead of being stored. An inactive category is still accepted. It cannot be changed on the Update endpoints — a value sent there is ignored. |
variants[].id → variants[].product_id | Same value, clearer name: it is an Omisell product id. id still works and there is no removal date; product_id wins if both are sent. |
product_id is only honoured when it is a variant of the product being written. It used to accept any product id on your account, which meant an id sent by mistake overwrote an unrelated product's name and price. Such an id is now ignored and a new variant is created instead.
02/09/2026 · sale_price replaces price_sale#
sale_price is the documented name for a product's selling price. price_sale is no longer described in this reference.Nothing breaks. Responses still return price_sale next to sale_price with the same value, and POST /product/add still accepts it. Migrate your reads when convenient.If both spellings are sent to Add Product, sale_price wins. 0 is a valid price, not "unset". sale_price means different things on different objects — see the Field naming: sale_price page under Overview before using it to reconcile.
15/10/2024 · New endpoints for Product, Stock and Serial number#