Promoções

Visão geral

Essa API permite especificar possíveis descontos. Das promoções especificadas, O Google aplica a promoção qualificada ou o conjunto de promoções que leva à menor preço. Se você estiver procurando uma API que ofereça suporte a taxas ajustes que podem aumentar ou diminuir o preço quando as condições forem satisfeitos, considere nosso API Rate Modifieds. 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 "Chave do parceiro" valor listado em o página de configurações da conta na Central para Hotéis.

Se você tem um back-end que fornece feeds para várias contas, esse valor precisa corresponder ao ID o valor do atributo especificado em <RequestorID> do elemento <OTA_HotelRateAmountNotifRQ> e <OTA_HotelAvailNotifRQ> mensagens iguais do Compute Engine.

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 <Stacking> seja usado, a promoção com o maior desconto será aplicada à reserva quando várias promoções são qualificadas.

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 "overlay": Quando o valor for "overlay", todos as promoções armazenadas são excluídas antes do armazenamento das promoções especificadas. na mensagem atual.

Se não for especificado, cada promoção especificada na regra é:

  • Added (se nenhuma das promoções armazenadas tiver o mesmo id)
  • Updated (se uma promoção armazenada tiver a mesma id)
  • Deleted (se uma promoção armazenada tiver a mesma id e o valor do atributo action para a promoção especificada na mensagem atual é "delete")
Promotions / HotelPromotions / Promotion 0..99 Promotion

Uma única promoção para uma propriedade. Observe que, se action="overlay" e um <Promotion> são não for especificada, todas as promoções da propriedade serão excluídas.

Se 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 delete. Caso contrário especificado, e um promoção com o mesmo id não é armazenada, então esse promoção é armazenada. Caso contrário, se não for especificado, e uma promoção com o mesmo id for armazenado, a promoção existente será atualizado.

Se delete for especificado, a promoção armazenada com o mesmo id será excluído. Ao usar delete, não inclua elementos filhos no <Promotion>. Além disso, delete não é permitido em conjunto com <HotelPromotions action="overlay"/>.

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) inclusivos, do intervalo.

  • A data ou data e hora especificadas por start precisam ser anterior (ou igual à) data ou hora especificada pelo end.
  • Se start não for especificado, o intervalo estará efetivamente ilimitado em termos de horário de início.
  • Se start for preenchida como data "AAAA-MM-DD", ela será interpretado como data e hora "AAAA-MM-DDT00:00:00".
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.

  • A data ou data e hora especificadas por end precisam ser posteriores que (ou igual à) data ou data e hora especificadas pelo start.
  • Se end não for especificado, o intervalo estará efetivamente ilimitado em termos de horário de término.
  • Se end for fornecido como a data "AAAA-MM-DD", será interpretado como data e hora "AAAA-MM-DDT23:59:59".
Promotions / HotelPromotions / Promotion / BookingDates / 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 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:

  • M para segunda-feira
  • T para terça-feira
  • W para quarta-feira
  • H para quinta-feira
  • F para sexta-feira
  • S para sábado
  • U para domingo

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 ao data do check-in (com base no fuso horário da propriedade). Por exemplo, o a janela de reserva pode ser definida para no mínimo 7 dias e no máximo 180 dias, antes do check-in.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration Duração mínima 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ínimo.

Os tipos de valor válidos são:

  • Número inteiro: o número de dias antes do check-in data. Por exemplo, o valor 30 indica a promoção só se aplica a reservas feitas até 30 dias antes da data de check-in.
  • Duração ISO 8601 (dias, horas e minutos): o número de dias (e opcionalmente horas/minutos) antes da data de check-in. Para exemplo, um valor de P30D indica apenas que a promoção se aplica a reservas feitas pelo menos 30 dias antes da data do check-in. Um O valor de P30DT6H exige reserva até as 18h em no 30o dia antes da chegada.
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:

  • Número inteiro: o número de dias antes do check-in data. Por exemplo, o valor 30 indica a promoção só se aplica a reservas feitas até 30 dias antes da data de check-in.
  • Duração ISO 8601 (dias, horas e minutos): o número de dias (e opcionalmente horas/minutos) antes da data de check-in. Para exemplo, um valor de P30D indica apenas que a promoção se aplica às reservas feitas até 30 dias antes da data do check-in. Um O valor de P30DT6H exige reserva a partir das 18h para no 30o dia antes da chegada.
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 sempre precisam especificar um <Discount> ou um <BestDailyDiscount>. Portanto, para criar uma promoção que só aplica uma <Ceiling>, uma opção é definir <Discount> com percentage de 0.

