Skip to main content

Overview

This endpoint allows you to retrieve your branch-based product catalog. It offers a multitude of filtering options such as type, 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 GOODS product without variants.
    • Without Variants: Standard products that can be sold directly.
  • DISH: This type can have modificator_groups (modifiers).
    • Modifiers: Modifiers (Modificator) are used exclusively for DISH type products. They represent add-on options like “Spice Level” or “Extra Lavash.”
  • TIMER: Represents time-based services (e.g., PS5 rental). Pricing is determined by rules defined in the setting field.
  • PREPARATION: Semi-finished items that have their own recipe and are used in the production of other DISH items.
  • INGREDIENT: Raw materials used in production.

HTTP Request

This endpoint requires authentication. Include your JWT in the x-token header. See Authentication for how to obtain a token and Errors for error responses.

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]=modifications
string
Comma-separated list of fields to include in the response. id, name, and type are always returned. Example: selects=id,name,type,price,image
array
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 under filters[]. 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]=DISH
array[integer]
Products belonging to the specified category IDs. Example: filters[0][0]=category_id&filters[0][1][0]=1&filters[0][1][1]=3
array[integer]
Products assigned to the specified station IDs. Example: filters[0][0]=station_id&filters[0][1][0]=1&filters[0][1][1]=2
array[integer]
Products with the specified tag IDs. Example: filters[0][0]=tags&filters[0][1][0]=1&filters[0][1][1]=2
string
"1" = giftable, "0" = not giftable. Example: filters[0][0]=giftable&filters[0][1]=1
string
"1" = discountable, "0" = not discountable. Example: filters[0][0]=discountable&filters[0][1]=1
string
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]=0
string
"1" = has a recipe/ingredients. Example: filters[0][0]=haveIngredients&filters[0][1]=1
string
"1" = sold by portion. Example: filters[0][0]=sold_by_portion&filters[0][1]=1
string
"1" = has variants (modifications). Example: filters[0][0]=has_variants&filters[0][1]=1
string
"1" = has a modifier group (modificator_groups). Example: filters[0][0]=has_modifiers&filters[0][1]=1
string
"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]=1
string
"1" = service charge applies. Example: filters[0][0]=has_service_charge&filters[0][1]=1

Combining filters

Stack filters by incrementing the outer index. Scalar and array values can be mixed freely:
(Line breaks shown only for readability — the real URL must be a single string with no whitespace. Brackets should be URL-encoded by your HTTP client; 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:
  • type is always MODIFICATION.
  • parent_id points at the parent GOODS product instead of being null.
  • full_name combines 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.