RateModifications

Обзор

Этот 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 Уникальный идентификатор этого сообщения запроса. Это значение возвращается в ответном сообщении. Допустимые символы: a–z, A–Z, 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

Изменение цены для одного объекта.

Примечание. Отладка модификаций тарифов может быть сложной, поэтому мы рекомендуем использовать их с осторожностью. Если вам нужно больше, обратитесь к техническому менеджеру аккаунта.

RateModifications / HotelRateModifications / ItineraryRateModification / @id 1 string Уникальный идентификатор изменения тарифа. Максимальное количество символов – 40. Допустимые символы: a–z, A–Z, 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 Этот идентификатор сопоставляет тариф с определением в файле Rate Rule Definition. Примечание.
  • Ограничение на количество символов в этом поле – 40.
  • Каждый тариф может быть связан только с одним правилом.
  • Если к цене применяется несколько модификаций, ей назначается идентификатор правила, который является наименьшим в лексикографическом порядке.
  • Если этот идентификатор не соответствует правилу в файле определения правил тарифов, он считается недопустимым.
Подробнее о вариантах интерфейса для частных тарифов…
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable 0..1 Refundable Перезаписывает возможность возврата средств за тариф указанным значением.

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

  • Это действие полностью перезаписывает настройку 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 (Property Data), 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> сообщения Transaction (Property Data) и указывается с помощью значения <RoomID>. (На значение <RoomID> также ссылается атрибут InvTypeCode в сообщениях OTA_HotelRateAmountNotifRQ.)
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType / @id 1 string Уникальный идентификатор инвентаря (типа номера). Это значение сопоставляется с элементом <RoomID> в сообщении Transaction (Property Data). Максимальное количество символов: 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.

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

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

Если значение UserCountries type не задано, оно считается равным 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>