Modificações de taxas

Visão geral

Essa API permite definir maneiras de aplicar ações dinamicamente a uma taxa sempre que as condições forem atendidas, como ajustar o preço ou ativar o reembolso. Ao contrário da API Promotions, que só pode aplicar promoções qualificadas com descontos maiores, essa API aplica quaisquer ações quando determinadas condições são atendidas, incluindo ajustes de preço que podem aumentar o preço final.

Solicitações

Sintaxe

A mensagem RateModifications usa a seguinte sintaxe:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="partner_key"
                      id="message_ID"
                      timestamp="timestamp">
  <HotelRateModifications hotel_id="HotelID" action="[overlay]">
    <ItineraryRateModification id="ModificationID" action="[delete]">
      <BookingDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </BookingDates>
      <BookingWindow min="integer" max="integer"/>
      <CheckinDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </CheckinDates>
      <CheckoutDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </CheckoutDates>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <LengthOfStay min="integer" max="integer"/>
      <MinimumAmount before_discount="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <StayDates application="[all|any]">
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </StayDates>
      <UserCountries type="[include|exclude]">
        <Country code="country_code"/>
      </UserCountries>
      <ModificationActions>
        <PriceAdjustment multiplier="float"/>
        <RateRule id="RateRuleID"/>
        <Refundable available="[false|true]"
                       refundable_until_days="number_of_days"
                       refundable_until_time="time"/>
        <Availability status="[unavailable]"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

Elementos e atributos

A mensagem RateModifications tem os seguintes elementos e atributos:

Elemento / @Attribute Ocorrências Tipo Descrição
RateModifications 1 Complex element O elemento raiz de uma mensagem de modificações de tarifa.
RateModifications / @partner 1 string A conta do parceiro para esta mensagem. O valor da string é o valor da "Chave do parceiro" listado na página "Configurações da conta" da Central para Hotéis.

Observação:se você tem um back-end que fornece feeds para várias contas, esse valor precisa corresponder ao valor do atributo ID especificado no elemento <RequestorID> das mensagens <OTA_HotelRateAmountNotifRQ> e <OTA_HotelAvailNotifRQ> para a mesma conta.

RateModifications / @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).
RateModifications / @timestamp 1 DateTime A data e a hora de criação da mensagem.
RateModifications / HotelRateModifications 0..n HotelRateModifications

Modificações de taxa para uma propriedade. Cada modificação de taxa se aplica a uma única propriedade.

Observação:se várias modificações de taxa puderem ser aplicadas à mesma taxa, todas as modificações serão aplicadas. Nenhuma ordem específica é garantida.

RateModifications / HotelRateModifications / @hotel_id 1 string O identificador exclusivo da propriedade. Esse valor precisa corresponder ao ID de hotel especificado com <id> no elemento <listing> no feed de lista de hotéis. O ID do hotel também aparece na Central para Hotéis.
RateModifications / HotelRateModifications / @action 0..1 enum

Se action não for especificado, as modificações nesse elemento serão adicionadas ou atualizadas para o hotel. Se action="overlay" for especificado, todas as modificações definidas anteriormente para esse hotel serão excluídas primeiro. Em seguida, as modificações especificadas aqui são gravadas. Se action="overlay" for usado e nenhuma modificação for especificada nesse elemento, todas as modificações deste hotel serão excluídas.

RateModifications / HotelRateModifications / ItineraryRateModification 0..200 ItineraryRateModification

Uma modificação de taxa única para uma propriedade.

Observação: as modificações de taxa são difíceis de depurar e recomendamos usá-las com moderação. Entre em contato com seu Gerente técnico de contas (TAM) para casos de uso que exijam mais de 200 modificações de taxa.

RateModifications / HotelRateModifications / ItineraryRateModification / @id 1 string Identificador exclusivo da modificação da taxa. 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).
RateModifications / HotelRateModifications / ItineraryRateModification / @action 0..1 enum

Se não for especificado e uma modificação de taxa com o mesmo id não for armazenada, essa modificação de taxa será armazenada. Caso contrário, se não for especificado e uma modificação de taxa com o mesmo id for armazenada, a modificação de taxa atual será atualizada.

