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, além de preços e disponibilidade.
O elemento <Transaction>
aparece no seguinte lugar na hierarquia XML da mensagem de transação:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
As 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 de parceiro a que a mensagem de transação se destina. Normalmente, você usa isso se o back-end fornece feeds de preços para várias contas de parceiro. Esse valor de string é a "Chave do parceiro" listada na página "Configurações da conta" da 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 24 horas anteriores serão processadas, e as que não tiverem serão descartadas. As mensagens são processadas na ordem de |
Elementos filhos
O elemento <Transaction>
tem os seguintes elementos filhos:
Elemento filho | Obrigatório? | Tipo | Descrição |
---|---|---|---|
<PropertyDataSet> | Optional* | <PropertyDataSet> |
Descreve um quarto específico e pacotes de quartos. Normalmente, você usa esse elemento em uma mensagem de transação separada para definir valores compartilhados para pacotes de quartos e reduzir o tamanho das mensagens de transação. |
<Result> | Optional* | <Result> |
Dados de preços para o itinerário de um quarto ou um elemento
|
* É necessário incluir pelo menos uma das seguintes propriedades: <PropertyDataSet> ou <Result> . |
Exemplos
Dados do quarto
O exemplo a seguir define dados de quarto em uma mensagem de transação:
<?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 dados de preços em uma mensagem de transação:
<?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>
<MilesIncluded>
<NumberOfMiles>1200</NumberOfMiles>
<Provider>
<Text language="en" text="United Airlines"/>
</Provider>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</MilesIncluded>
</Result>
</Transaction>
Diárias
O exemplo a seguir define dados de preços para 1 a 7 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 básica e uma taxa 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 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 quarto e pacote (ou Categoria de quarto) em uma mensagem <Transaction>
. Os valores definidos em um hotel substituem os valores 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 lugar 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 de Categorias 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 um pacote de quarto. Esses dados estão associados a um parceiro e a um 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ços. Para mais informações, consulte Metadados de categorias de quarto. |
<Property> | Required | string | O ID de um hotel a que os dados associados se aplicam. O valor desse elemento precisa ser uma string que corresponda ao <id> do anúncio no seu feed de lista de hotéis.
|
<RoomData> | Optional* | <RoomData> |
Descreve uma sala. Esses dados estão associados a um parceiro e um hotel, mas não a um itinerário.
Você faz referência ao ID do quarto nas atualizações de preços. |
* É necessário incluir pelo menos uma das seguintes propriedades: <PackageData> ou <RoomData> . |
Exemplos
Dados de quartos e pacotes
O exemplo a seguir mostra dados de quarto e pacote 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 a categoria de quarto, você faz referência aos IDs de quarto e pacote nas mensagens de preços. O resultado é que você reduz muito o tamanho das mensagens e também a quantidade de erros que podem ocorrer devido a dados duplicados. Para mais informações, consulte Metadados de categorias de quarto.
<RoomData>
Define metadados independentes de itinerário sobre quartos e, por extensão, categorias de quarto (já que elas são quartos mais comodidades adicionais). Use
<RoomData>
para reduzir a repetição de dados descritivos no seu feed
de preços.
O elemento <RoomData>
aparece no seguinte lugar 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. O objetivo é para todos os dados que não são de itinerário.
O elemento <RoomData>
é semelhante a <PackageData>
, mas descreve o quarto físico em vez de comodidades e termos de um pacote. Você usa <RoomData>
e <PackageData>
em combinação para fornecer detalhes sobre pacotes do Room. Para quartos individuais que não fazem parte de um pacote, use apenas
<RoomData>
.
É possível definir os elementos <RoomData>
e <PackageData>
para o mesmo quarto ou pacote de quartos. Quando o Google mostrar esse quarto ou pacote nos resultados da pesquisa, ele vai incluir as descrições dos dois, separadas por um hífen.
Para mais informações, consulte Metadados de Categorias 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. Para um quarto, a capacidade é maior ou igual à ocupação.
Quando especificado, esse valor precisa ser igual ou maior que o valor do elemento O valor de |
<Description> | Optional | Object | Uma descrição detalhada do quarto. 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
Use um elemento O exemplo a seguir mostra as versões em francês e inglês da descrição do quarto: <Description> <Text text="Two queen-sized beds" language="en"/> <Text text="Deux lits de la reine" language="fr"/> </Description> |
<Name> | Required | string | O 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 como todas as letras maiúsculas.
Esse elemento usa um único elemento filho,
Use um elemento 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 que um quarto pode receber.
Por exemplo, uma suíte grande pode acomodar fisicamente seis hóspedes (capacidade = 6), mas é destinada a até quatro pessoas.
Esse valor precisa ser menor ou igual ao elemento O valor de
|
<OccupancySettings> | Optional | Object | Configurações que podem restringir ou modificar os requisitos de ocupação de uma sala.
O elemento
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> Não é necessário incluir todos os elementos filhos. |
<PhotoURL> | Optional | Object | Um URL e uma legenda opcional para uma foto do quarto ou
pacote de quarto. É possível especificar mais de um <PhotoURL>
para uma sala ou um pacote de salas. Cada URL de foto precisa estar em um
<PhotoURL> separado.
Esse elemento usa os seguintes elementos filhos:
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 os recursos da sala. |
<RoomID> | Required | string | O ID exclusivo do quarto. Use esse ID para corresponder os dados do quarto
com os blocos <Result> nas atualizações de preços. Para mais informações, consulte Metadados de categorias de quarto. Também é possível usar esse ID para referenciar uma definição de quarto comum em uma única mensagem de transação ao definir dados de quarto inline. |
Exemplos
Dados do quarto
O exemplo a seguir define dados de sala:
<?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 pacotes e ambientes
O exemplo a seguir define metadados de quarto e pacote:
<?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 a seguir define metadados de quarto e pacote para vários pacotes do Room:
<?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 no quarto.
O elemento <RoomFeatures>
aparece no seguinte lugar 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:
|
<Beds> | Optional | Object | Contém o mesmo número de <Bed> que o quarto. Observação: os futons japoneses não devem ser contados aqui.
Cada
<Bed> tem os seguintes elementos filhos:
<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 uma cápsula. |
<Roomsharing> | Optional | enum | Se este quarto é compartilhado 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 o quarto for um alojamento ao ar livre sem paredes fixas, encanamento e controle de temperatura. Por exemplo, quartos de hotel não são hospedagens a céu aberto, mas locais para acampamento com tendas para os hóspedes e estacionamentos para trailers dos próprios visitantes são hospedagens a céu aberto. |
<MobilityAccessible> | Optional | empty | Informe esse elemento quando o quarto for acessível para pessoas com mobilidade reduzida. |
<Smoking> | Optional | enum | Se o quarto é para não fumantes ou para fumantes. Os valores válidos
são non_smoking e smoking . |
<BathAndToilet> | Optional | Object | Contém informações sobre um banheiro e um vaso sanitário no quarto.
O atributo é:
O elemento pode receber os seguintes elementos filhos:
Exemplo: <BathAndToilet relation="separate"> <Bath bathtub="1" shower="1"/> <Toilet electronic_bidet="1" mobility_accessible="1"/> </BathAndToilet> |
<OpenAirBath> | Optional | empty | Forneça esse elemento quando o quarto tiver uma banheira privativa ao ar livre. |
<AirConditioning> | Optional | empty | Informe esse elemento quando o quarto tiver ar-condicionado. |
<Balcony> | Optional | empty | Informe esse elemento quando o quarto tiver uma sacada ou varanda. |
<Views> | Optional | Object | As opções válidas incluem:
|
Exemplos
JapaneseHotelRoomStyle
não tem um valor padrão. Omitir um valor não resulta em um erro de XML, mas a página não aparece nos resultados da pesquisa quando o usuário filtra por estilo de quarto ou camas.
Duas camas de solteiro
O exemplo a seguir 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>
<RoomID>RoomID_1</RoomID>
<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>
<RoomID>RoomID_1</RoomID>
<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 quarto de estilo japonês sem cama. As informações sobre camas não são necessárias para quartos 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>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Quarto japonês-ocidental com cama
Confira a seguir um exemplo de quarto no estilo japanese_western
com uma cama de tamanho king
.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
<Beds>
<Bed size="king"></Bed>
</Beds>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Se o parceiro não tiver as informações sobre o número de camas nos quartos de japanese_western
, siga o exemplo:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
<PackageData>
Define metadados independentes de itinerário sobre pacotes de quartos 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 não relacionados a itinerários uma vez e fazer referência a eles nos dados de itinerário.
O elemento <PackageData>
aparece no seguinte lugar 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 recursos e termos de tarifa que não fazem parte da descrição física do quarto. Você usa <RoomData>
e <PackageData>
em combinação para
fornecer detalhes sobre as Categorias de quarto e os recursos de tarifa. Para quartos individuais que não fazem parte de um pacote, use apenas <RoomData>
.
É possível definir os elementos <RoomData>
e <PackageData>
para o mesmo quarto ou pacote de quartos. Quando o Google mostrar esse quarto ou pacote nos resultados da pesquisa, ele vai incluir as descrições dos dois, separadas por um hífen.
Se você atualizar um único elemento <PackageData>
de uma propriedade, será necessário atualizar todos os elementos <PackageData>
e <RoomData>
dela.
Cada <PropertyDataSet>
é considerado todos os dados sobre a propriedade e substitui os dados atuais.
Para mais informações, consulte Metadados de Categorias 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>integer</NumberOfMiles>
<Provider>
<Text language="en" text="provider-name">
</Provider>
<!-- Add Loyalty point information -->
<LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
</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 este pacote inclui café da manhã com a tarifa.
Os valores válidos são 0 (ou false ) e 1 (ou true ).
É preferível usar
|
<ChargeCurrency> | Optional | enum | Quando e onde o usuário paga uma reserva. Esse elemento usa a mesma
sintaxe de <ChargeCurrency> em um <Result> .
O valor padrão é |
<CheckinTime> | Optional | Time | O horário de check-in mais cedo possível. O horário precisa ser anterior a 24:00 no horário local do hotel. |
<CheckoutTime> | Optional | Time | O horário de check-out mais tardio 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> <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 incluir acesso à Internet sem custo financeiro,
enquanto outros pacotes não incluem essa comodidade. Não defina esse elemento para pacotes de quartos em um hotel que oferece Internet gratuita em todos os quartos. Esse elemento não se aplica à Internet com fio ou sem fio nos quartos que não estão disponíveis para os 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
Os atributos opcionais são usados apenas quando Para que os filtros de refeição ( |
<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 como todas as letras maiúsculas.
Esse elemento usa um único elemento filho, <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 que uma categoria de quarto pode acomodar.
Por exemplo, uma suíte grande pode acomodar fisicamente seis hóspedes, mas é destinada a até quatro pessoas.
Esse valor precisa ser menor ou igual ao elemento O valor de Se você especificar esse elemento em Observação: <Occupancy> pode ser acompanhado de
<OccupancyDetails> ,que especifica o tipo de convidados
(adultos ou crianças). Consulte <OccupancyDetails> para sintaxe e descrição dos elementos filhos.
|
<PackageID> | Required | string | O ID exclusivo do pacote. Use esse ID para corresponder os dados do
Room Bundle aos blocos Também é possível usar esse ID para fazer referência a uma definição comum de categoria de quarto usada em uma única mensagem de transação ao definir dados de categoria de quarto inline. |
<ParkingIncluded> | Optional | boolean | Se um pacote de quarto inclui estacionamento sem custo financeiro, quando 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 |
<PhotoURL> | Optional | Object | (Igual a <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 oferecer 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 do <PackageData> substitui a política de reembolso no nível do <Result> . Uma política de reembolso no nível do <Rates> substitui
a política de reembolso no nível do <PackageData> . Os preços reembolsáveis também podem ser destacados para os usuários por opções alternativas sem modificar diretamente o esquema de mensagens de transação. Saiba mais sobre essas opções
Política de tarifas reembolsáveis.
O exemplo a seguir mostra o elemento <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Observação:recomendamos definir todos os atributos. Uma mensagem de aviso de status do feed é gerada quando um ou mais atributos não são definidos. Se você não definir nenhum atributo, a tarifa não vai aparecer como reembolsável. Os atributos são:
Ao definir os atributos, observe o seguinte:
|
<MembershipBenefits |
Optional | boolean | A tarifa inclui benefícios de status elite durante a estadia. Inclui os seguintes parâmetros:
|
<CarRentalIncluded> | Optional | boolean | A tarifa inclui aluguel de carro sem custo financeiro durante a estadia. |
<MilesIncluded> | Optional | boolean | A tarifa inclui milhas aéreas. Os parâmetros incluem:
Observação: |
<OnPropertyCredit> | Optional | boolean | A tarifa inclui crédito no hotel (alimentos e bebidas, resort, spa etc.). Parâmetro:
|
<AirportTransportationIncluded> | Optional | Object | A tarifa inclui transporte sem custo financeiro de/para um aeroporto próximo. O atributo opcional
direction especifica a direcionalidade do
transporte. Os valores válidos incluem:
from : o transporte é fornecido do aeroporto até a
propriedade. Esse é o valor padrão se nenhuma direção for especificada.
to : o transporte para o aeroporto é fornecido pelo
estabelecimento.
round_trip : o transporte é fornecido para e do aeroporto.
|
Exemplos
Pacote para quarto individual
O exemplo a seguir define um único pacote de quarto, com uma ocupação de 2 (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 sala e pacote
O exemplo a seguir define metadados de quarto e pacote:
<?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 a seguir define metadados de quarto e pacote para vários pacotes do Room:
<?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 quarto e pacote para um pacote de quarto com recursos 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>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</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 quarto e pacote 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>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Meals Included" language="en"/>
</Name>
<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>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
</Name>
<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ços e disponibilidade em uma mensagem <Transaction>
.
O elemento <Result>
aparece no seguinte lugar 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 referenciam
metadados independentes do itinerário sobre um quarto ou pacote (como uma descrição ou
conjunto de comodidades) definidos em <PackageData>
e <RoomData>
.
Normalmente, você envia mensagens de transação com atualizações de preços com muita frequência. A maneira e a frequência com que isso é feito dependem do seu modo de transferência.
Você pode usar <Result>
em uma mensagem de transação para remover itinerários, conforme descrito em Remover inventário.
Para mais informações sobre como usar mensagens de transação para atualizar preços e
disponibilidade, consulte 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]> <MilesIncluded> <NumberOfMiles>integer</NumberOfMiles> <Provider> <Text language="en" text="provider-name"> </Provider> <!-- Add Loyalty point information --> <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID> </MilesIncluded> </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 itinerário específicos substituem os preços anteriores (não expirados) presentes no cache do Google. O atributo
mesclável permite armazenar preços adicionais no cache do Google
sem excluir informações de preços anteriores. As respostas de consulta de preços em tempo real com contexto sempre terão esse atributo definido como true , independentemente da 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 processar a 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 de páginas de destino serão consideradas qualificadas para serem usadas na reserva do quarto. Para mais informações, consulte Sintaxe do arquivo de páginas de destino. |
<Baserate> | Optional | float | O preço do quarto para a estadia. O valor desse elemento precisa refletir o seguinte:
Quando o quarto não estiver disponível para o itinerário, Para remover uma categoria de quarto, siga as instruções em Remover uma categoria de quarto. O <Baserate currency="USD">1200.40</Baserate> O elemento
|
<ChargeCurrency> | Optional | enum | Quando e onde o usuário paga uma reserva. Esse elemento pode
ser usado em uma mensagem de transação no elemento <Result>
para o preço do hotel ou no bloco <PackageData>
para um pacote de quarto.
Os valores válidos são:
O valor padrão é |
<Checkin> | Required | Date | A data de check-in de um itinerário usando o formato Date. A combinação dos elementos <Nights> e <Checkin> forma um itinerário. |
<Custom[1‑5]> | Optional | string | Define um campo personalizado que pode ser usado para transmitir dados adicionais
associados a um hotel. É possível transmitir até cinco valores personalizados com os seguintes nomes de elementos:
Os elementos Os elementos <Custom> fornecidos no elemento |
<ExpirationTime> | Optional | DateTime | A data e a hora em que o preço é considerado expirado (mínimo de 3 horas).
Recomendamos que você não forneça carimbos de data/hora de expiração se isso não for essencial para sua estrutura de preços. O Google não veicula preços expirados, e qualquer itinerário com um preço expirado se torna qualificado para consultas de preços em tempo real. |
<MilesIncluded> | Optional | boolean | A tarifa inclui milhas aéreas. Os parâmetros incluem:
Observação: |
<Nights> | Required | integer | O número de diárias 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 base 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 de moeda de três letras das taxas. Por exemplo, USD .
O elemento |
<Occupancy> | Optional | integer | Especifica o número máximo de ocupantes permitidos para essa tarifa.
Quando <Occupancy> aparece diretamente abaixo de <Result> ,
ele precisa especificar 2 ou mais. <Occupancy> pode ser acompanhado de <OccupancyDetails> , que especifica o tipo de hóspedes (adultos ou crianças). Se os tipos de hóspedes não forem especificados, eles serão considerados adultos. 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 .
Observação: entre em contato com sua equipe de suporte para ativar o recurso de envio de preços sem ocupação dupla. |
<PackageID> | Optional | string | O ID exclusivo do pacote para mapear dados predefinidos.
Também usado para preencher a variável da página de destino PACKAGE-ID.
Para mais informações, consulte
Metadados de
pacote do Room.
É obrigatório incluir |
<Property> | Required | string | O ID de um hotel afetado pelos dados associados (preço, itinerário, pacote de quarto ou metadados). O valor desse elemento precisa ser uma string. O valor desse elemento precisa corresponder ao <id> do anúncio que você definiu no 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 Observação: em |
<Refundable> | Optional | Object | Permite listar uma tarifa como totalmente reembolsável ou oferecer 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 do <PackageData> substitui a política de reembolso no nível do <Result> . Uma política de reembolso no nível do <Rates> substitui
a política de reembolso no nível do <PackageData> . Os preços reembolsáveis também podem ser destacados para os usuários por opções alternativas sem modificar diretamente o esquema de mensagens de transação. Saiba mais sobre a política de tarifas reembolsáveis.
O exemplo a seguir mostra o elemento <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Observação:recomendamos definir 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 tarifa não vai aparecer como reembolsável. Os atributos são:
Ao definir os atributos, observe o seguinte:
|
<RoomBundle> | Optional | <RoomBundle> |
Um contêiner de informações sobre descrições físicas de um quarto com preço, embalagens de comodidades e alguns detalhes da política de compra para o hotel e o itinerário especificados.
Em geral, use esse elemento para definir preços para o quarto básico e diferentes tipos de quartos na mesma propriedade. Embora seja possível definir descrições de pacote do Room inline, use uma mensagem de transação separada para definir essas informações. O Google vai armazenar os metadados para que você possa fazer referência a eles, em vez de repeti-los, em todas as atualizações de preços futuras. |
<RoomID> | Optional | string | O ID exclusivo do quarto para mapear com dados predefinidos. Também usado para preencher a variável da página de destino PARTNER-ROOM-ID.
Para mais informações, consulte
Metadados de
pacote do Room.
É obrigatório incluir |
<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 da moeda de três letras para os tributos. Por exemplo, USD . O elemento
<Tax> é obrigatório se
<Baserate> for maior que zero.
Se o atributo "all_inclusive" do elemento |
<Unavailable> | Optional | Object | Indica que o itinerário não está disponível para reserva. Serve como um contêiner para motivos mais detalhados de por que o itinerário não estava disponível. Um ou mais dos seguintes motivos de indisponibilidade podem estar aninhados na tag <Unavailable> :
|
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>
<MilesIncluded>
<NumberOfMiles>1200</NumberOfMiles>
<Provider>
<Text language="en" text="United Airlines"/>
</Provider>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</MilesIncluded>
</Result>
</Transaction>
Neste exemplo, não são mostrados detalhes sobre o ambiente, como uma descrição, uma imagem e uma legenda, o nome e a capacidade dele.
Você pode definir essas informações uma vez em uma mensagem Transaction separada que o Google armazena. Depois, você pode fazer referência a ele em todas as atualizações de preços e inventário subsequentes. Para mais informações, consulte Metadados de categorias de quarto.
Exemplo de várias taxas
O exemplo a seguir define um único itinerário e propriedade com várias tarifas para várias ocupações. O elemento <Rates>
pode ser usado para
fornecer preços com várias taxas para uma propriedade específica. O exemplo a seguir também é útil para propriedades de aluguel por temporada (VR):
<?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 indisponível
O exemplo a seguir define um itinerário cuja disponibilidade não pôde ser recuperada de canais downstream, um segundo que está abaixo da estadia mínima e já reservado para as datas especificadas, e um terceiro cuja propriedade 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 ou itinerário.
Use o elemento <Rates>
somente quando houver várias tarifas para
o mesmo quarto ou combinação de itinerário. Por exemplo, você pode definir várias tarifas para tarifas condicionais, tarifas exclusivas ou tarifas condicionais em categorias de quarto.
O elemento <Rates>
aparece no seguinte lugar 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 valores relacionados a preços no elemento pai <Result>
ou <RoomBundle>
. Se não estiverem definidos em <Rate>
,
eles vão herdar 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> ... <MilesIncluded> <NumberOfMiles>integer</NumberOfMiles> <Provider> <Text language="en" text="provider-name"> </Provider> <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID> </MilesIncluded> ... <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 e uma definição no arquivo de definição da regra de tarifação. O limite de caracteres para esse campo é 40. |
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 do
<AllowablePointsOfSale> em <Result> . |
<Baserate> | Required | float | O preço do quarto para a estadia. Esse elemento usa a mesma
sintaxe do <Baserate> em <Result> .
Observação:o elemento filho |
<ChargeCurrency> | Optional | enum | Quando e onde o usuário paga 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 de página de destino.
Se os elementos <Custom> forem fornecidos no elemento |
<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> . |
<MilesIncluded> | Optional | boolean | A tarifa inclui milhas aéreas. Os parâmetros incluem:
Observação: |
<Occupancy> | Optional | integer | Especifica o número máximo de ocupantes permitidos para essa tarifa. Se não for especificado, será igual à taxa principal.
|
<OtherFees> | Required | float | Taxas diferentes da tarifa base e tributos que influenciam o preço final de um quarto. Esse elemento usa a mesma sintaxe de
<OtherFees> em um <Result> .
Se o atributo "all_inclusive" do elemento |
<Refundable> | Optional | Object | Permite listar uma tarifa como totalmente reembolsável ou oferecer 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 do <PackageData> substitui a política de reembolso
no nível do <Result> . Uma política de reembolso no nível do <Rates> substitui
a política de reembolso no nível do <PackageData> . Os preços reembolsáveis também podem ser destacados para os usuários por opções alternativas sem modificar diretamente o esquema de mensagens de transação. Saiba mais sobre essas opções
Política de tarifas reembolsáveis.
O exemplo a seguir mostra o elemento <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Observação:recomendamos definir todos os atributos. Uma mensagem de aviso de status do feed é gerada quando um ou mais atributos não são definidos. Se você não definir nenhum atributo, a tarifa não vai aparecer como reembolsável. Os atributos são:
Ao definir os atributos, observe o seguinte:
|
<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
Taxa básica e taxa condicional
O exemplo a seguir mostra uma mensagem de transação que contém uma taxa básica e uma taxa 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 taxa básica e várias taxas condicionais em um <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 preços e disponibilidade para pacotes de quartos como um filho de
<Result>
em uma mensagem <Transaction>
. Defina um elemento separado para cada
pacote ou combinação de itinerário. Para definir o pacote e os termos das
Categorias de quarto, use <RoomData>
.
O elemento <RoomBundle>
aparece no seguinte lugar 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> <!-- Add Loyalty point information --> <MilesIncluded> <NumberOfMiles>integer</NumberOfMiles> <Provider> <Text language="en" text="provider-name"> </Provider> <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>> </MilesIncluded> <!-- 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 do pacote de quarto para a estadia. Esse elemento usa a mesma sintaxe de <Baserate> em <Result> , com a seguinte exceção:
|
<BreakfastIncluded> | Optional | boolean | Especifica se este pacote de quarto inclui café da manhã com a tarifa. |
<ChargeCurrency> | Optional | enum | Quando e onde o usuário paga uma reserva. Esse elemento usa a mesma
sintaxe de <ChargeCurrency> em um <Result> .
O valor padrão é |
<Custom[1‑5]> | Optional | string | Campos personalizados para transmitir dados adicionais às páginas de destino do pacote de quartos. Esses elementos usam a mesma sintaxe de
<Custom[1-5]> em <Result> . Há um limite de 200 caracteres por campo personalizado. Para mais informações, consulte
arquivos de página de destino.
As variáveis personalizadas só são listadas quando você envia os preços na mensagem de transação.
Se os elementos <Custom> forem fornecidos no elemento |
<InternetIncluded> | Optional | boolean | Se um pacote de sala incluir acesso à Internet sem custo financeiro, enquanto outros pacotes não incluem essa comodidade. Não defina esse elemento para pacotes de quartos em um hotel que oferece Internet gratuita em todos os quartos. Esse elemento não se aplica à Internet com fio ou sem fio nos quartos que não estão disponíveis para os hóspedes. |
<MilesIncluded> | Optional | boolean | A tarifa inclui milhas aéreas. Os parâmetros incluem:
Observação: |
<Occupancy> | Required | integer | Especifica o número máximo de ocupantes permitidos para essa tarifa. Por exemplo, uma suíte grande pode acomodar fisicamente seis hóspedes, mas o "Pacote lua de mel" permite apenas dois.
Esse valor precisa ser menor ou igual a Ao definir a ocupação no URL da página de destino, use as variáveis O valor de Observações:
|
<OtherFees> | Required | float | Taxas diferentes da tarifa base 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 de moeda de três letras das 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 aos dados do pacote do Room com o que foi enviado em <PackageData> . Para mais informações, consulte Metadados do pacote do Room. Também é possível usar esse ID para fazer referência a uma definição comum de categoria de quarto usada em uma única mensagem de transação ao definir dados de categoria de quarto inline. |
<ParkingIncluded> | Optional | boolean | Se um pacote de quarto inclui estacionamento sem custo financeiro, quando 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 |
<RatePlanID> | Optional | string | O ID do plano de tarifas 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ê pode usar um valor de 5-ABC para <RatePlanID> . Recomendamos usar
RatePlanID como uma variável para criar o URL dinâmico da página de destino
(antigo ponto de venda).
Para mais informações, consulte Como usar variáveis e condições. |
<Rates> | Optional | <Rates> |
São as tarifas que substituem os valores padrão deste pacote de quartos. Esse
elemento usa a mesma sintaxe de <Rates> em <Result> . |
<Refundable> | Optional | Object | Permite listar uma tarifa como totalmente reembolsável ou oferecer 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 do <PackageData> substitui a política de reembolso no nível do <Result> . Uma política de reembolso no nível do <Rates> substitui
a política de reembolso no nível do <PackageData> . Os preços reembolsáveis também podem ser destacados para os usuários por opções alternativas sem modificar diretamente o esquema de mensagens de transação. Saiba mais sobre essas opções
Política de tarifas reembolsáveis.
O exemplo a seguir mostra o elemento <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Observação:recomendamos definir 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 tarifa não vai aparecer como reembolsável. Os atributos são:
Ao definir os atributos, observe o seguinte:
|
<RoomID> | Required | string | O ID exclusivo dos dados do quarto. Use esse ID para corresponder os dados do pacote do Room com o que você enviou em <RoomData> .
Para mais informações, consulte
Metadados de Categorias de quarto. (Também é possível usar esse ID para referenciar uma
definição de quarto comum em uma única mensagem de transação ao definir
dados de 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 da moeda de três letras para os tributos. Por exemplo, use USD para dólares americanos. |
Exemplos
Pacote para 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 mostra o preço qualificado mais baixo, independente da ocupação.
Se um preço para ocupação individual não estiver disponível, o Google vai mostrar o preço mais baixo para ocupação dupla. Os preços para ocupação única não são consultados em tempo real se os preços para ocupação dupla ou mais estiverem em cache para um itinerário.
Este exemplo faz referência a metadados predefinidos de sala e pacote 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 sala e pacote 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ários pacotes de quartos para demonstrar possíveis preços de quartos de 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 taxa básica e várias taxas condicionais em um <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
de um quarto ou pacote. <OccupancyDetails>
pode conter informações adicionais, 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>
, isso significa que a tarifa é restrita pelos detalhes de ocupação.
Se você incluir <OccupancyDetails>
em um <RoomBundle>
, junto com um elemento
<Rate>
aninhado, não será possível enviar um <Occupancy>
básico dentro do <Rate>
.
Em vez disso, recomendamos uma das seguintes opções:
- Omitir a ocupação de
<Rate>
:nesse caso,<Rate>
herda o<OccupancyDetails>
diretamente de<RoomBundle>
.
ou
- Duplicar
<OccupancyDetails>
:nesse caso, envie outros<OccupancyDetails>
idênticos no elemento<RoomBundle>
e no<Rate>
aninhado.
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 da criança. Por exemplo, <Child age="17"> . |
Exemplos
Os exemplos a seguir 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 os preços dele para uma propriedade em resposta a uma consulta de preços em tempo real em que o usuário especificou o número e os tipos de hóspedes. Aqui, os <OccupancyDetails>
(dois adultos e uma criança) são retornados 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>
Resposta de taxas
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, os <OccupancyDetails>
aparecem dentro de <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 <RoomBundle>
que são
restritas a uma ocupação de dois adultos e duas crianças. Aqui, os
<OccupancyDetails>
aparecem 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>