Структура ответа#

Детальное описание структуры ответа от /api/hotels/create_booking.

Основная структура#

ПолеТипОбязательноОписание
bookingIdguidНетИдентификатор созданного бронирования (формат UUID)
supplierOrderIdstringНетИдентификатор заказа у поставщика
partnerOrderIdstringНетИдентификатор заказа партнера
statusstring, enumДаСтатус созданного бронирования. Возможные значения: unknown, inWork, completed, rejected, cancelled, failed

Что делать, если status отличается от completed, rejected и failed. Если в ответе вернулся статус inWork или unknown — это означает, что поставщик ещё не подтвердил и не отклонил бронирование окончательно на момент ответа. Некоторые поставщики подтверждают бронь не сразу, а в течение получаса и дольше. В этом случае нужно повторно запросить статус бронирования через /api/hotels/view_booking спустя некоторое время — и повторять этот запрос, пока не будет получен финальный статус (completed, rejected или failed).

В каких случаях возвращается каждый статус#

  • completed — поставщик подтвердил бронирование (окончательный статус).
  • rejected — поставщик явно отклонил бронирование, например по причине овербукинга (окончательный статус).
  • cancelled — бронирование аннулировано у поставщика, в том числе сразу после создания (окончательный статус).
  • failed — поставщик вернул явную ошибку создания бронирования (окончательный статус; не все поставщики используют этот статус — часть из них в случае ошибки возвращает unknown).
  • inWork — поставщик принял запрос, но ещё обрабатывает бронирование, окончательный результат пока не получен.
  • unknown — от поставщика не пришёл ни один из распознаваемых статусов на момент ответа: либо явный статус вообще не вернулся, либо вернулось значение, не входящее в известный набор.

Примеры ответов#

Успешный ответ#

1{
2  "bookingId": "019a0c82-5d2b-7a5e-84fe-56357a57df66",
3  "supplierOrderId": "SUP-12345",
4  "partnerOrderId": "ORDER-12345",
5  "status": "completed"
6}

Типичные ошибки#

Код ошибкиПричинаРешение
OFFER_NOT_FOUNDПредложение не найдено в кэше или истёк срок действия searchId/offerIdВыполните offer_pricing заново и повторите бронирование
OFFER_NOT_VERIFIEDПредложение не было подтверждено через offer_pricing перед бронированиемВызовите offer_pricing для данного оффера перед create_booking
ECLC_NOT_AVAILABLEЗапрошен ранний заезд/поздний выезд (upsells с checkinTime/checkoutTime), но у предложения нет пары для раннего заезда/позднего выездаУберите соответствующий upsell или выберите другое предложение
HOTEL_TIME_UNKNOWNНе удалось определить стандартное время заезда/выезда отеля (актуально для поставщика Acase)Передайте upsells[].checkinTime с type = "earlyCheckin" и/или upsells[].checkoutTime с type = "lateCheckout" и повторите запрос
VALIDATION_ERRORОшибка валидации запросаПроверьте формат и обязательность полей запроса

Помимо перечисленных TAPI-кодов, при ошибке на стороне поставщика в ответе может быть возвращён код ошибки поставщика без изменений (проброс) — набор таких кодов зависит от поставщика и не фиксирован.


Связанные операции#