Referência XML de preços e inventário do Room (transações)

Esta página fornece uma referência para as Mensagens de transação baseadas em XML.

<Transaction>

O elemento raiz de uma Mensagem de transação é <Transaction>. É um contêiner de informações descritivas sobre quartos e pacotes e/ou preços e disponibilidade de quartos e pacotes.

O elemento <Transaction> aparece no seguinte local na hierarquia XML da Mensagem de transação:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Mensagens que usam <Transaction> como elemento raiz exigem pelo menos um elemento filho. As mensagens de transação podem ter qualquer número de elementos filhos, desde que o tamanho total da mensagem não exceda 100 MB.

Sintaxe

O elemento <Transaction> usa a seguinte sintaxe:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp" id="transaction_ID">

  <!-- Defines data about a room or package (Room Bundle) -->
  <PropertyDataSet>
    ...
  </PropertyDataSet>

  <!-- Updates/sets prices and availability for rooms and Room Bundles -->
  <!-- (Also removes itineraries from inventory) -->
  <Result>
    ...
  </Result>

</Transaction>

Atributos

O elemento <Transaction> tem os seguintes atributos:

Atributo Obrigatório? Tipo Descrição
id Required string Um identificador exclusivo para cada Mensagem de transação.
partner Optional string A conta do parceiro que recebeu a mensagem de transação. Isso costuma ser usado se o back-end fornecer feeds de preço para várias contas de parceiros. Esse valor de string é o valor da "Chave do parceiro" listado na página de configurações da conta na Central para Hotéis.
timestamp Required DateTime

O momento em que a mensagem de transação foi enviada.

Todas as mensagens enviadas com um carimbo de data/hora nas últimas 24 horas serão processadas. As que não tiverem sido enviadas serão descartadas.

As mensagens são processadas na ordem de timestamp e não na ordem de recebimento. Por exemplo, uma atualização de preço com um carimbo de data/hora de 2019-05-03 14:09:00 que é recebida depois de uma mensagem com um carimbo de data/hora de 2019-05-03 14:10:00 ainda será processada em ordem, e o preço da mensagem com o carimbo de data/hora de 2019-05-03 14:10:00 será usado.

Elementos filhos

O elemento <Transaction> tem os seguintes elementos filhos:

Elemento filho Obrigatório? Tipo Descrição
<PropertyDataSet> Optional* <PropertyDataSet>

Descreve um quarto e Categorias de quarto específicos. Normalmente, você usa esse elemento em uma Mensagem de transação separada para definir valores compartilhados para Categorias de quarto e reduzir o tamanho de suas Mensagens de transação.

<Result> Optional* <Result>

Dados de preços para o itinerário de um quarto ou um elemento <RoomBundle> que define Categorias de quarto e outros tipos de quarto para a propriedade. O elemento <Result> também pode ser usado para remover itinerários do inventário.

* É necessário incluir pelo menos <PropertyDataSet> ou <Result>.

Exemplos

Dados do quarto

O exemplo a seguir define dados do quarto em uma mensagem de transação simples:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>5440OF</RoomID>
      <Name>
        <Text text="Single King Bed Room" language="en"/>
        <Text text="Simple Lit de Roi" language="fr"/>
      </Name>
      <Description>
        <Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
          and down comforters (bedspreads). City view. 300 square feet. Desk with
          rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
          complimentary HBO and pay movies." language="en"/>
        <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Bathroom View" language="en"/>
          <Text text="La salle de baines" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Capacity>4</Capacity>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Dados dos preços

O exemplo a seguir define os dados de preços em uma mensagem de transação simples:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
  </Result>
</Transaction>

Tarifas por noite

O exemplo a seguir define os dados de preços de uma a sete noites a partir de 7 de junho de 2023:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-08-24T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">209.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">419.98</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>3</Nights>
    <Baserate currency="USD">614.97</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>4</Nights>
    <Baserate currency="USD">819.96</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>5</Nights>
    <Baserate currency="USD">999.95</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>6</Nights>
    <Baserate currency="USD">1193.94</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>7</Nights>
    <Baserate currency="USD">1259.93</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
</Transaction>


Tarifas básicas e condicionais

O exemplo a seguir mostra uma Mensagem de transação que contém uma taxa base e uma tarifa condicional:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
        <!-- NOTE: OtherFees is inherited from the above setting -->
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Remover inventário

O exemplo a seguir remove do inventário vários inventários (estadias de uma noite para várias datas diferentes) de um hotel:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-05-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-23</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-24</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <!---Sending <Baserate> is optional with <Unavailable> -->
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-25</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">-1</Baserate>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
</Transaction>

<PropertyDataSet>

Um contêiner para informações de quartos e pacotes (ou Categoria de quarto) em uma mensagem <Transaction>. Os valores definidos em um hotel substituem os definidos em um parceiro. O Google armazena essas informações para que você não precise defini-las sempre que enviar atualizações de preços.

O elemento <PropertyDataSet> aparece no seguinte local na hierarquia XML da Mensagem de transação:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>  // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Para mais informações, consulte Metadados da Categoria de quarto.

Sintaxe

O elemento <PropertyDataSet> usa a seguinte sintaxe:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet>
    <!-- (Required) ID that matches the Hotel List Feed -->
    <Property>hotel_ID</Property>

    <!-- (Optional) Defines metadata about a room -->
    <RoomData>
      ...
    </RoomData>

    <!-- (Optional) Defines package metadata to be paired with rooms (Room Bundles) -->
    <PackageData>
      ...
    </PackageData>
  </PropertyDataSet>
  ...
</Transaction>

Atributos

O elemento <PropertyDataSet> não tem atributos.

Elementos filhos

O elemento <PropertyDataSet> tem os seguintes elementos filhos:

Elemento filho Obrigatório? Tipo Descrição
<PackageData> Optional* <PackageData> Descreve uma Categoria de quarto. Esses dados são associados a um parceiro e ao hotel, mas não a um itinerário. Esse elemento é semelhante a <RoomData>, mas descreve comodidades e termos que não fazem parte da descrição física do quarto.

Você faz referência ao ID do pacote nas atualizações de preço.

Para ver mais informações, consulte Metadados da Pacote de quarto.

<Property> Required string O código de um hotel ao qual os dados associados se aplicam. O valor desse elemento precisa ser uma string que corresponda ao <id> da ficha no seu Feed de lista de hotéis.
<RoomData> Optional* <RoomData> Descreve um ambiente. Esses dados são associados a um parceiro e a um hotel, mas não a um itinerário.

Você faz referência ao código do quarto nas atualizações de preço.

* É necessário incluir pelo menos <PackageData> ou <RoomData>.

Exemplos

Dados de quartos e pacotes

O exemplo abaixo mostra dados de quartos e pacotes em um <PropertyDataSet>:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Ao enviar preços e disponibilidade para esse quarto e/ou Categoria de quarto, você faz referência aos códigos de quarto e pacote nas mensagens de preço. O resultado é que você reduz bastante o tamanho das mensagens e a quantidade de erros que pode encontrar devido a dados duplicados. Para mais informações, consulte Metadados do pacote de quarto.

<RoomData>

Define metadados independentes do itinerário sobre os quartos e, por extensão, Pacotes de quarto (já que Categorias de quarto são quartos mais comodidades). Use <RoomData> para reduzir a repetição de dados descritivos no seu feed de preços.

O elemento <RoomData> aparece no seguinte local na hierarquia XML da Mensagem de transação:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Os elementos <RoomData> contêm informações associadas a um parceiro e um hotel, mas não a um itinerário. A finalidade pretendida é todos os dados não itinerários.

O elemento <RoomData> é semelhante a <PackageData>, mas descreve o quarto físico em vez de comodidades e termos de um pacote. Use <RoomData> e <PackageData> em combinação para fornecer detalhes sobre Pacotes de quarto. Para salas individuais que não fazem parte de um pacote, use apenas <RoomData>.

Você pode definir os elementos <RoomData> e <PackageData> para o mesmo quarto ou Categoria de quarto. Quando o Google exibir esse quarto ou pacote nos resultados da pesquisa, ele incluirá as descrições de ambos, separadas por um hífen.

Para mais informações, consulte Metadados da Categoria de quarto.

Sintaxe

O elemento <RoomData> usa a seguinte sintaxe:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet>
    ...
    <RoomData>
      <RoomID>room_ID</RoomID>

      <Name>
        <Text text="room_name" language="language_code"/>
        ...
      </Name>

      <Description>
        <Text text="room_description" language="language_code"/>
        ...
      </Description>

      <Capacity>max_number_of_occupants</Capacity>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults, children, or seniors --></OccupancyDetails>
      <OccupancySettings>
        <MinOccupancy>min_number_of_occupants</MinOccupancy>
        <MinAge>min_age_of_occupants</MinAge>
      </OccupancySettings>

      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      <RoomFeatures>
        ...
      </RoomFeatures>
    </RoomData>
    ...
  </PropertyDataSet>
</Transaction>

Atributos

O elemento <RoomData> não tem atributos.

Elementos filhos

O elemento <RoomData> tem os seguintes elementos filhos:

Elemento filho Obrigatório? Tipo Descrição
<Capacity> Optional integer O número máximo de hóspedes que um quarto pode acomodar fisicamente. A capacidade de uma sala é maior ou igual à ocupação.

Quando especificado, esse valor precisa ser igual ou maior que o valor do elemento <Occupancy>, que é o número pretendido de hóspedes para um determinado quarto. Por exemplo, o <Capacity> de um pacote grande pode ser 6, mas o <Occupancy> dele é 4.

