---
metadata:
  - name: generator
    content: Diplodoc Platform v5.48.2
alternate:
  - https://yandex.com/dev/eda-vendor/doc/en/ref/Menu/partner.menu.get.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/eda-vendor/doc/en/llms.txt

<div class="openapi">

# Get the current restaurant menu

<!-- markdownlint-disable-file -->

Items with schematic or logical inconsistencies (too long string, price equal to 0.00) may be ignored. The current version of the response model is application/vnd.eats.menu.composition.v2+json

## Request

<div class="openapi__requests">

<div class="openapi__request__wrapper" style="--method: var(--dc-openapi-methods-get);margin-bottom: 12px">

<div class="openapi__request">

GET {.openapi__method}
```text translate=no
/menu/{restaurantId}/composition
```

</div>

</div>

</div>

### Path parameters

#|
|| **Name** | **Description** ||
||

_restaurantId_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

The ID of the restaurant in the partner's system

_Example:_{.json-schema-reset .json-schema-example} ``
{.table-cell}
||
|#{.json-schema-properties}

## Responses

<div class="openapi__response__code__200">

## 200 OK

Success. The current menu for the specified restaurant is returned

<div class="openapi-entity">

### Body

{% cut "application/vnd.eats.menu.composition.v2+json" %}

```json translate=no
{
  "schedules": {
    "scheduleName": [
      {
        "from": "08:00",
        "till": "09:45",
        "weekdays": [
          "monday"
        ]
      }
    ]
  },
  "categories": [
    {
      "id": "5af86d5a-d92d-4e07-9271-aea0f7ef95a6",
      "parentId": "5af86d5a-d92d-4e07-9271-aea0f7ef95a6",
      "schedules": [
        "breakfasts"
      ],
      "name": "Breakfast",
      "sortOrder": 0,
      "images": [
        {
          "url": "https://example.com",
          "updatedAt": "1937-01-01T12:00:27.870000+00:20"
        }
      ]
    }
  ],
  "items": [
    {
      "id": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
      "categoryId": "fa494dc1-2578-4adb-a8fa-e270de8c3d28",
      "name": "Pies Cherry pie",
      "description": "Flour, water, egg powder, frozen cherries",
      "price": 1000,
      "vat": 20,
      "isCatchweight": false,
      "measure": 666,
      "weightQuantum": 0.1,
      "measureUnit": "g",
      "excise": "sugary_drink",
      "nutrients": {
        "calories": 12.5,
        "proteins": 15.3,
        "fats": 12.5,
        "carbohydrates": 15.3
      },
      "sortOrder": 0,
      "modifierGroups": [
        {
          "id": "9987c815-3069-46ad-9626-74799fb22210",
          "name": "Utensil selection",
          "modifiers": [
            null
          ],
          "minSelectedModifiers": 0,
          "maxSelectedModifiers": 10,
          "sortOrder": 0
        }
      ],
      "images": [
        {
          "hash": "example",
          "url": "https://example.com"
        }
      ],
      "additional_descriptions": {
        "consisting_ingredients": [
          "flour"
        ],
        "badges": [
          {}
        ]
      },
      "adult_info": {
        "age_group": 18,
        "alcohol_percentage": "12.34"
      }
    }
  ],
  "lastChange": "1937-01-01T12:00:27.870000+00:20"
}
```

{% endcut %}

#|
|| **Name** | **Description** ||
||