Se especificado, o valor precisa ser "delete". Se "delete" for especificado, a modificação da taxa armazenada com o mesmo id será excluída. Ao usar "delete", não inclua elementos filhos em <ItineraryRateModification>. Além disso, "delete" não é permitido com <HotelRateModifications action="overlay"/>.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates 0..1 BookingDates Um contêiner de um ou mais períodos que definem quando a reserva precisa ocorrer para que a modificação da tarifa seja aplicada.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange 1..99 DateRange Um período que especifica quando a reserva precisa ocorrer para que a modificação da tarifa seja aplicada.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start 0..1 Date A data de início (com base no fuso horário da propriedade), inclusive, do período. Essa data precisa ser igual ou anterior à data de end. Se start não for especificado, o período será efetivamente ilimitado em termos de data de início.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end 0..1 Date A data de término (com base no fuso horário da propriedade), inclusive, do período. Essa data precisa ser igual ou posterior à data start. Se end não for especificado, o período será efetivamente ilimitado em termos de data de término.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @days_of_week 0..1 string

Os dias da semana permitidos no período. Se não for especificado, todos os dias serão permitidos no período. Cada caractere da string especifica um dia. Por exemplo, "MTWHF" especifica que 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.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow 0..1 BookingWindow Especifica o período em que a reserva precisa ocorrer em relação à data do check-in (com base no fuso horário da propriedade). Por exemplo, a janela de reserva pode ser definida para no mínimo 7 dias e no máximo 180 dias antes do check-in.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @min 0..1 integer O número mínimo de dias antes do check-in quando a reserva precisa ser feita para que a modificação da tarifa seja aplicada. Se isso não for especificado, não haverá mínimo.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max 0..1 integer O número máximo de dias antes do check-in quando uma reserva precisa ser feita para que a modificação da tarifa seja aplicada. Se isso não for especificado, não haverá máximo.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates 0..1 CheckinDates Um contêiner de um ou mais períodos que definem quando o check-in precisa ocorrer para que a modificação da taxa seja aplicada.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange 1..99 DateRange Um período que especifica quando o check-in precisa ocorrer para que a modificação da taxa seja aplicada. Esse elemento não será necessário se você estiver excluindo uma ou mais modificações de tarifa.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @start 0..1 Date A data de início (com base no fuso horário da propriedade), inclusive, do período. Essa data precisa ser igual ou anterior à data de end. Se start não for especificado, o período será efetivamente ilimitado em termos de data de início.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end 0..1 Date A data de término (com base no fuso horário da propriedade), inclusive, do período. Essa data precisa ser igual ou posterior à data start. Se end não for especificado, o período será efetivamente ilimitado em termos de data de término.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @days_of_week 0..1 string

Os dias da semana permitidos no período. Se não for especificado, todos os dias serão permitidos no período. Cada caractere da string especifica um dia. Por exemplo, "MTWHF" especifica que 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.

RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates 0..1 CheckoutDates Um contêiner de um ou mais períodos que definem quando o check-out precisa ocorrer para que a modificação da taxa seja aplicada.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange 1..99 DateRange Um período que especifica quando o check-out precisa ocorrer para que a modificação da taxa seja aplicada. Esse elemento não será necessário se você estiver excluindo uma ou mais modificações de tarifa.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @start 0..1 Date A data de início (com base no fuso horário da propriedade), inclusive, do período. Essa data precisa ser igual ou anterior à data de end. Se start não for especificado, o período será efetivamente ilimitado em termos de data de início.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end 0..1 Date A data de término (com base no fuso horário da propriedade), inclusive, do período. Essa data precisa ser igual ou posterior à data start. Se end não for especificado, o período será efetivamente ilimitado em termos de data de término.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @days_of_week 0..1 string

Os dias da semana permitidos no período. Se não for especificado, todos os dias serão permitidos no período. Cada caractere da string especifica um dia. Por exemplo, "MTWHF" especifica que 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.

