Tanıtımlar

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 <OTA_HotelRateAmountNotifRQ> ve <OTA_HotelAvailNotifRQ> mesajlarınızın <RequestorID> öğesinde belirtilen ID özellik değeriyle eşleşmesi gerekir.

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.

<Stacking> kullanılmadığı sürece, birden fazla promosyon uygun olduğunda rezervasyona en büyük indirime sahip promosyon uygulanır.

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 "overlay" olmalıdır. Değer "overlay" olduğunda mevcut mesajda belirtilen promosyonlar depolanmadan önce, depolanan tüm promosyonlar silinir.

Belirtilmezse geçerli mesajda belirtilen her promosyon şunlardan biri olur:

  • Added (depolanan promosyonların hiçbiri aynı id değerine sahip değilse)
  • Updated (depolanan bir promosyon aynı id değerine sahipse)
  • Deleted (depolanan bir promosyon aynı id değerine sahipse ve geçerli mesajda belirtilen promosyonun action özelliğinin değeri "delete" ise)
Promotions / HotelPromotions / Promotion 0..99 Promotion

Bir tesis için tek bir promosyon. action="overlay" ve <Promotion> belirtilmezse tesisle ilgili tüm promosyonlar silinir.

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 delete olmalıdır. Belirtilmezse ve aynı id değerine sahip bir promosyon depolanmıyorsa bu promosyon depolanır. Aksi takdirde belirtilmezse ve aynı id değerine sahip bir promosyon depolanıyorsa mevcut promosyon güncellenir.

delete belirtilirse aynı id değerine sahip depolanan promosyon silinir. delete kullanırken <Promotion> içine hiçbir alt öğe eklemeyin. <HotelPromotions action="overlay"/> ile birlikte delete kullanımına da izin verilmez.

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).

  • start tarafından belirtilen tarih veya tarih, end tarafından belirtilen tarihten veya tarih/saatten önce (veya onunla aynı) olmalıdır.
  • start belirtilmezse aralık, başlangıç zamanı açısından etkin bir şekilde sınırsız olur.
  • start değeri "YYYY-AA-GG" tarihi olarak doldurulursa "YYYY-AA-GGT00:00:00" tarih ve saat olarak yorumlanır.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date veya DateTime

Aralığın bitiş tarihi veya tarih/saat (tesisin saat dilimine göre).

  • end tarafından belirtilen tarih veya tarih/saat, start tarafından belirtilen tarihten veya tarih/saatten sonra (veya bunlarla aynı) olmalıdır.
  • end belirtilmezse aralık, bitiş zamanı açısından etkin bir şekilde sınırsız olur.
  • end için "YYYY-AA-GG" tarihi olarak sağlanırsa "YYYY-AA-GGT23:59:59" tarih ve saat olarak yorumlanır.
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:

  • Pazartesi için M
  • Salı için T
  • Çarşamba için W
  • Perşembe için H
  • Cuma için F
  • Cumartesi için S
  • Pazar için U

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:

  • Tam sayı: Giriş tarihinden önceki gün sayısı. Örneğin, 30 değeri, promosyonun yalnızca giriş tarihinden en az 30 gün önceki rezervasyonlar için geçerli olduğunu belirtir.
  • ISO 8601 Süresi (gün, saat ve dakika): Giriş tarihinden önceki gün sayısı (ve isteğe bağlı olarak saat/dakika). Örneğin, P30D değeri, promosyonun yalnızca giriş tarihinden en az 30 gün önceki rezervasyonlar için geçerli olduğunu gösterir. P30DT6H değeri, varıştan önceki 30 gün içinde en geç 18:00'de rezervasyon yapılmasını gerektirir.
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:

  • Tam sayı: Giriş tarihinden önceki gün sayısı. Örneğin, 30 değeri, promosyonun yalnızca giriş tarihinden en fazla 30 gün önceki rezervasyonlar için geçerli olduğunu belirtir.
  • ISO 8601 Süresi (gün, saat ve dakika): Giriş tarihinden önceki gün sayısı (ve isteğe bağlı olarak saat/dakika). Örneğin, P30D değeri, promosyonun yalnızca giriş tarihinden en fazla 30 gün önceki rezervasyonlar için geçerli olduğunu belirtir. P30DT6H değeri, varıştan önceki 30. günde 18:00 veya sonrasında rezervasyon yapılmasını gerektirir.
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 <Discount> veya <BestDailyDiscount> belirtilmelidir. Bu nedenle, yalnızca <Ceiling> için geçerli olan bir promosyon oluşturmak için percentage değeri 0 ile bir <Discount> ayarlamak gibi seçenekler mevcuttur.

