Solicitudes
Sintaxis
En el mensajePromotions
se utiliza la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?> <Promotions partner="partner_account_name" id="message_ID" timestamp="timestamp"> <HotelPromotions hotel_id="HotelID" action="[overlay]"> <Promotion id="PromotionID" action="[delete]"> <BookingDates> <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/> <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/> </BookingDates> <BookingWindow min="integer" max="integer"/> <CheckinDates> <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/> </CheckinDates> <CheckoutDates> <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/> </CheckoutDates> <!-- Specify only one of percentage, fixed_amount, or fixed_amount_per_night; applied_nights is only used with percentage or fixed_amount_per_night --> <Discount percentage="float" fixed_amount="float" fixed_amount_per_night="float" applied_nights="integer_1_to_99"/> <Devices> <Device type="[desktop|tablet|mobile]"/> </Devices> <InventoryCount min="integer" max="integer"/> <LengthOfStay min="integer" max="integer"/> <MinimumAmount before_discount="integer"/> <RatePlans> <RatePlan id="PackageID_1"/> <RatePlan id="PackageID_2"/> </RatePlans> <RoomTypes> <RoomType id="RoomID_1"/> <RoomType id="RoomID_2"/> </RoomTypes> <Stacking type="[any|base_only|none|second]"/> <StayDates application="[all|any|overlap]"> <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/> </StayDates> <UserCountries> <Country code="country_code"/> </UserCountries> </Promotion> </HotelPromotions> </Promotions>
Elementos y atributos
El mensaje Promotions incluye los siguientes elementos y atributos:Elemento/@Atributo | Repeticiones | Tipo | Descripción |
---|---|---|---|
Promotions | 1 | Complex element | Elemento raíz de un mensaje Promotions. |
Promotions/@partner | 1 | String | Cuenta de partner de este mensaje. El valor de esta cadena es la clave del partner que aparece en la página Configuración de la cuenta de Hotel Center.
Nota: Si tienes un backend que proporciona feeds para varias cuentas, este valor debe coincidir con el del atributo |
Promotions/@id | 1 | String | Identificador único de este mensaje de solicitud. Este valor se devuelve en el mensaje de respuesta. Los caracteres permitidos son a-z, A-Z, 0-9, _ (guion bajo) y - (guion). |
Promotions/@timestamp | 1 | DateTime | Fecha y hora de creación de este mensaje. |
Promotions/HotelPromotions | 0..n | HotelPromotions | Promociones de una propiedad. Cada una se aplica a una sola propiedad. Nota: Salvo si se utiliza |
Promotions/HotelPromotions/@hotel_id | 1 | String | Identificador único de la propiedad. Este valor debe coincidir con el ID de hotel especificado en la cadena <id> del elemento <listing> del feed de lista de hoteles. El ID de hotel también aparece en Hotel Center. |
Promotions/HotelPromotions/@action | 0..1 | Enum | Si se especifica, el valor debe ser "overlay". Cuando es así, todas las promociones almacenadas se eliminan antes de que se almacenen las que se han especificado en el mensaje actual. Si no se especifica, se aplica una de las siguientes acciones a cada promoción especificada en ese mensaje:
|
Promotions/HotelPromotions/Promotion | 0..99 | Promotion | Promoción única de una propiedad. Ten en cuenta que si Nota: Si necesitas usar más de 99 promociones, ponte en contacto con tu Administrador técnico de cuentas (TAM). |
Promotions/HotelPromotions/Promotion/@id | 1 | String | Identificador único de la promoción. Admite un máximo de 40 caracteres. Los caracteres admitidos son a-z, A-Z, 0-9, _ (guion bajo), - (guion) y . (punto). |
Promotions/HotelPromotions/Promotion/@action | 0..1 | Enum | Si se especifica, el valor debe ser "delete". Si no se especifica y no se almacena una promoción con el mismo Si se especifica el valor "delete", se elimina la promoción almacenada con el mismo |
Promotions/HotelPromotions/Promotion/BookingDates | 0..1 | BookingDates | Contenedor para uno o varios periodos que determinan cuándo debe producirse una reserva para que se aplique la promoción. |
Promotions/HotelPromotions/Promotion/BookingDates/DateRange | 1..99 | DateRange | Periodo en el que se especifica cuándo debe producirse una reserva para que se aplique la promoción. |
Promotions/HotelPromotions/Promotion/BookingDates/DateRange/@start | 0..1 | Date | Fecha de inicio del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o anterior a la indicada en end . Si no se especifica start , el periodo es ilimitado en lo que se refiere a la fecha de inicio. |
Promotions/HotelPromotions/Promotion/BookingDates/DateRange/@end | 0..1 | Date | Fecha de finalización del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o posterior a la indicada en start . Si no se especifica end , el periodo es ilimitado en lo que se refiere a la fecha de finalización. |
Promotions/HotelPromotions/Promotion/BookingDates/DateRange/@days_of_week | 0..1 | String | Días de la semana permitidos en el periodo. Si no se especifica, se permiten todos los días. Cada carácter de la cadena indica un día. Por ejemplo, "MTWHF" especifica que se permiten días laborables en el periodo. Los caracteres válidos son:
Cualquier combinación de caracteres es válida. |
Promotions/HotelPromotions/Promotion/BookingWindow | 0..1 | BookingWindow | Especifica el periodo en que debe producirse la reserva en relación con la fecha de entrada (según la zona horaria de la propiedad). Por ejemplo, puedes configurar una ventana de reserva de al menos 7 días, pero no de más de 180 días, antes de la fecha de entrada. |
Promotions/HotelPromotions/Promotion/BookingWindow/@min | 0..1 | Integer | Número mínimo de días antes de la fecha de entrada en los que se debe realizar la reserva para que se aplique la promoción. Si no se especifica, no se aplica ningún mínimo. |
Promotions/HotelPromotions/Promotion/BookingWindow/@max | 0..1 | Integer | Número máximo de días antes de la fecha de entrada en los que se debe realizar la reserva para que se aplique la promoción. Si no se especifica, no se aplica ningún máximo. |
Promotions/HotelPromotions/Promotion/CheckinDates | 0..1 | CheckinDates | Contenedor de uno o varios periodos que determinan cuándo debe realizarse la entrada para que se aplique la promoción. |
Promotions/HotelPromotions/Promotion/CheckinDates/DateRange | 1..20 | DateRange | Periodo que indica cuándo debe realizarse la entrada para que se aplique la promoción. Este elemento no es obligatorio si vas a eliminar una o varias promociones. |
Promotions/HotelPromotions/Promotion/CheckinDates/DateRange/@start | 0..1 | Date | Fecha de inicio del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o anterior a la indicada en end . Si no se especifica start , el periodo es ilimitado en lo que se refiere a la fecha de inicio. |
Promotions/HotelPromotions/Promotion/CheckinDates/DateRange/@end | 0..1 | Date | Fecha de finalización del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o posterior a la indicada en start . Si no se especifica end , el periodo es ilimitado en lo que se refiere a la fecha de finalización. |
Promotions/HotelPromotions/Promotion/CheckinDates/DateRange/@days_of_week | 0..1 | String | Días de la semana permitidos en el periodo. Si no se especifica, se permiten todos los días. Cada carácter de la cadena indica un día. Por ejemplo, "MTWHF" especifica que se permiten días laborables en el periodo. Los caracteres válidos son:
Cualquier combinación de caracteres es válida. |
Promotions/HotelPromotions/Promotion/CheckoutDates | 0..1 | CheckoutDates | Contenedor de uno o varios periodos que determinan cuándo debe realizarse la salida para que se aplique la promoción. |
Promotions/HotelPromotions/Promotion/CheckoutDates/DateRange | 1..20 | DateRange | Periodo que indica cuándo debe realizarse la salida para que se aplique la promoción. Este elemento no es obligatorio si vas a eliminar una o varias promociones. |
Promotions/HotelPromotions/Promotion/CheckoutDates/DateRange/@start | 0..1 | Date | Fecha de inicio del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o anterior a la indicada en end . Si no se especifica start , el periodo es ilimitado en lo que se refiere a la fecha de inicio. |
Promotions/HotelPromotions/Promotion/CheckoutDates/DateRange/@end | 0..1 | Date | Fecha de finalización del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o posterior a la indicada en start . Si no se especifica end , el periodo es ilimitado en lo que se refiere a la fecha de finalización. |
Promotions/HotelPromotions/Promotion/CheckoutDates/DateRange/@days_of_week | 0..1 | String | Días de la semana permitidos en el periodo. Si no se especifica, se permiten todos los días. Cada carácter de la cadena indica un día. Por ejemplo, "MTWHF" especifica que se permiten días laborables en el periodo. Los caracteres válidos son:
Cualquier combinación de caracteres es válida. |
Promotions/HotelPromotions/Promotion/Devices | 0..1 | Devices | Contenedor para mostrar los dispositivos de usuario que cumplen los requisitos de la promoción. Si se especifica, el descuento solo se aplica a los usuarios aptos de los dispositivos incluidos. De lo contrario, se ofrece el descuento a los usuarios de cualquier dispositivo. |
Promotions/HotelPromotions/Promotion/Devices/Device | 1..3 | Device | Define un tipo de dispositivo de usuario que cumple los requisitos de la promoción. |
Promotions/HotelPromotions/Promotion/Devices/Device/@type | 1 | Enum | Tipo de dispositivo. El valor debe ser desktop , tablet o mobile . |
Promotions/HotelPromotions/Promotion/Discount | 1 | Discount | Especifica el descuento que se aplicará a esta promoción. |
Promotions/HotelPromotions/Promotion/Discount/@percentage | 0..1 | Float | Nota: Se requiere exactamente uno de los objetos percentage , fixed_amount o fixed_amount_per_night .
Valor decimal comprendido entre 0 y 100 que especifica el porcentaje de descuento.
Se aplica a Ejemplos:
|
Promotions/HotelPromotions/Promotion/Discount/@fixed_amount | 0..1 | Float | Nota: Se requiere exactamente uno de los objetos percentage , fixed_amount o fixed_amount_per_night .
Importe fijo que se resta a la suma de los precios por noche de Ejemplos:
|
Promotions/HotelPromotions/Promotion/Discount/@fixed_amount_per_night | 0..1 | Float | Nota: Se requiere exactamente uno de los objetos percentage , fixed_amount o fixed_amount_per_night .
Descuento fijo que se aplica a cada uno de los precios por noche de Ejemplos:
|
Promotions/HotelPromotions/Promotion/Discount/@applied_nights | 0..1 | Integer | Nota: Solo debe usarse con percentage o con fixed_amount_per_night .
Número de noches al que se aplica el descuento, empezando por el precio más barato. Debe ser un número entero comprendido entre 1 y 99. Si no se especifica, se aplicará el descuento a todas las noches. |
Promotions/HotelPromotions/Promotion/InventoryCount | 0..1 | InventoryCount | Define las restricciones en cuanto al número de habitaciones que deben estar disponibles para que se aplique esta promoción. El descuento solo se aplica a las noches que cumplan esas restricciones. No puede usarse con el descuento fixed_amount . El número de habitaciones disponibles se especifica o con OTA_HotelInvCountNotifRQ (InvCount ) o con OTA_HotelAvailNotifRQ (BookingLimit ). |
Promotions/HotelPromotions/Promotion/InventoryCount/@min | 0..1 | Integer | Número mínimo de habitaciones que deben estar disponibles para que la promoción se aplique al precio por noche. Si no se especifica, no se aplica ningún mínimo. |
Promotions/HotelPromotions/Promotion/InventoryCount/@max | 0..1 | Integer | Número máximo de habitaciones que deben estar disponibles para que la promoción se aplique al precio por noche. Si no se especifica, no se aplica ningún máximo. |
Promotions/HotelPromotions/Promotion/LengthOfStay | 0..1 | LengthOfStay | Define los límites de la duración de la estancia dentro de los que se puede aplicar esta promoción. La promoción no se aplica si la duración de la estancia está fuera de los límites mínimo o máximo. |
Promotions/HotelPromotions/Promotion/LengthOfStay/@min | 0..1 | Integer | Número mínimo de noches de estancia que se permiten para que se aplique la promoción. Si no se especifica, no se aplica ningún mínimo. |
Promotions/HotelPromotions/Promotion/LengthOfStay/@max | 0..1 | Integer | Número máximo de noches de estancia que se permiten para que se aplique la promoción. Si no se especifica, no se aplica ningún máximo. |
Promotions/HotelPromotions/Promotion/MinimumAmount | 0..1 | MinimumAmount | Especifica la suma mínima de los precios diarios de la habitación (usando el valor AmountBeforeTax o AmountAfterTax , dependiendo de cuál sea mayor) que debe superarse para que se aplique la promoción. |
Promotions/HotelPromotions/Promotion/MinimumAmount/@before_discount | 1 | Integer | Valor que debe superarse para que se aplique la promoción. |
Promotions/HotelPromotions/Promotion/RatePlans | 0..1 | RatePlans | Contenedor para una lista de planes de precios a los que se aplica la promoción.
Si no se especifica <RatePlans> , la promoción se aplica a todos los planes de precios. |
Promotions/HotelPromotions/Promotion/RatePlans/RatePlan | 1..n | RatePlan | Especifica un plan de precios. Un plan de precios se define a partir de una combinación de paquetes, precios y disponibilidad, tal como se define en los mensajes Transaction (Property Data), OTA_HotelRateAmountNotifRQ y OTA_HotelAvailNotifRQ, y se identifica por el PackageID. |
Promotions/HotelPromotions/Promotion/RatePlans/RatePlan/@id | 1 | String | Identificador único del plan de precios. Este valor se corresponde con el valor de PackageID de <PackageData> en un mensaje Transaction (Property Data) y en el atributo RatePlanCode de <StatusApplicationControl> en los mensajes <OTA_HotelRateAmountNotifRQ> y <OTA_HotelAvailNotifRQ> .
Admite un máximo de 50 caracteres. |
Promotions/HotelPromotions/Promotion/RoomTypes | 0..1 | RoomTypes | Contenedor para una lista de tipos de habitación a las que se aplica la promoción.
La promoción se aplica a cada <RoomType> especificado. Si no se especifica <RoomTypes> , la promoción se aplica a todas las habitaciones. |
Promotions/HotelPromotions/Promotion/RoomTypes/RoomType | 1..n | RoomType | Especifica el tipo de habitación, que se define en un elemento <RoomData> de un mensaje Transaction (Property Data), y se hace referencia a él mediante el valor <RoomID> . También se hace referencia al valor de <RoomID> mediante el atributo InvTypeCode de los mensajes OTA_HotelRateAmountNotifRQ. |
Promotions/HotelPromotions/Promotion/RoomTypes/RoomType /@id | 1 | String | Identificador único del inventario (tipo de habitación). Este valor se asigna a <RoomID> en un mensaje Transaction (Property Data).
Admite un máximo de 50 caracteres. |
Promotions/HotelPromotions/Promotion/Stacking | 0..1 | Stacking | Indica cómo se pueden combinar las promociones. Si no se especifica, se asume que el valor de "type" es base_only . |
Promotions/HotelPromotions/Promotion/Stacking/@type | 1 | Enum | En función de esta opción, se pueden aplicar varias promociones a una sola tarifa:
De entre todas las combinaciones permitidas, el conjunto de promociones que ofrezca el mayor descuento es el que se aplicará a la tarifa. |
Promotions/HotelPromotions/Promotion/StayDates | 0..1 | StayDates | Contenedor para uno o más periodos que determinan cómo se aplica la promoción (por ejemplo, para ajustar los descuentos de temporada). |
Promotions/HotelPromotions/Promotion/StayDates/@application | 1 | Enum | Describe cómo se debe aplicar la promoción. Estos son los valores válidos:
Este atributo se debe especificar siempre.
|
Promotions/HotelPromotions/Promotion/StayDates/DateRange | 1..99 | DateRange | Periodo que indica las fechas en las que debe aplicarse la promoción. |
Promotions/HotelPromotions/Promotion/StayDates/DateRange/@start | 0..1 | Date | Fecha de inicio del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o anterior a la indicada en end . Si no se especifica start , el periodo es ilimitado en lo que se refiere a la fecha de inicio. |
Promotions/HotelPromotions/Promotion/StayDates/DateRange/@end | 0..1 | Date | Fecha de finalización del periodo (en función de la zona horaria de la propiedad). Esta fecha debe ser la misma o posterior a la indicada en start . Si no se especifica end , el periodo es ilimitado en lo que se refiere a la fecha de finalización. |
Promotions/HotelPromotions/Promotion/StayDates/DateRange/@days_of_week | 0..1 | String | Días de la semana permitidos en el periodo. Si no se especifica, se permiten todos los días. Cada carácter de la cadena indica un día. Por ejemplo, "MTWHF" especifica que se permiten días laborables en el periodo. Los caracteres válidos son:
Cualquier combinación de caracteres es válida. |
Promotions/HotelPromotions/Promotion/UserCountries | 0..1 | UserCountries | Contenedor para mostrar las ubicaciones de usuarios (países) que cumplen los requisitos de la promoción. Si se especifica, el descuento solo se aplica a los usuarios aptos de los países incluidos. De lo contrario, se ofrece el descuento a los usuarios de cualquier país. |
Promotions/HotelPromotions/Promotion/UserCountries/Country | 1..50 | Country | Define un país cuyos usuarios cumplen los requisitos de la promoción. |
Promotions/HotelPromotions/Promotion/UserCountries/Country/@code | 1 | String | Código de país CLDR (por ejemplo, ES o FR). En algunos países, el CLDR no es el mismo que el código de país ISO de dos letras. Además, no se admiten los códigos de región CLDR. |
Ejemplos
Mensaje básico
En el siguiente ejemplo se muestra un mensaje Promotions
básico:
<?xml version="1.0" encoding="UTF-8"?> <Promotions partner="account_xyz" id="123_abc" timestamp="2020-05-18T16:20:00-04:00"> <HotelPromotions hotel_id="Property_1"> <Promotion id="1"> <BookingDates> <DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/> <DateRange start="2020-09-01" end="2020-09-30"/> </BookingDates> <BookingWindow min="7" max="330"/> <CheckinDates> <DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/> </CheckinDates> <CheckoutDates> <DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/> </CheckoutDates> <Devices> <Device type="mobile"/> <Device type="tablet"/> </Devices> <Discount percentage="20" applied_nights="2"/> <LengthOfStay min="2" max="14"/> <RatePlans> <RatePlan id="234"/> <RatePlan id="567"/> </RatePlans> <RoomTypes> <RoomType id="123"/> <RoomType id="456"/> </RoomTypes> <Stacking type="base_only"/> <UserCountries> <Country code="US"/> <Country code="UK"/> </UserCountries> </Promotion> </HotelPromotions> </Promotions>
Condición del inventario
En el siguiente ejemplo se muestra cómo crear un descuento si hay un exceso de inventario próximo a la fecha de llegada:
<?xml version="1.0" encoding="UTF-8"?> <Promotions partner="account_xyz" id="123_abc" timestamp="2020-05-18T16:20:00-04:00"> <HotelPromotions hotel_id="Property_1"> <Promotion id="1"> <BookingWindow max="7"/> <Discount percentage="10"/> <InventoryCount min="3"/> </Promotion> </HotelPromotions> </Promotions>
Eliminar una promoción
En el siguiente ejemplo se muestra cómo eliminar una promoción de una propiedad:
<?xml version="1.0" encoding="UTF-8"?> <Promotions partner="account_xyz" id="123_abc" timestamp="2020-05-18T16:20:00-04:00"> <HotelPromotions hotel_id="Property_1"> <Promotion id="1" action="delete"/> </HotelPromotions> </Promotions>
Eliminar todas las promociones
En el siguiente ejemplo se muestra cómo eliminar todas las promociones de una propiedad:
<?xml version="1.0" encoding="UTF-8"?> <Promotions partner="account_xyz" id="123_abc" timestamp="2020-05-18T16:20:00-04:00"> <HotelPromotions hotel_id="Property_1" action="overlay"/> </Promotions>
Superponer todas las promociones
En el siguiente ejemplo se muestra cómo superponer el elemento <HotelPromotions>
de una propiedad con una o varias promociones nuevas. Cuando se incluye action="overlay"
, todas las promociones almacenadas se eliminan antes de que se almacenen las que se especifican en el mensaje actual:
<?xml version="1.0" encoding="UTF-8"?> <Promotions partner="account_xyz" id="123_abc" timestamp="2020-05-18T16:20:00-04:00"> <HotelPromotions hotel_id="Property_1" action="overlay"/> <Promotion id="1"> <BookingDates> <DateRange start="2020-09-01" end="2020-09-30"/> </BookingDates> <Discount percentage="10"/> <RoomTypes> <RoomType id="123"/> <RoomType id="456"/> </RoomTypes> <RatePlans> <RatePlan id="234"/> <RatePlan id="567"/> </RatePlans> <Stacking type="base_only"/> </Promotion> </HotelPromotions> </Promotions>
Respuestas
Sintaxis
En el mensajePromotionsResponse
se utiliza la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?> <PromotionsResponse timestamp="timestamp" id="message_ID" partner="partner_account_name"> <!-- Either Success or Issues will be populated. --> <Success/> <Issues> <Issue code="issue_code" status="issue_type">issue_description</Issue> </Issues> </PromotionsResponse>
Elementos y atributos
El mensajePromotionsResponse
incluye los siguientes elementos y atributos:Elemento/@Atributo | Repeticiones | Tipo | Descripción |
---|---|---|---|
PromotionsResponse | 1 | Complex element | Elemento raíz que indica si se han detectado problemas en un mensaje de solicitud Promotions recibido o si, por el contrario, se ha procesado correctamente. |
PromotionsResponse/@timestamp | 1 | DateTime | Fecha y hora de creación de este mensaje. |
PromotionsResponse/@id | 1 | String | Identificador único del mensaje Promotions asociado. |
PromotionsResponse/@partner | 1 | String | Cuenta de partner de este mensaje. |
PromotionsResponse/Success | 0..1 | Success | Indica que el mensaje Promotions se ha procesado correctamente sin advertencias, errores ni fallos.
En cada mensaje se incluye |
PromotionsResponse/Issues | 0..1 | Issues | Contenedor para uno o varios problemas que se han detectado al procesar el mensaje Promotions.
En cada mensaje se incluye |
PromotionsResponse/Issues/Issue | 1..n | Issue | Descripción de una advertencia, error o fallo que se ha detectado al procesar el mensaje Promotions. Para obtener más información sobre estos problemas, consulta los mensajes de error sobre el estado del feed. |
PromotionsResponse/Issues/Issue/@code | 1 | Integer | Identificador del problema. |
PromotionsResponse/Issues/Issue/@status | 1 | Enum | Tipo de problema que se ha detectado. Los valores válidos son warning, error y failure. |
Ejemplos
Success
A continuación, se incluye una respuesta a un mensaje Promotions que se ha procesado correctamente:
<?xml version="1.0" encoding="UTF-8"?> <PromotionsResponse timestamp="2020-05-18T16:20:00-04:00" id="12345678" partner="partner_account_name"> <Success/> </PromotionsResponse>
Issues
A continuación, se incluye una respuesta a un mensaje Promotions que no se procesado debido a determinados errores:
<?xml version="1.0" encoding="UTF-8"?> <PromotionsResponse timestamp="2020-05-18T16:20:00-04:00" id="12345678" partner="partner_account_name"> <Issues> <Issue code="1001" status="error">Example</Issue> </Issues> </PromotionsResponse>