Présentation
Cette API vous permet de spécifier des remises possibles. Parmi les promotions spécifiées, Google applique la promotion ou l'ensemble de promotions éligibles qui conduit au le prix le plus bas. Si vous recherchez une API compatible avec des ajustements de prix arbitraires pouvant augmenter ou diminuer le prix lorsque les conditions sont remplies, envisagez notre API Rate Modifications. Notez que si les deux API sont présentes, les modifications de tarif sont appliquées avant promotions.
Demandes
Syntaxe
Le message Promotions
utilise la syntaxe suivante:
<?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>
Éléments et attributs
Le message Promotions contient les éléments et les attributs suivants :
Élément / @Attribut | Occurrences | Type | Description |
---|---|---|---|
Promotions | 1 | Complex element | Élément racine d'un message promotionnel. |
Promotions / @partner | 1 | string | Compte partenaire pour ce message. Cette valeur de chaîne est la
"Clé partenaire" valeur indiquée sur
le <ph type="x-smartling-placeholder"></ph>
Page "Paramètres du compte" dans Hotel Center.
Si vous disposez d'un backend qui fournit des flux
plusieurs comptes, cette valeur doit correspondre à l' |
Promotions / @id | 1 | string | Identifiant unique de ce message de requête. Cette valeur est renvoyée dans le message de réponse. Caractères autorisés : a-z, A-Z, 0-9 et _ (trait de soulignement) et - (trait d'union). |
Promotions / @timestamp | 1 | DateTime | Date et heure de création de ce message. |
Promotions / HotelPromotions | 0..n | HotelPromotions | Promotions pour un établissement. Chaque promotion s'applique à un seul établissement. Sauf si |
Promotions / HotelPromotions / @hotel_id | 1 | string | Identifiant unique de l'établissement. Cette valeur doit correspondre au
Identifiant de l'hôtel spécifié à l'aide de
<id> dans l'élément <listing>
dans le flux Hotel List Feed. L'ID de l'hôtel est également indiqué dans Hotel Center. |
Promotions / HotelPromotions / @action | 0..1 | enum | Si cet attribut est spécifié, la valeur doit être S'il n'est pas spécifié, chaque promotion spécifiée dans le champ est soit:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Une seule promotion pour un établissement. Notez que si
Si vous devez utiliser plus de 99 promotions, contactez votre responsable de compte technique (TAM). |
Promotions / HotelPromotions / Promotion / @id | 1 | string | Identifiant unique de la promotion. Le nombre maximal de Le nombre de caractères autorisés est de 40. Caractères autorisés : a-z, A-Z, 0-9, _ (trait de soulignement), - (trait d'union) et . (point). |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | Si spécifié, la valeur doit être Si |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | Conteneur pour une ou plusieurs plages qui définissent le moment auquel la réservation doit être effectuée pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | Plage indiquant le moment auquel la réservation doit être effectuée pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date ou DateTime | Date de début ou date/heure (en fonction du fuseau horaire de la propriété) inclus, de la plage.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date ou DateTime | Date ou date/heure de fin (en fonction du fuseau horaire de la propriété) inclus, de la plage.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | Jours de la semaine autorisés dans la plage de dates. Si ce n'est pas le cas tous les jours sont autorisés dans la plage de dates. Chaque caractère de la chaîne spécifie un jour. Par exemple, « MTWHF ». spécifie que les jours de la semaine sont autorisés dans la plage de dates. Les caractères suivants sont acceptés:
Toute combinaison de caractères est valide. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Spécifie la période au cours de laquelle la réservation doit être effectuée par rapport au la date d'arrivée (en fonction du fuseau horaire de l'établissement). Par exemple, la période de réservation peut être définie sur au moins 7 jours, mais pas plus de 180 jours. avant l'arrivée. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | Durée minimale avant l'arrivée où la réservation doit être effectuée pour que la promotion soit appliquée. Si cet attribut n'est pas spécifié ou si sa valeur
est de 0 , il n'y a pas de minimum.
Les types de valeurs reconnus sont les suivants :
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | Nombre maximal de jours avant l'arrivée où la réservation doit être effectuée
pour que la promotion soit appliquée. Si cet attribut n'est pas spécifié ou si sa valeur
est de 0 , il n'y a pas de limite maximale.
Les types de valeurs reconnus sont les suivants :
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
Définit les restrictions sur la valeur maximale sur laquelle un tarif peut être défini. après l'application des promotions. Les promotions doivent toujours spécifier un Si l'empilement est configuré, plusieurs promotions avec
Exemple : Prix d'un séjour d'une nuit où
Voici l'ordre de calcul:
Le fait que 60 soit un plafond global plus strict n'a pas d'importance puisque elle n'est valable que pour sa propre promotion, et il n'est pas possible qui s'applique à l'ensemble de la pile de promotions. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
Montant maximal fixé pour un tarif par nuit après le est appliquée. Si un élément
|
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Définit les restrictions sur la valeur minimale pour laquelle un tarif peut être défini. après l'application des promotions. Les promotions doivent toujours spécifier un La logique Si l'empilement est configuré, plusieurs promotions avec
Exemple : Prix d'un séjour d'une nuit où
Voici l'ordre de calcul:
Le fait que 90 soit un prix plancher global plus strict n'a pas d'importance puisque elle n'est valable que pour sa propre promotion, et il n'est pas possible qui s'étend sur l'ensemble de la pile de promotions. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
Montant minimal fixé pour un tarif par nuit après le est appliquée. Si un élément
|
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | Conteneur pour une ou plusieurs plages de dates qui définissent le moment auquel l'arrivée doit avoir lieu pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | Plage de dates indiquant le moment auquel l'arrivée doit avoir lieu pour que la promotion être appliqué. Cet élément n'est pas obligatoire si vous supprimez un ou plusieurs promotions. Le format YearlessDate est également accepté.
|
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | Date de début (en fonction du fuseau horaire de l'établissement), date de début incluse,
la plage de dates. Cette date doit être antérieure ou identique à la date end . Si start n'est pas spécifié, la date
est en fait illimitée en termes de date de début. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | Date de fin (en fonction du fuseau horaire de l'établissement), incluse, de l'événement
la plage de dates. Cette date doit être identique ou postérieure à la date start . Si end n'est pas spécifié, la date
est en réalité illimitée en termes de date de fin. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | Jours de la semaine autorisés dans la plage de dates. Si cet attribut n'est pas spécifié, tous les jours sont autorisés dans la plage de dates. Chaque caractère de la chaîne indique un jour. Par exemple, "MTWHF" indique que les jours de la semaine sont autorisés dans la plage de dates. Les caractères suivants sont acceptés:
Toute combinaison de caractères est valide. |
Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | Conteneur pour une ou plusieurs plages de dates qui définissent le moment du départ pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | Une plage de dates indiquant à quel moment le départ doit avoir lieu pour que la promotion être appliqué. Cet élément n'est pas obligatoire si vous supprimez une ou plusieurs promotions. Le format YearlessDate est également accepté.
|
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | Date de début (en fonction du fuseau horaire de l'établissement), date de début incluse,
la plage de dates. Cette date doit être antérieure ou identique à la date
Date end . Si start n'est pas spécifié, la plage de dates est en fait illimitée en ce qui concerne la date de début. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | Date de fin (en fonction du fuseau horaire de l'établissement), incluse, de l'événement
la plage de dates. Cette date doit être identique ou postérieure à la date start . Si end n'est pas spécifié, la date
est en réalité illimitée en termes de date de fin. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | Jours de la semaine autorisés dans la plage de dates. Si cet attribut n'est pas spécifié, tous les jours sont autorisés dans la plage de dates. Chaque caractère de la chaîne indique un jour. Par exemple, "MTWHF" indique que les jours de la semaine sont autorisés dans la plage de dates. Les caractères suivants sont acceptés:
Toute combinaison de caractères est valide. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | Conteneur permettant de lister les appareils des utilisateurs éligibles à promotion. Si cet élément est spécifié, seuls les utilisateurs éligibles sur les appareils répertoriés bénéficient d'un tarif réduit. S'il n'est pas spécifié, il s'agit des utilisateurs éligibles appareil bénéficient d'un tarif réduit. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Définit un type d'appareil d'utilisateur éligible à la promotion. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | Type d'appareil. La valeur doit être desktop ,
tablet ou mobile . |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | Exactement une des valeurs suivantes : Indique la remise à appliquer pour cette promotion. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Exactement une des Valeur décimale comprise entre 0 et 100 indiquant le pourcentage de remise.
Elle s'applique à Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Exactement une des Montant fixe à soustraire de la somme des
Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Exactement une des Une remise fixe appliquée à chacun des Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Exactement une des Si des tarifs par nuit de Si Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Exactement une des Si des tarifs par nuit de Si Si Exemples :
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Il ne doit être utilisé qu'avec
Nombre de nuits auxquelles la remise est appliquée, à partir de le moins cher. La valeur doit être un entier compris entre 1 et 99. Si aucune valeur n'est spécifiée, s'applique à toutes les nuits. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Spécifie une remise sur certaines nuits de séjour lorsqu'une durée de séjour minimum
est atteinte. Les attributs de l'élément parent Discount ne sont pas autorisés si cet élément est utilisé. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Nombre de nuitées requises pour que la remise soit appliquée. Chaque est appliquée à un segment distinct des nuitées. Par exemple, pour un séjour de 10 nuits où |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | Nombre de nuits à tarif réduit dans chaque segment de nuits de séjour. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | Remise appliquée aux nuits avec remise. Si cette valeur
est définie sur 50 , une remise de 50% est donc appliquée pour chaque nuit sélectionnée. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Doit être cheapest ou last . Si
last , puis les nuits à la fin du segment de séjour
nuits à tarif réduit. Si la valeur est cheapest , alors le tarif le moins cher
une remise est appliquée. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Possibilité d'appliquer la remise à plusieurs nuitées
segments. Si la valeur est Par exemple, si |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Attribue un classement à cette promotion et active la sélection avec classement, où seule la promotion avec le classement le plus bas est sélectionnée pour être appliquée. Valeurs doit être comprise entre 1 et 99 inclus. Si plusieurs promotions ont le même rangé, l'un est arbitrairement sélectionné et appliqué. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Exactement une des valeurs suivantes : Spécifie
remise quotidienne pouvant être appliquée à une nuit de séjour. Contrairement à Chaque établissement peut avoir un seul groupe de promotions considérées comme "meilleures chaque jour". Cela signifie que pour chaque nuit de séjour, single "best Daily" qui est éligible et qui génère le plus pour cette nuit est sélectionnée et peut être appliquée.
|
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | Exactement une des Valeur décimale comprise entre 0 et 100 indiquant le pourcentage de remise.
Elle s'applique à Exemples :
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Exactement une des Montant fixe à soustraire d'un tarif par nuit Exemples :
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | Exactement une des Si des tarifs par nuit de Exemples :
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Définit les restrictions sur le nombre de chambres devant être disponibles dans
pour que cette promotion soit appliquée. La remise s'applique uniquement
de nuits qui respectent la contrainte. Non autorisé avec les
Remise de fixed_amount . Notez que le nombre d'instances
"rooms" est spécifié
OTA_HotelInvCountNotifRQ (InvCount )
ou OTA_HotelAvailNotifRQ
(BookingLimit ). |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | Nombre minimal de chambres devant être disponibles pour bénéficier de la promotion doit être appliqué au tarif par nuit. Si cet attribut n'est pas spécifié, minimum. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | Nombre maximal de chambres devant être disponibles pour la promotion doit être appliqué au tarif par nuit. Si cet attribut n'est pas spécifié, il n'y a pas de maximum. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Définit la durée maximale de séjour pendant laquelle cette promotion peut être appliquée appliquée. La promotion n'est pas appliquée lorsque la durée du séjour est supérieure à les limites minimale et maximale. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | Nombre minimal de nuits autorisées dans le séjour pour que la promotion soit appliquée. Si cet attribut n'est pas spécifié, il n'y a pas de minimum. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | Le nombre maximal de nuits autorisées dans le séjour pour que la promotion soit appliquée. Si cet attribut n'est pas spécifié, il n'y a pas de valeur maximale. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
Conteneur d'une règle d'offres pour les adhésions qui déclenche une UI spécifique de la remise associée. Cet élément ne doit pas être spécifié, sauf si
|
Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string |
Identifiant de règle d'offre associée à un programme d'adhésion. |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | Spécifie la somme minimale des prix à la journée des chambres (en utilisant la valeur la plus élevée des
AmountBeforeTax ou AmountAfterTax ) qui doit
est dépassé pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | Valeur à dépasser pour que la promotion soit appliquée. |
Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Définit les restrictions concernant le nombre de personnes pour lesquelles cette promotion est appliquée. La promotion n'est pas appliquée lorsque le nombre de personnes est en dehors des limites minimale et maximale. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | Le nombre de personnes spécifié par l'utilisateur doit être au moins égal à cette valeur pour que la remise à appliquer. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | Le nombre de personnes spécifié par l'utilisateur ne doit pas dépasser cette valeur pour que la remise à appliquer. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Conteneur pour la liste des plans tarifaires auxquels la promotion s'applique.
Si <RatePlans> n'est pas spécifié, la promotion
s'applique à tous les plans tarifaires. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | Spécifie un plan tarifaire. Un plan tarifaire est défini par une combinaison le forfait, les tarifs et la disponibilité, tels que définis dans l'article (Données sur un établissement), OTA_HotelRateAmountNotifRQ et OTA_HotelAvailNotifRQ et tel qu'identifié par le PackageID. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | Identifiant unique du plan tarifaire. Cette valeur correspond au
Valeur PackageID dans <PackageData>
dans un message Transaction (Données sur un établissement), et dans
Attribut RatePlanCode dans
<StatusApplicationControl> dans les deux cas
<OTA_HotelRateAmountNotifRQ> et
<OTA_HotelAvailNotifRQ> messages.
Le nombre maximal de caractères autorisés est de 50. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | Conteneur pour la liste des types de chambres auxquels la promotion s'applique.
La promotion est appliquée à chaque <RoomType>
spécifié. Si <RoomTypes> n'est pas spécifié, le
s'applique à toutes les chambres. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | Spécifie un type de chambre. Un type de chambre est défini
Élément <RoomData> dans une
Transaction (Données sur un établissement),
référencée à l'aide de sa valeur <RoomID> . (Sa valeur <RoomID> est également référencée par l'attribut InvTypeCode dans les messages OTA_HotelRateAmountNotifRQ.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | Identifiant unique de l'inventaire (type de chambre). Cette valeur correspond
à <RoomID> dans un message Transaction (Données sur un établissement).
Le nombre maximal de caractères autorisés est de 50. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | Indique comment combiner les promotions. S'il n'est pas spécifié, le "type"
est censé être base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | Plusieurs promotions peuvent être appliquées à un même tarif en fonction de ce paramètre:
Parmi les combinaisons autorisées, l'ensemble de promotions qui offre la plus grande remise est appliqué au tarif. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | Conteneur pour une ou plusieurs plages de dates qui déterminent la manière est appliquée, par exemple pour tenir compte des remises saisonnières. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Décrit comment la promotion doit être appliquée. Les valeurs valides sont les suivantes :
Cet attribut doit toujours être spécifié.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | Plage de dates indiquant les dates auxquelles la promotion doit être appliquée. Le format YearlessDate est également accepté.
Si vous voulez définir la plage |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | Date de début (en fonction du fuseau horaire de l'établissement), date de début incluse,
la plage de dates. Cette date doit être antérieure ou identique à la date end . Si start n'est pas spécifié, la date
est en fait illimitée en termes de date de début.
Vous devez spécifier la valeur |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | Date de fin (en fonction du fuseau horaire de l'établissement), incluse, de l'événement
la plage de dates. Cette date doit être identique ou postérieure au
Date start . Si end n'est pas spécifié, la date
est de fait illimitée à partir de la date start .
Vous devez spécifier la valeur |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | Jours de la semaine autorisés dans la plage de dates. Si cet attribut n'est pas spécifié, tous les jours sont autorisés dans la plage de dates. Chaque caractère de la chaîne indique un jour. Par exemple, "MTWHF" indique que les jours de la semaine sont autorisés dans la plage de dates. Les caractères suivants sont acceptés:
Toute combinaison de caractères est valide. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Conteneur permettant de lister les emplacements géographiques des utilisateurs (pays) éligibles pour la promotion. Si spécifié, seuls les utilisateurs éligibles de la liste pays bénéficient d'un tarif réduit. Si non spécifié, éligible les utilisateurs de n'importe quel pays bénéficient d'un tarif réduit. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | Type de spécification UserCountries.
Les valeurs valides sont Si la propriété UserCountries Si la valeur de Si le |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Définit un pays dans lequel les utilisateurs peuvent bénéficier de la promotion. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | Un pays CLDR
du code,
comme DE ou FR . Notez que, pour certains
pays, le code pays CLDR n'est pas le même que les codes ISO à deux lettres
code pays. De plus, les codes de région CLDR ne sont pas acceptés. |
Exemples
Vous ne pouvez pas ajouter plus de 500 promotions par propriété. Reportez-vous à la section promotion" pour supprimer les promotions d'un établissement.
Message de base
L'exemple suivant présente un message Promotions
de base:
<?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>
Condition d'inventaire
L'exemple suivant montre comment créer une remise en cas de dépassement d'inventaire peu de temps avant la date d'arrivée:
<?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>
Supprimer une promotion
L'exemple suivant montre comment supprimer une promotion pour un établissement:
<?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>
Supprimer toutes les promotions
L'exemple suivant montre comment supprimer toutes les promotions d'un établissement:
<?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>
Superposer toutes les promotions
L'exemple suivant montre comment superposer <HotelPromotions>
pour une propriété
avec une ou plusieurs nouvelles promotions. Lorsque la valeur est action="overlay"
, tous les stockages sont stockés.
les promotions sont supprimées avant que celles-ci soient stockées
message actuel:
<?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 types d'empilement différents
L'exemple suivant montre un cas où trois promotions différentes sont appliquées (base
, second
et any
). Notez que la promotion none
ne sera pas appliquée, car les autres promotions offrent une remise plus intéressante. Si l'original
100 $, le prix réduit est de 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>
Aucun type d'empilage
L'exemple suivant illustre l'utilisation de la promotion none
, car
si vous combinez d'autres promotions, vous obtiendrez une remise moins importante. Si le
le prix d'origine était de 100 $, le prix réduit était de 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>
Limites de durée de la période de réservation
L'exemple suivant montre un cas où l'élément BookingWindow
est utilisé avec ses limites de début et de fin définies en tant que type de durée ISO 8601. Cette restriction de la période de réservation nécessite une réservation au plus tard à 18h
la veille de votre arrivée, et à 12 h 00 ou après le 2e jour précédant votre arrivée
de l'arrivée.
<?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>
Limites de date et d'heure des dates de réservation
L'exemple suivant montre un cas où BookingDates
est utilisé avec les attributs start
et end
en tant que
DateTime. Cette restriction sur la date de réservation nécessite que la réservation ait lieu
entre le 01/07/2020 à 6h30 et le 02/07/2020 à 18h45.
<?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>
Plages de dates sans année
L'exemple suivant montre un cas où CheckInDates
contient des DateRanges
comportant les valeurs start
et
Champs end
sans années. Dans cet exemple, la promotion s'applique
aux dates d'arrivée comprises entre le 29/12 et le 02/01, quelle que soit l'année. Sans année
plages de dates qui dépassent la limite du Nouvel An ne sont pas valides. La valeur DateRange
est exprimée sous la forme de deux périodes adjacentes.
<?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>
Remise FreeNights
L'exemple suivant propose une remise de 50 % sur deux nuits pour chaque séjour de quatre nuits pour la période de réservation spécifiée. Pour un séjour de dix nuits, pour quatre nuits serait de 50%.
<?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>
Dans l'exemple suivant, une remise de 50% est appliquée à une nuit pour chaque séjour de trois nuits pendant la période une plage de dates de séjour spécifique. Seules les nuits de séjour qui se chevauchent sont prises en compte pour bénéficier de la remise. Pour l'itinéraire suivant avec une arrivée le 01/01/2022 et un départ le 07/01/2022, les nuits d'hébergement éligibles et les remises sont appliquées comme suit.
- 01/01/2022 (séjour)
- 02/01/2022 (séjour)
- 2022-01-03
- 04/01/2022 (prix réduit)
- 05/01/2022 (séjour)
- 2022-01-06 (séjour)
<?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>
Sélection classée
L'exemple suivant propose deux remises, l'une de 20 % et l'autre de 15 %. Lors de l'évaluation, seule la remise de 15 % est appliquée, car elle a un rang inférieur.
<?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
L'exemple suivant réduit un séjour de deux nuits en appliquant
BestDailyDiscount
empilé avec 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>
Prenons l'exemple d'un séjour de deux nuits du 30 avril 2023 au 2 mai 2023. Pour le calcul, la combinaison des meilleures remises quotidiennes qui génère la remise la plus importante est déterminée en premier.
Pour la première nuit, le « général » est le seul montant éligible avec une remise fixe de 20.
Pour la deuxième nuit, la promotion "mai" offre une remise plus importante que la remise "générale". Ainsi, lorsque "peut-être" est sélectionné, le montant de la remise fixe est de 50.
Ensuite, pour le séjour, la "fiesta" des remises jusqu'à 5 par nuit, ou
10 au total. Il peut être cumulé avec la combinaison des meilleures remises quotidiennes.
parce que "fiesta" dont le type de pile est défini sur any
. S'il était défini
à base
, seule la combinaison des meilleures remises quotidiennes ou
la "fiesta" est appliquée. Voir la description pour
Stacking
pour en savoir plus.
Au total, le prix du séjour bénéficie d'une remise de 20 + 50 + 10 = 80 €.
Réponses
Syntaxe
Le message PromotionsResponse
utilise la syntaxe suivante:
<?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>
Éléments et attributs
Le message PromotionsResponse
comporte les éléments et attributs suivants:
Élément / @Attribut | Occurrences | Type | Description |
---|---|---|---|
PromotionsResponse | 1 | Complex element | Élément racine indiquant le succès ou les problèmes d'une réponse Message de la demande Promotions. |
PromotionsResponse / @timestamp | 1 | DateTime | Date et heure de création de ce message. |
PromotionsResponse / @id | 1 | string | Identifiant unique issu du message Promotions associé. |
PromotionsResponse / @partner | 1 | string | Compte du partenaire pour ce message. |
PromotionsResponse / Success | 0..1 | Success | Indique que le message Promotions a bien été traité
sans avertissement, erreur ni échec.
La valeur |
PromotionsResponse / Issues | 0..1 | Issues | Conteneur pour un ou plusieurs problèmes rencontrés lors du traitement du message Promotions.
La valeur |
PromotionsResponse / Issues / Issue | 1..n | Issue | La description d'un avertissement, d'une erreur ou d'un échec rencontré pendant lors du traitement du message Promotions. Pour en savoir plus sur ces problèmes, dans Messages d'erreur concernant l'état du flux |
PromotionsResponse / Issues / Issue / @code | 1 | integer | Identifiant du problème. |
PromotionsResponse / Issues / Issue / @status | 1 | enum | Type de problème rencontré. Les valeurs valides sont |
Exemples
Opération réussie
La réponse ci-dessous est une réponse à un message Promotions correctement traité.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
Problèmes
La réponse ci-dessous est une réponse à un message Promotions non traité pour le motif suivant : les erreurs.
<?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>