प्रचार

खास जानकारी

इस एपीआई की मदद से, संभावित छूट के बारे में बताया जा सकता है. बताए गए प्रमोशन में से, 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 में खाते की सेटिंग वाले पेज पर मौजूद "पार्टनर की" वैल्यू होती है.

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

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 एट्रिब्यूट की वैल्यू है और वह "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 बजे तक बुकिंग करना ज़रूरी है.
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 वाला प्रमोशन, जिसमें fixed_amount की वैल्यू 25 और सीलिंग amount_per_night की वैल्यू 90 है

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

  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 है, तो

    promotion rate = 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>



मुफ़्त रातें पाने की छूट

यहां दिए गए उदाहरण में, बुकिंग की तारीखों की तय सीमा के दौरान चार रातों के लिए रुकने पर, दो रातों के लिए 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 (ठहरना)
  • 02-01-2022 (ठहरना)
  • 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>