प्रचार

खास जानकारी

इस एपीआई की मदद से, संभावित छूट के बारे में बताया जा सकता है. बताए गए प्रमोशन में से, Google उस प्रमोशन या प्रमोशन के सेट को लागू करता है जो ज़रूरी शर्तें पूरी करता हो और जिसकी वजह से सबसे कम कीमत मिलती हो. अगर आपको ऐसा एपीआई चाहिए जो शर्तों के पूरा होने पर, कीमत को घटाने या बढ़ाने के लिए, किसी भी रेट अडजस्टमेंट का इस्तेमाल कर सके, तो Rate Modifications API का इस्तेमाल करें. ध्यान दें कि अगर दोनों एपीआई मौजूद हैं, तो प्रमोशन से पहले किराये में बदलाव लागू किए जाते हैं.

अनुरोध

सिंटैक्स

Promotions मैसेज में इस सिंटैक्स का इस्तेमाल किया जाता है:

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

तत्व और एट्रिब्यूट

प्रमोशन मैसेज में ये एलिमेंट और एट्रिब्यूट होते हैं:

Element / @Attribute आवृत्तियां टाइप ब्यौरा
Promotions 1 Complex element प्रमोशन के मैसेज का रूट एलिमेंट.
Promotions / @partner 1 string यह मैसेज किस पार्टनर खाते के लिए है. यह स्ट्रिंग वैल्यू, Hotel Center के खाते की सेटिंग वाले पेज पर मौजूद "पार्टनर की" वैल्यू होती है.

अगर आपके पास ऐसा बैकएंड है जो कई खातों के लिए फ़ीड उपलब्ध कराता है, तो इस वैल्यू को उसी खाते के लिए <OTA_HotelRateAmountNotifRQ> और <OTA_HotelAvailNotifRQ> मैसेज के <RequestorID> एलिमेंट में दी गई ID एट्रिब्यूट वैल्यू से मेल खाना चाहिए.

Promotions / @id 1 string इस अनुरोध मैसेज के लिए यूनीक आइडेंटिफ़ायर. यह वैल्यू, जवाब वाले मैसेज में दिखती है. a-z, A-Z, 0-9, _ (अंडरस्कोर), और - (डैश) का इस्तेमाल किया जा सकता है.
Promotions / @timestamp 1 DateTime इस मैसेज को बनाने की तारीख और समय.
Promotions / HotelPromotions 0..n HotelPromotions

किसी प्रॉपर्टी के लिए प्रमोशन. हर प्रमोशन, किसी एक प्रॉपर्टी पर लागू होता है.

<Stacking> का इस्तेमाल न करने पर, बुकिंग पर सबसे ज़्यादा छूट वाला प्रमोशन लागू होता है. ऐसा तब होता है, जब एक से ज़्यादा प्रमोशन ज़रूरी शर्तें पूरी करते हों.

Promotions / HotelPromotions / @hotel_id 1 string प्रॉपर्टी के लिए यूनीक आइडेंटिफ़ायर. यह वैल्यू, होटल सूची फ़ीड में <listing> एलिमेंट में <id> का इस्तेमाल करके तय किए गए होटल आईडी से मेल खानी चाहिए. होटल आईडी, Hotel Center में भी दिखता है.
Promotions / HotelPromotions / @action 0..1 enum

अगर यह वैल्यू दी गई है, तो यह "overlay" होनी चाहिए. जब वैल्यू "overlay" होती है, तो सेव किए गए सभी प्रमोशन मिट जाते हैं. इसके बाद, मौजूदा मैसेज में बताए गए प्रमोशन सेव किए जाते हैं.

अगर इस बारे में जानकारी नहीं दी जाती है, तो मौजूदा मैसेज में बताए गए हर प्रमोशन को इनमें से किसी एक के तौर पर माना जाता है:

  • Added (अगर सेव किए गए किसी भी प्रमोशन में एक जैसा id नहीं है)
  • Updated (अगर सेव किए गए किसी प्रमोशन में एक जैसा id है)
  • Deleted (अगर सेव किए गए प्रमोशन में id एट्रिब्यूट की वैल्यू वही है जो मौजूदा मैसेज में बताए गए प्रमोशन के लिए action एट्रिब्यूट की वैल्यू है और id एट्रिब्यूट की वैल्यू "delete" है)
Promotions / HotelPromotions / Promotion 0..99 Promotion

किसी प्रॉपर्टी के लिए एक प्रमोशन. ध्यान दें कि अगर action="overlay" और <Promotion> नहीं दिया जाता है, तो प्रॉपर्टी के सभी प्रमोशन मिटा दिए जाते हैं.

अगर आपको 99 से ज़्यादा प्रमोशन इस्तेमाल करने हैं, तो अपने तकनीकी खाता मैनेजर (टैम) से संपर्क करें.

Promotions / HotelPromotions / Promotion / @id 1 string प्रमोशन के लिए यूनीक आइडेंटिफ़ायर. ज़्यादा से ज़्यादा 40 वर्ण इस्तेमाल किए जा सकते हैं. a-z, A-Z, 0-9, _ (अंडरस्कोर), - (डैश), और . वर्णों का इस्तेमाल किया जा सकता है. (पीरियड).
Promotions /HotelPromotions / Promotion / @action 0..1 enum

अगर यह वैल्यू दी गई है, तो यह delete होनी चाहिए. अगर इसे नहीं चुना जाता है और id की वैल्यू के हिसाब से कोई प्रमोशन सेव नहीं किया जाता है, तो इस प्रमोशन को सेव कर लिया जाता है. अगर इस एट्रिब्यूट की वैल्यू नहीं दी जाती है और id की वैल्यू वाला कोई प्रमोशन पहले से सेव है, तो मौजूदा प्रमोशन अपडेट हो जाएगा.

अगर delete दिया गया है, तो उसी id के साथ सेव किया गया प्रमोशन मिट जाता है. delete का इस्तेमाल करते समय, <Promotion> में कोई भी चाइल्ड एलिमेंट शामिल न करें. इसके अलावा, delete को <HotelPromotions action="overlay"/> के साथ इस्तेमाल करने की अनुमति नहीं है.

Promotions / HotelPromotions / Promotion / BookingDates 0..1 BookingDates यह एक या उससे ज़्यादा रेंज के लिए कंटेनर होता है. इससे यह तय होता है कि प्रमोशन लागू करने के लिए बुकिंग कब होनी चाहिए.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange 1..99 DateRange यह एक रेंज होती है, जिसमें यह बताया जाता है कि प्रमोशन लागू होने के लिए बुकिंग कब होनी चाहिए.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 Date या DateTime

रेंज की शुरुआती तारीख या तारीख और समय (प्रॉपर्टी के टाइम ज़ोन के आधार पर). इसमें यह तारीख और समय शामिल है.

  • start एट्रिब्यूट की वैल्यू के तौर पर दी गई तारीख या तारीख और समय, end एट्रिब्यूट की वैल्यू के तौर पर दी गई तारीख या तारीख और समय से पहले का होना चाहिए या उसके बराबर होना चाहिए.
  • अगर start की वैल्यू नहीं दी जाती है, तो शुरू होने के समय के हिसाब से रेंज, असल में असीमित होती है.
  • अगर start को तारीख "YYYY-MM-DD" के तौर पर भरा जाता है, तो इसे तारीख और समय "YYYY-MM-DDT00:00:00" के तौर पर माना जाता है.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date या DateTime

रेंज की आखिरी तारीख या तारीख और समय (प्रॉपर्टी के टाइम ज़ोन के हिसाब से). इसमें यह तारीख और समय शामिल होता है.

  • end एट्रिब्यूट की वैल्यू के तौर पर दी गई तारीख या समय, start एट्रिब्यूट की वैल्यू के तौर पर दी गई तारीख या समय के बाद का होना चाहिए या उसके बराबर होना चाहिए.
  • अगर end की वैल्यू नहीं दी जाती है, तो रेंज के खत्म होने का समय तय नहीं होता.
  • अगर end को तारीख "YYYY-MM-DD" के तौर पर दिया जाता है, तो इसे तारीख और समय "YYYY-MM-DDT23:59:59" के तौर पर माना जाता है.
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week 0..1 string

तारीख की सीमा में शामिल किए जा सकने वाले हफ़्ते के दिन. अगर जानकारी नहीं दी जाती है, तो तारीख की सीमा में सभी दिनों को अनुमति दी जाती है. स्ट्रिंग में मौजूद हर वर्ण, एक दिन के बारे में बताता है. उदाहरण के लिए, "MTWHF" से पता चलता है कि तारीख की सीमा में हफ़्ते के दिनों को अनुमति है.