O valor de <Capacity> precisa ser um número inteiro positivo entre 1 e 20.

<Description> Optional Object Uma descrição detalhada da sala. Esse elemento precisa conter informações não descritas por outros elementos ou pelo elemento <Name>. Não use todas as letras maiúsculas ao especificar a descrição do quarto.

O elemento <Description> usa um único elemento filho, <Text>, que tem estes dois atributos obrigatórios:

  • text: uma descrição detalhada da sala.
  • language: um código de idioma de duas letras. Por exemplo, fr.

Use um elemento <Text> separado para cada idioma em que o anúncio ou link sem custo financeiro para reserva pode aparecer (com valores diferentes para os atributos language).

O exemplo a seguir mostra as versões em francês e inglês da descrição da sala:

<Description>
  <Text text="Two queen-sized beds" language="en"/>
  <Text text="Deux lits de la reine" language="fr"/>
</Description>
<Name> Required string Nome da categoria do quarto. Esse valor precisa corresponder ao que aparece na página de destino do hotel (antigo ponto de venda). Não defina o valor desse elemento com todas as letras maiúsculas.

Esse elemento tem um único elemento filho, <Text>, que tem estes dois atributos obrigatórios:

  • text: o nome da sala.
  • language: um código de idioma de duas letras. Por exemplo, fr.

Use um elemento <Text> separado para cada idioma em que o anúncio ou link sem custo financeiro para reserva pode aparecer (com valores diferentes para os atributos language).

O exemplo a seguir mostra as versões em francês e inglês do nome da sala:

<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Optional integer O número máximo de hóspedes para o qual uma sala se destina. Por exemplo, uma suíte grande pode acomodar fisicamente seis hóspedes (capacidade = 6), mas se destina apenas a até quatro pessoas.

Esse valor precisa ser menor ou igual ao elemento <Capacity>, que é o número de pessoas que o quarto pode acomodar fisicamente.

O valor de <Occupancy> precisa ser um número inteiro positivo entre 1 e 99.

<Occupancy> pode ser acompanhado por <OccupancyDetails>, que especifica o tipo de hóspedes (adultos ou crianças). Consulte <OccupancyDetails> para conferir a sintaxe e a descrição dos elementos filhos.

<OccupancySettings> Optional Object Configurações que podem restringir ou modificar os requisitos de ocupação de um quarto.

O elemento <OccupancySettings> usa os seguintes elementos filhos:

  • <MinOccupancy>: o número mínimo de hóspedes que podem ficar em um quarto. Por exemplo, se o número for definido como 2, essa sala não poderá ser reservada para uma única pessoa.

    O valor de <MinOccupancy> precisa ser um número inteiro positivo entre 1 e 99.

  • <MinAge>: a idade mínima de todos os hóspedes em um quarto. Por exemplo, se o dispositivo estiver definido como 18, essa sala só poderá ser reservada para grupos em que todos os convidados sejam maiores de 18 anos.

    O valor de <MinAge> precisa ser um número inteiro positivo entre 0 e 99.

<OccupancySettings>
  <MinOccupancy>2</MinOccupancy>
  <MinAge>16</MinAge>
</OccupancySettings>

Nem todos os elementos filhos precisam ser incluídos.

<PhotoURL> Optional Object Um URL e uma legenda opcional para uma foto do quarto ou da Categoria de quarto. Você pode especificar mais de um <PhotoURL> para um quarto ou Categoria de quarto. Cada URL de foto precisa estar no próprio <PhotoURL>.

Esse elemento tem os seguintes elementos-filhos:

  • <URL>: especifica o local da foto. O local precisa ser público (não protegido por firewall) e incluir o protocolo (por exemplo, https://). Use apenas um <URL> por <PhotoURL>.
  • <Caption>: define a legenda da foto. Esse elemento tem somente um elemento filho, <Text>, que tem dois atributos obrigatórios: text e language. O atributo text é a legenda, e o atributo language especifica um código de idioma de duas letras, como en.

Exemplo:

<PhotoURL>
  <URL>https://www.example.com/static/bar/image1234.jpg</URL>
  <Caption>
    <Text text="A bright and breezy way to enjoy your mornin'
      cuppa tea." language="en"/>
    <Text text="Une façon lumineuse et aérée pour profiter
      de votre journée tasse de thé." language="fr"/>
  </Caption>
</PhotoURL>
<PhotoURL>
  <URL>https://www.foo.com/static/bar/image5678.jpg</URL>
  <Caption>
    <Text text="Or, perhaps you prefer coffee." language="en"/>
    <Text text="Ou peut-être préférez-vous le café." language="fr"/>
  </Caption>
</PhotoURL>
<RoomFeatures> Optional <RoomFeatures> Contém informações sobre as funcionalidades do quarto.
<RoomID> Required string O código exclusivo do quarto. Use esse ID para corresponder os dados do quarto aos blocos <Result> nas atualizações de preço. Para mais informações, consulte Metadados da Pacote de quarto. Você também pode usar esse código para referenciar uma definição comum de quarto em uma única Mensagem de transação ao definir dados do quarto inline.

Exemplos

Dados do quarto

O exemplo a seguir define os dados do quarto:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>5440OF</RoomID>
      <Name>
        <Text text="Single King Bed Room" language="en"/>
        <Text text="Simple Lit de Roi" language="fr"/>
      </Name>
      <Description>
        <Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
          and down comforters (bedspreads). City view. 300 square feet. Desk with
          rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
          complimentary HBO and pay movies." language="en"/>
        <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Bathroom View" language="en"/>
          <Text text="La salle de baines" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Capacity>4</Capacity>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Metadados de quartos e pacotes

O exemplo a seguir define metadados de quartos e pacotes:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Várias categorias de quarto

O exemplo abaixo define metadados de quartos e pacotes para vários Rooms Bundles:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
        <Text text="Chambre simple" language="fr"/>
      </Name>
      <Description>
        <Text text="A single room" language="en"/>
        <Text text="Le chambre simple" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name>
        <Text text="Double room" language="en"/>
        <Text text="Chambre double" language="fr"/>
      </Name>
      <Occupancy>1</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
        <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Continental Breakfast" language="en"/>
        <Text text="Petit déjeuner continental" language="fr"/>
      </Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name>
        <Text text="Nonrefundable" language="en"/>
        <Text text="Non remboursable" language="fr"/>
      </Name>
      <Description>
        <Text text="Blah blah blad" language="en"/>
        <Text text="Le blah blah blad" language="fr"/>
      </Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<RoomFeatures>

Define os recursos encontrados na sala.

O elemento <RoomFeatures> aparece no seguinte local na hierarquia XML da Mensagem de transação:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
            + <RoomFeatures>

Sintaxe

O elemento <RoomFeatures> usa a seguinte sintaxe:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    ...
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
        <Beds>
           <Bed size="[single|semi_double|double|queen|king]">
             <Width unit="cm" number="width"/>
             <Length unit="cm" number="length"/>
           </Bed>
           <!-- Include with any additional beds. -->
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>[shared|private]</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>[smoking|non_smoking]</Smoking>
        <BathAndToilet relation="[together|separate]">
          <Bath bathtub="[false|true]" shower="[false|true]"/>
          <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <!-- (Optional) Defines the type of views from the room. -->
          <!-- Example: <OceanView/> -->
        </Views>

      </RoomFeatures>
      ...
    </RoomData>
    ...
  </PropertyDataSet>
</Transactions>

Atributos

O elemento <RoomFeatures> não tem atributos.

Elementos filhos

O elemento <RoomFeatures> tem os seguintes elementos filhos:

Elemento filho Obrigatório? Tipo Descrição
<JapaneseHotelRoomStyle> Optional enum

Indica o estilo de um quarto de hotel japonês.

Os valores válidos são:

  • western: um quarto em estilo ocidental com camas.
  • japanese: quarto em estilo japonês com camas de futon.
  • japanese_western: um quarto em estilo ocidental japonês com camas em estilo ocidental e futons em estilo japonês.
<Beds> Optional Object Contém a quantidade de <Bed> que a sala tiver. Observe que futons japoneses não devem ser contabilizados aqui.

Cada <Bed> tem os seguintes atributos:

  • size (opcional): os valores válidos são single, semi_double, double, queen e king.
Cada <Bed> tem os seguintes elementos filhos:
  • <Width> (opcional): especifica a largura da cama. Precisa ter o atributo unit com o valor cm e o atributo number com a largura da cama em centímetros inteiros.
  • <Length> (opcional): especifica o comprimento da cama. Precisa ter o atributo unit com o valor cm e o atributo number com o comprimento da cama em centímetros inteiros.
Exemplo:
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
<Suite> Optional empty Forneça esse elemento quando o quarto for uma suíte.
<Capsule> Optional empty Forneça esse elemento quando o quarto for um quarto-cápsula.
<Roomsharing> Optional enum Se a sala é compartilhada com outros ocupantes, como proprietários ou outros convidados. Os valores válidos são: shared e private.
<Outdoor> Optional empty Forneça esse elemento quando esta sala for uma hospedagem externa sem paredes fixas, encanamento e controle de temperatura. Por exemplo, os quartos do hotel não são acomodações ao ar livre, enquanto acampamentos em que os hóspedes ficam em barracas e parques para trailers onde os hóspedes trazem seu próprio trailer são acomodações ao ar livre.
<MobilityAccessible> Optional empty Forneça este elemento quando a sala tiver acessibilidade.
<Smoking> Optional enum Se este quarto é uma sala para não fumantes ou uma sala para fumantes. Os valores válidos são non_smoking e smoking.
<BathAndToilet> Optional Object Contém informações sobre uma banheira e o banheiro no quarto.

O atributo é:

  • relation (opcional): indica como a banheira e o vaso sanitário são colocados um contra o outro. Os valores válidos são together (o banheiro e o vaso sanitário estão localizados no mesmo quarto, por exemplo, banheiro) lado a lado) e separate (banheiro e vaso sanitário têm espaços dedicados). Esse atributo não pode ser definido quando o quarto não tem banheiros e banheiros.

