Menu structure
The hierarchy
Section titled “The hierarchy”super_categories (optional)└── categories (at least one) └── sections (at least one) └── products └── attribute_groups └── attributes| Level | Required | What it is for |
|---|---|---|
super_categories |
no | The top-level grouping. When present, it is the first list the customer sees. |
categories |
yes | The main navigation level: Drinks, Burgers, Desserts. |
sections |
yes | The subdivision of a category. |
products |
yes | What is actually ordered. |
attribute_groups |
no | Groups of customisations, with a minimum and maximum. |
attributes |
no | The options themselves. |
If you do not use super categories, categories become the first level.
Identifying the store
Section titled “Identifying the store”| Field | Value |
|---|---|
store_id |
The full identifier, partner_name__store_id. |
partner_name |
The name of your POS solution. |
store_environment |
prod. |
Identifier rules
Section titled “Identifier rules”A product cannot have two prices. If you sell Coca-Cola at 5 lei on its own and at 0 lei inside a meal deal, those are two products with different identifiers, not one.
Images
Section titled “Images”Images are hosted by you; we only receive the URL.
| Requirement | Value |
|---|---|
| Orientation | square |
| Size | 1000 × 1000 px |
| Format | JPG |
| File size | under 1 MB |
| Background | light, plain or textured |
| Protocol | HTTPS, with a valid certificate |
Example
Section titled “Example”{ "store_environment": "prod", "store_id": "gi20__001", "partner_name": "gi20", "super_categories": [ { "name": "default", "position": 0, "image_url": null, "display_super_category": false, "categories": [ { "name": "MENIUL ZILEI", "position": 1, "sections": [ { "name": "MENIUL ZILEI", "position": 0, "products": [ { "id": "18412870", "name": "Meniul zilei", "price": "45.0", "image_url": null, "description": "Ciorbă + fel principal + garnitură la alegere + salată", "available": true, "attribute_groups": [ { "id": "17876377", "name": "Alege ciorba 300 g", "min": 1, "max": 1, "collapse": true, "multiple_selection": false, "attributes": [ { "id": "17876412", "name": "Ciorbă de văcuță", "available": true, "selected_by_default": false, "price": "0.0" }, { "id": "17876428", "name": "Ciorbă rădăuțeană", "available": true, "selected_by_default": false, "price": "0.0" } ] } ] } ] } ] }, { "name": "HAMBURGERI", "position": 4, "sections": [ { "name": "HAMBURGERI", "position": 0, "products": [ { "id": "18411340", "name": "Hamburger clasic", "price": "45.0", "image_url": null, "description": "Carne de vită, roșii, ceapă, brânză cheddar", "available": true, "attribute_groups": [] } ] } ] } ] } ]}Attribute groups
Section titled “Attribute groups”| Field | What it controls |
|---|---|
min / max |
How many options the customer must and may choose. |
multiple_selection |
Whether the same option can be picked more than once. |
collapse |
Whether the group appears collapsed in the interface. |
selected_by_default |
The pre-selected option. |
A group with min: 1 and max: 1 is a mandatory single choice — typical for “choose your side”. A
group with min: 0 is entirely optional.