RateModifications / HotelRateModifications / ItineraryRateModification / Devices 0..1 Devices Contêiner para listar os dispositivos do usuário qualificados para a modificação da taxa. Se especificado, a modificação da taxa só será aplicada se o usuário corresponder a um dos dispositivos listados. Se não for especificado, isso não restringirá a aplicação da modificação da taxa.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device 1..3 Device Define um tipo de dispositivo do usuário qualificado para a modificação da taxa.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device / @type 1 enum Um tipo de dispositivo. O valor precisa ser desktop, tablet ou mobile.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions 1 ModificationActions

Ações que serão aplicadas à taxa se todas as condições especificadas forem atendidas.

RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment 0..1 PriceAdjustment Modifica a taxa multiplicando AmountBeforeTax e AmountAfterTax pelo multiplicador especificado
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment / @multiplier 1 float Tanto AmountBeforeTax quanto AmountAfterTax são multiplicados por esse valor.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule 0..1 RateRule Modifica a taxa aplicando o ID da regra de tarifação especificada a ela.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule / @id 1 string Esse ID corresponde uma taxa a uma definição no seu arquivo de Definição da regra de tarifação. Observação:
  • O limite de caracteres desse campo é de 40 caracteres.
  • Cada tarifa só pode ser associada a uma única regra de tarifação.
  • Se houver várias modificações aplicando um ID de regra de tarifação, o ID da regra de tarifação que for menor lexicograficamente será atribuído à taxa.
  • Se esse ID não corresponder a uma regra no arquivo de definição da regra de tarifação, ele será considerado não qualificado.
Consulte este artigo para informações sobre os diferentes tratamentos de interface de tarifas particulares.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable 0..1 Refundable Substitui o reembolso da taxa pelo valor especificado.

Ao definir os atributos, observe o seguinte:

  • Essa ação de modificação reescreve completamente a configuração "Reembolsável" de uma taxa qualificada, não apenas os campos preenchidos.
  • Se available ou refundable_until_days não estiver definido, a tarifa não vai aparecer como reembolsável.
  • Se available for 0 ou false, os outros atributos serão ignorados. A taxa não aparece como reembolsável, mesmo que um ou ambos os atributos estejam definidos.
  • Recomendamos configurar refundable_until_time. Se não for definida, o horário mais antigo (meia-noite) será usado.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @available 1 boolean (Obrigatório) Defina como 1 ou true para indicar se a taxa permite um reembolso total. Caso contrário, defina como 0 ou false.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days 0..1 integer (Obrigatório se available for true) Especifica o número de dias de antecedência do check-in para solicitar um reembolso total. O valor de refundable_until_days precisa ser um número inteiro entre 0 e 330.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @refundable_until_time 0..1 Time (Recomendado se available for true) Especifica a hora mais recente, no horário local do hotel, em que uma solicitação de reembolso total será atendida. Pode ser combinado com refundable_until_days para especificar, por exemplo, que "os reembolsos estão disponíveis até as 16h, dois dias antes do check-in". Se refundable_until_time não for definido, o valor será definido como meia-noite por padrão.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability 0..1 Availability Substitui a disponibilidade da taxa para o valor especificado. É possível definir apenas a taxa como unavailable.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability / @status 1 enum Se for status="unavailable", a taxa será tratada como se não estivesse disponível, independentemente de haver um preço válido para ela.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay 0..1 LengthOfStay Define os limites de duração da estadia em que essa modificação da tarifa pode ser aplicada. A modificação da taxa não é aplicada quando a duração da estadia está fora dos limites mínimo e máximo.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min 0..1 integer O número mínimo de diárias permitidas na estadia para que a modificação da tarifa seja aplicada. Se isso não for especificado, não haverá valor mínimo.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @max 0..1 integer O máximo de noites permitidas na estadia para que a modificação da tarifa seja aplicada. Se isso não for especificado, não haverá limite máximo.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount 0..1 MinimumAmount Especifica a soma mínima das diárias diárias (usando o maior valor de AmountBeforeTax ou AmountAfterTax) que precisa ser excedida para que a modificação seja aplicada.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount 1 integer O valor que precisa ser excedido para que a modificação da taxa seja aplicada.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans 0..1 RatePlans Contêiner para uma lista de planos de tarifas aos quais a modificação de taxa se aplica. Se <RatePlans> não for especificado, a modificação da tarifa será aplicada a todos os planos de tarifas.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan 1..n RatePlan Especifica um plano de tarifação. Um plano de tarifas é definido por uma combinação de pacotes, taxas e disponibilidade, conforme definido nas mensagens de transação (dados de propriedade), OTA_HotelRateAmountNotifRQ e OTA_HotelAvailNotifRQ, conforme identificado pelo PackageID.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan / @id 1 string O identificador exclusivo do plano de tarifa. Esse valor é mapeado para o valor de PackageID em <PackageData> em uma mensagem de transação (dados da propriedade) e no atributo RatePlanCode em <StatusApplicationControl> nas mensagens <OTA_HotelRateAmountNotifRQ> e <OTA_HotelAvailNotifRQ>. O número máximo de caracteres permitido é 50.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes 0..1 RoomTypes Contêiner com uma lista de tipos de quarto a que a modificação da tarifa se aplica. A modificação da taxa é aplicada a cada <RoomType> especificado. Se <RoomTypes> não for especificado, a modificação da tarifa será aplicada a todos os quartos.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType 1..n RoomType Especifica um tipo de quarto. Um tipo de quarto é definido em um elemento <RoomData> em uma mensagem de Transação (dados da propriedade) e é referenciado usando o valor <RoomID>. O valor <RoomID> também é referenciado pelo atributo InvTypeCode nas mensagens OTA_HotelRateAmountNotifRQ.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType / @id 1 string O identificador exclusivo do inventário (tipo de quarto). Esse valor é mapeado para <RoomID> em uma mensagem de transação (dados da propriedade). O número máximo de caracteres permitido é 50.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates 0..1 StayDates Um contêiner de um ou mais períodos que determinam como a modificação da taxa é aplicada, por exemplo, para acomodar preços sazonais.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / @application 1 enum

