- Request
- Responses
- 200 OK
- Body
- Category
- MenuCompositionItem
- MenuCompositionCombo
- Schedule
- CategoryImages
- MenuCompositionItemAdditionalDescriptions
- AdultInfo
- ItemsImages
- ModifierGroups
- Nutrients
- ComboComponent
- ComboFixedPrice
- ComboSingleDiscountPrice
- ComboItemDiscountsPrice
- ScheduleName
- MenuCompositionItemAdditionalDescriptionsBadge
- AgeGroup
- Modifiers
- ComboComponentItem
- ComboItemDiscount
- 400 Bad Request
- 401 Unauthorized
- 404 Not Found
- 500 Internal Server Error
Получить актуальное меню ресторана
Позиции, содержащие схематические или логические несоответствия (слишком длинная строка, цена равная 0.00) могут быть проигнорированы. Актуальная версия модели ответа - application/vnd.eats.menu.composition.v2+json
Request
GET
/menu/{restaurantId}/composition
Path parameters
|
Name |
Description |
|
restaurantId* |
Type: string Идентификатор ресторана в системе партнера |
Responses
200 OK
OK, возвращается актуальное на данный момент меню для указанного ресторана
Body
application/vnd.eats.menu.composition.v2+json
{
"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": "string",
"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,
"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": "string",
"url": "string"
}
],
"additional_descriptions": {
"consisting_ingredients": [
"мука"
],
"badges": [
{
"category": "cooking_method",
"value": "fried"
}
]
},
"adult_info": {
"age_group": 18,
"alcohol_percentage": "12.34"
},
"onlyForCombo": false
}
],
"combos": [
{
"id": "fa494dc1-2578-4adb-a8fa-e270de8c3d28",
"categoryId": "fa494dc1-2578-4adb-a8fa-e270de8c3d28",
"name": "Комбо с Воппер По-Итальянски",
"description": "string",
"image": {
"hash": "string",
"url": "string"
},
"components": [
{
"id": "string",
"name": "Горячее",
"items": [
{
"itemId": "e6709e9a-d3ab-4d1e-aa69-7ce30073cbc9",
"isDefault": false
}
]
}
],
"price": {
"type": "fixed",
"price": "string"
}
}
],
"lastChange": "1937-01-01T12:00:27.870000+00:20"
}
|
Name |
Description |
|
categories* |
Type: Category[] Категории меню |
|
items* |
Type: MenuCompositionItem[] Список блюд, доступных для заказа |
|
lastChange* |
Type: string<date-time> Дата последнего изменения меню ресторана (на стороне партнера). Важно: дата в формате RFC3339 с дробной частью секунд (Y-m-d\TH:i:s.uP)! Если эта дата не менялась, Яндекс Еда может в автоматическом режиме принять решение о том, что обновлять меню не требуется. Если дата обновления в этом поле отличается от даты во время последнего обновления меню, то оно будет загружено заново Example: |
|
combos |
Type: MenuCompositionCombo[] Список комбо, доступных для заказа |
|
schedules |
Type: Schedule Описание возможных типов расписаний категорий меню |
Category
|
Name |
Description |
|
id* |
Type: string Внутренний идентификатор категории в системе партнера. Может быть любым значением, приводимым к строке. Рекомендация - UUID4 Example: Max length: |
|
name* |
Type: string Наименование категории (например "Завтраки") Example: |
|
images |
Type: CategoryImages[] Изображение категории ресторана |
|
parentId |
Type: string Уникальный идентификатор родительской категории для древовидной структуры. nullable: true. Не может быть пустой строкой. Ссылается на существующие категории. При загрузке адаптируется к плоской структуре категорий Яндекс.Еды (товары из подкатегорий попадают в родительские категории первого уровня) Example: Max length: |
|
schedules |
Type: string[] Тип расписания категории. Если указать пустой список или сослаться на пустую категорию, находящуюся в отдельном блоке schedules, то считаем категорию всегда доступной. Example: |
|
sortOrder |
Type: integer Порядок сортировки от меньшего к большему. Если не указан, считаем за 100 Example: |
MenuCompositionItem
|
Name |
Description |
|
categoryId* |
Type: string Идентификатор категории в системе партнера Example: Max length: |
|
id* |
Type: string Внутренний идентификатор блюда в ресторане в системе партнера. Может быть любым значением, приводимым к строке. Рекомендация - UUID4 Example: Max length: |
|
measure* |
Type: integer Характеристика измерений блюда - например вес или объем Example: |
|
measureUnit* |
Type: string Единица измерения. Допустимые значения - граммы и миллилитры Example: Enum: |
|
name* |
Type: string Наименование блюда в ресторане (например "Пирожки с вишней") Example: |
|
price* |
Type: number<double> Цена продукта. Блюда с нулевой ценой пропускаются и не попадают в меню Example: |
|
additional_descriptions |
Type: MenuCompositionItemAdditionalDescriptions Дополнительные поля для описания блюда |
|
adult_info |
Type: AdultInfo Информация о adult-свойствах товара |
|
description |
Type: string Полное описание блюда Example: |
|
excise |
Type: string Признак акцизного товара. Также можно вместо ключа excise передавать метку [AT] (заглавными латинскими буквами в квадратных скобках) в name товара. Example: Enum: |
|
images |
Type: ItemsImages[] Изображение блюда |
|
isCatchweight |
Type: boolean Флаг того, что позиция весовая Default: Example: |
|
modifierGroups |
Type: ModifierGroups[] Группы модификаторов для блюда. Обязательность модификаторов определяется параметром |
|
nutrients |
Type: Nutrients Параметры КБЖУ |
|
onlyForCombo |
Type: boolean Блюдо только для комбо |
|
sortOrder |
Type: integer Порядок сортировки от меньшего к большему. Если не указан, считаем за 100 Example: |
|
vat |
Type: number<int32> НДС, включенный в стоимость, в процентах, если не указан, считается за 0 Example: |
|
weightQuantum |
Type: number<float> Наименьшее количество продукта (квант) доступное для заказа. Поле является обязательным, если значение isCatchweight равно true, иначе значение поля не используется Example: |
MenuCompositionCombo
|
Name |
Description |
|
categoryId* |
Type: string Идентификатор категории в системе партнера Example: |
|
components* |
Type: ComboComponent[] Компонент комбо |
|
id* |
Type: string Идентификатор комбо Example: |
|
name* |
Type: string Название комбо Example: |
|
price* |
Type: ComboFixedPrice |
|
description |
Type: string Описание комбо |
|
image |
Type: ItemsImages |
Schedule
|
Name |
Description |
|
scheduleName |
Type: ScheduleName[] Объявление необходимого типа расписания. Тип определяется названием ключа. Например, breakfasts. Далее этот ключ используется в массиве расписаний у категорий меню. |
CategoryImages
|
Name |
Description |
|
updatedAt* |
Type: string<date-time> Дата обновления изображения, в формате RFC3339 с дробной частью секунд (Y-m-d\TH:i:s.uP) Example: |
|
url* |
Type: string<uri> Ссылка на изображение для скачивания |
MenuCompositionItemAdditionalDescriptions
Дополнительные поля для описания блюда
|
Name |
Description |
|
badges |
Type: MenuCompositionItemAdditionalDescriptionsBadge[] Тэги блюда разделены на категории и значения. В каждой категории можно выбрать всего один вариант. При обработке из каждой категории будет браться первое валидное значение. Дублирующие, неизвестные категории или несоответствие значения категории будут пропущены.
|
|
consisting_ingredients |
Type: string[] Перечень ингредиентов, из которых состоит блюдо. Это исходные компоненты блюда, а не его составные части. Желательно указать все ингредиенты, которые могут вызвать аллергию или сильно влияют на вкус. Так пользователи сразу увидят важные подробности о блюде. Example: Max length: Max items: |
AdultInfo
Информация о adult-свойствах товара
|
Name |
Description |
|
age_group* |
Type: AgeGroup Возрастное ограничение на товар Enum: |
|
alcohol_percentage |
Type: string Процент содержания алкоголя в блюде. Число указывается только через точку. Example: Pattern: |
ItemsImages
|
Name |
Description |
|
hash* |
Type: string SHA1-хэш от содержимого файла изображения. Рассчитывается партнером, служит признаком уникальности. В случае если он меняется, Яндекс Еда перезагружает картинку |
|
url* |
Type: string<uri> Ссылка на изображение для скачивания |
ModifierGroups
|
Name |
Description |
|
id* |
Type: string Идентификатор группы модификаторов на стороне партнера. Может быть любым значением, приводимым к строке. Рекомендация - UUID4 Example: |
|
maxSelectedModifiers* |
Type: integer<int32> Максимальное количество модификаторов, которые возможно выбрать для данной группы. Не должно быть меньше общего числа возможных "modifiers" (с учетом их maxAmount) и не должно быть меньше minSelectedModifiers Example: Min value: Max value: |
|
minSelectedModifiers* |
Type: integer<int32> Минимальное количество модификаторов, которые необходимо выбрать для данной группы. Не должно быть больше общего числа необходимых "modifiers" (с учетом их minAmount) и не должно быть больше maxSelectedModifiers Example: Min value: Max value: |
|
name* |
Type: string Наименование группы модификаторов Example: |
|
modifiers |
Type: Modifiers[] Опции, включаемые в группу |
|
sortOrder |
Type: integer Порядок сортировки от меньшего к большему. Если не указан, считаем за 100. Example: |
Nutrients
Энергетическая ценность продукта на 100гр
|
Name |
Description |
|
calories* |
Type: number Калории на 100гр Example: |
|
carbohydrates* |
Type: number Углеводы на 100гр Example: |
|
fats* |
Type: number Жиры на 100гр Example: |
|
proteins* |
Type: number Белки на 100гр Example: |
ComboComponent
Компонент комбо
|
Name |
Description |
|
id* |
Type: string Идентификатор компонента |
|
items* |
Type: ComboComponentItem[] Список позиций, которые можно выбрать как компонент комбо |
|
name* |
Type: string Название компонента Example: |
ComboFixedPrice
Фиксированная цена на комбо.
Цена на блюда в заказе будет распределена пропорционально их цене в меню.
Например, если цена комбо 2500 и оно состоит из блюд, цена которых в меню 1000 и 2000,
то в заказе цены блюд будут 833.33 и 1666.67 соответственно
|
Name |
Description |
|
price* |
Type: string Pattern: |
|
type* |
Type: string Enum: |
ComboSingleDiscountPrice
На комбо предоставляется процентная скидка, применяемая к сумме позиций в комбо
|
Name |
Description |
|
discount* |
Type: integer Размер скидки в процентах Min value: Max value: |
|
type* |
Type: string Enum: |
ComboItemDiscountsPrice
На каждую позицию в комбо предоставляется отдельная процентная скидка
|
Name |
Description |
|
discounts* |
Type: ComboItemDiscount[] Скидка для блюда в комбо |
|
type* |
Type: string Enum: |
ScheduleName
|
Name |
Description |
|
from* |
Type: string Время начала работы объявленного типа расписания, может принимать значения от 00:00 до 24:00 Example: |
|
till* |
Type: string Время окончания работы объявленного типа расписания, может принимать значения от 00:00 до 24:00 Example: |
|
weekdays* |
Type: string[] Дни недели работы объявленного типа расписания Example: Enum: |
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* |
Type: string Example: Enum: |
|
value* |
Type: string Example: Enum: |
Modifiers
|
Name |
Description |
|
id* |
Type: string Идентификатор модификатора на стороне партнера. Может быть любым значением, приводимым к строке. Рекомендация – UUID4. Этот идентификатор передаётся в заказе вместе с выбранным количеством Example: |
|
maxAmount* |
Type: integer<int32> Максимальное количество указанного модификатора для блюда в заказе. Это число не должно превышать значение параметра Example: Min value: Max value: |
|
minAmount* |
Type: integer<int32> Минимальное количество указанного модификатора для блюда в заказе. Должно быть меньше maxAmount. Example: Min value: Max value: |
|
name* |
Type: string Название модификатора Example: |
|
price* |
Type: number<double> Цена модификатора Example: |
|
excise |
Type: string Признак акцизного товара. Вместо ключа excise можно передавать метку [AT] (заглавными латинскими буквами в квадратных скобках) в поле Example: Enum: |
|
originalPrice |
Type: number<double> Отдельное поле для передачи исходых цен опций/модификаторов. Пользователю не показывается. Используется для расчета суммы при частичных возвратах. Example: |
|
vat |
Type: integer<int32> НДС, включенный в стоимость, в процентах. Если не указан, считается за 0 Example: |
ComboComponentItem
Позиция в меню, которую можно выбрать как компонент комбо
|
Name |
Description |
|
itemId* |
Type: string Внутренний идентификатор блюда в ресторане в системе партнера. Может быть любым значением, приводимым к строке. Рекомендация - UUID4 Example: |
|
isDefault |
Type: boolean Является ли данный продукт выбором по умолчанию |
ComboItemDiscount
Скидка для блюда в комбо
|
Name |
Description |
|
discount* |
Type: integer Размер скидки в процентах Min value: Max value: |
|
itemId* |
Type: string Внутренний идентификатор блюда в ресторане в системе партнера. Может быть любым значением, приводимым к строке. Рекомендация - UUID4 Example: |
400 Bad Request
Bad request. Ошибка в параметрах. В теле ответа ожидается массив с объектом из списка ошибок
ErrorItem
|
Name |
Description |
|
code |
Type: integer Согласованный с Яндекс.Еда числовой код ошибки Example: |
|
description |
Type: string Сообщение об ошибке Example: |
401 Unauthorized
Не пройдена авторизация - истек токен, либо не был передан в запросе. Будет сделан ретрай
Body
application/json
{
"reason": "Access token has been expired. You should request a new one"
}
|
Name |
Description |
|
reason* |
Type: string Причина, по которой не прошла авторизация Example: |
404 Not Found
Не найден ресторан. В теле ответа ожидается массив с объектом из списка ошибок
500 Internal Server Error
Внутренние ошибки сервера. В теле ответа ожидается массив с объектом из списка ошибок
No longer supported, please use an alternative and newer version.