Se o empilhamento estiver configurado, várias promoções com <Ceiling> pode ser aplicada a uma única estadia. Cada promoção aplicaria seu desconto, imediatamente seguido por seu teto. O exemplo a seguir demonstra como cada teto contribui para o próximo cálculo da promoção na pilha.

Exemplo:

Preço de uma estadia de 1 noite em que AmountBeforeTax está 100 e houver uma pilha de duas promoções:

  1. Promoção com tipo de empilhamento base, a fixed_amount de 25 e um teto amount_per_night de 60
  2. Promoção com tipo de empilhamento second, fixed_amount de 25 e um teto amount_per_night de 90

Esta é a ordem do cálculo:

  1. A promoção base é aplicada primeiro, e os descontos de AmountBeforeTax para 75, mas o teto abaixa para 60.
  2. A promoção second desconta o AmountBeforeTax de 60 a 35. Está abaixo do teto. de 90 para que o segundo teto não seja aplicado. A taxa final é 35

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 <Floor> também for especificado, esse deve ser definido com um valor maior ou igual ao Atributo amount_per_night em <Floor>:

O valor de amount_per_night será aplicado aos tributos e taxas quando estão incluídas no valor da diária usando AmountAfterTax, mas diferentes daqueles especificados em TaxFeeInfo.

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 <Discount> ou um <BestDailyDiscount>. Portanto, para criar uma promoção que só aplica uma <Floor>, uma opção é definir <Discount> com percentage de 0.

A lógica <Floor> ainda se aplica a <FreeNights> de desconto, mesmo que a noite sem custo financeiro tenha um 100% de desconto aplicado a ele.

Se o empilhamento estiver configurado, várias promoções com <Floor> pode ser aplicada a uma única estadia. Cada promoção aplicaria seu desconto, imediatamente seguido pelo preço mínimo. O exemplo a seguir demonstra como cada andar contribui para o próximo andar cálculo da promoção na pilha.

Exemplo:

Preço de uma estadia de 1 noite em que AmountBeforeTax está 100 e houver uma pilha de duas promoções:

  1. Promoção com tipo de empilhamento base, a fixed_amount de 25 e um andar amount_per_night de 90
  2. Promoção com tipo de empilhamento second, fixed_amount de 25 e um andar amount_per_night de 60

Esta é a ordem do cálculo:

  1. A promoção base é aplicada primeiro, e os descontos AmountBeforeTax para 75, mas o valor mínimo aumenta em até 90.
  2. A promoção second desconta o AmountBeforeTax de 90 a 65. Está acima do chão. de 60 para que o segundo andar não seja aplicado. A taxa final é 65.

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 <Ceiling> também for especificado, esse deve ser definido com um valor menor ou igual ao Atributo amount_per_night em <Ceiling>:

O valor de amount_per_night será aplicado aos tributos e taxas quando estão incluídas no valor da diária usando AmountAfterTax, mas diferentes daqueles especificados em TaxFeeInfo.

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates Um contêiner para um ou mais períodos que definem quando o check-in precisa para que a promoção seja aplicada.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

Um período especificando quando o check-in deve ocorrer para que a promoção ser aplicadas. Este elemento não é necessário se você estiver excluindo um ou mais promoções.

O formato YearlessDate também é compatível.

  • Se start ou end for uma transação anual data, ambos devem ser preenchidos como datas sem ano.
  • Os períodos sem ano não podem estar próximos ao ano novo. Em vez disso, representar o período como dois períodos adjacentes. Por exemplo: {"12-29", "01-05"} pode ser representado como {"12-29", "12-31"} e {"01-01", "01-05"}
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 deve ser anterior ou igual à data 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 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:

  • M para segunda-feira
  • T para terça-feira
  • W para quarta-feira
  • H para quinta-feira
  • F para sexta-feira
  • S para sábado
  • U para domingo

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 especificando quando o check-out deve ocorrer para que a promoção ser aplicadas. Esse elemento não é necessário se você excluindo uma ou mais promoções.