मान्य वर्ण ये हैं:

  • सोमवार के लिए M
  • मंगलवार के लिए T
  • W बुधवार के लिए
  • H गुरुवार के लिए
  • F शुक्रवार के लिए
  • S शनिवार के लिए
  • U रविवार के लिए

वर्णों का कोई भी कॉम्बिनेशन मान्य होता है.

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow यह उस समयावधि के बारे में बताता है जब चेक-इन करने की तारीख के हिसाब से बुकिंग होनी चाहिए. यह प्रॉपर्टी के टाइम ज़ोन पर आधारित होती है. उदाहरण के लिए, चेक-इन करने से कम से कम सात दिन पहले और ज़्यादा से ज़्यादा 180 दिन पहले बुकिंग की जा सकती है.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration प्रमोशन लागू करने के लिए, चेक-इन करने से कम से कम कितने समय पहले बुकिंग की जानी चाहिए. अगर यह एट्रिब्यूट शामिल नहीं किया जाता है या इसकी वैल्यू 0 होती है, तो कोई भी कम से कम वैल्यू नहीं होती है.

मान्य वैल्यू टाइप ये हैं:

  • पूर्णांक: चेक-इन की तारीख से पहले के दिनों की संख्या. उदाहरण के लिए, 30 वैल्यू का मतलब है कि प्रमोशन सिर्फ़ उन बुकिंग पर लागू होता है जो चेक-इन की तारीख से कम से कम 30 दिन पहले की गई हों.
  • आईएसओ 8601 के हिसाब से अवधि (दिन, घंटे, और मिनट): चेक-इन की तारीख से पहले के दिनों (और ज़रूरत पड़ने पर घंटों/मिनटों) की संख्या. उदाहरण के लिए, P30D वैल्यू से पता चलता है कि प्रमोशन सिर्फ़ उन बुकिंग पर लागू होता है जो चेक-इन की तारीख से कम से कम 30 दिन पहले की गई हैं. P30DT6H की वैल्यू के लिए, यात्रा की तारीख से 30 दिन पहले शाम 6:00 बजे तक बुकिंग करना ज़रूरी है.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration चेक-इन करने से ज़्यादा से ज़्यादा कितने दिन पहले बुकिंग की जानी चाहिए, ताकि प्रमोशन लागू हो सके. अगर यह वैल्यू नहीं दी गई है या इसकी वैल्यू 0 है, तो कोई ज़्यादा से ज़्यादा सीमा नहीं होती.

मान्य वैल्यू टाइप ये हैं:

  • पूर्णांक: चेक-इन की तारीख से पहले के दिनों की संख्या. उदाहरण के लिए, 30 वैल्यू से पता चलता है कि प्रमोशन सिर्फ़ उन बुकिंग पर लागू होता है जो चेक-इन की तारीख से ज़्यादा से ज़्यादा 30 दिन पहले की गई हों.
  • आईएसओ 8601 के हिसाब से अवधि (दिन, घंटे, और मिनट): चेक-इन की तारीख से पहले के दिनों (और ज़रूरत पड़ने पर घंटों/मिनटों) की संख्या. उदाहरण के लिए, P30D वैल्यू से पता चलता है कि प्रमोशन सिर्फ़ उन बुकिंग पर लागू होता है जो चेक-इन की तारीख से ज़्यादा से ज़्यादा 30 दिन पहले की गई हों. P30DT6H वैल्यू के लिए, यात्रा की तारीख से 30 दिन पहले शाम 6 बजे या उसके बाद बुकिंग करना ज़रूरी है.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

यह प्रमोशन लागू होने के बाद, ज़्यादा से ज़्यादा वैल्यू पर पाबंदियां तय करता है.

प्रमोशन में हमेशा <Discount> या <BestDailyDiscount> की जानकारी देनी चाहिए. इसलिए, अगर आपको ऐसा प्रमोशन बनाना है जिसमें सिर्फ़ <Ceiling> लागू हो, तो <Discount> को 0 के percentage के साथ सेट करें.

अगर स्टैकिंग की सुविधा कॉन्फ़िगर की गई है, तो एक ही स्टे पर <Ceiling> वाले कई प्रमोशन लागू हो सकते हैं. हर प्रमोशन, छूट लागू करेगा. इसके तुरंत बाद, सीमा लागू होगी. यहां दिए गए उदाहरण में बताया गया है कि हर सीलिंग, स्टैक में अगले प्रमोशन की कैलकुलेशन में कैसे योगदान देती है.

उदाहरण:

एक रात के लिए ठहरने का किराया तय करना. इसमें AmountBeforeTax की वैल्यू 100 है और दो प्रमोशन लागू हैं:

  1. स्टैकिंग टाइप base वाला प्रमोशन, जिसमें fixed_amount की वैल्यू 25 और amount_per_night की वैल्यू 60 है
  2. स्टैकिंग टाइप second वाला प्रमोशन, 25 fixed_amount, और 90 amount_per_night

कैलकुलेशन का क्रम यहां दिया गया है:

  1. base प्रमोशन पहले लागू होता है और AmountBeforeTax को 75 तक कम कर देता है. हालांकि, इसके बाद सीलिंग इसे 60 तक कम कर देती है.
  2. second प्रमोशन में, AmountBeforeTax की कीमत 60 से 35 कर दी गई है. यह 90 से कम है. इसलिए, दूसरी सीलिंग लागू नहीं की गई है. फ़ाइनल रेट 35 है.

इस बात से कोई फ़र्क़ नहीं पड़ता कि 60, कुल मिलाकर एक ज़्यादा पाबंदी वाली सीमा है, क्योंकि यह सिर्फ़ अपने प्रमोशन के लिए मान्य है. साथ ही, ऐसी कोई एक सीमा नहीं हो सकती जो पूरे प्रमोशन स्टैक पर लागू हो.

Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night 1 float

छूट लागू होने के बाद, एक रात के किराये की ज़्यादा से ज़्यादा रकम.

अगर <Floor> एलिमेंट भी तय किया गया है, तो इसे <Floor> में मौजूद amount_per_night एट्रिब्यूट की वैल्यू से ज़्यादा या उसके बराबर वैल्यू पर सेट करना होगा.

amount_per_night को टैक्स और शुल्क पर तब लागू किया जाता है, जब उन्हें AmountAfterTax का इस्तेमाल करके एक रात के किराये में शामिल किया जाता है. हालांकि, TaxFeeInfo का इस्तेमाल करके तय किए गए टैक्स और शुल्क पर इसे लागू नहीं किया जाता.

Promotions / HotelPromotions / Promotion / Floor 0..1 Floor

इससे यह तय किया जाता है कि प्रमोशन लागू होने के बाद, किराये की कम से कम वैल्यू कितनी हो सकती है.

प्रमोशन में हमेशा <Discount> या <BestDailyDiscount> की जानकारी देनी चाहिए. इसलिए, अगर आपको ऐसा प्रमोशन बनाना है जिसमें सिर्फ़ <Floor> लागू हो, तो <Discount> को 0 के percentage के साथ सेट करें.

<Floor> लॉजिक अब भी <FreeNights> छूट पर लागू होता है. भले ही, बिना किसी शुल्क के रात में ठहरने की सुविधा पर 100% छूट लागू हो.

अगर स्टैकिंग की सुविधा कॉन्फ़िगर की गई है, तो एक ही स्टे पर <Floor> वाले कई प्रमोशन लागू हो सकते हैं. हर प्रमोशन, छूट लागू करेगा. इसके तुरंत बाद, फ़्लोर लागू होगा. यहां दिए गए उदाहरण में बताया गया है कि स्टैक में हर फ़्लोर, अगले प्रमोशन की कैलकुलेशन में कैसे योगदान देता है.

उदाहरण:

एक रात के लिए ठहरने का किराया तय करना. इसमें AmountBeforeTax की वैल्यू 100 है और दो प्रमोशन लागू हैं:

  1. स्टैकिंग टाइप base वाला प्रमोशन, जिसमें fixed_amount 25 है और फ़्लोर amount_per_night 90 है
  2. स्टैकिंग टाइप second वाला प्रमोशन, जिसमें fixed_amount की वैल्यू 25 और फ़्लोर amount_per_night की वैल्यू 60 है

कैलकुलेशन का क्रम यहां दिया गया है:

  1. base प्रमोशन पहले लागू होता है और AmountBeforeTax को 75 तक कम कर देता है. हालांकि, इसके बाद फ़्लोर इसे 90 तक बढ़ा देता है.
  2. second प्रमोशन में, AmountBeforeTax की कीमत 90 से 65 कर दी गई है. यह 60 से ज़्यादा है. इसलिए, दूसरी मंज़िल पर जाने की सुविधा लागू नहीं की गई है. फ़ाइनल रेट 65 है.