O elemento pode ter os seguintes elementos-filhos:

  • <Bath> (opcional): a existência desse elemento indica que o quarto tem uma banheira.

    Os atributos são:

    • bathtub (opcional): indica que a banheira tem uma banheira. Os valores válidos são 0 (ou false) e 1 (ou true).
    • shower (opcional): indica que a banheira tem chuveiro. Os valores válidos são 0 (ou false) e 1 (ou true).
  • <Toilet> (opcional): a existência desse elemento indica que o quarto tem um banheiro.

    Os atributos são:

    • electronic_bidet (opcional): indica que o banheiro tem um bide eletrônico. Os valores válidos são 0 (ou false) e 1 (ou true).
    • mobility_accessible (opcional): indica que o banheiro é acessível por mobilidade. Os valores válidos são 0 (ou false) e 1 (ou true).

Exemplo:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath> Optional empty Forneça este elemento quando este quarto tiver uma banheira privativa ao ar livre.
<AirConditioning> Optional empty Forneça este elemento quando o quarto tiver ar-condicionado.
<Balcony> Optional empty Forneça este elemento quando a sala tiver uma varanda ou varanda.
<Views> Optional Object As opções válidas incluem:

<AirportView/>
<BayView/>
<BeachView>/>
<CastleView/>
<CityView/>
<CountrysideView/>
<CourtyardView/>
<DuneView/>
<ForestView/>
<GardenView/>
<GolfCourseView/>
<HarborView/>
<LagoonView/>
<LakeView/>
<MarinaView/>
<MountainView/>
<NatureView/>
<OceanView/>
<ParkView/>
<PartialOceanView/>
<PisteView/>
<PoolView/>
<PyramidView/>
<RiverView/>
<StreetView/>

Exemplos

JapaneseHotelRoomStyle não tem um valor padrão. Omitir um valor não resulta em um erro XML, mas a listagem não aparece nos resultados da pesquisa quando o usuário filtra por estilo de quarto ou camas.

Duas camas de solteiro

O exemplo abaixo mostra como usar <RoomFeatures>:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two single beds -->
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>private</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>non_smoking</Smoking>
        <BathAndToilet relation="separate">
          <Bath bathtub="1" shower="1"/>
          <Toilet electronic_bidet="1" mobility_accessible="1"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <LakeView/>
          <MarinaView/>
          <BeachView/>
          <ForestView/>
          <MountainView/>
          <NatureView/>
        </Views>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Duas camas de casal

Confira a seguir um exemplo de quarto japonês no estilo western com duas camas double.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two double beds-->
          <Bed size="double"></Bed>
          <Bed size="double"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>


Estilo japonês sem cama

Confira a seguir um exemplo de um quarto em estilo japonês sem cama. As informações sobre a cama não são necessárias para o quarto no estilo japanese.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Faroeste japonês com cama

Confira a seguir um exemplo de um quarto no estilo japanese_western com uma cama king.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
        <Beds>
          <Bed size="king"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Se o parceiro não tiver o número de informações sobre as camas nos quartos do japanese_western, siga o exemplo abaixo:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

<PackageData>

Define metadados independentes do itinerário sobre Categorias de quarto para uma propriedade. Esse elemento contém informações associadas a um parceiro e um hotel, mas não a um itinerário. O objetivo é definir todos os dados sem itinerário uma vez e referenciá-los com base nos dados de itinerário.

O elemento <PackageData> aparece no seguinte local na hierarquia XML da Mensagem de transação:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

O elemento <PackageData> é semelhante a <RoomData>, mas descreve os recursos e termos de tarifa que não fazem parte da descrição física do quarto. Use <RoomData> e <PackageData> em combinação para fornecer detalhes sobre Categorias de quarto e recursos de tarifa. Para salas individuais que não fazem parte de um pacote, use apenas <RoomData>.

Você pode definir os elementos <RoomData> e <PackageData> para a mesma sala ou Categoria de quarto. Quando o Google exibir esse quarto ou pacote nos resultados da pesquisa, ele incluirá as descrições de ambos, separadas por um hífen.

Se você atualizar um único elemento <PackageData> para uma propriedade, atualize todos os elementos <PackageData> e <RoomData> da propriedade. Cada <PropertyDataSet> é considerado como todos os dados sobre a propriedade e substitui os dados existentes.

Para mais informações, consulte Metadados da Categoria de quarto.

Sintaxe

O elemento <PackageData> usa a seguinte sintaxe:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    <PackageData>
      <PackageID>package_ID</PackageID>
      <Name>
        <Text text="package_name" language="language_code"/>
        ...
      </Name>
      <Description>
        <Text text="package_description" language="language_code"/>
        ...
      </Description>
      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails><!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
      <!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>
      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      ...
      <Meals>
        <Breakfast
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
        <Dinner
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
      </Meals>
      <CheckinTime>checkin_time</CheckinTime>
      <CheckoutTime>checkout_time</CheckoutTime>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Special Rewards">
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum">
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <!-- a PackageID with a MilesIncluded rate feature -->
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
       <Text text="Room with Bundled Miles" language="en">
      </Name>
      <ChargeCurrency>hotel </ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>1000 </NumberOfMiles>
        <Provider>
          <Text language="en" text="United Airlines">
        </Provider>
      </MilesIncluded>
    </PackageData>
    ...
    ...
  </PropertyDataSet>
  ...
</Transaction>

Atributos

O elemento <PackageData> não tem atributos.

Elementos filhos

O elemento <PackageData> tem os seguintes elementos filhos:

Elemento filho Obrigatório? Tipo Descrição
<BreakfastIncluded> Optional boolean Especifica se o pacote inclui café da manhã com a tarifa. Os valores válidos são 0 (ou false) e 1 (ou true).

É preferível usar <Meals> em vez de <BreakfastIncluded>.

<ChargeCurrency> Optional enum Quando e onde o usuário paga por uma reserva. Esse elemento usa a mesma sintaxe de <ChargeCurrency> em um <Result>.

O valor padrão é web.

<CheckinTime> Optional Time Horário de check-in mais cedo possível. O horário precisa ser menor que 24h no horário local do hotel.
<CheckoutTime> Optional Time Horário de check-out mais recente possível no horário local do hotel.
<Description> Optional Object Uma descrição detalhada do pacote. Esse elemento precisa conter informações não descritas por outros elementos ou pelo elemento <Name>. Não use todas as letras maiúsculas ao especificar a descrição do quarto.

O elemento <Description> usa um único elemento filho, <Text>, que tem dois atributos obrigatórios, text e language. O atributo text é a descrição, e o atributo language especifica um código de idioma de duas letras, como mostrado no exemplo a seguir:

<Description>
  <Text text="Two breakfast buffet certificates for
    each night of stay." language="en"/>
  <Text text="Deux certificats petit-déjeuner buffet
    pour chaque nuit de séjour." language="fr"/>
</Description>
<InternetIncluded> Optional boolean Se um pacote inclui acesso à Internet sem custos financeiros, enquanto outros pacotes não incluem essa comodidade. Não defina este elemento para Categorias de quarto em um hotel que oferece Internet gratuita para todos os quartos. Este elemento não se aplica à Internet com fio ou à Internet sem fio no quarto que não está disponível nos quartos de hóspedes. Os valores válidos são 0 (ou false) e 1 (ou true).
<Meals> Optional Object Contém informações sobre as refeições neste pacote.

O elemento <Meals> usa dois elementos filhos opcionais, <Breakfast> e <Dinner>, que têm os seguintes atributos:

  • included (obrigatório): defina como 1 (ou true) se a tarifa incluir café da manhã/jantar. Caso contrário, defina como 0 ou false.
  • in_room (opcional): defina como 1 (ou true) se os hóspedes tiverem a opção de tomar café da manhã/jantar no quarto em que se hospedam. Caso contrário, defina como 0 (ou false).
  • in_private_space (opcional): defina como 1 (ou true) se os hóspedes tiverem a opção de tomar café da manhã/jantar em um espaço (exceto no quarto em que se hospedam), onde possam evitar contato com outros hóspedes. Caso contrário, defina como 0 (ou false).
  • buffet (opcional): defina como 1 (ou true) se o café da manhã/jantar for servido como buffet. Caso contrário, defina como 0 (ou false).

Os atributos opcionais são usados somente quando included é verdadeiro.

Para que os filtros de refeições (no meals, breakfast only, dinner only e breakfast and dinner) funcionem, <Breakfast> e <Dinner> precisam ser fornecidos com o atributo included.

<Name> Required string O nome do pacote. Esse valor precisa corresponder ao que aparece na página de destino do hotel. Não defina o valor desse elemento com todas as letras maiúsculas.

Esse elemento tem um único elemento filho, <Text>, que tem dois atributos, text e language. O atributo text é a descrição, e o atributo language especifica um código de idioma de duas letras, conforme o exemplo a seguir:

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer O número máximo de hóspedes para o qual uma Categoria de quarto se destina. Por exemplo, uma suíte grande pode acomodar fisicamente 6 hóspedes, mas se destina apenas a até 4 hóspedes.

