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 tarifa serão aplicadas antes 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, 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>
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ção. |
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ê tem um back-end que fornece feeds para
várias contas, esse valor precisa corresponder ao |
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 . 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 aparece na Central para Hotéis. |
Promotions / HotelPromotions / @action | 0..1 | enum | Se especificado, o valor deve ser
Se não for especificado, cada promoção especificada na regra é:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Uma única promoção para uma propriedade. Observe que, 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 | 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 de 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 deve ocorrer para que a promoção seja aplicada. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date ou DateTime | A data ou data/hora de início (com base no fuso horário da propriedade) inclusive, do intervalo.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date ou DateTime | A data de término ou data e hora (com base no fuso horário da propriedade) inclusive, do intervalo.
|
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 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 isso não for especificado, ou o valor
é 0 , não há 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 quando a reserva precisa ocorrer
para que a promoção seja aplicada. Se isso não for especificado, ou o valor
é 0 , não há máximo.
Os tipos de valor válidos são:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
Define restrições sobre o valor máximo que pode ser definido para uma taxa após a aplicação das promoções. As promoções precisam sempre especificar um Se a empilhamento estiver configurada, várias promoções com
Exemplo: Preço de uma estadia de 1 noite em que
Esta é a ordem do cálculo:
O fato de que 60 é um limite geral mais rígido é irrelevante, pois ele é válido somente para sua própria promoção, e não pode haver que cubra toda a pilha de promoções. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
O valor máximo que uma tarifa noturna pode ser definida após o será aplicado. Se um elemento O valor de |
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Define as restrições do valor mínimo que pode ser definido para uma taxa. após a aplicação das promoções. As promoções sempre precisam especificar um A lógica Se o empilhamento estiver configurado, várias promoções com
Exemplo: Preço de uma estadia de 1 noite em que
Confira a ordem de cálculo:
O fato de que 90 é um preço mínimo mais rígido é irrelevante, pois ele é válido somente para sua própria promoção, e não pode haver que abrange toda a pilha de promoções. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
O valor mínimo que pode ser definido para uma diária após a será 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. Este elemento não é necessário se você estiver excluindo um ou mais promoções. O formato YearlessDate também é compatível.
|
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | A data de início (com base no fuso horário da propriedade), inclusive, de
o período. Essa data precisa ser anterior ou igual à
data de end . Se start não for especificada, a data
é efetivamente 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), inclusive, do
período. A data precisa ser igual ou posterior a start .
data. Se end não for especificada, a data
período é efetivamente 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. Caso contrário especificado, todos os dias sã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 o momento do check-out deve 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ê excluindo uma ou mais promoções. O formato YearlessDate também é compatível.
|
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | A data de início (com base no fuso horário da propriedade), inclusive, de
o período. Essa data precisa ser anterior ou igual à
data de end . Se start não for especificada, a data
é efetivamente 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), inclusive, do
período. A data precisa ser igual ou posterior a start .
data. Se end não for especificada, a data
período é efetivamente 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. Caso contrário especificado, todos os dias sã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 o promoção. Se especificado, somente os usuários qualificados nos dispositivos listados recebem uma taxa 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 | Exatamente um de Especifica o desconto a ser aplicado a esta promoção. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Exatamente um de Um valor decimal de 0 a 100 que especifica o desconto percentual.
for aplicado a Exemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Exatamente um de Um valor fixo a ser subtraído da soma do
Taxas por noite de Exemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Exatamente um de Um desconto fixo aplicado a cada um dos Exemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Exatamente um de Se as tarifas noturnas de Se o objetivo de Exemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Exatamente um de Se as tarifas noturnas de Se Se Exemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Ele só deve ser usado com
O número de noites a que o desconto é aplicado, começando com o mais barato. 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 para determinadas noites de uma estadia mínima
que o tamanho delas seja atingido. Atributos no elemento Discount pai
não serã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 da estadia. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | O desconto aplicado às noites com desconto. Se esse valor
é de 50 , então cada noite selecionada terá 50% de desconto. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Precisa ser cheapest ou last . Se
last , depois as noites no final do segmento da estadia
diárias têm desconto. Se for cheapest , as noites mais baratas do segmento de estadias serão descontadas. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Se o desconto pode ser aplicado a vários segmentos de estadias Se for Por exemplo, se |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Atribui uma classificação a essa promoção e a ativa na seleção de classificação, em que somente a promoção com a classificação mais baixa será selecionada para aplicação. Valores deve estar entre 1 e 99, inclusive. Se várias promoções compartilharem a mesma classificação, uma delas é selecionada e aplicada arbitrariamente. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | É preciso especificar exatamente um entre Especifica um
o desconto diário, que pode ser aplicado a uma noite de estadia. Isso está em
contrastar com 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 | Exatamente um de Um valor decimal de 0 a 100 que especifica o desconto percentual.
for aplicado a Exemplos:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Exatamente um de 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 somente
noites que atendem à restrição. Não é permitido com o
fixed_amount de desconto. Observe que o número de objetos
quartos é 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 a promoção sejam aplicadas ao valor da diária. Se isso não for especificado, não haverá mínimo |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | O número máximo de salas que precisam estar disponíveis para a promoção sejam aplicadas ao valor da 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 de os 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 isso não for especificado, não haverá limite 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 está aplicada. A promoção não é aplicada quando a ocupação está fora do os limites mínimo e máximo. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | A ocupação especificada pelo usuário precisa ter pelo menos esse valor para que o desconto a ser aplicado. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | A ocupação especificada pelo usuário precisa ter no máximo esse valor para o desconto a ser aplicado. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Contêiner para uma lista de planos de tarifas aos quais a promoção se aplica.
Se <RatePlans> não for especificado, a promoção
se aplica a todos os planos de tarifas. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | Especifica um plano de tarifação. Um plano de tarifação é definido por uma combinação de pacote, taxas e disponibilidade, conforme definido em Transação (Dados de propriedade), OTA_HotelRateAmountNotifRQ e OTA_HotelAvailNotifRQ e conforme identificado por PackageID. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | O identificador exclusivo do plano de tarifa. Esse valor é mapeado para o
Valor do PackageID em <PackageData>
em uma mensagem de Transação (dados da propriedade) e no
Atributo RatePlanCode em
<StatusApplicationControl> em ambos
<OTA_HotelRateAmountNotifRQ> e
<OTA_HotelAvailNotifRQ> mensagens.
O número máximo de caracteres permitido é 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, o
é aplicável a todos os quartos. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | Especifica um tipo de quarto. Um tipo de quarto é definido em uma
<RoomData> elemento em um
mensagem Transação (dados da propriedade) e
referenciada usando seu valor <RoomID> . (Seu
O valor <RoomID> também é referenciado pelo
Atributo InvTypeCode em OTA_HotelRateAmountNotifRQ
messages.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | O identificador exclusivo do inventário (tipo de quarto). Esse valor mapeia
como <RoomID> em uma mensagem de transação (dados da propriedade).
O número máximo de caracteres permitido é 50. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | Especifica como as promoções podem ser combinadas. Se não for especificado, o "tipo"
será considerado base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | Várias promoções podem ser aplicadas a uma única taxa, dependendo da essa configuração:
Das combinações permitidas, o conjunto de promoções que resulta na o maior desconto será aplicado à tarifa. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | Um contêiner para um ou mais períodos que determinam como o promoção é aplicada, como para acomodar descontos sazonais. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Descreve como a promoção deve ser aplicada. Os valores válidos são:
Esse atributo deve sempre ser 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 é compatível.
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), inclusive, de
o período. Essa data deve ser anterior ou igual à data
end . Se start não for especificada, a data
é efetivamente 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 ao
start . Se end não for especificada, a data
o período é efetivamente ilimitado a partir da data de start .
Especifique o valor |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | Os dias da semana permitidos no período. Caso contrário especificado, todos os dias sã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 Usercountries.
Os valores válidos são Se o campo Usercountries Se o Se a propriedade |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Define um país em que os usuários estão qualificados para a promoção. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | Um 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 "Excluir uma promoção" exemplo para remover promoções de uma propriedade.
Mensagem básica
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>
Condição do inventário
O exemplo a seguir mostra como criar um desconto em caso de excesso 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>
Excluir uma promoção
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>
Excluir todas as promoções
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>
Sobrepor todas as promoções
O exemplo a seguir mostra como sobrepor <HotelPromotions>
em uma propriedade
com uma ou mais promoções novas. Quando action="overlay"
, todos armazenados
as promoções são excluídas antes de armazenar as promoções especificadas no
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>
Três tipos de empilhamento diferentes
O exemplo a seguir mostra um caso em que três promoções diferentes seriam
aplicado (base
, second
, any
). A promoção none
não seria
já que as outras promoções oferecem um desconto melhor. Se o preço
original for de US$ 100, o preço com desconto será de US$ 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>
Nenhum tipo de empilhamento
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
o preço original era US $100, o preço com desconto seria 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>
Limites de duração da janela de reserva
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 reserva até as 18h
um dia antes da chegada e à meia-noite do segundo dia anterior ou depois disso.
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>
Limites de data e hora das datas de reserva
O exemplo a seguir mostra um caso em que BookingDates
é usado com os atributos start
e end
como
DateTime. Essa restrição de data exige que a reserva ocorra
entre 6h30 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>
Períodos sem ano
O exemplo a seguir mostra um caso em que CheckInDates
o elemento contém DateRanges
, que têm start
e
end
sem anos. Neste exemplo, a promoção se aplica
para datas de check-in entre 29/12 e 02/01, 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>
Desconto de FreeNights
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 10 noites, um total de quatro noites teria 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>
No próximo exemplo, o desconto de uma noite é de 50% para cada três noites para as períodos de estadia especificados. Somente as diárias sobrepostas são contabilizadas. para se qualificar para o desconto. Para o seguinte itinerário com check-in em 01/01/2022 e check-out em 07/01/2022, as diárias qualificadas de estadia e são aplicados da seguinte forma.
- 2022-01-01 (estadia)
- 02/01/2022 (estadia)
- 2022-01-03
- 04/01/2022 (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>
Seleção classificada
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>
BestDailyDiscount
O exemplo a seguir aplica o desconto para uma estadia de duas noites
BestDailyDiscount
empilhada com uma 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 de 2023 a 2 de maio de 2023 Para o cálculo, a combinação dos melhores descontos diários que gera o o desconto mais profundo é encontrado primeiro.
Na primeira noite, o "general" promoção é o único valor qualificado com um desconto fixo de 20.
Para a segunda noite, a “talvez” promoção oferece um desconto maior do que o "geral" de desconto. Então, quando "talvez", é selecionado o desconto fixo é 50.
Depois, para a estadia, o "fiesta" descontos promocionais de 5 por noite ou
10 no total. Pode ser combinada com a combinação dos melhores descontos diários
porque "fiesta" tem o tipo de empilhamento definido como any
. Se ele foi definido
como base
, somente a combinação dos melhores descontos diários ou
o "fiesta" será aplicado. Consulte a descrição de
Stacking
para mais informações.
"No geral, o preço da estadia recebe um valor fixo de 20 + 50 + 10 = 80 de desconto.
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. |
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 "Promoções" foi processada
sem avisos, 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 encontrado processando a mensagem "Promoções". Confira os detalhes sobre esses problemas no 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
Sucesso
Veja a seguir uma resposta a uma mensagem de Promoções processada com sucesso.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
Problemas
Veja 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>