Questa pagina fornisce un riferimento per i messaggi di transazione basati su XML.
<Transaction>
L'elemento radice di un messaggio di transazione è <Transaction>. È un contenitore di informazioni descrittive su camere e pacchetti, nonché su prezzi e disponibilità di camere e pacchetti.
L'elemento <Transaction> appare nella seguente posizione nella gerarchia XML del messaggio di transazione:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
I messaggi che utilizzano <Transaction> come elemento principale richiedono almeno
un elemento secondario. I messaggi Transaction possono avere un numero illimitato di elementi secondari, a condizione che
le dimensioni del messaggio non superino 100 MB.
Sintassi
L'elemento <Transaction> utilizza la seguente sintassi:
<?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>
Attributi
L'elemento <Transaction> prevede i seguenti attributi:
| Attributo | Obbligatorio? | Tipo | Descrizione |
|---|---|---|---|
| id | Required | string | Un identificatore univoco per ogni messaggio Transaction. |
| partner | Optional | string | L'account partner a cui è indirizzato il messaggio Transaction. In genere, devi usare questo attributo se il tuo backend fornisce feed del prezzo per più account partner. Il valore della stringa è il valore "Chiave del partner" presente nella pagina Impostazioni account in Hotel Center. |
| timestamp | Required | DateTime | Il momento in cui è stato inviato il messaggio di transazione. Verrà elaborato qualsiasi messaggio inviato con un timestamp entro le 24 ore precedenti, mentre gli altri verranno eliminati. I messaggi vengono elaborati secondo l'ordine del |
Elementi secondari
L'elemento <Transaction> ha i seguenti elementi figlio:
| Elemento secondario | Obbligatorio? | Tipo | Descrizione |
|---|---|---|---|
| <PropertyDataSet> | Optional* | <PropertyDataSet> |
Descrive una camera specifica e i pacchetti camera. In genere, questo elemento viene utilizzato in un messaggio Transaction separato per definire i valori condivisi dei pacchetti camera e ridurre le dimensioni dei messaggi Transaction. |
| <Result> | Optional* | <Result> |
Dati dei prezzi per l'itinerario di una camera o un
elemento |
* È richiesto almeno uno tra <PropertyDataSet> o <Result>. |
|||
Esempi
Dati della stanza
L'esempio seguente definisce i dati della camera in un messaggio Transaction:
<?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>
Dati sui prezzi
L'esempio seguente definisce i dati sui prezzi in un messaggio di transazione:
<?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>
Tariffe per notte
L'esempio seguente definisce i dati dei prezzi per un soggiorno da 1 a 7 notti a partire dal 7 giugno 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>
Tariffe di base e agevolate
L'esempio seguente mostra un messaggio Transaction che contiene una tariffa di base e una tariffa agevolata:
<?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>
</Rate>
</Rates>
</Result>
</Transaction>
Rimuovere l'inventario
L'esempio seguente rimuove diversi inventari (soggiorni di 1 notte per più date diverse) per un hotel dall'inventario:
<?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>
Un contenitore per le informazioni sulla camera e sul pacchetto (o pacchetto camera) in un
messaggio <Transaction>. I valori impostati per un hotel sostituiscono quelli specificati per un partner.
Poiché Google archivia queste informazioni, non devi specificarle ogni volta
che invii gli aggiornamenti sui prezzi.
L'elemento <PropertyDataSet> compare nella seguente posizione nella
gerarchia XML del messaggio Transaction:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Per ulteriori informazioni, consulta la sezione Metadati dei pacchetti camera.
Sintassi
L'elemento <PropertyDataSet> utilizza la seguente sintassi:
<?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>
Attributi
L'elemento <PropertyDataSet> non ha attributi.
Elementi secondari
L'elemento <PropertyDataSet> prevede i seguenti elementi secondari:
| Elemento figlio | Obbligatorio? | Tipo | Descrizione |
|---|---|---|---|
| <PackageData> | Optional* | <PackageData> |
Descrive un pacchetto camera. Questi dati sono associati a un partner e a un hotel, ma non a un itinerario. Questo elemento è simile a <RoomData>, ma descrive servizi e termini che non fanno parte della descrizione fisica della camera.
Fai riferimento all'ID del pacchetto negli aggiornamenti dei prezzi. Per ulteriori informazioni, consulta i metadati del pacchetto camera. |
| <Property> | Required | string | L'ID di un hotel a cui si applicano i dati associati. Il valore di questo elemento deve essere una stringa che corrisponda all'inserzione <id> nel tuo feed elenco hotel.
|
| <RoomData> | Optional* | <RoomData> |
Descrive una stanza. Questi dati sono associati a un partner e a un hotel, ma non a un itinerario.
Fai riferimento all'ID della camera negli aggiornamenti dei prezzi. |
* È richiesto almeno uno tra <PackageData> o <RoomData>. |
|||
Esempi
Dati sulla camera e sul pacchetto
L'esempio seguente mostra i dati sia della camera che del pacchetto in un <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>
Quando invii prezzi e disponibilità per questa camera e per il pacchetto camera, fai riferimento agli ID della camera e del pacchetto nei tuoi messaggi sui prezzi. Il risultato è che si riducono notevolmente le dimensioni dei messaggi e si riduce anche la quantità di errori che si potrebbero riscontrare a causa di dati duplicati. Per ulteriori informazioni, consulta i metadati del pacchetto camera.
<RoomData>
Definisce i metadati indipendenti dall'itinerario delle camere e, per
estensione, dei pacchetti camera (dal momento che i pacchetti camera sono camere più comfort aggiuntivi). Utilizza
<RoomData> per ridurre la ripetizione dei dati descrittivi nel feed del prezzo.
L'elemento <RoomData> appare nella seguente posizione nella gerarchia XML del messaggio di transazione:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Gli elementi <RoomData> contengono informazioni associate a un partner e a un hotel, ma non a un itinerario. Lo scopo previsto è per tutti i dati non itineranti.
L'elemento <RoomData> è simile a <PackageData>, ma descrive la stanza fisica anziché i servizi e i termini di un pacchetto. Per fornire dettagli sui pacchetti camera, puoi utilizzare <RoomData> e <PackageData> in combinazione. Per le singole stanze che non fanno parte di un pacchetto, utilizzare solo <RoomData>.
Puoi definire entrambi gli elementi, <RoomData> e <PackageData>, per la stessa camera o lo stesso pacchetto camera. Quando Google visualizza quella camera o quel pacchetto nei risultati di ricerca, includerà le descrizioni di entrambi, separate da un trattino.
Per ulteriori informazioni, consulta i metadati del pacchetto camera.
Sintassi
L'elemento <RoomData> utilizza la seguente sintassi:
<?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>
Attributi
L'elemento <RoomData> non ha attributi.
Elementi secondari
L'elemento <RoomData> ha i seguenti elementi figlio:
| Elemento figlio | Obbligatorio? | Tipo | Descrizione |
|---|---|---|---|
| <Capacity> | Optional | integer | Il numero massimo di ospiti che una stanza può fisicamente ospitare. Per una camera, la capienza è maggiore o uguale al
numero di persone.
Se specificato, questo valore deve essere uguale o maggiore del valore dell'elemento Il valore di |
| <Description> | Optional | Object | Una descrizione dettagliata della camera. Questo elemento dovrebbe contenere informazioni non descritte da altri elementi o dall'elemento <Name>. Non dovresti usare solo lettere maiuscole quando specifichi la descrizione della stanza.
L'elemento
Utilizza un elemento L'esempio seguente mostra le versioni francese e inglese della descrizione della stanza: <Description> <Text text="Two queen-sized beds" language="en"/> <Text text="Deux lits de la reine" language="fr"/> </Description> |
| <Name> | Required | string | Il nome della categoria di camera. Questo valore deve corrispondere a
quanto visualizzato nella pagina di destinazione dell'hotel (in precedenza Punto di vendita). Non utilizzare solo lettere maiuscole per impostare il
valore di questo elemento.
Questo elemento prevede un singolo elemento secondario,
Utilizza un elemento L'esempio seguente mostra le versioni francese e inglese del nome della stanza: <Name> <Text text="Standard Double Room" language="en"/> <Text text="Le chambre double" language="fr"/> </Name> |
| <Occupancy> | Optional | integer | Il numero massimo di ospiti previsto per una camera.
Ad esempio, una suite di grandi dimensioni potrebbe ospitare fisicamente 6
persone (capienza = 6), ma è destinata a un massimo di 4 ospiti.
Questo valore deve essere minore o uguale all'elemento Il valore di
|
| <OccupancySettings> | Optional | Object | Impostazioni che possono limitare o modificare i requisiti di occupazione di una stanza.
L'elemento
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> Non è necessario includere tutti gli elementi figlio. |
| <PhotoURL> | Optional | Object | Un URL e una didascalia facoltativa per una foto di una determinata camera o di un
pacchetto camera. Puoi specificare più di un <PhotoURL>
per una camera o un pacchetto camera. Ogni URL della foto deve trovarsi nel proprio
<PhotoURL>.
Questo elemento prevede i seguenti elementi secondari:
Esempio: <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> |
Contiene informazioni sulle caratteristiche della stanza. |
| <RoomID> | Required | string | L'ID univoco della camera. Utilizza questo ID per associare i dati della camera
ai blocchi <Result> negli aggiornamenti dei prezzi. Per
ulteriori informazioni, consulta la sezione Metadati dei pacchetti camera. Puoi
utilizzare questo ID anche per fare riferimento a una definizione comune della camera in un singolo
messaggio Transaction quando definisci i dati della camera in linea. |
Esempi
Dati della stanza
L'esempio seguente definisce i dati della camera:
<?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>
Metadati di camere e pacchetti
L'esempio seguente definisce i metadati della stanza e del pacchetto:
<?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>
Pacchetti multi-camera
L'esempio seguente definisce i metadati della camera e del pacchetto per più pacchetti camera:
<?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>
Definisce le caratteristiche presenti nella stanza.
L'elemento <RoomFeatures> appare nella seguente posizione nella gerarchia XML del messaggio di transazione:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<RoomFeatures>
Sintassi
L'elemento <RoomFeatures> utilizza la seguente sintassi:
<?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>
Attributi
L'elemento <RoomFeatures> non ha attributi.
Elementi secondari
L'elemento <RoomFeatures> prevede i seguenti elementi secondari:
| Elemento figlio | Obbligatorio? | Tipo | Descrizione |
|---|---|---|---|
| <JapaneseHotelRoomStyle> | Optional | enum | Indica lo stile di una camera d'hotel giapponese. I valori validi sono:
|
| <Beds> | Optional | Object | Contiene tanti <Bed> quanti ne ha la stanza. Da notare che i futon giapponesi non devono essere conteggiati.
Ogni
<Bed> ha i seguenti elementi figlio:
<Beds>
<Bed size="double">
<Width unit="cm" number="140"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed/> <!-- Size unknown -->
</Beds> |
| <Suite> | Optional | empty | Fornisci questo elemento quando la camera è una suite. |
| <Capsule> | Optional | empty | Fornisci questo elemento quando la stanza è una capsula. |
| <Roomsharing> | Optional | enum | Indica se la stanza è condivisa con altri occupanti, come proprietari o altri
ospiti. I valori validi sono shared e private. |
| <Outdoor> | Optional | empty | Fornisci questo elemento quando la camera è una sistemazione all'aperto che non dispone di pareti fisse, impianti idraulici e climatizzazione. Ad esempio, le camere d'hotel non sono strutture ricettive all'aperto, mentre i campeggi in cui gli ospiti soggiornano in tende e le aree di sosta per camper in cui gli ospiti portano il proprio camper sono strutture ricettive all'aperto. |
| <MobilityAccessible> | Optional | empty | Fornire questo elemento quando la stanza è accessibile alle persone con mobilità ridotta. |
| <Smoking> | Optional | enum | Indica se questa camera è per non fumatori o per fumatori. I valori validi
sono non_smoking e smoking. |
| <BathAndToilet> | Optional | Object | Contiene informazioni su bagno e toilette in camera.
L'attributo è:
L'elemento prevede facoltativamente i seguenti elementi secondari:
Esempio: <BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet
electronic_bidet="1"
mobility_accessible="1"/>
</BathAndToilet> |
| <OpenAirBath> | Optional | empty | Fornire questo elemento quando la stanza dispone di un bagno privato all'aperto. |
| <AirConditioning> | Optional | empty | Fornisci questo elemento quando la camera è dotata di aria condizionata. |
| <Balcony> | Optional | empty | Fornisci questo elemento quando la camera ha un balcone o una veranda. |
| <Views> | Optional | Object | Le opzioni valide includono:
|
Esempi
JapaneseHotelRoomStyle non ha un valore predefinito. L'omissione
di un valore non genera un errore XML, ma la tua scheda non viene visualizzata
nei risultati di ricerca quando l'utente filtra per stile della camera o letti.
Due letti singoli
L'esempio seguente mostra come utilizzare <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>
Due letti matrimoniali
Di seguito è riportato un esempio di camera in stile giapponese western con due letti
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>
In stile giapponese senza letto
Di seguito è riportato un esempio di camera in stile giapponese senza letto. Le informazioni
sul letto non sono necessarie per la camera in stile 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>
Western giapponese con letto
Di seguito è riportato un esempio di una camera in stile japanese_western con letto di dimensioni 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 il partner non dispone delle informazioni sul numero di letti nelle camere japanese_western, segui l'esempio:
<?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>
Definisce i metadati dei pacchetti camera indipendenti dall'itinerario per una proprietà. Questo elemento contiene informazioni associate a un partner e a un hotel, ma non a un itinerario. Lo scopo previsto è definire una sola volta tutti i dati indipendenti dall'itinerario e farvi riferimento dai dati sugli itinerari.
L'elemento <PackageData> appare nella seguente posizione nella gerarchia XML del messaggio di transazione:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
L'elemento <PackageData> è simile all'elemento <RoomData>, ma
descrive le caratteristiche e i termini della tariffa che non fanno parte della descrizione fisica
di una camera. Utilizza una combinazione di <RoomData> e <PackageData> per fornire dettagli sui
pacchetti camera e le caratteristiche della tariffa. Per le singole camere che
non fanno parte di un pacchetto, utilizza solo l'elemento <RoomData>.
Puoi definire entrambi gli elementi, <RoomData> e <PackageData>, per la
stessa camera o lo stesso pacchetto camera. Quando Google visualizza la camera o il pacchetto nei
risultati di ricerca, include le descrizioni di entrambi separate da un
trattino.
Se aggiorni un singolo elemento <PackageData> per una proprietà, devi
aggiornare tutti gli elementi <PackageData> e <RoomData> relativi a tale proprietà.
Ciascun elemento <PropertyDataSet> viene considerato come l'insieme di tutti i dati sulla proprietà e
sovrascrive qualsiasi dato esistente.
Per ulteriori informazioni, consulta la sezione Metadati dei pacchetti camera.
Sintassi
L'elemento <PackageData> utilizza la seguente sintassi:
<?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>Attributi
L'elemento <PackageData> non ha attributi.
Elementi secondari
L'elemento <PackageData> prevede i seguenti elementi secondari:
| Elemento figlio | Obbligatorio? | Tipo | Descrizione |
|---|---|---|---|
| <BreakfastIncluded> | Optional | boolean | Specifica se la tariffa del pacchetto comprende la colazione.
I valori validi sono 0 (o false) e 1
(o true).
Si preferisce utilizzare |
| <ChargeCurrency> | Optional | enum | Quando e dove l'utente paga una prenotazione. Questo elemento utilizza la stessa sintassi di <ChargeCurrency> in un <Result>.
Il valore predefinito è |
| <CheckinTime> | Optional | Time | Orario di check-in più anticipato possibile. L'ora deve essere precedente alle 24:00 nell'ora locale dell'hotel. |
| <CheckoutTime> | Optional | Time | L'ora di check-out più recente possibile nell'ora locale dell'hotel. |
| <Description> | Optional | Object | Una descrizione dettagliata del pacchetto. Questo elemento deve
contenere le informazioni non fornite da altri elementi o dall'elemento
<Name>. Non utilizzare solo lettere maiuscole
nella descrizione della camera.
L'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 | Indica se un pacchetto comprende l'accesso a internet gratuito,
a differenza di altri pacchetti che non includono tale servizio. Non utilizzare questo
elemento per i pacchetti camera di un hotel che fornisce accesso gratuito a internet in tutte
le camere. Questo elemento non si applica all'accesso cablato a internet all'interno delle camere o all'accesso wireless
che non è disponibile nelle camere degli ospiti. I valori validi sono
0 (o false) e 1
(o true).
|
| <Meals> | Optional | Object | Contiene informazioni sui pasti contenuti in questo pacchetto.
L'elemento
Gli attributi facoltativi vengono utilizzati solo quando Affinché i filtri per pasto ( |
| <Name> | Required | string | Il nome del pacchetto. Questo valore deve corrispondere a quanto visualizzato nella
pagina di destinazione dell'hotel. Non utilizzare solo lettere maiuscole per impostare il valore di questo elemento.
Questo elemento prevede un singolo elemento secondario, <Name> <Text text="Bed and Breakfast" language="en"/> <Text text="Lit et petit déjeuné" language="fr"/> </Name> |
| <Occupancy> | Optional | integer | Il numero massimo di ospiti previsto per un Pacchetto camera.
Ad esempio, una suite di grandi dimensioni potrebbe ospitare fisicamente 6
persone, ma è destinata a un massimo di 4 ospiti.
Questo valore deve essere inferiore o uguale all'elemento
Il valore di Se specifichi questo elemento sia in Nota: L'elemento secondario<Occupancy> può essere accompagnato dall'elemento
<OccupancyDetails>,che specifica il tipo di ospiti
(adulti o bambini). Per la sintassi e la descrizione degli elementi secondari, consulta la sezione
<OccupancyDetails>.
|
| <PackageID> | Required | string | L'ID univoco del pacchetto. Utilizza questo ID per associare i
dati del pacchetto camera ai blocchi (Puoi utilizzare questo ID anche per fare riferimento a una definizione comune del pacchetto camera in un singolo messaggio Transaction quando definisci i dati del pacchetto camera in linea.) |
| <ParkingIncluded> | Optional | boolean | Indica se un pacchetto camera include il parcheggio gratuito, laddove
questo servizio è a pagamento nell'hotel. Non specificare
un valore per questo elemento per un hotel che offre il parcheggio gratuito.
I valori validi sono |
| <PhotoURL> | Optional | Object | (Come <PhotoURL> in <RoomData>, ma per il pacchetto (ad esempio foto dei pasti).)
|
| <Refundable> | Optional | Object | Consente di indicare una tariffa come totalmente rimborsabile o con cancellazione
senza costi. Se non viene specificato un valore, le informazioni sul rimborso non verranno visualizzate.
Le norme sui rimborsi a livello dell'elemento <PackageData> sostituiscono quelle
a livello dell'elemento <Result>. Le norme sui rimborsi a livello dell'elemento <Rates> sostituiscono
quelle a livello dell'elemento <PackageData>. I prezzi rimborsabili possono
essere evidenziati per gli utenti anche attraverso opzioni alternative,
senza modificare direttamente lo schema dei messaggi Transaction. Scopri di più su queste opzioni
Norme relative alle tariffe rimborsabili.
L'esempio seguente mostra l'elemento <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Nota: consigliamo di impostare tutti gli attributi. Quando non vengono impostati uno o più attributi, viene generato un messaggio di avviso relativo allo stato dei feed. Se non imposti alcun attributo, la tariffa non viene mostrata come rimborsabile. Gli attributi sono:
Quando si impostano gli attributi, tenere presente quanto segue:
|
| <MembershipBenefits |
Optional | boolean | La tariffa include vantaggi per lo status Elite per la durata del soggiorno. Include
i seguenti parametri:
|
| <CarRentalIncluded> | Optional | boolean | La tariffa include il noleggio senza costi dell'auto per tutta la durata del soggiorno. |
| <MilesIncluded> | Optional | boolean | La tariffa include miglia del programma frequent flyer. I parametri includono:
Nota: |
| <OnPropertyCredit> | Optional | boolean | La tariffa include credito consumabile all'interno della proprietà (alimenti e/o bevande analcoliche, accesso a resort, spa e così via). Parametro:
|
| <AirportTransportationIncluded> | Optional | Object | La tariffa include il trasporto gratuito da/per un aeroporto nelle vicinanze. L'attributo facoltativo
direction specifica la direzionalità del
trasporto. I valori validi includono:
from: Il trasporto è fornito dall'aeroporto alla
struttura. Questo è il valore predefinito se non viene specificata alcuna direzione.
to: il trasporto all'aeroporto è fornito dalla
struttura.
round_trip: il trasporto è fornito sia da che per l'aeroporto.
|
Esempi
Pacchetto camera singola
L'esempio seguente definisce un pacchetto camera singolo per 2 persone (un adulto e un bambino) con colazione inclusa:
<?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>
Metadati di camere e pacchetti
L'esempio seguente definisce i metadati della stanza e del pacchetto:
<?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>
Pacchetti multi-camera
L'esempio seguente definisce i metadati della camera e del pacchetto per più pacchetti camera:
<?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>
Pacchetto camera con tariffe
L'esempio seguente definisce i metadati di camera e pacchetto per un pacchetto camera con caratteristiche della tariffa:
<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>
Pasti e foto
L'esempio seguente definisce i metadati della camera e del pacchetto per i pasti, le foto e gli orari di 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>
Colazione
<?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>
Un contenitore per gli aggiornamenti su prezzi e disponibilità in un messaggio <Transaction>.
L'elemento <Result> compare nella seguente posizione nella
gerarchia XML del messaggio Transaction:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Utilizza <Result> per impostare o aggiornare i prezzi delle camere e definire
l'inventario disponibile. Le voci definite in questo elemento di solito fanno riferimento
ai metadati indipendenti dall'itinerario di una camera o pacchetto (come una descrizione o
un insieme di comfort) definiti in <PackageData> e <RoomData>.
In genere, i messaggi Transaction con aggiornamenti dei prezzi vengono inviati molto frequentemente. La modalità e la frequenza di tali operazioni dipendono dalla modalità di invio.
Puoi utilizzare l'elemento <Result> in un messaggio Transaction per rimuovere gli itinerari, come
descritto nella sezione Rimuovere dall'inventario.
Per ulteriori informazioni sull'utilizzo dei messaggi Transaction per aggiornare prezzi e
disponibilità, consulta la sezione Aggiungere e aggiornare l'inventario.
Un singolo messaggio Transaction può avere un numero illimitato di elementi <Result>, a condizione che le dimensioni del messaggio non superino 100 MB.
Sintassi
L'elemento <Result> utilizza la seguente sintassi:
<?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. --> <!-- Child occupancy rates should only be sent through Live pricing with context and not through Pull or Changed pricing --> <OccupancyDetails>occupancy_info</OccupancyDetails> <Rates>...</Rates> <RoomBundle>...</RoomBundle> <AllowablePointsOfSale> <PointOfSale id="landing_page_identifier"/> ... </AllowablePointsOfSale> <MilesIncluded> <NumberOfMiles>integer</NumberOfMiles> <Provider> <Text language="en" text="provider-name"> </Provider> <!-- Add Loyalty point information --> <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID> </MilesIncluded> </Result> ... </Transaction>
Attributi
L'elemento <Result> ha i seguenti attributi:
| Attributo | Obbligatorio? | Tipo | Descrizione |
|---|---|---|---|
| mergeable | Optional | boolean | Per impostazione predefinita, i nuovi prezzi per una coppia hotel e itinerario specifica
sovrascrivono eventuali prezzi precedenti (non scaduti) presenti nella cache di Google. L'attributo
mergeable consente di archiviare prezzi aggiuntivi nella cache di Google
senza eliminare le informazioni sui prezzi precedenti. Questo attributo è sempre impostato su true
per le risposte a query sui prezzi in tempo reale con contesto,
indipendentemente dalla risposta al messaggio Transaction. |
Elementi secondari
L'elemento <Result> prevede i seguenti elementi secondari:
| Elemento secondario | Obbligatorio? | Tipo | Descrizione |
|---|---|---|---|
| <AllowablePointsOfSale> | Optional | Object | Una o più pagine di destinazione idonee per
l'hotel. Una pagina di destinazione è un sito web in grado di gestire il processo di prenotazione per
l'utente finale. Per includere in modo esplicito una pagina di destinazione specifica (ed escluderne
altre), aggiungi uno o più elementi <AllowablePointsOfSale>
che corrispondano all'attributo id
dell'elemento <PointOfSale> nel file delle pagine di destinazione.
Se non includi questo elemento, tutte le pagine di destinazione definite nel file delle pagine di destinazione vengono considerate idonee all'uso per la prenotazione della camera. Per ulteriori informazioni, consulta la sezione Sintassi del file delle pagine di destinazione. |
| <Baserate> | Optional | float | Il prezzo della camera per il soggiorno. Il valore di questo elemento deve riflettere quanto segue:
Quando la camera non è disponibile per l'itinerario,
Per rimuovere un pacchetto camera, segui le istruzioni riportate nella sezione Rimuovere un pacchetto camera. L'elemento <Baserate currency="USD">1200.40</Baserate> L'elemento
|
| <ChargeCurrency> | Optional | enum | Definisce quando e dove l'utente effettua il pagamento per una prenotazione. Questo elemento può
essere utilizzato in un messaggio Transaction nell'elemento <Result>
per il prezzo dell'hotel o in un blocco <PackageData>
per un pacchetto camera.
I valori validi sono:
Il valore predefinito è |
| <Checkin> | Required | Date | La data di check-in per un itinerario che utilizza il formato Data. La combinazione dell'elemento <Nights> e dell'elemento <Checkin> costituisce un itinerario. |
| Optional | string | Obsoleto: definisce un campo personalizzato che puoi utilizzare per trasmettere dati aggiuntivi associati a un hotel. Puoi utilizzare fino a cinque
valori personalizzati con i seguenti nomi degli elementi:
Gli elementi Importante: contatta il tuo Technical Account Manager (TAM) se desideri utilizzare le variabili |
|
| <ExpirationTime> | Optional | DateTime | Data e ora in cui il prezzo si considera scaduto (minimo 3 ore).
Ti consigliamo di non fornire timestamp di scadenza se non sono essenziali per la tua struttura tariffaria. Google non pubblica prezzi scaduti e qualsiasi itinerario con un prezzo scaduto diventerà idoneo per la richiesta di prezzi in tempo reale. |
| <MilesIncluded> | Optional | boolean | La tariffa include miglia del programma frequent flyer. I parametri includono:
Nota: |
| <Nights> | Required | integer | Il numero di notti per un itinerario. Il valore dell'elemento
<Nights> deve essere un numero intero positivo.
La combinazione di <Nights> e
<Checkin> costituisce un itinerario. |
| <OtherFees> | Optional | float | Altre tariffe diverse dalle tasse e dalla tariffa di base che influiscono sul
prezzo finale di una camera. L'elemento <OtherFees> prevede
un singolo attributo obbligatorio, currency, che definisce il
codice valuta di tre lettere per le tariffe. Ad esempio: USD.
L'elemento |
| <Occupancy> | Optional | integer | Specifica il numero massimo di occupanti consentito per questa tariffa.
Quando <Occupancy> viene visualizzato direttamente sotto <Result>,
deve specificare 2 o un valore superiore. L'elemento secondario <Occupancy> può
essere accompagnato dall'elemento <OccupancyDetails>, che specifica
il tipo di ospiti (adulti o bambini). Se i tipi di ospiti non sono specificati,
si presume che siano adulti. Per la sintassi e la descrizione degli elementi secondari, consulta la sezione
<OccupancyDetails>. Se
non viene fornito l'elemento <Occupancy>, l'impostazione predefinita
per il numero di persone è 2.
Punto chiave: i tassi di occupazione dei bambini devono essere inviati solo tramite prezzi in tempo reale con contesto e non tramite prezzi pull o modificati. Nota: contatta il team di assistenza per attivare la funzionalità di invio di prezzi per numero di persone diverso da due. |
| <PackageID> | Optional | string | L'ID univoco del pacchetto per l'associazione ai dati predefiniti del pacchetto.
Utilizzato anche come valore della variabile PACKAGE-ID della pagina di destinazione.
Per ulteriori informazioni, consulta la sezione
Metadati
dei pacchetti camera.
È obbligatorio includere |
| <Property> | Required | string | L'ID di un hotel a cui si riferiscono i dati associati (prezzo,
itinerario, pacchetto camera o metadati). Il valore di questo elemento deve essere
una stringa. Il valore di questo elemento deve corrispondere all'<id> dell'hotel definito nel feed elenco hotel.
|
| <Rates> | Optional | <Rates> |
Un contenitore per uno o più blocchi <Rate>. Ogni elemento <Rate> in
<Rates> definisce un prezzo diverso per la combinazione
camera/itinerario.
Utilizza l'elemento Nota: all'interno di |
| <Refundable> | Optional | Object | Consente di indicare una tariffa come totalmente rimborsabile o con cancellazione
senza costi. Se non viene specificato un valore, le informazioni sul rimborso non verranno visualizzate.
Le norme sui rimborsi a livello dell'elemento <PackageData> sostituiscono quelle
a livello dell'elemento <Result>. Le norme sui rimborsi a livello dell'elemento <Rates> sostituiscono
quelle a livello dell'elemento <PackageData>. I prezzi rimborsabili possono
essere evidenziati per gli utenti anche attraverso opzioni alternative,
senza modificare direttamente lo schema dei messaggi Transaction. Scopri di più sulle
norme sulle tariffe rimborsabili.
L'esempio seguente mostra l'elemento <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Nota: consigliamo di impostare tutti gli attributi. Quando non vengono impostati uno o più attributi, viene generato un messaggio di avviso relativo allo stato dei feed. Se non imposti alcun attributo, la tariffa non viene mostrata come rimborsabile. Gli attributi sono:
Quando imposti gli attributi, tieni presente quanto segue:
|
| <RoomBundle> | Optional | <RoomBundle> |
Un contenitore di informazioni sulla descrizione fisica e sul costo di una camera,
eventuali pacchetti di comfort e alcuni dettagli sulle norme di acquisto per un
determinato hotel e itinerario.
In generale, usa questo elemento per definire il prezzo per la camera base e per diversi tipi di camera all'interno della stessa proprietà. Sebbene sia possibile definire le descrizioni del pacchetto camera in linea, devi utilizzare un altro messaggio Transaction per specificare tali informazioni. Poiché Google memorizza i metadati, potrai riutilizzarli senza doverli ripetere in tutti gli aggiornamenti futuri dei prezzi. |
| <RoomID> | Optional | string | L'ID univoco della camera da associare ai dati predefiniti della camera. Utilizzato anche
come valore della variabile PARTNER-ROOM-ID della pagina di destinazione.
Per ulteriori informazioni, consulta la sezione
Metadati
dei pacchetti camera.
È obbligatorio includere |
| <Tax> | Optional | float | Le tasse calcolate per il prezzo finale di una camera.
L'elemento <Tax> prevede un singolo attributo obbligatorio,
currency, che definisce il codice valuta di tre lettere
per le tasse. Ad esempio: USD. L'elemento
<Tax> è obbligatorio se
<Baserate> è maggiore di zero.
Se l'attributo "all_inclusive" dell'elemento |
| <Unavailable> | Optional | Object | Indica che l'itinerario non è disponibile per la prenotazione. Funge da
contenitore per motivi più dettagliati per cui l'itinerario non era disponibile. Uno
o più dei seguenti motivi di mancata disponibilità possono essere nidificati sotto il tag
<Unavailable>:
|
Esempi
Esempio di proprietà multiple
L'esempio seguente definisce un itinerario e il relativo prezzo per due proprietà:
<?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>
In questo esempio non vengono riportati i dettagli della camera, come descrizione, immagine e didascalia, nome della camera e capienza.
Puoi specificare queste informazioni una volta in un messaggio Transaction separato che verrà memorizzato da Google. Potrai quindi farvi riferimento in tutti i successivi aggiornamenti di prezzi e inventario. Per ulteriori informazioni, consulta la sezione Metadati dei pacchetti camera.
Esempio di tariffe multiple
L'esempio seguente definisce un singolo itinerario e una proprietà con più tariffe per diversi numeri di persone. L'elemento <Rates> può essere utilizzato per fornire prezzi multi-tariffa per una proprietà specifica. L'esempio seguente è utile anche per le proprietà in affitto per le vacanze (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>
Esempio non disponibile
L'esempio seguente definisce un itinerario la cui disponibilità non è stato possibile recuperare dai canali downstream, un secondo itinerario inferiore al numero minimo di notti e già prenotato per le date specificate e un terzo itinerario la cui proprietà è chiusa per la data di arrivo, ma che apre durante il soggiorno:
<?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>
Un contenitore per uno o più blocchi <Rate>. Ogni <Rate> in <Rates> definisce un prezzo diverso per la combinazione di camera o itinerario.
Utilizza l'elemento <Rates> solo quando sono presenti più tariffe per
la stessa combinazione camera o itinerario. Ad esempio, definisci più
tariffe per tariffe agevolate,
tariffe private o
tariffe agevolate in pacchetti camera.
L'elemento <Rates> appare nella seguente posizione nella gerarchia XML del messaggio di transazione:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>(Can also contain<Rates>) + ...
I valori impostati in un elemento <Rate> sostituiscono i valori correlati ai prezzi nell'elemento principale <Result> o <RoomBundle>. Se non sono impostati nell'elemento <Rate>,
ereditano il valore dall'elemento principale. Solo
<AllowablePointsofSale> viene ereditato dall'elemento <RoomBundle>.
Sintassi
L'elemento <Rates> utilizza la seguente sintassi:
<?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> ... </Rate> ... </Rates> </Result> ... </Transaction>
Attributi
L'elemento <Rates> prevede i seguenti attributi:
| Attributo | Obbligatorio? | Descrizione |
|---|---|---|
| rate_rule_id | Optional | Per le tariffe condizionate, questo ID abbina una tariffa a una definizione nel file Definizione regola tariffa. Il limite di caratteri per questo campo è di 40 caratteri. Questo ID non può essere una stringa vuota. |
Elementi secondari
L'elemento <Rates> ha i seguenti elementi figlio:
| Elemento figlio | Obbligatorio? | Tipo | Descrizione |
|---|---|---|---|
| <AllowablePointsOfSale> | Optional | Object | Una o più pagine di destinazione idonee
per l'hotel. Questo elemento utilizza la stessa sintassi di
<AllowablePointsOfSale> in <Result>. |
| <Baserate> | Required | float | Il prezzo della camera per il soggiorno. Questo elemento utilizza la stessa sintassi di
<Baserate> in <Result>.
Nota: l'elemento figlio |
| <ChargeCurrency> | Optional | enum | Definisce quando e dove l'utente effettua il pagamento per una prenotazione. Questo elemento utilizza la
stessa sintassi di <ChargeCurrency> in
<Result>. |
| Optional | string | Obsoleto: campi personalizzati che puoi utilizzare per trasmettere
dati aggiuntivi associati a un hotel a una pagina di destinazione. Questo elemento
utilizza la stessa sintassi di <Custom[1‑5]> in
<Result>. Un campo personalizzato può contenere un massimo di 200 caratteri. Per
ulteriori informazioni, consulta la
sezione sui
file delle pagine di destinazione. Se gli elementi <Custom> sono forniti nell'elemento
<Result>, non vengono ereditati nell'elemento
<RoomBundle> e devono essere definiti separatamente per ogni
<RoomBundle> oppure possono essere inclusi in <PackageData> se
necessario.
Importante: contatta il tuo Technical Account Manager (TAM) se desideri utilizzare le variabili |
|
| <ExpirationTime> | Optional | DateTime | La data e l'ora in cui la tariffa viene considerata scaduta. Questo
elemento utilizza la stessa sintassi di
<ExpirationTime> in <Result>. |
| <MilesIncluded> | Optional | boolean | La tariffa include miglia del programma frequent flyer. I parametri includono:
Nota: |
| <Occupancy> | Optional | integer | Specifica il numero massimo di occupanti consentito per questa tariffa. Se non specificato, si presume che sia uguale alla tariffa principale.
L'elemento secondario |
| <OtherFees> | Required | float | Altre tariffe diverse dalle tasse e dalla tariffa di base che influiscono sul prezzo finale
di una camera. Questo elemento utilizza la stessa sintassi di
<OtherFees> in un elemento <Result>.
Se l'attributo "all_inclusive" dell'elemento |
| <Refundable> | Optional | Object | Consente di indicare una tariffa come totalmente rimborsabile o con cancellazione
senza costi. Se non viene specificato un valore, le informazioni sul rimborso non verranno visualizzate.
Le norme sui rimborsi a livello dell'elemento <PackageData> sostituiscono le norme sui rimborsi
a livello dell'elemento <Result>. Le norme sui rimborsi a livello dell'elemento <Rates> sostituiscono
quelle a livello dell'elemento <PackageData>. I prezzi rimborsabili possono
essere evidenziati per gli utenti anche attraverso opzioni alternative,
senza modificare direttamente lo schema dei messaggi Transaction. Scopri di più su queste opzioni
Norme relative alle tariffe rimborsabili.
L'esempio seguente mostra l'elemento <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Nota: consigliamo di impostare tutti gli attributi. Quando non vengono impostati uno o più attributi, viene generato un messaggio di avviso relativo allo stato dei feed. Se non imposti alcun attributo, la tariffa non viene mostrata come rimborsabile. Gli attributi sono:
Quando imposti gli attributi, tieni presente quanto segue:
|
| <Tax> | Required | float | Le tasse calcolate per il prezzo finale di una camera. Questo
elemento utilizza la stessa sintassi di <Tax> in un elemento
<Result>. |
Esempi
Tasso base e tasso condizionale
L'esempio seguente mostra un messaggio Transaction che contiene una tariffa di base e una tariffa agevolata:
<?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>
</Rate>
</Rates>
</Result>
</Transaction>
Tariffe agevolate multiple
L'esempio seguente definisce una tariffa di base e più tariffe agevolate
in un elemento <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 and it should be within 50 characters in length for optimal
performance. 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>
<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>
</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>
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>
<RoomBundle>
Definisce i prezzi e la disponibilità dei pacchetti camera come elemento secondario di <Result> in un messaggio <Transaction>. Definisci un elemento separato per ogni
combinazione pacchetto o itinerario. Per definire il pacchetto e i termini dei
pacchetti camera, utilizza <RoomData>.
L'elemento <RoomBundle> appare nella seguente posizione nella gerarchia XML del messaggio di transazione:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Per ulteriori informazioni, consulta la sezione Utilizzare i pacchetti camera.
Sintassi
L'elemento <RoomBundle> utilizza la seguente sintassi:
<?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> </RoomBundle> ... </Result> </Transaction>
Attributi
L'elemento <RoomBundle> non ha attributi.
Elementi secondari
L'elemento <RoomBundle> ha i seguenti elementi figlio:
| Elemento figlio | Obbligatorio? | Tipo | Descrizione |
|---|---|---|---|
| <Baserate> | Required | float | Definisce il prezzo del pacchetto camera per il soggiorno. Questo elemento utilizza la stessa sintassi di <Baserate> in <Result>, con la seguente eccezione:
|
| <BreakfastIncluded> | Optional | boolean | Specifica se questo pacchetto camera include la colazione nella tariffa. |
| <ChargeCurrency> | Optional | enum | Quando e dove l'utente paga una prenotazione. Questo elemento utilizza la stessa sintassi di <ChargeCurrency> in un <Result>.
Il valore predefinito è |
| Optional | string | Obsoleto:campi personalizzati per trasmettere dati aggiuntivi
alle pagine di destinazione per il pacchetto camera. Questi elementi utilizzano la stessa
sintassi di <Custom[1-5]> in <Result>. Un campo personalizzato può contenere un massimo di 200 caratteri. Per saperne di più, consulta la sezione sui
file delle pagine di destinazione.
Le variabili personalizzate vengono elencate solo quando invii i prezzi
nel messaggio Transaction. Se gli elementi <Custom> sono forniti nell'elemento
<Result>, non vengono ereditati nell'elemento
<RoomBundle> e devono essere definiti separatamente per ogni
<RoomBundle> oppure possono essere inclusi in <PackageData> se
necessario.
Importante: contatta il tuo Technical Account Manager (TAM) se desideri utilizzare le variabili |
|
| <InternetIncluded> | Optional | boolean | Se un pacchetto camera include l'accesso a Internet gratuito, mentre altri pacchetti non includono tale servizio. Non impostare questo elemento per i pacchetti camera di un hotel che offre Internet gratuito in tutte le camere. Questo elemento non si applica alla connessione Internet cablata in camera o alla connessione Internet wireless non disponibile nelle camere degli ospiti. |
| <MilesIncluded> | Optional | boolean | La tariffa include miglia del programma frequent flyer. I parametri includono:
Nota: |
| <Occupancy> | Required | integer | Specifica il numero massimo di occupanti consentito per questa tariffa. Ad esempio, una
suite di grandi dimensioni potrebbe ospitare fisicamente 6 persone, ma il
"Pacchetto luna di miele" ne prevede solo 2.
Questo valore deve essere minore o uguale a Quando definisci il numero di persone nell'URL pagina di destinazione, utilizza le
variabili Il valore di Note:
|
| <OtherFees> | Required | float | Altre tariffe diverse dalle tasse e dalla tariffa di base che influiscono sul
prezzo finale di una camera. L'elemento <OtherFees> prevede
un singolo attributo obbligatorio, currency, che definisce il
codice valuta di tre lettere per le tariffe. Ad esempio, utilizza
USD per i dollari statunitensi. |
| <PackageID> | Optional (recommended) | string | L'ID univoco per i dati del pacchetto. Utilizza questo ID per associare i
dati del pacchetto camera con quelli inviati in <PackageData>. Per
ulteriori informazioni, consulta la sezione
Metadati
dei pacchetti camera. (Puoi
utilizzare questo ID anche per fare riferimento a una definizione comune del pacchetto camera
in un singolo messaggio Transaction quando definisci i dati del pacchetto
in linea.) |
| <ParkingIncluded> | Optional | boolean | Indica se un pacchetto camera include il parcheggio gratuito, laddove
questo servizio è a pagamento nell'hotel. Non specificare
un valore per questo elemento per un hotel che offre il parcheggio gratuito.
I valori validi sono |
| <RatePlanID> | Optional | string | L'ID piano tariffario rappresenta l'identificatore univoco di una
combinazione camera e pacchetto. Ad esempio, dato un valore <RoomID> pari a 5 e un valore <PackageID> pari a ABC, potresti usare un valore di 5-ABC per <RatePlanID>. Consigliamo vivamente di utilizzare RatePlanID come variabile per creare l'URL della landing page dinamica (in precedenza Point of Sale).
Nota: per prestazioni ottimali, RatePlanID deve avere una lunghezza massima di 50 caratteri. Per ulteriori informazioni, fare riferimento a Utilizzo di variabili e condizioni. |
| <Rates> | Optional | <Rates> |
Tariffe che sostituiscono le impostazioni predefinite per questo pacchetto camera. Questo
elemento utilizza la stessa sintassi di <Rates> in <Result>. |
| <Refundable> | Optional | Object | Consente di indicare una tariffa come totalmente rimborsabile o con cancellazione
senza costi. Se non viene specificato un valore, le informazioni sul rimborso non verranno visualizzate.
Le norme sui rimborsi a livello dell'elemento <PackageData> sostituiscono quelle
a livello dell'elemento <Result>. Le norme sui rimborsi a livello dell'elemento <Rates> sostituiscono
quelle a livello dell'elemento <PackageData>. I prezzi rimborsabili possono
essere evidenziati per gli utenti anche attraverso opzioni alternative,
senza modificare direttamente lo schema dei messaggi Transaction. Scopri di più su queste opzioni
Norme relative alle tariffe rimborsabili.
L'esempio seguente mostra l'elemento <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Nota: consigliamo di impostare tutti gli attributi. Quando non vengono impostati uno o più attributi, viene generato un messaggio di avviso relativo allo stato dei feed. Se non imposti alcun attributo, la tariffa non viene mostrata come rimborsabile. Gli attributi sono:
Quando si impostano gli attributi, tenere presente quanto segue:
|
| <RoomID> | Required | string | L'ID univoco per i dati della camera. Utilizza questo ID per associare i
dati del pacchetto camera con quelli inviati nell'elemento <RoomData>.
Per ulteriori informazioni, consulta la sezione
Metadati dei pacchetti camera. Puoi utilizzare questo ID anche per fare riferimento a una
definizione comune della camera in un singolo messaggio Transaction quando definisci
i dati della camera in linea. |
| <Tax> | Required | float | Le tasse calcolate per il prezzo finale di una camera.
L'elemento <Tax> prevede un singolo attributo obbligatorio,
currency, che definisce il codice valuta di tre lettere
per le tasse. Ad esempio, utilizza USD per i dollari statunitensi. |
Esempi
Pacchetto per uso singolo
L'esempio seguente definisce una risposta con un singolo pacchetto per numero di persone.
Quando un utente seleziona 1 nel selettore Numero di persone, Google mostra il prezzo idoneo più basso indipendentemente dal numero di persone.
Se non è disponibile un prezzo per camera singola, Google mostrerà il prezzo più basso per camera doppia. Si noti che i prezzi per l'occupazione singola non vengono interrogati in tempo reale se per un itinerario sono memorizzati nella cache i prezzi per l'occupazione doppia o superiore.
Questo esempio fa riferimento ai metadati predefiniti di stanze e pacchetti con gli elementi <RoomID> e <PackageID>. Utilizza gli elementi <RoomData> e
<PackageData> per definire queste informazioni.
<!-- 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>
Due o più occupazioni
L'esempio seguente definisce una risposta contenente due o più occupazioni.
Questo esempio fa riferimento ai metadati predefiniti di stanze e pacchetti con gli elementi <RoomID> e <PackageID>. Utilizza gli elementi <RoomData> e
<PackageData> per definire queste informazioni.
<!-- 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>
Più pacchetti camera
L'esempio seguente imposta l'occupazione in più pacchetti di camere per dimostrare i possibili prezzi delle camere dell'ostello.
<?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>
Tariffe condizionali multiple
L'esempio seguente definisce una tariffa di base e più tariffe agevolate
in un elemento <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 and it should be within 50 characters in length for optimal
performance. 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>
<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>
</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>
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>
<OccupancyDetails>
L'elemento secondario <Occupancy> in un messaggio Transaction specifica il numero massimo di ospiti
per una camera o un pacchetto. L'elemento <OccupancyDetails> può contenere ulteriori informazioni
quali il numero e il tipo di ospiti (adulti o bambini).
Quando <Occupancy> e <OccupancyDetails> compaiono all'interno dell'elemento <Rates> di <Result> o <RoomBundle>, significa che la tariffa è vincolata dai dettagli di occupazione.
Se includi <OccupancyDetails> in un <RoomBundle>, insieme a un elemento <Rate> nidificato, non puoi inviare un <Occupancy> di base all'interno di <Rate>; ti consigliamo invece una delle seguenti opzioni:
- Ometti l'occupazione da
<Rate>: in questo caso,<Rate>eredita<OccupancyDetails>direttamente da<RoomBundle>
o
- Duplicato
<OccupancyDetails>: in questo caso, invia un<OccupancyDetails>identico aggiuntivo sia nell'elemento<RoomBundle>che in quello nidificato<Rate>
Sintassi
Quando presente, l'elemento <OccupancyDetails> è sempre preceduto da <Occupancy>.
Nota la seguente sintassi:
<?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>Elementi secondari
L'elemento <OccupancyDetails> prevede i seguenti elementi secondari:
| Elemento secondario | Obbligatorio? | Tipo | Descrizione |
|---|---|---|---|
| <NumAdults> | Required | integer | Il numero di ospiti adulti. Minimo 1, massimo 20. |
| <Children> | Optional | Object | Un contenitore per uno o più elementi <Child>. |
| <Child age> | Optional | integer | L'età massima per questo bambino, ad esempio <Child age="17">. |
Esempi
Gli esempi seguenti mostrano come <OccupancyDetails> può essere inserito in
<Results>, <RoomBundle> o nell'elemento secondario <Rates>.
Risposta del risultato
L'esempio seguente definisce un itinerario e i relativi prezzi per una proprietà in risposta a una query sui prezzi in tempo reale in cui l'utente ha specificato il numero e il tipo di ospiti. In questo caso, i dati per <OccupancyDetails>, ovvero 2 adulti e
1 bambino, sono inseriti direttamente in <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>
Risposta alle tariffe
L'esempio seguente definisce un itinerario e i relativi prezzi per 1 adulto
e 1 bambino. In questo caso, <OccupancyDetails> è inserito
all'interno dell'elemento <Rates> di <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>
<AllowablePointsOfSale>
<PointOfSale id="yourhotelpartnersite.com"/>
</AllowablePointsOfSale>
</Rate>
</Rates>
</Result>
</Transaction>
Pacchetto camera
L'esempio seguente definisce il numero di persone come 2 adulti e 1 bambino per
due notti, con una tariffa rimborsabile. In questo caso, <OccupancyDetails> è inserito
all'interno di <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>
Più pacchetti camera
L'esempio seguente definisce più tariffe <RoomBundle> limitate a un numero di persone pari a 2 adulti e 2 bambini. In questo caso, <OccupancyDetails> è inserito all'interno dell'elemento <Rates> di <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>
<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>
</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>
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>