O formato YearlessDate também é compatível.

  • Se um de start ou end for um valor anual data, ambos devem ser preenchidos como datas sem ano.
  • Os períodos sem ano não podem estar próximos ao ano novo. Em vez disso, representar o período como dois períodos adjacentes. Por exemplo: {"12-29", "01-05"} pode ser representado como {"12-29", "12-31"} e {"01-01", "01-05"}
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 deve ser anterior ou igual à data 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 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:

  • M para segunda-feira
  • T para terça-feira
  • W para quarta-feira
  • H para quinta-feira
  • F para sexta-feira
  • S para sábado
  • U para domingo

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, os usuários qualificados dispositivo recebem a taxa com desconto.
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 Discount ou BestDailyDiscount precisa ser especificado.

Especifica o desconto a ser aplicado a esta promoção.

Promotions / HotelPromotions / Promotion / Discount / @percentage 0..1 float

Exatamente um de percentage, fixed_amount, fixed_amount_per_night fixed_price ou fixed_price_per_night é obrigatórios.

Um valor decimal de 0 a 100 que especifica o desconto percentual. for aplicado a AmountAfterTax (ou AmountBeforeTax se AmountAfterTax não for especificado).

Exemplos:

  • Se AmountAfterTax for 100 e percentage for 20, então

    taxa da promoção = AmountAfterTax * (1 - porcentagem desconto)

    80,00 = 100 * (1 - 0,2)

  • Se AmountBeforeTax for 100, percentage é 20 e TaxFeeInfo especifica um imposto de 10, então

    taxa da promoção = AmountBeforeTax * (1 - porcentagem desconto) + tributos

    90,00 = 100 * (1 - 0,2) + 10

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

Exatamente um de percentage, fixed_amount, fixed_amount_per_night fixed_price ou fixed_price_per_night é obrigatórios.

Um valor fixo a ser subtraído da soma do Taxas por noite de AmountAfterTax (ou soma de AmountBeforeTax tarifas por noite se AmountAfterTax não foi especificado). Presume-se que na mesma moeda das diárias. Se for maior do que soma das taxas noturnas, o valor resultante é zero.

Exemplos:

  • Se estamos cobrando uma estadia de 1 noite em que AmountBeforeTax é 90, AmountAfterTax é 100 e fixed_amount for 20, então

    taxa de promoção = AmountAfterTax - fixo desconto

    80,00 = 100 - 20

  • Se estamos cobrando uma estadia de 1 noite em que AmountBeforeTax é 100, fixed_amount for 20 e TaxFeeInfo especificar um imposto de 8%, então

    taxa de promoção = (AmountBeforeTax - fixo desconto) * (1 + percentual de tributo)

    86,40 = (100 - 20) * 1,08

  • Se estamos cobrando uma estadia de 1 noite em que AmountBeforeTax é 50, fixed_amount é 60, e TaxFeeInfo especifica um imposto de 10, então

    taxa de promoção = (AmountBeforeTax - fixo desconto) * tributo

    10,00 = 0 + 10

  • Se estamos cobrando uma estadia de três noites em que o Os valores de AmountAfterTax são 100, 110 e 120. e fixed_amount é 150, então

    taxa de promoção = sum(AmountAfterTax) - (fixa) desconto)

    180,00 = (100 + 110 + 120) - 150

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night 0..1 float

Exatamente um de percentage, fixed_amount, fixed_amount_per_night fixed_price ou fixed_price_per_night é obrigatórios.

Um desconto fixo aplicado a cada um dos AmountAfterTax as tarifas por noite (ou o N mais barato se applied_nights for especificado). Se AmountAfterTax não for especificado, ele será aplicado a AmountBeforeTax. Presume-se que na mesma moeda das diárias. Se fixed_amount_per_night é maior que essa tarifa é reduzida a zero, ou seja, não pode fazer com que o valor da diária se torne negativo.

