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

<div class="openapi">

# Получить актуальное меню ресторана

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

Позиции, содержащие схематические или логические несоответствия (слишком длинная строка, цена равная 0.00) могут быть проигнорированы. Актуальная версия модели ответа - 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

Идентификатор ресторана в системе партнера

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

## Responses

<div class="openapi__response__code__200">

## 200 OK

OK, возвращается актуальное на данный момент меню для указанного ресторана

<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": "Завтраки",
      "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": "Вареники с творогом и вишней",
      "description": "Мука, вода, яичный порошок, вишня замороженная, творог 5%",
      "price": 1000,
      "vat": 20,
      "shippingType": "delivery",
      "isCatchweight": false,
      "measure": 666,
      "weightQuantum": 0.1,
      "measureUnit": "г",
      "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": "Выбор приборов",
          "modifiers": [
            null
          ],
          "minSelectedModifiers": 0,
          "maxSelectedModifiers": 10,
          "sortOrder": 0
        }
      ],
      "images": [
        {
          "hash": "example",
          "url": "https://example.com"
        }
      ],
      "additional_descriptions": {
        "consisting_ingredients": [
          "мука"
        ],
        "badges": [
          {}
        ]
      },
      "adult_info": {
        "age_group": 18,
        "alcohol_percentage": "12.34"
      },
      "onlyForCombo": true
    }
  ],
  "combos": [
    {
      "id": "fa494dc1-2578-4adb-a8fa-e270de8c3d28",
      "categoryId": "fa494dc1-2578-4adb-a8fa-e270de8c3d28",
      "name": "Комбо с Воппер По-Итальянски",
      "description": "example",
      "image": null,
      "components": [
        {
          "id": "example",
          "name": "Горячее",
          "sortOrder": 0,
          "items": [
            null
          ]
        }
      ],
      "price": {
        "type": "fixed",
        "price": "example"
      }
    }
  ],
  "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)[]

Категории меню

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

