Ошибки#

Единый формат ошибок для всех операций домена отелей: search, hotel_pricing, offer_pricing, create_booking, view_booking, cancel_booking, search_bookings.


Error#

Объект ошибки в клиентском ответе. Приходит полем error в корне ответа; при успешном ответе поле пустое, а полезная нагрузка лежит рядом, теми же полями корня.

ПолеТипОбязательноОписание
codestringДаКод ошибки из закрытого перечня — см. Коды ошибок ниже
messagestringДаТекст ошибки для показа пользователю
descriptionstringНетУточнение к тексту ошибки. Заполняется не всегда — часто дублирует message
errorIdstring, uuidНетИдентификатор ошибки для обращения в поддержку

HTTP-статусы#

Статус 400 приходит только при отказе на проверке схемы запроса на границе API. Во всех остальных случаях ошибка приходит в теле ответа со статусом 200.

Одно значение возможно с обоими статусами: VALIDATION_ERROR со статусом 400 означает, что запрос отверг сам API, а со статусом 200 — что параметры отверг поставщик.

Примеры#

Ошибка от поставщика
1{
2  "code": "RATE_SOLD_OUT",
3  "message": "The rate is sold out. Please search again and select another offer.",
4  "errorId": "01937c4e-8a1f-7c3d-9b21-4f6a2e8d1c05"
5}
Ошибка до обращения к поставщику
1{
2  "code": "REGION_MAPPING_NOT_FOUND",
3  "message": "No supplier mapping found for region 99999",
4  "errorId": "01937c4e-9d02-7a55-8e13-7b9c5a2f4d68"
5}

Коды ошибок#

Значения поля code. Набор закрытый — других значений не бывает. Три группы: коды, которые формирует сам API до обращения к поставщику или вне его; два значения, которые API подставляет сам; и коды, которые приходят от поставщика без изменений.

Колонка «Метод(ы)»: все методы означает любую операцию домена.

Контекстные коды#

Формируются до обращения к поставщику или вне его — своего текста и обращения к поставщику ещё не было.

ЗначениеmessageМетод(ы)Когда возвращается
INVALID_REGION_IDRegionId has invalid formatsearchЗначение regionId не соответствует ожидаемому формату
REGION_MAPPING_NOT_FOUNDNo supplier mapping found for region {regionId}searchСоответствия региона нет ни у одного из активных офисов поставщиков
INVALID_HOTEL_IDHotelId has invalid formathotel_pricingЗначение hotelId не соответствует ожидаемому формату
HOTEL_MAPPING_NOT_FOUNDNo supplier mapping found for hotel {hotelId}hotel_pricingСоответствия отеля нет ни у одного из активных офисов поставщиков
NO_SEARCH_PRESETS_CONFIGUREDSearch is unavailable: no search preset is configured.search, hotel_pricingНе настроен ни один пресет поиска
NO_MATCHING_SEARCH_PRESETSearch is not possible with the given parameters: no matching search preset was found.search, hotel_pricingНет пресета, подходящего под параметры запроса
NO_TARGETSNo supplier targets available for this request.все методыНет активных офисов поставщика, настроенных для клиентского аккаунта
OFFER_NOT_FOUNDOffer not found or expiredoffer_pricing, create_bookingПредложение не найдено в кэше либо срок его хранения истёк
OFFER_NOT_VERIFIEDOffer must be verified via offer_pricing before bookingcreate_bookingПеред бронированием предложение не подтверждено вызовом offer_pricing
OFFER_BELOW_MIN_RETAIL_PRICEOffer is excluded: the sale price is below the supplier minimum retail price.offer_pricingЦена продажи после применения пресета ниже минимальной розничной цены поставщика
ECLC_NOT_AVAILABLEOffer does not support early checkin / late checkoutcreate_bookingДля предложения недоступны ранний заезд и поздний выезд
HOTEL_TIME_UNKNOWNHotel standard check-in and check-out time could not be determined...create_bookingНе определено стандартное время заезда или выезда отеля
BOOKING_NOT_FOUNDBooking not foundview_booking, cancel_bookingБронь не найдена в хранилище API (не путать с SUPPLIER_BOOKING_NOT_FOUND ниже — та бронь есть в хранилище, но не найдена у поставщика)

