En esta página, se proporciona una referencia para los mensajes de transacción basados en XML.
<Transaction>
El elemento raíz de un mensaje de transacción es <Transaction>
. Es un contenedor de información descriptiva sobre habitaciones y paquetes, y sobre los precios y la disponibilidad de habitaciones y paquetes.
El elemento <Transaction>
aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Los mensajes que usan <Transaction>
como elemento raíz requieren al menos un elemento secundario. Los mensajes de transacción pueden tener cualquier cantidad de elementos secundarios, siempre y cuando el tamaño total del mensaje no supere los 100 MB.
Sintaxis
El elemento <Transaction>
usa la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp" id="transaction_ID">
<!-- Defines data about a room or package (Room Bundle) -->
<PropertyDataSet>
...
</PropertyDataSet>
<!-- Updates/sets prices and availability for rooms and Room Bundles -->
<!-- (Also removes itineraries from inventory) -->
<Result>
...
</Result>
</Transaction>
Atributos
El elemento <Transaction>
tiene los siguientes atributos:
Atributo | ¿Es obligatorio? | Tipo | Descripción |
---|---|---|---|
id | Required | string | Es un identificador único para cada mensaje de Transaction. |
partner | Optional | string | Es la cuenta de socio para la que se envía el mensaje de transacción. Por lo general, se usa si tu backend proporciona feeds de precios para varias cuentas de socios. Este valor de cadena es el valor de "Clave de socio" que se indica en la página Configuración de la cuenta de Hotel Center. |
timestamp | Required | DateTime | Es el momento en que se envió el mensaje de Transaction. Se procesará cualquier mensaje enviado con una marca de tiempo dentro de las 24 horas anteriores, y se descartarán los que no tengan una. Los mensajes se procesan en el orden de |
Elementos secundarios
El elemento <Transaction>
tiene los siguientes elementos secundarios:
Elemento secundario | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
<PropertyDataSet> | Optional* | <PropertyDataSet> |
Describe una habitación específica y los paquetes de habitaciones. Por lo general, usas este elemento en un mensaje de Transaction independiente para definir valores compartidos para los paquetes de habitaciones y reducir el tamaño de tus mensajes de Transaction. |
<Result> | Optional* | <Result> |
Son los datos de precios del itinerario de una habitación o de un elemento |
* Se requiere al menos uno de los siguientes valores: <PropertyDataSet> o <Result> . |
Ejemplos
Datos de la habitación
En el siguiente ejemplo, se definen los datos de la habitación en un mensaje de transacción:
<?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>
Datos de precios
En el siguiente ejemplo, se definen los datos de precios en un mensaje de Transaction:
<?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>
Tarifas por noche
En el siguiente ejemplo, se definen los datos de precios para 1 a 7 noches a partir del 7 de junio de 2023:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-08-24T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">209.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">419.98</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>3</Nights>
<Baserate currency="USD">614.97</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>4</Nights>
<Baserate currency="USD">819.96</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>5</Nights>
<Baserate currency="USD">999.95</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>6</Nights>
<Baserate currency="USD">1193.94</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>7</Nights>
<Baserate currency="USD">1259.93</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
</Transaction>
Tarifas base y condicionales
En el siguiente ejemplo, se muestra un mensaje de Transaction que contiene una tarifa base y una tarifa condicional:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">200.00</Baserate>
<Tax currency="USD">20.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates -->
<Rate rate_rule_id="mobile">
<!-- Override base rate and taxes for conditional rates -->
<Baserate currency="USD">180.00</Baserate>
<Tax currency="USD">18.00</Tax>
</Rate>
</Rates>
</Result>
</Transaction>
Quitar inventario
En el siguiente ejemplo, se quitan varios inventarios (estadías de 1 noche para varias fechas diferentes) de un hotel:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-05-23T16:20:00-04:00" id="42">
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-23</Checkin>
<Nights>1</Nights>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-24</Checkin>
<Nights>1</Nights>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
<!---Sending <Baserate> is optional with <Unavailable> -->
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-25</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">-1</Baserate>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
</Transaction>
<PropertyDataSet>
Es un contenedor para la información de habitaciones y paquetes (o paquete de habitación) en un mensaje de <Transaction>
. Los valores establecidos en un hotel anulan los valores establecidos en un socio.
Google almacena esta información para que no tengas que definirla cada vez que envíes actualizaciones de precios.
El elemento <PropertyDataSet>
aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Para obtener más información, consulta Metadatos de Room Bundle.
Sintaxis
El elemento <PropertyDataSet>
usa la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet> <!-- (Required) ID that matches the Hotel List Feed --> <Property>hotel_ID</Property> <!-- (Optional) Defines metadata about a room --> <RoomData> ... </RoomData> <!-- (Optional) Defines package metadata to be paired with rooms (Room Bundles) --> <PackageData> ... </PackageData> </PropertyDataSet> ... </Transaction>
Atributos
El elemento <PropertyDataSet>
no tiene atributos.
Elementos secundarios
El elemento <PropertyDataSet>
tiene los siguientes elementos secundarios:
Elemento secundario | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
<PackageData> | Optional* | <PackageData> |
Describe un paquete de habitación. Estos datos se asocian con un socio y un hotel, pero no con un itinerario. Este elemento es similar a <RoomData> , pero describe las comodidades y las condiciones que no forman parte de la descripción física de la habitación.
Haces referencia al ID del paquete en las actualizaciones de precios. Para obtener más información, consulta Metadatos de Room Bundle. |
<Property> | Required | string | Es el ID de un hotel al que se aplican los datos asociados. El valor de este elemento debe ser una cadena que coincida con el <id> de la ficha en tu feed de lista de hoteles.
|
<RoomData> | Optional* | <RoomData> |
Describe una habitación. Estos datos se asocian con un socio y un hotel, pero no con un itinerario.
Haces referencia al ID de la habitación en las actualizaciones de precios. |
* Se requiere al menos uno de los siguientes valores: <PackageData> o <RoomData> . |
Ejemplos
Datos de habitaciones y paquetes
En el siguiente ejemplo, se muestran los datos de la habitación y del paquete en un objeto <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>
Cuando envíes los precios y la disponibilidad de esta habitación y paquete de habitaciones, haz referencia a los IDs de la habitación y del paquete en tus mensajes de precios. El resultado es que reduces en gran medida el tamaño de tus mensajes y también la cantidad de errores que podrías encontrar debido a datos duplicados. Para obtener más información, consulta Metadatos de Room Bundle.
<RoomData>
Define metadatos independientes del itinerario sobre las habitaciones y, por extensión, los paquetes de habitaciones (ya que estos son habitaciones más servicios adicionales). Usa <RoomData>
para reducir la repetición de datos descriptivos en tu feed de precios.
El elemento <RoomData>
aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Los elementos <RoomData>
contienen información asociada con un socio y un hotel, pero no con un itinerario. El propósito previsto es para todos los datos que no son de itinerario.
El elemento <RoomData>
es similar a <PackageData>
, pero describe la habitación física en lugar de las comodidades y las condiciones de un paquete. Usas <RoomData>
y <PackageData>
en combinación para proporcionar detalles sobre los paquetes de Room. Para las habitaciones individuales que no forman parte de un paquete, usa solo <RoomData>
.
Puedes definir los elementos <RoomData>
y <PackageData>
para la misma habitación o el mismo paquete de habitaciones. Cuando Google muestre esa habitación o paquete en los resultados de la búsqueda, incluirá las descripciones de ambos, separadas por un guion.
Para obtener más información, consulta Metadatos de Room Bundle.
Sintaxis
El elemento <RoomData>
usa la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet> ... <RoomData> <RoomID>room_ID</RoomID> <Name> <Text text="room_name" language="language_code"/> ... </Name> <Description> <Text text="room_description" language="language_code"/> ... </Description> <Capacity>max_number_of_occupants</Capacity> <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults, children, or seniors --></OccupancyDetails> <OccupancySettings> <MinOccupancy>min_number_of_occupants</MinOccupancy> <MinAge>min_age_of_occupants</MinAge> </OccupancySettings> <PhotoURL> <Caption> <Text text="photo_description" language="language_code"/> ... </Caption> <URL>photo_location</URL> </PhotoURL> <RoomFeatures> ... </RoomFeatures> </RoomData> ... </PropertyDataSet> </Transaction>
Atributos
El elemento <RoomData>
no tiene atributos.
Elementos secundarios
El elemento <RoomData>
tiene los siguientes elementos secundarios:
Elemento secundario | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
<Capacity> | Optional | integer | Es la cantidad máxima de huéspedes que una habitación puede alojar físicamente. En el caso de una habitación, la capacidad debe ser mayor o igual que la ocupación.
Cuando se especifica, este valor debe ser igual o mayor que el valor del elemento El valor de |
<Description> | Optional | Object | Es una descripción detallada de la habitación. Este elemento debe contener información que no se describa en otros elementos o en el elemento <Name> . No debes usar todas las letras en mayúsculas cuando especifiques la descripción de la habitación.
El elemento
Usa un elemento En el siguiente ejemplo, se muestran las versiones en francés y en inglés de la descripción de la habitación: <Description> <Text text="Two queen-sized beds" language="en"/> <Text text="Deux lits de la reine" language="fr"/> </Description> |
<Name> | Required | string | Es el nombre de la categoría de la habitación. Este valor debe coincidir con lo que aparece en la página de destino del hotel (anteriormente, punto de venta). No establezcas el valor de este elemento en todas las letras mayúsculas.
Este elemento toma un solo elemento secundario,
Usa un elemento En el siguiente ejemplo, se muestran las versiones en francés y en inglés del nombre de la sala: <Name> <Text text="Standard Double Room" language="en"/> <Text text="Le chambre double" language="fr"/> </Name> |
<Occupancy> | Optional | integer | Es la cantidad máxima de huéspedes para los que está destinada una habitación.
Por ejemplo, una suite grande podría tener capacidad física para 6 personas, pero está diseñada para un máximo de 4.
Este valor debe ser menor o igual que el elemento El valor de
|
<OccupancySettings> | Optional | Object | Es la configuración que puede restringir o modificar los requisitos de ocupación de una habitación.
El elemento
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> No es necesario incluir todos los elementos secundarios. |
<PhotoURL> | Optional | Object | Es una URL y un título opcional para una foto de la habitación o el paquete de habitaciones determinado. Puedes especificar más de un <PhotoURL> para una habitación o un paquete de habitaciones. Cada URL de foto debe estar en su propio objeto <PhotoURL> .
Este elemento toma los siguientes elementos secundarios:
Ejemplo: <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 información sobre las características de la habitación. |
<RoomID> | Required | string | Es el ID único de la habitación. Usa este ID para hacer coincidir los datos de la habitación con los bloques <Result> en tus actualizaciones de precios. Para obtener más información, consulta Metadatos de Room Bundle. (También puedes usar este ID para hacer referencia a una definición de habitación común en un solo mensaje de Transaction cuando definas los datos de la habitación de forma intercalada). |
Ejemplos
Datos de la habitación
En el siguiente ejemplo, se definen los datos de la habitación:
<?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>
Metadatos de la habitación y el paquete
En el siguiente ejemplo, se definen los metadatos de la habitación y el paquete:
<?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>
Paquetes de varias habitaciones
En el siguiente ejemplo, se definen los metadatos de la habitación y el paquete para varios Room Bundles:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<!-- A transaction message with room types result. -->
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
<RoomID>single</RoomID>
<Name>
<Text text="Single room" language="en"/>
<Text text="Chambre simple" language="fr"/>
</Name>
<Description>
<Text text="A single room" language="en"/>
<Text text="Le chambre simple" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image1235.jpg</URL>
</PhotoURL>
<Capacity>2</Capacity>
</RoomData>
<RoomData>
<RoomID>double</RoomID>
<Name>
<Text text="Double room" language="en"/>
<Text text="Chambre double" language="fr"/>
</Name>
<Occupancy>1</Occupancy>
</RoomData>
<PackageData>
<PackageID>refundbreakfast</PackageID>
<Name>
<Text text="Refundable Room with Breakfast" language="en"/>
<Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Continental Breakfast" language="en"/>
<Text text="Petit déjeuner continental" language="fr"/>
</Description>
<ChargeCurrency>hotel</ChargeCurrency>
<Refundable available="1" refundable_until_days="3"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>prepaid</PackageID>
<Name>
<Text text="Nonrefundable" language="en"/>
<Text text="Non remboursable" language="fr"/>
</Name>
<Description>
<Text text="Blah blah blad" language="en"/>
<Text text="Le blah blah blad" language="fr"/>
</Description>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="0"/>
</PackageData>
</PropertyDataSet>
</Transaction>
<RoomFeatures>
Define las características que se encuentran en la habitación.
El elemento <RoomFeatures>
aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<RoomFeatures>
Sintaxis
El elemento <RoomFeatures>
usa la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet ... > ... <RoomData> <RoomFeatures> <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle> <Beds> <Bed size="[single|semi_double|double|queen|king]"> <Width unit="cm" number="width"/> <Length unit="cm" number="length"/> </Bed> <!-- Include with any additional beds. --> </Beds> <Suite/> <Capsule/> <Roomsharing>[shared|private]</Roomsharing> <Outdoor/> <MobilityAccessible/> <Smoking>[smoking|non_smoking]</Smoking> <BathAndToilet relation="[together|separate]"> <Bath bathtub="[false|true]" shower="[false|true]"/> <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/> </BathAndToilet> <OpenAirBath/> <AirConditioning/> <Balcony/> <Views> <!-- (Optional) Defines the type of views from the room. --> <!-- Example: <OceanView/> --> </Views> </RoomFeatures> ... </RoomData> ... </PropertyDataSet> </Transactions>
Atributos
El elemento <RoomFeatures>
no tiene atributos.
Elementos secundarios
El elemento <RoomFeatures>
tiene los siguientes elementos secundarios:
Elemento secundario | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
<JapaneseHotelRoomStyle> | Optional | enum | Indica el estilo de una habitación de hotel japonesa. Estos son los valores válidos:
|
<Beds> | Optional | Object | Contiene tantos <Bed> como tiene la habitación. Ten en cuenta que los futones japoneses no deben incluirse aquí.
Cada
<Bed> tiene los siguientes elementos secundarios:
<Beds> <Bed size="double"> <Width unit="cm" number="140"/> <Length unit="cm" number="195"/> </Bed> <Bed/> <!-- Size unknown --> </Beds> |
<Suite> | Optional | empty | Proporciona este elemento cuando la habitación sea una suite. |
<Capsule> | Optional | empty | Proporciona este elemento cuando la habitación sea una cápsula. |
<Roomsharing> | Optional | enum | Indica si esta habitación se comparte con otros ocupantes, como propietarios u otros huéspedes. Los valores válidos son shared y private . |
<Outdoor> | Optional | empty | Proporciona este elemento cuando la habitación sea un alojamiento al aire libre que no tenga paredes fijas, plomería ni control de clima. Por ejemplo, las habitaciones de hotel no son alojamientos al aire libre, mientras que los campamentos donde los huéspedes se alojan en carpas y los parques para autocaravanas donde los huéspedes traen sus propias autocaravanas sí lo son. |
<MobilityAccessible> | Optional | empty | Proporciona este elemento cuando la habitación sea accesible para personas con movilidad reducida. |
<Smoking> | Optional | enum | Indica si la habitación es para fumadores o no fumadores. Los valores válidos
son non_smoking y smoking . |
<BathAndToilet> | Optional | Object | Contiene información sobre el baño y el inodoro de la habitación.
El atributo es el siguiente:
De manera opcional, el elemento toma los siguientes elementos secundarios:
Ejemplo: <BathAndToilet relation="separate"> <Bath bathtub="1" shower="1"/> <Toilet electronic_bidet="1" mobility_accessible="1"/> </BathAndToilet> |
<OpenAirBath> | Optional | empty | Proporciona este elemento cuando la habitación tenga un baño privado al aire libre. |
<AirConditioning> | Optional | empty | Proporciona este elemento cuando la habitación tenga aire acondicionado. |
<Balcony> | Optional | empty | Proporciona este elemento cuando la habitación tenga balcón o terraza. |
<Views> | Optional | Object | Las opciones válidas incluyen las siguientes:
|
Ejemplos
JapaneseHotelRoomStyle
no tiene un valor predeterminado. Si omites un valor, no se generará un error de XML, pero tu ficha no se mostrará en los resultados de la búsqueda cuando el usuario filtre por estilo de habitación o camas.
Dos camas individuales
En el siguiente ejemplo, se muestra cómo usar <RoomFeatures>
:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two single beds -->
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
</Beds>
<Suite/>
<Capsule/>
<Roomsharing>private</Roomsharing>
<Outdoor/>
<MobilityAccessible/>
<Smoking>non_smoking</Smoking>
<BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet electronic_bidet="1" mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath/>
<AirConditioning/>
<Balcony/>
<Views>
<LakeView/>
<MarinaView/>
<BeachView/>
<ForestView/>
<MountainView/>
<NatureView/>
</Views>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Dos camas dobles
A continuación, se muestra un ejemplo de una habitación japonesa con estilo western
y dos camas double
.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two double beds-->
<Bed size="double"></Bed>
<Bed size="double"></Bed>
</Beds>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Estilo japonés sin cama
A continuación, se muestra un ejemplo de una habitación de estilo japonés sin cama. No se requiere información sobre la cama para la habitación de estilo japanese
.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Habitación japonesa occidental con cama
A continuación, se muestra un ejemplo de una habitación de estilo japanese_western
con una cama de tamaño 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>
Si el socio no tiene la información sobre la cantidad de camas en las habitaciones de japanese_western
, sigue este ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
<PackageData>
Define metadatos independientes del itinerario sobre los paquetes de habitaciones para una propiedad. Este elemento contiene información asociada con un socio y un hotel, pero no con un itinerario. El propósito es definir todos los datos que no son de itinerario una vez y hacer referencia a ellos desde los datos de itinerario.
El elemento <PackageData>
aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
El elemento <PackageData>
es similar a <RoomData>
, pero describe las características y las condiciones de las tarifas que no forman parte de la descripción física de la habitación. Usas <RoomData>
y <PackageData>
en combinación para proporcionar detalles sobre los paquetes de habitación y las funciones de tarifas. Para las habitaciones individuales que no forman parte de un paquete, usa solo <RoomData>
.
Puedes definir los elementos <RoomData>
y <PackageData>
para la misma habitación o paquete de habitaciones. Cuando Google muestre esa habitación o paquete en los resultados de la búsqueda, incluirá las descripciones de ambos, separadas por un guion.
Si actualizas un solo elemento <PackageData>
para una propiedad, debes actualizar todos los elementos <PackageData>
y <RoomData>
de la propiedad.
Cada <PropertyDataSet>
se considera todos los datos sobre la propiedad y reemplaza cualquier dato existente.
Para obtener más información, consulta Metadatos de Room Bundle.
Sintaxis
El elemento <PackageData>
usa la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
<PropertyDataSet ... >
<PackageData>
<PackageID>package_ID</PackageID>
<Name>
<Text text="package_name" language="language_code"/>
...
</Name>
<Description>
<Text text="package_description" language="language_code"/>
...
</Description>
<Refundable available="[false|true]" refundable_until_days="number_of_days"
refundable_until_time="time"/>
<ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
<Occupancy>max_number_of_intended_occupants</Occupancy>
<OccupancyDetails><!-- optional info about the types of guests,
whether adults or children --></OccupancyDetails>
<!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
<BreakfastIncluded>boolean_value</BreakfastIncluded>
<InternetIncluded>boolean_value</InternetIncluded>
<ParkingIncluded>boolean_value</ParkingIncluded>
<PhotoURL>
<Caption>
<Text text="photo_description" language="language_code"/>
...
</Caption>
<URL>photo_location</URL>
</PhotoURL>
...
<Meals>
<Breakfast
included="[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|false]"/>
<Dinner
included="[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|false]"/>
</Meals>
<CheckinTime>checkin_time</CheckinTime>
<CheckoutTime>checkout_time</CheckoutTime>
<MembershipBenefitsIncluded>
<ProgramName>
<Text language="en" text="Special Rewards">
</ProgramName>
<ProgramLevel>
<Text language="en" text="Platinum">
</ProgramLevel>
</MembershipBenefitsIncluded>
<OnPropertyCredit>
<Amount currency="USD">123.45</Amount>
</OnPropertyCredit>
</PackageData>
<!-- a PackageID with a MilesIncluded
rate feature -->
<PackageData>
<PackageID>room_with_miles</PackageID>
<Name>
<Text text="Room with Bundled Miles" language="en">
</Name>
<ChargeCurrency>hotel </ChargeCurrency>
<MilesIncluded>
<NumberOfMiles>integer</NumberOfMiles>
<Provider>
<Text language="en" text="provider-name">
</Provider>
<!-- Add Loyalty point information -->
<LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
</MilesIncluded>
</PackageData>
...
...
</PropertyDataSet>
...
</Transaction>
Atributos
El elemento <PackageData>
no tiene atributos.
Elementos secundarios
El elemento <PackageData>
tiene los siguientes elementos secundarios:
Elemento secundario | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
<BreakfastIncluded> | Optional | boolean | Especifica si este paquete incluye desayuno con la tarifa.
Los valores válidos son 0 (o false ) y 1 (o true ).
Se recomienda que uses
|
<ChargeCurrency> | Optional | enum | Cuándo y dónde paga el usuario una reserva. Este elemento usa la misma sintaxis que <ChargeCurrency> en un <Result> .
El valor predeterminado es |
<CheckinTime> | Optional | Time | Es la hora de entrada más temprana posible. La hora debe ser anterior a las 24:00 en la hora local del hotel. |
<CheckoutTime> | Optional | Time | Es la hora de salida más tardía posible en la hora local del hotel. |
<Description> | Optional | Object | Es una descripción detallada del paquete. Este elemento debe contener información que no se describa en otros elementos o en el elemento <Name> . No debes usar todas las letras en mayúsculas cuando especifiques la descripción de la habitación.
El 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 | Si un paquete incluye acceso a Internet sin cargo, mientras que otros paquetes no incluyen ese servicio No establezcas este elemento para los paquetes de habitaciones en un hotel que proporcione Internet gratis en todas las habitaciones. Este elemento no se aplica a Internet con cable en la habitación ni a Internet inalámbrico que no esté disponible en las habitaciones de huéspedes. Los valores válidos son 0 (o false ) y 1 (o true ).
|
<Meals> | Optional | Object | Contiene información sobre las comidas incluidas en este paquete.
El elemento
Los atributos opcionales solo se usan cuando Para que funcionen los filtros de comida ( |
<Name> | Required | string | El nombre del paquete. Este valor debe coincidir con el que aparece en la página de destino del hotel. No establezcas el valor de este elemento en todas las letras mayúsculas.
Este elemento toma un solo elemento secundario, <Name> <Text text="Bed and Breakfast" language="en"/> <Text text="Lit et petit déjeuné" language="fr"/> </Name> |
<Occupancy> | Optional | integer | Es la cantidad máxima de huéspedes para la que está previsto un paquete de habitaciones.
Por ejemplo, una suite grande podría alojar físicamente a 6 huéspedes, pero está diseñada para un máximo de 4.
Este valor debe ser menor o igual que el elemento El valor de Si especificas este elemento en Nota: <Occupancy> puede estar acompañado de <OccupancyDetails> ,que especifica el tipo de invitados (adultos o niños). Consulta <OccupancyDetails> para obtener información sobre la sintaxis y la descripción de los elementos secundarios.
|
<PackageID> | Required | string | Es el ID único del paquete. Usa este ID para hacer coincidir los datos del paquete de habitaciones con los bloques (También puedes usar este ID para hacer referencia a una definición común de paquete de habitaciones que se usa en un solo mensaje de Transaction cuando se definen datos de paquetes de habitaciones intercalados). |
<ParkingIncluded> | Optional | boolean | Indica si un paquete de habitaciones incluye estacionamiento sin cargo, cuando, de lo contrario, el estacionamiento sería un servicio pagado en este hotel. No especifiques un valor para este elemento en el caso de un hotel que ofrece estacionamiento gratuito.
Los valores válidos son |
<PhotoURL> | Optional | Object | (Igual que <PhotoURL> en <RoomData> , pero para el paquete [p.ej., fotos de comidas]).
|
<Refundable> | Optional | Object | Permite indicar que una tarifa es totalmente reembolsable o que ofrece una cancelación gratuita. Si no se proporciona, no se muestra información sobre el reembolso.
Una política de reembolsos a nivel de <PackageData> anula la política de reembolsos a nivel de <Result> . Una política de reembolsos a nivel de <Rates> anula la política de reembolsos a nivel de <PackageData> . Los precios reembolsables también se pueden destacar para los usuarios a través de opciones alternativas sin modificar directamente el esquema de mensajes de transacción. Obtén más información sobre estas opciones en la política de tarifas reembolsables.
En el siguiente ejemplo, se muestra el elemento <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Nota: Te recomendamos que establezcas todos los atributos. Se genera un mensaje de advertencia sobre el estado del feed cuando no se configuran uno o más atributos. Si no configuras ningún atributo, la tarifa no se mostrará como reembolsable. Los atributos son los siguientes:
Cuando establezcas los atributos, ten en cuenta lo siguiente:
|
<MembershipBenefits |
Optional | boolean | La tarifa incluye los beneficios de la categoría élite durante la estadía. Incluye los siguientes parámetros:
|
<CarRentalIncluded> | Optional | boolean | La tarifa incluye el alquiler de un automóvil sin costo adicional durante la estadía. |
<MilesIncluded> | Optional | boolean | La tarifa incluye millas de viajero frecuente. Entre los parámetros, se incluyen los siguientes:
Nota: |
<OnPropertyCredit> | Optional | boolean | La tarifa incluye crédito en la propiedad (alimentos y bebidas, complejo turístico, spa, etc.). Parámetro:
|
<AirportTransportationIncluded> | Optional | Object | La tarifa incluye transporte gratuito desde y hacia un aeropuerto cercano. El atributo opcional direction especifica la direccionalidad del transporte. Los valores válidos incluyen los siguientes:
from : Se proporciona transporte desde el aeropuerto hasta la propiedad. Este es el valor predeterminado si no se especifica ninguna dirección.
to : Se proporciona transporte al aeropuerto desde la propiedad.
round_trip : Se proporciona transporte desde y hacia el aeropuerto.
|
Ejemplos
Paquete de habitación individual
En el siguiente ejemplo, se define un solo paquete de habitación, con una ocupación de 2 (un adulto y un niño) y se incluye el desayuno:
<?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>
Metadatos de la sala y el paquete
En el siguiente ejemplo, se definen los metadatos de la habitación y el paquete:
<?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>
Paquetes de varias habitaciones
En el siguiente ejemplo, se definen los metadatos de la habitación y el paquete para varios Room Bundles:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<!-- A transaction message with room types result. -->
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
<RoomID>single</RoomID>
<Name>
<Text text="Single room" language="en"/>
<Text text="Chambre simple" language="fr"/>
</Name>
<Description>
<Text text="A single room" language="en"/>
<Text text="Le chambre simple" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image1235.jpg</URL>
</PhotoURL>
<Capacity>2</Capacity>
</RoomData>
<RoomData>
<RoomID>double</RoomID>
<Name>
<Text text="Double room" language="en"/>
<Text text="Chambre double" language="fr"/>
</Name>
<Occupancy>1</Occupancy>
</RoomData>
<PackageData>
<PackageID>refundbreakfast</PackageID>
<Name>
<Text text="Refundable Room with Breakfast" language="en"/>
<Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Continental Breakfast" language="en"/>
<Text text="Petit déjeuner continental" language="fr"/>
</Description>
<ChargeCurrency>hotel</ChargeCurrency>
<Refundable available="1" refundable_until_days="3"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>prepaid</PackageID>
<Name>
<Text text="Nonrefundable" language="en"/>
<Text text="Non remboursable" language="fr"/>
</Name>
<Description>
<Text text="Blah blah blad" language="en"/>
<Text text="Le blah blah blad" language="fr"/>
</Description>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="0"/>
</PackageData>
</PropertyDataSet>
</Transaction>
Paquete de habitación con tarifas
En el siguiente ejemplo, se definen los metadatos de la habitación y el paquete para un paquete de habitación con atributos de tarifas:
<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>
Comidas y fotos
En el siguiente ejemplo, se definen los metadatos de la habitación y el paquete para las comidas, las fotos y los horarios de entrada y salida:
<?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>
Desayuno
<?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>
Es un contenedor para las actualizaciones de precios y disponibilidad en un mensaje <Transaction>
.
El elemento <Result>
aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Usa <Result>
para establecer o actualizar los precios de las habitaciones y definir el inventario disponible. Los elementos definidos en este elemento suelen hacer referencia a metadatos independientes del itinerario sobre una habitación o un paquete (como una descripción o un conjunto de servicios) definidos en <PackageData>
y <RoomData>
.
Por lo general, envías mensajes de transacción con actualizaciones de precios con mucha frecuencia. La forma exacta en que lo haces y la frecuencia con la que lo haces depende de tu modo de entrega.
Puedes usar <Result>
en un mensaje de Transaction para quitar itinerarios, como se describe en Cómo quitar inventario.
Para obtener más información sobre cómo usar los mensajes de transacción para actualizar los precios y la disponibilidad, consulta Cómo agregar y actualizar el inventario.
Un solo mensaje de Transaction puede incluir cualquier cantidad de elementos <Result>
, siempre y cuando el tamaño del mensaje no supere los 100 MB.
Sintaxis
El elemento <Result>
usa la siguiente sintaxis:
<?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>
Atributos
El elemento <Result>
tiene los siguientes atributos:
Atributo | ¿Es obligatorio? | Tipo | Descripción |
---|---|---|---|
mergeable | Optional | boolean | De forma predeterminada, los precios nuevos para un par específico de hotel e itinerario reemplazarán los precios anteriores (no vencidos) presentes en la caché de Google. El atributo combinable te permite almacenar precios adicionales en la caché de Google sin borrar la información de precios anterior. Las respuestas de Live Pricing Query with Context siempre tendrán este atributo establecido en true (independientemente de la respuesta del mensaje de transacción). |
Elementos secundarios
El elemento <Result>
tiene los siguientes elementos secundarios:
Elemento secundario | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
<AllowablePointsOfSale> | Optional | Object | Una o más páginas de destino aptas para el hotel. Una página de destino es un sitio web que puede controlar el proceso de reserva para el usuario final. Para incluir explícitamente ciertas páginas de destino (y excluir otras), agrega uno o más elementos <AllowablePointsOfSale> que coincidan con el atributo id del elemento <PointOfSale> en el archivo de páginas de destino.
Si no incluyes este elemento, se considerará que todas las páginas de destino definidas en el archivo de páginas de destino son aptas para reservar la habitación. Para obtener más información, consulta Sintaxis del archivo de páginas de destino. |
<Baserate> | Optional | float | Es el precio de la habitación para la estadía. El valor de este elemento debe reflejar lo siguiente:
Cuando la habitación no esté disponible para el itinerario, se debe omitir Para quitar un paquete de habitación, sigue las instrucciones que se indican en Cómo quitar un paquete de habitación. El <Baserate currency="USD">1200.40</Baserate> El elemento
|
<ChargeCurrency> | Optional | enum | Cuándo y dónde paga el usuario una reserva. Este elemento se puede usar en un mensaje de transacción en el elemento <Result> para el precio del hotel o el bloque <PackageData> para un paquete de habitaciones.
Estos son los valores válidos:
El valor predeterminado es |
<Checkin> | Required | Date | Es la fecha de entrada de un itinerario con el formato Date. La combinación del elemento <Nights> y el elemento <Checkin> conforman un itinerario. |
Optional | string | Obsoleto: Define un campo personalizado que puedes usar para pasar datos adicionales asociados con un hotel. Puedes pasar hasta cinco valores personalizados con los siguientes nombres de elementos:
Los elementos Importante: Comunícate con tu administrador técnico de cuentas (TAM) si deseas usar variables de |
|
<ExpirationTime> | Optional | DateTime | Fecha y hora en la que se considera que el precio venció (3 horas como mínimo).
Te recomendamos que no proporciones marcas de tiempo de vencimiento si no son fundamentales para tu estructura de precios. Google no publica precios vencidos, y cualquier itinerario que tenga un precio vencido será apto para la consulta de precios en tiempo real. |
<MilesIncluded> | Optional | boolean | La tarifa incluye millas de viajero frecuente. Entre los parámetros, se incluyen los siguientes:
Nota: |
<Nights> | Required | integer | Cantidad de noches de un itinerario. El valor del elemento <Nights> debe ser un número entero positivo.
La combinación de <Nights> y <Checkin> conforman un itinerario. |
<OtherFees> | Optional | float | Son las comisiones que influyen en el precio final de una habitación, además de la tarifa base y los impuestos. El elemento <OtherFees> toma un solo atributo obligatorio, currency , que define el código de moneda de tres letras para las comisiones. Por ejemplo, USD .
El elemento |
<Occupancy> | Optional | integer | Especifica la cantidad máxima de ocupantes permitidos para esta tarifa.
Cuando <Occupancy> aparece directamente debajo de <Result> , debe especificar 2 o más. <Occupancy> puede estar acompañado de <OccupancyDetails> , que especifica el tipo de invitados (adultos o niños). Si no se especifican los tipos de huéspedes, se supone que son adultos. Consulta <OccupancyDetails> para obtener la sintaxis y la descripción de los elementos secundarios. Si no se proporciona el elemento <Occupancy> , la ocupación se establece de forma predeterminada como 2 .
Nota: Los porcentajes de ocupación infantil solo se deben enviar a través de Precios en vivo con contexto y no a través de Solicitud de precios a terceros ni Precios modificados. Nota: Comunícate con tu equipo de asistencia al cliente para habilitar la función que permite enviar precios sin ocupación doble. |
<PackageID> | Optional | string | Es el ID único del paquete para asignarlo a los datos del paquete predefinidos.
También se usa para completar la variable de página de destino PACKAGE-ID.
Para obtener más información, consulta Metadatos de Room Bundle.
Es obligatorio incluir |
<Property> | Required | string | Es el ID de un hotel afectado por los datos asociados (precio, itinerario, paquete de habitaciones o metadatos). El valor de este elemento debe ser una cadena. El valor de este elemento debe coincidir con el <id> del anuncio que definiste en tu feed de lista de hoteles.
|
<Rates> | Optional | <Rates> |
Es un contenedor para uno o más bloques <Rate> . Cada <Rate> en <Rates> define un precio diferente para la combinación de habitación o itinerario.
Usa el elemento Nota: Dentro de |
<Refundable> | Optional | Object | Permite indicar que una tarifa es totalmente reembolsable o que ofrece una cancelación gratuita. Si no se proporciona, no se muestra información sobre el reembolso.
Una política de reembolsos a nivel de <PackageData> anula la política de reembolsos a nivel de <Result> . Una política de reembolsos a nivel de <Rates> anula la política de reembolsos a nivel de <PackageData> . Los precios reembolsables también se pueden destacar para los usuarios a través de opciones alternativas sin modificar directamente el esquema de mensajes de transacción. Obtén más información sobre la política de tarifas reembolsables.
En el siguiente ejemplo, se muestra el elemento <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Nota: Te recomendamos que establezcas todos los atributos. Se genera un mensaje de advertencia sobre el estado del feed cuando no se configuran uno o más atributos. Si no configuras ningún atributo, la tarifa no se mostrará como reembolsable. Los atributos son los siguientes:
Cuando establezcas los atributos, ten en cuenta lo siguiente:
|
<RoomBundle> | Optional | <RoomBundle> |
Es un contenedor de información sobre las descripciones físicas con precios de una habitación, cualquier paquete de servicios y algunos detalles de la política de compra para el hotel y el itinerario determinados.
En general, usa este elemento para definir los precios de la habitación básica y de los diferentes tipos de habitaciones dentro de la misma propiedad. Si bien es posible definir descripciones de paquetes de habitaciones intercaladas, debes usar un mensaje de Transaction separado para definir esa información. Google almacenará los metadatos para que puedas consultarlos, en lugar de repetirlos, en todas las actualizaciones de precios futuras. |
<RoomID> | Optional | string | Es el ID único de la habitación para asignarla a los datos de la habitación predefinidos. También se usa para completar la variable de página de destino PARTNER-ROOM-ID.
Para obtener más información, consulta Metadatos de Room Bundle.
Es obligatorio incluir |
<Tax> | Optional | float | Son los impuestos que se calculan para el precio final de una habitación.
El elemento <Tax> toma un solo atributo obligatorio, currency , que define el código de moneda de tres letras para los impuestos. Por ejemplo, USD . El elemento <Tax> es obligatorio si <Baserate> es mayor que cero.
Si el atributo "all_inclusive" del elemento |
<Unavailable> | Optional | Object | Indica que el itinerario no está disponible para la reserva. Sirve como contenedor para motivos más detallados por los que el itinerario no estaba disponible. Es posible que uno o más de los siguientes motivos de no disponibilidad se aniden debajo de la etiqueta <Unavailable> :
|
Ejemplos
Ejemplo de varias propiedades
En el siguiente ejemplo, se define un itinerario y su precio para dos propiedades:
<?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>
En este ejemplo, no se muestran detalles sobre la habitación, como una descripción, una imagen y un título, el nombre de la habitación y su capacidad.
Puedes definir esa información una sola vez en un mensaje Transaction separado que Google almacena. Luego, puedes hacer referencia a él en todas las actualizaciones posteriores de precios y del inventario. Para obtener más información, consulta Metadatos de Room Bundle.
Ejemplo de varias tarifas
En el siguiente ejemplo, se definen un solo itinerario y una sola propiedad con varias tarifas para diferentes ocupaciones. El elemento <Rates>
se puede utilizar para proporcionar precios de varias tarifas para una propiedad específica. El siguiente ejemplo también es útil para las propiedades de alquiler de vacaciones (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>
Ejemplo no disponible
En el siguiente ejemplo, se define un itinerario cuya disponibilidad no se pudo recuperar de los canales descendentes, un segundo que está por debajo de la estadía mínima por noche y ya está reservado para las fechas especificadas, y un tercero cuya propiedad está cerrada en la fecha de llegada, pero que abre durante el transcurso de la estadía:
<?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>
Es un contenedor para uno o más bloques <Rate>
. Cada <Rate>
en <Rates>
define un precio diferente para la combinación de habitación o itinerario.
Usa el elemento <Rates>
solo cuando haya varias tarifas para la misma combinación de habitación o itinerario. Por ejemplo, puedes definir varias tarifas para tarifas condicionales, tarifas privadas o tarifas condicionales en paquetes de habitaciones.
El elemento <Rates>
aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
(Can also contain<Rates>
) + ...
Los valores establecidos en un <Rate>
anulan los valores relacionados con los precios en el elemento principal <Result>
o <RoomBundle>
. Si no se configuran en <Rate>
, heredan su valor del elemento principal. Solo <AllowablePointsofSale> se hereda en el elemento <RoomBundle>
.
Sintaxis
El elemento <Rates>
usa la siguiente sintaxis:
<?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>
Atributos
El elemento <Rates>
tiene los siguientes atributos:
Atributo | ¿Es obligatorio? | Descripción |
---|---|---|
rate_rule_id | Optional | Para las tarifas condicionales, este ID coincide con una tarifa y una definición en tu archivo de definición de reglas de tarifas. El límite de caracteres para este campo es de 40. |
Elementos secundarios
El elemento <Rates>
tiene los siguientes elementos secundarios:
Elemento secundario | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
<AllowablePointsOfSale> | Optional | Object | Una o más páginas de destino aptas para el hotel. Este elemento usa la misma sintaxis que <AllowablePointsOfSale> en <Result> . |
<Baserate> | Required | float | Es el precio de la habitación para la estadía. Este elemento usa la misma
sintaxis que <Baserate> en <Result> .
Nota: El elemento secundario |
<ChargeCurrency> | Optional | enum | Cuándo y dónde paga el usuario una reserva. Este elemento usa la misma sintaxis que un <ChargeCurrency> en un <Result> . |
Optional | string | Obsoleto: Son campos personalizados que puedes usar para pasar datos adicionales asociados con un hotel a una página de destino. Este elemento usa la misma sintaxis que un <Custom[1‑5]> en un <Result> . Hay un límite de 200 caracteres por campo personalizado. Para obtener más información, consulta los
archivos de la página de destino. Si se proporcionan elementos <Custom> en el elemento <Result> , no se heredan en el elemento <RoomBundle> y se deben definir por separado para cada <RoomBundle> o se pueden incluir en <PackageData> si es necesario.
Importante: Comunícate con tu administrador técnico de cuentas (TAM) si deseas usar variables de |
|
<ExpirationTime> | Optional | DateTime | Fecha y hora en la que se considera que la tarifa venció. Este
elemento usa la misma sintaxis que un
<ExpirationTime> en un <Result> . |
<MilesIncluded> | Optional | boolean | La tarifa incluye millas de viajero frecuente. Entre los parámetros, se incluyen los siguientes:
Nota: |
<Occupancy> | Optional | integer | Especifica la cantidad máxima de ocupantes permitidos para esta tarifa. Si no se especifica, se supone que es la misma que la tarifa principal.
|
<OtherFees> | Required | float | Son las comisiones que influyen en el precio final de una habitación, además de la tarifa base y los impuestos. Este elemento usa la misma sintaxis que <OtherFees> en un <Result> .
Si el atributo "all_inclusive" del elemento |
<Refundable> | Optional | Object | Permite indicar que una tarifa es totalmente reembolsable o que ofrece una cancelación gratuita. Si no se proporciona, no se muestra información sobre el reembolso.
Una política de reembolsos a nivel de <PackageData> anula la política de reembolsos a nivel de <Result> . Una política de reembolsos a nivel de <Rates> anula la política de reembolsos a nivel de <PackageData> . Los precios reembolsables también se pueden destacar para los usuarios a través de opciones alternativas sin modificar directamente el esquema de mensajes de transacción. Obtén más información sobre estas opciones en la política de tarifas reembolsables.
En el siguiente ejemplo, se muestra el elemento <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Nota: Te recomendamos que establezcas todos los atributos. Se genera un mensaje de advertencia sobre el estado del feed cuando no se configuran uno o más atributos. Si no configuras ningún atributo, la tarifa no se mostrará como reembolsable. Los atributos son los siguientes:
Cuando establezcas los atributos, ten en cuenta lo siguiente:
|
<Tax> | Required | float | Son los impuestos que se calculan para el precio final de una habitación. Este
elemento usa la misma sintaxis que un <Tax> en un
<Result> . |
Ejemplos
Tarifa base y tarifa condicional
En el siguiente ejemplo, se muestra un mensaje de Transaction que contiene una tarifa base y una tarifa condicional:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">200.00</Baserate>
<Tax currency="USD">20.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates -->
<Rate rate_rule_id="mobile">
<!-- Override base rate and taxes for conditional rates -->
<Baserate currency="USD">180.00</Baserate>
<Tax currency="USD">18.00</Tax>
</Rate>
</Rates>
</Result>
</Transaction>
Varias tarifas condicionales
En el siguiente ejemplo, se definen una tarifa base y varias tarifas condicionales dentro de un objeto <RoomBundle>
:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL. For details, see Using Variables and Conditions. -->
<RatePlanID>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<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>
Define los precios y la disponibilidad de los paquetes de habitaciones como un elemento secundario de <Result>
en un mensaje <Transaction>
. Define un elemento separado para cada combinación de paquete o itinerario. Para definir el paquete y las condiciones de los paquetes de habitación, usa <RoomData>
.
El elemento <RoomBundle>
aparece en el siguiente lugar de la jerarquía XML del mensaje de transacción:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Para obtener más información, consulta Cómo usar paquetes de habitación.
Sintaxis
El elemento <RoomBundle>
usa la siguiente sintaxis:
<?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>
Atributos
El elemento <RoomBundle>
no tiene atributos.
Elementos secundarios
El elemento <RoomBundle>
tiene los siguientes elementos secundarios:
Elemento secundario | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
<Baserate> | Required | float | Define el precio del paquete de habitación para la estadía. Este elemento usa la misma sintaxis que <Baserate> en <Result> , con la siguiente excepción:
|
<BreakfastIncluded> | Optional | boolean | Especifica si este paquete de habitaciones incluye desayuno con la tarifa. |
<ChargeCurrency> | Optional | enum | Cuándo y dónde paga el usuario una reserva. Este elemento usa la misma sintaxis que <ChargeCurrency> en un <Result> .
El valor predeterminado es |
Optional | string | Obsoleto: Campos personalizados para pasar datos adicionales a las páginas de destino del paquete de habitaciones. Estos elementos usan la misma sintaxis que <Custom[1-5]> en <Result> . Hay un límite de 200 caracteres por campo personalizado. Para obtener más información, consulta los archivos de páginas de destino.
Las variables personalizadas solo se enumeran cuando envías los precios en el mensaje de transacción. Si se proporcionan elementos <Custom> en el elemento <Result> , no se heredan en el elemento <RoomBundle> y se deben definir por separado para cada <RoomBundle> o se pueden incluir en <PackageData> si es necesario.
Importante: Comunícate con tu administrador técnico de cuentas (TAM) si deseas usar variables de |
|
<InternetIncluded> | Optional | boolean | Si un paquete de habitación incluye acceso a Internet sin cargo, mientras que otros paquetes no incluyen ese servicio No establezcas este elemento para los paquetes de habitaciones en un hotel que proporcione Internet gratis en todas las habitaciones. Este elemento no se aplica a Internet con cable en la habitación ni a Internet inalámbrico que no esté disponible en las habitaciones de huéspedes. |
<MilesIncluded> | Optional | boolean | La tarifa incluye millas de viajero frecuente. Entre los parámetros, se incluyen los siguientes:
Nota: |
<Occupancy> | Required | integer | Especifica la cantidad máxima de ocupantes permitidos para esta tarifa. Por ejemplo, una suite grande puede alojar físicamente a 6 huéspedes, pero el "Paquete de luna de miel" solo permite 2 huéspedes.
Este valor debe ser menor o igual que Cuando definas la ocupación en la URL de tu página de destino, usa las variables El valor de Notas:
|
<OtherFees> | Required | float | Son las comisiones que influyen en el precio final de una habitación, además de la tarifa base y los impuestos. El elemento <OtherFees> toma un solo atributo obligatorio, currency , que define el código de moneda de tres letras para las comisiones. Por ejemplo, usa USD para dólares estadounidenses. |
<PackageID> | Optional (recommended) | string | Es el ID único de los datos del paquete. Usa este ID para hacer coincidir los datos del paquete de Room con los que se enviaron en <PackageData> . Para obtener más información, consulta Metadatos de Room Bundle. (También puedes usar este ID para hacer referencia a una definición común de paquete de habitaciones que se usa en un solo mensaje de Transaction cuando defines datos de paquetes de habitaciones de forma intercalada). |
<ParkingIncluded> | Optional | boolean | Indica si un paquete de habitaciones incluye estacionamiento sin cargo, cuando, de lo contrario, el estacionamiento sería un servicio pagado en este hotel. No especifiques un valor para este elemento en el caso de un hotel que ofrece estacionamiento gratuito.
Los valores válidos son |
<RatePlanID> | Optional | string | El ID del plan de tarifas representa el identificador único de una combinación de habitación y paquete. Por ejemplo, si tienes un valor de <RoomID> de 5 y un valor de <PackageID> de ABC, puedes usar un valor de 5-ABC para <RatePlanID> . Te recomendamos que uses RatePlanID como una variable para compilar la URL dinámica de tu página de destino (anteriormente, punto de venta).
Para obtener más información, consulta Uso de variables y condiciones. |
<Rates> | Optional | <Rates> |
Son las tarifas que anulan los valores predeterminados de este paquete de habitación. Este elemento usa la misma sintaxis que <Rates> en <Result> . |
<Refundable> | Optional | Object | Permite indicar que una tarifa es totalmente reembolsable o que ofrece una cancelación gratuita. Si no se proporciona, no se muestra información sobre el reembolso.
Una política de reembolsos a nivel de <PackageData> anula la política de reembolsos a nivel de <Result> . Una política de reembolsos a nivel de <Rates> anula la política de reembolsos a nivel de <PackageData> . Los precios reembolsables también se pueden destacar para los usuarios a través de opciones alternativas sin modificar directamente el esquema de mensajes de transacción. Obtén más información sobre estas opciones en la política de tarifas reembolsables.
En el siguiente ejemplo, se muestra el elemento <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Nota: Te recomendamos que establezcas todos los atributos. Se genera un mensaje de advertencia sobre el estado del feed cuando no se configuran uno o más atributos. Si no configuras ningún atributo, la tarifa no se mostrará como reembolsable. Los atributos son los siguientes:
Cuando establezcas los atributos, ten en cuenta lo siguiente:
|
<RoomID> | Required | string | Es el ID único de los datos de la habitación. Usa este ID para hacer coincidir los datos del paquete de habitación con los que enviaste en <RoomData> .
Para obtener más información, consulta
Metadatos de Room Bundle. (También puedes usar este ID para hacer referencia a una definición de habitación común en un solo mensaje de Transaction cuando definas los datos de la habitación de forma intercalada). |
<Tax> | Required | float | Son los impuestos que se calculan para el precio final de una habitación.
El elemento <Tax> toma un solo atributo obligatorio, currency , que define el código de moneda de tres letras para los impuestos. Por ejemplo, usa USD para dólares estadounidenses. |
Ejemplos
Paquete de ocupación individual
En el siguiente ejemplo, se define una respuesta con un solo paquete de ocupación.
Cuando un usuario selecciona 1
en el selector de ocupación, Google muestra el precio más bajo apto, independientemente de la ocupación.
Si no hay un precio disponible para una sola persona, Google mostrará el precio más bajo para dos personas. Ten en cuenta que los precios de ocupación individual no se consultan en tiempo real si se almacenan en caché precios de ocupación doble o más para un itinerario.
En este ejemplo, se hace referencia a metadatos de habitación y paquete predefinidos con los elementos <RoomID>
y <PackageID>
. Usa los elementos <RoomData>
y <PackageData>
para definir esa información.
<!-- 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>
Dos o más ocupaciones
En el siguiente ejemplo, se define una respuesta que contiene dos o más ocupaciones.
En este ejemplo, se hace referencia a metadatos de habitación y paquete predefinidos con los elementos <RoomID>
y <PackageID>
. Usa los elementos <RoomData>
y <PackageData>
para definir esa información.
<!-- 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>
Paquetes de varias habitaciones
En el siguiente ejemplo, se establece la ocupación en varios paquetes de habitaciones para demostrar los posibles precios de las habitaciones de hostales.
<?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>
Varias tarifas condicionales
En el siguiente ejemplo, se definen una tarifa base y varias tarifas condicionales dentro de un objeto <RoomBundle>
:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL. For details, see Using Variables and Conditions. -->
<RatePlanID>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<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>
El campo <Occupancy>
en un mensaje de transacción especifica la cantidad máxima de huéspedes para una habitación o un paquete. <OccupancyDetails>
puede contener información adicional, como la cantidad y el tipo de huéspedes (adultos o niños).
Cuando <Occupancy>
y <OccupancyDetails>
aparecen dentro del elemento <Rates>
de <Result>
o <RoomBundle>
, significa que la tarifa está restringida por los detalles de ocupación.
Si incluyes <OccupancyDetails>
en un <RoomBundle>
, junto con un elemento <Rate>
anidado, no puedes enviar un <Occupancy>
básico dentro del <Rate>
. En su lugar, se recomienda una de las siguientes opciones:
- Omitir la ocupación de
<Rate>
: En este caso,<Rate>
hereda el<OccupancyDetails>
directamente de<RoomBundle>
.
o
- Duplicar
<OccupancyDetails>
: En este caso, envía<OccupancyDetails>
adicionales idénticos en el elemento<RoomBundle>
y en el elemento<Rate>
anidado.
Sintaxis
Cuando aparece <OccupancyDetails>
, siempre está precedido por <Occupancy>
.
Ten en cuenta la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> ... <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <NumAdults>number_of_adults</NumAdults> <Children> <Child age=age_of_one_child_guest/> <Child age=age_of_one_child_guest/> </Children> </OccupancyDetails> </Result> </Transaction>
Elementos secundarios
El elemento <OccupancyDetails>
tiene los siguientes elementos secundarios:
Elemento secundario | ¿Obligatorio? | Tipo | Descripción |
---|---|---|---|
<NumAdults> | Required | integer | Es la cantidad de invitados adultos. Mín.: 1, máx.: 20. |
<Children> | Optional | Object | Es un contenedor para uno o más elementos <Child> . |
<Child age> | Optional | integer | Es la edad máxima de este menor, por ejemplo, <Child age="17"> . |
Ejemplos
En los siguientes ejemplos, se muestra cómo puede aparecer <OccupancyDetails>
dentro de <Results>
, <RoomBundle>
o el elemento secundario <Rates>
.
Respuesta del resultado
En el siguiente ejemplo, se define un itinerario y su precio para una propiedad en respuesta a una búsqueda de precios en tiempo real en la que el usuario especificó la cantidad y los tipos de huéspedes. Aquí, los <OccupancyDetails>
(2 adultos y un niño) se devuelven en <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>
Respuesta de tarifas
En el siguiente ejemplo, se define un itinerario y su precio para 1 adulto y 1 niño. Aquí, los <OccupancyDetails>
se muestran en el elemento <Rates>
de <Result>
.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2018-04-18T11:27:45-04:00">
<Result>
<Property>8251</Property>
<Checkin>2018-06-20</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">62.18</Baserate>
<Tax currency="USD">2.45</Tax>
<OtherFees currency="USD">0.00</OtherFees>
<Rates>
<Rate rate_rule_id="rule-951">
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<Baserate currency="USD">42.61</Baserate>
<Tax currency="USD">5.70</Tax>
<OtherFees currency="USD">0.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="yourhotelpartnersite.com"/>
</AllowablePointsOfSale>
</Rate>
</Rates>
</Result>
</Transaction>
Paquete de habitación
En el siguiente ejemplo, se define una ocupación de 2 adultos y 1 niño o niña para dos noches, con una tarifa reembolsable. Aquí, los <OccupancyDetails>
aparecen dentro de <RoomBundle>
.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>6781291</Property>
<Checkin>2017-08-05</Checkin>
<Nights>2</Nights>
...
<RoomBundle>
<RoomID>10291</RoomID>
<RatePlanID>564739</RatePlanID>
<PackageID>564739</PackageID>
<Occupancy>3</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="true" refundable_until_days="1" refundable_until_time="23:59:00" />
<Baserate currency="USD">185.34</Baserate>
<Tax currency="USD">37.06</Tax>
<OtherFees currency="USD">2.22</OtherFees>
</RoomBundle>
</Result>
</Transaction>
Paquetes de varias habitaciones
En el siguiente ejemplo, se definen varias tarifas de <RoomBundle>
que se restringen a una ocupación de 2 adultos y 2 niños. Aquí, los <OccupancyDetails>
aparecen en el elemento <Rates>
de <RoomBundle>
.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">0</OtherFees>
<RoomBundle>
<RoomID>5</RoomID>
<PackageID>STD</PackageID>
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">0</OtherFees>
<InternetIncluded>1</InternetIncluded>
<ChargeCurrency>web</ChargeCurrency>
<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>