Descripción general
Esta API te permite especificar posibles descuentos. De las promociones especificadas, Google aplica la promoción apta o el conjunto de promociones que dirige a los al precio más bajo. Si estás buscando una API que admita tasas arbitrarias ajustes que pueden aumentar o disminuir el precio cuando las condiciones satisfecho, entonces considera nuestro API de Rate Modifications. Ten en cuenta que si ambas APIs están presentes, las modificaciones de tarifa se aplican antes promociones.
Solicitudes
Sintaxis
El mensaje Promotions
usa la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key"
id="message_ID"
timestamp="timestamp">
<HotelPromotions hotel_id="HotelID" action="[overlay]">
<Promotion id="PromotionID" action="[delete]">
<BookingDates>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
</BookingDates>
<BookingWindow min="integer_or_duration" max="integer_or_duration"/>
<Ceiling amount_per_night="float"/>
<Floor amount_per_night="float"/>
<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, fixed_amount_per_night,
fixed_price, or fixed_price_per_night; applied_nights is only used
with percentage, fixed_amount_per_night, and fixed_price_per_night. -->
<Discount percentage="float" fixed_amount="float" fixed_amount_per_night="float"
fixed_price="float" fixed_price_per_night="float"
applied_nights="integer_1_to_99" rank="integer_1_to_99">
<!-- FreeNights may not be used in conjunction with attributes on Discount -->
<FreeNights stay_nights="integer" discount_nights="integer"
discount_percentage="float" night_selection="[cheapest|last]"
repeats="boolean"/>
</Discount>
<!-- Exactly one of Discount or BestDailyDiscount must be specified.
Specify only one of percentage, fixed_amount, or fixed_price. -->
<BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
<Devices>
<Device type="[desktop|tablet|mobile]"/>
</Devices>
<InventoryCount min="integer" max="integer"/>
<LengthOfStay min="integer" max="integer"/>
<MembershipRateRule id="RateRuleID"/>
<MinimumAmount before_discount="integer"/>
<Occupancy min="integer" max="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|none|second]"/>
<StayDates application="[all|any|overlap]">
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</StayDates>
<UserCountries type="[include|exclude]">
<Country code="country_code"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
Elementos y atributos
El mensaje de promociones tiene los siguientes elementos y atributos:
Elemento / @Attribute | Casos | Tipo | Descripción |
---|---|---|---|
Promotions | 1 | Complex element | Es el elemento raíz de un mensaje de promoción. |
Promotions / @partner | 1 | string | La cuenta de socio de este mensaje. Este valor de cadena es el
"Clave de socio" valor que aparece en
el
Página Configuración de la cuenta en Hotel Center.
Si tienes un backend que proporciona feeds para
varias cuentas, este valor debe coincidir con el |
Promotions / @id | 1 | string | Un identificador único para este mensaje de solicitud. Este valor se muestra en el mensaje de respuesta. Los caracteres permitidos son a-z, A-Z, 0-9, _ (guion bajo) y - (guion). |
Promotions / @timestamp | 1 | DateTime | La fecha y hora de creación de este mensaje. |
Promotions / HotelPromotions | 0..n | HotelPromotions | Promociones de una propiedad. Cada promoción se aplica a una sola propiedad. A menos que se use |
Promotions / HotelPromotions / @hotel_id | 1 | string | Es el identificador único de la propiedad. Este valor debe coincidir con el
ID de hotel especificado con
<id> en el elemento <listing>
en el 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 Si no se especifica, cada promoción especificada en el mensaje actual es una de las siguientes:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Una sola promoción para una propiedad. Ten en cuenta que si
Si necesitas usar más de 99 promociones, comunícate con tu administrador técnico de cuentas (TAM). |
Promotions / HotelPromotions / Promotion / @id | 1 | string | Es un identificador único para la promoción. El número máximo de caracteres permitidos es de 40. Los caracteres permitidos 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 Si se especifica |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | Un contenedor para uno o más rangos que definen cuándo debe ocurrir la reserva para que se aplique la promoción. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | Es un intervalo que especifica cuándo debe ocurrir la reserva para que se realice la promoción. se aplicó. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date o DateTime | La fecha y hora de inicio (según la zona horaria de la propiedad) inclusivos del rango.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date o DateTime | Es la fecha o la fecha y hora de finalización (según la zona horaria de la propiedad) inclusive del período.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | Indica los días de la semana que se permiten en el período. Si no se especifica, se permiten todos los días en el período. Cada carácter de la cadena especifica un día. Por ejemplo, "L-V" especifica que se permiten los días de la semana en el período. Los caracteres válidos son los siguientes:
Cualquier combinación de caracteres es válida. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Especifica el período durante el cual la reserva debe ocurrir en relación con el fecha de entrada (según la zona horaria de la propiedad). Por ejemplo, el período de reserva se puede establecer en al menos 7 días, pero no más de 180 días, antes del registro de entrada. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | La duración mínima antes del registro de entrada cuando debe realizarse la reserva
para que se aplique la promoción. Si no se especifica, o su valor
es 0 , no hay un mínimo.
Los tipos de valor válidos son los siguientes:
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | Es la cantidad máxima de días antes de la fecha de entrada en la que se debe realizar la reserva para que se aplique la promoción. Si no se especifica, o su valor
es 0 , no hay un máximo.
Los tipos de valor válidos son los siguientes:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
Define las restricciones sobre el valor máximo en el que se puede establecer una tarifa después de que se apliquen las promociones. Las promociones siempre deben especificar un Si se configura el apilamiento, entonces se mostrarán varias promociones con
Ejemplo: Precios para estadías de 1 noche en
Este es el orden de cálculo:
El hecho de que 60 sea un límite general más estricto es irrelevante porque es válido solo para su propia promoción, y no puede haber límite que abarca toda la pila de promociones. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
Cantidad máxima a la que se puede establecer una tarifa por noche después de se aplica el descuento. Si también se especifica un elemento Se aplica el |
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Define las restricciones sobre el valor mínimo en el que se puede establecer una tarifa después de que se apliquen las promociones. Las promociones siempre deben especificar un La lógica de Si se configura el apilamiento, entonces se mostrarán varias promociones con
Ejemplo: Precios para estadías de 1 noche en
Este es el orden de cálculo:
El hecho de que 90 sea un precio mínimo más estricto es irrelevante porque es válido solo para su propia promoción, y no puede haber que abarca toda la pila de promociones. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
Importe mínimo que se puede establecer una tarifa por noche después de se aplica el descuento. Si también se especifica un elemento Se aplica el |
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | Un contenedor para uno o más períodos que definen cuándo se debe registrar la entrada para que se aplique la promoción. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | Un período que especifique cuándo se debe registrar la entrada para que la promoción si se aplican. Este elemento no es obligatorio si borras una o más promociones. También se admite el formato YearlessDate.
|
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | La fecha de inicio (según la zona horaria de la propiedad), inclusive, de
el período. Esta fecha debe ser anterior o igual a la fecha de end . Si no se especifica start , la fecha
el rango es eficazmente ilimitado en términos de una fecha de inicio. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | La fecha de finalización (según la zona horaria de la propiedad), inclusive, de los
durante un período específico. Esta fecha debe ser la misma que la fecha de start o posterior. Si no se especifica end , el período es, en realidad, ilimitado en términos de una fecha de finalización. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | Indica los días de la semana que se permiten en el período. Si no se especifica, se permiten todos los días en el período. Cada carácter de la cadena especifica un día. Por ejemplo, "MTWHF" especifica que están permitidos los días de la semana en el período. Los caracteres válidos son los siguientes:
Cualquier combinación de caracteres es válida. |
Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | Es un contenedor para uno o más períodos que definen cuándo se debe realizar el pago para que se aplique la promoción. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | Un período que especifique cuándo debe ocurrir la salida para que la promoción si se aplican. Este elemento no es obligatorio si tienes borrar una o más promociones. También se admite el formato YearlessDate.
|
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | Es la fecha de inicio (según la zona horaria de la propiedad) inclusive del período. Esta fecha debe ser anterior o igual a la del
end fecha. Si no se especifica start , la fecha
el rango es eficazmente ilimitado en términos de una fecha de inicio. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | La fecha de finalización (según la zona horaria de la propiedad), inclusive, de los
durante un período específico. Esta fecha debe ser la misma que la fecha de start o posterior. Si no se especifica end , el período es, en realidad, ilimitado en términos de una fecha de finalización. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | Indica los días de la semana que se permiten en el período. Si no se especifica, se permiten todos los días en el período. Cada carácter de la cadena especifica un día. Por ejemplo, "MTWHF" especifica que están permitidos los días de la semana en el período. Los caracteres válidos son los siguientes:
Cualquier combinación de caracteres es válida. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | Contenedor para mostrar una lista de los dispositivos de los usuarios que son aptos para el promoción. Si se especifica, solo se les ofrece la tarifa con descuento a los usuarios aptos en los dispositivos enumerados. Si no se especifica, los usuarios aptos en cualquier se ofrece la tarifa con descuento. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Define un tipo de dispositivo de usuario que es apto para la promoción. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | Es un tipo de dispositivo. El valor debe ser desktop ,
tablet o mobile . |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | Exactamente uno de Especifica el descuento que se aplicará para esta promoción. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Exactamente uno de Es un valor decimal de 0 a 100 que especifica el porcentaje de descuento.
Se aplica a Ejemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Exactamente uno de Una cantidad fija que se restará de la suma del
Tarifas por noche de Ejemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Exactamente uno de Es un descuento fijo que se aplica a cada uno de los Ejemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Exactamente uno de Si se especifican Si Ejemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Exactamente uno de Si se especifican Si Si se especifica Ejemplos:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Esto solo debe usarse con
Es la cantidad de noches a las que se aplica el descuento, comenzando con la más económica. Debe ser un número entero entre 1 y 99. Si no se especifica, el descuento se aplica a todas las noches. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Especifica un descuento para ciertas noches de estadía cuando una estadía mínima
se alcanza la longitud máxima. Atributos del elemento Discount superior
no están permitidos si se usa este elemento. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Es la cantidad de noches requeridas para que se aplique el descuento. Cada el descuento se aplica a un segmento independiente de noches de estadía. Por ejemplo, para una estadía de 10 noches donde |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | Es la cantidad de noches con descuento dentro de cada segmento de noches de estadía. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | Es el descuento que se aplica a las noches con descuento. Si este valor
es 50 , entonces cada noche seleccionada tendrá un 50% de descuento. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Debe ser cheapest o last . Si
last y, luego, las noches al final del tramo de estadía.
noches con descuento. Si es cheapest , se aplican descuentos a las noches más económicas dentro del segmento de noches de la estadía. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Si el descuento se puede aplicar a varias noches de estadía
segmentos. Si es Por ejemplo, si |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Asigna una clasificación a esta promoción y la incluye en la selección por clasificación, en la que solo se selecciona la promoción con la clasificación más baja para que se aplique. Valores debe estar comprendido entre 1 y 99, ambos incluidos. Si varias promociones comparten la misma clasificación, se selecciona y aplica una de manera arbitraria. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Exactamente uno de Especifica un
descuento diario que puede aplicarse a una noche de estadía. Está en
en contraste con Cada propiedad puede tener un solo grupo de promociones que se consideran «mejores todos los días». Esto significa que, por cada noche de estadía, sencillo "mejor del día" sea apta y genere la mayor se seleccionó el descuento para esa noche y es posible que se aplique.
|
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | Exactamente uno de Es un valor decimal de 0 a 100 que especifica el porcentaje de descuento.
Se aplica a Ejemplos:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Exactamente uno de Una cantidad fija que se restará de un único
Tarifa por noche de Ejemplos:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | Exactamente uno de Si se especifican tarifas por noche de Ejemplos:
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Define las restricciones sobre la cantidad de salas de reuniones que deben estar disponibles en
para que se aplique esta promoción. El descuento se aplica solo a las noches que cumplen con la restricción. No se permite con el
fixed_amount de descuento. Ten en cuenta que la cantidad de habitaciones disponibles se especifica con OTA_HotelInvCountNotifRQ (InvCount ) o OTA_HotelAvailNotifRQ (BookingLimit ). |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | Es la cantidad mínima de habitaciones que deben estar disponibles para que la promoción se aplique a la tarifa por noche. Si no se especifica, no hay mínimo. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | La cantidad máxima de habitaciones que deben estar disponibles para la promoción que se aplicará a la tarifa por noche. Si no se especifica, no hay máximo. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Define los límites de duración de la estadía dentro de los que se puede usar esta promoción. se aplicó. La promoción no se aplica si la duración de la estadía es superior a los límites mínimo y máximo. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | Es la cantidad mínima de noches permitidas en la estadía para que se aplique la promoción. Si no se especifica, no hay un valor mínimo. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | La cantidad máxima de noches permitidas en la estadía para que se cumpla la promoción se aplicó. Si no se especifica, no hay un máximo. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
Contenedor de una regla de tarifas de membresía que activa una IU específica tratamiento adicional para el descuento asociado. No se debe especificar este elemento, a menos que también se especifique |
Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string |
ID de regla de tarifas asociada con un programa de membresía. |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | Especifica la suma mínima de las tarifas diarias de las habitaciones (usando la tarifa más grande de
AmountBeforeTax o AmountAfterTax ) que deben
superar el límite para que se aplique la promoción. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | Es el valor que se debe superar para que se aplique la promoción. |
Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Define las restricciones de ocupación para las que se aplica esta promoción. La promoción no se aplica cuando la ocupación está fuera del límites mínimos y máximos. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | La ocupación especificada por el usuario debe ser de al menos este valor para que el descuento que se aplicará. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | La ocupación especificada por el usuario debe ser, como máximo, este valor para que el descuento que se aplicará. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Contenedor de una lista de los planes de tarifas a los que se aplica la promoción.
Si no se especifica <RatePlans> , la promoción
se aplica a todos los planes de tarifas. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | Especifica un plan de tarifas. Un plan de tarifas se define mediante una combinación de paquete, tarifas y disponibilidad, como se define en los mensajes Transaction (Property Data), OTA_HotelRateAmountNotifRQ y OTA_HotelAvailNotifRQ, y como lo identifica el PackageID. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | El identificador único del plan de tarifas. Este valor se asigna
Valor de PackageID en <PackageData>
en un mensaje Transaction (Property Data) y en la
Atributo RatePlanCode en
<StatusApplicationControl> en ambos
<OTA_HotelRateAmountNotifRQ> y
<OTA_HotelAvailNotifRQ> mensajes.
La cantidad máxima de caracteres permitida es 50. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | Contenedor de una lista de los tipos de habitaciones a los que se aplica la promoción.
La promoción se aplica a cada <RoomType>
especificada. Si no se especifica <RoomTypes> , el valor
se aplica a todas las salas. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | Especifica un tipo de habitación. El tipo de habitación se define en
elemento <RoomData> en un
Transaction (Property Data) y se
a la que se hace referencia con su valor <RoomID> . (Su
El valor de <RoomID> también hace referencia a
Atributo InvTypeCode en OTA_HotelRateAmountNotifRQ
messages.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | Es el identificador único del inventario (tipo de habitación). Este valor se asigna
a <RoomID> en un mensaje de transacción (datos de propiedad).
La cantidad máxima de caracteres permitida es 50. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | Especifica cómo se pueden combinar las promociones. Si no se especifica, el “tipo”
y se supone que es base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | Se pueden aplicar varias promociones a una sola tarifa en función del este parámetro de configuración:
De las combinaciones permitidas, el conjunto de promociones que genera el el descuento más alto se aplicará a la tarifa. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | Un contenedor para uno o más períodos que determinan la forma se aplica una promoción, por ejemplo, para adaptarse a 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 siempre se debe especificar.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | Es un período que especifica las fechas en las que se debe aplicar la promoción. También se admite el formato YearlessDate.
Si quieres establecer el rango de |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | La fecha de inicio (según la zona horaria de la propiedad), inclusive, de
el período. Esta fecha debe ser anterior o igual a la del
end fecha. Si no se especifica start , la fecha
el rango es eficazmente ilimitado en términos de una fecha de inicio.
Debes especificar el valor |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | Es la fecha de finalización (según la zona horaria de la propiedad) inclusive del período. Esta fecha debe ser igual o posterior a la
start fecha. Si no se especifica end , el período es ilimitado a partir de la fecha start .
Debes especificar el valor |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | Indica los días de la semana que se permiten en el período. Si no es así especificado, todos los días están permitidos en el período. Cada carácter de la cadena especifica un día. Por ejemplo, "MTWHF" especifica que están permitidos los días de la semana en el período. Los caracteres válidos son los siguientes:
Cualquier combinación de caracteres es válida. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Contenedor para mostrar una lista de las ubicaciones de los usuarios (países) que son aptas para la promoción. Si se especifica, solo los usuarios aptos de la lista se ofrece la tarifa con descuento. Si no se especifica, reúne los requisitos a los usuarios de cualquier país se les ofrece la tarifa con descuento. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | Es el tipo de especificación de UserCountry.
Los valores válidos son Si UserCountry Si el valor de UserCountry Si no se establece el objeto |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Define un país en el que los usuarios son aptos para la promoción. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | Un país de CLDR
código,
como DE o FR . Ten en cuenta que, para algunos
el código de país de CLDR no es el mismo que el ISO
el código de país. Además, los códigos regionales CLDR no son compatibles. |
Ejemplos
Hay un límite de 500 promociones por propiedad. Consulta "Borra uno promoción” para quitar promociones de una propiedad.
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"/>
<UserCountries>
<Country code="US"/>
<Country code="GB"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
Condición de inventario
En el siguiente ejemplo, se muestra cómo crear un descuento si hay exceso inventario cerca de 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>
Borrar una promoción
En el siguiente ejemplo, se muestra cómo borrar 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>
Borrar todas las promociones
En el siguiente ejemplo, se muestra cómo borrar 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>
Superposición de todas las promociones
En el siguiente ejemplo, se muestra cómo superponer <HotelPromotions>
para una propiedad con una o más promociones nuevas. Cuando el valor sea action="overlay"
, todos los almacenados
promociones se borran antes de almacenar las promociones especificadas 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"/>
</Promotion>
</HotelPromotions>
</Promotions>
3 tipos diferentes de apilamiento
En el siguiente ejemplo, se muestra un caso en el que tres promociones diferentes
aplicado (base
, second
, any
). Recuerda que la promoción none
no se
ya que las demás promociones ofrecen un mejor descuento. Si el código original
el precio con descuento era de USD 100, y el precio con descuento sería de USD 72.90.
<?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">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="second"/>
</Promotion>
<Promotion id="3">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="4">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
Tipo de apilamiento inexistente
En el siguiente ejemplo, se muestra un caso en el que se usa la promoción none
porque
La combinación de otras promociones ofrece un descuento más pequeño. Si el botón
el precio original era de USD 100 y el precio con descuento sería de USD 75.
<?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">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="3">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
Límites de duración del período de reserva
En el siguiente ejemplo, se muestra un caso en el que BookingWindow
se usa con sus límites de inicio y finalización definidos como una duración de la norma ISO 8601
el tipo de letra. Esta restricción del período de reserva requiere que se reserve a las 6:00 p.m. o antes de esa fecha
el día anterior a la llegada y a las 12:00 p.m. del segundo día anterior
su 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 min="P1DT6H" max="P2DT12H"/>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Límites de fecha y hora de las fechas de reserva
En el siguiente ejemplo, se muestra un caso en el que BookingDates
se usa con los atributos start
y end
como
DateTime. Esta restricción de fecha de reserva requiere que la reserva se realice entre las 06:30 del 01/07/2020 y las 18:45 del 02/07/2020.
<?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-01T06:30:00" end="2020-07-02T18:45:00"/>
</BookingDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Períodos sin años
En el siguiente ejemplo, se muestra un caso en el que CheckInDates
elemento contiene DateRanges
con start
y
end
campos sin años. En este ejemplo, la promoción se aplica
para las fechas de entrada entre el 29 de diciembre y el 2 de enero, independientemente del año. Sin año
los períodos que cruzan el límite de Año Nuevo no son válidos. Por lo tanto, el período
se expresa como dos períodos adyacentes.
<?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">
<CheckInDates>
<DateRange start="12-29" end="12-31"/>
<DateRange start="01-01" end="01-02"/>
</CheckInDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Descuento de FreeNights
En el siguiente ejemplo, se descuenta un 50% de dos noches por cada cuatro noches de estadía el período especificado de fechas de reserva. Para un itinerario de diez noches, se aplicaría un descuento del 50% a un total de cuatro noches.
<?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="2022-01-01" end="2022-05-31"/>
</BookingDates>
<Discount>
<FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
En el siguiente ejemplo, se aplica un descuento del 50% para una noche por cada tres noches que se alojen durante el o períodos específicos de fechas de estadía. Solo las noches de la estadía que se superponen se consideran para poder obtener el descuento. Para el siguiente itinerario con registro de entrada el 1-1-2022 y la salida el 7-1-2022, las noches calificadas de estadía y los descuentos se aplican de la siguiente manera.
- 1-1-2022 (estadía)
- 2-1-2022 (estadía)
- 2022-01-03
- 4-1-2022 (con descuento)
- 05-01-2022 (estadía)
- 6-1-2022 (estadía)
<?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">
<StayDates application="overlap">
<DateRange start="2022-01-01" end="2022-01-02"/>
<DateRange start="2022-01-04" end="2022-01-06"/>
</StayDates>
<Discount>
<FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
Selección clasificada
En el siguiente ejemplo, se ofrecen dos descuentos, uno de 20% de descuento y otro por un 15% de descuento. Durante la evaluación, solo se aplica el descuento del 15%. porque tiene una clasificación más baja.
<?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">
<Discount percentage="15" rank="25"/>
</Promotion>
<Promotion id="2">
<Discount percentage="20" rank="50"/>
</Promotion>
</HotelPromotions>
</Promotions>
BestDailyDiscount
En el siguiente ejemplo, se aplica un descuento en una estadía de dos noches
BestDailyDiscount
apilados con un Discount
.
<?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="HotelID" action="overlay">
<Promotion id="general">
<BestDailyDiscount fixed_amount="20"/>
</Promotion>
<Promotion id="may">
<BestDailyDiscount fixed_amount="50"/>
<StayDates application="overlap">
<DateRange start="2023-05-01" end="2023-05-31"/>
</StayDates>
</Promotion>
<Promotion id="fiesta">
<Discount fixed_amount_per_night="5"/>
<Stacking type="any"/>
</Promotion>
</HotelPromotions>
</Promotions>
Considera una estadía de dos noches del 30 de abril de 2023 al 2 de mayo de 2023 Para el cálculo, la combinación de los mejores descuentos diarios el descuento más alto se encuentra primero.
Para la primera noche, el "específico" es el único importe apto con con un descuento fijo de 20.
Para la segunda noche, el "mayo" ofrece un descuento mayor que el el "general" descuento. Entonces, ¿cuándo podría se seleccionó el descuento fijo cantidad es de 50.
Luego, para la estadía, la “fiesta” descuentos promocionales a 5 por noche o
10 en total. Puede combinarse con los mejores descuentos diarios.
porque "fiesta" tiene el tipo de apilado establecido en any
. Si se hubiera establecido
a base
; luego, solo la combinación de los mejores descuentos diarios o
la "fiesta" se aplica el descuento. Ver descripción de
Stacking
para obtener más información.
`En general, el precio de la estadía incluye un importe fijo de 20 + 50 + 10 = 80. descuento.
Respuestas
Sintaxis
El mensaje PromotionsResponse
usa la siguiente sintaxis:
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues are populated. -->
<Success/>
<Issues>
<Issue code="issue_code"
status="issue_type">
issue_description
</Issue>
</Issues>
</PromotionsResponse>
Elementos y atributos
El mensaje PromotionsResponse
tiene los siguientes elementos y atributos:
Elemento / @Attribute | Casos | Tipo | Descripción |
---|---|---|---|
PromotionsResponse | 1 | Complex element | Es el elemento raíz que indica el éxito o los problemas de un mensaje de solicitud de promociones recibido. |
PromotionsResponse / @timestamp | 1 | DateTime | La fecha y hora de creación de este mensaje. |
PromotionsResponse / @id | 1 | string | Es el identificador único del mensaje de promociones asociado. |
PromotionsResponse / @partner | 1 | string | La cuenta de socio de este mensaje. |
PromotionsResponse / Success | 0..1 | Success | Indica que el mensaje de promociones se procesó correctamente.
sin advertencias, errores ni fallas.
|
PromotionsResponse / Issues | 0..1 | Issues | Es un contenedor para uno o más problemas que se encontraron durante el procesamiento del mensaje de promociones.
|
PromotionsResponse / Issues / Issue | 1..n | Issue | La descripción de una advertencia, un error o una falla que se encontró mientras procesar el mensaje de promociones. Puedes encontrar detalles sobre estos problemas en Mensajes de error del estado del feed |
PromotionsResponse / Issues / Issue / @code | 1 | integer | Es el identificador del problema. |
PromotionsResponse / Issues / Issue / @status | 1 | enum | El tipo de problema encontrado. Los valores válidos son |
Ejemplos
Listo
La siguiente es una respuesta a un mensaje de promociones procesado correctamente.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
Problemas
La siguiente es una respuesta a un mensaje de Promociones que no se procesó debido a errores.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</PromotionsResponse>