Коды словаря, которые API подставляет сам#

ЗначениеHTTP-статусМетод(ы)Когда возвращается
VALIDATION_ERROR400все методыЗапрос не прошёл проверку полей на границе API; к поставщику обращения не было. С тем же значением и статусом 200 приходит отказ поставщика по его параметрам
SYSTEM_ERROR200 в телевсе методыВнутренний сбой, включая необработанное исключение, недоступность кэша предложений и недоступность справочников

Коды от поставщика#

Приходят от поставщика и передаются клиенту без изменений. Если операция опрашивала несколько офисов поставщика и ошибкой ответили все — выбирается и передаётся код одной из полученных ошибок.

Доступность предложения и объекта#

ЗначениеmessageМетод(ы)Когда возвращается
RATE_NOT_FOUNDThe rate is no longer available. Please search again and select another offer.offer_pricing, create_bookingТариф больше не отдаётся поставщиком
RATE_SOLD_OUTThe rate is sold out. Please search again and select another offer.search, hotel_pricing, offer_pricing, create_bookingПо тарифу нет свободных номеров; сюда же исчерпание квоты или блока мест
OFFER_EXPIREDThe offer has expired. Please repeat the search and confirm a new offer.offer_pricing, create_bookingИстёк срок действия предложения или формы брони
RATE_LOCKEDThe rate is temporarily locked by another booking. Please try again in a few minutes.все методыОбъект или запись заблокированы другим пользователем поставщика
PROPERTY_INACTIVEThe property is not active at the supplier. Please select another property.hotel_pricing, offer_pricing, create_bookingОбъект размещения снят с публикации у поставщика
ONLINE_BOOKING_DISABLEDOnline booking is disabled for this property. Please select another property.hotel_pricing, offer_pricing, create_bookingОнлайн-бронирование объекта отключено
BOOKING_NOT_ALLOWEDBooking is not allowed for this property. Please select another property.hotel_pricing, offer_pricing, create_bookingБронирование объекта запрещено настройками поставщика
INSTANT_BOOKING_REQUIREDThis property accepts instant booking only. Please select another property.create_bookingОбъект принимает только мгновенное бронирование
PREBOOK_DISABLEDPre-booking is disabled for this account. Please contact your account manager.offer_pricingПредбронирование выключено для учётной записи
DATES_NOT_AVAILABLEThe requested dates are not available for this property. Please select other dates.search, hotel_pricing, offer_pricing, create_bookingЗапрошенные даты у объекта заняты или закрыты
NO_RATES_FOUNDThe supplier returned no rates for this request. Please change the search parameters.search, hotel_pricing, offer_pricing, create_bookingПоставщик ответил успешно, но ни одного тарифа не вернул
NO_PRODUCTS_FOUNDThe supplier returned no products for this request. Please change the search parameters.hotel_pricing, offer_pricingПоставщик ответил успешно, но ни одного продукта не вернул
ROOM_NOT_FOUNDThe requested room could not be found. Please repeat the search.hotel_pricing, offer_pricing, create_bookingВ ответе поставщика нет запрошенного номера либо номер не принадлежит объекту
CONTRACT_MISMATCHThe offer does not match the contract in use. Please repeat the search.offer_pricing, create_bookingПредложение получено по одному договору, а бронируется по другому

Цена и условия#