```json translate=no
[
  {
    "id": "5af86d5a-d92d-4e07-9271-aea0f7ef95a6",
    "parentId": "5af86d5a-d92d-4e07-9271-aea0f7ef95a6",
    "schedules": [
      "breakfasts"
    ],
    "name": "Завтраки",
    "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)[]

Список блюд, доступных для заказа

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

```json translate=no
[
  {
    "id": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
    "categoryId": "fa494dc1-2578-4adb-a8fa-e270de8c3d28",
    "name": "Вареники с творогом и вишней",
    "description": "Мука, вода, яичный порошок, вишня замороженная, творог 5%",
    "price": 1000,
    "vat": 20,
    "shippingType": "delivery",
    "isCatchweight": false,
    "measure": 666,
    "weightQuantum": 0.1,
    "measureUnit": "г",
    "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": "Выбор приборов",
        "modifiers": [
          {}
        ],
        "minSelectedModifiers": 0,
        "maxSelectedModifiers": 10,
        "sortOrder": 0
      }
    ],
    "images": [
      {
        "hash": "example",
        "url": "https://example.com"
      }
    ],
    "additional_descriptions": {
      "consisting_ingredients": [
        "мука"
      ],
      "badges": [
        {
          "category": "cooking_method",
          "value": "fried"
        }
      ]
    },
    "adult_info": {
      "age_group": 18,
      "alcohol_percentage": "12.34"
    },
    "onlyForCombo": true
  }
]
```

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

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

Дата последнего изменения меню ресторана (на стороне партнера). Важно: дата в формате RFC3339 с дробной частью секунд (Y-m-d\TH:i:s.uP)! Если эта дата не менялась, Яндекс Еда может в автоматическом режиме принять решение о том, что обновлять меню не требуется. Если дата обновления в этом поле отличается от даты во время последнего обновления меню, то оно будет загружено заново

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

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

Список комбо, доступных для заказа

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

```json translate=no
[
  {
    "id": "fa494dc1-2578-4adb-a8fa-e270de8c3d28",
    "categoryId": "fa494dc1-2578-4adb-a8fa-e270de8c3d28",
    "name": "Комбо с Воппер По-Итальянски",
    "description": "example",
    "image": {
      "hash": "example",
      "url": "https://example.com"
    },
    "components": [
      {
        "id": "example",
        "name": "Горячее",
        "sortOrder": 0,
        "items": [
          {}
        ]
      }
    ],
    "price": {
      "type": "fixed",
      "price": "example"
    }
  }
]
```

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

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

Описание возможных типов расписаний категорий меню

{% 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

Время начала работы объявленного типа расписания, может принимать значения от 00:00 до 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

Время окончания работы объявленного типа расписания, может принимать значения от 00:00 до 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[]

Дни недели работы объявленного типа расписания

{% 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)[]

Объявление необходимого типа расписания. Тип определяется названием ключа. Например, breakfasts. Далее этот ключ используется в массиве расписаний у категорий меню.

{% 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;

Дата обновления изображения, в формате RFC3339 с дробной частью секунд (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;

Ссылка на изображение для скачивания

_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

Внутренний идентификатор категории в системе партнера. Может быть любым значением, приводимым к строке. Рекомендация - 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

Наименование категории (например "Завтраки")

_Example:_{.json-schema-reset .json-schema-example} `Завтраки`
{.table-cell}
||
||

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

Изображение категории ресторана

{% 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

Уникальный идентификатор родительской категории для древовидной структуры. nullable: true. Не может быть пустой строкой. Ссылается на существующие категории. При загрузке адаптируется к плоской структуре категорий Яндекс.Еды (товары из подкатегорий попадают в родительские категории первого уровня)

_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

Порядок сортировки от меньшего к большему. Если не указан, считаем за 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": "Завтраки",
  "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}

Энергетическая ценность продукта на 100гр

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

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

Калории на 100гр
{.table-cell}
||
||

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

Углеводы на 100гр
{.table-cell}
||
||

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

Жиры на 100гр
{.table-cell}
||
||

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

Белки на 100гр
{.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

Идентификатор модификатора на стороне партнера. Может быть любым значением, приводимым к строке. Рекомендация – UUID4. Этот идентификатор передаётся в заказе вместе с выбранным количеством

_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

Максимальное количество указанного модификатора для блюда в заказе. Это число не должно превышать значение параметра `maxSelectedModifiers` в модели `ModifierGroup` для заказа целиком. Например, вы поддерживаете 5 модификаторов в группе целиком, но максимальное значение модификатора для отдельного блюда указано 10 – такой модификатор не пройдет валидацию. Не будут загружены: некорректный модификатор, группа, к которой он принадлежит, а также пункты меню, в которых используются некорректные данные

_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

Минимальное количество указанного модификатора для блюда в заказе. Должно быть меньше 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

Название модификатора

_Example:_{.json-schema-reset .json-schema-example} `Европейские приборы`
{.table-cell}
||
||

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

Цена модификатора
{.table-cell}
||
||

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

Признак акцизного товара. Вместо ключа excise можно передавать метку [AT] (заглавными латинскими буквами в квадратных скобках) в поле `name` модификатора.

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

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

Отдельное поле для передачи исходых цен опций/модификаторов. Пользователю не показывается. Используется для расчета суммы при частичных возвратах.

{.table-cell}
||
||

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

НДС, включенный в стоимость, в процентах. Если не указан, считается за 0
{.table-cell}
||
|#{.json-schema-properties}

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

```json translate=no
{
  "id": "916cfc99-acb4-4a96-9a42-b29159e88189",
  "name": "Европейские приборы",
  "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

Идентификатор группы модификаторов на стороне партнера. Может быть любым значением, приводимым к строке. Рекомендация - 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

Максимальное количество модификаторов, которые возможно выбрать для данной группы. Не должно быть меньше общего числа возможных "modifiers" (с учетом их maxAmount) и не должно быть меньше minSelectedModifiers

_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

Минимальное количество модификаторов, которые необходимо выбрать для данной группы. Не должно быть больше общего числа необходимых "modifiers" (с учетом их minAmount) и не должно быть больше 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

Наименование группы модификаторов

_Example:_{.json-schema-reset .json-schema-example} `Выбор приборов`
{.table-cell}
||
||

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

Опции, включаемые в группу

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

```json translate=no
[
  {
    "id": "916cfc99-acb4-4a96-9a42-b29159e88189",
    "name": "Европейские приборы",
    "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

Порядок сортировки от меньшего к большему. Если не указан, считаем за 100.
{.table-cell}
||
|#{.json-schema-properties}

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

```json translate=no
{
  "id": "9987c815-3069-46ad-9626-74799fb22210",
  "name": "Выбор приборов",
  "modifiers": [
    {
      "id": "916cfc99-acb4-4a96-9a42-b29159e88189",
      "name": "Европейские приборы",
      "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-хэш от содержимого файла изображения. Рассчитывается партнером, служит признаком уникальности. В случае если он меняется, Яндекс Еда перезагружает картинку

_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;

Ссылка на изображение для скачивания

_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}

Тэги блюда разделены на категории и значения. В каждой категории можно выбрать всего один вариант. При обработке из каждой категории будет браться первое валидное значение. Дублирующие, неизвестные категории или несоответствие значения категории будут пропущены.
Доступные категории и их значения:
* `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}

Дополнительные поля для описания блюда

#|
|| **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[]

Перечень ингредиентов, из которых состоит блюдо. Это исходные компоненты блюда, а не его составные части. Желательно указать все ингредиенты, которые могут вызвать аллергию или сильно влияют на вкус. Так пользователи сразу увидят важные подробности о блюде.
Например: мука, яйца, вода, мясо.

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

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

```json translate=no
[
  "мука"
]
```

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

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

```json translate=no
{
  "consisting_ingredients": [
    "мука"
  ],
  "badges": [
    {
      "category": "cooking_method",
      "value": "fried"
    }
  ]
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### AgeGroup {#entity-AgeGroup}

Возрастное ограничение на товар

**Type**: integer

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

</div>

<div class="openapi-entity">

### AlcoholPercentage {#entity-AlcoholPercentage}

Процент содержания алкоголя в блюде. Число указывается только через точку.

**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-свойствах товара

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

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

Возрастное ограничение на товар

_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)

Процент содержания алкоголя в блюде. Число указывается только через точку.

_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

Идентификатор категории в системе партнера

_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

Внутренний идентификатор блюда в ресторане в системе партнера. Может быть любым значением, приводимым к строке. Рекомендация - 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

Характеристика измерений блюда - например вес или объем
{.table-cell}
||
||

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

Единица измерения. Допустимые значения - граммы и миллилитры

_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

Наименование блюда в ресторане (например "Пирожки с вишней")

_Example:_{.json-schema-reset .json-schema-example} `Вареники с творогом и вишней`
{.table-cell}
||
||

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

Цена продукта. Блюда с нулевой ценой пропускаются и не попадают в меню
{.table-cell}
||
||

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

Дополнительные поля для описания блюда

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

```json translate=no
{
  "consisting_ingredients": [
    "мука"
  ],
  "badges": [
    {
      "category": "cooking_method",
      "value": "fried"
    }
  ]
}
```

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

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

Информация о adult-свойствах товара

{% 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

Полное описание блюда

_Example:_{.json-schema-reset .json-schema-example} `Мука, вода, яичный порошок, вишня замороженная, творог 5%`
{.table-cell}
||
||

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

Признак акцизного товара. Также можно вместо ключа excise передавать метку [AT] (заглавными латинскими буквами в квадратных скобках) в 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)[]

Изображение блюда

{% 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

Флаг того, что позиция весовая

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

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

Группы модификаторов для блюда. Обязательность модификаторов определяется параметром `minSelectedModifiers` в группе модификаторов.


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

```json translate=no
[
  {
    "id": "9987c815-3069-46ad-9626-74799fb22210",
    "name": "Выбор приборов",
    "modifiers": [
      {
        "id": "916cfc99-acb4-4a96-9a42-b29159e88189",
        "name": "Европейские приборы",
        "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)

Параметры КБЖУ

Энергетическая ценность продукта на 100гр

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

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

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

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

Блюдо только для комбо
{.table-cell}
||
||

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

Тип доставки доступный для блюда - доставка или самовывоз. Если не указан, то блюдо доступно как для доставки, так и для самовывоза

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

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

Порядок сортировки от меньшего к большему. Если не указан, считаем за 100
{.table-cell}
||
||

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

НДС, включенный в стоимость, в процентах, если не указан, считается за 0
{.table-cell}
||
||

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

Наименьшее количество продукта (квант) доступное для заказа. Поле является обязательным, если значение isCatchweight равно true, иначе значение поля не используется
{.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": "Вареники с творогом и вишней",
  "description": "Мука, вода, яичный порошок, вишня замороженная, творог 5%",
  "price": 1000,
  "vat": 20,
  "shippingType": "delivery",
  "isCatchweight": false,
  "measure": 666,
  "weightQuantum": 0.1,
  "measureUnit": "г",
  "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": "Выбор приборов",
      "modifiers": [
        {
          "id": "916cfc99-acb4-4a96-9a42-b29159e88189",
          "name": "Европейские приборы",
          "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": [
      "мука"
    ],
    "badges": [
      {
        "category": "cooking_method",
        "value": "fried"
      }
    ]
  },
  "adult_info": {
    "age_group": 18,
    "alcohol_percentage": "12.34"
  },
  "onlyForCombo": true
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### ItemId {#entity-ItemId}

Внутренний идентификатор блюда в ресторане в системе партнера. Может быть любым значением, приводимым к строке. Рекомендация - UUID4

**Type**: string

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

</div>

<div class="openapi-entity">

### ComboComponentItem {#entity-ComboComponentItem}

Позиция в меню, которую можно выбрать как компонент комбо

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

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

Внутренний идентификатор блюда в ресторане в системе партнера. Может быть любым значением, приводимым к строке. Рекомендация - UUID4

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

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

Является ли данный продукт выбором по умолчанию
Если не указано ни одного продукта в списке с такой опцией,
то дефолтным будет первый продукт в списке

{.table-cell}
||
||

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

Порядок сортировки товара внутри компоненты комбо

_Min value:_{.json-schema-reset .json-schema-assertion} `0`
{.table-cell}
||
|#{.json-schema-properties}

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

```json translate=no
{
  "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
  "sortOrder": 0,
  "isDefault": true
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### ComboComponent {#entity-ComboComponent}

Компонент комбо

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

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

Идентификатор компонента

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

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

Список позиций, которые можно выбрать как компонент комбо

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

```json translate=no
[
  {
    "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
    "sortOrder": 0,
    "isDefault": true
  }
]
```

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

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

Название компонента

_Example:_{.json-schema-reset .json-schema-example} `Горячее`
{.table-cell}
||
||

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

Порядок сортировки компоненты комбо

_Min value:_{.json-schema-reset .json-schema-assertion} `0`
{.table-cell}
||
|#{.json-schema-properties}

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

```json translate=no
{
  "id": "example",
  "name": "Горячее",
  "sortOrder": 0,
  "items": [
    {
      "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
      "sortOrder": 0,
      "isDefault": true
    }
  ]
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### Price {#entity-Price}

**Type**: string

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

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

</div>

<div class="openapi-entity">

### ComboFixedPrice {#entity-ComboFixedPrice}

Фиксированная цена на комбо.
Цена на блюда в заказе будет распределена пропорционально их цене в меню.
Например, если цена комбо 2500 и оно состоит из блюд, цена которых в меню 1000 и 2000,
то в заказе цены блюд будут 833.33 и 1666.67 соответственно


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

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

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

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

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

_Const:_{.json-schema-reset .json-schema-value} `fixed`

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

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

```json translate=no
{
  "type": "fixed",
  "price": "example"
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### ComboItemPrice {#entity-ComboItemPrice}

Цена для блюда в комбо

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

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

Внутренний идентификатор блюда в ресторане в системе партнера. Может быть любым значением, приводимым к строке. Рекомендация - UUID4

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

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

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

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

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

```json translate=no
{
  "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
  "price": "example"
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### ComboItemFixedPrice {#entity-ComboItemFixedPrice}

На каждую позицию в комбо предоставляется отдельная цена

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

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

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

```json translate=no
[
  {
    "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
    "price": "example"
  }
]
```

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

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

_Const:_{.json-schema-reset .json-schema-value} `item_fixed`

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

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

```json translate=no
{
  "type": "item_fixed",
  "prices": [
    {
      "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
      "price": "example"
    }
  ]
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### DiscountPercent {#entity-DiscountPercent}

Размер скидки в процентах

**Type**: integer

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

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

</div>

<div class="openapi-entity">

### ComboSingleDiscountPrice {#entity-ComboSingleDiscountPrice}

На комбо предоставляется процентная скидка, применяемая к сумме позиций в комбо

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

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

Размер скидки в процентах

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

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

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

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

_Const:_{.json-schema-reset .json-schema-value} `single_discount`

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

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

```json translate=no
{
  "type": "single_discount",
  "discount": 0
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### ComboItemDiscount {#entity-ComboItemDiscount}

Скидка для блюда в комбо

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

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

Размер скидки в процентах

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

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

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

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

Внутренний идентификатор блюда в ресторане в системе партнера. Может быть любым значением, приводимым к строке. Рекомендация - UUID4

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

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

```json translate=no
{
  "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
  "discount": 0
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### ComboItemDiscountsPrice {#entity-ComboItemDiscountsPrice}

На каждую позицию в комбо предоставляется отдельная процентная скидка

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

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

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

```json translate=no
[
  {
    "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
    "discount": 0
  }
]
```

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

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

_Const:_{.json-schema-reset .json-schema-value} `item_discounts`

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

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

```json translate=no
{
  "type": "item_discounts",
  "discounts": [
    {
      "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
      "discount": 0
    }
  ]
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### ComboPrice {#entity-ComboPrice}

{% cut "**One of 4 types**" %}{.json-schema-combinators data-marker=or}

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

  Фиксированная цена на комбо.
  Цена на блюда в заказе будет распределена пропорционально их цене в меню.
  Например, если цена комбо 2500 и оно состоит из блюд, цена которых в меню 1000 и 2000,
  то в заказе цены блюд будут 833.33 и 1666.67 соответственно


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

  ```json translate=no
  {
    "type": "fixed",
    "price": "example"
  }
  ```

  {% endcut %}

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

  На каждую позицию в комбо предоставляется отдельная цена

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

  ```json translate=no
  {
    "type": "item_fixed",
    "prices": [
      {
        "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
        "price": "example"
      }
    ]
  }
  ```

  {% endcut %}

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

  На комбо предоставляется процентная скидка, применяемая к сумме позиций в комбо

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

  ```json translate=no
  {
    "type": "single_discount",
    "discount": 0
  }
  ```

  {% endcut %}

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

  На каждую позицию в комбо предоставляется отдельная процентная скидка

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

  ```json translate=no
  {
    "type": "item_discounts",
    "discounts": [
      {
        "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
        "discount": 0
      }
    ]
  }
  ```

  {% endcut %}

{% endcut %}

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

```json translate=no
{
  "type": "fixed",
  "price": "example"
}
```

{% endcut %}

</div>

<div class="openapi-entity">

### MenuCompositionCombo {#entity-MenuCompositionCombo}

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

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

Идентификатор категории в системе партнера

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

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

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

```json translate=no
[
  {
    "id": "example",
    "name": "Горячее",
    "sortOrder": 0,
    "items": [
      {
        "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
        "sortOrder": 0,
        "isDefault": true
      }
    ]
  }
]
```

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

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

Идентификатор комбо

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

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

Название комбо

_Example:_{.json-schema-reset .json-schema-example} `Комбо с Воппер По-Итальянски`
{.table-cell}
||
||

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

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

```json translate=no
{
  "type": "fixed",
  "price": "example"
}
```

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

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

Описание комбо

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

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

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

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

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

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

```json translate=no
{
  "id": "fa494dc1-2578-4adb-a8fa-e270de8c3d28",
  "categoryId": "fa494dc1-2578-4adb-a8fa-e270de8c3d28",
  "name": "Комбо с Воппер По-Итальянски",
  "description": "example",
  "image": {
    "hash": "example",
    "url": "https://example.com"
  },
  "components": [
    {
      "id": "example",
      "name": "Горячее",
      "sortOrder": 0,
      "items": [
        {
          "itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
          "sortOrder": 0,
          "isDefault": true
        }
      ]
    }
  ],
  "price": {
    "type": "fixed",
    "price": "example"
  }
}
```

{% endcut %}

</div>

</div>

<div class="openapi__response__code__400">

## 400 Bad Request

Bad request. Ошибка в параметрах. **_В теле ответа ожидается массив с объектом из списка ошибок_**

<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

Согласованный с Яндекс.Еда числовой код ошибки
{.table-cell}
||
||

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

Сообщение об ошибке

_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

Не пройдена авторизация - истек токен, либо не был передан в запросе. Будет сделан ретрай

<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

Причина, по которой не прошла авторизация

_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

Не найден ресторан. **_В теле ответа ожидается массив с объектом из списка ошибок_**

<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

Внутренние ошибки сервера. **_В теле ответа ожидается массив с объектом из списка ошибок_**

<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.