Esse valor precisa ser menor ou igual ao elemento <Capacity>, que é o número de pessoas que o quarto pode acomodar fisicamente.

O valor de <Occupancy> precisa ser um número inteiro positivo entre 1 e 99.

Se você especificar esse elemento em <RoomBundle> e <PackageData>, o valor em <RoomBundle> terá precedência.

Observação:

<Occupancy> pode ser acompanhado por <OccupancyDetails>,que especifica o tipo de convidados (adultos ou crianças). Consulte <OccupancyDetails> para ver a sintaxe e a descrição dos elementos filhos.

<PackageID> Required string O ID exclusivo do pacote. Use esse ID para corresponder os dados da Categoria de quarto aos blocos <Result> nas atualizações de preço. Para ver mais informações, consulte Metadados da Pacote de quarto.

Você também pode usar esse código para fazer referência a uma definição comum de Categoria de quarto usada em uma única Mensagem de transação ao definir os dados de Categoria de quarto in-line.

<ParkingIncluded> Optional boolean Se uma Categoria de quarto inclui estacionamento sem custos financeiros em que o estacionamento seria um serviço pago neste hotel. Não especifique um valor para esse elemento em um hotel que oferece estacionamento gratuito.

Os valores válidos são 0 (ou false) e 1 (ou true). O valor padrão é false.

<PhotoURL> Optional Object O mesmo que <PhotoURL> em <RoomData>, mas para o pacote (por exemplo, fotos de refeições).
<Refundable> Optional Object Permite listar uma tarifa como totalmente reembolsável ou fornecer um cancelamento sem custo financeiro. Se não for fornecido, nenhuma informação sobre um reembolso será exibida. Uma política de reembolso no nível <PackageData> substitui a política no nível <Result>. Uma política de reembolso no nível <Rates> substitui a política no nível <PackageData>. Os preços reembolsáveis também podem ser destacados aos usuários por opções alternativas sem modificar diretamente o esquema da mensagem de transação. Saiba mais sobre essas opções aqui.

O exemplo a seguir mostra o elemento <Refundable> com todos os atributos definidos:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

Observação:recomendamos configurar todos os atributos. Uma mensagem de aviso de status do feed é gerada quando um ou mais atributos não estão definidos.

Se você não definir nenhum atributo, a taxa não vai aparecer como reembolsável. Os atributos são:

  • available: (obrigatório) defina como 1 ou true para indicar se a taxa permite um reembolso total. Caso contrário, defina como 0 ou false.
  • refundable_until_days: (obrigatório se available for true). Especifica o número de dias antes do check-in para que um reembolso total possa ser solicitado. O valor de refundable_until_days precisa ser um número inteiro entre 0 e 330.
  • refundable_until_time: altamente recomendado se available for true. Especifica a última hora do dia, 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.

    O valor desse atributo usa o formato Time.

Ao definir os atributos, observe o seguinte:

  • Se available ou refundable_until_days não estiverem definidos, a tarifa não será exibida como reembolsável.
  • Se available for 0 ou false, os outros atributos serão ignorados. A taxa não é mostrada como reembolsável, mesmo que um ou ambos os outros atributos estejam definidos.
<MembershipBenefits Included> Optional boolean A tarifa inclui os benefícios do status elite para a duração da estadia. Inclui os seguintes parâmetros:
  • ProgramName: nome do programa de status de elite
  • ProgramLevel: nível do programa, por exemplo, "Ouro".
  • NightlyValue (optional): valor dos benefícios por noite.
<CarRentalIncluded> Optional boolean A tarifa inclui aluguel sem custo financeiro de carro para a duração da estadia.
<MilesIncluded>> Optional boolean A tarifa inclui milhas do programa de milhagem. Os parâmetros incluem:
  • NumberofMiles: número de milhas por itinerário.
  • Provider: oferece milhas do programa de milhagem.
<OnPropertyCredit> Optional boolean A tarifa inclui crédito no local (F&B, resort, spa etc.). Parâmetro:
  • Amount: o valor do crédito por itinerário, na moeda local.
<AirportTransportationIncluded> Optional Object A tarifa inclui transporte sem custo financeiro de/para um aeroporto próximo. O atributo opcional direction especifica a direção do transporte. Os valores válidos incluem:
    from: o transporte é oferecido do aeroporto até a propriedade. Esse será o valor padrão se nenhuma direção for especificada. to: o transporte para o aeroporto é fornecido a partir da propriedade. round_trip: o transporte é fornecido de e para o aeroporto.

Exemplos

Categoria de quarto individual

O exemplo a seguir define uma única Categoria de quarto, com uma ocupação de duas (um adulto e uma criança) e inclui café da manhã:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>1</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <PackageID>P54321</PackageID>
      <Name>
         <Text text="Breakfast Included" language="en"/>
         <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Two certificates for continental
          breakfast will be provided." language="en"/>
        <Text text="Deux certificats pour le petit déjeuner
          continental seront fournis." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Metadados de quartos e pacotes

O exemplo a seguir define metadados de quartos e pacotes:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Várias categorias de quarto

O exemplo abaixo define metadados de quartos e pacotes para vários Rooms Bundles:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
        <Text text="Chambre simple" language="fr"/>
      </Name>
      <Description>
        <Text text="A single room" language="en"/>
        <Text text="Le chambre simple" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name>
        <Text text="Double room" language="en"/>
        <Text text="Chambre double" language="fr"/>
      </Name>
      <Occupancy>1</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
        <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Continental Breakfast" language="en"/>
        <Text text="Petit déjeuner continental" language="fr"/>
      </Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name>
        <Text text="Nonrefundable" language="en"/>
        <Text text="Non remboursable" language="fr"/>
      </Name>
      <Description>
        <Text text="Blah blah blad" language="en"/>
        <Text text="Le blah blah blad" language="fr"/>
      </Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>


Categoria de quarto com diárias

O exemplo a seguir define metadados de quartos e pacotes para uma categoria de quarto com características de tarifa:

<Transaction timestamp="2010-04-24T20:44:56-04:00" id="TXNID">
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
     ...
    </RoomData>
<!-- definitions of PackageData types including rate features -->
    <PackageData>
      <PackageID>room_with_addl_benefits</PackageID>
      <Name>
        <Text text="Acme Hotels 2017 Promotion Package" language="en"/>
      </Name>
      <ChargeCurrency>hotel</ChargeCurrency>
      <BreakfastIncluded>1</BreakfastIncluded>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Marriott Rewards"/>
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum"/>
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
        <Text text="Room with Bundled Miles" language="en"/>
      </Name>
      <ChargeCurrency>hotel</ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>1000</NumberOfMiles>
        <Provider>
          <Text language="en" text="United Airlines"/>
        </Provider>
      </MilesIncluded>
      <AirportTransportationIncluded direction="from"/>
    </PackageData>
  </PropertyDataSet>

<!-- The actual list of prices -->
  <Result>
…
  </Result>
</Transaction>

Refeições e fotos

O exemplo a seguir define metadados de quartos e pacotes para refeições, fotos e horários de check-in e check-out:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <!-- Guests can choose to have breakfast in their room or in another
        space to avoid contact with other guests. -->
        <Breakfast included="1" in_room="1" in_private_space="1"/>
        <Dinner included="1" buffet="1"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Café da manhã

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <Breakfast included="true"/>
        <!-- Dinner not included needs to be explicitly specified -->
        <Dinner included="false"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<Result>

Um contêiner para atualizações de preço e disponibilidade em uma mensagem <Transaction>.

O elemento <Result> aparece no seguinte local na hierarquia XML da Mensagem de transação:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Use <Result> para definir ou atualizar os preços dos quartos e definir o inventário disponível. Os itens definidos nesse elemento geralmente fazem referência a metadados independentes de itinerário sobre um quarto ou pacote (como uma descrição ou conjunto de comodidades) definidos em <PackageData> e <RoomData>.

Você envia mensagens de transação com atualizações de preço com muita frequência. A forma exata e com que frequência você faz isso depende do seu modo de transferência.

É possível usar <Result> em uma Mensagem de transação para remover itinerários, conforme descrito em Como remover inventário. Para mais informações sobre como usar Mensagens de transação para atualizar preços e disponibilidade, consulte Como adicionar e atualizar inventário.

Uma única mensagem de transação pode incluir qualquer número de elementos <Result>, desde que o tamanho da mensagem não exceda 100 MB.

Sintaxe

O elemento <Result> usa a seguinte sintaxe:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    <!-- Required -->
    <Property>hotel_ID</Property>
    <!-- Required -->
    <Checkin>YYYY-MM-DD</Checkin>
    <!-- Required -->
    <Nights>number_of_nights</Nights>

    <Baserate currency="currency_code">price</Baserate>
    <!-- Only required when <Baserate> contains a real price -->
    <Tax currency="currency_code">tax_amount</Tax>
    <!-- Only required when <Baserate> contains a real price  -->
    <OtherFees currency="currency_code">fee_amount</OtherFees>
    <Refundable available="[false|true]" refundable_until_days="number_of_days"
      refundable_until_time="time"/>

    <RoomID>room_ID</RoomID>
    <PackageID>package_ID</PackageID>
    <ExpirationTime>expiration_time</ExpirationTime>
    <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>

    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <!-- For Baserate, occupancy value must be greater than or equal to 2.
         If a value is not provided for occupancy, it defaults to 2. -->
    <OccupancyDetails>occupancy_info</OccupancyDetails>

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

    <AllowablePointsOfSale>
      <PointOfSale id="landing_page_identifier"/>
      ...
    </AllowablePointsOfSale>

    <Custom[1-5]>custom_value</Custom[1-5]>
  </Result>
  ...
  </Transaction>

