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