इस बात से कोई फ़र्क़ नहीं पड़ता कि 90, कुल मिलाकर एक सख्त फ़्लोर है, क्योंकि यह सिर्फ़ अपने प्रमोशन के लिए मान्य है. साथ ही, ऐसा कोई फ़्लोर नहीं हो सकता जो पूरे प्रमोशन स्टैक पर लागू हो.

Promotions / HotelPromotions / Promotion / Floor / @amount_per_night 1 float

छूट लागू होने के बाद, एक रात के लिए कमरे का कम से कम किराया.

अगर <Ceiling> एलिमेंट भी तय किया गया है, तो इसे <Ceiling> में amount_per_night एट्रिब्यूट की वैल्यू से कम या इसके बराबर वैल्यू पर सेट किया जाना चाहिए.

amount_per_night को टैक्स और शुल्क पर तब लागू किया जाता है, जब उन्हें AmountAfterTax का इस्तेमाल करके एक रात के किराये में शामिल किया जाता है. हालांकि, TaxFeeInfo का इस्तेमाल करके तय किए गए टैक्स और शुल्क पर इसे लागू नहीं किया जाता.

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates यह एक या उससे ज़्यादा तारीख की सीमाओं वाला कंटेनर होता है. इससे यह तय होता है कि प्रमोशन लागू करने के लिए, चेक-इन कब होना चाहिए.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

तारीख की वह सीमा जिसके दौरान चेक-इन करने पर प्रमोशन लागू होगा. अगर आपको एक या उससे ज़्यादा प्रमोशन मिटाने हैं, तो इस एलिमेंट की ज़रूरत नहीं है.

YearlessDate फ़ॉर्मैट का भी इस्तेमाल किया जा सकता है.

  • अगर start या end में से किसी एक में साल की जानकारी नहीं दी गई है, तो दोनों में साल की जानकारी नहीं दी जानी चाहिए.
  • साल के बिना तारीख की सीमाएं, नए साल के आस-पास नहीं होनी चाहिए. इसके बजाय, रेंज को तारीख की दो आस-पास की रेंज के तौर पर दिखाएं. उदाहरण के लिए, {"12-29", "01-05"} को {"12-29", "12-31"} और {"01-01", "01-05"} के तौर पर दिखाया जा सकता है.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start 0..1 Date or YearlessDate तारीख की सीमा की शुरुआत की तारीख. यह तारीख, प्रॉपर्टी के टाइम ज़ोन के हिसाब से तय होती है. यह तारीख, end तारीख से पहले की या उसके बराबर होनी चाहिए. अगर start तय नहीं किया जाता है, तो तारीख की सीमा, शुरू होने की तारीख के हिसाब से हमेशा के लिए सेट हो जाती है.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end 0..1 Date or YearlessDate तारीख की सीमा खत्म होने की तारीख. यह तारीख, प्रॉपर्टी के टाइम ज़ोन के हिसाब से तय होती है. यह तारीख, start तारीख के बराबर या उसके बाद की होनी चाहिए. अगर end की जानकारी नहीं दी जाती है, तो तारीख की सीमा के खत्म होने की तारीख तय नहीं होती.
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week 0..1 string

तारीख की सीमा में शामिल किए जा सकने वाले हफ़्ते के दिन. अगर जानकारी नहीं दी जाती है, तो तारीख की सीमा में सभी दिनों को अनुमति दी जाती है. स्ट्रिंग में मौजूद हर वर्ण, एक दिन के बारे में बताता है. उदाहरण के लिए, "MTWHF" से पता चलता है कि तारीख की सीमा में हफ़्ते के दिनों को अनुमति है.

मान्य वर्ण ये हैं:

  • सोमवार के लिए M
  • मंगलवार के लिए T
  • W बुधवार के लिए
  • H गुरुवार के लिए
  • F शुक्रवार के लिए
  • S शनिवार के लिए
  • U रविवार के लिए

वर्णों का कोई भी कॉम्बिनेशन मान्य होता है.

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates यह एक या उससे ज़्यादा तारीख की सीमाओं वाला कंटेनर होता है. इससे यह तय होता है कि प्रमोशन लागू करने के लिए, चेक-आउट कब होना चाहिए.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

तारीख की वह सीमा जिसके दौरान चेक-आउट करने पर प्रमोशन लागू होगा. अगर आपको एक या उससे ज़्यादा प्रमोशन मिटाने हैं, तो इस एलिमेंट की ज़रूरत नहीं है.

YearlessDate फ़ॉर्मैट का भी इस्तेमाल किया जा सकता है.

  • अगर start या end में से किसी एक की तारीख में साल की जानकारी नहीं दी गई है, तो दोनों में साल की जानकारी नहीं दी जानी चाहिए.
  • साल के बिना तारीख की सीमाएं, नए साल के आस-पास नहीं होनी चाहिए. इसके बजाय, रेंज को तारीख की दो आस-पास की रेंज के तौर पर दिखाएं. उदाहरण के लिए, {"12-29", "01-05"} को {"12-29", "12-31"} और {"01-01", "01-05"} के तौर पर दिखाया जा सकता है.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start 0..1 Date or YearlessDate तारीख की सीमा की शुरुआत की तारीख. यह तारीख, प्रॉपर्टी के टाइम ज़ोन के हिसाब से तय होती है. यह तारीख, end तारीख से पहले की या उसके बराबर होनी चाहिए. अगर start तय नहीं किया जाता है, तो तारीख की सीमा, शुरू होने की तारीख के हिसाब से हमेशा के लिए सेट हो जाती है.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end 0..1 Date or YearlessDate तारीख की सीमा खत्म होने की तारीख. यह तारीख, प्रॉपर्टी के टाइम ज़ोन के हिसाब से तय होती है. यह तारीख, start तारीख के बराबर या उसके बाद की होनी चाहिए. अगर end की जानकारी नहीं दी जाती है, तो तारीख की सीमा के खत्म होने की तारीख तय नहीं होती.
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week 0..1 string

तारीख की सीमा में शामिल किए जा सकने वाले हफ़्ते के दिन. अगर जानकारी नहीं दी जाती है, तो तारीख की सीमा में सभी दिनों को अनुमति दी जाती है. स्ट्रिंग में मौजूद हर वर्ण, एक दिन के बारे में बताता है. उदाहरण के लिए, "MTWHF" से पता चलता है कि तारीख की सीमा में हफ़्ते के दिनों को अनुमति है.

मान्य वर्ण ये हैं:

  • सोमवार के लिए M
  • मंगलवार के लिए T
  • W बुधवार के लिए
  • H गुरुवार के लिए
  • F शुक्रवार के लिए
  • S शनिवार के लिए
  • U रविवार के लिए

वर्णों का कोई भी कॉम्बिनेशन मान्य होता है.

Promotions / HotelPromotions / Promotion / Devices 0..1 Devices उपयोगकर्ता के उन डिवाइसों की सूची के लिए कंटेनर जिन पर प्रमोशन लागू किया जा सकता है. अगर यह विकल्प चुना जाता है, तो सूची में शामिल डिवाइसों पर, ज़रूरी शर्तें पूरी करने वाले लोगों को ही छूट वाला किराया दिखाया जाता है. अगर यह जानकारी नहीं दी जाती है, तो ज़रूरी शर्तें पूरी करने वाले उपयोगकर्ताओं को किसी भी डिवाइस पर छूट वाली कीमत ऑफ़र की जाती है.
Promotions / HotelPromotions / Promotion / Devices / Device 1..3 Device यह प्रमोशन के लिए ज़रूरी उपयोगकर्ता डिवाइस के टाइप के बारे में बताता है.
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum डिवाइस का टाइप. यह ज़रूरी है कि वैल्यू desktop, tablet या mobile हो.
Promotions / HotelPromotions / Promotion / Discount 1 Discount

Discount या BestDailyDiscount में से किसी एक की जानकारी देना ज़रूरी है.

इस प्रमोशन के लिए लागू की जाने वाली छूट के बारे में बताता है.

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

percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price या fixed_price_per_night में से किसी एक की वैल्यू देना ज़रूरी है.

यह 0 से 100 के बीच की दशमलव वैल्यू होती है, जो प्रतिशत में छूट दिखाती है. यह AmountAfterTax पर लागू होता है. अगर AmountAfterTax नहीं दिया गया है, तो यह AmountBeforeTax पर लागू होता है.

उदाहरण:

  • अगर AmountAfterTax की वैल्यू 100 है और percentage की वैल्यू 20 है, तो

    प्रमोशन वाली कीमत = AmountAfterTax * (1 - प्रतिशत छूट)

    80.00 = 100 * (1 - 0.2)

  • अगर AmountBeforeTax 100 है, percentage 20 है और TaxFeeInfo में टैक्स की वैल्यू 10 दी गई है, तो

    प्रमोशन वाली कीमत = AmountBeforeTax * (1 - प्रतिशत छूट) + टैक्स

    90.00 = 100 * (1 - 0.2) + 10

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

percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price या fixed_price_per_night में से किसी एक की वैल्यू देना ज़रूरी है.

यह 0 से 100 तक की दशमलव वैल्यू होती है. इससे बुनियादी छूट का प्रतिशत पता चलता है. percentage की तरह, इसे AmountAfterTax पर लागू किया जाता है. अगर AmountAfterTax की जानकारी नहीं दी गई है, तो इसे AmountBeforeTax पर लागू किया जाता है.

percentage के उलट, इस छूट का हिसाब हमेशा मूल किराये के प्रतिशत के तौर पर लगाया जाता है. भले ही, पहले कोई भी प्रमोशन लागू किया गया हो.

उदाहरण:

  • मान लीजिए, हमारे पास दो प्रमोशन हैं, जिन्हें एक रात के लिए 100 डॉलर में रुकने पर क्रम से लागू किया जाता है. पहली छूट, सामान्य तौर पर दी जाने वाली 10% की छूट है. वहीं, दूसरी छूट, बुनियादी कीमत पर 10% की छूट है. इसके बाद, छूट वाली दर 80 होगी, क्योंकि दोनों प्रमोशन में 10 की छूट मिलती है. ध्यान दें कि अगर दूसरा प्रमोशन भी प्रतिशत के हिसाब से मिलने वाली सामान्य छूट होती, तो छूट वाली दर 81 होती. ऐसा इसलिए, क्योंकि दूसरे प्रमोशन में 90 का 10% छूट मिलती है.
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price या fixed_price_per_night में से किसी एक की वैल्यू देना ज़रूरी है.

यह एक तय रकम होती है, जिसे AmountAfterTax के तौर पर तय की गई रात के हिसाब से किराये की कुल रकम में से घटाया जाता है. अगर AmountAfterTax तय नहीं किया गया है, तो इसे रात के हिसाब से किराये की कुल रकम में से घटाया जाता है.AmountBeforeTax यह माना जाता है कि यह किराया, रात के किराये के हिसाब से तय किया गया है. अगर यह संख्या, रात के हिसाब से तय की गई दरों के कुल योग से ज़्यादा है, तो नतीजे के तौर पर मिलने वाली वैल्यू शून्य होगी.

उदाहरण:

  • अगर हमें एक रात के लिए कमरे का किराया तय करना है, जहां AmountBeforeTax 90 है, AmountAfterTax 100 है, और fixed_amount 20 है, तो

    प्रमोशन वाली कीमत = AmountAfterTax - तय छूट

    80.00 = 100 - 20

  • अगर हमें एक रात के लिए ठहरने का किराया तय करना है, जिसमें AmountBeforeTax 100 है, fixed_amount 20 है, और TaxFeeInfo में 8% टैक्स बताया गया है, तो

    प्रमोशन की दर = (AmountBeforeTax - तय की गई छूट) * (1 + प्रतिशत में टैक्स)

    86.40 = (100 - 20) * 1.08

  • अगर हमें एक रात के लिए ठहरने का किराया तय करना है, जिसमें AmountBeforeTax 50, fixed_amount 60, और TaxFeeInfo में टैक्स 10 बताया गया है, तो

    प्रमोशन वाली दर = (AmountBeforeTax - तय की गई छूट) * टैक्स

    10.00 = 0 + 10

  • अगर हमें तीन रात के लिए रुकने की कीमत तय करनी है, जहां AmountAfterTax की वैल्यू 100, 110, और 120 है; और fixed_amount की वैल्यू 150 है, तो

    प्रमोशन की दर = sum(AmountAfterTax) - (तय की गई छूट)

    180.00 = (100 + 110 + 120) - 150

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

percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price या fixed_price_per_night में से किसी एक की वैल्यू देना ज़रूरी है.

AmountAfterTax हर रात के किराये पर तय की गई छूट (या अगर applied_nights की जानकारी दी गई है, तो सबसे सस्ता N). अगर AmountAfterTax नहीं दिया गया है, तो इसे AmountBeforeTax पर लागू किया जाता है. यह माना जाता है कि यह किराया, रात के किराये के हिसाब से तय किया गया है. अगर fixed_amount_per_night, एक रात के किराये से ज़्यादा है, तो एक रात का किराया शून्य हो जाएगा. छूट की वजह से, एक रात का किराया नेगेटिव नहीं हो सकता.

उदाहरण:

  • अगर हमें तीन रात के लिए रुकने का किराया तय करना है, जहां AmountAfterTax की वैल्यू 100, 110, और 120 है; और fixed_amount_per_night की वैल्यू 10 है, तो

    प्रमोशन की दर = sum(AmountBeforeTax - तय की गई रकम छूट)

    300.00 = ((100 - 10) + (110 - 10) + (120 - 10))

  • अगर हमें तीन रात के लिए रुकने का किराया तय करना है, जहां AmountAfterTax की वैल्यू 10, 50, और 100 है और fixed_amount_per_night की वैल्यू 20 है, तो

    प्रमोशन की दर = sum(AmountAfterTax - तय की गई रकम छूट)

    110.00 = (0 + (50 - 20) + (100 - 20))

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

percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price या fixed_price_per_night में से किसी एक की वैल्यू देना ज़रूरी है.

अगर AmountAfterTax के लिए एक रात का किराया तय किया जाता है, तो इससे टैक्स और शुल्क के साथ ठहरने का किराया, तय की गई वैल्यू पर सेट हो जाता है. अगर AmountBeforeTax की वैल्यू दी गई है, तो AmountAfterTax की वैल्यू दी गई है या नहीं, इससे कोई फ़र्क़ नहीं पड़ता. इससे, ठहरने के लिए टैक्स से पहले की कीमत, दी गई वैल्यू पर सेट हो जाती है. यह माना जाता है कि यह किराया, एक रात के किराये के लिए इस्तेमाल की गई मुद्रा में ही है.

अगर AmountAfterTax को टैक्स के प्रतिशत के तौर पर दिखाना है, तो AmountBeforeTax के लिए तय की गई कीमत सेट करने से, टैक्स और शुल्क की गलत जानकारी मिल सकती है. आम तौर पर, प्रॉपर्टी के टैक्स और शुल्क के बारे में बताने के लिए, TaxFeeInfo का इस्तेमाल करने का सुझाव दिया जाता है.

उदाहरण:

  • अगर हमें एक रात के लिए ठहरने की कीमत तय करनी है, तो AmountBeforeTax 90 है, AmountAfterTax 100 है, और fixed_price 80 है. ऐसे में, प्रमोशन की दर 80 होगी.
  • अगर हमें एक रात के लिए ठहरने का किराया तय करना है, जहां AmountBeforeTax 100 है, fixed_amount 80 है, और TaxFeeInfo में 8% टैक्स बताया गया है, तो

    प्रमोशन की अवधि के दौरान कीमत = तय की गई कीमत * (1 + प्रतिशत में टैक्स)

    86.40 = 80 * 1.08

  • अगर हमें तीन रात के लिए रुकने का किराया तय करना है, जहां AmountAfterTax की वैल्यू 100, 110, और 120 है; और fixed_amount की वैल्यू 300 है, तो

    प्रमोशन रेट = 300

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

percentage, percentage_of_base, fixed_amount, fixed_amount_per_night, fixed_price या fixed_price_per_night में से किसी एक की वैल्यू देना ज़रूरी है.

अगर AmountAfterTax रातों के लिए किराया तय किया जाता है, तो यह पैरामीटर, ठहरने की हर रात के लिए किराया सेट करता है. इसमें टैक्स और शुल्क भी शामिल होते हैं. अगर AmountBeforeTax की वैल्यू दी गई है, तो AmountAfterTax की वैल्यू दी गई है या नहीं, इससे कोई फ़र्क़ नहीं पड़ता. इससे, टैक्स से पहले का किराया, ठहरने की हर रात के लिए तय की गई वैल्यू पर सेट हो जाता है. यह मान लिया जाता है कि यह मुद्रा, एक रात के किराये वाली मुद्रा के जैसी ही है.

अगर AmountAfterTax को टैक्स के प्रतिशत के तौर पर दिखाना है, तो AmountBeforeTax के लिए तय की गई कीमत सेट करने से, टैक्स और शुल्क की गलत जानकारी मिल सकती है. आम तौर पर, प्रॉपर्टी के टैक्स और शुल्क के बारे में बताने के लिए, TaxFeeInfo का इस्तेमाल करने का सुझाव दिया जाता है.

अगर applied_nights एट्रिब्यूट की वैल्यू दी गई है, तो नई कीमत, सबसे कम कीमत वाली N रातों पर लागू होगी.