Atributos

O elemento <Result> tem os seguintes atributos:

Atributo Obrigatório? Tipo Descrição
mergeable Optional boolean Por padrão, os novos preços de um hotel e um par de itinerários específicos vão substituir os valores anteriores (não expirados) presentes no cache do Google. O atributo mesclável permite armazenar preços adicionais no cache do Google sem excluir as informações de preços anteriores. A consulta de preços em tempo real com respostas de contexto sempre terá esse atributo definido como true, seja qual for a resposta da mensagem de transação.

Elementos filhos

O elemento <Result> tem os seguintes elementos filhos:

Elemento filho Obrigatório? Tipo Descrição
<AllowablePointsOfSale> Optional Object Uma ou mais páginas de destino qualificadas para o hotel. Uma página de destino é um site que pode lidar com o processo de reserva para o usuário final. Para incluir explicitamente determinadas páginas de destino (e excluir outras), adicione um ou mais elementos <AllowablePointsOfSale> que correspondam ao atributo id do elemento <PointOfSale> no arquivo de páginas de destino.

Se você não incluir esse elemento, todas as páginas de destino definidas no arquivo serão consideradas qualificadas para reserva do quarto. Para mais informações, consulte Sintaxe de arquivo das páginas de destino.

<Baserate> Optional float Preço do quarto para a estadia. O valor desse elemento precisa refletir o seguinte:

  • Para um quarto privativo, defina a tarifa mais barata de ocupação dupla que você oferece.
  • Para um quarto compartilhado, deixe o campo em branco e use <RoomBundle>.
  • A duração total da estadia, não a tarifa média por diária.

Quando o quarto não estiver disponível para o itinerário, será necessário omitir ou definir <Baserate> como -1 e especificar <Unavailable> com os motivos conhecidos da indisponibilidade.

Para remover uma Categoria de quarto, siga as instruções em Remover uma Categoria de quarto.

O <Baserate> não pode conter nenhum símbolo de agrupamento de dígitos, como vírgula (,) ou ponto (.). Sempre separe frações usando um ponto (.) como separador decimal. Por exemplo, represente US $1.200,40 como:

<Baserate currency="USD">1200.40</Baserate>

O elemento <Baserate> usa os seguintes atributos opcionais:

  • all_inclusive: um booleano que indica se essa taxa inclui tributos e taxas. Em geral, defina esse valor como false para usuários finais dos EUA e Canadá e forneça valores para os elementos <Tax> e <OtherFees>. Se você usar preços all-inclusive, talvez não se qualifique para aparecer nas listagens caso seus preços não separem tributos e taxas para usuários dos EUA e do Canadá.

    Para todos os outros usuários finais, normalmente você inclui tributos e taxas na tarifa básica e define o valor do atributo all_inclusive como true. Para mais informações, consulte a Política de tributos e taxas.

    O valor padrão é false.

  • currency: o código da moeda com três letras. Por exemplo, USD para dólares americanos.
<ChargeCurrency> Optional enum Quando e onde o usuário paga por uma reserva. Este elemento pode ser usado em uma Mensagem de transação no elemento <Result> para o Preço do hotel ou o bloco <PackageData> para uma Categoria de quarto.

Os valores válidos são:

  • web: a cobrança é feita on-line no momento da reserva. Esse é o valor padrão. A página de destino real é definida pelo arquivo da página de destino e pode ser afetada pela moeda, localização, idioma do usuário ou outros fatores.
  • hotel: o usuário é cobrado ao fazer check-in no hotel. Caso o pagamento precise ser feito sempre na moeda do hotel, defina o valor de <ChargeCurrency> como hotel. A moeda do usuário não é afetada pela página de destino real.
  • deposit: parte da cobrança é feita imediatamente e o restante é cobrado mais tarde, normalmente quando o usuário faz check-out no hotel.
  • installments: o usuário é cobrado com uma fração inicial do valor total devido e precisa pagar regularmente um saldo fixo durante um período fixo.

O valor padrão é web.

<Checkin> Required Date A data de check-in de um itinerário no formato Date. A combinação dos elementos <Nights> e <Checkin> forma um itinerário.
<Custom[1‑5]> Optional string Define um campo personalizado que você pode usar para transmitir dados adicionais associados a um hotel. É possível transmitir até cinco valores personalizados com os seguintes nomes de elementos:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

Os elementos <Custom> permitem transmitir dados arbitrários. Por exemplo, especifique um valor nesse campo que será usado pelo arquivo das páginas de destino para criar um URL personalizado para uma página de destino. Há um limite de 200 caracteres por campo personalizado. Para mais informações, consulte Arquivos da página de destino.

Elementos <Custom> fornecidos no elemento <Rate> não são herdados para o elemento <RoomBundle>. Você precisa definir o atributo <Custom> separadamente em cada <RoomBundle>.

<ExpirationTime> Optional DateTime É a data e a hora em que o preço é considerado expirado (no mínimo três horas).

Recomendamos que você não forneça carimbos de data/hora de expiração se isso não for essencial para a estrutura de preços.

O Google não veicula preços vencidos, e qualquer itinerário com preço vencido se torna qualificado para as consultas de preço em tempo real.

<Nights> Required integer O número de noites de um itinerário. O valor do elemento <Nights> precisa ser um número inteiro positivo. A combinação de <Nights> e <Checkin> forma um itinerário.
<OtherFees> Optional float Taxas diferentes da tarifa básica e tributos que influenciam o preço final de um quarto. O elemento <OtherFees> usa um único atributo obrigatório, currency, que define o código da moeda de três letras para as taxas. Por exemplo, USD.

O elemento <OtherFees> será obrigatório se <Baserate> for maior que zero.

<Occupancy> Optional integer Especifica o número máximo de ocupantes. Quando <Occupancy> aparece abaixo de <Result>, é necessário especificar 2 ou mais. <Occupancy> pode estar acompanhado por <OccupancyDetails>, que especifica o tipo de convidado (adultos ou crianças). Consulte <OccupancyDetails> para ver a sintaxe e a descrição dos elementos filhos. Se o elemento <Occupancy> não for fornecido, a ocupação será definida como 2 como padrão.

Observação: entre em contato com sua equipe de suporte para ativar o recurso de envio de preços para ocupações além de dois hóspedes.

<PackageID> Optional string O ID exclusivo do pacote para fazer o mapeamento para dados de pacote predefinidos. Também é usado para preencher a variável de página de destino PACKAGE-ID. Para ver mais informações, consulte Metadados da Pacote de quarto.
<Property> Required string O ID de um hotel afetado pelos dados associados (preço, itinerário, Categoria de quarto ou metadados). O valor desse elemento precisa ser uma string. O valor desse elemento precisa corresponder ao <id> da listagem que você definiu no seu Feed de lista de hotéis.
<Rates> Optional <Rates> Um contêiner para um ou mais blocos <Rate>. Cada <Rate> em <Rates> define um preço diferente para a combinação de quarto/itinerário.

Use o elemento <Rates> somente quando houver várias tarifas para a mesma combinação de quarto/itinerário. Por exemplo, você define várias tarifas para tarifas condicionais, tarifas exclusivas ou tarifas condicionais em Categorias de quarto.

<Refundable> Optional Object Permite listar uma tarifa como totalmente reembolsável ou fornecer um cancelamento sem custo financeiro. Se não for fornecido, nenhuma informação sobre um reembolso será exibida. Uma política de reembolso no nível <PackageData> substitui a política no nível <Result>. Uma política de reembolso no nível <Rates> substitui a política no nível <PackageData>. Os preços reembolsáveis também podem ser destacados aos usuários por opções alternativas sem modificar diretamente o esquema da mensagem de transação. Saiba mais sobre essas opções aqui.

O exemplo a seguir mostra o elemento <Refundable> com todos os atributos definidos:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

Observação:recomendamos configurar todos os atributos. Uma mensagem de aviso de status do feed é gerada quando um ou mais atributos não estão definidos.

Se você não definir nenhum atributo, a taxa não vai aparecer como reembolsável. Os atributos são:

  • available: (obrigatório) defina como 1 (ou true) para indicar se a taxa permite um reembolso total. Caso contrário, defina como 0 (ou false).
  • refundable_until_days: (obrigatório se available for true). Especifica o número de dias antes do check-in para que um reembolso total possa ser solicitado. O valor de refundable_until_days precisa ser um número inteiro entre 0 e 330.
  • refundable_until_time: altamente recomendado se available for true. Especifica a última hora do dia, 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.

    O valor desse atributo usa o formato Time.

Ao definir os atributos, observe o seguinte:

  • Se available ou refundable_until_days não estiverem definidos, a tarifa não será exibida como reembolsável.
  • Se available for 0 (ou false), os outros atributos serão ignorados. A taxa não é mostrada como reembolsável, mesmo que um ou ambos os outros atributos estejam definidos.
<RoomBundle> Optional <RoomBundle> Um contêiner com informações sobre descrições físicas com preço de um quarto, qualquer embalagem de comodidades e alguns detalhes da política de compra do hotel e itinerário.

Em geral, use esse elemento para definir o preço do quarto base e diferentes tipos de quarto na mesma propriedade. Embora seja possível definir descrições de Categoria de quarto in-line, você precisa usar uma Mensagem de transação separada para definir essas informações. O Google armazenará os metadados para que você possa referenciá-los, em vez de repeti-los, em todas as atualizações de preços futuras.

