Panoramica
Questa API ti consente di specificare gli sconti possibili. Tra le promozioni specificate, Google applica la promozione o l'insieme di promozioni idonei che portano al prezzo più basso. Se stai cercando un'API che supporti aggiustamenti arbitrari della tariffa che possono aumentare o diminuire il prezzo quando le condizioni sono soddisfatte, prendi in considerazione la nostra API Modifiche tariffarie. Tieni presente che, se sono presenti entrambe le API, le modifiche tariffarie vengono applicate prima delle promozioni.
Richieste
Sintassi
La sintassi del messaggio Promotions è la seguente:
<?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, percentage_of_base, 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" percentage_of_base="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>
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.
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 questo messaggio di richiesta. Questo valore viene restituito nel messaggio di risposta. 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à. A meno che non venga utilizzato |
| 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
Se non specificato, allora ogni promozione specificata nel messaggio corrente viene:
|
| Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Una singola promozione relativa a una proprietà. Tieni presente che se
Se devi utilizzare più di 99 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 Se viene specificato |
| Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | Un contenitore di uno o più intervalli 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 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 o DateTime | La data o la data e l'ora di inizio (inclusa) dell'intervallo (in base al fuso orario della proprietà).
|
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date o DateTime | La data o la data e l'ora di fine (inclusa) dell'intervallo (in base al fuso orario della proprietà).
|
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | I giorni della settimana consentiti nell'intervallo di date. Se il valore non viene 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 or duration | La durata minima prima del check-in in cui deve essere effettuata la prenotazione
affinché venga applicata la promozione. Se non è specificato o il suo valore
è 0, non è previsto un limite minimo.
I tipi di valore validi sono:
|
| Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | Il numero massimo di giorni prima del check-in in cui deve essere effettuata la prenotazione
affinché venga applicata la promozione. Se non specificato o se il valore
è 0, non è previsto un limite massimo.
I tipi di valore validi sono:
|
| Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
Definisce le restrizioni relative al valore massimo a cui può essere impostata una tariffa dopo l'applicazione delle promozioni. Le promozioni devono sempre specificare un Se l'accumulo è configurato, più promozioni con
Esempio: Definizione del prezzo di un soggiorno di una notte in cui
Ecco l'ordine di calcolo:
Il fatto che 60 sia un limite massimo complessivo più rigoroso è irrilevante, poiché è valido solo per la promozione in questione e non può esistere un unico limite massimo che si estenda all'intera pila di promozioni. |
| Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
L'importo massimo a cui può essere impostata una tariffa per notte dopo l'applicazione dello sconto. Se viene specificato anche un elemento
|
| Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Definisce le restrizioni relative al valore minimo a cui può essere impostata una tariffa dopo l'applicazione delle promozioni. Le promozioni devono sempre specificare un La logica di Se l'accumulo è configurato, più promozioni con
Esempio: Definizione del prezzo di un soggiorno di una notte in cui
Ecco l'ordine di calcolo:
Il fatto che 90 sia un prezzo minimo complessivo più rigoroso è irrilevante, in quanto è valido solo per la propria promozione e non può esistere un unico prezzo minimo che copra l'intero stack di promozioni. |
| Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
L'importo minimo a cui può essere impostata una tariffa per notte dopo l'applicazione dello sconto. Se viene specificato anche un elemento
|
| Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | Un contenitore 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. È supportato anche il formato YearlessDate.
|
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | La data di inizio (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere precedente o uguale alla
data di end. Se start non è specificato, l'intervallo di
date risulta a tutti gli effetti illimitato in termini di data di inizio. |
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | La data di fine (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere uguale o successiva alla
data di start. Se end non è specificato, l'intervallo di
date risulta a tutti gli effetti 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 il valore non viene 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 contenitore 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. È supportato anche il formato YearlessDate.
|
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | La data di inizio (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere precedente o uguale alla
data di end. Se start non è specificato, l'intervallo di
date risulta a tutti gli effetti illimitato in termini di data di inizio. |
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | La data di fine (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere uguale o successiva alla
data di start. Se end non è specificato, l'intervallo di
date risulta a tutti gli effetti 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 il valore non viene 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 / Devices | 0..1 | Devices | Contenitore 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 / Discount | 1 | Discount | Deve essere specificato esattamente uno dei due valori: Specifica lo sconto da applicare a questa promozione. |
| Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | È necessario specificare esattamente uno dei seguenti valori: Un valore decimale compreso tra 0 e 100 che specifica la percentuale di sconto.
Viene applicato a Esempi:
|
| Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float | È necessario specificare esattamente uno dei seguenti valori: Un valore decimale compreso tra 0 e 100 che specifica la percentuale di sconto
base. Simile a A differenza di Esempio:
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | È necessario specificare esattamente uno dei seguenti valori: 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 | È necessario specificare esattamente uno dei seguenti valori: Uno sconto fisso applicato a ogni tariffa per notte di Esempi:
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | È necessario specificare esattamente uno dei seguenti valori: Se vengono specificate le tariffe per notte di Se Esempi:
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | È necessario specificare esattamente uno dei seguenti valori: Se vengono specificate le tariffe per notte di Se Se viene specificato Esempi:
|
| Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Deve essere utilizzato solo con
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 / Discount / FreeNights | 0..1 | FreeNights | Specifica uno sconto per determinate notti di un soggiorno quando viene raggiunta una durata minima del soggiorno. Gli attributi dell'elemento principale Discount
non sono consentiti se viene utilizzato questo elemento. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Il numero di notti richieste per l'applicazione dello sconto. Ogni sconto viene applicato a un segmento separato di notti del soggiorno. Ad esempio, per un soggiorno di 10 notti in cui |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | Il numero di notti scontate all'interno di ogni segmento di notti di soggiorno. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | Lo sconto applicato alle notti scontate. Se questo valore
è 50, ogni notte selezionata è scontata del 50%. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Deve essere cheapest o last. Se
last, le notti alla fine del segmento di notti del soggiorno
vengono scontate. Se cheapest, le notti più economiche
all'interno del segmento di notti del soggiorno vengono scontate. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Se lo sconto può essere applicato a più segmenti di notti di soggiorno. Se Ad esempio, se |
| Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Assegna a questa promozione un ranking e la attiva per la selezione in base al ranking, in cui viene selezionata solo la promozione con il ranking più basso da applicare. I valori devono essere compresi tra 1 e 99 inclusi. Se più promozioni condividono lo stesso ranking, ne viene selezionata e applicata una in modo arbitrario. |
| Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Deve essere specificato esattamente uno dei due valori: Specifica uno
sconto giornaliero che può essere applicato a una notte di soggiorno. Ciò è in
contrasto con Ogni proprietà può avere un singolo gruppo di promozioni considerate "migliori giornaliere". Ciò significa che per ogni notte di soggiorno viene selezionata e potrebbe essere applicata la singola promozione "migliore giornaliera" idonea che offre lo sconto più elevato per quella notte.
|
| Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | È richiesto esattamente un valore tra Un valore decimale compreso tra 0 e 100 che specifica la percentuale di sconto.
Viene applicato a Esempi:
|
| Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | È richiesto esattamente un valore tra Un importo fisso da sottrarre a una singola
tariffa per notte di Esempi:
|
| Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | È richiesto esattamente un valore tra Se vengono specificate le tariffe per notte di Esempi:
|
| Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Definisce le restrizioni relative al numero di camere che devono essere disponibili
affinché la promozione venga applicata. Lo sconto viene applicato solo alle notti
che soddisfano il vincolo. Non consentito con lo
sconto fixed_amount. Tieni presente che il numero di camere disponibili
viene specificato con
OTA_HotelInvCountNotifRQ (InvCount)
oppure OTA_HotelAvailNotifRQ
(BookingLimit). |
| Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | Il numero minimo di camere che deve essere disponibile affinché la promozione venga applicata alla tariffa per notte. Se non specificato, non è previsto un limite minimo. |
| Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | Il numero massimo di camere che devono essere disponibili affinché la promozione venga applicata alla tariffa per notte. Se non specificato, non è previsto un limite massimo. |
| Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Definisce i limiti di durata del soggiorno entro i quali è applicabile questa promozione. La promozione non viene applicata quando la durata del soggiorno non è compresa tra il limite minimo e massimo. |
| 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 / MembershipRateRule | 0..1 | MembershipRateRule |
Contenitore per una regola tariffaria per membri che attiva una specifica opzione di interfaccia utente per lo sconto associato. Questo elemento non deve essere specificato a meno che
non venga specificato anche |
| Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string |
ID della regola tariffaria associata a un programma di abbonamento. |
| 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 / Occupancy | 0..1 | Occupancy | Definisce le restrizioni relative alle occupazioni a cui viene applicata questa
promozione. La promozione non viene applicata quando l'occupazione non è compresa tra il limite minimo
e massimo.
Le promozioni si applicano alla tariffa dell'itinerario. Non è possibile impostare uno sconto massimo per occupante. |
| Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | L'occupazione specificata dall'utente deve essere almeno questo valore per l'applicazione dello sconto. |
| Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | L'occupazione specificata dall'utente deve essere al massimo questo valore per l'applicazione dello sconto. |
| Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Contenitore 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 / RoomTypes | 0..1 | RoomTypes | Contenitore 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 / Stacking | 0..1 | Stacking | Specifica in che modo possono essere combinate le promozioni. Se non specificato, si presume che "type" sia base. |
| Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | Questa impostazione specifica se a una singola tariffa sono applicabili più promozioni:
Tra le combinazioni consentite, alla tariffa viene applicato l'insieme di promozioni che offre lo sconto più elevato. |
| Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | Un contenitore per uno o più intervalli di date che determinano come viene applicata la promozione, ad esempio per rispecchiare gli sconti stagionali. |
| Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Descrive in che modo deve essere applicata la promozione. I valori validi sono:
Questo attributo deve essere sempre specificato.
|
| Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | Un intervallo di date che specifica le date in cui deve essere applicata la promozione. È supportato anche il formato YearlessDate.
Se vuoi impostare l'intervallo |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | La data di inizio (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere precedente o uguale alla
data di end. Se start non è specificato, l'intervallo di
date risulta a tutti gli effetti illimitato in termini di data di inizio.
Devi specificare il valore |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | La data di fine (inclusa) dell'intervallo di date (in base al fuso orario della proprietà). Questa data deve essere uguale o successiva alla
data di start. Se end non è specificato, l'intervallo di
date risulta a tutti gli effetti illimitato a partire dalla data start.
Devi specificare il valore |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | I giorni della settimana consentiti nell'intervallo di date. Se il valore non viene 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 / UserCountries | 0..1 | UserCountries | Contenitore dell'elenco relativo alle località degli utenti (paesi) idonee 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 / @type | 0..1 | enum | Il tipo di specifica UserCountries.
I valori validi sono Se UserCountries Se UserCountries Se UserCountries |
| Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | 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. Tieni presente 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
Esiste un limite di 500 promozioni per proprietà. Consulta l'esempio "Elimina una promozione" per rimuovere le promozioni da una proprietà.
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">
<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>
Condizione inventario
Il seguente esempio mostra come creare uno sconto se è presente inventario in eccesso in prossimità della data di arrivo:
<?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>
Eliminare una promozione
L'esempio seguente mostra come eliminare una promozione relativa a una proprietà:
<?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>
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 partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay"/>
</Promotions>
Sostituire tutte le promozioni
L'esempio seguente mostra come sostituire <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 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 diversi tipi di impilamento
L'esempio seguente mostra un caso in cui verrebbero applicate tre promozioni diverse (base, second, any). Tieni presente che la promozione none non verrebbe applicata perché le altre promozioni offrono uno sconto migliore. Se il prezzo
originale era di 100 $, il prezzo scontato sarà di 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>
Nessun tipo di impilamento
L'esempio seguente mostra un caso in cui viene utilizzata la promozione none perché
la combinazione di altre promozioni offre uno sconto inferiore. Se il prezzo
originale era 100 $, il prezzo scontato sarà 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>
Limiti di durata della finestra di prenotazione
L'esempio seguente mostra un caso in cui l'elemento BookingWindow
viene utilizzato con i limiti di inizio e fine definiti come tipo di durata ISO 8601. Questa limitazione della finestra di prenotazione richiede la prenotazione entro le ore 18:00
del giorno precedente l'arrivo e a partire dalle ore 12:00 del secondo giorno prima
dell'arrivo.
<?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>
Booking Dates DateTime Bounds
L'esempio seguente mostra un caso in cui l'elemento BookingDates
viene utilizzato con gli attributi start e end come
tipi DateTime. Questa limitazione della data di prenotazione richiede che la prenotazione venga effettuata
tra le 06:30 del 01/07/2020 e le 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>
Intervalli di date senza anno
L'esempio seguente mostra un caso in cui l'elemento CheckInDates
contiene DateRanges con campi start e
end senza anni. In questo esempio, la promozione si applica
alle date di check-in comprese tra il 29/12 e il 2/1, indipendentemente dall'anno. Gli intervalli di date senza anno che superano il limite del nuovo anno non sono validi, quindi DateRange viene espresso come due intervalli di date adiacenti.
<?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>
Sconto FreeNights
L'esempio seguente sconta due notti del 50% per ogni quattro notti di soggiorno per l'intervallo specificato di date di prenotazione. Per un itinerario di dieci notti, un totale di quattro notti verrà scontato del 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>
L'esempio successivo sconta una notte del 50% ogni tre notti di soggiorno per gli intervalli di date di soggiorno specificati. Solo le notti di soggiorno sovrapposte vengono conteggiate per la qualifica allo sconto. Per il seguente itinerario con check-in il 01/01/2022 e check-out il 07/01/2022, le notti di soggiorno idonee e gli sconti vengono applicati come segue.
- 2022-01-01 (soggiorno)
- 2022-01-02 (soggiorno)
- 2022-01-03
- 2022-01-04 (scontato)
- 2022-01-05 (soggiorno)
- 2022-01-06 (soggiorno)
<?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>
Selezione con ranking
L'esempio seguente offre due sconti, uno del 20% e l'altro del 15%. Durante la valutazione, viene applicato solo lo sconto del 15% perché ha un ranking inferiore.
<?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'esempio seguente sconta un soggiorno di due notti applicando
BestDailyDiscount in combinazione 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 un soggiorno di due notti dal 30 aprile 2023 al 2 maggio 2023. Per il calcolo, viene prima trovata la combinazione dei migliori sconti giornalieri che offre lo sconto più elevato.
Per la prima notte, la promozione "generale" è l'unico importo idoneo con uno sconto fisso del 20.
Per la seconda notte, la promozione "maggio" offre uno sconto maggiore rispetto allo sconto "generale". Pertanto, quando è selezionato "può", l'importo dello sconto fisso è 50.
Poi, per il soggiorno, la promozione "fiesta" sconta a 5 per notte, ovvero
10 totali. Può essere combinato con la combinazione dei migliori sconti giornalieri
perché il tipo di accumulo di "fiesta" è impostato su any. Se fosse impostato
su base, verrà applicata solo la combinazione dei migliori sconti giornalieri o
lo sconto "fiesta". Per saperne di più, consulta la descrizione di Stacking.
`Complessivamente, il prezzo del soggiorno riceve uno sconto di 20 + 50 + 10 = 80.
Risposte
Sintassi
La sintassi del messaggio PromotionsResponse è la seguente:
<?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>
Elementi e attributi
Il messaggio PromotionsResponse contiene i seguenti elementi e attributi:
| Elemento / @attributo | Occorrenze | Tipo | Descrizione |
|---|---|---|---|
| PromotionsResponse | 1 | Complex element | L'elemento principale che indica se l'esito è positivo o negativo per un messaggio di richiesta Promotions ricevuto. |
| PromotionsResponse / @timestamp | 1 | DateTime | La data e l'ora di creazione di questo messaggio. |
| PromotionsResponse / @id | 1 | string | L'identificatore univoco del messaggio Promotions associato. |
| PromotionsResponse / @partner | 1 | string | L'account partner di questo messaggio. |
| PromotionsResponse / Success | 0..1 | Success | Indica che il messaggio Promotions è stato elaborato correttamente
senza avvisi, errori o problemi.
In ogni messaggio è
presente |
| PromotionsResponse / Issues | 0..1 | Issues | Un contenitore per uno o più problemi riscontrati durante l'elaborazione del
messaggio Promotions.
In ogni messaggio è
presente |
| PromotionsResponse / Issues / Issue | 1..n | Issue | La descrizione di un avviso, un errore o un problema riscontrato durante l'elaborazione del messaggio Promotions. Per informazioni dettagliate su questi problemi, consulta la sezione Messaggi di errore relativi allo stato dei feed. |
| PromotionsResponse / Issues / Issue / @code | 1 | integer | L'identificatore del problema. |
| PromotionsResponse / Issues / Issue / @status | 1 | enum | Il tipo di problema riscontrato. I valori validi sono |
Esempi
Operazione riuscita
Di seguito è riportata una risposta a un messaggio Promotions elaborato correttamente.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
Problemi
Di seguito è riportata una risposta a un messaggio Promotions non elaborato a causa di errori.
<?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>