Yığma yapılandırılmışsa tek bir konaklama için <Ceiling> ile birden fazla promosyon uygulanabilir. Her promosyonda indirim uygulanır ve hemen ardından belirlenen üst sınır uygulanır. Aşağıdaki örnekte her bir tavanın, yığındaki bir sonraki promosyon hesaplamasına nasıl katkıda bulunduğu gösterilmektedir.

Örnek:

AmountBeforeTax değeri 100 olan ve iki promosyon yığını verilen 1 gecelik konaklamanın fiyatlandırması:

  1. Yığma türü base, fixed_amount 25 ve tavan değeri amount_per_night 60 olan promosyon
  2. Yığma türü second, fixed_amount/25 ve tavan değeri 90 amount_per_night olan promosyon

Hesaplama sırası aşağıda verilmiştir:

  1. Önce base promosyonu uygulanır ve AmountBeforeTax değeri 75 olarak düşürülür, ardından tavan değeri 60'a düşürülür.
  2. second promosyonu, AmountBeforeTax için 60 indirimden 35'e çıkar. Bu, 90'lık tavanın altındadır. Bu nedenle ikinci tavan uygulanmaz. Son ücret 35'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 <Floor> öğesi de belirtilirse bu, <Floor> içindeki amount_per_night özelliğinden büyük veya ona eşit bir değere ayarlanmalıdır.

amount_per_night, AmountAfterTax kullanılarak gecelik fiyata dahil edildiğinde vergiler ve ücretlere uygulanır, ancak TaxFeeInfo kullanılarak belirtilenlere dahil edilmez.

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 <Discount> veya <BestDailyDiscount> belirtilmelidir. Bu nedenle, yalnızca <Floor> için geçerli olan bir promosyon oluşturmak için percentage değeri 0 ile bir <Discount> ayarlamak gibi seçenekler mevcuttur.

Ücretsiz gece indirimine 100% indirim uygulanmış olsa bile <Floor> mantığı, <FreeNights> indirimleri için geçerli olur.

Yığma yapılandırılmışsa tek bir konaklama için <Floor> ile birden fazla promosyon uygulanabilir. Her promosyon kendi indirimini uygular ve hemen ardından taban fiyatı uygulanır. Aşağıdaki örnekte her bir tabanın, yığındaki bir sonraki promosyon hesaplamasına nasıl katkıda bulunduğu gösterilmektedir.

Örnek:

AmountBeforeTax değeri 100 olan ve iki promosyon yığını verilen 1 gecelik konaklamanın fiyatlandırması:

  1. Yığma türü base, 25 üzerinden fixed_amount ve taban değeri 90 üzerinden amount_per_night olan promosyon
  2. Yığma türü second, 25 fixed_amount ve taban değeri 60 amount_per_night olan promosyon

Hesaplama sırası aşağıda verilmiştir:

  1. Önce base promosyonu uygulanır ve AmountBeforeTax değeri 75'e düşürülür, ancak daha sonra taban fiyat 90'a çıkar.
  2. second promosyonu, AmountBeforeTax için 90 yerine 65 indirim sunar. 60 tabanın üzerinde olduğundan ikinci kat uygulanmaz. Son ücret 65'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 <Ceiling> öğesi de belirtilmişse bu, <Ceiling> içindeki amount_per_night özelliğinden küçük veya ona eşit bir değere ayarlanmalıdır.

