Sintassi
La sintassi del messaggioPromotions
è la seguente:
<?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]"> <RoomTypes> <RoomType id="RoomID_1"/> <RoomType id="RoomID_2"/> </RoomTypes> <RatePlans> <RatePlan id="PackageID_1"/> <RatePlan id="PackageID_2"/> </RatePlans> <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> <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> <BookingWindow min="integer" max="integer"/> <LengthOfStay min="integer" max="integer"/> <!-- 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"/> <MinimumAmount before_discount="integer"/> <Devices> <Device type="[desktop|tablet|mobile]"/> </Devices> <UserCountries> <Country code="country_code"/> </UserCountries> </Promotion> </HotelPromotions> </Promotions>
Elementi e attributi
Il messaggio Promotions contiene i seguenti elementi e attributi:Elemento / @attributo | Occorrenze | Tipo | Descrizione |
---|---|---|---|
Promotions | 1 | Complex element | L'elemento principale di un messaggio contenente promozioni. |
Promotions / @partner | 1 | String | L'account partner di questo messaggio. Il valore della stringa è
il valore "Chiave del partner" presente
nella
pagina Impostazioni account in Hotel Center.
Nota: se hai un backend che fornisce feed per
più account, questo valore deve corrispondere al valore dell'attributo |
Promotions / @id | 1 | String | Un identificatore univoco per la richiesta. Questo valore viene restituito nella risposta e nei messaggi di errore e avviso. I caratteri consentiti sono a-z, A-Z, 0-9, _ (trattino basso) e - (trattino). |
Promotions / @timestamp | 1 | DateTime | La data e l'ora di creazione di questo messaggio. |
Promotions / HotelPromotions | 0..n | HotelPromotions | Promozioni relative a una proprietà. Ogni promozione viene applicata a una singola proprietà. |
Promotions / HotelPromotions / @hotel_id | 1 | String | L'identificatore univoco della proprietà. Questo valore deve corrispondere
all'ID hotel specificato utilizzando
<id> nell'elemento <listing>
nel feed elenco hotel. L'ID hotel è indicato anche in Hotel Center. |
Promotions / HotelPromotions / @action | 0..1 | Enum | Se specificato, il valore deve essere "overlay". Quando il valore è overlay, tutte le promozioni archiviate vengono eliminate prima di archiviare le promozioni specificate nel messaggio corrente. Se non specificato, allora ogni promozione specificata nel messaggio corrente viene:
|
Promotions / HotelPromotions / Promotion | 0..10 | Promotion | Una singola promozione relativa a una proprietà. Tieni presente che se
Nota: se devi utilizzare più di dieci promozioni, contatta il tuo Technical Account Manager (TAM). |
Promotions / HotelPromotions / Promotion / @id | 1 | String | Un identificatore univoco per la promozione. Il numero massimo di caratteri consentiti è 40. I caratteri consentiti sono a-z, A-Z, 0-9, _ (trattino basso), - (trattino), e . (punto). |
Promotions /HotelPromotions / Promotion / @action | 0..1 | Enum | Se specificato, il valore deve essere "delete". Se il valore non è specificato e se non viene archiviata una
promozione con lo stesso Se specifichi "delete", la promozione archiviata con lo stesso
|
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | Container di un elenco dei tipi di camera a cui si applica la promozione.
La promozione viene applicata a ogni <RoomType>
specificato. Se <RoomTypes> non è specificato, la
promozione si applica a tutte le camere. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | Specifica un tipo di camera. Il tipo di camera viene definito in un
elemento <RoomData> all'interno di un
messaggio Transaction (Property Data) e vi viene fatto
riferimento tramite il relativo valore <RoomID> (al
valore <RoomID> viene fatto riferimento anche
tramite l'attributo InvTypeCode nei messaggi OTA_HotelRateAmountNotifRQ). |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | String | L'identificatore univoco dell'inventario (tipo di camera). Questo valore è mappato
a <RoomID> in un messaggio Transaction (Property Data).
Il numero massimo di caratteri consentiti è 50. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Container di un elenco dei piani tariffari a cui si applica la promozione.
Se <RatePlans> non è specificato, la promozione
si applica a tutti i piani tariffari. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | Specifica un piano tariffario. Il piano tariffario viene definito da una combinazione di pacchetti, tariffe e disponibilità, come definito nei messaggi Transaction (Property Data), OTA_HotelRateAmountNotifRQ e OTA_HotelAvailNotifRQ e come identificato da PackageID. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | String | L'identificatore univoco del piano tariffario. Questo valore è mappato
al valore PackageID in <PackageData>
all'interno di un messaggio Transaction (Property Data) e
nell'attributo RatePlanCode in
<StatusApplicationControl> nei messaggi
<OTA_HotelRateAmountNotifRQ> e
<OTA_HotelAvailNotifRQ> .
Il numero massimo di caratteri consentiti è 50. |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | Un container di uno o più intervalli di date che definiscono il periodo in cui deve essere effettuata la prenotazione affinché venga applicata la promozione. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | Un intervallo di date che specifica il periodo in cui deve essere effettuata la prenotazione affinché venga applicata la promozione. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date | La data di inizio dell'intervallo di date (in base al fuso orario della proprietà),
incluso il giorno di inizio. Questa data deve essere precedente o uguale alla
data di end . Se start non è specificato, l'intervallo di
date risulta effettivamente illimitato in termini di data di inizio. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date | La data di fine dell'intervallo di date (in base al fuso orario della proprietà),
incluso il giorno di fine. Questa data deve essere uguale o successiva alla
data di start . Se end non è specificato, l'intervallo di
date risulta effettivamente illimitato in termini di data di fine. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | String | I giorni della settimana consentiti nell'intervallo di date. Se non specificato, saranno consentiti tutti i giorni nell'intervallo di date. Ogni carattere nella stringa specifica un giorno. Ad esempio, "MTWHF" specifica che nell'intervallo di date sono consentiti i giorni feriali. I caratteri validi sono:
Sono valide tutte le combinazioni di caratteri. |
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | Un container di uno o più intervalli di date che definiscono il periodo in cui deve essere effettuato il check-in affinché venga applicata la promozione. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | Un intervallo di date che specifica il periodo in cui deve essere effettuato il check-in affinché venga applicata la promozione. Questo elemento non è richiesto se stai eliminando una o più promozioni. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date | La data di inizio dell'intervallo di date (in base al fuso orario della proprietà),
incluso il giorno di inizio. Questa data deve essere precedente o uguale alla
data di end . Se start non è specificato, l'intervallo di
date risulta effettivamente illimitato in termini di data di inizio. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date | La data di fine dell'intervallo di date (in base al fuso orario della proprietà),
incluso il giorno di fine. Questa data deve essere uguale o successiva alla
data di start . Se end non è specificato, l'intervallo di
date risulta effettivamente illimitato in termini di data di fine. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | String | I giorni della settimana consentiti nell'intervallo di date. Se non specificato, saranno consentiti tutti i giorni nell'intervallo di date. Ogni carattere nella stringa specifica un giorno. Ad esempio, "MTWHF" specifica che nell'intervallo di date sono consentiti i giorni feriali. I caratteri validi sono:
Sono valide tutte le combinazioni di caratteri. |
Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | Un container di uno o più intervalli di date che definiscono il periodo in cui deve essere effettuato il check-out affinché venga applicata la promozione. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | Un intervallo di date che specifica il periodo in cui deve essere effettuato il check-out affinché venga applicata la promozione. Questo elemento non è richiesto se stai eliminando una o più promozioni. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date | La data di inizio dell'intervallo di date (in base al fuso orario della proprietà),
incluso il giorno di inizio. Questa data deve essere precedente o uguale alla
data di end . Se start non è specificato, l'intervallo di
date risulta effettivamente illimitato in termini di data di inizio. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date | La data di fine dell'intervallo di date (in base al fuso orario della proprietà),
incluso il giorno di fine. Questa data deve essere uguale o successiva alla
data di start . Se end non è specificato, l'intervallo di
date risulta effettivamente illimitato in termini di data di fine. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | String | I giorni della settimana consentiti nell'intervallo di date. Se non specificato, saranno consentiti tutti i giorni nell'intervallo di date. Ogni carattere nella stringa specifica un giorno. Ad esempio, "MTWHF" specifica che nell'intervallo di date sono consentiti i giorni feriali. I caratteri validi sono:
Sono valide tutte le combinazioni di caratteri. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Specifica il periodo di tempo in cui deve essere effettuata la prenotazione rispetto alla data di check-in (in base al fuso orario della proprietà). Ad esempio, è possibile impostare una finestra di prenotazione di almeno 7 giorni, ma non oltre 180 giorni, prima del check-in. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | Integer | Il numero minimo di giorni prima del check-in in cui deve essere effettuata la prenotazione affinché venga applicata la promozione. Se non specificato, non è previsto un limite minimo. |
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | Integer | Il numero massimo di giorni prima del check-in in cui deve essere effettuata la prenotazione affinché venga applicata la promozione. Se non specificato, non è previsto un limite massimo. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Definisce il numero minimo e massimo di notti consentito per il soggiorno. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | Integer | Il numero minimo di notti consentito per il soggiorno affinché venga applicata la promozione. Se non specificato, non è previsto un limite minimo. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | Integer | Il numero massimo di notti consentito per il soggiorno affinché venga applicata la promozione. Se non specificato, non è previsto un limite massimo. |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | Specifica lo sconto da applicare a questa promozione. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | Float | Nota: è necessario specificare un solo valore tra percentage ,
fixed_amount e fixed_amount_per_night .
Un valore decimale compreso tra 0 e 100 che specifica la percentuale di sconto.
Viene applicato a Esempi:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | Float | Nota: è necessario specificare un solo valore tra percentage ,
fixed_amount e fixed_amount_per_night .
Un importo fisso che deve essere sottratto dalla somma delle
tariffe per notte di Esempi:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | Float | Nota: è necessario specificare un solo valore tra percentage ,
fixed_amount e fixed_amount_per_night .
Uno sconto fisso applicato a ogni tariffa per notte di Esempi:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | Integer | Nota: deve essere utilizzato solo con percentage o
fixed_amount_per_night .
Il numero di notti a cui viene applicato lo sconto, a partire dalla meno costosa. Deve essere un numero intero compreso tra 1 e 99. Se non specificato, lo sconto viene applicato a tutte le notti. |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | Specifica la somma minima delle tariffe giornaliere della camera (utilizzando il valore più grande tra
AmountBeforeTax e AmountAfterTax ) che deve
essere superata affinché la promozione venga applicata. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | Integer | Il valore che deve essere superato affinché la promozione venga applicata. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | Container dell'elenco di dispositivi utente idonei alla promozione. Se specificato, la tariffa scontata viene offerta solo agli utenti idonei che utilizzano i dispositivi inseriti nell'elenco. Se non specificato, la tariffa scontata viene offerta agli utenti idonei che utilizzano qualsiasi dispositivo. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Definisce un tipo di dispositivo utente idoneo alla promozione. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | Enum | Un tipo di dispositivo. Il valore deve essere desktop ,
tablet o mobile . |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Container dell'elenco relativo alle località degli utenti (paesi) idonei per la promozione. Se specificato, la tariffa scontata viene offerta solo agli utenti idonei che si trovano nei paesi inseriti nell'elenco. Se non specificato, la tariffa scontata viene offerta agli utenti idonei che si trovano in qualunque paese. |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..50 | Country | Definisce un paese in cui gli utenti sono idonei alla promozione. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | String | Un codice paese CLDR, ad esempio DE o FR. Nota che per alcuni paesi il codice paese CLDR non corrisponde a quello ISO di due lettere. Inoltre, non sono supportati i codici regione CLDR. |
Esempi
Messaggio di base
L'esempio seguente mostra un messaggio Promotions
di 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"> <RoomTypes> <RoomType id="123"/> <RoomType id="456"/> </RoomTypes> <RatePlans> <RatePlan id="234"/> <RatePlan id="567"/> </RatePlans> <BookingDates> <DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/> <DateRange start="2020-09-01" end="2020-09-30"/> </BookingDates> <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> <BookingWindow min="7" max="330"/> <LengthOfStay min="2" max="14"/> <Discount percentage=".2" applied_nights="2"/> <Devices> <Device type="mobile"/> <Device type="tablet"/> </Devices> <UserCountries> <Country code="US"/> <Country code="UK"/> </UserCountries> </Promotion> </HotelPromotions> </Promotions>
Eliminare una promozione
L'esempio seguente mostra come eliminare una promozione relativa a una proprietà:
<?xml version="1.0" encoding="UTF-8"?> <Promotions timestamp="2020-06-18T16:20:00-04:00"> <HotelPromotions hotel_id="Property_1"> <Promotion id="1" action="delete"/> </HotelPromotions> </Promotions>
Eliminare tutte le promozioni
L'esempio seguente mostra come eliminare tutte le promozioni relative a una proprietà:
<?xml version="1.0" encoding="UTF-8"?> <Promotions timestamp="2020-07-18T16:20:00-04:00"> <HotelPromotions hotel_id="Property_1" action="overlay"/> </Promotions>
Sovrapporre tutte le promozioni
L'esempio seguente mostra come sovrapporre
<HotelPromotions>
per una proprietà
con una o più nuove promozioni. Quando action="overlay"
,
tutte le promozioni archiviate vengono eliminate prima dell'archiviazione delle promozioni
specificate nel messaggio corrente:
<?xml version="1.0" encoding="UTF-8"?> <Promotions timestamp="2020-07-18T16:20:00-04:00"> <HotelPromotions hotel_id="Property_1" action="overlay"/> <Promotion id="1"> <RoomTypes> <RoomType id="123"/> <RoomType id="456"/> </RoomTypes> <RatePlans> <RatePlan id="234"/> <RatePlan id="567"/> </RatePlans> <BookingDates> <DateRange start="2020-09-01" end="2020-09-30"/> </BookingDates> <Discount percentage=".1"/> </Promotion> </HotelPromotions> </Promotions>