ОценитьМодификации

Обзор

Этот API позволяет вам определять способы динамического применения действий к тарифу при выполнении условий, таких как корректировка цены или включение возможности возврата. В отличие от API Promotions API , который может применять только соответствующие акции с максимальными скидками, этот API применяет любые действия при выполнении определенных условий, включая корректировки цен, которые в конечном итоге могут увеличить окончательную цену.

Запросы

Синтаксис

Сообщение RateModifications использует следующий синтаксис:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="partner_key"
                      id="message_ID"
                      timestamp="timestamp">
  <HotelRateModifications hotel_id="HotelID" action="[overlay]">
    <ItineraryRateModification id="ModificationID" action="[delete]">
      <BookingDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </BookingDates>
      <BookingWindow min="integer" max="integer"/>
      <CheckinDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </CheckinDates>
      <CheckoutDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </CheckoutDates>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <LengthOfStay min="integer" max="integer"/>
      <MinimumAmount before_discount="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <StayDates application="[all|any]">
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </StayDates>
      <UserCountries type="[include|exclude]">
        <Country code="country_code"/>
      </UserCountries>
      <ModificationActions>
        <PriceAdjustment multiplier="float"/>
        <RateRule id="RateRuleID"/>
        <Refundable available="[false|true]"
                       refundable_until_days="number_of_days"
                       refundable_until_time="time"/>
        <Availability status="[unavailable]"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

Элементы и атрибуты

Сообщение RateModifications имеет следующие элементы и атрибуты:

Элемент/@Атрибут События Тип Описание
RateModifications 1 Complex element Корневой элемент сообщения об изменении тарифа.
RateModifications / @partner 1 string Партнерский аккаунт для этого сообщения. Это строковое значение представляет собой значение «Партнерского ключа», указанное на странице настроек учетной записи в Hotel Center.

Примечание. Если у вас есть серверная часть, которая предоставляет каналы для нескольких учетных записей, это значение должно соответствовать значению атрибута ID , указанному в элементе <RequestorID> ваших сообщений <OTA_HotelRateAmountNotifRQ> и <OTA_HotelAvailNotifRQ> для одной и той же учетной записи.

RateModifications / @id 1 string Уникальный идентификатор этого сообщения запроса. Это значение возвращается в ответном сообщении. Допустимые символы: az, AZ, 0–9, _ (подчеркивание) и - (тире).
RateModifications / @timestamp 1 DateTime Дата и время создания этого сообщения.
RateModifications / HotelRateModifications 0..n HotelRateModifications

Изменение тарифов на недвижимость. Каждое изменение тарифа применяется к одному объекту размещения.

Примечание. Если к одной и той же ставке можно применить несколько модификаций, применяются все модификации. Никакой конкретный заказ не гарантирован.

RateModifications / HotelRateModifications / @hotel_id 1 string Уникальный идентификатор свойства. Это значение должно соответствовать идентификатору отеля, указанному с помощью <id> в элементе <listing> в фиде списка отелей. Идентификатор отеля также указан в Hotel Center .
RateModifications / HotelRateModifications / @action 0..1 enum

Если action не указано, то изменения внутри этого элемента добавляются или обновляются для этого отеля. Если указано action="overlay" , то сначала удаляются все ранее определенные модификации для этого отеля. Затем записываются указанные здесь модификации. Если используется action="overlay" и внутри этого элемента не указано никаких изменений, то все изменения для этого отеля удаляются.

RateModifications / HotelRateModifications / ItineraryRateModification 0..200 ItineraryRateModification

Единая модификация ставки для объекта недвижимости.

Примечание. Модификации скорости сложно отладить, поэтому мы рекомендуем использовать их с осторожностью. Свяжитесь со своим техническим менеджером по работе с клиентами (TAM), если вам необходимо внести более 200 изменений тарифов.

RateModifications / HotelRateModifications / ItineraryRateModification / @id 1 string Уникальный идентификатор модификации тарифа. Максимально допустимое количество символов — 40. Допустимые символы: az, AZ, 0–9, _ (подчеркивание), - (тире) и . (период).
RateModifications / HotelRateModifications / ItineraryRateModification / @action 0..1 enum

