GetMenuByParams
Последнее изменение статьи: 11.06.2026 12:33
| Назначение | Запрос получения меню от агента |
|---|---|
| PluggetSystemType | RKMid |
ФОРМАТ ЗАПРОСА
Запрос
{
"taskType": "GetMenuByParams",
"params": {
"sync": {
"objectId": number,
"timeout": number
},
"priceTypeId": number,
"tradeGroupId": number,
"filterByKassPresets": bool,
"menuSelectorCode": number,
"orderCategoryCode": number,
"isShowBlocked": bool,
"allExtendedProperties": bool
}
}
| Параметр | Тип | Обязательный | Значение по умолчанию | Описание |
| taskType | Тип задачи | |||
| async | Асинхронный вызов метода (либо синхронный, либо асинхронный) | |||
| sync | Синхронный вызов метода (либо синхронный, либо асинхронный) | |||
| timeout | int | - | 120 | Время ожидания ответа от агента в секундах |
| objectId | int | + | Код ресторана в системе лицензирования | |
priceTypeId | int | - | Идентификатор типа цены. Если не указан, используется тот, что указан в конфигурации | |
tradeGroupId | int | - | Идентификатор торговой группы. Если не указан, используется тот, что указан в конфигурации | |
| filterByKassPresets | bool | - | true | Если false, то будет отдано полное меню, без фильтрации с помощью команды r_keeper GetOrderMenu (где фильтрация идёт с учётом настроек кассы, кассира и т.п.) |
| menuSelectorCode | int | - | Код селектора меню для построения дерева категорий блюд (и их дополнительной фильтрации). Если не указан, используется параметр DefaultMenuSelectorCode из раздела r_keeper: OrderCreationPreferences конфигурации Агента. Если и в конфигурации не задан код селектора — возвращается меню без учёта селекторов | |
| orderCategoryCode | int | + | Код категории заказов, которые можно сделать по запрашиваемому меню. Параметр становится не обязателен при выборе filterByKassPresets: false | |
| isShowBlocked | bool | - | false | Если true, то возвращает меню с заблокированными (в стоп листе) блюдами. У таких блюд есть параметр UnAvailable = true и отсутствует цена (price = 0) |
| allExtendedProperties | bool | - | false | Если true, то возвращает список расширенных свойств для блюд |
ФОРМАТ ОТВЕТА
Успешный ответ
Успешный ответ
{
"responseCommon": {
"taskGuid": "string",
"taskType": "GetMenuByParams",
"objectId": 0
},
"taskResponse": { // содержимое блока без парсинга на сервере
"lastUpdatedAt": "2019-28-T15:00:00+03:00",
"version": "number",
"menu": {
// Содержимое блока menu можно посмотреть здесь: https://docs.rkeeper.ru/ws/menu-77464440.html)
}
Ответ с ошибкой
Ответ с ошибкой
{
"responseCommon": {
"taskGuid": "string",
"taskType": "GetMenu",
"objectId": number
},
"error": {
"wsError": {
"code": "string",
"desc": "string"
},
"agentError": {
"code": "string",
"desc": "string"
}
}
}
| Параметр | Тип | Описание | ||||||
| taskGuid | guid | Уникальный код этой задачи используется при получении задачи через очередь | ||||||
| taskType | string enum | Тип задачи | ||||||
| objectId | int | Код ресторана в системе лицензирования | ||||||
| lastUpdatedAt | string | Время обновления меню в формате "2019-28-T15:00:00+03:00" | ||||||
| version | int | Версия данных в r_k справочнике Меню | ||||||
| menu | object | Содержимое блока menu можно посмотреть здесь: Menu | ||||||
| error | Контейнер ошибок, см Описание ошибок | |||||||
| ||||||||
Примеры структуры запросов
Для этого случая важно, чтобы
- для включения такого сценария нужно
- либо параметр конфигурации агента RKeeper:OrderCreationPreferences:UseGetOrderMenuOnly был задан в true,
- либо параметр запроса filterByKassPresets был установлен в true,
- либо параметр filterByKassPresets отсутствовал в запросе;
- orderCategoryCode
- параметр запроса orderCategoryCode указывал код существующей категории заказа.
{
"taskType": "GetMenuByParams",
"params": {
"sync": {
"objectId": 199996011,
"timeout": 120
},
"filterByKassPresets": true,
"orderCategoryCode": 1,
"allExtendedProperties": true
}
}
Для этого случая важно, чтобы
- параметр конфигурации агента RKeeper:OrderCreationPreferences:UseGetOrderMenuOnly
- был false или
- отсутсnвовал;
- параметр запроса filterByKassPresets был установлен в false;
- должна быть задана торговая группа (иначе фильтрации не будет)
- либо параметр запроса tradeGroupId,
- либо параметр конфигурации RKeeper:OrderCreationPreferences:TradeGroupId;
- должен быть задан тип цены (иначе все цены будут нулевыми)
- либо параметр запроса priceTypeId,
- либо параметр конфигурации RKeeper:OrderCreationPreferences:PriceTypeId.
{
"taskType": "GetMenuByParams",
"params": {
"sync": {
"objectId": 199996011,
"timeout": 120
},
"priceTypeId": 1,
"tradeGroupId": 1,
"filterByKassPresets": false,
"menuSelectorCode": 1
}
}
Чтобы блюда меню отдавались без учёта селекторов r_keeper, нужно, чтобы
- в запросе отсутствовал параметр menuSelectorCode и
- в конфигурации отсутствовал параметр RKeeper:OrderCreationPreferences:DefaultMenuSelectorCode.
{
"taskResponse": {
"menu": {
"lastUpdatedAt": "2026-05-21T09:21:16+03:00",
"version": 1212,
"products": [
{
"id": "1000016",
"code": "3",
"categoryId": "1000015",
"name": "Каша",
"nameEng": "",
"nameLang1": "",
"nameLang2": "",
"price": "220.00",
"description": "",
"descriptionEng": "",
"descriptionLang1": "",
"descriptionLang2": "",
"measure": {
"value": "0.500",
"unit": "Милилитр",
"priceMode": "PerPiece",
"qntDecDigits": "3",
"changeQntOnce": "false",
"joinMode": "almJoinLines"
},
"imageUrls": [
"URL://Test"
],
"classificationIds": [
"4193793"
],
"exciseCode": "1",
"globalTradeItemNumbers": "",
"alcoholCodes": "",
"openPrice": true,
"guid": "9109673e-1fdb-4790-b8b1-cdfbee424dfe",
"dishTaxes": {
"groupName": "НДС 18%",
"taxes": [
{
"taxName": "НДС",
"rateName": "18,00 %",
"rate": 18
}
]
},
"protein": "2",
"fat": "3",
"carbohydrates": "4",
"kcal": "1",
"extProperties": {
"NutritionalValue": ""
}
},
{
"id": "1000027",
"code": "5",
"categoryId": "1000015",
"schemeId": "1000038",
"name": "Чай",
"nameEng": "",
"nameLang1": "",
"nameLang2": "",
"price": "0.00",
"description": "",
"descriptionEng": "",
"descriptionLang1": "",
"descriptionLang2": "",
"measure": {
"value": "0.500",
"unit": "кг",
"priceMode": "PerPortion",
"qntDecDigits": "3",
"changeQntOnce": "false",
"joinMode": "almJoinLines"
},
"imageUrls": [],
"exciseCode": "1",
"globalTradeItemNumbers": "",
"alcoholCodes": "",
"openPrice": false,
"guid": "024e8465-9b3b-44a4-a92b-b540cd62135e",
"dishTaxes": {
"groupName": "НДС 18%",
"taxes": [
{
"taxName": "НДС",
"rateName": "18,00 %",
"rate": 18
}
]
},
"protein": "",
"fat": "",
"carbohydrates": "",
"kcal": "0",
"extProperties": {
"NutritionalValue": ""
}
},
{
"id": "1000048",
"code": "14",
"categoryId": "1000015",
"schemeId": "1000045",
"name": "Комбообед",
"nameEng": "",
"nameLang1": "",
"nameLang2": "",
"price": "0.00",
"description": "",
"descriptionEng": "",
"descriptionLang1": "",
"descriptionLang2": "",
"measure": {
"value": "0.000",
"unit": "шт",
"priceMode": "PerPiece",
"qntDecDigits": "0",
"changeQntOnce": "false",
"joinMode": "almJoinLines"
},
"imageUrls": [],
"exciseCode": "1",
"globalTradeItemNumbers": "",
"alcoholCodes": "",
"openPrice": false,
"guid": "6100b042-8001-4a02-8d22-dcdc9bb87bc3",
"extProperties": {}
}
],
"ingredients": [
{
"id": "2003",
"code": "2003",
"name": "ЕГАИС EAN13",
"nameEng": "",
"nameLang1": "",
"nameLang2": "",
"price": "0.00",
"imageUrls": [],
"maxAmountForDish": 1,
"openPrice": false,
"guid": "efc3e355-9b52-4b05-ab20-3cdb1dfb028b"
},
{
"id": "2012",
"code": "2012",
"name": "Маркированная продукция",
"nameEng": "",
"nameLang1": "",
"nameLang2": "",
"price": "0.00",
"imageUrls": [],
"maxAmountForDish": 1,
"openPrice": false,
"guid": "01938e73-f604-4dee-b4e8-e8fecbfe9597"
},
{
"id": "1000036",
"code": "10",
"name": "Большой",
"nameEng": "",
"nameLang1": "",
"nameLang2": "",
"price": "120.00",
"imageUrls": [],
"maxAmountForDish": 1,
"openPrice": false,
"guid": "b89cc99a-c0c8-4d55-8f60-dd4834eb3b4d"
},
{
"id": "1000037",
"code": "9",
"name": "Маленький",
"nameEng": "",
"nameLang1": "",
"nameLang2": "",
"price": "60.00",
"imageUrls": [],
"maxAmountForDish": 1,
"openPrice": false,
"guid": "9339e271-a619-4f6b-9530-2f1312932a3a"
},
{
"id": "1000042",
"code": "12",
"name": "Каша",
"nameEng": "",
"nameLang1": "",
"nameLang2": "",
"price": "10.00",
"description": "",
"measure": {
"value": "0.500",
"unit": "Милилитр",
"priceMode": "PerPiece",
"qntDecDigits": "3",
"changeQntOnce": "false",
"joinMode": "almJoinLines"
},
"imageUrls": [],
"maxAmountForDish": 1,
"dishId": 1000016,
"exciseCode": "1",
"openPrice": false,
"guid": "0e806fcf-6d01-4597-97d3-f56f41cd84da"
},
{
"id": "1000066",
"code": "18",
"name": "Каша",
"nameEng": "",
"nameLang1": "",
"nameLang2": "",
"price": "220.00",
"description": "",
"measure": {
"value": "0.500",
"unit": "Милилитр",
"priceMode": "PerPiece",
"qntDecDigits": "3",
"changeQntOnce": "false",
"joinMode": "almJoinLines"
},
"imageUrls": [],
"maxAmountForDish": 1,
"dishId": 1000016,
"exciseCode": "1",
"openPrice": false,
"guid": "2a3e6e39-40bd-4b1c-bd3a-8060c56ee22f"
},
{
"id": "1000159",
"code": "19",
"name": "Комментарий к блюду (WSA)",
"nameEng": "",
"nameLang1": "",
"nameLang2": "",
"price": "0.00",
"imageUrls": [],
"maxAmountForDish": 1,
"openPrice": false,
"guid": "b649335f-5483-48f7-8c58-a0f7f279ec6e"
}
],
"categories": [
{
"guid": "133f0826-b8c9-42a3-9046-843a166548aa",
"id": "1000015",
"name": "Меню",
"nameEng": "",
"nameLang1": "",
"nameLang2": ""
}
],
"ingredientsSchemes": [
{
"guid": "cdff65a1-9f41-4ba5-9cd9-4c6dcfe8f22e",
"id": "2007",
"name": "РОССИЯ: ЕГАИС",
"ingredientsGroups": [
{
"id": "2001",
"minCount": 1,
"maxCount": 1,
"changesPrice": false,
"freeCount": 0
},
{
"id": "2002",
"minCount": 1,
"maxCount": 1,
"changesPrice": false,
"freeCount": 0
}
],
"nameEng": "",
"nameLang1": "",
"nameLang2": ""
},
{
"guid": "d75fb123-182b-4d66-b81d-344ccaa083a5",
"id": "1000045",
"name": "Комбообед",
"ingredientsGroups": [
{
"id": "1000041",
"minCount": 0,
"maxCount": 0,
"changesPrice": true,
"freeCount": 0
}
],
"nameEng": "",
"nameLang1": "",
"nameLang2": ""
},
{
"guid": "8b9ab728-4cd9-41c7-9d5e-9ed1ac30264b",
"id": "1000061",
"name": "тест Схема",
"ingredientsGroups": [
{
"id": "1000059",
"minCount": 1,
"maxCount": 0,
"changesPrice": true,
"freeCount": 0,
"defaultModifier": 1000063
}
],
"nameEng": "",
"nameLang1": "",
"nameLang2": ""
}
],
"ingredientsGroups": [
{
"guid": "a85561cc-a17e-4934-93ac-7c8ead6296fa",
"id": "2011",
"name": "ЕГАИС Маркированная продукция",
"ingredients": [
"2012",
"2020"
],
"nameEng": "",
"nameLang1": "",
"nameLang2": ""
},
{
"guid": "3984b224-fbb9-4c7a-8602-f44ed4a9661a",
"id": "2115",
"name": "Объемно сортовой учет",
"ingredients": [
"2116"
],
"nameEng": "",
"nameLang1": "",
"nameLang2": ""
},
{
"guid": "9443f33e-888c-4493-b6e2-707e2bd0ff61",
"id": "1000059",
"name": "test",
"ingredients": [
"1000063",
"1000066"
],
"nameEng": "",
"nameLang1": "",
"nameLang2": ""
}
],
"classifications": [
{
"guid": "c65f9ac7-4324-4683-8b8d-3008a7495421",
"id": "4193793",
"parentId": "4193792",
"code": "4193793",
"name": "Еда"
},
{
"guid": "651a79ed-86ff-4bcc-aaa6-316a78d41582",
"id": "4193792",
"code": "4193792",
"name": "Plazius категории"
}
]
},
"lastUpdatedAt": "2026-05-21T09:21:16+03:00",
"version": 1212
},
"responseCommon": {
"taskGuid": "9e2d8376-5076-43fd-bd7a-1d4297d4e4a7",
"taskType": "GetMenuByParams",
"objectId": 199996011,
"agentGuid": "c415aa96-8952-4689-8fcb-c6c969e25aad"
}
}
{
"responseCommon": {
"taskGuid": "94e95cb9-b5ee-4ccb-a04d-929cc798104b",
"taskType": "GetMenuByParams",
"objectId": 199996011,
"agentGuid": "c415aa96-8952-4689-8fcb-c6c969e25aad"
},
"error": {
"agentError": {
"code": "WsaOrderError",
"desc": "RkInternal: Касса [3181] OrderCategory с кодом '100' не найден."
}
}
}
{
"responseCommon": {
"taskGuid": "46f146fd-bb2c-41a8-b4aa-6587007bd0b4",
"taskType": "GetMenuByParams",
"objectId": 331760005
},
"error": {
"wsError": {
"code": "Timeout",
"desc": "Agent is offline or has been unresponsive"
}
}
}