Descreve como aplicar a modificação da taxa.

Os valores válidos são:

  • all: aplica a modificação de tarifa a cada noite no itinerário se todas as datas no itinerário se sobrepuserem às datas da estadia.
  • any: aplica a modificação da tarifa a todas as noites no itinerário se alguma data dele se sobrepuser a uma data no período da estadia.

Esse atributo deve sempre ser especificado.

RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange 1..99 DateRange Um período que especifica as datas em que a modificação da taxa será aplicada.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start 0..1 Date A data de início (com base no fuso horário da propriedade), inclusive, do período. Essa data precisa ser igual ou anterior à data de end. Se start não for especificado, o período será efetivamente ilimitado em termos de data de início.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end 0..1 Date A data de término (com base no fuso horário da propriedade), inclusive, do período. Essa data precisa ser igual ou posterior à data start. Se end não for especificado, o período será efetivamente ilimitado em termos de data de término.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @days_of_week 0..1 string

Os dias da semana permitidos no período. Se não for especificado, todos os dias serão permitidos no período. Cada caractere da string especifica um dia. Por exemplo, "MTWHF" especifica que 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.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries 0..1 UserCountries Se especificado, a modificação da tarifa só será aplicada se o usuário estiver localizado em um dos países especificados. Se não for especificada, a modificação da tarifa será aplicada independentemente da localização do usuário.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / @type 0..1 enum O tipo de especificação Usercountries.

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

Se o campo UserCountry type estiver definido como include, a modificação da taxa vai ser aplicada aos usuários dos países listados.

Se o type de Userpaíses for exclude, a modificação da taxa será aplicada a usuários fora dos países listados.

Se o campo User countries type não for definido, ele será tratado como include, e a modificação da taxa será aplicada aos usuários dos países listados.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country 1..300 Country Especifica um país de usuário permitido para a modificação da tarifa.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country / @code 1 string Um código de país do CLDR, como DE ou FR. Em alguns países, o código de país CLDR não é igual ao código ISO do país de duas letras. Além disso, os códigos de região CLDR não são compatíveis.

Exemplos