उदाहरण:

  • अगर हमें दो रात के लिए ठहरने की कीमत तय करनी है, तो AmountBeforeTax की वैल्यू 90, 90 है; AmountAfterTax की वैल्यू 100, 100 है; और fixed_price की वैल्यू 80 है. ऐसे में, प्रमोशन की दर 80 + 80 = 160 होगी.
  • अगर हमें दो रातों के लिए ठहरने का किराया तय करना है, तो यहां AmountBeforeTax की वैल्यू 100, 100 है; fixed_amount की वैल्यू 80 है; और TaxFeeInfo में टैक्स की दर 8% बताई गई है. ऐसे में, प्रमोशन की दर (80 + 80) * 1.08 = 172.8 होगी.
  • अगर हमें तीन रात के लिए ठहरने की कीमत तय करनी है, तो मान लें कि AmountAfterTax की वैल्यू 100, 110, और 120 है. साथ ही, fixed_amount की वैल्यू 110 है. ऐसे में, प्रमोशन की दर 110 * 3 = 330 होगी.
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

इसका इस्तेमाल सिर्फ़ percentage या fixed_amount_per_night के साथ किया जाना चाहिए.

छूट वाली रातों की संख्या. यह संख्या, सबसे कम कीमत वाली रात से शुरू होती है. यह 1 से 99 के बीच का पूर्णांक होना चाहिए. अगर यह जानकारी नहीं दी जाती है, तो सभी रातों के लिए छूट लागू होती है.

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights इससे, ठहरने की कम से कम अवधि पूरी होने पर, कुछ रातों के लिए छूट तय की जाती है. अगर इस एलिमेंट का इस्तेमाल किया जाता है, तो पैरंट Discount एलिमेंट के एट्रिब्यूट इस्तेमाल करने की अनुमति नहीं है.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights 1 integer

छूट लागू करने के लिए, ज़रूरी रातों की संख्या. हर छूट, ठहरने की रातों के अलग-अलग सेगमेंट पर लागू होती है.

उदाहरण के लिए, अगर 10 रातों के लिए रुकने पर stay_nights की वैल्यू 4 है और repeats की वैल्यू सही है, तो रुकने की रात के दो सेगमेंट होंगे: पहली से चौथी रात और पांचवीं से आठवीं रात. नौवीं और दसवीं रात, रुकने की रात के सेगमेंट का हिस्सा नहीं हैं.

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer ठहरने की रातों के हर सेगमेंट में, छूट वाली रातों की संख्या.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage 1 float छूट वाली रातों पर लागू होने वाली छूट. अगर यह वैल्यू 50 है, तो चुनी गई हर रात के लिए 50% की छूट मिलेगी.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection 1 string यह cheapest या last में से कोई एक होना चाहिए. अगर last है, तो ठहरने की अवधि के आखिरी हिस्से में रातों के लिए छूट दी जाती है. अगर cheapest, तो ठहरने की रातों के सेगमेंट में सबसे सस्ती रातों पर छूट दी जाती है.
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

क्या छूट को एक से ज़्यादा रात के ठहरने के सेगमेंट पर लागू किया जा सकता है. अगर false है, तो यात्रा की योजना की शुरुआत में होटल में ठहरने की रातों के सेगमेंट पर ही छूट मिलेगी. अगर true है, तो ठहरने की रातों के किसी भी सेगमेंट पर छूट दी जाती है.

उदाहरण के लिए, अगर stay_nights की वैल्यू 4 है और यात्रा की अवधि 10 रातें हैं, तो अगर repeats की वैल्यू true है, तो दो सेगमेंट पर छूट मिलेगी (पहली से चौथी रात और पांचवीं से आठवीं रात); लेकिन, अगर repeats की वैल्यू false है, तो सिर्फ़ एक सेगमेंट पर छूट मिलेगी (पहली से चौथी रात).

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer इस प्रमोशन को रैंक असाइन करता है और इसे रैंक किए गए प्रमोशन के तौर पर चुनने का विकल्प देता है. इसमें, सिर्फ़ सबसे कम रैंक वाले प्रमोशन को लागू करने के लिए चुना जाता है. वैल्यू, 1 से 99 के बीच होनी चाहिए. अगर कई प्रमोशन की रैंक एक जैसी है, तो उनमें से किसी एक को चुनकर लागू कर दिया जाता है.
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Discount या BestDailyDiscount में से किसी एक की जानकारी देना ज़रूरी है.

इसमें रोज़ाना की छूट के बारे में बताया जाता है. यह छूट, होटल में एक रात के लिए ठहरने पर लागू हो सकती है. यह Discount से अलग है. Discount में, पूरी अवधि के लिए छूट लागू होती है.

हर प्रॉपर्टी के लिए, प्रमोशन का एक ऐसा ग्रुप हो सकता है जिसे "हर दिन के लिए सबसे अच्छा" माना जाता है. इसका मतलब है कि हर रात के लिए, "सबसे कम किराये पर हर दिन" वाला एक ऐसा प्रमोशन चुना जाता है जो ज़रूरी शर्तें पूरी करता हो और उस रात के लिए सबसे ज़्यादा छूट देता हो. साथ ही, इसे लागू किया जा सकता है.

Stacking को BestDailyDiscount के साथ तय किया जा सकता है. इसे base या none पर सेट किया जाना चाहिए. "हर दिन के हिसाब से सबसे अच्छी" छूट के तहत, हर रात के लिए सबसे ज़्यादा छूट देने वाले ऑफ़र को एक साथ जोड़ दिया जाता है.इसके बाद, इसे ठहरने की सुविधा पर मिलने वाली एक ही छूट (यानी कि Discount) के तौर पर दिखाया जाता है. हालांकि, ऐसा कॉन्फ़िगर किए गए स्टैकिंग टाइप के हिसाब से किया जाता है. इस छूट की तुलना, ज़रूरी शर्तें पूरी करने वाले अन्य <Discount> प्रमोशन से की जाती है. साथ ही, इसे उनके साथ इस्तेमाल किया जा सकता है. इससे यह पता लगाया जा सकता है कि सबसे ज़्यादा छूट किस प्रमोशन या प्रमोशन के कॉम्बिनेशन से मिल रही है. BestDailyDiscount या Discount में से किसी एक को चुना जाता है. इनमें से जो भी कम कीमत वाला होगा उसे base स्टैकिंग टाइप के लिए चुना जाएगा और लागू किया जाएगा.

इस तरह की छूट के साथ StayDates की जानकारी दी जा सकती है, लेकिन application को overlap पर सेट करना होगा

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

percentage, fixed_amount या fixed_price में से सिर्फ़ एक की ज़रूरत है.

यह 0 से 100 के बीच की दशमलव वैल्यू होती है, जो प्रतिशत में छूट दिखाती है. यह AmountAfterTax पर लागू होता है. अगर AmountAfterTax नहीं दिया गया है, तो यह AmountBeforeTax पर लागू होता है.

उदाहरण:

  • अगर एक रात के लिए AmountAfterTax का किराया 100 है और percentage 20 है, तो

    प्रमोशन वाली कीमत = AmountAfterTax * (1 - प्रतिशत छूट)

    80.00 = 100 * (1 - 0.2)

  • अगर एक रात के लिए AmountBeforeTax 100 है, percentage 20 है और TaxFeeInfo में टैक्स की जानकारी 10 दी गई है, तो

    प्रमोशन वाली कीमत = AmountBeforeTax * (1 - प्रतिशत छूट) + टैक्स

    90.00 = 100 * (1 - 0.2) + 10

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

percentage, fixed_amount या fixed_price में से सिर्फ़ एक की ज़रूरत है.

यह एक तय रकम होती है, जिसे AmountAfterTax एक रात के किराये में से घटाया जाता है. अगर AmountAfterTax नहीं दिया गया है, तो AmountBeforeTax एक रात के किराये में से घटाया जाता है. यह माना जाता है कि यह किराया, रात के किराये के हिसाब से तय किया गया है. अगर यह संख्या, रात के हिसाब से तय की गई दरों के कुल योग से ज़्यादा है, तो नतीजे के तौर पर मिलने वाली वैल्यू शून्य होगी.

उदाहरण:

  • अगर एक रात के लिए AmountBeforeTax 90 है, AmountAfterTax 100 है, और fixed_amount 20 है, तो

    प्रमोशन वाली कीमत = AmountAfterTax - तय छूट

    80.00 = 100 - 20

  • अगर एक रात का किराया AmountBeforeTax 100 है, fixed_amount 20 है, और TaxFeeInfo एट्रिब्यूट की वैल्यू 8% टैक्स है, तो

    प्रमोशन की दर = (AmountBeforeTax - तय की गई छूट) * (1 + प्रतिशत में टैक्स)

    86.40 = (100 - 20) * 1.08

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

