====== API системы оповещений ======
===== Общий принцип работы с оповещениями через API =====
Сервер QR меню хранит очередь событий за некоторый промежуток времени ( по умолчанию 5 минут ). Старые события автоматически удаляются из очереди.
Сторонний клиент может обратиться к серверу по API и получить список новых событий.
===== Как получить список событий =====
Для того, чтобы получить список событий необходимо отправить GET запрос на /api/v4/events.
Пример запроса:
GET https://ip:port/api/v4/events?hash=hash
token: token
**hash** - это идентификатор события, благодаря которому сервер QR меню понимает, какие события клиент уже получил и какие для него являются новыми. Передается query параметром.
Для того чтобы получить все события в качестве hash передается значение none.
**token** - это ключ доступа к серверу QR меню. Передается внутри заголовка token.
Пример ответа:
{
"result": true,
"data": {
"updates": [
{
"hash": "0xd8833dd3",
"code": "waiter_call",
"table": 1000028,
"invoice": null,
"order": null,
"table_repr": {
"id": 1000028,
"name": "6",
"max_guests": 50
}
}
]
}
}
В ключе 'updates' содержится список из событий в хронологическом порядке.
Каждое событие представляет собой:
**hash** - идентификатор события
**code** - название события
**table** - идентификатор стола
**invoice** - текущий счет (id, id стола, сумма к оплате, информация о добавленных блюдах)
**order** - полное представление заказа (сумма, информация об официанте, столе, скидках и блюдах)
**table_repr** - информация о столе(id, имя, максимальное кол-во гостей)
Далее сторонний клиент самостоятельно отправляет оповещения в нужный канал. Например, на электронную почту.
==== Примеры ответов и виды событий ====
=== Сохранение заказа (save_order) ===
{
"hash": "0xd11f09a7",
"code": "save_order",
"table": 1000028,
"invoice": {
"id": 121,
"order_guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}",
"table_id": 1000028,
"unpaid_sum": 186.0,
"session_id": 121,
"status": 0,
"error": null,
"session": {
"items": [
{
"id": 1000041,
"type": "dish",
"count": 1.0,
"modifiers": [],
"name": "Блюдо с модификатором"
},
{
"id": 1000062,
"type": "dish",
"count": 3.0,
"modifiers": [],
"name": "Блюдо"
}
],
"payments": null
}
},
"order": {
"guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}",
"sum": 186.0,
"pricelist_sum": 186.0,
"table": {
"id": 1000028,
"name": "6"
},
"waiter": {
"id": 9001,
"name": "Система"
},
"discounts": [],
"payments": [],
"dishes": [
{
"id": 1000041,
"type": "dish",
"name": "Блюдо с модификатором",
"price": 150.0,
"count": 1.0,
"sum": 150.0,
"modifiers": []
},
{
"id": 1000062,
"type": "dish",
"name": "Блюдо",
"price": 12.0,
"count": 3.0,
"sum": 36.0,
"modifiers": []
}
]
}
}
=== Вызов официанта (waiter_call) ===
{
"result": true,
"data": {
"updates": [
{
"hash": "0xd8833dd3",
"code": "waiter_call",
"table": 1000028,
"invoice": null,
"order": null,
"table_repr": {
"id": 1000028,
"name": "6",
"max_guests": 50
}
}
]
}
}
=== Дозаказ (additional_order)===
{
"hash": "0xb22ce428",
"code": "additional_order",
"table": 1000028,
"invoice": {
"id": 122,
"order_guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}",
"table_id": 1000028,
"unpaid_sum": 336.0,
"session_id": 122,
"status": 0,
"error": null,
"session": {
"items": [
{
"id": 1000041,
"type": "dish",
"count": 1.0,
"modifiers": [],
"name": "Блюдо с модификатором"
}
],
"payments": null
}
},
"order": {
"guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}",
"sum": 336.0,
"pricelist_sum": 336.0,
"table": {
"id": 1000028,
"name": "6"
},
"waiter": {
"id": 9001,
"name": "Система"
},
"discounts": [],
"payments": [],
"dishes": [
{
"id": 1000041,
"type": "dish",
"name": "Блюдо с модификатором",
"price": 150.0,
"count": 1.0,
"sum": 150.0,
"modifiers": []
},
{
"id": 1000062,
"type": "dish",
"name": "Блюдо",
"price": 12.0,
"count": 3.0,
"sum": 36.0,
"modifiers": []
},
{
"id": 1000041,
"type": "dish",
"name": "Блюдо с модификатором",
"price": 150.0,
"count": 1.0,
"sum": 150.0,
"modifiers": []
}
]
}
}
Вся информация о добавленных в заказ блюдах содержится в ключе "invoice" - "session".
=== Онлайн оплата (online_payment) ===
{
"hash": "0xa1fb9fc1",
"code": "online_payment",
"table": 1000028,
"invoice": null,
"order": {
"guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}",
"sum": 186.0,
"pricelist_sum": 186.0,
"table": {
"id": 1000028,
"name": "6"
},
"waiter": {
"id": 9001,
"name": "Система"
},
"discounts": [],
"payments": [],
"dishes": [
{
"id": 1000041,
"type": "dish",
"name": "Блюдо с модификатором",
"price": 150.0,
"count": 1.0,
"sum": 150.0,
"modifiers": []
},
{
"id": 1000062,
"type": "dish",
"name": "Блюдо",
"price": 12.0,
"count": 3.0,
"sum": 36.0,
"modifiers": []
}
]
},
"table_repr": {
"id": 1000028,
"name": "6",
"max_guests": 50
}
}
=== Запрос счета (bill_request) ===
{
"hash": "0xa1fb9fc1",
"code": "bill_request",
"table": 1000028,
"invoice": null,
"order": {
"guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}",
"sum": 186.0,
"pricelist_sum": 186.0,
"table": {
"id": 1000028,
"name": "6"
},
"waiter": {
"id": 9001,
"name": "Система"
},
"discounts": [],
"payments": [],
"dishes": [
{
"id": 1000041,
"type": "dish",
"name": "Блюдо с модификатором",
"price": 150.0,
"count": 1.0,
"sum": 150.0,
"modifiers": []
},
{
"id": 1000062,
"type": "dish",
"name": "Блюдо",
"price": 12.0,
"count": 3.0,
"sum": 36.0,
"modifiers": []
}
]
},
"table_repr": {
"id": 1000028,
"name": "6",
"max_guests": 50
}
}
===== Как получить токен QR меню =====
Чтобы узнать свой токен, необходимо зайти на главную страницу QR меню, выбрать раздел "Параметры системы" - "Регистрация на сервере приложений" и скопировать значение из поля "Секретный ключ". Это и есть ваш токен.
**Раздел наполняется, информация будет доступна в ближайшее время.**