Если не указано и модификация тарифа с тем же id не сохранена, то эта модификация тарифа сохраняется. В противном случае, если не указано и сохраняется модификация тарифа с тем же id , существующая модификация тарифа обновляется.

Если указано, значение должно быть "delete" . Если указано "delete" , сохраненная модификация тарифа с тем же id будет удалена. При использовании "delete" не включайте дочерние элементы в <ItineraryRateModification> . Кроме того, "delete" не допускается в сочетании с <HotelRateModifications action="overlay"/> .

RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates 0..1 BookingDates Контейнер для одного или нескольких диапазонов дат, которые определяют, когда должно произойти бронирование, чтобы можно было применить изменение тарифа.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange 1..99 DateRange Для применения изменения тарифа должен быть указан диапазон дат, в котором указано, когда произойдет бронирование.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start 0..1 Date Дата начала (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна быть раньше или совпадать с датой end . Если start не указано, диапазон дат фактически не ограничен с точки зрения даты начала.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end 0..1 Date Конечная дата (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна совпадать с датой start или быть позже нее. Если end не указан, диапазон дат фактически не ограничен с точки зрения даты окончания.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @days_of_week 0..1 string

Дни недели, которые разрешены в диапазоне дат. Если не указано, в диапазоне дат разрешены все дни. Каждый символ в строке указывает день. Например, «MTWHF» указывает, что в диапазоне дат разрешены дни недели.

Допустимые символы:

  • M на понедельник
  • T во вторник
  • W для среды
  • H на четверг
  • F для пятницы
  • S для субботы
  • U на воскресенье

Любая комбинация символов допустима.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow 0..1 BookingWindow Указывает период времени, в течение которого должно происходить бронирование, относительно даты заезда (в зависимости от часового пояса объекта размещения). Например, период бронирования может быть установлен минимум на 7, но не более чем на 180 дней до заезда.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @min 0..1 integer Чтобы изменение тарифа вступило в силу, должно пройти минимальное количество дней до заезда при бронировании. Если это не указано, минимума не существует.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max 0..1 integer Чтобы изменение тарифа вступило в силу, должно произойти максимальное количество дней до регистрации заезда при бронировании. Если это не указано, максимума не существует.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates 0..1 CheckinDates Контейнер для одного или нескольких диапазонов дат, которые определяют, когда должна произойти регистрация заезда, чтобы изменение тарифа было применено.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange 1..99 DateRange Чтобы изменение тарифа вступило в силу, укажите диапазон дат, определяющий, когда должна произойти регистрация заезда. Этот элемент не является обязательным, если вы удаляете одно или несколько изменений тарифа.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @start 0..1 Date Дата начала (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна быть раньше или совпадать с датой end . Если start не указано, диапазон дат фактически не ограничен с точки зрения даты начала.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end 0..1 Date Конечная дата (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна совпадать с датой start или быть позже нее. Если end не указан, диапазон дат фактически не ограничен с точки зрения даты окончания.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @days_of_week 0..1 string

Дни недели, которые разрешены в диапазоне дат. Если не указано, в диапазоне дат разрешены все дни. Каждый символ в строке указывает день. Например, «MTWHF» указывает, что в диапазоне дат разрешены дни недели.

Допустимые символы:

  • M на понедельник
  • T во вторник
  • W для среды
  • H на четверг
  • F для пятницы
  • S для субботы
  • U на воскресенье

Любая комбинация символов допустима.

RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates 0..1 CheckoutDates Контейнер для одного или нескольких диапазонов дат, которые определяют, когда должно произойти выезд, чтобы изменение тарифа было применено.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange 1..99 DateRange Чтобы изменение тарифа вступило в силу, необходимо указать диапазон дат, определяющий время выезда. Этот элемент не является обязательным, если вы удаляете одно или несколько изменений тарифа.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @start 0..1 Date Дата начала (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна быть раньше или совпадать с датой end . Если start не указано, диапазон дат фактически не ограничен с точки зрения даты начала.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end 0..1 Date Конечная дата (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна совпадать с датой start или быть позже нее. Если end не указан, диапазон дат фактически не ограничен с точки зрения даты окончания.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @days_of_week 0..1 string

Дни недели, которые разрешены в диапазоне дат. Если не указано, в диапазоне дат разрешены все дни. Каждый символ в строке указывает день. Например, «MTWHF» указывает, что в диапазоне дат разрешены дни недели.

Допустимые символы:

  • M на понедельник
  • T во вторник
  • W для среды
  • H на четверг
  • F для пятницы
  • S для субботы
  • U на воскресенье

Любая комбинация символов допустима.

RateModifications / HotelRateModifications / ItineraryRateModification / Devices 0..1 Devices Контейнер для списка пользовательских устройств, на которые распространяется изменение тарифа. Если указано, то изменение скорости применяется только в том случае, если пользователь соответствует одному из перечисленных устройств. Если не указано, то это не ограничивает применение модификации тарифа.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device 1..3 Device Определяет один тип пользовательского устройства, для которого разрешено изменение тарифа.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device / @type 1 enum Тип устройства. Значение должно быть desktop , tablet или mobile .
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions 1 ModificationActions

Действия, которые применяются к ставке, если соблюдены все указанные условия.

RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment 0..1 PriceAdjustment Изменяет ставку, умножая AmountBeforeTax и AmountAfterTax на указанный множитель.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment / @multiplier 1 float И AmountBeforeTax , и AmountAfterTax умножаются на это значение.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule 0..1 RateRule Изменяет ставку, применяя к ней указанный идентификатор правила ставки.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule / @id 1 string Этот идентификатор соответствует ставке определению в файле определения правила ставки . Примечание:
  • Ограничение на количество символов в этом поле составляет 40 символов.
  • Каждый тариф может быть связан только с одним правилом тарифа.
  • Если существует несколько модификаций, применяющих идентификатор правила тарифа, тарифу присваивается идентификатор правила тарифа, который является наименьшим с лексикографической точки зрения.
  • Если этот идентификатор не соответствует правилу тарифа в файле определения правила тарифа, он считается неприемлемым.
В этой статье вы найдете информацию о различных вариантах пользовательского интерфейса для частных тарифов.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable 0..1 Refundable Перезаписывает возвращаемую ставку на указанное значение.

При настройке атрибутов обратите внимание на следующее:

  • Это действие модификации полностью перезаписывает настройку «Возвратная ставка», а не только заполненные поля.
  • Если available или refundable_until_days не установлен, тариф не отображается как подлежащий возврату.
  • Если available значение 0 или false , остальные атрибуты игнорируются. Ставка не отображается как возвращаемая, даже если установлен один или оба других атрибута.
  • Рекомендуется установить refundable_until_time ; если не установлено, используется самое раннее время (полночь).
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @available 1 boolean (Обязательно) Установите значение 1 или true , чтобы указать, допускает ли тариф полный возврат средств; в противном случае установите значение 0 или false .
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days 0..1 integer (Обязательно, если available true ) Указывает количество дней до прибытия, за которое можно запросить полный возврат средств. Значение refundable_until_days должно быть целым числом от 0 до 330 включительно.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @refundable_until_time 0..1 Time (Рекомендуется, если available true ) Указывает самое позднее время суток по местному времени отеля, в которое будет удовлетворен запрос на полный возврат средств. Его можно объединить с refundable_until_days чтобы указать, например, что «возврат средств возможен до 16:00 за два дня до заезда». refundable_until_time не установлено, значение по умолчанию равно полуночи.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability 0..1 Availability Перезаписывает доступность тарифа на указанное значение. Мы поддерживаем только установку unavailable тарифа.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability / @status 1 enum Если status="unavailable" , тариф считается недоступным, независимо от того, существует ли для него действительная цена.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay 0..1 LengthOfStay Определяет пределы продолжительности пребывания, в пределах которых может применяться данное изменение тарифа. Изменение тарифа не применяется, если продолжительность пребывания выходит за пределы минимального и максимального пределов.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min 0..1 integer Минимальное количество ночей, разрешенное для проживания, для применения изменения тарифа. Если это не указано, минимума не существует.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @max 0..1 integer Максимальное количество ночей, разрешенное при пребывании, для которого может быть применено изменение тарифа. Если это не указано, максимума не существует.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount 0..1 MinimumAmount Указывает минимальную сумму дневной стоимости номера (используя большее из значений AmountBeforeTax или AmountAfterTax ), которая должна быть превышена, чтобы было применено изменение тарифа.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount 1 integer Значение, которое должно быть превышено, чтобы модификация ставки была применена.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans 0..1 RatePlans Контейнер для списка тарифных планов, к которым применяется изменение тарифа. Если <RatePlans> не указан, изменение тарифа применяется ко всем тарифным планам.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan 1..n RatePlan Указывает тарифный план. Тарифный план определяется комбинацией пакета, тарифов и доступности, как определено в сообщениях Transaction (Data Property), OTA_HotelRateAmountNotifRQ и OTA_HotelAvailNotifRQ, а также как указано PackageID.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan / @id 1 string Уникальный идентификатор тарифного плана. Это значение сопоставляется со значением PackageID в <PackageData> в сообщении транзакции (данные свойства) и в атрибуте RatePlanCode в <StatusApplicationControl> в сообщениях <OTA_HotelRateAmountNotifRQ> и <OTA_HotelAvailNotifRQ> . Максимально допустимое количество символов — 50.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes 0..1 RoomTypes Контейнер для списка типов номеров, к которым применяется изменение тарифа. Изменение тарифа применяется к каждому указанному <RoomType> . Если <RoomTypes> не указан, изменение тарифа применяется ко всем номерам.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType 1..n RoomType Указывает тип номера. Тип номера определяется в элементе <RoomData> в сообщении транзакции (данные о свойстве) , и на него можно ссылаться с помощью его значения <RoomID> . (На его значение <RoomID> также ссылается атрибут InvTypeCode в сообщениях OTA_HotelRateAmountNotifRQ.)
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType / @id 1 string Уникальный идентификатор инвентаря (типа помещения). Это значение сопоставляется с <RoomID> в сообщении транзакции (данные о собственности). Максимально допустимое количество символов — 50.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates 0..1 StayDates Контейнер для одного или нескольких диапазонов дат, которые определяют, как применяется изменение тарифа, например, для учета сезонных цен.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / @application 1 enum

Описывает, как следует применять изменение ставки.

Допустимые значения:

  • all : изменение тарифа применяется к каждой ночи в маршруте, если все даты в маршруте совпадают с датами пребывания.
  • any : изменение тарифа применяется ко всем ночам в маршруте, если какая-либо дата в маршруте совпадает с датой в диапазоне дат пребывания.

Этот атрибут должен быть указан всегда.

RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange 1..99 DateRange Диапазон дат, определяющий даты, когда должно применяться изменение ставки.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start 0..1 Date Дата начала (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна быть раньше или совпадать с датой end . Если start не указано, диапазон дат фактически не ограничен с точки зрения даты начала.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end 0..1 Date Конечная дата (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна совпадать с датой start или быть позже нее. Если end не указан, диапазон дат фактически не ограничен с точки зрения даты окончания.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @days_of_week 0..1 string

Дни недели, которые разрешены в диапазоне дат. Если не указано, в диапазоне дат разрешены все дни. Каждый символ в строке указывает день. Например, «MTWHF» указывает, что в диапазоне дат разрешены дни недели.

Допустимые символы:

  • M на понедельник
  • T во вторник
  • W для среды
  • H на четверг
  • F для пятницы
  • S для субботы
  • U на воскресенье

Любая комбинация символов допустима.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries 0..1 UserCountries Если указано, изменение тарифа применяется только в том случае, если пользователь находится в одной из указанных стран. Если не указано, изменение тарифа применяется независимо от местоположения пользователя.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / @type 0..1 enum Тип спецификации UserCountries.

Допустимые значения: include и exclude .

Если type UserCountries установлен как include , изменение тарифа применяется к пользователям из перечисленных стран.

Если type UserCountries является exclude , изменение тарифа применяется к пользователям за пределами перечисленных стран.

Если type UserCountries не установлен, он рассматривается как include , и изменение тарифа применяется к пользователям из перечисленных стран.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country 1..300 Country Указывает разрешенную страну пользователя для изменения тарифа.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country / @code 1 string Код страны CLDR , например DE или FR . Обратите внимание, что для некоторых стран код страны CLDR не совпадает с двухбуквенным кодом страны ISO. Кроме того, коды регионов CLDR не поддерживаются.

Примеры

Основное сообщение

В следующем примере показано базовое сообщение « RateModifications »:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-07-01" end="2023-07-31" days_of_week="MTWHF"/>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <BookingWindow min="7" max="330"/>
      <CheckinDates>
         <DateRange start="2023-10-01" end="2023-10-31" days_of_week="FSU"/>
      </CheckinDates>
      <CheckoutDates>
         <DateRange start="2023-10-08" end="2023-11-07" days_of_week="FSU"/>
      </CheckoutDates>
      <Devices>
        <Device type="mobile"/>
        <Device type="tablet"/>
      </Devices>
      <LengthOfStay min="2" max="14"/>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <UserCountries>
        <Country code="US"/>
        <Country code="GB"/>
      </UserCountries>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Удалить одно изменение тарифа

В следующем примере показано, как удалить одно изменение тарифа для свойства:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1" action="delete"/>
  </HotelRateModifications>
</RateModifications>

Удалить все изменения тарифов

В следующем примере показано, как удалить все изменения тарифов для объекта:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
</RateModifications>


Наложение всех изменений ставок

В следующем примере показано, как наложить <HotelRateModifications> для объекта с одной или несколькими новыми модификациями тарифов. Если action="overlay" , все сохраненные изменения скорости удаляются до сохранения изменений скорости, указанных в текущем сообщении:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

Несколько действий по модификации

В следующем примере показано, как одновременно выполнить несколько действий по изменению:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-01-01" end="2023-02-28"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier=".95"/>
        <Refundable available="true"
                    refundable_until_days="1"
                    refundable_until_time="12:00:00"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Отключить тарифный план для стран пользователя

В следующем примере показано, как ограничить тарифный план только японскими ( JP ) пользователями:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <RatePlans>
         <RatePlan id="jp_only"/>
      </RatePlans>
      <UserCountries type="exclude">
        <Country code="JP"/>
      </UserCountries>
      <ModificationActions>
        <Availability status="unavailable"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Ответы

Синтаксис

Сообщение RateModificationsResponse использует следующий синтаксис:

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_key">
  <!-- Either Success or Issues will be populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code" status="issue_type"><var>issue_description</var></Issue>
  </Issues>
</RateModificationsResponse>

Элементы и атрибуты

Сообщение RateModificationsResponse имеет следующие элементы и атрибуты:

Элемент/@Атрибут События Тип Описание
RateModifications 1 Complex element Корневой элемент, указывающий успешность или проблемы полученного сообщения запроса RateModifications.
RateModificationsResponse / @timestamp 1 DateTime Дата и время создания этого сообщения.
RateModificationsResponse / @id 1 string Уникальный идентификатор из связанного сообщения RateModifications.
RateModificationsResponse / @partner 1 string Партнерский аккаунт для этого сообщения.
RateModificationsResponse / Success 0..1 Success Указывает, что сообщение RateModifications было успешно обработано без предупреждений, ошибок или сбоев.

В каждом сообщении присутствует либо <Success> , либо <Issues> .

RateModificationsResponse / Issues 0..1 Issues Контейнер для одной или нескольких проблем, возникших при обработке сообщения RateModifications.

В каждом сообщении присутствует либо <Success> , либо <Issues> .

RateModificationsResponse / Issues / Issue 1..n Issue Описание предупреждения, ошибки или сбоя, возникшего при обработке сообщения RateModifications. Подробную информацию об этих проблемах можно найти в разделе «Сообщения об ошибках статуса фида» .
RateModificationsResponse / Issues / Issue / @code 1 integer Идентификатор проблемы.
RateModificationsResponse / Issues / Issue / @status 1 enum

Тип возникшей проблемы.

Допустимые значения: warning , error и failure .

Примеры

Успех

Ниже приведен ответ на успешно обработанное сообщение RateModifications.

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</RateModificationsResponse>

Проблемы

Ниже приведен ответ на сообщение RateModifications, которое не было обработано из-за ошибок.

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</RateModificationsResponse>