percentage, fixed_amount या fixed_price में से सिर्फ़ एक की ज़रूरत है.

अगर AmountAfterTax के लिए रात के हिसाब से किराया तय किया गया है, तो यह टैक्स और शुल्क के साथ, ठहरने की रात के लिए किराया तय करता है. यह किराया, तय की गई वैल्यू के बराबर होता है. अगर AmountBeforeTax की वैल्यू दी गई है, तो AmountAfterTax की वैल्यू दी गई है या नहीं, इससे कोई फ़र्क़ नहीं पड़ता. इससे, ठहरने के लिए टैक्स से पहले की कीमत, दी गई वैल्यू पर सेट हो जाती है. यह माना जाता है कि यह किराया, एक रात के किराये के लिए इस्तेमाल की गई मुद्रा में ही है.

उदाहरण:

  • अगर एक रात के लिए AmountBeforeTax 90 है, AmountAfterTax 100 है, और fixed_price 80 है, तो प्रमोशन की दर 80 होगी.
  • अगर एक रात के लिए AmountBeforeTax 100 है, fixed_amount 80 है, और TaxFeeInfo में 8% टैक्स बताया गया है, तो

    प्रमोशन की अवधि के दौरान कीमत = तय की गई कीमत * (1 + प्रतिशत में टैक्स)

    86.40 = 80 * 1.08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount इससे उन कमरों की संख्या पर पाबंदियां तय होती हैं जो इस प्रमोशन को लागू करने के लिए उपलब्ध होने चाहिए. छूट सिर्फ़ उन रातों पर लागू होती है जो शर्त पूरी करती हैं. fixed_amount से मिली छूट के साथ इस्तेमाल नहीं किया जा सकता. ध्यान दें कि उपलब्ध कमरों की संख्या, OTA_HotelInvCountNotifRQ (InvCount) या OTA_HotelAvailNotifRQ (BookingLimit) में से किसी एक के साथ दी जाती है.
Promotions / HotelPromotions / Promotion / InventoryCount / @min 0..1 integer कम से कम इतने कमरे उपलब्ध होने चाहिए, ताकि प्रमोशन को एक रात के किराये पर लागू किया जा सके. अगर इसके बारे में जानकारी नहीं दी गई है, तो कोई न्यूनतम सीमा नहीं होती.
Promotions / HotelPromotions / Promotion / InventoryCount / @max 0..1 integer प्रमोशन को रात के किराये पर लागू करने के लिए, ज़्यादा से ज़्यादा कितने कमरे उपलब्ध होने चाहिए. अगर इसके बारे में जानकारी नहीं दी गई है, तो कोई ज़्यादा से ज़्यादा सीमा नहीं होती.
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay इससे यह तय किया जाता है कि किसी व्यक्ति को होटल में कम से कम कितने दिन रुकना होगा, ताकि उसे यह प्रमोशन मिल सके. अगर ठहरने की अवधि, कम से कम और ज़्यादा से ज़्यादा अवधि की सीमा से बाहर है, तो प्रमोशन लागू नहीं होता.
Promotions / HotelPromotions / Promotion / LengthOfStay / @min 0..1 integer प्रमोशन लागू करने के लिए, कम से कम कितनी रातों तक ठहरने की अनुमति है. अगर इसके बारे में जानकारी नहीं दी गई है, तो कोई भी कम से कम वैल्यू नहीं होती.
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer प्रमोशन लागू करने के लिए, होटल में ठहरने की ज़्यादा से ज़्यादा रातों की संख्या. अगर इसके बारे में जानकारी नहीं दी गई है, तो कोई सीमा नहीं होती.
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

यह सदस्यता के लिए तय किए गए शुल्क से जुड़े नियम का कंटेनर है. यह नियम, छूट से जुड़े यूज़र इंटरफ़ेस (यूआई) को ट्रिगर करता है.

इस एलिमेंट की वैल्यू तब तक सबमिट नहीं करनी चाहिए, जब तक <Discount> की वैल्यू भी सबमिट न की गई हो.

Promotions / HotelPromotions / Promotion / MembershipRateRule / @id 1 string

सदस्यता कार्यक्रम से जुड़े किराये के नियम का आईडी.

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount इससे, कमरे के रोज़ के किराये का कम से कम योग तय किया जाता है. इसके लिए, AmountBeforeTax या AmountAfterTax में से ज़्यादा वैल्यू का इस्तेमाल किया जाता है. प्रमोशन लागू करने के लिए, इस योग से ज़्यादा वैल्यू होनी चाहिए.
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount 1 integer वह वैल्यू जिसे पार करने पर प्रमोशन लागू होगा.
Promotions / HotelPromotions / Promotion / Occupancy 0..1 Occupancy इससे यह तय किया जाता है कि इस प्रमोशन को किन लोगों के लिए लागू किया गया है. कमरों में मेहमानों की संख्या, कम से कम और ज़्यादा से ज़्यादा सीमा से बाहर होने पर प्रमोशन लागू नहीं होता.

प्रमोशन, यात्रा की योजना के लिए तय किए गए किराये पर लागू होते हैं. हर व्यक्ति के हिसाब से ज़्यादा से ज़्यादा छूट सेट नहीं की जा सकती.

Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer किराये में छूट पाने के लिए, उपयोगकर्ता की ओर से बताई गई ऑक्यूपेंसी कम से कम इतनी होनी चाहिए.
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer छूट लागू करने के लिए, उपयोगकर्ता की ओर से बताई गई ऑक्यूपेंसी, इस वैल्यू से ज़्यादा नहीं होनी चाहिए.
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans यह उन रेट प्लान की सूची के लिए कंटेनर है जिन पर प्रमोशन लागू होता है. अगर <RatePlans> एट्रिब्यूट की वैल्यू नहीं दी गई है, तो प्रमोशन सभी किराया प्लान पर लागू होगा.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan 1..n RatePlan इससे किसी रेट प्लान के बारे में पता चलता है. किराया प्लान, पैकेज, किराये, और उपलब्धता के कॉम्बिनेशन से तय होता है. यह जानकारी, लेन-देन (प्रॉपर्टी का डेटा), OTA_HotelRateAmountNotifRQ, और OTA_HotelAvailNotifRQ मैसेज में दी जाती है. साथ ही, इसे PackageID से पहचाना जाता है.
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string किराया प्लान के लिए यूनीक आइडेंटिफ़ायर. यह वैल्यू, लेन-देन (प्रॉपर्टी का डेटा) मैसेज में मौजूद <PackageData> में PackageID वैल्यू पर मैप करती है. साथ ही, यह <OTA_HotelRateAmountNotifRQ> और <OTA_HotelAvailNotifRQ>, दोनों मैसेज में <StatusApplicationControl> में मौजूद RatePlanCode एट्रिब्यूट पर मैप करती है. ज़्यादा से ज़्यादा 50 वर्ण इस्तेमाल किए जा सकते हैं.
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes कमरे के टाइप की सूची के लिए कंटेनर. इस सूची में वे टाइप शामिल होते हैं जिन पर प्रमोशन लागू होता है. प्रमोशन, हर <RoomType> पर लागू होता है. अगर <RoomTypes> एट्रिब्यूट की वैल्यू नहीं दी गई है, तो प्रमोशन सभी कमरों पर लागू होगा.
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType इससे कमरे का टाइप पता चलता है. कमरे के टाइप को Transaction (Property Data) मैसेज में मौजूद <RoomData> एलिमेंट में तय किया जाता है. साथ ही, इसे इसकी <RoomID> वैल्यू का इस्तेमाल करके रेफ़र किया जाता है. (इसकी <RoomID> वैल्यू का रेफ़रंस, OTA_HotelRateAmountNotifRQ मैसेज में InvTypeCode एट्रिब्यूट से भी दिया जाता है.)
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string इन्वेंट्री (कमरे का टाइप) के लिए यूनीक आइडेंटिफ़ायर. यह वैल्यू, लेन-देन (प्रॉपर्टी डेटा) मैसेज में <RoomID> पर मैप करती है. ज़्यादा से ज़्यादा 50 वर्ण इस्तेमाल किए जा सकते हैं.
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking इससे पता चलता है कि प्रमोशन को कैसे एक साथ इस्तेमाल किया जा सकता है. अगर "type" एट्रिब्यूट की वैल्यू नहीं दी जाती है, तो इसे base माना जाता है.
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

