Genel bakış
Bu API, olası indirimleri belirtmenizi sağlar. Google, belirtilen promosyonlar arasından en düşük fiyatı sağlayan uygun promosyonu veya promosyon grubunu uygular. Koşullar karşılandığında fiyatı artırabilen veya azaltabilen rastgele ücret ayarlamalarını destekleyen bir API arıyorsanız Rate Modifications API'mizi değerlendirin. Her iki API de mevcutsa ücret değişikliklerinin promosyonlardan önce uygulandığını unutmayın.
İstekler
Söz dizimi
Promotions
mesajında şu söz dizimi kullanılır:
<?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>
Öğeler ve Özellikler
Promosyonlar mesajında aşağıdaki öğeler ve özellikler bulunur:
Öğe / @Özellik | Yineleme sayısı | Tür | Açıklama |
---|---|---|---|
Promotions | 1 | Complex element | Bir promosyon mesajının kök öğesidir. |
Promotions / @partner | 1 | string | Bu mesajın iş ortağı hesabıdır. Bu dize değeri, Hotel Center'ın
Hesap ayarları sayfasında listelenen "İş ortağı anahtarı" değeridir.
Birden fazla hesap için feed sağlayan bir arka ucunuz varsa bu değerin aynı hesap için |
Promotions / @id | 1 | string | Bu istek mesajının benzersiz tanımlayıcısıdır. Bu değer, yanıt mesajında döndürülür. İzin verilen karakterler a-z, A-Z, 0-9, _ (alt çizgi) ve - (kısa çizgi) şeklindedir. |
Promotions / @timestamp | 1 | DateTime | Bu mesajın oluşturulma tarihi ve saatidir. |
Promotions / HotelPromotions | 0..n | HotelPromotions | Bir tesise ait promosyonlardır. Her promosyon tek bir tesis için geçerlidir.
|
Promotions / HotelPromotions / @hotel_id | 1 | string | Tesisin benzersiz tanımlayıcısıdır. Bu değer, Otel Listesi Feed'indeki
<listing> öğesinde <id> kullanılarak belirtilen Otel Kimliği ile eşleşmelidir. Otel Kimliği, Hotel Center'da da listelenir. |
Promotions / HotelPromotions / @action | 0..1 | enum | Belirtilirse değer Belirtilmezse geçerli mesajda belirtilen her promosyon şunlardan biri olur:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Bir tesis için tek bir promosyon. 99'dan fazla promosyon kullanmanız gerekiyorsa Teknik Hesap Yöneticinizle (THY) iletişime geçin. |
Promotions / HotelPromotions / Promotion / @id | 1 | string | Promosyonun benzersiz tanımlayıcısıdır. İzin verilen maksimum karakter sayısı 40'tır. İzin verilen karakterler a-z, A-Z, 0-9, _ (alt çizgi), - (kısa çizgi) ve . (nokta) tuşlarına da basabilirsiniz. |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | Belirtilmesi durumunda değer
|
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | Promosyonun uygulanabilmesi için rezervasyonun ne zaman gerçekleşmesi gerektiğini tanımlayan bir veya daha fazla aralığın kapsayıcısıdır. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | Promosyonun uygulanabilmesi için rezervasyonun ne zaman gerçekleşmesi gerektiğini belirten aralık. |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date veya DateTime | Aralığın başlangıç tarihi veya tarih/saat (tesisin bulunduğu saat dilimine göre).
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date veya DateTime | Aralığın bitiş tarihi veya tarih/saat (tesisin saat dilimine göre).
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | Tarih aralığında izin verilen günleri belirtir. Belirtilmezse tarih aralığında tüm günlere izin verilir. Dizedeki her karakter bir gün belirtir. Örneğin "MTWHF", tarih aralığında hafta içi günlerine izin verildiğini belirtir. Geçerli karakterler şunlardır:
Tüm karakter kombinasyonları geçerlidir. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Giriş tarihine göre rezervasyonun gerçekleşmesi gereken dönemi belirtir (tesisin saat dilimine göre). Örneğin, rezervasyon dönemi check-in işleminden en az 7 gün önce olacak şekilde ayarlanabilir ancak en fazla 180 gün önce ayarlanabilir. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | Promosyonun uygulanabilmesi için rezervasyonun check-in işleminden önceki minimum süresidir. Bu belirtilmezse veya değeri 0 ise minimum değer yoktur.
Geçerli değer türleri şunlardır:
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | Promosyonun uygulanabilmesi için rezervasyonun check-in işleminden maksimum kaç gün önce yapılması gerektiğini belirtir. Bu belirtilmezse veya değeri 0 ise maksimum değer yoktur.
Geçerli değer türleri şunlardır:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
Promosyonlar uygulandıktan sonra ücretin ayarlanabileceği maksimum değerle ilgili kısıtlamaları tanımlar. Promosyonlarda her zaman bir Yığma yapılandırılmışsa tek bir konaklama için Örnek:
Hesaplama sırası aşağıda verilmiştir:
60 sayısı yalnızca kendi promosyonu için geçerli olduğundan ve promosyon yığınının tamamını kapsayan tek bir üst sınır olamayacağından daha sıkı bir genel üst sınır olması önemli değildir. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
İndirim uygulandıktan sonra gecelik ücretin ayarlanabileceği maksimum tutardır. Bir
|
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Promosyonlar uygulandıktan sonra ücretin ayarlanabileceği minimum değerle ilgili kısıtlamaları tanımlar. Promosyonlarda her zaman bir Ücretsiz gece indirimine Yığma yapılandırılmışsa tek bir konaklama için Örnek:
Hesaplama sırası aşağıda verilmiştir:
90 değeri yalnızca kendi tanıtımı için geçerli olduğundan ve tüm promosyon yığınını kapsayan tek bir taban olamayacağından daha katı bir genel taban olması önemli değildir. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
İndirim uygulandıktan sonra gecelik ücretin ayarlanabileceği minimum tutardır. Bir
|
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | Promosyonun uygulanabilmesi için check-in işleminin ne zaman yapılması gerektiğini tanımlayan bir veya daha fazla tarih aralığının kapsayıcısıdır. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | Promosyonun uygulanabilmesi için check-in işleminin ne zaman yapılması gerektiğini belirten tarih aralığıdır. Bir veya daha fazla promosyonu siliyorsanız bu öğe gerekli değildir. YearlessDate biçimi de desteklenir.
|
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | Tarih aralığının (dahil) başlangıç tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, end tarihinden önce veya bu tarihle aynı olmalıdır. start belirtilmezse tarih aralığı, başlangıç tarihi açısından etkin bir şekilde sınırlandırılmaz. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | Tarih aralığının (girilen tarihler dahil) bitiş tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, start tarihiyle veya bu tarihten sonra olmalıdır. end belirtilmezse tarih aralığı, bitiş tarihi açısından etkin bir şekilde sınırlandırılmaz. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | Tarih aralığında izin verilen günleri belirtir. Belirtilmezse tarih aralığında tüm günlere izin verilir. Dizedeki her karakter bir gün belirtir. Örneğin "MTWHF", tarih aralığında hafta içi günlerine izin verildiğini belirtir. Geçerli karakterler şunlardır:
Tüm karakter kombinasyonları geçerlidir. |
Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | Promosyonun uygulanabilmesi için ne zaman çıkış yapılması gerektiğini tanımlayan bir veya daha fazla tarih aralığının kapsayıcısıdır. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | Promosyonun uygulanabilmesi için ne zaman çıkış yapılması gerektiğini belirten tarih aralığıdır. Bir veya daha fazla promosyonu siliyorsanız bu öğe gerekli değildir. YearlessDate biçimi de desteklenir.
|
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | Tarih aralığının (dahil) başlangıç tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, end tarihinden önce veya bu tarihle aynı olmalıdır. start belirtilmezse tarih aralığı, başlangıç tarihi açısından etkin bir şekilde sınırlandırılmaz. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | Tarih aralığının (girilen tarihler dahil) bitiş tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, start tarihiyle veya bu tarihten sonra olmalıdır. end belirtilmezse tarih aralığı, bitiş tarihi açısından etkin bir şekilde sınırlandırılmaz. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | Tarih aralığında izin verilen günleri belirtir. Belirtilmezse tarih aralığında tüm günlere izin verilir. Dizedeki her karakter bir gün belirtir. Örneğin "MTWHF", tarih aralığında hafta içi günlerine izin verildiğini belirtir. Geçerli karakterler şunlardır:
Tüm karakter kombinasyonları geçerlidir. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | Promosyon için uygun olan kullanıcı cihazlarını listeleyen kapsayıcıdır. Belirtilirse yalnızca listelenen cihazlardaki uygun kullanıcılara indirimli fiyat sunulur. Belirtilmezse tüm cihazlardaki uygun kullanıcılara indirimli fiyat sunulur. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Promosyon için uygun olan bir kullanıcı cihazı türünü tanımlar. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | Bir cihaz türü. Değer desktop , tablet veya mobile olmalıdır. |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | Tam olarak Bu promosyon için uygulanacak indirimi belirtir. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float |
0 ile 100 arasında indirim yüzdesini belirten ondalık bir değerdir.
Örnekler:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float |
Örnekler:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float |
Örnekler:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float |
Örnekler:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float |
Örnekler:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Bu, yalnızca En uygun fiyatlı olandan başlayarak indirimin uygulandığı gece sayısıdır. 1 ile 99 arasında bir tam sayı olmalıdır. Belirtilmezse indirim tüm gecelere uygulanır. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Minimum konaklama süresine ulaşıldığında konaklamanın belirli gecelerinde yapılacak indirimi belirtir. Bu öğe kullanılırsa üst Discount öğesindeki özelliklere izin verilmez. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | İndirimin uygulanması için gereken gece sayısıdır. Her indirim, konaklama gecelerinin ayrı bir segmentine uygulanır. Örneğin, |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | Konaklama gecelerinin her segmentindeki indirimli gecelerin sayısı. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | İndirimli gecelere uygulanan indirim. Bu değer 50 ise seçilen her gece% 50 indirimli. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | cheapest veya last olmalıdır. last ise konaklama geceleri segmentinin sonundaki geceler indirim yapılır. cheapest ise konaklama geceleri segmentindeki en ucuz geceler indirim yapılır. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | İndirimin birden fazla gecelik konaklama segmentlerine uygulanıp uygulanmayacağı. Örneğin, |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Bu promosyona bir sıralama atar ve sıralamalı seçime dahil eder. Burada yalnızca en düşük sıralamaya sahip promosyon uygulanır. Değerler 1 ile 99 arasında (1 ve 99 dahil) olmalıdır. Birden fazla promosyon aynı sıralamayı paylaşırsa rastgele bir tanesi seçilir ve uygulanır. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Tam olarak Konaklama gecesine uygulanabilecek günlük indirimi belirtir. Bu durum, tüm konaklamalara indirimler uygulayan Her tesis, "günlük en iyi" olarak kabul edilen tek bir promosyon grubuna sahip olabilir. Bu, konaklanacak her gece için uygun olan ve o gece için en yüksek indirimi sağlayan "günlük en iyi" tek promosyonun seçildiği ve uygulanabileceği anlamına gelir.
Bu indirim türüyle |
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | Tam olarak 0 ile 100 arasında indirim yüzdesini belirten ondalık bir değerdir.
Örnekler:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Tam olarak Tek bir Örnekler:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | Tam olarak
Örnekler:
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Bu promosyonun uygulanabilmesi için müsait olması gereken oda sayısıyla ilgili kısıtlamaları tanımlar. İndirim, yalnızca kısıtlamaya uyan gecelere uygulanır. fixed_amount indirimiyle birlikte kullanılmasına izin verilmez. Müsait oda sayısının OTA_HotelInvCountNotifRQ (InvCount ) veya OTA_HotelAvailNotifRQ (BookingLimit ) ile belirtildiğini unutmayın. |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | Promosyonun gecelik ücrete uygulanabilmesi için müsait olması gereken minimum oda sayısıdır. Belirtilmezse minimum değer yoktur. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | Promosyonun gecelik ücrete uygulanabilmesi için müsait olması gereken maksimum oda sayısıdır. Belirtilmezse maksimum değer yoktur. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Bu promosyonun uygulanabileceği konaklama süresi sınırlarını belirler. Konaklama süresi minimum ve maksimum sınırların dışında olduğunda promosyon uygulanmaz. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | Promosyonun uygulanabilmesi için konaklama süresinde izin verilen minimum gece sayısıdır. Belirtilmezse minimum değer yoktur. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | Promosyonun uygulanabilmesi için konaklama süresinde izin verilen maksimum gece sayısıdır. Belirtilmezse maksimum değer yoktur. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
İlişkili indirim için belirli bir kullanıcı arayüzü işlemini tetikleyen üyelik ücreti kuralının kapsayıcısıdır.
|
Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string |
Üyelik programıyla ilişkili ücret kuralının kimliği. |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | Promosyonun uygulanabilmesi için aşılması gereken günlük oda fiyatlarının (AmountBeforeTax veya AmountAfterTax değerlerinin daha büyük olanı kullanılarak) minimum toplamını belirtir. |
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | Promosyonun uygulanabilmesi için aşılması gereken değer. |
Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Bu promosyonun uygulandığı doluluk oranını tanımlar. Doluluk minimum ve maksimum sınırların dışında olduğunda promosyon uygulanmaz. |
Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | İndirimin uygulanabilmesi için kullanıcı tarafından belirlenen doluluk oranının en az bu değer olması gerekir. |
Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | İndirimin uygulanabilmesi için kullanıcı tarafından belirlenen doluluk oranının en fazla bu değerde olması gerekir. |
Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Promosyonun geçerli olduğu ücret planları listesinin kapsayıcısıdır.
<RatePlans> belirtilmezse promosyon tüm ücret planları için geçerlidir. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | Ücret planını belirtir. Ücret planı; Transaction (Tesis Verileri), OTA_HotelRateAmountNotifRQ ve OTA_HotelAvailNotifRQ mesajlarında belirtilen ve PackageID tarafından tanımlanan paket, ücret ve müsaitlik durumunun kombinasyonuyla tanımlanır. |
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | Ücret planının benzersiz tanımlayıcısıdır. Bu değer, Transaction (Tesis Verileri) mesajındaki <PackageData> öğesinde ve hem <OTA_HotelRateAmountNotifRQ> hem de <OTA_HotelAvailNotifRQ> mesajlarında <StatusApplicationControl> öğesindeki RatePlanCode özelliğinde yer alan PackageID değeriyle eşlenir.
İzin verilen maksimum karakter sayısı 50'dir. |
Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | Promosyonun geçerli olduğu oda türleri listesinin kapsayıcısıdır.
Promosyon, belirtilen her bir <RoomType> için geçerlidir. <RoomTypes> belirtilmezse promosyon tüm odalar için geçerli olur. |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | Oda türünü belirtir. Oda türü, Transaction (Tesis Verileri) mesajındaki <RoomData> öğesinde tanımlanır ve <RoomID> değeri kullanılarak belirtilir. (<RoomID> değerine, OTA_HotelRateAmountNotifRQ mesajlarındaki InvTypeCode özelliği tarafından da referans verilir.) |
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | Envanterin benzersiz tanımlayıcısıdır (oda türü). Bu değer, Transaction (Tesis Verileri) mesajlarındaki <RoomID> ile eşlenir.
İzin verilen maksimum karakter sayısı 50'dir. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | Promosyonların nasıl birleştirilebileceğini belirtir. Belirtilmezse "type" base olarak kabul edilir. |
Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | Bu ayara bağlı olarak tek bir ücrete birden fazla promosyon uygulanabilir:
İzin verilen kombinasyonlar arasından en yüksek indirimi sağlayan promosyon grubu ücrete uygulanır. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | Sezonluk indirimlerin karşılanması gibi amaçlarla promosyonun nasıl uygulanacağını belirleyen bir veya daha fazla tarih aralığının kapsayıcısıdır. |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Promosyonun nasıl uygulanması gerektiğini açıklar. Valid values are:
Bu özellik her zaman belirtilmelidir.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | Promosyonun uygulanacağı tarihleri belirten tarih aralığıdır. YearlessDate biçimi de desteklenir.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | Tarih aralığının (dahil) başlangıç tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, end tarihinden önce veya bu tarihle aynı olmalıdır. start belirtilmezse tarih aralığı, başlangıç tarihi açısından etkin bir şekilde sınırlandırılmaz. |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | Tarih aralığının (girilen tarihler dahil) bitiş tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, start tarihiyle veya bu tarihten sonra olmalıdır. end belirtilmezse tarih aralığı, bitiş tarihi açısından etkin bir şekilde sınırlandırılmaz. |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | Tarih aralığında izin verilen günleri belirtir. Belirtilmezse tarih aralığında tüm günlere izin verilir. Dizedeki her karakter bir gün belirtir. Örneğin "MTWHF", tarih aralığında hafta içi günlerine izin verildiğini belirtir. Geçerli karakterler şunlardır:
Tüm karakter kombinasyonları geçerlidir. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Promosyon için uygun olan kullanıcı konumlarını (ülkeleri) listeleyen kapsayıcıdır. Belirtilirse yalnızca listelenen ülkelerdeki uygun kullanıcılara indirimli fiyat sunulur. Belirtilmezse tüm ülkelerdeki uygun kullanıcılara indirimli fiyat sunulur. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | UserCountry spesifikasyonunun türü.
Geçerli değerler Usercountries UserCountry Usercountries |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Promosyon için uygun olan kullanıcıların bulunduğu bir ülkeyi belirtir. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | DE veya FR gibi bir CLDR ülke kodu. Bazı ülkelerde CLDR ülke kodunun 2 harfli ISO ülke koduyla aynı olmadığını unutmayın. CLDR bölge kodları da desteklenmez. |
Örnekler
Temel mesaj
Aşağıdaki örnekte temel bir Promotions
mesajı gösterilmektedir:
<?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>
Envanter koşulu
Aşağıdaki örnekte, varış tarihine yaklaşıldığında fazla envanter varsa nasıl indirim oluşturulacağı gösterilmektedir:
<?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>
Bir promosyonu silme
Aşağıdaki örnekte, bir tesise ait bir promosyonun nasıl silineceği gösterilmektedir:
<?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>
Tüm promosyonları sil
Aşağıdaki örnekte bir tesise ait tüm promosyonların nasıl silineceği gösterilmektedir:
<?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>
Tüm promosyonları üst üste yerleştirme
Aşağıdaki örnekte, bir veya daha fazla yeni promosyonla bir tesis için <HotelPromotions>
değerinin nasıl yer alacağı gösterilmektedir. action="overlay"
olduğunda geçerli mesajda belirtilen promosyonlar depolanmadan önce, depolanan tüm promosyonlar silinir:
<?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 Farklı Yığma Türü
Aşağıdaki örnekte üç farklı promosyonun (base
, second
, any
) uygulanacağı bir durum gösterilmektedir. Diğer promosyonlar daha iyi indirim sağladığı için none
promosyonu uygulanmaz. Orijinal fiyat 100 ABD doları olsaydı indirimli fiyat 72, 90 ABD doları olurdu.
<?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>
Yığma Türü Yok
Aşağıdaki örnekte, diğer promosyonların kombinasyonu daha küçük bir indirim sağladığı için none
promosyonunun kullanıldığı bir durum gösterilmektedir. Orijinal fiyat 100 TL olsaydı indirimli fiyat 75 TL olurdu.
<?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>
Rezervasyon Aralığı Süre Sınırları
Aşağıdaki örnekte, BookingWindow
öğesinin başlangıç ve bitiş sınırları ISO 8601 Süre türü olarak tanımlanmış şekilde kullanıldığı bir durum gösterilmektedir. Bu rezervasyon aralığı kısıtlaması için varıştan önceki gün en geç 18:00'de ve varıştan 2. gün 12:00'de veya sonrasında rezervasyon yapılması gerekir.
<?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>
Rezervasyon Tarihleri Tarih ve Saat Sınırları
Aşağıdaki örnekte BookingDates
öğesinin DateTime türleri olarak start
ve end
özellikleriyle kullanıldığı bir durum gösterilmektedir. Bu rezervasyon tarihi kısıtlaması için rezervasyonun 01.07.2020 06:30 ile 02.07.2020 18:45 saatleri arasında yapılması gerekir.
<?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>
Yıl bulunmayan tarih aralıkları
Aşağıdaki örnekte, CheckInDates
öğesinin yıl içermeyen start
ve end
alanlarına sahip DateRanges
içerdiği bir durum gösterilmektedir. Bu örnekte promosyon, yıldan bağımsız olarak 29.12 ile 02.01 arasındaki check-in tarihleri için geçerlidir. Yeni yıl sınırını geçen yılsız tarih aralıkları geçersizdir. Bu nedenle, DateRange değeri, iki bitişik tarih aralığı olarak ifade edilir.
<?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>
FreeNights indirimi
Aşağıdaki örnekte, belirtilen rezervasyon tarihi aralığında kalan her dört gece için iki geceye% 50 indirim verilmiştir. On gecelik seyahat planı için toplam dört geceye %50 indirim uygulanır.
<?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>
Bir sonraki örnek, belirtilen konaklama tarihi aralıklarında kalan üç gece için bir geceye% 50 indirim sunuyor. İndirime uygun olması için konaklama süresi yalnızca çakışan geceler sayılır. 01.01.2022 giriş ve 07.01.2022 çıkış tarihli aşağıdaki seyahat planı için uygun konaklama geceleri ve indirimler aşağıdaki şekilde uygulanır.
- 01.01.2022 (konaklama)
- 02.01.2022 (konaklama)
- 2022-01-03
- 04.01.2022 (indirimli)
- 05.01.2022 (konaklama)
- 06.01.2022 (konaklama)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<StayDates application="overlap">
<DateRange start="2022-01-01" end="2022-01-02"/>
<DateRange start="2022-01-04" end="2022-01-06"/>
</StayDates>
<Discount>
<FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
Sıralamalı Seçim
Aşağıdaki örnekte biri% 20, diğeri% 15 indirim olmak üzere iki indirim sunulmaktadır. Değerlendirme sırasında yalnızca% 15'lik indirim uygulanır. Bu indirimin sıralaması daha düşüktür.
<?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>
En İyiGünlükİndirim
Aşağıdaki örnekte, Discount
ile yığılmış BestDailyDiscount
uygulanarak iki gecelik konaklamaya indirim uygulanmıştır.
<?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>
30 Nisan 2023 - 2 Mayıs 2023 tarihleri arasında iki gece konaklama düşünün Hesaplama için önce en fazla indirimi sağlayan en iyi günlük indirimlerin kombinasyonu bulunur.
İlk gece için geçerli tek tutar "genel" promosyondur ve 20 sabit indirimle uygulanır.
İkinci gece için "genel" indirimden daha yüksek bir indirim "olabilir" promosyonu sunulur. "Mayıs" seçildiğinde sabit indirim miktarı 50 olur.
Ardından konaklama için "fiesta" promosyonundan gecelik 5 adete veya toplam 10 indirimden yararlanabilirsiniz. "fiesta"nın yığın türü any
olarak ayarlandığından, en iyi günlük indirimlerin kombinasyonuyla üst üste uygulanabilir. base
olarak ayarlandıysa yalnızca en iyi günlük indirimlerin veya "fiesta" indiriminin kombinasyonu uygulanır. Daha fazla bilgi için Stacking
açıklamasına bakın.
Genel olarak konaklama fiyatına 20 + 50 + 10 = 80 sabit tutar indirimi uygulanır.
Yanıtlar
Söz dizimi
PromotionsResponse
mesajında şu söz dizimi kullanılır:
<?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>
Öğeler ve Özellikler
PromotionsResponse
mesajında aşağıdaki öğeler ve özellikler bulunur:
Öğe / @Özellik | Yineleme sayısı | Tür | Açıklama |
---|---|---|---|
PromotionsResponse | 1 | Complex element | Alınan Promosyon istek mesajının başarısını veya sorunlarını gösteren kök öğedir. |
PromotionsResponse / @timestamp | 1 | DateTime | Bu mesajın oluşturulma tarihi ve saatidir. |
PromotionsResponse / @id | 1 | string | İlişkili Promosyonlar mesajındaki benzersiz tanımlayıcıdır. |
PromotionsResponse / @partner | 1 | string | Bu mesajın iş ortağı hesabıdır. |
PromotionsResponse / Success | 0..1 | Success | Promosyonlar mesajının uyarı, hata veya sorun olmadan başarıyla işlendiğini belirtir.
Her mesajda |
PromotionsResponse / Issues | 0..1 | Issues | Promosyonlar mesajı işlenirken karşılaşılan bir veya daha fazla sorun için kullanılan bir kapsayıcıdır.
Her mesajda |
PromotionsResponse / Issues / Issue | 1..n | Issue | Promosyon mesajı işlenirken karşılaşılan uyarı, hata veya sorunun açıklamasıdır. Bu sorunlarla ilgili ayrıntıları Feed Durumu Hata Mesajları konusunda bulabilirsiniz. |
PromotionsResponse / Issues / Issue / @code | 1 | integer | Sorunun tanımlayıcısı. |
PromotionsResponse / Issues / Issue / @status | 1 | enum | Karşılaşılan sorunun türü. Geçerli değerler |
Örnekler
Başarılı
Aşağıda, başarıyla işlenmiş bir Tanıtımlar mesajına yanıt yer almaktadır.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
Sorunlar
Aşağıda, hatalar nedeniyle işlenmeyen bir Promosyon mesajına yanıt yer almaktadır.
<?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>