Visão geral
Essa API permite especificar possíveis descontos. Das promoções especificadas, o Google aplica a promoção ou o conjunto de promoções qualificado que leva ao preço mais baixo. Se você está procurando uma API que ofereça suporte a ajustes de preço arbitrários que podem aumentar ou diminuir o preço quando as condições são satisfeitas, considere nossa API Rate Modifications. Se as duas APIs estiverem presentes, as modificações de taxa serão aplicadas antes das promoções.
Solicitações
Sintaxe
A mensagem Promotions
usa a seguinte sintaxe:
<?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, percentage_of_base, 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 " percentage_of_base="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>
Elementos e atributos
A mensagem de promoções tem os seguintes elementos e atributos:
Elemento / @Attribute | Ocorrências | Tipo | Descrição |
---|---|---|---|
Promotions | 1 | Complex element | O elemento raiz de uma mensagem de promoções. |
Promotions / @partner | 1 | string | A conta do parceiro para esta mensagem. Esse valor de string é o valor da "chave do parceiro" listado na
página "Configurações da conta" da Central para Hotéis.
Se você tiver um back-end que fornece feeds para várias contas, esse valor precisa corresponder ao valor do atributo |
Promotions / @id | 1 | string | Um identificador exclusivo para essa mensagem de solicitação. Esse valor é retornado na mensagem de resposta. Os caracteres permitidos são a-z, A-Z, 0-9, _ (sublinhado) e - (traço). |
Promotions / @timestamp | 1 | DateTime | A data e a hora de criação da mensagem. |
Promotions / HotelPromotions | 0..n | HotelPromotions | Promoções de uma propriedade. Cada promoção se aplica a uma única propriedade. A menos que |
Promotions / HotelPromotions / @hotel_id | 1 | string | O identificador exclusivo da propriedade. Esse valor precisa corresponder ao ID do hotel especificado usando
<id> no elemento <listing>
no feed de lista de hotéis. O ID do hotel também está listado na Central para Hotéis. |
Promotions / HotelPromotions / @action | 0..1 | enum | Se especificado, o valor precisa ser
Se não for especificado, cada promoção especificada na mensagem atual será:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Uma única promoção para uma propriedade. Se
Se você precisar usar mais de 99 promoções, entre em contato com seu gerente técnico de contas (TAM). |
Promotions / HotelPromotions / Promotion / @id | 1 | string | Um identificador exclusivo da promoção. O número máximo de caracteres permitidos é 40. Os caracteres permitidos são a-z, A-Z, 0-9, _ (sublinhado), - (traço) e . (ponto final). |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | Se especificado, o valor precisa ser Se |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | Um contêiner para um ou mais intervalos que definem quando a reserva precisa ocorrer para que a promoção seja aplicada. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | Um intervalo que especifica quando a reserva precisa ocorrer para que a promoção seja aplicada. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date ou DateTime | A data ou a data e hora de início (com base no fuso horário da propriedade) do período.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date ou DateTime | A data ou a data e hora final (com base no fuso horário da propriedade) do período.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | Os dias da semana permitidos no período. Se não for especificado, todos os dias serão permitidos no período. Cada caractere na string especifica um dia. Por exemplo, "MTWHF" especifica que os dias da semana são permitidos no período. Os caracteres válidos são:
Qualquer combinação de caracteres é válida. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Especifica o período em que a reserva precisa ocorrer em relação à data de check-in (com base no fuso horário da propriedade). Por exemplo, a janela de reserva pode ser definida para pelo menos 7 dias, mas não mais de 180 dias, antes do check-in. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | A duração mínima antes do check-in na reserva precisa ocorrer
para que a promoção seja aplicada. Se esse valor não for especificado ou se o valor
for 0 , não haverá um mínimo.
Os tipos de valor válidos são:
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | O número máximo de dias antes do check-in em que a reserva precisa ser feita
para que a promoção seja aplicada. Se isso não for especificado ou se o valor
for 0 , não haverá um máximo.
Os tipos de valor válidos são:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
Define restrições ao valor máximo que uma tarifa pode ter depois que as promoções são aplicadas. As promoções precisam sempre especificar um Se a empilhamento estiver configurada, várias promoções com
Exemplo: Definir o preço de uma estadia de 1 noite em que
Confira a ordem de cálculo:
O fato de 60 ser um limite geral mais rígido é irrelevante, já que ele é válido apenas para a própria promoção, e não pode haver um único limite que abranja toda a pilha de promoções. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
O valor máximo que uma diária pode ter depois que o desconto é aplicado. Se um elemento
|
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Define restrições ao valor mínimo que uma tarifa pode ter depois que as promoções são aplicadas. As promoções precisam sempre especificar um A lógica de Se a empilhamento estiver configurada, várias promoções com
Exemplo: Definir o preço de uma estadia de 1 noite em que
Confira a ordem de cálculo:
O fato de 90 ser um piso geral mais rigoroso é irrelevante, já que ele é válido apenas para a própria promoção, e não pode haver um único piso que abranja toda a pilha de promoções. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
O valor mínimo que uma diária pode ter depois que o desconto é aplicado. Se um elemento
|
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | Um contêiner para um ou mais períodos que definem quando o check-in precisa ocorrer para que a promoção seja aplicada. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | Um período que especifica quando o check-in precisa ocorrer para que a promoção seja aplicada. Esse elemento não é necessário se você estiver excluindo uma ou mais promoções. O formato YearlessDate também é aceito.
|
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | A data de início (com base no fuso horário da propriedade) do período. Essa data precisa ser anterior ou igual à
data de end . Se start não for especificado, o período
será ilimitado em termos de data de início. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | A data de término (com base no fuso horário da propriedade) do período. Essa data precisa ser igual ou posterior à data de start . Se end não for especificado, o período
será ilimitado em termos de data de término. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | Os dias da semana permitidos no período. Se não for especificado, todos os dias serão permitidos no período. Cada caractere na string especifica um dia. Por exemplo, "MTWHF" especifica que os dias da semana são permitidos no período. Os caracteres válidos são:
Qualquer combinação de caracteres é válida. |
Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | Um contêiner para um ou mais períodos que definem quando o check-out precisa ocorrer para que a promoção seja aplicada. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | Um período que especifica quando o check-out precisa ocorrer para que a promoção seja aplicada. Esse elemento não é necessário se você estiver excluindo uma ou mais promoções. O formato YearlessDate também é aceito.
|
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | A data de início (com base no fuso horário da propriedade) do período. Essa data precisa ser anterior ou igual à
data de end . Se start não for especificado, o período
será ilimitado em termos de data de início. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | A data de término (com base no fuso horário da propriedade) do período. Essa data precisa ser igual ou posterior à data de start . Se end não for especificado, o período
será ilimitado em termos de data de término. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | Os dias da semana permitidos no período. Se não for especificado, todos os dias serão permitidos no período. Cada caractere na string especifica um dia. Por exemplo, "MTWHF" especifica que os dias da semana são permitidos no período. Os caracteres válidos são:
Qualquer combinação de caracteres é válida. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | Contêiner para listar os dispositivos do usuário qualificados para a promoção. Se especificado, apenas os usuários qualificados nos dispositivos listados vão receber a tarifa com desconto. Se não for especificado, a tarifa com desconto será oferecida aos usuários qualificados em qualquer dispositivo. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Define um tipo de dispositivo do usuário qualificado para a promoção. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | Um tipo de dispositivo. O valor precisa ser desktop ,
tablet ou mobile . |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | É preciso especificar exatamente um entre Especifica o desconto a ser aplicado a essa promoção. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Exatamente um de Um valor decimal de 0 a 100 que especifica a porcentagem de desconto.
Ele é aplicado a Exemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float | Exatamente um de Um valor decimal de 0 a 100 que especifica a porcentagem do desconto
básico. Semelhante a Ao contrário de Exemplo:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Exatamente um de Um valor fixo a ser subtraído da soma das diárias de Exemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Exatamente um de Um desconto fixo aplicado a cada uma das tarifas noturnas de Exemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Exatamente um de Se as tarifas noturnas de Se Exemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Exatamente um de Se as tarifas noturnas Se Se Exemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Use apenas com
O número de noites em que o desconto é aplicado, começando pelo menos caro. Precisa ser um número inteiro de 1 a 99. Se não for especificado, o desconto será aplicado a todas as noites. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Especifica um desconto em determinadas noites de uma estadia quando um período mínimo de estadia é atendido. Atributos no elemento Discount pai
não são permitidos se esse elemento for usado. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Número de noites necessárias para que o desconto seja aplicado. Cada desconto é aplicado a um segmento separado de noites de estadia. Por exemplo, para uma estadia de 10 noites em que |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | O número de noites com desconto em cada segmento de noites de estadia. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | O desconto aplicado às noites com desconto. Se esse valor
for 50 , cada noite selecionada terá 50% de desconto. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Precisa ser cheapest ou last . Se
last , as noites no final do segmento de estadia
terão desconto. Se cheapest , as noites mais baratas no segmento de estadias são descontadas. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Se o desconto pode ser aplicado a vários segmentos de estadias Se Por exemplo, se |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Atribui uma classificação a essa promoção e a inclui na seleção classificada, em que somente a promoção com a classificação mais baixa é selecionada para ser aplicada. Os valores precisam estar entre 1 e 99, inclusive. Se várias promoções tiverem a mesma classificação, uma delas será selecionada e aplicada de forma arbitrária. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | É preciso especificar exatamente um entre Especifica um
desconto diário que pode ser aplicado a uma noite de estadia. Isso é diferente de Cada propriedade pode ter um único grupo de promoções que são consideradas "melhores diárias". Isso significa que, para cada noite de estadia, a única promoção "melhor diária" que for qualificada e gerar o maior desconto para essa noite será selecionada e poderá ser aplicada.
O |
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | É necessário incluir exatamente um destes campos: Um valor decimal de 0 a 100 que especifica a porcentagem de desconto.
Ele é aplicado a Exemplos:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | É necessário incluir exatamente um destes campos: Um valor fixo a ser subtraído de uma diária de Exemplos:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | É necessário incluir exatamente um destes campos: Se as tarifas noturnas de Exemplos:
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Define restrições sobre o número de quartos que precisam estar disponíveis para que essa promoção seja aplicada. O desconto é aplicado apenas às noites que atendem à restrição. Não permitido com o
desconto de fixed_amount . O número de quartos disponíveis é especificado com
OTA_HotelInvCountNotifRQ (InvCount )
ou OTA_HotelAvailNotifRQ
(BookingLimit ). |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | O número mínimo de quartos que precisam estar disponíveis para que a promoção seja aplicada à diária. Se não for especificado, não haverá valor mínimo. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | O número máximo de quartos que precisam estar disponíveis para que a promoção seja aplicada à diária. Se não for especificado, não haverá valor máximo. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Define os limites de duração da estadia em que esta promoção pode ser aplicada. A promoção não é aplicada quando a duração da estadia está fora dos limites mínimo e máximo. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | O número mínimo de noites permitidas na estadia para que a promoção seja aplicada. Se não for especificado, não haverá valor mínimo. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | O número máximo de noites permitidas na estadia para que a promoção seja aplicada. Se não for especificado, não haverá valor máximo. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
Contêiner para uma regra de taxa de associação que aciona um tratamento de IU específico para o desconto associado. Esse elemento não deve ser especificado, a menos que
|
Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string |
ID da regra de tarifação associada a um programa de associação. |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | Especifica a soma mínima das tarifas diárias dos quartos (usando o maior valor entre
AmountBeforeTax ou AmountAfterTax ) que precisa ser
excedida para que a promoção seja aplicada. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | O valor que precisa ser excedido para que a promoção seja aplicada. |
Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Define as restrições de ocupações para as quais esta promoção é aplicada. A promoção não é aplicada quando a ocupação está fora dos limites mínimo e máximo. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | A ocupação especificada pelo usuário precisa ser pelo menos esse valor para que o desconto seja aplicado. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | A ocupação especificada pelo usuário precisa ser, no máximo, esse valor para que o desconto seja aplicado. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Contêiner para uma lista de planos de tarifas a que a promoção se aplica.
Se <RatePlans> não for especificado, a promoção
será aplicada a todos os planos de preços. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | Especifica um plano de taxa. Um plano de tarifa é definido por uma combinação de pacote, tarifas e disponibilidade, conforme definido nas mensagens Transação (dados da propriedade), OTA_HotelRateAmountNotifRQ e OTA_HotelAvailNotifRQ, e identificado pelo PackageID. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | O identificador exclusivo do plano de tarifas. Esse valor é mapeado para o valor de PackageID em <PackageData> em uma mensagem Transaction (Property Data) e no atributo RatePlanCode em <StatusApplicationControl> nas mensagens <OTA_HotelRateAmountNotifRQ> e <OTA_HotelAvailNotifRQ> .
O número máximo de caracteres permitidos é 50. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | Contêiner para uma lista de tipos de quartos a que a promoção se aplica.
A promoção é aplicada a cada <RoomType>
especificado. Se <RoomTypes> não for especificado, a
promoção será aplicada a todos os quartos. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | Especifica um tipo de quarto. Um tipo de quarto é definido em um elemento <RoomData> em uma mensagem Transação (dados da propriedade) e é referenciado usando o valor <RoomID> . O valor <RoomID> também é referenciado pelo atributo InvTypeCode nas mensagens OTA_HotelRateAmountNotifRQ. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | O identificador exclusivo do inventário (tipo de quarto). Esse valor é mapeado para <RoomID> em uma mensagem de transação (dados da propriedade).
O número máximo de caracteres permitidos é 50. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | Especifica como as promoções podem ser combinadas. Se não for especificado, o "type"
será base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | Várias promoções podem ser aplicadas a uma única tarifa, dependendo desta configuração:
Das combinações permitidas, o conjunto de promoções que gera o maior desconto é aplicado à tarifa. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | Um contêiner para um ou mais períodos que determinam como a promoção é aplicada, como para acomodar descontos sazonais. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Descreve como aplicar a promoção. Os valores válidos são:
Esse atributo precisa ser sempre especificado.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | Um período que especifica as datas em que a promoção será aplicada. O formato YearlessDate também é aceito.
Se você quiser definir o intervalo |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | A data de início (com base no fuso horário da propriedade) do período. Essa data precisa ser anterior ou igual à
data de end . Se start não for especificado, o período
será ilimitado em termos de data de início.
Especifique o valor |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | A data de término (com base no fuso horário da propriedade) do período. Essa data precisa ser igual ou posterior à
data de start . Se end não for especificado, o período
será ilimitado a partir da data start .
Especifique o valor |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | Os dias da semana permitidos no período. Se não for especificado, todos os dias serão permitidos no período. Cada caractere na string especifica um dia. Por exemplo, "MTWHF" especifica que os dias da semana são permitidos no período. Os caracteres válidos são:
Qualquer combinação de caracteres é válida. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Contêiner para listar os locais do usuário (países) qualificados para a promoção. Se especificado, apenas os usuários qualificados nos países listados vão receber a tarifa com desconto. Se não for especificado, a tarifa com desconto será oferecida aos usuários qualificados em qualquer país. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | O tipo de especificação de UserCountries.
Os valores válidos são Se a UserCountries Se a Se a |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Define um país em que os usuários podem participar da promoção. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | Um código de país
CLDR,
como DE ou FR . Para alguns
países, o código de país do CLDR não é o mesmo que o código de país ISO
de duas letras. Além disso, não há suporte para códigos de região CLDR. |
Exemplos
Há um limite de 500 promoções por propriedade. Consulte o exemplo "Excluir uma promoção" para remover promoções de uma propriedade.
O exemplo a seguir mostra uma mensagem Promotions
básica:
<?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>
O exemplo a seguir mostra como criar um desconto se houver excesso de inventário próximo à data de chegada:
<?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>
O exemplo a seguir mostra como excluir uma promoção de uma propriedade:
<?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>
O exemplo a seguir mostra como excluir todas as promoções de uma propriedade:
<?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>
O exemplo a seguir mostra como sobrepor <HotelPromotions>
para uma propriedade
com uma ou mais promoções novas. Quando action="overlay"
, todas as promoções
armazenadas são excluídas antes de armazenar as promoções especificadas na
mensagem atual:
<?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>
O exemplo a seguir mostra um caso em que três promoções diferentes seriam
aplicadas (base
, second
e any
). A promoção none
não seria
aplicada, porque as outras oferecem um desconto melhor. Se o preço
original for R $100, o preço com desconto será R $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>
O exemplo a seguir mostra um caso em que a promoção none
é usada porque
a combinação de outras promoções oferece um desconto menor. Se o
preço original for US $100, o preço com desconto será US $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>
O exemplo a seguir mostra um caso em que o elemento BookingWindow
é usado com os limites de início e término definidos como um tipo de duração
ISO 8601. Essa restrição de janela de reserva exige que a reserva seja feita até 18h
no dia anterior à chegada e a partir das 12h do segundo dia antes da
chegada.
<?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>
O exemplo a seguir mostra um caso em que o elemento BookingDates
é usado com os atributos start
e end
como
tipos DateTime. Essa restrição de data de agendamento exige que a reserva ocorra
entre 06h30 de 01/07/2020 e 18h45 de 02/07/2020.
<?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>
O exemplo a seguir mostra um caso em que o elemento CheckInDates
contém DateRanges
com campos start
e
end
sem anos. Neste exemplo, a promoção se aplica
a datas de check-in entre 29/12 e 2/1, independentemente do ano. Intervalos de datas sem ano que ultrapassam a fronteira do ano novo são inválidos. Portanto, o DateRange é expresso como dois intervalos de datas adjacentes.
<?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>
O exemplo a seguir oferece um desconto de 50% em duas noites para cada quatro noites de estadia no período especificado de reservas. Para um itinerário de dez noites, um total de quatro noites teria um desconto de 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>
O exemplo a seguir oferece um desconto de 50% para cada três noites de estadia nos intervalos de datas de estadia especificados. Somente as noites de estadia sobrepostas são consideradas para se qualificar para o desconto. Para o itinerário a seguir com check-in em 01/01/2022 e check-out em 07/01/2022, as noites de estadia qualificadas e os descontos são aplicados da seguinte maneira.
- 2022-01-01 (estadia)
- 2022-01-02 (estadia)
- 2022-01-03
- 2022-01-04 (com desconto)
- 2022-01-05 (estadia)
- 2022-01-06 (estadia)
<?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>
O exemplo a seguir oferece dois descontos, um de 20% e outro de 15%. Durante a avaliação, apenas o desconto de 15% é aplicado porque tem uma classificação mais baixa.
<?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>
O exemplo a seguir oferece descontos para uma estadia de duas noites aplicando
BestDailyDiscount
empilhada com um 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>
Considere uma estadia de duas noites de 30 de abril a 2 de maio de 2023. Para o cálculo, a combinação de melhores descontos diários que gera o maior desconto é encontrada primeiro.
Para a primeira noite, a promoção "geral" é o único valor qualificado com um desconto fixo de 20%.
Para a segunda noite, a promoção "pode" oferece um desconto maior do que o "geral". Portanto, quando "may" é selecionado, o valor do desconto fixo é 50.
Em seguida, para a estadia, a promoção "fiesta" tem descontos de 5 por noite, ou
10 no total. Ele pode ser combinado com a combinação dos melhores descontos diários
porque "fiesta" tem o tipo de combinação definido como any
. Se ele for definido
como base
, apenas a combinação dos melhores descontos diários ou
o desconto "fiesta" será aplicado. Consulte a descrição de
Stacking
para mais informações.
No geral, o preço da estadia recebe um desconto de 20 + 50 + 10 = 80.
Respostas
Sintaxe
A mensagem PromotionsResponse
usa a seguinte sintaxe:
<?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>
Elementos e atributos
A mensagem PromotionsResponse
tem os seguintes elementos e atributos:
Elemento / @Attribute | Ocorrências | Tipo | Descrição |
---|---|---|---|
PromotionsResponse | 1 | Complex element | O elemento raiz que indica o sucesso ou os problemas de uma mensagem de solicitação de promoções recebida. |
PromotionsResponse / @timestamp | 1 | DateTime | A data e a hora de criação da mensagem. |
PromotionsResponse / @id | 1 | string | O identificador exclusivo da mensagem de promoções associada. |
PromotionsResponse / @partner | 1 | string | A conta do parceiro para esta mensagem. |
PromotionsResponse / Success | 0..1 | Success | Indica que a mensagem de promoções foi processada
sem alertas, erros ou falhas.
|
PromotionsResponse / Issues | 0..1 | Issues | Um contêiner para um ou mais problemas encontrados durante o processamento da
mensagem de promoções.
|
PromotionsResponse / Issues / Issue | 1..n | Issue | A descrição de um aviso, erro ou falha encontrada durante o processamento da mensagem de promoções. Confira os detalhes sobre esses problemas em Mensagens de erro de status do feed. |
PromotionsResponse / Issues / Issue / @code | 1 | integer | O identificador do problema. |
PromotionsResponse / Issues / Issue / @status | 1 | enum | O tipo de problema encontrado. Os valores válidos são |
Exemplos
Confira a seguir uma resposta para uma mensagem de promoções processada.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
Confira a seguir uma resposta a uma mensagem de promoções não processada devido a erros.
<?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>