Genel Bakış
Bu API, olası indirimleri belirtmenize olanak tanır. Belirtilen promosyonlar arasında Google, en düşük fiyata yol açan uygun promosyonu veya promosyon grubunu uygular. Koşullar karşılandığında fiyatı artırabilen veya azaltabilen rastgele oran ayarlamalarını destekleyen bir API arıyorsanız Rate Modifications API'mizi kullanabilirsiniz. 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, 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>
Öğ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ı. 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 genelinde |
| 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ı. 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 promosyona şu işlemlerden biri yapılır:
|
| Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Bir tesise ait tek bir promosyondur. 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) şeklindedir. |
| Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | Belirtilirse 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 yapılması gerektiğini belirten aralıktır. |
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date veya DateTime | Aralığın (girilen tarihler dahil) başlangıç tarihi veya tarih saatidir (tesisin bulunduğu saat dilimine göre).
|
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date veya DateTime | Aralığın bitiş tarihi veya tarih ve saati (tesisin bulunduğu saat dilimine göre) (girilen tarihler dahil).
|
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | Tarih aralığında izin verilen günlerdir. 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çindeki günlere izin verildiğini belirtir. Geçerli karakterler şunlardır:
Herhangi bir karakter kombinasyonu geçerlidir. |
| Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Check-in 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 erken 7 gün önce olarak ayarlanabilir ancak 180 günü aşamaz. |
| Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | Promosyonun uygulanabilmesi için rezervasyonun check-in işleminden minimum ne kadar süre önce yapılması gerektiğini belirtir. 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. 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 bir ücretin ayarlanabileceği maksimum değerle ilgili kısıtlamaları tanımlar. Promosyonlarda her zaman Katmanlama yapılandırılırsa Örnek:
Hesaplama sırası şu şekildedir:
60'ın genel olarak daha katı bir üst sınır olması, 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 önemsizdir. |
| Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
İndirim uygulandıktan sonra gecelik ücretin belirlenebileceği maksimum tutardır.
|
| Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Promosyonlar uygulandıktan sonra bir oranın ayarlanabileceği minimum değerle ilgili kısıtlamaları tanımlar. Promosyonlarda her zaman Ücretsiz geceye Katmanlama yapılandırılırsa Örnek:
Hesaplama sırası şu şekildedir:
90'ın genel olarak daha katı bir taban olması, yalnızca kendi promosyonu için geçerli olduğundan ve promosyon yığını genelinde tek bir taban olamayacağından önemsizdir. |
| Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
İndirim uygulandıktan sonra gecelik ücretin ayarlanabileceği minimum tutar. 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 (girilen tarihler dahil) başlangıç tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, end tarihinden önce veya ilgili 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 aynı veya ilgili 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ünlerdir. 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çindeki günlere izin verildiğini belirtir. Geçerli karakterler şunlardır:
Herhangi bir karakter kombinasyonu 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 (girilen tarihler dahil) başlangıç tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, end tarihinden önce veya ilgili 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 aynı veya ilgili 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ünlerdir. 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çindeki günlere izin verildiğini belirtir. Geçerli karakterler şunlardır:
Herhangi bir karakter kombinasyonu 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üdür. Değer desktop, tablet veya mobile olmalıdır. |
| Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | Tam olarak bir Bu promosyon için uygulanacak indirimi belirtir. |
| Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float |
0 ile 100 arasında yüzdelik indirimi belirten ondalık değerdir.
Örnekler:
|
| Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float |
0 ile 100 arasında yüzdelik indirimi belirten ondalık değerdir.
Örnek:
|
| 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 | Yalnızca En uygun fiyatlardan 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üresi karşılandığında konaklamanın belirli gecelerinde indirim uygulanacağını belirtir. Bu öğe kullanılıyorsa üst Discount öğesindeki özelliklere
izin verilmez. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | İndirimin uygulanması için gereken gece sayısı. Her indirim, konaklama gecelerinin ayrı bir segmentine uygulanır. Örneğin, |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | Konaklama gecelerinin her bir segmentindeki indirimli gece sayısı. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | İndirimli gecelere uygulanan indirim. Bu değer 50 ise seçilen her gece için% 50 indirim uygulanır. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | cheapest veya last olmalıdır. last ise konaklama geceleri segmentinin sonundaki geceler için indirim uygulanır. cheapest ise konaklama geceleri segmentindeki en ucuz geceler için indirim uygulanır. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | İndirimin birden fazla konaklama gecesi segmentine uygulanıp uygulanamayacağı. Örneğin, |
| Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Bu tanıtıma bir sıralama atar ve sıralı seçimi etkinleştirir. Sıralı seçimde, uygulanacak tanıtım olarak yalnızca en düşük sıralamaya sahip olan seçilir. Değerler 1 ile 99 arasında (1 ve 99 dahil) olmalıdır. Birden fazla promosyon aynı sıralamayı paylaşıyorsa rastgele bir promosyon seçilip uygulanır. |
| Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Tam olarak bir Konaklama gecesine uygulanabilecek günlük indirimi belirtir. Bu, konaklamanın tamamına indirim uygulayan Her mülkte, "günün en iyisi" olarak kabul edilen tek bir promosyon grubu olabilir. Bu, konaklamanın her gecesi için uygun olan ve o gece en yüksek indirimi sağlayan tek "en iyi günlük" promosyonun seçilip uygulanabileceği anlamına gelir.
|
| Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float |
0 ile 100 arasında yüzdelik indirimi belirten ondalık değerdir.
Örnekler:
|
| Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float |
Tek bir Örnekler:
|
| Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float |
Ö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ı. Bu öğe, |
| 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ğerdir. |
| Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Bu promosyonun uygulandığı konaklama türleriyle ilgili kısıtlamaları tanımlar. Dolu olma oranı minimum ve maksimum sınırların dışında olduğunda promosyon uygulanmaz.
Promosyonlar, seyahat planının ücreti için geçerlidir. Kişi başına maksimum indirim ayarlamak mümkün değildir. |
| Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | İndirimin uygulanabilmesi için kullanıcı tarafından belirtilen doluluk oranı en az bu değer olmalıdır. |
| Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | İndirimin uygulanabilmesi için kullanıcının belirttiği doluluk oranı en fazla bu değer olmalıdır. |
| Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Promosyonun uygulandığı ü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), OA_HotelRateAmountNotifRQ ve OTA_HotelAvailNotifRQ mesajlarında belirtilen ve PackageID tarafından tanımlanan paket, ücret ve stok durumunun birleşimiyle 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ının <StatusApplicationControl> öğesindeki RatePlanCode özelliğinde bulunan 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 bir <RoomData> öğesinde tanımlanır ve <RoomID> değeri kullanılarak belirtilir. (<RoomID> değeri, OTA_HotelRateAmountNotifRQ mesajlarındaki InvTypeCode özelliği tarafından da belirtilir.) |
| 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. Belirtilmediği takdirde "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ında 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. Geçerli değerler şunlardır:
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.
Promosyonun haftanın belirli günlerinde kullanılması için |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | Tarih aralığının (girilen tarihler dahil) başlangıç tarihidir (tesisin bulunduğu saat dilimine göre). Bu tarih, end tarihinden önce veya ilgili 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 aynı veya ilgili tarihten sonra olmalıdır. end belirtilmezse tarih aralığı, start tarihinden itibaren 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ünlerdir. 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çindeki günlere izin verildiğini belirtir. Geçerli karakterler şunlardır:
Herhangi bir karakter kombinasyonu 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 | UserCountries spesifikasyonunun türü.
Geçerli değerler UserCountries UserCountries 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 | CLDR ülke kodu (ör. DE veya FR). Bazı ülkelerde CLDR ülke kodunun 2 harfli ISO ülke koduyla aynı olmadığını unutmayın. Ayrıca CLDR bölge kodları desteklenmez. |
Örnekler
Tesis başına 500 promosyon sınırı vardır. Bir tesisteki promosyonları kaldırmak için "Bir promosyonu silme" örneğine bakın.
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 envanter fazlası 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ı silme
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ın üstüne yazma
Aşağıdaki örnekte, bir veya daha fazla yeni promosyonla bir tesise ait <HotelPromotions> değerinin nasıl üstüne yazılacağı 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ı Stacking Türü
Aşağıdaki örnekte, üç farklı promosyonun (base, second, any) uygulanacağı bir durum gösterilmektedir. Diğer promosyonlar daha iyi bir indirim sağladığından none promosyonunun uygulanmayacağını unutmayın. Orijinal fiyat 100 TL ise indirimli fiyat 72, 90 TL olur.
<?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>
Birleştirme Türü Yok
Aşağıdaki örnekte, diğer promosyonların kombinasyonu daha düşük bir indirim sağladığı için none promosyonunun kullanıldığı bir durum gösterilmektedir. Orijinal fiyat 100 TL ise indirimli fiyat 75 TL olur.
<?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üresi sınırları
Aşağıdaki örnekte, BookingWindow öğesinin başlangıç ve bitiş sınırları ISO 8601 Süresi türü olarak tanımlanmış şekilde kullanıldığı bir durum gösterilmektedir. Bu rezervasyon aralığı kısıtlaması, varıştan önceki gün saat 18:00'e kadar ve varıştan 2 gün önce saat 12:00'den sonra rezervasyon yapılmasını gerektirir.
<?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
Aşağıdaki örnekte, BookingDates öğesinin start ve end özellikleri ile DateTime türleri olarak kullanıldığı bir durum gösterilmektedir. Bu rezervasyon tarihi kısıtlaması, rezervasyonun 01.07.2020 tarihinde 06:30 ile 02.07.2020 tarihinde 18:45 arasında yapılmasını gerektirir.
<?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 içermeyen tarih aralıkları
Aşağıdaki örnekte, CheckInDates öğesinin, yıl içermeyen start ve end alanlarına sahip DateRanges öğelerini içerdiği bir durum gösterilmektedir. Bu örnekte promosyon, yıldan bağımsız olarak 29.12 ile 02.01 arasındaki giriş tarihleri için geçerlidir. Yıl içermeyen ve yeni yıl sınırını aşan tarih aralıkları geçersizdir. Bu nedenle DateRange, 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 konaklanan her dört gece için iki geceye% 50 indirim uygulanmaktadır. On gecelik bir seyahat planında toplam dört gece için %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 örnekte, belirtilen konaklama tarihi aralıklarında konaklanan her üç gece için bir gece% 50 indirimli olarak sunulmaktadır. İndirimden yararlanmak için yalnızca konaklamanın çakışan geceleri dikkate alınır. 2022-01-01 tarihinde check-in ve 2022-01-07 tarihinde check-out yapılan aşağıdaki seyahat planı için uygun konaklama geceleri ve indirimler aşağıdaki şekilde uygulanır.
- 2022-01-01 (konaklama)
- 2022-01-02 (konaklama)
- 2022-01-03
- 2022-01-04 (indirimli)
- 2022-01-05 (konaklama)
- 2022-01-06 (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ıralı Seçim
Aşağıdaki örnekte biri% 20, diğeri% 15 indirim olmak üzere iki indirim sunulmaktadır. Değerlendirme sırasında, daha düşük bir sıralamaya sahip olduğu için yalnızca% 15 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">
<Discount percentage="15" rank="25"/>
</Promotion>
<Promotion id="2">
<Discount percentage="20" rank="50"/>
</Promotion>
</HotelPromotions>
</Promotions>
BestDailyDiscount
Aşağıdaki örnekte, BestDailyDiscount ve Discount üst üste uygulanarak iki gecelik konaklamada indirim yapılıyor.
<?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 gecelik konaklama olduğunu varsayalım. Hesaplama için en iyi günlük indirimlerin kombinasyonu bulunarak en yüksek indirim elde edilir.
İlk gece için "genel" promosyon, 20 TL'lik sabit indirimle tek uygun tutardır.
İkinci gece için "may" promosyonu, "general" indiriminden daha yüksek bir indirim sunuyor. Bu nedenle, "olabilir" seçildiğinde sabit indirim tutarı 50 olur.
Ardından, konaklama için "fiesta" promosyonu gecelik 5 ABD doları veya toplamda 10 ABD doları indirim uygular. "Fiesta"nın birleştirme türü any olarak ayarlandığından, en iyi günlük indirimlerin kombinasyonuyla birleştirilebilir. base olarak ayarlanırsa yalnızca en iyi günlük indirimlerin kombinasyonu veya "fiesta" indirimi uygulanır. Daha fazla bilgi için Stacking açıklamasını inceleyin.
`Genel olarak, konaklama fiyatına 20 + 50 + 10 = 80 sabit tutarında indirim uygulanıyor.
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 Promotions 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şkilendirilmiş Promotions mesajındaki benzersiz tanımlayıcıdır. |
| PromotionsResponse / @partner | 1 | string | Bu mesajın iş ortağı hesabı. |
| PromotionsResponse / Success | 0..1 | Success | Promotions mesajının uyarı, hata veya sorun olmadan başarıyla işlendiğini belirtir.
Her mesajda |
| PromotionsResponse / Issues | 0..1 | Issues | Promotions 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 | Promotions mesajı işlenirken karşılaşılan uyarı, hata veya sorunun açıklamasıdır. Bu sorunlarla ilgili ayrıntıları Feed Durumu Hata Mesajları başlıklı makalede bulabilirsiniz. |
| PromotionsResponse / Issues / Issue / @code | 1 | integer | Sorunun tanımlayıcısıdır. |
| 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 Promotions 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şlenmemiş bir Promotions 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>