Exemplos:

  • Se estamos cobrando uma estadia de três noites em que o Os valores de AmountAfterTax são 100, 110 e 120. e o fixed_amount_per_night é 10, então

    taxa de promoção = sum(AmountBeforeTax - valor fixo desconto)

    300,00 = ((100 - 10) + (110 - 10) + (120 - 10))

  • Se estamos cobrando uma estadia de três noites em que o Os valores de AmountAfterTax são 10, 50 e 100. e o fixed_amount_per_night é 20, então

    taxa de promoção = sum(AmountAfterTax - valor fixo desconto)

    110,00 = (0 + (50 - 20) + (100 - 20))

Promotions / HotelPromotions / Promotion / Discount / @fixed_price 0..1 float

Exatamente um de percentage, fixed_amount, fixed_amount_per_night fixed_price ou fixed_price_per_night é obrigatórios.

Se as tarifas noturnas de AmountAfterTax forem especificadas, este define o preço da estadia, incluindo impostos e taxas, para o o valor especificado. Se AmountBeforeTax for especificado, então independentemente de AmountAfterTax ser especificado ou não, o preço sem tributos da estadia para o valor especificado. Presume-se que na mesma moeda das diárias.

Se AmountAfterTax tiver como objetivo refletir uma percentual de imposto e definir um preço fixo para O AmountBeforeTax pode resultar em tarifas e tributos incorretos. Em geral, é altamente recomendável usar TaxFeeInfo para especificar os tributos e as taxas de uma propriedade.

Exemplos:

  • Se estamos cobrando uma estadia de 1 noite em que AmountBeforeTax é 90, AmountAfterTax é 100 e fixed_price for 80, a taxa de promoção será 80.
  • Se estamos cobrando uma estadia de 1 noite em que AmountBeforeTax é 100, fixed_amount for 80 e TaxFeeInfo especificar um imposto de 8%,

    taxa da promoção = preço fixo * (1 + percentual de tributos)

    86,40 = 80 * 1,08

  • Se estamos cobrando uma estadia de três noites em que o Os valores de AmountAfterTax são 100, 110 e 120. e fixed_amount é 300, então

    taxa de promoção = 300

Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night 0..1 float

Exatamente um de percentage, fixed_amount, fixed_amount_per_night fixed_price ou fixed_price_per_night é obrigatórios.

Se as tarifas noturnas de AmountAfterTax forem especificadas, este define o preço de cada noite de estadia, incluindo impostos e taxas, para o o valor especificado. Se AmountBeforeTax for especificado, então independentemente de AmountAfterTax ser especificado ou não, o preço sem tributos de cada noite de estadia conforme o valor especificado. É estão na mesma moeda que as tarifas noturnas.

Se AmountAfterTax tiver como objetivo refletir uma percentual de imposto e definir um preço fixo para O AmountBeforeTax pode resultar em tarifas e tributos incorretos. Em geral, é altamente recomendável usar TaxFeeInfo para especificar os tributos e as taxas de uma propriedade.

Se applied_nights for especificado, o novo preço será aplicado às N diárias mais baratas.

Exemplos:

  • Se estamos cobrando uma estadia de duas noites em que Os valores AmountBeforeTax são 90, 90. Os valores AmountAfterTax são 100, 100. e fixed_price é 80, então a taxa de promoção é 80 + 80 = 160.
  • Se estamos cobrando uma estadia de duas noites em que AmountBeforeTax é 100, 100; fixed_amount for 80, e TaxFeeInfo especifica um imposto de 8%, então a taxa de promoção é (80 + 80) * 1,08 = 172,8.
  • Se estamos cobrando uma estadia de três noites em que o Os valores de AmountAfterTax são 100, 110 e 120. e fixed_amount é 110, então a taxa da promoção é 110 * 3 = 330.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

Ele só deve ser usado com percentage ou fixed_amount_per_night.

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 é 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 o desconto é aplicado a um segmento separado de diárias.

Por exemplo, para uma estadia de 10 noites em que stay_nights está 4 (e repeats for verdadeira), haverá duas noites de estadia segmentos: da 1a à 4a noites e da 5a a 8a noites; as A 9a e a 10a noites não fazem parte de um segmento de estadias noturnas.

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 diárias 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, o modelo mais barato diárias dentro do segmento de diárias são descontadas.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

Se o desconto pode ser aplicado a várias noites segmentos. Se for false, somente o segmento de noites da estadia em no início do itinerário é descontado. Se for true, então: qualquer segmento de noites da estadia é descontado.

