YTimes Кафе
Search
K

WebHook API

получение событий от системы
Приложение может отправлять события на ваш сервер, такие как изменение статуса заказа или информацию о том, что в системе изменилось меню.

Настройка

Для включения необходимо создать интеграцию на странице "Настройки - Интеграции" с типом "Интеграция по API". В настройках интеграции указать ключ авторизации (он будет отправлен вам в header Authorization, чтобы вы понимали что запрос пришел от нас) и указать URL-адреса, на которые нужно отправлять те или иные события. Если для события указан адрес, на него будет отправляться событие, если адрес не указан, то соответственно ничего отправляться не будет.
Например, если вы указали адрес https://example.ytimes.ru/notification/menu/update для событий изменений меню, на него будут поступать запросы всякий раз, когда кто-то в личном кабинете YTimes будет менять настройки меню.
В теле запроса будет передаваться JSON, соответствующий событию. В поле eventId будет передаваться UUID события - это ключ идемпотентности, чтобы повторные запросы не приводили к дублированию на вашей стороне.
При успешной обработке события ваш сервер должен ответить кодом 200 и в теле ответа отправить "OK". Мы будем отправлять событие каждые 5 минут до тех пор пока ваш сервер не примет событие. Если в течение 48 часов успешного ответа не получено, отправка события отменяется.
post
{your url}
/remote-order/status
Статус заказа, созданного по API
post
{your base url}
/menu/changed
Событие изменения меню
post
{your base url}
/client/update
Изменение анкеты карты гостя

Пример контроллера для приема событий

@Controller
@RequestMapping("/public/exapi/webhook/")
public class ExWebHookTestController {
@RequestMapping("/menu/changed")
@ResponseBody
public String menuChanged(@RequestHeader(required = false) String Authorization,
@RequestBody(required = false) Map body) {
//check auth header
//do something
return "OK";
}
@RequestMapping("/order/status")
@ResponseBody
public String orderStatus(@RequestHeader(required = false) String Authorization,
@RequestBody(required = false) Map body) {
//check auth header
//do something
return "OK";
}
}