<RoomID> Optional string O código exclusivo do quarto para mapear os dados predefinidos. Também é usado para preencher a variável de página de destino PARTNER-ROOM-ID. Para ver mais informações, consulte Metadados da Pacote de quarto.
<Tax> Optional float Os tributos calculados para o preço final de um quarto. O elemento <Tax> usa um único atributo obrigatório, currency, que define o código de moeda de três letras dos tributos. Por exemplo, USD. O elemento <Tax> será obrigatório se <Baserate> for maior que zero.
<Unavailable> Optional Object Indica que o itinerário não está disponível para reserva. Serve como um contêiner para motivos mais detalhados da indisponibilidade do itinerário. Um ou mais dos seguintes motivos de indisponibilidade podem estar aninhados abaixo da tag <Unavailable>:
  • <NoVacancy/>: não há mais quartos disponíveis para venda para uma ou mais noites da estadia.
  • <MinNightStay value=N/>: o itinerário estava abaixo da estadia mínima de N para as datas da estadia.
  • <MaxNightStay value=N/>: o itinerário estava acima da estadia máxima de N para as datas da estadia.
  • <MinAdvancePurchase value=N/>: o itinerário estava abaixo da janela mínima de reserva futura de N para as datas da estadia.
  • <MaxAdvancePurchase value=N/>: o itinerário estava acima da janela de reserva futura máxima de N para as datas da estadia.
  • <ClosedToArrival/>: a propriedade não permite check-in na data de chegada do itinerário.
  • <ClosedToDeparture/>: a propriedade não permite check-out na data de partida do itinerário.
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>: a propriedade está fechada para toda a estadia ou parte dela. Os atributos recomendados first_open e first_closed especificam as primeiras datas maiores ou iguais à data de chegada em que a propriedade está aberta ou fechada, respectivamente. Para uma propriedade que fecha após a data de chegada, first_open precisa ser igual à data de chegada, e first_closed deve ser a data em que a propriedade fecha. Para uma propriedade fechada na data de chegada, first_closed precisa ser igual à data de chegada, e first_opened precisa ser a próxima data em que a propriedade estiver aberta.
  • <NotFetched/>: um preço para o itinerário não foi fornecido pelas fontes de dados downstream.
  • <InvalidProperty/>: o identificador de propriedade solicitado não foi reconhecido.
  • <InvalidOccupancy/>: a ocupação solicitada não é aceita pela propriedade.
  • <PriceIssue/>: um problema com o preço fez com que ele não fosse enviado.
  • <InternalError reason=""/>: ocorreu um erro não enumerado. Um atributo opcional de motivo pode informar o erro como texto.
  • <OtherRestriction restriction=""/>: o itinerário não estava disponível devido a alguma restrição de reserva não enumerada. O atributo de restrição opcional permite relatar a restrição como texto.

Exemplos

Exemplo de várias propriedades

O exemplo a seguir define um itinerário e o preço dele para duas propriedades:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
  </Result>
</Transaction>

Esse exemplo não mostra detalhes sobre o quarto, como descrição, imagem, legenda, o nome e a capacidade do quarto.

Você pode definir essas informações uma vez em uma mensagem de transação separada que o Google armazena. Assim, você poderá fazer referência a ele em todas as atualizações de preços e inventário subsequentes. Para ver mais informações, consulte Metadados de Pacote de quarto.

Exemplo de várias taxas

O exemplo a seguir define um único itinerário e uma propriedade com várias tarifas para diversas ocupações. O elemento <Rates> pode ser usado para fornecer preços de várias taxas para uma propriedade específica. O exemplo abaixo também é útil para propriedades de aluguel por temporada (VR, na sigla em inglês).

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2021-01-13</Checkin>
    <Nights>9</Nights>
    <Baserate currency="USD">3196.1</Baserate>
    <Tax currency="USD">559.49</Tax>
    <OtherFees currency="USD">543.34</OtherFees>
    <Occupancy>2</Occupancy>
    <Rates>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>1</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>3</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>4</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>5</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>6</Occupancy>
      </Rate>
    </Rates>
  </Result>
</Transaction>

Exemplo de indisponível

O exemplo a seguir define um itinerário em que a disponibilidade não pode ser recuperada de canais downstream, um segundo que está abaixo da estadia mínima e já reservado para as datas especificadas e um terceiro com uma propriedade que está fechada na data de chegada, mas que abre durante a estadia:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NotFetched/>
    </Unavailable>
  </Result>
  <Result>
    <Property>073313</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NoVacancy/>
      <MinNightStay value=3/>
    </Unavailable>
  </Result>
  <Result>
    <Property>052213</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>10</Nights>
    <Unavailable>
      <PropertyClosed first_open="2018-06-15" first_closed="2018-06-10"/>
    </Unavailable>
  </Result>
</Transaction>

<Rates>

Um contêiner para um ou mais blocos <Rate>. Cada <Rate> em <Rates> define um preço diferente para a combinação de quarto/itinerário.

Use o elemento <Rates> somente quando houver várias tarifas para a mesma combinação de quarto/itinerário. Por exemplo, você define várias tarifas para tarifas condicionais, tarifas exclusivas ou tarifas condicionais em Categorias de quarto.

O elemento <Rates> aparece no seguinte local na hierarquia XML da Mensagem de transação:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>           (Can also contain <Rates>)
        + ...

Os valores definidos em um <Rate> substituem os relacionados ao preço no elemento pai <Result> ou <RoomBundle>. Se eles não forem definidos em <Rate>, eles herdarão o valor do elemento pai. Somente <AllowablePointsofSale> é herdado para o elemento <RoomBundle>.

Sintaxe

O elemento <Rates> usa a seguinte sintaxe:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    <Rates>
      <Rate rate_rule_id="rate_rule_id">
        <Baserate currency="currency_code">price</Baserate>
        <Tax currency="currency_code">tax_amount</Tax>
        <OtherFees currency="currency_code">fee_amount</OtherFees>
        <ExpirationTime>expiration_time</ExpirationTime>
        <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
        <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
        <AllowablePointsOfSale>
          <PointOfSale id="landing_page_identifier"/>
        </AllowablePointsOfSale>
        <Occupancy>max_number_of_intended_occupants</Occupancy>
        <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
          ...
        <Custom[1-5]>custom_value</Custom[1-5]>
      </Rate>
      ...
    </Rates>
  </Result>
  ...
</Transaction>

Atributos

O elemento <Rates> tem os seguintes atributos:

Atributo Obrigatório? Descrição
rate_rule_id Optional Para tarifas condicionais, esse ID corresponde a uma tarifa a uma definição no arquivo de definição de regras de tarifação. O limite de caracteres para este campo é de 40 caracteres.

Elementos filhos

O elemento <Rates> tem os seguintes elementos filhos:

Elemento filho Obrigatório? Tipo Descrição
<AllowablePointsOfSale> Optional Object Uma ou mais páginas de destino qualificadas para o hotel. Esse elemento usa a mesma sintaxe que <AllowablePointsOfSale> no <Result>.
<Baserate> Required float Preço do quarto para a estadia. Esse elemento usa a mesma sintaxe que o <Baserate> no <Result>.

Observação:o elemento filho <Baserate> em <Rate> não pode ser definido como indisponível.

<ChargeCurrency> Optional enum Quando e onde o usuário paga por uma reserva. Esse elemento usa a mesma sintaxe de um <ChargeCurrency> em um <Result>.
<Custom[1‑5]> Optional string Campos personalizados que podem ser usados para transmitir dados adicionais associados a um hotel para uma página de destino. Esse elemento usa a mesma sintaxe de um <Custom[1‑5]> em um <Result>. Há um limite de 200 caracteres por campo personalizado. Para mais informações, consulte Arquivos da página de destino.

Se elementos <Custom> forem fornecidos no elemento <Result>, eles não serão herdados no elemento <RoomBundle> e precisarão ser definidos separadamente para cada <RoomBundle>. Eles também poderão ser incluídos em <PackageData>, se necessário.

<ExpirationTime> Optional DateTime A data e a hora em que a taxa é considerada expirada. Esse elemento usa a mesma sintaxe de um <ExpirationTime> em um <Result>.
<Occupancy> Optional integer

Especifica o número máximo de ocupantes. <Occupancy> pode ser acompanhado por <OccupancyDetails>, que especifica o tipo de hóspedes (adultos ou crianças). Consulte a sintaxe e a descrição dos elementos filhos em <OccupancyDetails>.

<OtherFees> Required float Taxas diferentes da tarifa básica e tributos que influenciam o preço final de um quarto. Esse elemento usa a mesma sintaxe de <OtherFees> em um <Result>.
<Refundable> Optional Object Permite listar uma tarifa como totalmente reembolsável ou fornecer um cancelamento sem custo financeiro. Se não for fornecido, nenhuma informação sobre um reembolso será exibida. Uma política de reembolso no nível <PackageData> substitui a política no nível <Result>. Uma política de reembolso no nível <Rates> substitui a política no nível <PackageData>. Os preços reembolsáveis também podem ser destacados aos usuários por opções alternativas sem modificar diretamente o esquema da mensagem de transação. Saiba mais sobre essas opções aqui.

O exemplo a seguir mostra o elemento <Refundable> com todos os atributos definidos:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

Observação:recomendamos configurar todos os atributos. Uma mensagem de aviso de status do feed é gerada quando um ou mais atributos não estão definidos.

