Overview
This endpoint allows you to retrieve your branch-based product catalog. It offers a multitude of filtering options such astype, category_id, and tags, and supports five main product types: GOODS, DISH, TIMER, PREPARATION, and INGREDIENT.
The returned data includes product variants (modifications), modifiers (modificator_groups), recipes (recipe), and all other related data.
Product Types and Behaviors
While all product types are fundamentally “products,” each has its own specific models and behaviors:-
GOODS: These can have variants (
modifications).- With Variants: If a product has variants, only those variants can be sold. The main product acts as a parent and cannot be sold itself. Each modification behaves like a standard
GOODSproduct without variants. - Without Variants: Standard products that can be sold directly.
- With Variants: If a product has variants, only those variants can be sold. The main product acts as a parent and cannot be sold itself. Each modification behaves like a standard
-
DISH: This type can have
modificator_groups(modifiers).- Modifiers: Modifiers (
Modificator) are used exclusively forDISHtype products. They represent add-on options like “Spice Level” or “Extra Lavash.”
- Modifiers: Modifiers (
-
TIMER: Represents time-based services (e.g., PS5 rental). Pricing is determined by rules defined in the
settingfield. -
PREPARATION: Semi-finished items that have their own recipe and are used in the production of other
DISHitems. - INGREDIENT: Raw materials used in production.
HTTP Request
Query Parameters
All parameters are standard URL query parameters. Array and filter values use PHP/Laravel bracket notation — not a JSON blob. Arrays are indexed (with[0]=category&with[1]=station), and each filter is a tuple under filters[N]: field name at filters[N][0], value at filters[N][1] (or filters[N][1][M] when the value is itself an array).
integer
default:"1"
Page number for pagination.
integer
default:"50"
Products per page. Maximum: 100.
array[string]
Related resources to include in each product. Repeat with indexed brackets. Common values:
category, station, modifications, modifications.codes, taxes, codes, modificator_groups, recipe, packages, tags.
Example: with[0]=category&with[1]=station&with[2]=modificationsstring
Comma-separated list of fields to include in the response.
id, name, and type are always returned.
Example: selects=id,name,type,price,imagearray
Zero or more filter tuples, where
N is a 0-based index. Each tuple is [field_name, value]. value may be a scalar (filters[N][1]=...) or an array (filters[N][1][0]=...&filters[N][1][1]=...). See the Filtering section for the full list of supported fields.Filtering
Each filter occupies its own index underfilters[]. Stack multiple filters by incrementing the outer index — for example filters[0] for type, filters[1] for inventory_behavior, and so on. The outer index order does not matter; only uniqueness does.
array[string]
Product type. Possible values:
GOODS, DISH, TIMER, PREPARATION, INGREDIENT.
Example: filters[0][0]=type&filters[0][1][0]=GOODS&filters[0][1][1]=DISHarray[integer]
Products belonging to the specified category IDs.
Example:
filters[0][0]=category_id&filters[0][1][0]=1&filters[0][1][1]=3array[integer]
Products assigned to the specified station IDs.
Example:
filters[0][0]=station_id&filters[0][1][0]=1&filters[0][1][1]=2array[integer]
Products with the specified tag IDs.
Example:
filters[0][0]=tags&filters[0][1][0]=1&filters[0][1][1]=2string
"1" = giftable, "0" = not giftable.
Example: filters[0][0]=giftable&filters[0][1]=1string
"1" = discountable, "0" = not discountable.
Example: filters[0][0]=discountable&filters[0][1]=1string
Inventory tracking mode. Allowed values:
"0" (MINUS_INGREDIENTS — deduct recipe ingredients on sale, typical for DISH), "1" (MINUS_SELF — deduct the product itself from stock, countable GOODS/INGREDIENT), "3" (PASSIVE — no inventory tracking, uncountable).
Example: filters[0][0]=inventory_behavior&filters[0][1]=0string
"1" = has a recipe/ingredients.
Example: filters[0][0]=haveIngredients&filters[0][1]=1string
"1" = sold by portion.
Example: filters[0][0]=sold_by_portion&filters[0][1]=1string
"1" = has variants (modifications).
Example: filters[0][0]=has_variants&filters[0][1]=1string
"1" = has a modifier group (modificator_groups).
Example: filters[0][0]=has_modifiers&filters[0][1]=1string
"1" = has at least one barcode. The filter still works, but the top-level barcode string on the product is deprecated — request with[]=codes and read barcodes from the codes array instead.
Example: filters[0][0]=has_barcode&filters[0][1]=1string
"1" = service charge applies.
Example: filters[0][0]=has_service_charge&filters[0][1]=1Combining filters
Stack filters by incrementing the outer index. Scalar and array values can be mixed freely:curl users can pass --globoff to avoid shell interpretation.)
Request Examples
Response
Field Reference
Product Object
Variant Object (modifications)
Represents different versions (e.g., size, color) of a GOODS type product.
A variant has the same shape as a product — every field listed in the Product Object above (id, parent_id, category_id, unit_id, price, cost_price, unit_weight, inventory_behavior, media, venues, created_at, updated_at, …) is present on each variant. The only differences worth calling out:
typeis alwaysMODIFICATION.parent_idpoints at the parentGOODSproduct instead of beingnull.full_namecombines the parent name with the variant name (e.g."Fanta 0.5 L").- The variant carries its own
price,cost_price,barcode/codes,status, stock, etc. — the parent’s values are not inherited at sale time.
Modifier Group (modificator_groups)
Defines groups of options that can be added to a DISH type product (e.g., “Pizza Toppings”).
Modifier Object (modificators)
Timer Settings (setting)
Contains the time-based pricing rules for TIMER type products.
Recipe Item (recipe)
Package Object (packages)
Specifies the purchasing packages defined for INGREDIENT type products.