ЗначениеmessageМетод(ы)Когда возвращается
PRICE_CHANGEDThe price has changed. Please confirm the offer again.offer_pricing, create_bookingЦена изменилась между прайсингом и бронированием
CURRENCY_CHANGEDThe offer currency has changed. Please confirm the offer again.offer_pricing, create_bookingИзменилась валюта предложения
CONFIRMATION_TYPE_CHANGEDThe confirmation type has changed. Please confirm the offer again.offer_pricing, create_bookingИзменился тип подтверждения брони
CANCELLATION_TERMS_CHANGEDThe cancellation terms have changed. Please confirm the offer again.offer_pricing, create_bookingИзменились условия отмены или штрафы
ZERO_PRICEThe supplier returned a zero price for this offer. Please repeat the search.hotel_pricing, offer_pricingПоставщик вернул нулевую цену
PRICE_NOT_CALCULATEDThe supplier did not calculate the price for this offer. Please repeat the search.hotel_pricing, offer_pricingВ блоке цены есть ошибка, но кода в ней нет

Отмена#

ЗначениеmessageМетод(ы)Когда возвращается
CANCELLATION_DEADLINE_PASSEDThe cancellation deadline has passed. This booking can no longer be cancelled.cancel_bookingСрок, до которого отмена была возможна, прошёл
CANCELLATION_NOT_ALLOWEDCancellation is not allowed for this booking.cancel_bookingОтмена запрещена условиями тарифа или объекта
BOOKING_STATUS_NOT_CANCELLABLEThe current booking status does not allow cancellation.cancel_bookingТекущий статус брони отмену не допускает
CANCELLATION_NOT_CONFIRMEDThe supplier did not confirm the cancellation. Please check the booking status.cancel_bookingЗапрос на отмену отправлен, но статус брони её отмену не подтверждает
CANCELLATION_FORMAT_INVALIDThe cancellation request format is not accepted by the supplier.cancel_bookingПоставщик не принял формат запроса на аннуляцию

Проверка ввода#