amount_per_night, AmountAfterTax kullanılarak gecelik fiyata dahil edildiğinde vergiler ve ücretlere uygulanır, ancak TaxFeeInfo kullanılarak belirtilenlere dahil edilmez.

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.

  • start veya end tarihlerinde yıl belirtilmemişse her ikisi de yıl olmadan doldurulmalıdır.
  • Yıl bulunmayan tarih aralıkları yeni yılı kapsamamalıdır. Bunun yerine, aralığı iki bitişik tarih aralığı olarak gösterir. Örneğin {"12-29", "01-05"}, {"12-29", "12-31"} ve {"01-01", "01-05"} olarak temsil edilebilir.
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:

  • Pazartesi için M
  • Salı için T
  • Çarşamba için W
  • Perşembe için H
  • Cuma için F
  • Cumartesi için S
  • Pazar için U

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.

  • start veya end tarihlerinde yıl belirtilmemişse her ikisi de yıl içermeyen tarihler olarak doldurulmalıdır.
  • Yıl bulunmayan tarih aralıkları yeni yılı kapsamamalıdır. Bunun yerine, aralığı iki bitişik tarih aralığı olarak gösterir. Örneğin {"12-29", "01-05"}, {"12-29", "12-31"} ve {"01-01", "01-05"} olarak temsil edilebilir.
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:

  • Pazartesi için M
  • Salı için T
  • Çarşamba için W
  • Perşembe için H
  • Cuma için F
  • Cumartesi için S
  • Pazar için U

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 Discount veya BestDailyDiscount belirtilmelidir.

Bu promosyon için uygulanacak indirimi belirtir.

Promotions / HotelPromotions / Promotion / Discount / @percentage 0..1 float

percentage, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night değerlerinden tam olarak biri gereklidir.

0 ile 100 arasında indirim yüzdesini belirten ondalık bir değerdir. AmountAfterTax değerine (veya AmountAfterTax belirtilmezse AmountBeforeTax) uygulanır.

Örnekler:

  • AmountAfterTax 100 ve percentage 20 ise bu durumda

    promosyon ücreti = AmountAfterTax * (1 - yüzdelik indirim)

    80,00 = 100 * (1 - 0,2)

  • AmountBeforeTax değeri 100, percentage 20 ve TaxFeeInfo'da 10 değerinde vergi belirtiliyorsa bu durumda

    promosyon ücreti = AmountBeforeTax * (1 - yüzdelik indirim) + vergi

    90,00 = 100 * (1 - 0,2) + 10

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

percentage, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night değerlerinden tam olarak biri gereklidir.

AmountAfterTax gecelik ücretlerinin (veya AmountAfterTax belirtilmezse AmountBeforeTax gecelik ücretlerinin) toplamından çıkarılacak sabit tutar. Gecelik ücretlerle aynı para biriminde olduğu varsayılır. Bu değer, gecelik ücretlerin toplamından büyükse ortaya çıkan değer sıfır olur.

Örnekler:

  • 1 gecelik konaklamayı AmountBeforeTax değeri 90, AmountAfterTax 100 ve fixed_amount 20 olacak şekilde fiyatlandırırsak bu durumda

    promosyon ücreti = AmountAfterTax - sabit indirim

    80,00 = 100 - 20

  • 1 gecelik konaklamayı AmountBeforeTax değeri 100, fixed_amount 20 olacak ve TaxFeeInfo'da %8 oranında vergi belirtilecek şekilde fiyatlandırırsak bu durumda

    promosyon ücreti = (AmountBeforeTax - sabit indirim) * (1 + yüzdelik vergi)

    86,40 = (100 - 20) * 1,08

  • 1 gecelik konaklamayı AmountBeforeTax değeri 50, fixed_amount 60 olacak ve TaxFeeInfo'da 10 tutarında vergi belirtilecek şekilde fiyatlandırırsak bu durumda

    promosyon ücreti = (AmountBeforeTax - sabit indirim) * vergi

    10,00 = 0 + 10

  • 3 gecelik konaklamayı AmountAfterTax değerleri 100, 110 ve 120, fixed_amount değeri ise 150 olacak şekilde fiyatlandırırsak

    promosyon ücreti = toplam(AmountAfterTax) - (sabit indirim)

    180,00 = (100 + 110 + 120) - 150

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night 0..1 float

percentage, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night değerlerinden tam olarak biri gereklidir.