Se você não definir nenhum atributo, a taxa não vai aparecer como reembolsável. Os atributos são:

  • available: (obrigatório) defina como 1 (ou true) para indicar se a taxa permite um reembolso total. Caso contrário, defina como 0 (ou false).
  • refundable_until_days: (obrigatório se available for true). Especifica o número de dias antes do check-in para que um reembolso total possa ser solicitado. O valor de refundable_until_days precisa ser um número inteiro entre 0 e 330.
  • refundable_until_time: altamente recomendado se available for true. Especifica a última hora do dia, 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.

    O valor desse atributo usa o formato Time.

Ao definir os atributos, observe o seguinte:

  • Se available ou refundable_until_days não estiverem definidos, a tarifa não será exibida como reembolsável.
  • Se available for 0 (ou false), os outros atributos serão ignorados. A taxa não é mostrada como reembolsável, mesmo que um ou ambos os outros atributos estejam definidos.
<Tax> Required float Os tributos calculados para o preço final de um quarto. Esse elemento usa a mesma sintaxe de um <Tax> em um <Result>.

Exemplos

Tarifa básica e condicional

O exemplo a seguir mostra uma Mensagem de transação que contém uma tarifa básica e uma tarifa condicional:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
        <!-- NOTE: OtherFees is inherited from the above setting -->
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Várias tarifas condicionais

O exemplo a seguir define uma tarifa básica e várias tarifas condicionais em uma <RoomBundle>:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>


      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <!-- Neither rate overrides Custom2. -->
      <Custom2>ratebasic</Custom2>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode321</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode432</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<RoomBundle>

Define o preço e a disponibilidade de Categorias de quarto como filhas de <Result> em uma mensagem <Transaction>. Defina um elemento separado para cada combinação de pacote/itinerário. Para definir o pacote e os termos dos Pacotes de quarto, use <RoomData>.

O elemento <RoomBundle> aparece no seguinte local na hierarquia XML da Mensagem de transação:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

Para mais informações, consulte Como usar Categorias de quarto.

Sintaxe

O elemento <RoomBundle> usa a seguinte sintaxe:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    ...
    <RoomBundle>
      <!-- Required unless specified inline under <RoomData> -->
      <RoomID>room_ID</RoomID>
      <!-- Required  <PackageData> -->
      <PackageID>package_ID</PackageID>

      <!-- Required -->
      <Baserate currency="currency_code">price</Baserate>
      <!-- Required -->
      <Tax currency="currency_code">taxes</Tax>
      <!-- Required -->
      <OtherFees currency="currency_code">other_fees</OtherFees>

      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <!-- Required -->
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>

      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>

      <RatePlanID>rate_plan_ID</RatePlanID>

      <Rates>...</Rates>

      <Custom1>custom_value_1</Custom1>
      <Custom2>custom_value_2</Custom2>
      <Custom3>custom_value_3</Custom3>
      <Custom4>custom_value_4</Custom4>
      <Custom5>custom_value_5</Custom5>
    </RoomBundle>
    ...
  </Result>
</Transaction>

Atributos

O elemento <RoomBundle> não tem atributos.

Elementos filhos

O elemento <RoomBundle> tem os seguintes elementos filhos:

Elemento filho Obrigatório? Tipo Descrição
<Baserate> Required float Define o preço da Categoria de quarto para a estadia. Esse elemento usa a mesma sintaxe de <Baserate> em <Result>, com a seguinte exceção:
  • Quando o quarto não estiver disponível para o itinerário, remova o elemento <RoomBundle> para indicar que ele não está mais no inventário. Para mais informações, consulte Como remover uma Categoria de quarto.
<BreakfastIncluded> Optional boolean Especifica se esta Categoria de quarto inclui café da manhã com a tarifa.
<ChargeCurrency> Optional enum Quando e onde o usuário paga por uma reserva. Esse elemento usa a mesma sintaxe de <ChargeCurrency> em um <Result>.

O valor padrão é web.

<Custom[1‑5]> Optional string Campos personalizados para transmitir dados adicionais às páginas de destino da Categoria de quarto. Esses elementos usam a mesma sintaxe que <Custom[1-5]> no <Result>. Há um limite de 200 caracteres por campo personalizado. Para mais informações, consulte Arquivos da página de destino.

Se elementos <Custom> forem fornecidos no elemento <Result>, eles não serão herdados no elemento <RoomBundle> e precisarão ser definidos separadamente para cada <RoomBundle>. Eles também poderão ser incluídos em <PackageData>, se necessário.

<InternetIncluded> Optional boolean Se uma Categoria de quarto incluir acesso à Internet sem custos financeiros, outras categorias não incluiriam essa comodidade. Não defina este elemento para Categorias de quarto em um hotel que oferece Internet gratuita para todos os quartos. Este elemento não se aplica à Internet com fio ou à Internet sem fio no quarto que não está disponível nos quartos de hóspedes.
<Occupancy> Required integer O número máximo de hóspedes para o qual uma Categoria de quarto é destinada. Por exemplo, uma suíte grande pode acomodar fisicamente seis hóspedes, mas o "Pacote lua de mel" é destinado apenas a duas pessoas.

Esse valor precisa ser menor ou igual a <Capacity>, que é o número de pessoas que o quarto pode acomodar fisicamente.

Ao definir a ocupação no URL da página de destino, use as variáveis NUM-ADULTS e NUM-CHILDREN, conforme descrito em Como usar variáveis e condições. O valor padrão é 2 adultos e 0 crianças.

O valor de <Occupancy> precisa ser um número inteiro positivo entre 1 e 99.

Observações:

  • <Occupancy> para <RoomBundle> é altamente recomendado. Portanto, ele é sinalizado como obrigatório e, se omitido, um erro 1097 será gerado.
  • <Occupancy> vem do objeto de dados nesta ordem: <RoomBundle>, <PackageData> e depois <RoomData>. Se não houver valor em nenhum deles, o valor padrão será 2.
  • <Occupancy> pode ser acompanhado por <OccupancyDetails>, que especifica o tipo de hóspedes (adultos ou crianças). Consulte a sintaxe e a descrição dos elementos filhos em <OccupancyDetails>.
  • Quando você define <Occupancy> em <RoomBundle> e <PackageData>, o valor em <RoomBundle> tem prioridade.
<OtherFees> Required float Taxas diferentes da tarifa básica e tributos que influenciam o preço final de um quarto. O elemento <OtherFees> usa um único atributo obrigatório, currency, que define o código da moeda de três letras para as taxas. Por exemplo, use USD para dólares americanos.
<PackageID> Optional (recommended) string O ID exclusivo dos dados do pacote. Use esse ID para corresponder os dados de Categoria de quarto ao que foi enviado em <PackageData>. Para mais informações, consulte os Metadados do pacote de quarto. Você também pode usar esse código para referenciar uma definição comum de Categoria de quarto usada em uma única Mensagem de transação ao definir os dados de Categoria de quarto in-line.
<ParkingIncluded> Optional boolean Se uma Categoria de quarto inclui estacionamento sem custos financeiros em que o estacionamento seria um serviço pago neste hotel. Não especifique um valor para esse elemento em um hotel que oferece estacionamento gratuito.

Os valores válidos são 0 (ou false) e 1 (ou true). O valor padrão é false.

<RatePlanID> Optional string O ID do plano de tarifa representa o identificador exclusivo de uma combinação de quarto e pacote. Por exemplo, considerando um valor <RoomID> de 5 e um valor <PackageID> de ABC, você poderia usar um valor de 5-ABC para <RatePlanID>. Recomendamos usar o RatePlanID como uma variável para criar o URL dinâmico da página de destino (antigo "Ponto de venda").

Para mais informações, acesse Como usar variáveis e condições.

<Rates> Optional <Rates> Tarifas que substituem os padrões desta Categoria de quarto. Esse elemento usa a mesma sintaxe de <Rates> em <Result>.
<Refundable> Optional Object Permite listar uma tarifa como totalmente reembolsável ou fornecer um cancelamento sem custo financeiro. Se não for fornecido, nenhuma informação sobre um reembolso será exibida. Uma política de reembolso no nível <PackageData> substitui a política no nível <Result>. Uma política de reembolso no nível <Rates> substitui a política no nível <PackageData>. Os preços reembolsáveis também podem ser destacados aos usuários por opções alternativas sem modificar diretamente o esquema da mensagem de transação. Saiba mais sobre essas opções aqui.

O exemplo a seguir mostra o elemento <Refundable> com todos os atributos definidos:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

Observação:recomendamos configurar todos os atributos. Uma mensagem de aviso de status do feed é gerada quando um ou mais atributos não estão definidos.

Se você não definir nenhum atributo, a taxa não vai aparecer como reembolsável. Os atributos são:

  • available: (obrigatório) defina como 1 (ou true) para indicar se a taxa permite um reembolso total. Caso contrário, defina como 0 (ou false).
  • refundable_until_days: (obrigatório se available for true). Especifica o número de dias antes do check-in para que um reembolso total possa ser solicitado. O valor de refundable_until_days precisa ser um número inteiro entre 0 e 330.
  • refundable_until_time: altamente recomendado se available for true. Especifica a última hora do dia, 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.

    O valor desse atributo usa o formato Time.

Ao definir os atributos, observe o seguinte:

  • Se available ou refundable_until_days não estiverem definidos, a tarifa não será exibida como reembolsável.
  • Se available for 0 (ou false), os outros atributos serão ignorados. A taxa não é mostrada como reembolsável, mesmo que um ou ambos os outros atributos estejam definidos.
