प्रचार

खास जानकारी

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

अनुरोध

सिंटैक्स

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>

एलिमेंट और एट्रिब्यूट

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

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

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

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

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

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

अगर स्टैकिंग कॉन्फ़िगर की गई है, तो एक ही ठहरने पर <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> लागू करता है, एक विकल्प यह है कि 0 के percentage के साथ <Discount> सेट किया जाए.

<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) - (fixed discount)

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

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

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

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

    प्रमोशन रेट = 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 होने पर, दो सेगमेंट (1 से 4 रातें और 5 से 8 रातें) पर छूट मिलेगी. हालांकि, repeats की वैल्यू false होने पर, सिर्फ़ एक सेगमेंट (1 से 4 रातें) पर छूट मिलेगी.

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

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

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

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

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

इस तरह की छूट के लिए 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 कमरे का टाइप बताता है. कमरे के टाइप की जानकारी, ट्रांज़ैक्शन (प्रॉपर्टी डेटा) मैसेज में मौजूद <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 प्रमोशन लागू नहीं होगा, क्योंकि अन्य प्रमोशन में बेहतर छूट मिलती है. अगर मूल कीमत 100 डॉलर थी, तो छूट वाली कीमत 72.90 डॉलर होगी.

<?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 प्रमोशन का इस्तेमाल किया गया है, क्योंकि अन्य प्रमोशन के कॉम्बिनेशन से कम छूट मिलती है. अगर मूल कीमत 100 डॉलर थी, तो छूट के बाद कीमत 75 डॉलर होगी.

<?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 एलिमेंट का इस्तेमाल, शुरू और खत्म होने के समय के साथ किया गया है. इन समय को ISO 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>


बुकिंग की तारीखों की समयसीमा

नीचे दिए गए उदाहरण में एक ऐसा मामला दिखाया गया है जहां BookingDates एलिमेंट का इस्तेमाल start और end एट्रिब्यूट के साथ, DateTime टाइप के तौर पर किया गया है. तारीख से जुड़ी इस पाबंदी के मुताबिक, बुकिंग 01-07-2020 को सुबह 06:30 बजे से 02-07-2020 को शाम 18: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 से 1/2 के बीच की चेक इन की तारीखों पर लागू होता है. भले ही, साल कोई भी हो. साल के बिना बताई गई ऐसी तारीख की सीमाएं जो नए साल की सीमा को पार करती हैं वे अमान्य होती हैं. इसलिए, तारीख की सीमा को दो आस-पास की तारीख की सीमाओं के तौर पर दिखाया जाता है.

<?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% की छूट दी गई है. अगर यात्रा की योजना में 10 रातें शामिल हैं, तो चार रातों के लिए 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% की छूट दी गई है. छूट पाने के लिए, सिर्फ़ ओवरलैप होने वाली रातों की गिनती की जाती है. यहां दी गई यात्रा की योजना के लिए, 01-01-2022 को चेक-इन और 07-01-2022 को चेक-आउट किया गया है. इसमें, छूट और ठहरने की ज़रूरी शर्तें पूरी करने वाली रातों की जानकारी इस तरह दी गई है.

  • 01-01-2022 (स्टे)
  • 02-01-2022 (रहने की जगह)
  • 2022-01-03
  • 04-01-2022 (छूट वाला)
  • 05-01-2022 (रहने की जगह)
  • 06-01-2022 (स्टे)
<?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% की तय छूट मिलती है.

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

इसके बाद, ठहरने के लिए "फ़िएस्टा" प्रमोशन की छूट, हर रात के लिए 500 रुपये या कुल 1,000 रुपये होगी. इसे हर दिन मिलने वाली सबसे अच्छी छूट के कॉम्बिनेशन के साथ स्टैक किया जा सकता है, क्योंकि "फ़िएस्टा" के लिए स्टैकिंग टाइप 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 मैसेज में ये एलिमेंट और एट्रिब्यूट होते हैं:

एलिमेंट / @एट्रिब्यूट आवृत्तियां टाइप ब्यौरा
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>