AmountAfterTax tutarındaki gecelik ücretlerin her birine (veya applied_nights belirtilirse en ucuz N değeri) uygulanan sabit indirimdir. AmountAfterTax belirtilmezse AmountBeforeTax için geçerlidir. Gecelik ücretlerle aynı para biriminde olduğu varsayılır. fixed_amount_per_night, gecelik ücretten büyükse bu gecelik ücret sıfıra düşürülür. İndirim, gecelik ücretin negatif olmasına neden olamaz.

Örnekler:

  • 3 gecelik konaklamayı AmountAfterTax değerleri 100, 110 ve 120, fixed_amount_per_night değeri ise 10 olacak şekilde fiyatlandırırsak bu durumda

    promosyon ücreti = toplam(AmountBeforeTax - sabit tutar indirimi)

    300,00 = ((100 - 10) + (110 - 10) + (120 - 10))

  • 3 gecelik konaklamayı AmountAfterTax değerleri 10, 50 ve 100, fixed_amount_per_night değeri 20 olacak şekilde fiyatlandırırsak bu durumda

    promosyon ücreti = toplam(AmountAfterTax - sabit tutar indirimi)

    110,00 = (0 + (50 - 20) + (100 - 20))

Promotions / HotelPromotions / Promotion / Discount / @fixed_price 0..1 float

percentage, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night değerlerinden tam olarak biri gereklidir.

AmountAfterTax gecelik fiyat belirtilirse vergiler ve ücretler dahil olmak üzere konaklamanın fiyatı belirtilen değere ayarlanır. AmountBeforeTax belirtilirse AmountAfterTax belirtilip belirtilmezse konaklama için vergi öncesi fiyat belirtilen değer olarak ayarlanır. Gecelik ücretlerle aynı para biriminde olduğu varsayılır.

AmountAfterTax, vergi yüzdesini yansıtmayı amaçlıyorsa AmountBeforeTax için sabit fiyat belirlemek, vergi ve ücretlerin hatalı olmasına yol açabilir. Genel olarak, bir tesisin vergi ve ücretlerini belirtmek için TaxFeeInfo değerinin kullanılması kesinlikle önerilir.

Örnekler:

  • 1 gecelik konaklamayı AmountBeforeTax değeri 90, AmountAfterTax 100 ve fixed_price 80 olacak şekilde fiyatlandırırsak promosyon ücreti 80 olur.
  • 1 gecelik konaklamayı AmountBeforeTax değeri 100, fixed_amount 80 olacak ve TaxFeeInfo'da %8 oranında vergi belirtilecek şekilde fiyatlandırırsak bu durumda

    promosyon ücreti = sabit fiyat * (1 + yüzde vergi)

    86,40 = 80 * 1,08

  • 3 gecelik konaklamayı AmountAfterTax değerleri 100, 110 ve 120, fixed_amount değeri ise 300 olacak şekilde fiyatlandırırsak

    promosyon ücreti = 300

Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night 0..1 float

percentage, fixed_amount, fixed_amount_per_night, fixed_price veya fixed_price_per_night değerlerinden tam olarak biri gereklidir.

AmountAfterTax gecelik fiyat belirtilirse vergiler ve ücretler dahil olmak üzere her gecelik fiyat için belirtilen değer belirlenir. AmountBeforeTax belirtilirse AmountAfterTax belirtilip belirtilmemesi durumunda her gecelik konaklama için vergi öncesi fiyat belirtilen değere ayarlanır. Gecelik ücretlerle aynı para biriminde olduğu varsayılır.

AmountAfterTax, vergi yüzdesini yansıtmayı amaçlıyorsa AmountBeforeTax için sabit fiyat belirlemek, vergi ve ücretlerin hatalı olmasına yol açabilir. Genel olarak, bir tesisin vergi ve ücretlerini belirtmek için TaxFeeInfo değerinin kullanılması kesinlikle önerilir.

applied_nights belirtilirse yeni fiyat en ucuz N geceye uygulanır.

