Бронирования
Создание бронирований от имени гостей, отслеживание статуса и отмена. Перед созданием может потребоваться верификация телефона.
Верификация телефона
Если у ресторана phoneConfirmationEnabled = true, перед бронированием нужно подтвердить номер гостя.
Используйте международный формат с кодом страны: +79998887766. Рекомендуется валидировать номер библиотекой Google libphonenumber перед отправкой.
Шаг 1: Запрос кода
Отправьте номер телефона. В ответ придёт timeLeft — секунды до возможности повторного запроса.
curl -X POST "https://backend.guestme.ru/api/v1/external/restaurant/1001/confirmation/code/request" \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{"phone": "+79991234567"}'
Шаг 2: Проверка кода
Отправьте номер телефона и полученный код. При успехе — статус 200.
curl -X POST "https://backend.guestme.ru/api/v1/external/restaurant/confirmation/code/verify" \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{"phone": "+79991234567", "code": "1234"}'
Создание бронирования
Обязательные поля
| Поле | Тип | Пример | Описание |
|---|---|---|---|
firstName | string | "Иван" | Имя гостя |
phone | string | "+79994656464" | Телефон гостя |
date | date-time | "2025-06-15T19:00:00Z" | Дата и время бронирования |
persons | int32 | 2 | Количество гостей |
Необязательные поля
| Поле | Тип | Описание |
|---|---|---|
lastName | string | Фамилия гостя |
comment | string | Комментарий к бронированию |
meta.promo | string | Промокод |
curl -X POST "https://backend.guestme.ru/api/v1/external/restaurant/1001/booking" \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{
"firstName": "Иван",
"phone": "+79991234567",
"date": "2025-06-15T19:00:00Z",
"persons": 2,
"comment": "У окна"
}'
Получение бронирования
Получение информации о бронировании по его ID.
curl "https://backend.guestme.ru/api/v1/external/booking/5001" \
-H "Authorization: Bearer TOKEN"
Отмена бронирования
curl -X DELETE "https://backend.guestme.ru/api/v1/external/booking/5001" \
-H "Authorization: Bearer TOKEN"
Отменить можно только бронирования в статусе CREATED или SENT. Попытка отменить бронирование в другом статусе вернёт ошибку booking_incompatible_state.
Статусы бронирования
Бронирование проходит через несколько статусов в процессе обработки:
| Статус | Описание |
|---|---|
CREATED | Бронирование создано, ожидает отправки в ресторан |
SENT | Отправлено в POS-систему ресторана |
ACCEPTED | Подтверждено рестораном |
DECLINED | Отклонено рестораном |
IN_PROGRESS | Гость находится в ресторане |
CLOSED | Визит завершён |
CANCELING | Запрос на отмену отправлен |
CANCELED | Бронирование отменено |
PATCHING | Обновление данных в процессе |
ERROR | Ошибка обработки |
Ограничения
- Дата бронирования должна быть в будущем и в пределах расписания ресторана
- На один номер телефона допускается только одно активное бронирование в одном ресторане
- Ресторан должен иметь
guestAcquisitionChannelEnabled=true - Бронирование возможно только в рабочие часы приёма бронирований (тип расписания
BOOKING)
При попытке создать второе активное бронирование на тот же номер телефона в том же ресторане API вернёт ошибку guest_have_not_closed_booking.