external:qr_меню:04_оповещения_для_персонала:09_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 меню, выбрать раздел «Параметры системы» - «Регистрация на сервере приложений» и скопировать значение из поля «Секретный ключ». Это и есть ваш токен.

Раздел наполняется, информация будет доступна в ближайшее время.

  • external/qr_меню/04_оповещения_для_персонала/09_api.txt
  • Последнее изменение: 2022/02/03 12:08
  • alexander_troyan