Örnekler:

  • 2 gecelik konaklamayı AmountBeforeTax değerleri 90.90; AmountAfterTax değerleri 100, 100 ve fixed_price 80 olacak şekilde fiyatlandırırsak promosyon ücreti 80 + 80 = 160 olur.
  • 2 gecelik konaklamayı AmountBeforeTax değeri 100.100; fixed_amount değeri 80, TaxFeeInfo'da %8 olacak şekilde fiyatlandırırsak promosyon ücreti (80 + 80) * 1, 08 = 172,8 olur.
  • 3 gecelik konaklamayı AmountAfterTax değerleri 100, 110 ve 120 olacak şekilde ve fixed_amount değeri 110 olacak şekilde fiyatlandırırsak promosyon ücreti 110 x 3 = 330 olur.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

Bu, yalnızca percentage veya fixed_amount_per_night ile kullanılmalıdır.

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, stay_nights değeri 4 (repeats değeri doğru) olan 10 gecelik bir konaklama için iki gece konaklama segmenti bulunur: 1.-4. gece ve 5. ile 8. gece arası; 9. ve 10. gece konaklama gecesi segmentinin parçası değildir.

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ğı. false ise yalnızca seyahat planının başındaki konaklama gecelerinin segmenti indirimli olur. true ise tüm konaklama geceleri segmentleri indirim yapılır.

Örneğin, stay_nights 4 ve seyahat planı 10 geceyse repeats değeri true ise 2 segment indirim yapılır (1-4 gece ve 5-8 gece arası); ancak repeats false ise yalnızca 1 segment indirim yapılır (1-4 gece).

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 Discount veya BestDailyDiscount belirtilmelidir.

Konaklama gecesine uygulanabilecek günlük indirimi belirtir. Bu durum, tüm konaklamalara indirimler uygulayan Discount ile farklıdır.

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.

Stacking, BestDailyDiscount ile belirtilemez. Her gece için en yüksek indirimi sağlayan "günlük en iyi" indirimler birleştirilir ve yığın türü base olarak ayarlanmış şekilde tek konaklama indirimi (ör. Discount) olarak değerlendirilir. Bu birleştirilmiş indirim, en yüksek indirimi sağlayan promosyonu veya kombinasyonu bulmak için diğer uygun <İndirim> promosyonlarıyla karşılaştırılır ve bir arada kullanılabilir. BestDailyDiscount veya tek bir Discount kombinasyonu (hangisi daha düşük olursa) seçilir ve base yığın türü için uygulanır.

Bu indirim türüyle StayDates belirtilebilir ancak application, overlap olarak ayarlanmalıdır

.
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage 0..1 float

Tam olarak percentage, fixed_amount veya fixed_price gereklidir.

0 ile 100 arasında indirim yüzdesini belirten ondalık bir değerdir. AmountAfterTax değerine (veya AmountAfterTax belirtilmezse AmountBeforeTax) uygulanır.

Örnekler:

  • AmountAfterTax gecelik konaklama için 100 ve percentage 20 ise bu durumda

    promosyon ücreti = AmountAfterTax * (1 - yüzdelik indirim)

    80,00 = 100 * (1 - 0,2)

  • Konaklama için AmountBeforeTax değeri 100, percentage 20 ve TaxFeeInfo'da 10 değerinde vergi belirtiliyorsa bu durumda

    promosyon ücreti = AmountBeforeTax * (1 - yüzdelik indirim) + vergi

    90,00 = 100 * (1 - 0,2) + 10

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount 0..1 float

Tam olarak percentage, fixed_amount veya fixed_price gereklidir.

Tek bir AmountAfterTax gecelik ücretinden (veya AmountAfterTax belirtilmezse AmountBeforeTax gecelik ücretten) çıkarılacak sabit tutar. Gecelik ücretlerle aynı para biriminde olduğu varsayılır. Bu değer, gecelik ücretlerin toplamından büyükse ortaya çıkan değer sıfır olur.

Örnekler:

  • Tek bir gece için AmountBeforeTax değeri 90, AmountAfterTax 100 ve fixed_amount 20 ise bu durumda

    promosyon ücreti = AmountAfterTax - sabit indirim

    80,00 = 100 - 20

  • Tek bir gece için AmountBeforeTax 100, fixed_amount 20 ve TaxFeeInfo'da %8 oranında vergi belirtiliyorsa bu durumda

    promosyon ücreti = (AmountBeforeTax - sabit indirim) * (1 + yüzdelik vergi)

    86,40 = (100 - 20) * 1,08

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price 0..1 float

