Перейти к основному содержимому

Бронирования

Создание бронирований от имени гостей, отслеживание статуса и отмена. Перед созданием может потребоваться верификация телефона.

Верификация телефона

Если у ресторана 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"}'

Создание бронирования

Обязательные поля

ПолеТипПримерОписание
firstNamestring"Иван"Имя гостя
phonestring"+79994656464"Телефон гостя
datedate-time"2025-06-15T19:00:00Z"Дата и время бронирования
personsint322Количество гостей

Необязательные поля

ПолеТипОписание
lastNamestringФамилия гостя
commentstringКомментарий к бронированию
meta.promostringПромокод
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.