Por exemplo, se stay_nights for 4 e o itinerário for 10 noites, então, se repeats for true, então 2 os segmentos são descontados (1 a 4 noites e 5 a 8 noites); mas, se repeats é false, então apenas 1 segmento é com desconto (noites de 1 a 4).

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

Exatamente um de Discount ou BestDailyDiscount precisa ser especificado.

Especifica um desconto diário que pode ser aplicado a uma noite de ficar. Isso contrasta com Discount, que se aplica descontos a estadias inteiras.

Cada propriedade pode ter um único grupo de promoções considerada "melhor diária". Isso significa que, para cada noite de estadia, único "melhor diário" está qualificada e gera o maior alcance o desconto para essa noite está selecionado e pode ser aplicado.

Stacking não pode ser especificado com BestDailyDiscount. O "melhor diário" descontos, o que resulta o maior desconto para cada noite são combinados e tratados como uma só desconto da estadia (por exemplo, Discount) com o tipo de empilhamento definido como base. Esse desconto combinado é comparado ser empilhados, outros <Discount> qualificados promoções para encontrar uma ou uma combinação delas que ofereça o maior desconto. O parâmetro combinação de BestDailyDiscount ou uma Discount, o que gerar o menor preço, é selecionado e aplicada para o tipo de empilhamento base.

StayDates pode ser especificado com este tipo de desconto, mas o application precisa ser definido como overlap

.
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage 0..1 float

Exatamente um de percentage, fixed_amount ou fixed_price é obrigatório.

Um valor decimal de 0 a 100 que especifica o desconto percentual. for aplicado a AmountAfterTax (ou AmountBeforeTax se AmountAfterTax não for especificado).

Exemplos:

  • Se AmountAfterTax para uma noite de estadia for 100 e percentage é 20, então

    taxa da promoção = AmountAfterTax * (1 - porcentagem desconto)

    80,00 = 100 * (1 - 0,2)

  • Se AmountBeforeTax para um limite de estadia for 100, percentage é 20 e TaxFeeInfo especifica um imposto de 10, então

    taxa da promoção = AmountBeforeTax * (1 - porcentagem desconto) + tributos

    90,00 = 100 * (1 - 0,2) + 10

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount 0..1 float

Exatamente um de percentage, fixed_amount ou fixed_price é obrigatório.

Um valor fixo a ser subtraído de um único Valor por noite de AmountAfterTax (ou Valor por noite de AmountBeforeTax se AmountAfterTax não foi especificado). Presume-se que na mesma moeda das diárias. Se for maior do que soma das taxas noturnas, o valor resultante é zero.

Exemplos:

  • Se AmountBeforeTax para uma única noite for 90, AmountAfterTax é 100 e fixed_amount for 20, então

    taxa de promoção = AmountAfterTax - fixo desconto

    80,00 = 100 - 20

  • Se AmountBeforeTax para uma única noite for 100, fixed_amount é 20, e TaxFeeInfo especifica um imposto de 8%, então

    taxa de promoção = (AmountBeforeTax - fixo desconto) * (1 + percentual de tributo)

    86,40 = (100 - 20) * 1,08

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price 0..1 float

Exatamente um de percentage, fixed_amount ou fixed_price é obrigatório.

Se as tarifas noturnas de AmountAfterTax forem especificadas, este define o preço da estadia, incluindo impostos e taxas, para o o valor especificado. Se AmountBeforeTax for especificado, então independentemente de AmountAfterTax ser especificado ou não, o preço sem tributos da estadia para o valor especificado. Presume-se que na mesma moeda das diárias.

Exemplos:

  • Se AmountBeforeTax para uma única noite for 90, AmountAfterTax é 100 e fixed_price for 80, a taxa de promoção será 80.
  • Se AmountBeforeTax para uma única noite for 100, fixed_amount é 80, e TaxFeeInfo especifica um imposto de 8%, então

    taxa da promoção = preço fixo * (1 + percentual de tributos)

    86,40 = 80 * 1,08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount Define as restrições do número de salas que precisam estar disponíveis em para que esta 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 isso não for especificado, não haverá 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 isso não for especificado, não haverá valor mínimo.
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer O 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 de uma regra de tarifa de associação que aciona uma interface específica para o desconto associado.

