Collections
Product collections.
📄️ List product collections
Every collection of the merchant, shallow levels first (a tree flattened by `parent_id`). Company-wide: no `X-Outlet-ID` (a sent one is ignored). Pages are offset-based: collections added or removed while you page can shift rows between pages.
📄️ Create a product collection
Creates a collection as the acting user. Omit `parent_id` for a top-level collection. Collections can be nested up to 5 levels (`400 VALIDATION_FAILED` when deeper); an unknown parent answers `404 NOT_FOUND`. Use `Idempotency-Key` to retry safely. An unknown field is ignored.
📄️ Get a product collection
One collection. An id of another merchant answers `404 NOT_FOUND`.
📄️ Update a product collection
Renames the collection and can move it: send `name` and, to nest it, `parent_id`. Leaving `parent_id` out keeps the parent; `null` makes it a top-level collection. Moving it under itself or one of its descendants, or deeper than 5 levels, answers `400 VALIDATION_FAILED`. An id of another merchant answers `404 NOT_FOUND`. Concurrent updates: the last write wins.
📄️ Delete a product collection
Deletes a collection that has no sub-collections (`409 DATA_CONFLICT` otherwise). Its products stay and lose the collection. An id of another merchant 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.