Mensagem básica

O exemplo a seguir mostra uma mensagem básica RateModifications:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-07-01" end="2023-07-31" days_of_week="MTWHF"/>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <BookingWindow min="7" max="330"/>
      <CheckinDates>
         <DateRange start="2023-10-01" end="2023-10-31" days_of_week="FSU"/>
      </CheckinDates>
      <CheckoutDates>
         <DateRange start="2023-10-08" end="2023-11-07" days_of_week="FSU"/>
      </CheckoutDates>
      <Devices>
        <Device type="mobile"/>
        <Device type="tablet"/>
      </Devices>
      <LengthOfStay min="2" max="14"/>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <UserCountries>
        <Country code="US"/>
        <Country code="GB"/>
      </UserCountries>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Excluir uma modificação de tarifa

O exemplo a seguir mostra como excluir uma modificação de taxa de uma propriedade:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1" action="delete"/>
  </HotelRateModifications>
</RateModifications>

Excluir todas as modificações de tarifas

O exemplo a seguir mostra como excluir todas as modificações de tarifa de uma propriedade:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
</RateModifications>


Sobrepor todas as modificações da tarifa

O exemplo a seguir mostra como sobrepor <HotelRateModifications> na propriedade com uma ou mais modificações de taxa novas. Quando action="overlay", todas as modificações de tarifa armazenadas são excluídas antes de armazenar as modificações de tarifa especificadas na mensagem atual:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

Várias ações de modificação

O exemplo abaixo mostra como executar várias ações de modificação ao mesmo tempo:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-01-01" end="2023-02-28"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier=".95"/>
        <Refundable available="true"
                    refundable_until_days="1"
                    refundable_until_time="12:00:00"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Desativar um plano de tarifa para os países dos usuários

O exemplo a seguir mostra como limitar um plano de tarifas apenas para usuários japoneses (JP):

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <RatePlans>
         <RatePlan id="jp_only"/>
      </RatePlans>
      <UserCountries type="exclude">
        <Country code="JP"/>
      </UserCountries>
      <ModificationActions>
        <Availability status="unavailable"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


Respostas

Sintaxe

A mensagem RateModificationsResponse usa a seguinte sintaxe:

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_key">
  <!-- Either Success or Issues will be populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code" status="issue_type"><var>issue_description</var></Issue>
  </Issues>
</RateModificationsResponse>

Elementos e atributos

A mensagem RateModificationsResponse tem os seguintes elementos e atributos:

Elemento / @Attribute Ocorrências Tipo Descrição
RateModifications 1 Complex element O elemento raiz que indica o sucesso ou os problemas de uma mensagem de solicitação de RateModifiers recebida.
RateModificationsResponse / @timestamp 1 DateTime A data e a hora de criação da mensagem.
RateModificationsResponse / @id 1 string O identificador exclusivo da mensagem RateModifiers associada.
RateModificationsResponse / @partner 1 string A conta do parceiro para esta mensagem.
RateModificationsResponse / Success 0..1 Success Indica que a mensagem RateModifieds foi processada sem avisos, erros ou falhas.

Cada mensagem tem <Success> ou <Issues>.

RateModificationsResponse / Issues 0..1 Issues Um contêiner para um ou mais problemas encontrados durante o processamento da mensagem RateModifiers.

Cada mensagem tem <Success> ou <Issues>.

RateModificationsResponse / Issues / Issue 1..n Issue A descrição de um aviso, erro ou falha encontrada ao processar a mensagem RateModifiers. Detalhes sobre esses problemas podem ser encontrados nas Mensagens de erro de status do feed.
RateModificationsResponse / Issues / Issue / @code 1 integer O identificador do problema.
RateModificationsResponse / Issues / Issue / @status 1 enum

O tipo de problema encontrado.

Os valores válidos são warning, error e failure.

Exemplos

Concluído

Veja a seguir uma resposta a uma mensagem RateModifiers processada com sucesso.

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</RateModificationsResponse>

Problemas

Veja a seguir uma resposta a uma mensagem RateModifieds não processada devido a erros.

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</RateModificationsResponse>