ЗначениеmessageМетод(ы)Когда возвращается
INVALID_CHECKIN_DATEThe check-in date is invalid.search, hotel_pricing, offer_pricing, create_bookingДата заезда не проходит проверку поставщика
CHECKIN_DATE_IN_PASTThe check-in date is in the past. Please select a current or future date.searchДата заезда раньше текущей
BOOKING_HORIZON_EXCEEDEDThe requested dates are beyond the booking horizon. Please select earlier dates.searchДата выходит за предельный срок бронирования вперёд
INVALID_CHECKOUT_DATEThe check-out date is invalid.search, hotel_pricing, offer_pricing, create_bookingДата выезда не проходит проверку поставщика
INVALID_DATES_RANGEThe check-in and check-out dates are inconsistent.search, hotel_pricing, offer_pricing, create_bookingДаты заезда и выезда противоречат друг другу
CHECKIN_DATE_MISMATCHThe arrival date does not match the check-in date of the offer.create_bookingДата заезда в брони не совпадает с датой из прайсинга
STAY_TOO_LONGThe length of stay exceeds the supplier limit.search, hotel_pricingДлительность проживания больше предельной у поставщика
MIN_STAY_NOT_METThe length of stay is below the minimum required by the property.hotel_pricing, offer_pricing, create_bookingДлительность меньше минимальной у объекта
GUESTS_LIMIT_EXCEEDEDThe number of guests exceeds the limit for this property.hotel_pricing, offer_pricing, create_bookingГостей больше, чем допускает объект
GUESTS_COUNT_MISMATCHThe guest details do not match the declared number of guests.create_bookingСостав переданных гостей не совпадает с заявленным их числом
INVALID_ADULTS_COUNTThe number of adults is invalid.search, hotel_pricing, offer_pricing, create_bookingЧисло взрослых недопустимо
CHILDREN_NOT_ALLOWEDChildren are not allowed at this property.hotel_pricing, offer_pricing, create_bookingОбъект не принимает детей
INVALID_CHILDREN_AGESThe children ages are invalid.search, hotel_pricing, offer_pricing, create_bookingВозраст детей вне допустимого диапазона
INVALID_CHILDREN_DATAThe children data is invalid.create_bookingСостав данных о детях не проходит проверку
CHILDREN_LIMIT_EXCEEDEDThe number of children exceeds the limit for this property.searchДетей больше, чем допускает объект
INVALID_ROOMS_NUMBERThe number of rooms is invalid.search, create_bookingЧисло номеров недопустимо
INVALID_CHECKIN_TIMEThe requested check-in time is invalid.create_bookingЗапрошенное время заезда недопустимо
INVALID_CHECKOUT_TIMEThe requested check-out time is invalid.create_bookingЗапрошенное время выезда недопустимо
CHECKIN_TOO_EARLYThe requested check-in time is earlier than the property allows.create_bookingВремя заезда раньше, чем допускает объект
CHECKIN_TOO_LATEThe requested check-in time is later than the property allows.create_bookingВремя заезда позже, чем допускает объект
PAYMENT_TYPE_INVALIDThe selected payment type is invalid.create_bookingВыбранная форма оплаты недопустима
PAYMENT_TYPE_UNAVAILABLEThe selected payment type is not available for this booking.create_bookingФорма оплаты не была доступна на форме брони
CREDIT_CARD_DATA_INCOMPLETEThe credit card data is incomplete.create_bookingПереданы не все данные карты
INVALID_EMAILThe email address is invalid.create_bookingАдрес электронной почты не проходит проверку
INVALID_UUID_FORMATAn identifier in the request has an invalid format.create_bookingИдентификатор в запросе передан в неверном формате
UPSELL_DATA_INVALIDThe additional service data is invalid.search, offer_pricing, create_bookingДанные раннего заезда или позднего выезда не проходят проверку
RETURN_PATH_REQUIREDThe return path is required for the selected payment type.create_bookingДля выбранной формы оплаты обязателен адрес возврата
SUPPLIER_DATA_REQUIREDAdditional supplier data is required for this booking.create_bookingПоставщик требует дополнительные данные для брони
GROUP_BOOKING_NOT_AUTHORIZEDGroup booking is not authorized for this account. Please contact your account manager.create_bookingЗапрос распознан поставщиком как групповое бронирование
INVALID_PAGINGThe requested page is out of range.search, view_booking, search_bookingsЗапрошена страница вне диапазона
INVALID_BOOKING_AMOUNTThe booking amount is invalid.create_bookingСумма брони не проходит проверку
INVALID_BOOKING_IDThe booking identifier has an invalid format.view_booking, cancel_bookingИдентификатор брони передан в неверном формате
SERVICE_TYPE_NOT_ALLOWEDThis service type is not allowed for the account.search, hotel_pricingРабота с этим видом услуг запрещена учётной записи
REQUIRED_FIELD_MISSINGA required field is missing from the request.все методыВ запросе нет обязательного поля
INVALID_FIELD_FORMATA request field has an invalid format.все методыПоле запроса передано в неверном формате
INVALID_FIELD_VALUEA request field has an invalid value.все методыЗначение поля запроса вне допустимого
VALIDATION_FAILEDThe request did not pass validation. Please check the request parameters.все методыЗапрос не прошёл проверку до обращения к поставщику
VALIDATION_ERRORThe supplier rejected the request parameters.все методыПоставщик отверг параметры запроса по своим ограничениям

Аккаунт и оплата#