Esse elemento não deve ser especificado, a menos que <Discount> também é especificado.

Promotions / HotelPromotions / Promotion / MembershipRateRule / @id 1 string

ID de regra de tarifação associada a um programa de assinatura.

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount Especifica a soma mínima das diárias diárias (usando o maior valor de AmountBeforeTax ou AmountAfterTax) que precisam ser excedido 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 quarto aos quais 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:

  • any: pode ser combinado com qualquer outra promoção (exceto none), mas a ordem em que as promoções são aplicada não é garantida.
  • base: a melhor promoção base qualificada é selecionadas e aplicadas antes de outras promoções. Isso foi antes chamado de base_only.
  • second: a melhor promoção second qualificada é selecionada e aplicada depois de uma promoção base (se aplicável) e antes de any promoções.
  • none: não pode ser combinado com outros promoções.

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 aplicar a promoção.

Os valores válidos são:

  • all: aplica a promoção a todas as noites no Itinerário se todas as datas do itinerário se sobrepuserem com as datas da estadia.
  • any: aplica a promoção a todas as noites do itinerário se alguma data do itinerário se sobrepuser a uma data no período da estadia.
  • overlap: aplica a promoção somente aos usuários. noites do itinerário que se sobrepõem a uma data nas datas da estadia do intervalo 10.240.0.0/16.

Esse atributo deve sempre ser especificado.

  • Se <Discount> especificar percentage e application está definido como all ou any, o desconto será aplicado como uma porcentagem estadia completa.
  • Se <Discount> especificar percentage e application estiver definido como overlap, o o desconto é aplicado como uma porcentagem das tarifas noturnas sobrepostas noites.
  • <Discount> especificando fixed_amount e application definido como overlap é um combinação inválida.
  • <FreeNights> suporta todos application. Para overlap, somente as diárias sobrepostas serão consideradas no desconto. e cumprimento de requisitos regulatórios.
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 um de start ou end for um valor anual data, ambos devem ser preenchidos como datas sem ano.
  • Os períodos sem ano não podem estar próximos ao ano novo. Em vez disso, representar o período como dois períodos adjacentes. Por exemplo: {"12-29", "01-05"} pode ser representado como {"12-29", "12-31"} e {"01-01", "01-05"}
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.
Promotions / HotelPromotions / Promotion / StayDates / 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 / 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 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:

  • M para segunda-feira
  • T para terça-feira
  • W para quarta-feira
  • H para quinta-feira
  • F para sexta-feira
  • S para sábado
  • U para domingo

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, somente usuários qualificados nos países têm a tarifa com desconto. Se não for especificado, qualificado os usuários em qualquer país recebem o desconto.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum O tipo de especificação Usercountries.

Os valores válidos são include e exclude.

Se o campo Usercountries type estiver definido como include, a promoção será válida para os usuários do países listados.

Se o type de Userpaíses for exclude, a promoção se aplica a usuários fora dos países.

Se a propriedade type de Userpaíses não estiver definida, ela será tratada como include e a promoção será aplicada aos usuários de os países listados.

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 CLDR não é igual ao código ISO de duas letras código do país. Além disso, os códigos de região CLDR não são compatíveis.

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 arquivo original 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 BookingWindow é usado com seus limites inicial e final definidos como um formato de duração ISO 8601 não é válido. Essa restrição de janela de reserva exige reserva até às 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. Sem ano os períodos que cruzam o limite do ano novo são inválidos, então o intervalo de datas é expresso como dois períodos 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 tem um desconto de duas noites de 50% para cada quatro noites de estadia para o intervalo especificado de datas de reserva. 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 o 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 os descontos são aplicados da seguinte forma:

  • 01/01/2022 (estadia)
  • 02/01/2022 (estadia)
  • 2022-01-03
  • 04/01/2022 (com desconto)
  • 05/01/2022 (estadia)
  • 06/01/2022 (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 20%. com 15% de desconto. 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 problemas para 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.

<Success> ou <Issues> são presentes em cada mensagem.

PromotionsResponse / Issues 0..1 Issues Um contêiner para um ou mais problemas encontrados durante o processamento da Mensagem de promoções.

<Success> ou <Issues> são presentes em cada mensagem.

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 warning, error e failure.

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>