Tam olarak percentage, fixed_amount veya fixed_price gereklidir.

AmountAfterTax gecelik fiyat belirtilirse vergiler ve ücretler dahil gecelik fiyat, belirtilen değere ayarlanır. AmountBeforeTax belirtilirse AmountAfterTax belirtilip belirtilmezse konaklama için vergi öncesi fiyat belirtilen değer olarak ayarlanır. Gecelik ücretlerle aynı para biriminde olduğu varsayılır.

Örnekler:

  • Tek bir gece için AmountBeforeTax değeri 90, AmountAfterTax 100 ve fixed_price 80 ise promosyon ücreti 80 olur.
  • Tek bir gece için AmountBeforeTax 100, fixed_amount 80 ve TaxFeeInfo'da %8 oranında vergi belirtiliyorsa bu durumda

    promosyon ücreti = sabit fiyat * (1 + yüzde vergi)

    86,40 = 80 * 1,08

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.

<Discount> de belirtilmediği sürece bu öğe belirtılmamalı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:

  • any: Diğer promosyonlarla birleştirilebilir (none hariç), ancak promosyonların uygulanması gereken sıra garanti edilmez.
  • base: Diğer promosyonlardan önce, uygun olan en iyi base promosyonu seçilir ve uygulanır. Bu, daha önce base_only olarak adlandırılıyordu.
  • second: Uygun en iyi second promosyonu, base promosyonundan (varsa) sonra ve any promosyondan önce seçilip uygulanır.
  • none: Diğer promosyonlarla birleştirilemez.

İ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:

  • all: Seyahat planındaki tüm tarihler konaklama tarihleriyle çakışıyorsa promosyonu seyahat planındaki her geceye uygular.
  • any: Seyahat planındaki herhangi bir tarih, konaklama tarihleri aralığındaki bir tarihle çakışıyorsa promosyonu seyahat planındaki tüm gecelere uygular.
  • overlap: Promosyonu yalnızca konaklama tarihleri aralığındaki bir tarihle çakışan seyahat planındaki gecelere uygular.

Bu özellik her zaman belirtilmelidir.

  • <Discount> öğesinde percentage değeri belirtilirse ve application, all veya any olarak ayarlanırsa indirim, tam konaklama yüzdesi olarak uygulanır.
  • <Discount> öğesinde percentage değeri belirtilirse ve application, overlap olarak ayarlanırsa indirim, çakışan geceler için gecelik ücret yüzdesi olarak uygulanır.
  • <Discount> öğesinde fixed_amount değerinin belirtilmesi ve application öğesinin overlap olarak ayarlanması geçersiz bir kombinasyondur.
  • <FreeNights>, tüm application değerlerini destekler. overlap tarihinde, indirim şartları için yalnızca çakışan gecelerin dikkate alındığını unutmayın.
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

Promosyonun uygulanacağı tarihleri belirten tarih aralığıdır.

YearlessDate biçimi de desteklenir.

  • start veya end tarihlerinde yıl belirtilmemişse her ikisi de yıl içermeyen tarihler olarak doldurulmalıdır.
  • Yıl bulunmayan tarih aralıkları yeni yılı kapsamamalıdır. Bunun yerine, aralığı iki bitişik tarih aralığı olarak gösterir. Örneğin {"12-29", "01-05"}, {"12-29", "12-31"} ve {"01-01", "01-05"} olarak temsil edilebilir.
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:

  • Pazartesi için M
  • Salı için T
  • Çarşamba için W
  • Perşembe için H
  • Cuma için F
  • Cumartesi için S
  • Pazar için U

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 include ve exclude değerleridir.

Usercountries type için include değeri belirlenirse promosyon, listelenen ülkelerdeki kullanıcılar için geçerli olur.

UserCountry type değeri exclude ise promosyon, listelenen ülkelerin dışındaki kullanıcılar için geçerli olur.

Usercountries type ayarlanmazsa include olarak değerlendirilir ve promosyon, listelenen ülkelerdeki kullanıcılara uygulanır.

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 <Success> veya <Issues> bulunur.

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 <Success> veya <Issues> bulunur.

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 warning, error ve failure'dir.

Ö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>