Бронирования через API
Создание, получение и отмена бронирований. Верификация телефона, статусы и ограничения
API GuestMe позволяет создавать бронирования от имени гостей, отслеживать их статус и отменять при необходимости. Перед созданием бронирования может потребоваться верификация телефонного номера.
Верификация телефона
Если у ресторана включена верификация (свойство phoneConfirmationEnabled = true), перед созданием бронирования необходимо подтвердить номер телефона гостя.
Шаг 1: Запрос кода
POST /api/v1/external/restaurant/{id}/confirmation/code/request
Отправьте номер телефона в формате +79998887766. В ответ придёт timeLeft — количество секунд до возможности повторного запроса.
Шаг 2: Проверка кода
POST /api/v1/external/restaurant/confirmation/code/verify
Отправьте номер телефона и полученный код. При успехе — статус 200.
Используйте международный формат с кодом страны. Рекомендуется валидировать номер с помощью библиотеки Google libphonenumber перед отправкой.
Создание бронирования
POST /api/v1/external/restaurant/{id}/booking — создание нового бронирования.
Обязательные поля
Поле | Тип | Пример | Описание |
|---|---|---|---|
|
|
| Имя гостя |
|
|
| Телефон гостя |
|
|
| Дата и время бронирования |
|
|
| Количество гостей |
Необязательные поля
Поле | Тип | Описание |
|---|---|---|
|
| Фамилия гостя |
|
| Комментарий к бронированию |
|
| Промокод |
Получение бронирования
GET /api/v1/external/booking/{id} — получение информации о бронировании по его ID.
Отмена бронирования
DELETE /api/v1/external/booking/{id} — отмена бронирования.
Отменить можно только бронирования в статусе CREATED или SENT. Попытка отменить бронирование в другом статусе вернёт ошибку booking_incompatible_state.
Статусы бронирования
Бронирование проходит через несколько статусов в процессе обработки:
Статус | Описание |
|---|---|
| Бронирование создано, ожидает отправки в ресторан |
| Отправлено в POS-систему ресторана |
| Подтверждено рестораном |
| Отклонено рестораном |
| Гость находится в ресторане |
| Визит завершён |
| Запрос на отмену отправлен |
| Бронирование отменено |
| Обновление данных в процессе |
| Ошибка обработки |
Ограничения
- Дата бронирования должна быть в будущем и в пределах расписания ресторана
- На один номер телефона допускается только одно активное бронирование в одном ресторане
- Ресторан должен иметь
guestAcquisitionChannelEnabled=true - Бронирование возможно только в рабочие часы приёма бронирований (тип расписания BOOKING)
При попытке создать второе активное бронирование на тот же номер телефона в том же ресторане API вернёт ошибку guest_have_not_closed_booking.