इस सेटिंग के आधार पर, एक ही किराये पर कई प्रमोशन लागू किए जा सकते हैं:

  • any: इसे किसी भी अन्य प्रमोशन (none को छोड़कर) के साथ इस्तेमाल किया जा सकता है. हालांकि, प्रमोशन किस क्रम में लागू होंगे, इसकी कोई गारंटी नहीं है.
  • base: ज़रूरी शर्तें पूरी करने वाले सबसे अच्छे base प्रमोशन को चुना जाता है. साथ ही, इसे अन्य प्रमोशन से पहले लागू किया जाता है. इसका नाम पहले base_only था.
  • second: ज़रूरी शर्तें पूरी करने वाले सबसे अच्छे second प्रमोशन को, base प्रमोशन (अगर लागू हो) के बाद और any प्रमोशन से पहले चुना जाता है और लागू किया जाता है.
  • none: इसे अन्य प्रमोशन के साथ नहीं जोड़ा जा सकता.

अनुमति वाले कॉम्बिनेशन में से, प्रमोशन का वह सेट लागू किया जाता है जिससे सबसे ज़्यादा छूट मिलती है.

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates यह एक या उससे ज़्यादा तारीख की सीमाओं वाला कंटेनर होता है. इससे यह तय होता है कि प्रमोशन कैसे लागू किया जाएगा. जैसे, सीज़नल छूट को शामिल करने के लिए.
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

इससे पता चलता है कि प्रमोशन को कैसे लागू किया जाना चाहिए.

मान्य मान हैं:

  • all: अगर यात्रा कार्यक्रम की सभी तारीखें, ठहरने की तारीखों से मेल खाती हैं, तो यात्रा कार्यक्रम में हर रात के लिए प्रमोशन लागू होता है.
  • any: अगर यात्रा की किसी तारीख के साथ, ठहरने की तारीखों की सीमा में आने वाली कोई तारीख मेल खाती है, तो यात्रा की सभी रातों पर प्रमोशन लागू होता है.
  • overlap: प्रमोशन सिर्फ़ उन रातों पर लागू होता है जो ठहरने की तारीखों की सीमा में आती हैं.

इस एट्रिब्यूट की वैल्यू हमेशा दी जानी चाहिए.

  • अगर <Discount> में percentage तय किया गया है और application को all या any पर सेट किया गया है, तो छूट पूरे स्टे के किराये के प्रतिशत के तौर पर लागू होती है.
  • अगर <Discount> की वैल्यू percentage है और application की वैल्यू overlap पर सेट है, तो छूट, ओवरलैप होने वाली रातों के लिए हर रात के किराये के प्रतिशत के तौर पर लागू होती है.
  • <Discount> में fixed_amount तय करना और application को overlap पर सेट करना, अमान्य कॉम्बिनेशन है.
  • <FreeNights> फ़ंक्शन, application की सभी वैल्यू के साथ काम करता है. ध्यान दें कि overlap के लिए, छूट पाने की ज़रूरी शर्तों को पूरा करने के लिए, सिर्फ़ ओवरलैप होने वाली रातों के ठहरने को शामिल किया जाता है.
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

तारीख की वह सीमा जिसमें प्रमोशन लागू करना है.

YearlessDate फ़ॉर्मैट का भी इस्तेमाल किया जा सकता है.

  • अगर start या end में से किसी एक में साल की जानकारी नहीं दी गई है, तो दोनों में साल की जानकारी नहीं दी जानी चाहिए.
  • साल के बिना तारीख की सीमाएं, नए साल के आस-पास नहीं होनी चाहिए. इसके बजाय, रेंज को तारीख की दो आस-पास की रेंज के तौर पर दिखाएं. उदाहरण के लिए, {"12-29", "01-05"} को {"12-29", "12-31"} और {"01-01", "01-05"} के तौर पर दिखाया जा सकता है.

अगर आपको हफ़्ते के कुछ दिनों के लिए StayDates रेंज सेट करनी है, तो आपको start तारीख को मौजूदा तारीख के तौर पर सेट करना चाहिए. साथ ही, end को सेट नहीं करना चाहिए, ताकि प्रमोशन की समयसीमा खत्म न हो.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate तारीख की सीमा की शुरुआत की तारीख. यह तारीख, प्रॉपर्टी के टाइम ज़ोन के हिसाब से तय होती है. यह तारीख, end तारीख से पहले की या उसके बराबर होनी चाहिए. अगर start तय नहीं किया जाता है, तो तारीख की सीमा, शुरू होने की तारीख के हिसाब से हमेशा के लिए सेट हो जाती है.

अगर end एट्रिब्यूट की वैल्यू नहीं दी गई है, तो आपको start एट्रिब्यूट की वैल्यू देनी होगी.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate तारीख की सीमा खत्म होने की तारीख. यह तारीख, प्रॉपर्टी के टाइम ज़ोन के हिसाब से तय होती है. यह तारीख, start तारीख के बराबर या उसके बाद की होनी चाहिए. अगर end तय नहीं की गई है, तो तारीख की सीमा start से आगे तक के लिए तय नहीं की जाती.

अगर start एट्रिब्यूट की वैल्यू नहीं दी गई है, तो आपको end एट्रिब्यूट की वैल्यू देनी होगी.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week 0..1 string

तारीख की सीमा में शामिल किए जा सकने वाले हफ़्ते के दिन. अगर जानकारी नहीं दी जाती है, तो तारीख की सीमा में सभी दिनों को अनुमति दी जाती है. स्ट्रिंग में मौजूद हर वर्ण, एक दिन के बारे में बताता है. उदाहरण के लिए, "MTWHF" से पता चलता है कि तारीख की सीमा में हफ़्ते के दिनों को अनुमति है.

मान्य वर्ण ये हैं:

  • सोमवार के लिए M
  • मंगलवार के लिए T
  • W बुधवार के लिए
  • H गुरुवार के लिए
  • F शुक्रवार के लिए
  • S शनिवार के लिए
  • U रविवार के लिए

वर्णों का कोई भी कॉम्बिनेशन मान्य होता है.

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries यह कंटेनर, उन देशों की सूची दिखाता है जहां रहने वाले लोग प्रमोशन देख सकते हैं. अगर यह जानकारी दी जाती है, तो सूची में शामिल देशों में रहने वाले सिर्फ़ ज़रूरी शर्तें पूरी करने वाले लोगों को छूट वाली कीमत पर सदस्यता खरीदने का ऑफ़र दिया जाता है. अगर यह जानकारी नहीं दी जाती है, तो किसी भी देश में ज़रूरी शर्तें पूरी करने वाले लोगों को छूट वाली कीमत ऑफ़र की जाती है.
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum UserCountries स्पेसिफ़िकेशन का टाइप.

मान्य वैल्यू include और exclude हैं.

अगर UserCountries type को include के तौर पर सेट किया गया है, तो प्रमोशन, सूची में दिए गए देशों के उपयोगकर्ताओं पर लागू होता है.

अगर UserCountries type की वैल्यू exclude है, तो प्रमोशन उन देशों के लोगों पर लागू होगा जो सूची में शामिल नहीं हैं.

अगर UserCountries type को सेट नहीं किया जाता है, तो इसे include के तौर पर माना जाता है. साथ ही, प्रमोशन को सूची में शामिल देशों के उपयोगकर्ताओं पर लागू किया जाता है.

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country इससे उस देश के बारे में पता चलता है जहां के लोग प्रमोशन का फ़ायदा पा सकते हैं.
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string CLDR देश का कोड, जैसे कि DE या FR. ध्यान दें कि कुछ देशों के लिए, CLDR देश का कोड और दो अक्षरों वाला आईएसओ देश का कोड एक जैसा नहीं होता. साथ ही, CLDR क्षेत्र के कोड इस्तेमाल नहीं किए जा सकते.

उदाहरण

हर प्रॉपर्टी के लिए, ज़्यादा से ज़्यादा 500 प्रमोशन बनाए जा सकते हैं. किसी प्रॉपर्टी से प्रमोशन हटाने के लिए, "एक प्रमोशन मिटाना" उदाहरण देखें.

बेसिक मैसेज

इस उदाहरण में, एक सामान्य Promotions मैसेज दिखाया गया है:

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


इन्वेंट्री की स्थिति

यहां दिए गए उदाहरण में, शिपिंग में लगने वाले समय के करीब इन्वेंट्री ज़्यादा होने पर छूट देने का तरीका बताया गया है:

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


एक प्रमोशन मिटाना

यहां दिए गए उदाहरण में, किसी प्रॉपर्टी के लिए एक प्रमोशन मिटाने का तरीका बताया गया है:

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

सभी प्रमोशन मिटाएं

यहां दिए गए उदाहरण में, किसी प्रॉपर्टी के सभी प्रमोशन मिटाने का तरीका बताया गया है:

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



सभी प्रमोशन ओवरले करें

यहां दिए गए उदाहरण में, एक या उससे ज़्यादा नए प्रमोशन वाली प्रॉपर्टी के लिए, <HotelPromotions> को ओवरले करने का तरीका बताया गया है. action="overlay" होने पर, सेव किए गए सभी प्रमोशन मिटा दिए जाते हैं. इसके बाद, मौजूदा मैसेज में बताए गए प्रमोशन सेव किए जाते हैं:

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

