Panoramica
Questa API consente di specificare possibili sconti. Tra le promozioni specificate, Google applica la promozione idonea o l'insieme di promozioni che genera il prezzo più basso. Se cerchi un'API che supporti aggiustamenti delle tariffe arbitrarie in grado di aumentare o diminuire il prezzo quando le condizioni sono soddisfatte, prendi in considerazione la nostra API Rate Modifications. Tieni presente che, se sono presenti entrambe le API, le modifiche alle tariffe vengono applicate prima delle promozioni.
Richieste
Sintassi
Il messaggio Promotions
utilizza la seguente sintassi:
<?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>
Elementi e attributi
Il messaggio Promozioni contiene i seguenti elementi e attributi:
Elemento / @attributo | Occorrenze | Tipo | Descrizione |
---|---|---|---|
Promotions | 1 | Complex element | L'elemento principale di un messaggio di promozioni. |
Promotions / @partner | 1 | string | L'account partner per questo messaggio. Questo valore di stringa è il valore "Chiave del partner" elencato nella
pagina Impostazioni account in Hotel Center.
Se disponi di 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 di una proprietà. Ogni promozione viene applicata a una singola struttura. A meno che non venga utilizzato |
Promotions / HotelPromotions / @hotel_id | 1 | string | L'identificatore univoco della struttura. 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, ogni promozione specificata nel messaggio corrente sarà:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Una singola promozione per una struttura. 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 |
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 quando deve essere effettuata la prenotazione affinché venga applicata la promozione. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date o DateTime | La data di inizio o la data e l'ora (in base al fuso orario della proprietà), inclusa, dell'intervallo.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date o DateTime | La data di fine o la data e l'ora di fine (in base al fuso orario della proprietà), incluso, dell'intervallo.
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | I giorni della settimana consentiti nell'intervallo di date. Se non specificato, sono 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:
È valida qualsiasi combinazione di caratteri. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Specifica il periodo di tempo in cui deve essere effettuata la prenotazione rispetto alla data del check-in (in base al fuso orario della proprietà). Ad esempio, la finestra di prenotazione può essere impostata su un minimo di 7 giorni, ma di un massimo di 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 se il suo valore è 0 , non è previsto un valore 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é la promozione venga applicata. Se non è specificato o se il suo valore è 0 , non è previsto un limite massimo.
I tipi di valore validi sono:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
Definisce le limitazioni relative al valore massimo su cui può essere impostata una tariffa dopo l'applicazione delle promozioni. Le promozioni devono sempre specificare un Se è configurata l'aggregazione, più promozioni con
Esempio: Prezzo per un soggiorno di 1 notte in cui
Ecco l'ordine di calcolo:
Il fatto che 60 sia un tetto complessivo più rigido è irrilevante poiché è valido solo per la propria promozione e non può esistere un tetto singolo che copra l'intero stack di promozioni. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
L'importo massimo su cui è possibile impostare una tariffa per notte dopo l'applicazione dello sconto. Se viene specificato anche un elemento
|
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Definisce le limitazioni relative al valore minimo su cui può essere impostata una tariffa dopo l'applicazione delle promozioni. Le promozioni devono sempre specificare un La logica Se è configurata l'aggregazione, più promozioni con
Esempio: Prezzo per un soggiorno di 1 notte in cui
Ecco l'ordine di calcolo:
Il fatto che 90 sia un prezzo minimo complessivo più rigido è irrilevante in quanto è valido solo per la propria promozione e non può esserci un prezzo minimo che si estende all'intero stack di promozioni. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
L'importo minimo su 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 è necessario 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 è 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 è 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 non specificato, sono 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:
È valida qualsiasi combinazione 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 pagamento 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 pagamento affinché venga applicata la promozione. Questo elemento non è necessario 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 è 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 è 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 non specificato, sono 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:
È valida qualsiasi combinazione di caratteri. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | Contenitore dell'elenco dei dispositivi utente idonei alla promozione. Se specificato, la tariffa scontata viene offerta solo agli utenti idonei sui dispositivi elencati. Se non specificato, agli utenti idonei che utilizzano qualsiasi dispositivo viene offerta la tariffa scontata. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Definisce un tipo di dispositivo dell'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 | È necessario specificare in modo esatto uno tra Specifica lo sconto da applicare a questa promozione. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | È obbligatorio specificare un valore tra 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 | È obbligatorio specificare un valore tra Un importo fisso da sottrarre dalla somma delle
tariffe per notte di Esempi:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | È obbligatorio specificare un valore tra Uno sconto fisso applicato a ciascuna delle Esempi:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | È obbligatorio specificare un valore tra Se vengono specificate le tariffe per notte di Se Esempi:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | È obbligatorio specificare un valore tra 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 dal meno costoso. 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 soggiorno quando viene raggiunta la durata minima del soggiorno. Gli attributi dell'elemento Discount principale non sono consentiti se viene utilizzato questo elemento. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Numero di notti richieste per l'applicazione dello sconto. Ogni sconto viene applicato a un segmento separato di notti di 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 in 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 di soggiorno sono scontate. Se cheapest , vengono scontate le notti più economiche all'interno del segmento di notti di soggiorno. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Indica se lo sconto può essere applicato a più segmenti di notti per soggiorni. Se Ad esempio, se |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Assegna un ranking a questa promozione e la attiva nella selezione classificata, dove viene selezionata solo la promozione con il ranking più basso per l'applicazione. I valori devono essere compresi tra 1 e 99 inclusi. Se più promozioni condividono lo stesso ranking, ne viene selezionata e applicata una arbitrariamente. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | È necessario specificare in modo esatto uno tra Specifica uno sconto giornaliero che può essere applicato a una notte di soggiorno. Questo è in contrasto con Ogni proprietà può avere un singolo gruppo di promozioni considerate "le migliori del giorno". Ciò significa che, per ogni notte di soggiorno, viene selezionata e può essere applicata la singola promozione "migliore del giorno" idonea e che offre lo sconto più vantaggioso per la notte in questione.
È possibile specificare |
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | È obbligatorio specificare 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 | È obbligatorio specificare un valore tra Un importo fisso da sottrarre da una singola tariffa per notte
Esempi:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | È obbligatorio specificare un valore tra Se vengono specificate le tariffe per notte di Esempi:
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Definisce le limitazioni relative al numero di camere che devono essere disponibili affinché
venga applicata questa promozione. 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 )
o OTA_HotelAvailNotifRQ
(BookingLimit ). |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | Il numero minimo di camere che devono essere disponibili affinché la promozione venga applicata alla tariffa per notte. Se non specificato, non è previsto un valore 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 è possibile applicare questa promozione. La promozione non viene applicata se la durata del soggiorno non supera i limiti 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 di una regola tariffaria di adesione che attiva una specifica 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 maggiore tra
AmountBeforeTax o 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 limitazioni relative al numero di persone a cui viene applicata questa promozione. La promozione non viene applicata se il numero di persone è al di fuori dei limiti minimo e massimo. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | Il numero di persone specificato dall'utente deve essere almeno pari a questo valore affinché venga applicato lo sconto. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | Il numero di persone specificato dall'utente deve essere al massimo di questo valore affinché venga applicato lo sconto. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Contenitore di un elenco di 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. Un piano tariffario viene definito da una combinazione di pacchetto, tariffe e disponibilità, come definito nei messaggi Transaction (Property Data), OTA_HotelRateAmountNotifRQ e OTA_HotelAvailNotimul 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> in un messaggio Transaction (Property Data) e nell'attributo RatePlanCode in <StatusApplicationControl> in entrambi i 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. Un tipo di camera è definito in un
elemento <RoomData> in un
messaggio Transaction (Property Data) e 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 il modo in cui le promozioni possono essere combinate. Se non specificato, si presume che il "tipo" sia base . |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | In base a questa impostazione, è possibile applicare più promozioni a una singola tariffa:
Tra le combinazioni consentite, alla tariffa viene applicato l'insieme di promozioni che genera lo sconto maggiore. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | Un contenitore di uno o più intervalli di date che determinano il modo in cui viene applicata la promozione, ad esempio per rispecchiare gli sconti stagionali. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Descrive come 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.
|
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 è a tutti gli effetti illimitato in termini di data di inizio. |
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 è a tutti gli effetti illimitato in termini di data di fine. |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | I giorni della settimana consentiti nell'intervallo di date. Se non specificato, sono 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:
È valida qualsiasi combinazione di caratteri. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Contenitore dell'elenco delle località degli utenti (paesi) idonee per la promozione. Se specificato, la tariffa scontata viene offerta solo agli utenti idonei nei paesi elencati. Se non specificato, agli utenti idonei di qualsiasi paese viene offerta la tariffa scontata. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | Il tipo di specifica UserCountries.
I valori validi sono Se il valore Se il valore Se il valore |
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 al codice paese ISO di due lettere. Inoltre, i codici regione CLDR non sono supportati. |
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">
<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 dell'inventario
L'esempio seguente mostra come creare uno sconto se è presente inventario in eccesso vicino alla 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 per 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>
Elimina tutte le promozioni
L'esempio seguente mostra come eliminare tutte le promozioni per 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>
Sovrapponi 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 di archiviare le 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 sovrapposizione
L'esempio seguente mostra un caso in cui vengono applicate tre diverse promozioni (base
, second
, any
). Tieni presente che la promozione none
non viene applicata, in quanto le altre promozioni offrono uno sconto migliore. Se il prezzo originale era 100 $, il prezzo scontato sarebbe 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>
Nessuno 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 minore. Se il prezzo originale era 100 $, il prezzo scontato sarebbe 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 della durata della finestra di prenotazione
L'esempio seguente mostra un caso in cui viene utilizzato l'elemento BookingWindow
con i limiti di inizio e fine definiti come tipo Durata ISO 8601. Per limitare la finestra di prenotazione, è necessario prenotare entro le 18:00
del giorno prima dell'arrivo e entro le 12:00 del 2° 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>
Limiti DateTime e date di prenotazione
L'esempio seguente mostra un caso in cui l'elemento BookingDates
viene utilizzato con gli attributi start
e end
come tipi DateTime. Questa limitazione relativa alle date 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 anni
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 tra il 29/12 e il 2/12, indipendentemente dall'anno. Gli intervalli di date senza anno che superano il limite del nuovo anno non sono validi, pertanto il valore 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 applica uno sconto del 50% per due notti ogni quattro notti per l'intervallo di date di prenotazione specificato. Per un itinerario di dieci notti, un totale di quattro notti viene 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>
Nel prossimo esempio viene scontato il 50% di una notte per ogni tre notti di soggiorno per gli intervalli specificati di date del soggiorno. Per l'idoneità allo sconto vengono conteggiate solo le notti di soggiorno sovrapposte. Per il seguente itinerario con check-in 01/01/2022 e check-out il giorno 07/01/2022, le notti di soggiorno qualificate e gli sconti vengono applicati come segue.
- 01/01/2022 (soggiorno)
- 02/01/2022 (soggiorno)
- 2022-01-03
- 04/01/2022 (scontato)
- 05-01-2022 (soggiorno)
- 06-01-2022 (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 classificata
L'esempio seguente offre due sconti, uno per il 20% e un altro per il 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
insieme a 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 Ai fini del calcolo, viene trovata per prima la combinazione dei migliori sconti giornalieri che genera lo sconto più profondo.
Per la prima notte, la promozione "generale" è l'unico importo idoneo con uno sconto fisso di 20.
Per la seconda notte, la promozione "maggio" offre uno sconto maggiore rispetto allo sconto "generale". Se selezioni "maggio", l'importo dello sconto fisso è 50.
Poi per il soggiorno, la promozione "fiesta" sconto a 5 a notte, o
10 in totale. Può essere cumulabile con la combinazione dei migliori sconti giornalieri
perché il tipo di sovrapposizione "fiesta" è impostato su any
. Se è stato impostato
su base
, viene applicata solo la combinazione dei migliori sconti giornalieri o
lo sconto "fiesta". Consulta la descrizione di
Stacking
per ulteriori informazioni.
`Nel complesso, il prezzo del soggiorno riceve uno sconto fisso di 20 + 50 + 10 = 80.
Risposte
Sintassi
Il messaggio PromotionsResponse
utilizza la seguente sintassi:
<?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 di promozioni 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 per 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 Promozioni.
In ogni messaggio è presente |
PromotionsResponse / Issues / Issue | 1..n | Issue | La descrizione di un avviso, un errore o un errore riscontrato durante l'elaborazione del messaggio Promozioni. 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 di 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>