<RoomID> Required string O ID exclusivo dos dados do quarto. Use esse ID para corresponder os dados de Categoria de quarto aos que você enviou em <RoomData>. Para ver mais informações, consulte Metadados da Pacote de quarto. Você também pode usar esse código para referenciar uma definição comum de quarto em uma única Mensagem de transação ao definir dados do quarto inline.
<Tax> Required float Os tributos calculados para o preço final de um quarto. O elemento <Tax> usa um único atributo obrigatório, currency, que define o código de moeda de três letras dos tributos. Por exemplo, use USD para dólares americanos.

Exemplos

Pacote de ocupação única

O exemplo a seguir define uma resposta com um único pacote de ocupação. Quando um usuário seleciona 1 no seletor de ocupação, o Google exibe o preço qualificado mais baixo, independentemente da ocupação.

Se um preço único não estiver disponível, o Google vai mostrar o menor preço para ocupação dupla. Os preços de ocupação única não serão consultados em tempo real se a ocupação dupla ou mais preços forem armazenados em cache para um itinerário.

Este exemplo faz referência a metadados predefinidos de quartos e pacotes com os elementos <RoomID> e <PackageID>. Use os elementos <RoomData> e <PackageData> para definir essas informações.

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 1 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <!-- Note:  Once defined it does not have to be repeated for future
              Transaction Messages.
              PropertyDataSets can also be defined and sent in their own
              Transaction Message separately from pricing. Google can be
              configured to pull just PropertyDataSets once per day
              (or on a predefined frequency). -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P11111</PackageID>
      <Occupancy>1</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
  <Result>
    <!-- Single occupancy pricing will be specified in a room bundle below -->
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P54321</RatePlanID>
    </RoomBundle>
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P11111</PackageID>
      <!-- Price for 1 ("occupancy") is the lowest price and will be
           displayed -->
      <Baserate currency="USD">174.99</Baserate>
      <Tax currency="USD">22.08</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P11111</RatePlanID>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
           occupancy will be displayed-->
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
      <RatePlanID>436233-P12345</RatePlanID>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 1 or more occupancies..-->
  </Result>
</Transaction>


Duas ou mais ocupações

O exemplo a seguir define uma resposta que contém duas ou mais ocupações.

Este exemplo faz referência a metadados predefinidos de quartos e pacotes com os elementos <RoomID> e <PackageID>. Use os elementos <RoomData> e <PackageData> para definir essas informações.

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 3 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Efficient method of defining Room Bundles-->
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P33333</PackageID>
      <Occupancy>3</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

  <Result>
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
    <!-- Base Room Bundle -->
    <RoomBundle>
      <!-- Baserate above and attributes must match atleast one room bundle
           below -->
      <RoomID>060773</RoomID>
      <PackageID>P33333</PackageID>
      <Baserate currency="USD">499.99</Baserate>
      <Tax currency="USD">55.12</Tax>
      <OtherFees currency="USD">22.00</OtherFees>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Lowest price for 3 ("occupancy"), shown below, will be displayed -->
      <Baserate currency="USD">598.88</Baserate>
      <Tax currency="USD">62.12</Tax>
      <OtherFees currency="USD">30.00</OtherFees>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 2 or more occupancies..-->
  </Result>
</Transaction>


Várias categorias de quarto

O exemplo a seguir define a ocupação em várias categorias de quarto para demonstrar os possíveis preços de um hostel.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    ...
    <!-- Suite Room Bundle -->
    <RoomBundle>
      <RoomID>suite1</RoomID>
      <PackageID>standard</PackageID>
      <Occupancy>2</Occupancy>
      <!-- Price for room -->
      <Baserate currency="USD">80.00</Baserate>
      <Tax currency="USD">5.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="Suite for 2" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>

    <!-- Small Dorm Room Bundle -->
    <RoomBundle>
      <RoomID>small_dorm</RoomID>
      <PackageID>economy</PackageID>
      <Occupancy>1</Occupancy>
      <!-- Price per bed -->
      <Baserate currency="USD">35.00</Baserate>
      <Tax currency="USD">3.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="1 bed in small dorm" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>

    <!-- Large Dorm Room Bundle -->
    <RoomBundle>
      <RoomID>large_dorm</RoomID>
      <PackageID>economy</PackageID>
      <Occupancy>1</Occupancy>
      <!-- Price per bed -->
      <Baserate currency="USD">20.00</Baserate>
      <Tax currency="USD">2.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="1 bed in large dorm" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>
    ...
  </Result>
</Transaction>

Várias tarifas condicionais

O exemplo a seguir define uma tarifa básica e várias tarifas condicionais em uma <RoomBundle>:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>


      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <!-- Neither rate overrides Custom2. -->
      <Custom2>ratebasic</Custom2>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode321</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode432</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<OccupancyDetails>

<Occupancy> em uma mensagem de transação especifica o número máximo de hóspedes para um quarto ou pacote. <OccupancyDetails> pode conter outras informações, como o número e o tipo de hóspedes (adultos ou crianças).

Quando <Occupancy> e <OccupancyDetails> aparecem no elemento <Rates> de <Result> ou <RoomBundle>, a taxa é restrita pelos detalhes da ocupação.

Sintaxe

Quando <OccupancyDetails> aparece, ele é sempre precedido por <Occupancy>. Observe a seguinte sintaxe:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
  ...
    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <OccupancyDetails>
      <NumAdults>number_of_adults</NumAdults>
      <Children>
        <Child age=age_of_one_child_guest/>
        <Child age=age_of_one_child_guest/>
      </Children>
    </OccupancyDetails>
  </Result>
</Transaction>

Elementos filhos

O elemento <OccupancyDetails> tem os seguintes elementos filhos:

Elemento filho Obrigatório? Tipo Descrição
<NumAdults> Required integer O número de hóspedes adultos. Mín.:1, Máx.:20.
<Children> Optional Object Um contêiner para um ou mais elementos <Child>.
<Child age> Optional integer A idade máxima para esse Filho, por exemplo, <Child age="17">.

Exemplos

Os exemplos abaixo mostram como <OccupancyDetails> pode aparecer em <Results>, <RoomBundle> ou no elemento filho <Rates>.

Resposta do resultado

O exemplo a seguir define um itinerário e o preço dele para uma propriedade em resposta a uma consulta de preço em tempo real em que o usuário especificou o número e os tipos de hóspedes. Aqui, <OccupancyDetails>, dois adultos e uma criança, retorna em <Result>.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
    <Occupancy>3</Occupancy>
    <OccupancyDetails>
      <NumAdults>2</NumAdults>
      <Children>
        <Child age="17"/>
      </Children>
    </OccupancyDetails>
  </Result>
</Transaction>

Classifica a resposta

O exemplo a seguir define um itinerário e os preços dele para 1 adulto e 1 criança. Aqui, os <OccupancyDetails> são retornados no elemento <Rates> de <Result>.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2018-04-18T11:27:45-04:00">
  <Result>
    <Property>8251</Property>
    <Checkin>2018-06-20</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">62.18</Baserate>
    <Tax currency="USD">2.45</Tax>
    <OtherFees currency="USD">0.00</OtherFees>
    <Rates>
      <Rate rate_rule_id="rule-951">
        <Occupancy>2</Occupancy>
        <OccupancyDetails>
          <NumAdults>1</NumAdults>
          <Children>
            <Child age="17"/>
          </Children>
        </OccupancyDetails>
        <Baserate currency="USD">42.61</Baserate>
        <Tax currency="USD">5.70</Tax>
        <OtherFees currency="USD">0.00</OtherFees>
        <Custom1>abc4</Custom1>
        <AllowablePointsOfSale>
          <PointOfSale id="yourhotelpartnersite.com"/>
        </AllowablePointsOfSale>
      </Rate>
    </Rates>
  </Result>
</Transaction>

Categoria de quarto

O exemplo a seguir define uma ocupação de dois adultos e uma criança por duas noites, com uma tarifa reembolsável. Aqui, o <OccupancyDetails> aparece em <RoomBundle>.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>6781291</Property>
    <Checkin>2017-08-05</Checkin>
    <Nights>2</Nights>
    ...
    <RoomBundle>
      <RoomID>10291</RoomID>
      <RatePlanID>564739</RatePlanID>
      <PackageID>564739</PackageID>
      <Occupancy>3</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="true" refundable_until_days="1" refundable_until_time="23:59:00" />
      <Baserate currency="USD">185.34</Baserate>
      <Tax currency="USD">37.06</Tax>
      <OtherFees currency="USD">2.22</OtherFees>
    </RoomBundle>
  </Result>
</Transaction>

Várias categorias de quarto

O exemplo a seguir define várias tarifas de <RoomBundle> que são restritas a uma ocupação de dois adultos e duas crianças. Aqui, o <OccupancyDetails> aparece no elemento <Rates> de <RoomBundle>.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">275.00</Baserate>
    <Tax currency="USD">27.50</Tax>
    <OtherFees currency="USD">0</OtherFees>
    <RoomBundle>
      <RoomID>5</RoomID>
      <PackageID>STD</PackageID>
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">0</OtherFees>
      <InternetIncluded>1</InternetIncluded>
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <Custom2>ratebasic</Custom2>
      <Occupancy>4</Occupancy>
      <OccupancyDetails>
          <NumAdults>2</NumAdults>
          <Children>
              <Child age="17"/>
              <Child age="17"/>
          </Children>
      </OccupancyDetails>
      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <ChargeCurrency>hotel</ChargeCurrency>
          <Custom1>ratecode321</Custom1>
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <Custom1>ratecode432</Custom1>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>