स्टैकिंग के तीन अलग-अलग टाइप

यहां दिए गए उदाहरण में, तीन अलग-अलग प्रमोशन (base, second, any) लागू किए गए हैं. ध्यान दें कि none प्रमोशन लागू नहीं किया गया है, क्योंकि अन्य प्रमोशन में ज़्यादा छूट मिल रही है. अगर मूल कीमत 10,000 रुपये थी, तो छूट वाली कीमत 7,290 रुपये होगी.

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


कोई स्टैकिंग टाइप नहीं

यहां दिए गए उदाहरण में, none प्रमोशन का इस्तेमाल किया गया है, क्योंकि अन्य प्रमोशन के कॉम्बिनेशन से कम छूट मिलती है. अगर मूल कीमत 10,000 रुपये थी, तो छूट के बाद कीमत 7,500 रुपये होगी.

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



बुकिंग विंडो की अवधि की सीमाएं

इस उदाहरण में, एक ऐसा मामला दिखाया गया है जहां BookingWindow एलिमेंट का इस्तेमाल किया गया है. इसमें, आईएसओ 8601 अवधि के टाइप के तौर पर, इसकी शुरुआत और खत्म होने की सीमाएं तय की गई हैं. बुकिंग विंडो से जुड़ी इस पाबंदी के तहत, मेहमान को पहुंचने से एक दिन पहले शाम 6 बजे तक बुकिंग करनी होगी. साथ ही, उसे पहुंचने से दो दिन पहले दोपहर 12 बजे के बाद बुकिंग करनी होगी.

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

यहां दिए गए उदाहरण में, BookingDates एलिमेंट का इस्तेमाल start और end एट्रिब्यूट के साथ DateTime टाइप के तौर पर किया गया है. बुकिंग की तारीख से जुड़ी इस पाबंदी के मुताबिक, बुकिंग 1 जुलाई, 2020 को सुबह 6:30 बजे से 2 जुलाई, 2020 को शाम 6:45 बजे के बीच होनी चाहिए.

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


साल के बिना तारीख की सीमाएं

यहां दिए गए उदाहरण में, एक ऐसा मामला दिखाया गया है जिसमें CheckInDates एलिमेंट में ऐसे DateRanges शामिल हैं जिनमें साल के बिना start और end फ़ील्ड मौजूद हैं. इस उदाहरण में, प्रमोशन 29/12 से 2/1 के बीच चेक-इन करने की तारीखों पर लागू होता है. इससे कोई फ़र्क़ नहीं पड़ता कि साल कौन सा है. साल के बिना दी गई ऐसी तारीख की सीमाएं अमान्य होती हैं जो नए साल की सीमा को पार करती हैं. इसलिए, DateRange को दो आस-पास की तारीख की सीमाओं के तौर पर दिखाया जाता है.

<?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 छूट

यहां दिए गए उदाहरण में, बुकिंग की तारीखों की तय सीमा के दौरान चार रातों के लिए रुकने पर, दो रातों के लिए 50% की छूट दी गई है. अगर यात्रा दस रातों की है, तो चार रातों के लिए 50% की छूट मिलेगी.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
        <DateRange start="2022-01-01" end="2022-05-31"/>
      </BookingDates>
      <Discount>
        <FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
      </Discount>
    </Promotion>
  </HotelPromotions>
</Promotions>

अगले उदाहरण में, ठहरने की तारीखों की तय की गई रेंज के हिसाब से, तीन रातों के लिए ठहरने पर एक रात के किराये में 50% की छूट दी गई है. छूट पाने के लिए, सिर्फ़ उन रातों को गिना जाता है जो एक-दूसरे से ओवरलैप होती हैं. इस यात्रा के लिए, 2022-01-01 को चेक-इन और 2022-01-07 को चेक-आउट करना है. इसलिए, होटल में ठहरने की ज़रूरी रातें और छूट इस तरह लागू होंगी.

  • 2022-01-01 (ठहरना)
  • 2022-01-02 (ठहरना)
  • 2022-01-03
  • 2022-01-04 (छूट वाली कीमत)
  • 2022-01-05 (ठहरने की अवधि)
  • 2022-01-06 (stay)
<?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>


रैंक के हिसाब से चुनने की सुविधा

यहां दिए गए उदाहरण में, दो छूट दी गई हैं. एक 20% की छूट है और दूसरी 15% की. आकलन के दौरान, सिर्फ़ 15% की छूट लागू की जाती है, क्योंकि इसकी रैंक कम है.

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

यहां दिए गए उदाहरण में, दो रात ठहरने पर छूट दी गई है. इसके लिए, Discount के साथ BestDailyDiscount को स्टैक किया गया है.

<?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 अप्रैल, 2023 से 2 मई, 2023 तक दो रातें रुकना है किराये का हिसाब लगाने के लिए, सबसे पहले हर दिन के लिए सबसे ज़्यादा छूट वाले कॉम्बिनेशन का पता लगाया जाता है.

पहली रात के लिए, "सामान्य" प्रमोशन ही मान्य है. इसमें 20% की छूट तय है.

दूसरी रात के लिए, "मई" प्रमोशन में "सामान्य" छूट की तुलना में ज़्यादा छूट दी गई है. इसलिए, "may" चुनने पर, तय की गई छूट की रकम 50 है.

इसके बाद, ठहरने के लिए "फ़िएस्टा" प्रमोशन के तहत, हर रात के लिए 5 डॉलर या कुल 10 डॉलर की छूट मिलती है. इसे सबसे ज़्यादा रोज़ाना छूट वाले ऑफ़र के साथ स्टैक किया जा सकता है, क्योंकि "फ़िएस्टा" के लिए स्टैक करने का टाइप any पर सेट है. अगर इसे base पर सेट किया जाता है, तो हर दिन मिलने वाली सबसे अच्छी छूट या "फ़िएस्टा" छूट का कॉम्बिनेशन ही लागू होता है. ज़्यादा जानकारी के लिए, Stacking का ब्यौरा देखें.

`कुल मिलाकर, होटल में ठहरने के किराये पर 20 + 50 + 10 = 80 रुपये की छूट मिलती है.

जवाब

सिंटैक्स

PromotionsResponse मैसेज में इस सिंटैक्स का इस्तेमाल किया जाता है:

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

तत्व और एट्रिब्यूट

PromotionsResponse मैसेज में ये एलिमेंट और एट्रिब्यूट शामिल होते हैं:

Element / @Attribute आवृत्तियां टाइप ब्यौरा
PromotionsResponse 1 Complex element यह रूट एलिमेंट है. इससे पता चलता है कि प्रमोशन का अनुरोध करने वाला मैसेज मिला है या नहीं. अगर मिला है, तो उसमें कोई समस्या है या नहीं.
PromotionsResponse / @timestamp 1 DateTime इस मैसेज को बनाने की तारीख और समय.
PromotionsResponse / @id 1 string प्रमोशन से जुड़े मैसेज का यूनीक आइडेंटिफ़ायर.
PromotionsResponse / @partner 1 string यह मैसेज किस पार्टनर खाते के लिए है.
PromotionsResponse / Success 0..1 Success इससे पता चलता है कि प्रमोशन के मैसेज को बिना किसी चेतावनी, गड़बड़ी या समस्या के प्रोसेस किया गया है.

हर मैसेज में <Success> या <Issues> मौजूद हो.

PromotionsResponse / Issues 0..1 Issues यह एक कंटेनर है. इसमें प्रमोशन वाले मैसेज को प्रोसेस करते समय हुई एक या उससे ज़्यादा समस्याओं की जानकारी होती है.

हर मैसेज में <Success> या <Issues> मौजूद हो.

PromotionsResponse / Issues / Issue 1..n Issue प्रमोशन के मैसेज को प्रोसेस करते समय मिली किसी चेतावनी, गड़बड़ी या समस्या की जानकारी. इन समस्याओं के बारे में जानकारी, फ़ीड की स्थिति से जुड़ी गड़बड़ी के मैसेज में देखी जा सकती है.
PromotionsResponse / Issues / Issue / @code 1 integer समस्या का आइडेंटिफ़ायर.
PromotionsResponse / Issues / Issue / @status 1 enum

समस्या किस तरह की है.

मान्य वैल्यू warning, error, और failure हैं.

उदाहरण

पुष्टि हो गई

यहां प्रमोशन के मैसेज को प्रोसेस करने के बाद मिला जवाब दिया गया है.

<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</PromotionsResponse>

समस्याएं

यहाँ प्रमोशन के मैसेज का जवाब दिया गया है. हालाँकि, गड़बड़ियों की वजह से इसे प्रोसेस नहीं किया जा सका.

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