Структура ответа#
Детальное описание структуры ответа от /api/hotels/create_booking.
Основная структура#
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
bookingId | guid | Нет | Идентификатор созданного бронирования (формат UUID) |
supplierOrderId | string | Нет | Идентификатор заказа у поставщика |
partnerOrderId | string | Нет | Идентификатор заказа партнера |
status | string, 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-кодов, при ошибке на стороне поставщика в ответе может быть возвращён код ошибки поставщика без изменений (проброс) — набор таких кодов зависит от поставщика и не фиксирован.
Связанные операции#
- Просмотр бронирования — получение деталей бронирования
- Отмена бронирования — отмена бронирования
- Поиск бронирований — поиск бронирований