ЗначениеmessageМетод(ы)Когда возвращается
INSUFFICIENT_BALANCEThe account balance is insufficient for this booking. Please contact your account manager.create_bookingНа счёте недостаточно средств
OVERDUE_DEBTThe operation is blocked by an overdue debt. Please contact your account manager.все методыОперация заблокирована просроченной задолженностью
BOOKING_LIMIT_EXCEEDEDThe booking limit for the account has been exceeded. Please contact your account manager.create_bookingИсчерпан лимит бронирований либо предел времени завершения брони
PAYMENT_METHOD_NOT_ALLOWEDThe payment method is not allowed for this account. Please contact your account manager.create_bookingФорма оплаты не разрешена учётной записи
ORDER_PAYMENT_NOT_PERMITTEDPayment for this order is not permitted. Please contact your account manager.create_bookingНет прав на оплату конкретно этого заказа
ACCOUNT_NOT_CONFIGUREDThe account is not configured at the supplier. Please contact support.create_bookingУчётная запись у поставщика не настроена
CONTRACT_RESTRICTEDThe operation is not allowed by the contract. Please contact your account manager.create_bookingОперация не разрешена договором, в том числе трёхсторонним

Дубли#

ЗначениеmessageМетод(ы)Когда возвращается
DUPLICATE_ORDER_IDAn order with this identifier already exists. Please create the booking with a new order identifier.create_bookingИдентификатор заказа уже использован
DUPLICATE_BOOKINGAn identical booking already exists at the supplier. Please check the booking status.create_bookingТакая же бронь у поставщика уже создана

Не найдено#

ЗначениеmessageМетод(ы)Когда возвращается
HOTEL_NOT_FOUNDHotel not found for the provided identifier.search, hotel_pricing, offer_pricing, create_bookingОтель не найден у поставщика по переданному идентификатору
SUPPLIER_BOOKING_NOT_FOUNDBooking not found at the supplier for the provided identifier.create_booking, view_booking, search_bookings, cancel_bookingЗаказ или бронь не найдены у поставщика по переданному идентификатору (не путать с BOOKING_NOT_FOUND выше)

Неполный ответ поставщика#

Поставщик ответил успешно, но без поля, без которого операцию не продолжить.

ЗначениеmessageМетод(ы)Когда возвращается
MISSING_ORDER_IDThe supplier response does not contain the order identifier. Please contact support.create_booking, view_booking, cancel_bookingВ ответе нет идентификатора заказа
MISSING_ACCOMMODATIONThe supplier response does not contain accommodation data. Please contact support.view_booking, cancel_bookingВ ответе нет данных о размещении
MISSING_ARRIVAL_DATEThe supplier response does not contain the arrival date. Please contact support.view_booking, cancel_bookingВ ответе нет даты заезда
MISSING_DEPARTURE_DATEThe supplier response does not contain the departure date. Please contact support.view_booking, cancel_bookingВ ответе нет даты выезда
EMPTY_SEARCH_IDThe supplier response does not contain the search identifier. Please repeat the search.searchВ ответе нет идентификатора поиска
EMPTY_OFFER_DETAILSThe supplier response does not contain the offer details. Please repeat the search.hotel_pricing, offer_pricingВ ответе нет детализации предложения
EMPTY_BOOKING_ITEMSThe supplier response does not contain order items. Please contact support.create_bookingВ заказе нет ни одной позиции
EMPTY_ITEM_IDThe supplier response does not contain the order item identifier. Please contact support.create_booking, cancel_bookingВ позиции заказа нет идентификатора
EMPTY_BOOKING_STATUSThe supplier response does not contain the booking status. Please check the booking status later.create_bookingВ ответе нет статуса брони
NO_HOTEL_ITEMThe order at the supplier contains no hotel item. Please contact support.cancel_bookingВ заказе у поставщика нет отельной позиции
SUPPLIER_RESPONSE_INCOMPLETEThe supplier response is incomplete. Please contact support.все методыПоставщик сообщил о сбое обработки заказа, брони, номеров или отмены

Сбои и недоступность поставщика#

