1. Получение доступа
Запроситеclient_id
и client_secret
и адрес сервера
у менеджера GuestMe или через поддержку.
2. Получение access_token
Используйтеclient_credentials
grant через /oauth2/token
:
Параметры:
grant_type
:client_credentials
scope
:ROLE_EXTERNAL_INTEGRATION
- заголовок:
Authorization: Basic base64(client_id:client_secret)
3. Подключение веб хуков
Создайте веб хук черезPOST /api/v1/external/webhook
, чтобы получать уведомления о событиях:
- События:
CREATE
,UPDATE
,DELETE
- Сущности:
BOOKING
,RESTAURANT
url
: адрес вашей системы, куда GuestMe будет отправлять события.
authorizationHeaderPrefix
: префикс который будет добавлен в заголовокAuthorization
перед токеномtoken
: ваш собственный токен, который будет добавлен в заголовокAuthorization
каждого запроса вида:
WebhookEventExternalDto
, в поле data
- один из вариантов: BookingExternalDto
или RestaurantExternalDto
.
4. Проверка подключения ресторана
Чтобы определить, подключён ли ресторан к системе бронирования, проверьте поле:RestaurantPropertiesExternalDto
в поле ресторана RestaurantExternalDto.properties
. Если оно true
, ресторан готов к приёму онлайн-бронирований.
5. Подтверждение номера телефона
Номер телефона резерва обязательно должен быть валидным по формату, его можно проверить на валидность библиотекой Google libphonenumber Некоторые рестораны могут требовать обязательное подтверждение номера телефона гостя перед созданием резерва. Эта настройка регулируется полемproperties.phoneConfirmationEnabled
в объекте ресторана.
true
- ресторан требует подтверждения номера телефона перед созданием резерва.false
- подтверждение номера телефона не требуется.
Логика применения
-
Если
phoneConfirmationEnabled = true
:- Все новые резервы должны содержать подтвержденный номер телефона гостя.
- Партнёр обязан выполнить проверку телефона одним из способов:
- Использовать шлюз ресторана через API интеграции GuestMe для подтверждения номера.
- Запросить код подтверждения
- Запросить проверку кода подтверждения
- Использовать собственную систему подтверждения телефонов (повторная проверка через шлюз не нужна).
- Использовать шлюз ресторана через API интеграции GuestMe для подтверждения номера.
-
Если
phoneConfirmationEnabled = false
:- Подтверждение номера телефона не требуется.
- Партнёр может передавать номер без дополнительной проверки.
Ограничения, связанные с датой бронирования
- Запрос на бронирование может быть выполнен только в ресторан с настроенным расписанием:
ScheduleType.RESTAURANT
- базовое расписание работы ресторана (обязательно).ScheduleType.BOOKING
- расписание приёма резервов (необязательно, но, если есть, проверка ведётся по нему).
- Время резерва должно попадать в указанные интервалы расписания.
- Резерв не может быть создан на прошедшее время (по локальному времени ресторана).
Ограничения по отмене резерва
- Отмена резерва возможна только для резервов в статусе:
CREATED
SENT
booking_incompatible_state
Ограничения по номеру телефона
- На один номер телефона можно создать только одну активную бронь в одном ресторане.
- При попытке создать вторую бронь будет возвращена ошибка:
guest_have_not_closed_booking
Ошибки API бронирования
Все ошибки возвращаются в JSON-формате.Пример
Ниже приведены основные ошибки, возвращаемые API бронирования.
Код | Описание |
---|---|
booking_incorrect_date | Указанная дата резерва некорректна (в прошлом или не попадает в расписание). |
restaurant_guest_acquisition_is_disabled | Канал привлечения гостей в ресторане отключен. |
restaurant_code_confirmation_is_disabled | Шлюз подтверждения номера телефона по коду отключен в ресторане. |
mobile_confirmation_code_is_incorrect | Неверный код подтверждения телефона. |
mobile_confirmation_code_is_not_expired | Код подтверждения телефона ещё не истёк. |
booking_incompatible_state | Попытка отменить резерв в неподходящем статусе. Отмена возможна только в статусах CREATED или SENT . |
guest_have_not_closed_booking | На один номер телефона может быть только одна активная бронь в ресторане. |
Контакты
По вопросам интеграции — обращайтесь в поддержку:api@guestme.ru