Обзор
Этот API позволяет указать возможные скидки. Из указанных промоакций Google применяет подходящую промоакцию или набор промоакций, которые приводят к самой низкой цене. Если вы ищете API, который поддерживает произвольную корректировку ставок, которая может увеличивать или уменьшать цену при выполнении условий, рассмотрите наш API модификации ставок . Обратите внимание: если присутствуют оба API, изменения тарифов применяются перед рекламными акциями.
Запросы
Синтаксис
В сообщении Promotions
используется следующий синтаксис:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key"
id="message_ID"
timestamp="timestamp">
<HotelPromotions hotel_id="HotelID" action="[overlay]">
<Promotion id="PromotionID" action="[delete]">
<BookingDates>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
</BookingDates>
<BookingWindow min="integer_or_duration" max="integer_or_duration"/>
<Ceiling amount_per_night="float"/>
<Floor amount_per_night="float"/>
<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>
<!-- Specify only one of percentage, fixed_amount, fixed_amount_per_night,
fixed_price, or fixed_price_per_night; applied_nights is only used
with percentage, fixed_amount_per_night, and fixed_price_per_night. -->
<Discount percentage="float" fixed_amount="float" fixed_amount_per_night="float"
fixed_price="float" fixed_price_per_night="float"
applied_nights="integer_1_to_99" rank="integer_1_to_99">
<!-- FreeNights may not be used in conjunction with attributes on Discount -->
<FreeNights stay_nights="integer" discount_nights="integer"
discount_percentage="float" night_selection="[cheapest|last]"
repeats="boolean"/>
</Discount>
<!-- Exactly one of Discount or BestDailyDiscount must be specified.
Specify only one of percentage, fixed_amount, or fixed_price. -->
<BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
<Devices>
<Device type="[desktop|tablet|mobile]"/>
</Devices>
<InventoryCount min="integer" max="integer"/>
<LengthOfStay min="integer" max="integer"/>
<MembershipRateRule id="RateRuleID"/>
<MinimumAmount before_discount="integer"/>
<Occupancy min="integer" max="integer"/>
<RatePlans>
<RatePlan id="PackageID_1"/>
<RatePlan id="PackageID_2"/>
</RatePlans>
<RoomTypes>
<RoomType id="RoomID_1"/>
<RoomType id="RoomID_2"/>
</RoomTypes>
<Stacking type="[any|base|none|second]"/>
<StayDates application="[all|any|overlap]">
<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>
</Promotion>
</HotelPromotions>
</Promotions>
Элементы и атрибуты
Сообщение о рекламных акциях имеет следующие элементы и атрибуты:
Элемент/@Атрибут | События | Тип | Описание |
---|---|---|---|
Promotions | 1 | Complex element | Корневой элемент рекламного сообщения. |
Promotions / @partner | 1 | string | Партнерский аккаунт для этого сообщения. Это строковое значение представляет собой значение «Партнерского ключа», указанное на странице настроек учетной записи в Hotel Center. Если у вас есть серверная часть, которая предоставляет каналы для нескольких учетных записей, это значение должно соответствовать значению атрибута |
Promotions / @id | 1 | string | Уникальный идентификатор этого сообщения запроса. Это значение возвращается в ответном сообщении. Допустимые символы: az, AZ, 0–9, _ (подчеркивание) и - (тире). |
Promotions / @timestamp | 1 | DateTime | Дата и время создания этого сообщения. |
Promotions / HotelPromotions | 0..n | HotelPromotions | Акции на недвижимость. Каждая акция распространяется на один объект недвижимости. Если не используется |
Promotions / HotelPromotions / @hotel_id | 1 | string | Уникальный идентификатор свойства. Это значение должно соответствовать идентификатору отеля, указанному с помощью <id> в элементе <listing> в фиде списка отелей. Идентификатор отеля также указан в Hotel Center . |
Promotions / HotelPromotions / @action | 0..1 | enum | Если указано, значение должно быть Если не указано, то каждая рекламная акция, указанная в текущем сообщении, является либо:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Единая акция на объект. Обратите внимание: если Если вам нужно использовать более 99 рекламных акций, обратитесь к своему техническому менеджеру по работе с клиентами (TAM). |
Promotions / HotelPromotions / Promotion / @id | 1 | string | Уникальный идентификатор акции. Максимально допустимое количество символов — 40. Допустимые символы: az, AZ, 0–9, _ (подчеркивание), - (тире) и . (период). |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | Если указано, значение должно быть Если указано |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | Контейнер для одного или нескольких диапазонов, определяющих, когда должно произойти бронирование, чтобы акция могла быть применена. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | Для применения промоакции должен быть указан диапазон, определяющий время бронирования. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date или DateTime | Начальная дата или дата и время (в зависимости от часового пояса свойства) диапазона включительно.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date или DateTime | Конечная дата или дата-время (в зависимости от часового пояса свойства) диапазона включительно.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | Дни недели, которые разрешены в диапазоне дат. Если не указано, в диапазоне дат разрешены все дни. Каждый символ в строке указывает день. Например, «MTWHF» указывает, что в диапазоне дат разрешены дни недели. Допустимые символы:
Любая комбинация символов допустима. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Указывает период времени, в течение которого должно происходить бронирование, относительно даты заезда (в зависимости от часового пояса объекта размещения). Например, период бронирования может быть установлен минимум на 7, но не более чем на 180 дней до заезда. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | Чтобы акция могла быть применена, должна пройти минимальная продолжительность до регистрации заезда при бронировании. Если это не указано или его значение равно 0 , минимума нет.Допустимые типы значений:
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | Для применения акции необходимо максимальное количество дней до заезда при бронировании. Если это значение не указано или его значение равно 0 , максимума нет.Допустимые типы значений:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling | Определяет ограничения на максимальное значение, которое может быть установлено для ставки после применения рекламных акций. В рекламных акциях всегда должен быть указан Если настроено группирование, то к одному пребыванию можно применить несколько рекламных акций с Пример: Цена за 1 ночь проживания, при которой
Вот порядок расчета:
Тот факт, что 60 — это более строгий общий потолок, не имеет значения, поскольку он действителен только для своего собственного продвижения, и не может быть единого потолка, охватывающего весь стек промоакций. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float | Максимальная сумма, которую можно установить за ночь после применения скидки. Если также указан элемент |
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor | Определяет ограничения на минимальное значение, которое может быть установлено для ставки после применения рекламных акций. В рекламных акциях всегда должен быть указан Логика Если настроено группирование, то к одному пребыванию можно применить несколько рекламных акций с Пример: Цена за 1 ночь проживания, при которой
Вот порядок расчета:
Тот факт, что 90 является более строгим общим уровнем, не имеет значения, поскольку он действителен только для своего собственного повышения, и не может быть единого этажа, охватывающего весь стек повышений. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float | Минимальная сумма, которую можно установить за ночь после применения скидки. Если также указан элемент |
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | Контейнер для одного или нескольких диапазонов дат, которые определяют, когда должна произойти регистрация, чтобы акция могла быть применена. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | Чтобы акция могла быть применена, укажите диапазон дат, определяющий, когда должна произойти регистрация заезда. Этот элемент не является обязательным, если вы удаляете одну или несколько рекламных акций. Также поддерживается формат YearlessDate .
|
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | Дата начала (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна быть раньше или совпадать с датой end . Если start не указано, диапазон дат фактически не ограничен с точки зрения даты начала. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | Конечная дата (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна совпадать с датой start или быть позже нее. Если end не указан, диапазон дат фактически не ограничен с точки зрения даты окончания. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | Дни недели, которые разрешены в диапазоне дат. Если не указано, в диапазоне дат разрешены все дни. Каждый символ в строке указывает день. Например, «MTWHF» указывает, что в диапазоне дат разрешены дни недели. Допустимые символы:
Любая комбинация символов допустима. |
Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | Контейнер для одного или нескольких диапазонов дат, которые определяют, когда должно произойти оформление заказа, чтобы акция могла быть применена. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | Чтобы акция могла быть применена, укажите диапазон дат, определяющий, когда должен произойти выезд. Этот элемент не является обязательным, если вы удаляете одну или несколько рекламных акций. Также поддерживается формат YearlessDate .
|
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | Дата начала (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна быть раньше или совпадать с датой end . Если start не указано, диапазон дат фактически не ограничен с точки зрения даты начала. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | Конечная дата (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна совпадать с датой start или быть позже нее. Если end не указан, диапазон дат фактически не ограничен с точки зрения даты окончания. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | Дни недели, которые разрешены в диапазоне дат. Если не указано, в диапазоне дат разрешены все дни. Каждый символ в строке указывает день. Например, «MTWHF» указывает, что в диапазоне дат разрешены дни недели. Допустимые символы:
Любая комбинация символов допустима. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | Контейнер для списка пользовательских устройств, подпадающих под действие акции. Если указано, скидка предоставляется только соответствующим критериям пользователям на перечисленных устройствах. Если не указано иное, соответствующим критериям пользователям на любом устройстве предоставляется скидка. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Определяет один тип пользовательского устройства, подходящего для акции. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | Тип устройства. Значение должно быть desktop , tablet или mobile . |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | Необходимо указать ровно одно из Указывает скидку, которая будет применяться к этой рекламной акции. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Требуется ровно одно из следующих значений: Десятичное значение от 0 до 100, указывающее процентную скидку. Он применяется к Примеры:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Требуется ровно одно из следующих значений: Фиксированная сумма, которая вычитается из суммы ночных ставок Примеры:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Требуется ровно одно из следующих значений: Фиксированная скидка, применяемая к каждой ночной ставке Примеры:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Требуется ровно одно из следующих значений: Если указаны ночные тарифы Если Примеры:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Требуется ровно одно из следующих значений: Если указаны ночные тарифы Если Если указано Примеры:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Это следует использовать только с Количество ночей, на которые распространяется скидка, начиная с самых дешевых. Должно быть целое число от 1 до 99. Если не указано, скидка распространяется на все ночи. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Определяет скидку на определенные ночи проживания при соблюдении минимальной продолжительности пребывания. Атрибуты родительского элемента Discount не допускаются, если этот элемент используется. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Количество необходимых ночей для применения скидки. Каждая скидка распространяется на отдельный сегмент ночей проживания. Например, для пребывания на 10 ночей, где |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | Количество ночей со скидкой в каждом сегменте ночей проживания. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | Скидка, которая применяется к дисконтным ночам. Если это значение равно 50 , то на каждую выбранную ночь действует скидка 50%. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Должно быть либо cheapest , либо last . Если last , то ночи в конце отрезка ночей проживания предоставляются со скидкой. Если cheapest , то самые дешевые ночи в сегменте ночей предоставляются со скидкой. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Может ли скидка применяться к нескольким сегментам проживания на сутки. Если Например, если |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Присваивает этой акции рейтинг и включает ее в рейтинговый выбор, при котором для применения выбирается только акция с самым низким рейтингом. Значения должны быть в диапазоне от 1 до 99 включительно. Если несколько рекламных акций имеют один и тот же ранг, то одна из них выбирается и применяется произвольно. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Необходимо указать ровно одно из Определяет ежедневную скидку, которая может быть применена к одной ночи проживания. Это отличие от У каждого объекта может быть одна группа акций, которые считаются «лучшими за день». Это означает, что для каждой ночи проживания выбирается и может быть применена одна «лучшая дневная» акция, которая соответствует критериям и дает наибольшую скидку за эту ночь. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | Требуется ровно один из Десятичное значение от 0 до 100, указывающее процентную скидку. Он применяется к Примеры:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Требуется ровно один из Фиксированная сумма, которая будет вычтена из одной ночной ставки Примеры:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | Требуется ровно один из Если указаны ночные тарифы Примеры:
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Определяет ограничения на количество номеров, которые должны быть доступны для применения данной акции. Скидка применяется только к ночам, соответствующим ограничениям. Не разрешено со скидкой fixed_amount . Обратите внимание, что количество доступных номеров указывается либо с помощью OTA_HotelInvCountNotifRQ ( InvCount ), либо OTA_HotelAvailNotifRQ ( BookingLimit ). |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | Минимальное количество номеров, которое должно быть доступно для участия в акции, будет применяться к суточной ставке. Если это не указано, минимума не существует. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | Максимальное количество номеров, которые должны быть доступны для участия в акции, будет применяться к суточному тарифу. Если это не указано, максимума не существует. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Определяет ограничения на продолжительность пребывания, в пределах которых может применяться данная акция. Акция не применяется, если продолжительность пребывания выходит за пределы минимального и максимального пределов. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | Минимальное количество ночей, разрешенное для участия в акции. Если это не указано, минимума не существует. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | Максимальное количество ночей, разрешенное для участия в акции. Если это не указано, максимума не существует. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule | Контейнер для правила ставки членства, которое запускает специальную обработку пользовательского интерфейса для соответствующей скидки. Этот элемент не следует указывать, если также не указан |
Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string | Идентификатор правила тарифа , связанного с программой членства. |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | Указывает минимальную сумму дневной стоимости номера (используя большее из значений AmountBeforeTax или AmountAfterTax ), которая должна быть превышена, чтобы акция могла быть применена. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | Значение, которое необходимо превысить, чтобы применить промоакцию. |
Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Определяет ограничения на помещения, к которым применяется данная акция. Акция не применяется, если заполняемость превышает минимальный и максимальный пределы. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | Чтобы можно было применить скидку, указанная пользователем вместимость должна быть не менее этого значения. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | Чтобы можно было применить скидку, указанная пользователем вместимость должна быть не более этого значения. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Контейнер для списка тарифных планов, на которые распространяется акция. Если <RatePlans> не указан, акция распространяется на все тарифные планы. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | Указывает тарифный план. Тарифный план определяется комбинацией пакета, тарифов и доступности, как определено в сообщениях Transaction (Data Property), OTA_HotelRateAmountNotifRQ и OTA_HotelAvailNotifRQ, а также как указано PackageID. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | Уникальный идентификатор тарифного плана. Это значение сопоставляется со значением PackageID в <PackageData> в сообщении транзакции (данные свойства) и в атрибуте RatePlanCode в <StatusApplicationControl> в сообщениях <OTA_HotelRateAmountNotifRQ> и <OTA_HotelAvailNotifRQ> . Максимально допустимое количество символов — 50. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | Контейнер для списка типов номеров, на которые распространяется акция. Акция применяется к каждому указанному <RoomType> . Если <RoomTypes> не указан, акция распространяется на все номера. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | Указывает тип номера. Тип номера определяется в элементе <RoomData> в сообщении транзакции (данные о свойстве) , и на него можно ссылаться с помощью его значения <RoomID> . (На его значение <RoomID> также ссылается атрибут InvTypeCode в сообщениях OTA_HotelRateAmountNotifRQ.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | Уникальный идентификатор инвентаря (типа помещения). Это значение сопоставляется с <RoomID> в сообщении транзакции (данные о собственности). Максимально допустимое количество символов — 50. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | Указывает, как можно комбинировать рекламные акции. Если не указано, предполагается, что «тип» имеет значение base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | В зависимости от этого параметра к одному тарифу можно применить несколько промоакций:
Из разрешенных комбинаций к ставке применяется тот набор акций, который дает наибольшую скидку. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | Контейнер для одного или нескольких диапазонов дат, определяющих порядок применения промоакции, например для учета сезонных скидок. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Описывает, как следует применять поощрение. Допустимые значения:
Этот атрибут должен быть указан всегда.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | Диапазон дат, определяющий даты, когда будет применяться акция. Также поддерживается формат YearlessDate .
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | Дата начала (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна быть раньше или совпадать с датой end . Если start не указано, диапазон дат фактически не ограничен с точки зрения даты начала. |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | Конечная дата (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна совпадать с датой start или быть позже нее. Если end не указан, диапазон дат фактически не ограничен с точки зрения даты окончания. |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | Дни недели, которые разрешены в диапазоне дат. Если не указано, в диапазоне дат разрешены все дни. Каждый символ в строке указывает день. Например, «MTWHF» указывает, что в диапазоне дат разрешены дни недели. Допустимые символы:
Любая комбинация символов допустима. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Контейнер для перечисления пользовательских местоположений (стран), подпадающих под действие акции. Если указано, скидка предоставляется только соответствующим критериям пользователям в перечисленных странах. Если не указано иное, соответствующим критериям пользователям в любой стране предлагается скидка. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | Тип спецификации UserCountries. Допустимые значения: Если Если Если |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Определяет одну страну, в которой пользователи имеют право на участие в акции. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | Код страны CLDR , например DE или FR . Обратите внимание, что для некоторых стран код страны CLDR не совпадает с двухбуквенным кодом страны ISO. Кроме того, коды регионов CLDR не поддерживаются. |
Примеры
Для одного объекта ограничено 500 рекламных акций. Чтобы удалить рекламные акции из ресурса, ознакомьтесь с примером «Удалить одну рекламную акцию».
Основное сообщение
В следующем примере показано базовое сообщение Promotions
:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<BookingWindow min="7" max="330"/>
<CheckinDates>
<DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/>
</CheckoutDates>
<Devices>
<Device type="mobile"/>
<Device type="tablet"/>
</Devices>
<Discount percentage="20" applied_nights="2"/>
<LengthOfStay min="2" max="14"/>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<Stacking type="base"/>
<UserCountries>
<Country code="US"/>
<Country code="GB"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
Состояние инвентаря
В следующем примере показано, как создать скидку, если ближе к дате прибытия имеется излишек запасов:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow max="7"/>
<Discount percentage="10"/>
<InventoryCount min="3"/>
</Promotion>
</HotelPromotions>
</Promotions>
Удалить одну акцию
В следующем примере показано, как удалить одну рекламную акцию для ресурса:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1" action="delete"/>
</HotelPromotions>
</Promotions>
Удалить все акции
В следующем примере показано, как удалить все рекламные акции для ресурса:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay"/>
</Promotions>
Накладывайте все рекламные акции
В следующем примере показано, как наложить <HotelPromotions>
для недвижимости с одним или несколькими новыми акциями. Когда action="overlay"
, все сохраненные рекламные акции удаляются до хранения акций, указанных в текущем сообщении:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<Discount percentage="10"/>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<Stacking type="base"/>
</Promotion>
</HotelPromotions>
</Promotions>
3 различных типа укладки
В следующем примере показан случай, когда будут применяться три разных акции ( base
, second
, any
). Обратите внимание, что повышение по none
не будет применено, поскольку другие акции обеспечивают лучшую скидку. Если бы первоначальная цена составляла 100 долларов, дисконтированная цена составила бы 72,90 долл. США.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="second"/>
</Promotion>
<Promotion id="3">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="4">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
Нет типа укладки
В следующем примере показан случай, когда используется none
акция, потому что комбинация других рекламных акций обеспечивает меньшую скидку. Если бы первоначальная цена была 100 долларов, дисконтированная цена составила бы 75 долларов.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="3">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
Броничные границы окна
В следующем примере показан случай, когда элемент BookingWindow
используется с его начальными и конечными границами, определенными как тип продолжительности ISO 8601. Это ограничение в окне бронирования требует бронирования в 18:00 за день до прибытия, а также в 12:00 в 2:00 2 -го дня до прибытия.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow min="P1DT6H" max="P2DT12H"/>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Даты бронирования DateTime Bounds
В следующем примере показан случай, когда элемент BookingDates
используется с атрибутами start
и end
в качестве типов DateTime . Это ограничение даты бронирования требует, чтобы бронирование произошло между 06:30 на 2020-07-01 и 18:45 с 2020-07-02.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01T06:30:00" end="2020-07-02T18:45:00"/>
</BookingDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Без годовые даты
В следующем примере показан случай, когда элемент CheckInDates
содержит DateRanges
, которые имеют поля start
и end
без лет. В этом примере продвижение применяется к датам регистрации от 12/29 до 1/2, независимо от года. Бесзодранные даты, которые пересекают новую границу, являются недействительными, поэтому датчика выражена как два смежных диапазона даты.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<CheckInDates>
<DateRange start="12-29" end="12-31"/>
<DateRange start="01-01" end="01-02"/>
</CheckInDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Скидка Freenights
Следующий пример скидки на две ночи 50% за каждые четыре ночи оставалось на указанный ассортимент дат бронирования. В течение десяти ночных маршрутов в общей сложности четыре ночи будут сброшены на 50%.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2022-01-01" end="2022-05-31"/>
</BookingDates>
<Discount>
<FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
Следующий пример скидки на одну ночь 50% за каждые три ночи оставались для указанных диапазонов дат пребывания. Только перекрывающиеся ночи пребывания учитываются на квалификацию на скидку. Для следующего маршрута с регистрацией в 2022-01-01 и выходе из 2022-01-07 квалифицированные ночи пребывания и скидки применяются следующим образом.
- 2022-01-01 (пребывание)
- 2022-01-02 (пребывание)
- 2022-01-03
- 2022-01-04 (дисконтировано)
- 2022-01-05 (пребывание)
- 2022-01-06 (пребывание)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<StayDates application="overlap">
<DateRange start="2022-01-01" end="2022-01-02"/>
<DateRange start="2022-01-04" end="2022-01-06"/>
</StayDates>
<Discount>
<FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
Ранжированный выбор
В следующем примере предлагается две скидки: один для 20% скидки, а другой - 15% скидки. Во время оценки применяется только 15% скидка, потому что она имеет более низкий рейтинг.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="15" rank="25"/>
</Promotion>
<Promotion id="2">
<Discount percentage="20" rank="50"/>
</Promotion>
</HotelPromotions>
</Promotions>
BestDailyDiscount
В следующем примере скидки на двух ночи пребывания, применив BestDailyDiscount
сложенные со Discount
.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="HotelID" action="overlay">
<Promotion id="general">
<BestDailyDiscount fixed_amount="20"/>
</Promotion>
<Promotion id="may">
<BestDailyDiscount fixed_amount="50"/>
<StayDates application="overlap">
<DateRange start="2023-05-01" end="2023-05-31"/>
</StayDates>
</Promotion>
<Promotion id="fiesta">
<Discount fixed_amount_per_night="5"/>
<Stacking type="any"/>
</Promotion>
</HotelPromotions>
</Promotions>
Рассмотрим два ночного пребывания с 30 апреля 2023 года по 2 мая 2023 года для расчета, комбинацию лучших ежедневных скидок, которые дают самую глубокую скидку в первую очередь.
В первую ночь «общая» продвижение - единственная подходящая сумма с фиксированной скидкой в 20.
Во второй ночи акция «Мэй» предлагает более глубокую скидку, чем «общая» скидка. Таким образом, когда выбрано «может», фиксированная сумма скидки составляет 50.
Затем для пребывания скидки на продвижение «Fiesta» до 5 за ночь или 10. Он может быть сложен с комбинацией лучших ежедневных скидок, потому что «Fiesta» имеет тип укладки, установленную для any
. Если он был установлен на base
, то применяется только комбинация лучших ежедневных скидок или скидки «fiesta». См. Описание Stacking
для получения дополнительной информации.
`В целом, цена пребывания получает 20 + 50 + 10 = 80 скидка с фиксированной суммой.
Ответы
Синтаксис
В сообщении PromotionsResponse
используется следующий синтаксис:
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues are populated. -->
<Success/>
<Issues>
<Issue code="issue_code"
status="issue_type">
issue_description
</Issue>
</Issues>
</PromotionsResponse>
Элементы и атрибуты
Сообщение PromotionsResponse
имеет следующие элементы и атрибуты:
Element / @attribute | Случаи | Тип | Описание |
---|---|---|---|
PromotionsResponse | 1 | Complex element | Корневой элемент, указывающий на успех или проблемы для сообщения запроса на повышение по службе. |
PromotionsResponse / @timestamp | 1 | DateTime | Дата создания и время этого сообщения. |
PromotionsResponse / @id | 1 | string | Уникальный идентификатор из ассоциированного сообщения о рекламе. |
PromotionsResponse / @partner | 1 | string | Учетная запись партнера для этого сообщения. |
PromotionsResponse / Success | 0..1 | Success | Указывает, что сообщение о рекламе было успешно обработано без предупреждений, ошибок или сбоев. Либо |
PromotionsResponse / Issues | 0..1 | Issues | Контейнер для одного или нескольких вопросов, возникающих при обработке сообщения о рекламе. Либо |
PromotionsResponse / Issues / Issue | 1..n | Issue | Описание предупреждения, ошибки или сбоя встречается при обработке сообщения о рекламе. Подробности по этим вопросам можно найти в сообщениях об ошибках состояния подачи . |
PromotionsResponse / Issues / Issue / @code | 1 | integer | Идентификатор для проблемы. |
PromotionsResponse / Issues / Issue / @status | 1 | enum | Тип проблемы столкнулся. Допустимые значения - это |
Примеры
Успех
Ниже приведен ответ на успешно обработанное сообщение по акциям.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
Проблемы
Ниже приведен ответ на сообщение о промоушении, не обработанное из -за ошибок.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</PromotionsResponse>