_categories_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: [Category](#entity-Category)[]

Menu categories

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
[
  {
    "id": "5af86d5a-d92d-4e07-9271-aea0f7ef95a6",
    "parentId": "5af86d5a-d92d-4e07-9271-aea0f7ef95a6",
    "schedules": [
      "breakfasts"
    ],
    "name": "Breakfast",
    "sortOrder": 0,
    "images": [
      {
        "url": "https://example.com",
        "updatedAt": "1937-01-01T12:00:27.870000+00:20"
      }
    ]
  }
]
```

{% endcut %}
{.table-cell}
||
||

_items_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: [MenuCompositionItem](#entity-MenuCompositionItem)[]

List of items available to order

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
[
  {
    "id": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
    "categoryId": "fa494dc1-2578-4adb-a8fa-e270de8c3d28",
    "name": "Pies Cherry pie",
    "description": "Flour, water, egg powder, frozen cherries",
    "price": 1000,
    "vat": 20,
    "isCatchweight": false,
    "measure": 666,
    "weightQuantum": 0.1,
    "measureUnit": "g",
    "excise": "sugary_drink",
    "nutrients": {
      "calories": 12.5,
      "proteins": 15.3,
      "fats": 12.5,
      "carbohydrates": 15.3
    },
    "sortOrder": 0,
    "modifierGroups": [
      {
        "id": "9987c815-3069-46ad-9626-74799fb22210",
        "name": "Utensil selection",
        "modifiers": [
          {}
        ],
        "minSelectedModifiers": 0,
        "maxSelectedModifiers": 10,
        "sortOrder": 0
      }
    ],
    "images": [
      {
        "hash": "example",
        "url": "https://example.com"
      }
    ],
    "additional_descriptions": {
      "consisting_ingredients": [
        "flour"
      ],
      "badges": [
        {
          "category": "cooking_method",
          "value": "fried"
        }
      ]
    },
    "adult_info": {
      "age_group": 18,
      "alcohol_percentage": "12.34"
    }
  }
]
```

{% endcut %}
{.table-cell}
||
||

_lastChange_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string&lt;date-time&gt;

The date of the last change in the restaurant menu (on the partner's side). Important: date in RFC 3339 format with fractional part of seconds (Y-m-d\TH:i:s.uP)! If the last update date hasn't changed, Yandex can automatically determine that the menu doesn't need to be updated. If the update date in this field differs from the date of the last menu update, the menu will be reloaded.

_Example:_{.json-schema-reset .json-schema-example} `1937-01-01T12:00:27.870000+00:20`
{.table-cell}
||
||

_schedules_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: [Schedule](#entity-Schedule)

Description of possible types of menu category schedules

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "scheduleName": [
    {
      "from": "08:00",
      "till": "09:45",
      "weekdays": [
        "monday"
      ]
    }
  ]
}
```

{% endcut %}
{.table-cell}
||
|#{.json-schema-properties}

</div>

<div class="openapi-entity">

### ScheduleName {#entity-ScheduleName}

#|
|| **Name** | **Description** ||
||

_from_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

The start time is represented in a 24-hour format, ranging from 00:00 to 24:00.

_Example:_{.json-schema-reset .json-schema-example} `08:00`
{.table-cell}
||
||

_till_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

The end time is represented in a 24-hour format, ranging from 00:00 to 24:00.

_Example:_{.json-schema-reset .json-schema-example} `09:45`
{.table-cell}
||
||

_weekdays_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string[]

specifying the days of the week when a declared schedule type is active.

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
[
  "monday"
]
```

{% endcut %}
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "from": "08:00",
  "till": "09:45",
  "weekdays": [
    "monday"
  ]
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### Schedule {#entity-Schedule}

#|
|| **Name** | **Description** ||
||

_scheduleName_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: [ScheduleName](#entity-ScheduleName)[]

Schedule type identification. The schedule type is identified by a unique key name, such as "breakfasts". This key is used in the schedule array for menu categories to specify the type of schedule.

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
[
  {
    "from": "08:00",
    "till": "09:45",
    "weekdays": [
      "monday"
    ]
  }
]
```

{% endcut %}
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "scheduleName": [
    {
      "from": "08:00",
      "till": "09:45",
      "weekdays": [
        "monday"
      ]
    }
  ]
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### CategoryImages {#entity-CategoryImages}

#|
|| **Name** | **Description** ||
||

_updatedAt_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string&lt;date-time&gt;

The date of the image update, in RFC 3339 format with a fractional part of seconds (Y-m-d\TH:i:s.uP)

_Example:_{.json-schema-reset .json-schema-example} `1937-01-01T12:00:27.870000+00:20`
{.table-cell}
||
||

_url_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string&lt;uri&gt;

Link to the image for download

_Example:_{.json-schema-reset .json-schema-example} `https://example.com`
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "url": "https://example.com",
  "updatedAt": "1937-01-01T12:00:27.870000+00:20"
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### Category {#entity-Category}

#|
|| **Name** | **Description** ||
||

_id_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

The category ID is a unique identifier that distinguishes one category from another within the partner system. The ID can be any value that can be converted to a string. It is recommended to use a UUID4 UUID4

_Max length:_{.json-schema-reset .json-schema-assertion} `64`

_Example:_{.json-schema-reset .json-schema-example} `5af86d5a-d92d-4e07-9271-aea0f7ef95a6`
{.table-cell}
||
||

_name_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

Category name

_Example:_{.json-schema-reset .json-schema-example} `Breakfast`
{.table-cell}
||
||

_images_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: [CategoryImages](#entity-CategoryImages)[]

Image of the restaurant category

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
[
  {
    "url": "https://example.com",
    "updatedAt": "1937-01-01T12:00:27.870000+00:20"
  }
]
```

{% endcut %}
{.table-cell}
||
||

_parentId_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: string

The parent category ID is a unique identifier that references an existing category in the system. The parent category ID is nullable, meaning it can be absent or null, but it cannot be an empty string. It refers to existing categories in the system, ensuring that the hierarchical structure is maintained. When loading, the hierarchical structure is adapted to the flat category structure used by Yandex, where items from subcategories are moved to their parent categories at the first level.

_Max length:_{.json-schema-reset .json-schema-assertion} `64`

_Example:_{.json-schema-reset .json-schema-example} `5af86d5a-d92d-4e07-9271-aea0f7ef95a6`
{.table-cell}
||
||

_schedules_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: string[]

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
[
  "breakfasts"
]
```

{% endcut %}
{.table-cell}
||
||

_sortOrder_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: integer

The sort order is from smallest to largest (i.e., ascending order). If the sort order is not specified, it is assumed to be 100.
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "id": "5af86d5a-d92d-4e07-9271-aea0f7ef95a6",
  "parentId": "5af86d5a-d92d-4e07-9271-aea0f7ef95a6",
  "schedules": [
    "breakfasts"
  ],
  "name": "Breakfast",
  "sortOrder": 0,
  "images": [
    {
      "url": "https://example.com",
      "updatedAt": "1937-01-01T12:00:27.870000+00:20"
    }
  ]
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### Nutrients {#entity-Nutrients}

The nutrition value of the product per 100g

#|
|| **Name** | **Description** ||
||

_calories_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: number

Calories per 100g
{.table-cell}
||
||

_carbohydrates_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: number

Carbohydrates per 100g
{.table-cell}
||
||

_fats_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: number

Fats per 100g
{.table-cell}
||
||

_proteins_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: number

Protein per 100g
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "calories": 12.5,
  "proteins": 15.3,
  "fats": 12.5,
  "carbohydrates": 15.3
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### Modifiers {#entity-Modifiers}

#|
|| **Name** | **Description** ||
||

_id_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

Modifier identifier on the partner's side. Can be any value convertible to a string. Recommendation - UUID4. This identifier is passed in the order along with the selected quantity. example: 916cfc99-acb4-4a96-9a42-b29159e88189

_Example:_{.json-schema-reset .json-schema-example} `916cfc99-acb4-4a96-9a42-b29159e88189`
{.table-cell}
||
||

_maxAmount_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: integer

Maximum quantity of the specified modifier for the dish in the order. This number must not exceed the value of the maxSelectedModifiers parameter in the ModifierGroup model for the entire order. For example, if you support 5 modifiers in a group in total, but the maximum value of the modifier for an individual dish is 10 – such a modifier will not pass validation. Incorrect modifiers, the group to which they belong, and the menu items using incorrect data will not be loaded.

_Min value:_{.json-schema-reset .json-schema-assertion} `0`

_Max value:_{.json-schema-reset .json-schema-assertion} `255`
{.table-cell}
||
||

_minAmount_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: integer

Minimum quantity of the specified modifier for the dish in the order. The minAmount value must be less than maxAmount.

_Min value:_{.json-schema-reset .json-schema-assertion} `0`

_Max value:_{.json-schema-reset .json-schema-assertion} `255`
{.table-cell}
||
||

_name_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

Name of the modifier

_Example:_{.json-schema-reset .json-schema-example} `Utensils`
{.table-cell}
||
||

_price_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: number

modifier price
{.table-cell}
||
||

_excise_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: string

Indicator of excise goods. Instead of using the excise key, you can use the [AT] tag (uppercase Latin letters in square brackets) in the modifier's name field.

_Enum:_{.json-schema-reset .json-schema-value} `sugary_drink`, `other`
{.table-cell}
||
||

_originalPrice_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: number

Specific field for transmitting the price of mandatory free modifiers, which will be used for
printing in receipts and partial refund receipts. In this case, the price field value must be 0.

{.table-cell}
||
||

_vat_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: integer

VAT included in the price, in percentage. If not specified, it is considered as 0.
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "id": "916cfc99-acb4-4a96-9a42-b29159e88189",
  "name": "Utensils",
  "price": 150,
  "originalPrice": 150,
  "vat": 20,
  "excise": "sugary_drink",
  "minAmount": 0,
  "maxAmount": 10
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### ModifierGroups {#entity-ModifierGroups}

#|
|| **Name** | **Description** ||
||

_id_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

ID of the modifier group on the partner's side. It can be any value that is cast to a string. Recommendation - UUID4

_Example:_{.json-schema-reset .json-schema-example} `9987c815-3069-46ad-9626-74799fb22210`
{.table-cell}
||
||

_maxSelectedModifiers_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: integer

Maximum number of modifiers that can be selected for this group. Must not be less than the total number of possible modifiers (considering their maxAmount)

_Min value:_{.json-schema-reset .json-schema-assertion} `0`

_Max value:_{.json-schema-reset .json-schema-assertion} `255`
{.table-cell}
||
||

_minSelectedModifiers_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: integer

Minimum number of modifiers that must be selected for this group. Must not exceed the total number of required modifiers (considering their minAmount) and not exceed maxSelectedModifiers

_Min value:_{.json-schema-reset .json-schema-assertion} `0`

_Max value:_{.json-schema-reset .json-schema-assertion} `255`
{.table-cell}
||
||

_name_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

The name of the modifier group

_Example:_{.json-schema-reset .json-schema-example} `Utensil selection`
{.table-cell}
||
||

_modifiers_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: [Modifiers](#entity-Modifiers)[]

Options included in the group

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
[
  {
    "id": "916cfc99-acb4-4a96-9a42-b29159e88189",
    "name": "Utensils",
    "price": 150,
    "originalPrice": 150,
    "vat": 20,
    "excise": "sugary_drink",
    "minAmount": 0,
    "maxAmount": 10
  }
]
```

{% endcut %}
{.table-cell}
||
||

_sortOrder_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: integer

Sorting order from smallest to largest. If not specified, it is considered as 100.
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "id": "9987c815-3069-46ad-9626-74799fb22210",
  "name": "Utensil selection",
  "modifiers": [
    {
      "id": "916cfc99-acb4-4a96-9a42-b29159e88189",
      "name": "Utensils",
      "price": 150,
      "originalPrice": 150,
      "vat": 20,
      "excise": "sugary_drink",
      "minAmount": 0,
      "maxAmount": 10
    }
  ],
  "minSelectedModifiers": 0,
  "maxSelectedModifiers": 10,
  "sortOrder": 0
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### ItemsImages {#entity-ItemsImages}

#|
|| **Name** | **Description** ||
||

_hash_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

SHA1 hash of the image file content. Calculated by the partner, serves as a uniqueness indicator. If it changes, Yandex reloads the image.

_Example:_{.json-schema-reset .json-schema-example} `example`
{.table-cell}
||
||

_url_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string&lt;uri&gt;

Link to download the image

_Example:_{.json-schema-reset .json-schema-example} `https://example.com`
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "hash": "example",
  "url": "https://example.com"
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### MenuCompositionItemAdditionalDescriptionsBadge {#entity-MenuCompositionItemAdditionalDescriptionsBadge}

The tags of the dish are divided into categories and values. You can select only one option in each category. When processing, the first valid value will be taken from each category. Duplicate, unknown categories or mismatched category values will be skipped.
Available categories and their values:
* `food_specifics`
  - `halal`
  - `meat_free`
* `food_spiciness`
  - `spicy`
* `cooking_method`
  - `fried`
  - `baked`
  - `grilled`
  - `not_cooked`
* `food_portion`
  - `portion_for_several_people`
  - `big_portion`
  - `combo`

#|
|| **Name** | **Description** ||
||

_category_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

_Enum:_{.json-schema-reset .json-schema-value} `food_specifics`, `food_spiciness`, `cooking_method`, `food_portion`
{.table-cell}
||
||

_value_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

_Enum:_{.json-schema-reset .json-schema-value} `halal`, `meat_free`, `spicy`, `fried`, `baked`, `grilled`, `not_cooked`, `portion_for_several_people`, `big_portion`, `combo`
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "category": "cooking_method",
  "value": "fried"
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### MenuCompositionItemAdditionalDescriptions {#entity-MenuCompositionItemAdditionalDescriptions}

Additional fields for the item description

#|
|| **Name** | **Description** ||
||

_badges_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: [MenuCompositionItemAdditionalDescriptionsBadge](#entity-MenuCompositionItemAdditionalDescriptionsBadge)[]

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
[
  {
    "category": "cooking_method",
    "value": "fried"
  }
]
```

{% endcut %}
{.table-cell}
||
||

_consisting_ingredients_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: string[]

The list of ingredients that make up the dish. These are the initial components of the dish, not its constituent parts. It is advisable to specify all the ingredients that can cause allergies or they strongly affect the taste. This way users will immediately see the important ones details about the dish.

_Max items:_{.json-schema-reset .json-schema-assertion} `100`

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
[
  "flour"
]
```

{% endcut %}
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "consisting_ingredients": [
    "flour"
  ],
  "badges": [
    {
      "category": "cooking_method",
      "value": "fried"
    }
  ]
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### AgeGroup {#entity-AgeGroup}

Age restriction on the product

**Type**: integer

_Enum:_{.json-schema-reset .json-schema-value} `18`, `21`

</div>

<div class="openapi-entity">

### AlcoholPercentage {#entity-AlcoholPercentage}

Item's alcohol by volume. The number is indicated only with a dot.

**Type**: string

_Pattern:_{.json-schema-reset .json-schema-assertion} `^[0-9]+(\.[0-9]{1,2})?$`

_Example:_{.json-schema-reset .json-schema-example} `12.34`

</div>

<div class="openapi-entity">

### AdultInfo {#entity-AdultInfo}

Adult attributes information for the product

#|
|| **Name** | **Description** ||
||

_age_group_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: [AgeGroup](#entity-AgeGroup)

Age restriction on the product

_Enum:_{.json-schema-reset .json-schema-value} `18`, `21`

_Example:_{.json-schema-reset .json-schema-example} `18`
{.table-cell}
||
||

_alcohol_percentage_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: [AlcoholPercentage](#entity-AlcoholPercentage)

Item's alcohol by volume. The number is indicated only with a dot.

_Pattern:_{.json-schema-reset .json-schema-assertion} `^[0-9]+(\.[0-9]{1,2})?$`

_Example:_{.json-schema-reset .json-schema-example} `12.34`
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "age_group": 18,
  "alcohol_percentage": "12.34"
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### MenuCompositionItem {#entity-MenuCompositionItem}

#|
|| **Name** | **Description** ||
||

_categoryId_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

The ID of the category in the partner's system

_Max length:_{.json-schema-reset .json-schema-assertion} `64`

_Example:_{.json-schema-reset .json-schema-example} `fa494dc1-2578-4adb-a8fa-e270de8c3d28`
{.table-cell}
||
||

_id_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

Unique identifier for a dish within a restaurant's system. The internal dish ID can be any value that can be converted to a string. It is recommended to use a UUID4.

_Max length:_{.json-schema-reset .json-schema-assertion} `64`

_Example:_{.json-schema-reset .json-schema-example} `e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9`
{.table-cell}
||
||

_measure_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: integer

Characteristics of the measurements of the item - weight or volume
{.table-cell}
||
||

_measureUnit_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

Unit of measurement. Acceptable values are grams and milliliters

_Enum:_{.json-schema-reset .json-schema-value} `г`, `мл`, `g`, `ml`
{.table-cell}
||
||

_name_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

The name of the dish in the restaurant

_Example:_{.json-schema-reset .json-schema-example} `Pies Cherry pie`
{.table-cell}
||
||

_price_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: number

cost of a dish or product in the restaurant's system. The product price must be a non-zero value; dishes with a price of zero are skipped and not included in the menu.
{.table-cell}
||
||

_additional_descriptions_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: [MenuCompositionItemAdditionalDescriptions](#entity-MenuCompositionItemAdditionalDescriptions)

Additional fields for the item description

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "consisting_ingredients": [
    "flour"
  ],
  "badges": [
    {
      "category": "cooking_method",
      "value": "fried"
    }
  ]
}
```

{% endcut %}
{.table-cell}
||
||

_adult_info_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: [AdultInfo](#entity-AdultInfo)

Adult attributes information for the product

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "age_group": 18,
  "alcohol_percentage": "12.34"
}
```

{% endcut %}
{.table-cell}
||
||

_description_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: string

Full description of the dish

_Example:_{.json-schema-reset .json-schema-example} `Flour, water, egg powder, frozen cherries`
{.table-cell}
||
||

_excise_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: string

A sign of an excisable product. You can also use a key instead excise to pass the label [AT] (in capital Latin letters in square brackets) in the product name.

_Enum:_{.json-schema-reset .json-schema-value} `sugary_drink`, `other`
{.table-cell}
||
||

_images_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: [ItemsImages](#entity-ItemsImages)[]

item image

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
[
  {
    "hash": "example",
    "url": "https://example.com"
  }
]
```

{% endcut %}
{.table-cell}
||
||

_isCatchweight_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: boolean

boolean flag indicating whether a product is weighted or not in a restaurant system.

_Default:_{.json-schema-reset .json-schema-value} `false`
{.table-cell}
||
||

_modifierGroups_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: [ModifierGroups](#entity-ModifierGroups)[]

Groups of modifiers for an item. The obligation of modifiers is determined by the parameter `minSelectedModifiers` in the modifiers group.


{% cut "**Example**" %}{.json-schema-example}

```json translate=no
[
  {
    "id": "9987c815-3069-46ad-9626-74799fb22210",
    "name": "Utensil selection",
    "modifiers": [
      {
        "id": "916cfc99-acb4-4a96-9a42-b29159e88189",
        "name": "Utensils",
        "price": 150,
        "originalPrice": 150,
        "vat": 20,
        "excise": "sugary_drink",
        "minAmount": 0,
        "maxAmount": 10
      }
    ],
    "minSelectedModifiers": 0,
    "maxSelectedModifiers": 10,
    "sortOrder": 0
  }
]
```

{% endcut %}
{.table-cell}
||
||

_nutrients_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: [Nutrients](#entity-Nutrients)

The parameters of calories, proteins, fats and carbohydrates.

The nutrition value of the product per 100g

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "calories": 12.5,
  "proteins": 15.3,
  "fats": 12.5,
  "carbohydrates": 15.3
}
```

{% endcut %}
{.table-cell}
||
||

_sortOrder_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: integer

The sort order is from smaller to larger. If not specified, it's counted for 100
{.table-cell}
||
||

_vat_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: number

Percentage of Value-Added Tax (VAT) included in the product price. If the VAT rate is not specified, it is assumed to be 0%.
{.table-cell}
||
||

_weightQuantum_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: number

The smallest quantity of product (quantum) available for order. This field is required if the value of is Catch weight is equal to true, otherwise the field value is not used
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "id": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
  "categoryId": "fa494dc1-2578-4adb-a8fa-e270de8c3d28",
  "name": "Pies Cherry pie",
  "description": "Flour, water, egg powder, frozen cherries",
  "price": 1000,
  "vat": 20,
  "isCatchweight": false,
  "measure": 666,
  "weightQuantum": 0.1,
  "measureUnit": "g",
  "excise": "sugary_drink",
  "nutrients": {
    "calories": 12.5,
    "proteins": 15.3,
    "fats": 12.5,
    "carbohydrates": 15.3
  },
  "sortOrder": 0,
  "modifierGroups": [
    {
      "id": "9987c815-3069-46ad-9626-74799fb22210",
      "name": "Utensil selection",
      "modifiers": [
        {
          "id": "916cfc99-acb4-4a96-9a42-b29159e88189",
          "name": "Utensils",
          "price": 150,
          "originalPrice": 150,
          "vat": 20,
          "excise": "sugary_drink",
          "minAmount": 0,
          "maxAmount": 10
        }
      ],
      "minSelectedModifiers": 0,
      "maxSelectedModifiers": 10,
      "sortOrder": 0
    }
  ],
  "images": [
    {
      "hash": "example",
      "url": "https://example.com"
    }
  ],
  "additional_descriptions": {
    "consisting_ingredients": [
      "flour"
    ],
    "badges": [
      {
        "category": "cooking_method",
        "value": "fried"
      }
    ]
  },
  "adult_info": {
    "age_group": 18,
    "alcohol_percentage": "12.34"
  }
}
```

{% endcut %}

</div>

</div>

<div class="openapi__response__code__400">

## 400 Bad Request

Bad request. **_An array with an object from the error list is expected in the response body_**

<div class="openapi-entity">

### Body

{% cut "application/json" %}

```json translate=no
[
  {
    "code": 100,
    "description": "Description of error"
  }
]
```

{% endcut %}

**Type**: [ErrorItem](#entity-ErrorItem)[]

</div>

<div class="openapi-entity">

### ErrorItem {#entity-ErrorItem}

#|
|| **Name** | **Description** ||
||

_code_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: integer

Error code agreed with Yandex
{.table-cell}
||
||

_description_{.json-schema-reset .json-schema-property}
{.table-cell}|
**Type**: string

Error message

_Example:_{.json-schema-reset .json-schema-example} `Description of error`
{.table-cell}
||
|#{.json-schema-properties}

{% cut "**Example**" %}{.json-schema-example}

```json translate=no
{
  "code": 100,
  "description": "Description of error"
}
```

{% endcut %}

</div>

</div>

<div class="openapi__response__code__401">

## 401 Unauthorized

Authorization failed - the token expired or was not passed in the request. A retry will be made

<div class="openapi-entity">

### Body

{% cut "application/json" %}

```json translate=no
{
  "reason": "Access token has been expired. You should request a new one"
}
```

{% endcut %}

#|
|| **Name** | **Description** ||
||

_reason_{.json-schema-reset .json-schema-property .json-schema-required}
{.table-cell}|
**Type**: string

Reason for authorization failure

_Example:_{.json-schema-reset .json-schema-example} `Access token has been expired. You should request a new one`
{.table-cell}
||
|#{.json-schema-properties}

</div>

</div>

<div class="openapi__response__code__404">

## 404 Not Found

No restaurant found. **_An array with an object from the error list is expected in the response body_**

<div class="openapi-entity">

### Body

{% cut "application/json" %}

```json translate=no
[
  {
    "code": 100,
    "description": "Description of error"
  }
]
```

{% endcut %}

**Type**: [ErrorItem](#entity-ErrorItem)[]

</div>

</div>

<div class="openapi__response__code__500">

## 500 Internal Server Error

Internal server errors. **_An array with an object from the error list is expected in the response body_**

<div class="openapi-entity">

### Body

{% cut "application/json" %}

```json translate=no
[
  {
    "code": 100,
    "description": "Description of error"
  }
]
```

{% endcut %}

**Type**: [ErrorItem](#entity-ErrorItem)[]

</div>

</div>

</div>

[*Deprecated]: No longer supported, please use an alternative and newer version.