ЗначениеmessageМетод(ы)Когда возвращается
SUPPLIER_SEARCH_FAILEDThe supplier failed to perform the search. Please try again later.search, hotel_pricingПоставщик сообщил о внутреннем сбое именно поиска
SUPPLIER_INTERNAL_ERRORThe supplier returned an internal error. Please try again later.все методыПоставщик сообщил о своей внутренней ошибке
SUPPLIER_UNAVAILABLEThe supplier is temporarily unavailable. Please retry later.все методыПоставщик недоступен: соединение не установлено, сеть отказала, либо сам поставщик сообщил о временной недоступности
TIMEOUTThe supplier did not respond in time. Please try again later.все методыИстекло время ожидания ответа поставщика
SUPPLIER_RESPONSE_UNPARSEABLEThe supplier response could not be read. Please contact support.все методыОтвет поставщика не удалось разобрать
TOO_MANY_REQUESTSRequest rate limit exceeded. Please retry later.все методыПревышено ограничение частоты запросов к поставщику
PAYMENT_GATEWAY_ERRORThe payment provider is unavailable. Please try again later.create_bookingОтказ на стороне поставщика тарифа или платёжного шлюза
PAYMENT_HOLD_FAILEDThe payment hold was declined. Please use another payment method.create_bookingНе удалось заблокировать средства на карте
PAYMENT_CHARGE_FAILEDThe payment charge was declined. Please use another payment method.create_bookingНе удалось списать средства с карты
CONCURRENT_BOOKINGAnother booking for this property is already in progress. Please try again in a few minutes.create_bookingПо объекту прямо сейчас создаётся другое бронирование
SELF_BOOKINGThe property cannot be booked by its own owner.create_bookingОбъект бронирует его же владелец
SELLER_NOT_LEGAL_ENTITYThe property owner is not a legal entity and cannot be booked.create_bookingВладелец объекта не юридическое лицо
TEST_BUYER_PROD_ITEMA test account cannot book a production property.create_bookingТестовая учётная запись бронирует боевой объект
UNEXPECTED_FOR_SCENARIOThe supplier rejected the request as unexpected for this scenario. Please contact support.все методыПоставщик счёл запрос неожидаемым для сценария
SUPPLIER_ERRORSupplier request finished with error.все методыПоставщик сообщил об ошибке без более точного кода

Доступ и учётные данные#

Ошибки уровня интеграции сервиса с поставщиком, а не действия клиента — причина не раскрывается подробно.

ЗначениеmessageМетод(ы)Когда возвращается
AUTHENTICATION_FAILEDSupplier authentication failed. Please contact support.все методыПоставщик отклонил учётные данные сервиса
ACCESS_DENIEDAccess to the supplier is denied. Please contact support.все методыНет прав на метод либо на операцию по договору
API_ACCESS_DISABLEDAccess to the supplier is denied. Please contact support.все методыДоступ к интерфейсу поставщика выключен
SANDBOX_RESTRICTIONSupplier integration error. Please contact support.create_booking, cancel_bookingОперация недоступна в тестовой среде поставщика

Операция или значение не поддерживаются#

ЗначениеmessageМетод(ы)Когда возвращается
PROPERTY_CATEGORY_NOT_SUPPORTEDThis property category is not supported.hotel_pricingКатегория объекта интеграцией не поддерживается
PAYMENT_VERIFICATION_NOT_SUPPORTEDThe offer requires 3-D Secure verification, which is not supported. Please select another offer.create_bookingПоставщик требует проверку 3-D Secure, которой в интеграции нет
CURRENCY_NOT_SUPPORTEDThe requested currency is not supported by the supplier. Please select another currency.searchПоставщик не работает с переданной валютой
REGION_NOT_SEARCHABLESearch is not available for this region. Please select another region.searchРегион существует, но поиск по нему поставщик не поддерживает
NOT_SUPPORTEDThe requested operation is not supported for this property.все методыОперация не поддерживается для выбранного поставщика
> Некоторые редкие технические коды интеграции (адрес отклонён, метод вызван не тем HTTP-методом и т.п.) в этой таблице не перечислены — на практике клиент их не встречает, они означают внутренний сбой конфигурации сервиса. >