ภาพรวม
API นี้ช่วยให้คุณระบุส่วนลดที่เป็นไปได้ จากโปรโมชันที่ระบุไว้ Google จะใช้โปรโมชันหรือชุดโปรโมชันที่มีสิทธิ์ซึ่งทำให้ราคาต่ำที่สุด หากกำลังมองหา API ที่รองรับการปรับราคาแบบกำหนดเองซึ่งสามารถเพิ่มหรือลดราคาเมื่อเงื่อนไขตรงตามที่กำหนด ให้ลองใช้ Rate Modifications API โปรดทราบว่าหากมี API ทั้ง 2 รายการ ระบบจะใช้การแก้ไขราคาก่อนโปรโมชัน
คำขอ
ไวยากรณ์
ข้อความ 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 หากมีแบ็กเอนด์ที่มีฟีดสำหรับหลายบัญชี ค่านี้จะต้องตรงกับค่าแอตทริบิวต์  | 
| Promotions / @id | 1 | string | ตัวระบุที่ไม่ซ้ำกันสำหรับข้อความคำขอนี้ ค่านี้จะแสดงในข้อความตอบกลับ อักขระที่อนุญาตคือ a-z, A-Z, 0-9, _ (ขีดล่าง) และ - (ขีดกลาง) | 
| Promotions / @timestamp | 1 | DateTime | วันที่และเวลาที่สร้างข้อความนี้ | 
| Promotions / HotelPromotions | 0..n | HotelPromotions | โปรโมชันสำหรับที่พัก โปรโมชันแต่ละรายการจะมีผลกับที่พักเพียงแห่งเดียว เว้นแต่จะใช้  | 
| Promotions / HotelPromotions / @hotel_id | 1 | string | ตัวระบุที่ไม่ซ้ำกันของที่พัก ค่านี้ต้องตรงกับรหัสโรงแรมที่ระบุโดยใช้ <id>ในองค์ประกอบ<listing>ในฟีดข้อมูลโรงแรม นอกจากนี้ รหัสโรงแรมยังแสดงอยู่ใน Hotel Center ด้วย | 
| Promotions / HotelPromotions / @action | 0..1 | enum | หากระบุ ค่าต้องเป็น  หากไม่ได้ระบุ โปรโมชันแต่ละรายการที่ระบุในข้อความปัจจุบันจะเป็นอย่างใดอย่างหนึ่งต่อไปนี้ 
 | 
| Promotions / HotelPromotions / Promotion | 0..99 | Promotion | โปรโมชันเดียวสำหรับที่พัก โปรดทราบว่าหากไม่ได้ระบุ  หากต้องการใช้โปรโมชันมากกว่า 99 รายการ โปรดติดต่อผู้จัดการลูกค้าด้านเทคนิค (TAM) | 
| Promotions / HotelPromotions / Promotion / @id | 1 | string | ตัวระบุที่ไม่ซ้ำกันสำหรับโปรโมชัน จำนวนอักขระสูงสุดที่อนุญาตคือ 40 ตัว อักขระที่อนุญาตคือ a-z, A-Z, 0-9, _ (ขีดล่าง), - (ขีดกลาง) และ . (เครื่องหมายจุด) | 
| Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | หากระบุ ค่าต้องเป็น  หากระบุ  | 
| Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | คอนเทนเนอร์สำหรับช่วงอย่างน้อย 1 ช่วงซึ่งกำหนดเมื่อต้องทำการจองเพื่อให้ใช้โปรโมชันได้ | 
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | ช่วงวันที่ที่ระบุเมื่อต้องทำการจองเพื่อให้โปรโมชันมีผล | 
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date หรือ DateTime | วันที่เริ่มต้นหรือวันที่และเวลา (ตามเขตเวลาของที่พัก) ของช่วง โดยนับรวมวันที่ดังกล่าวด้วย 
 | 
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date หรือ DateTime | วันที่สิ้นสุดหรือวันที่และเวลา (ตามเขตเวลาของที่พัก) ของช่วง โดยนับรวมวันที่ดังกล่าวด้วย 
 | 
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | วันของสัปดาห์ที่อนุญาตให้ใช้ในช่วงวันที่ หากไม่มีการระบุ ระบบจะอนุญาตให้ใช้ทุกวันในช่วงวันที่ อักขระแต่ละตัวในสตริงจะระบุวัน เช่น "MTWHF" เป็นการระบุว่าระบบอนุญาตให้ใช้วันธรรมดาในช่วงวันที่ อักขระที่ใช้ได้มีดังนี้ 
 คุณจะระบุชุดค่าผสมของอักขระแบบใดก็ได้ | 
| Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | ระบุระยะเวลาที่ทำการจองได้ซึ่งสัมพันธ์กับวันที่เช็คอิน (ตามเขตเวลาของที่พัก) ตัวอย่างเช่น คุณสามารถตั้งค่ากรอบเวลาการจองล่วงหน้าก่อนเช็คอินเป็นอย่างน้อย 7 วัน แต่ไม่เกิน 180 วัน | 
| Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | ระยะเวลาขั้นต่ำก่อนถึงวันเช็คอินที่ต้องมีการจองเพื่อให้โปรโมชันมีผล หากไม่ได้ระบุหรือค่าของ 0เป็น0ระบบจะไม่กำหนดจำนวนขั้นต่ำประเภทของค่าที่ใช้ได้มีดังนี้ 
 | 
| Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | จำนวนวันสูงสุดก่อนถึงวันเช็คอินที่ต้องมีการจองเพื่อให้ใช้โปรโมชันได้ หากไม่ได้ระบุหรือค่าของ 0คือ0ระบบจะไม่จำกัดจำนวนสูงสุดประเภทของค่าที่ใช้ได้มีดังนี้ 
 | 
| Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling | กําหนดข้อจํากัดเกี่ยวกับค่าสูงสุดที่กําหนดราคาได้หลังจากใช้โปรโมชันแล้ว โปรโมชันต้องระบุ  หากมีการกำหนดค่าการซ้อน โปรโมชันที่มี ตัวอย่าง การกำหนดราคาสำหรับการเข้าพัก 1 คืนโดยที่  
 ลำดับการคำนวณมีดังนี้ 
 การที่ 60 เป็นขีดจํากัดโดยรวมที่เข้มงวดกว่านั้นไม่เกี่ยวข้องเนื่องจากมีผลกับโปรโมชันนั้นๆ เท่านั้น และจะไม่มีขีดจํากัดเดียวที่ครอบคลุมทั้งกองโปรโมชัน | 
| Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float | จำนวนเงินสูงสุดที่กำหนดราคาต่อคืนได้หลังจากหักส่วนลดแล้ว หากระบุองค์ประกอบ  
 | 
| Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor | กำหนดข้อจำกัดเกี่ยวกับค่าต่ำสุดที่อัตราสามารถตั้งค่าได้หลังจากใช้โปรโมชัน โปรโมชันต้องระบุ  ตรรกะ  หากมีการกำหนดค่าการซ้อน โปรโมชันที่มี ตัวอย่าง การกำหนดราคาสำหรับการเข้าพัก 1 คืนโดยที่  
 ลำดับการคำนวณมีดังนี้ 
 การที่ 90 เป็นพื้นโดยรวมที่เข้มงวดกว่านั้นไม่เกี่ยวข้องเนื่องจากใช้กับโปรโมชันของตัวเองเท่านั้น และจะไม่มีพื้นเดียวที่ครอบคลุมทั้งกองโปรโมชัน | 
| Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float | จำนวนเงินขั้นต่ำที่กำหนดราคาต่อคืนได้หลังจากหักส่วนลดแล้ว หากระบุองค์ประกอบ  
 | 
| Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | คอนเทนเนอร์สำหรับช่วงวันที่อย่างน้อย 1 ช่วงซึ่งกำหนดเมื่อต้องเลือกวันเช็คอินเพื่อให้ใช้โปรโมชันได้ | 
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | ช่วงวันที่ที่ระบุเมื่อต้องเลือกวันเช็คอินเพื่อให้ใช้โปรโมชันได้ คุณไม่จำเป็นต้องใช้องค์ประกอบนี้หากต้องการลบโปรโมชันอย่างน้อย 1 รายการ นอกจากนี้ ยังรองรับรูปแบบ YearlessDate ด้วย 
 | 
| 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" เป็นการระบุว่าระบบอนุญาตให้ใช้วันธรรมดาในช่วงวันที่ อักขระที่ใช้ได้มีดังนี้ 
 คุณจะระบุชุดค่าผสมของอักขระแบบใดก็ได้ | 
| Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | คอนเทนเนอร์สำหรับช่วงวันที่อย่างน้อย 1 ช่วงซึ่งกำหนดเมื่อต้องเลือกวันเช็คเอาต์เพื่อให้ใช้โปรโมชันได้ | 
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | ช่วงวันที่ที่ระบุเมื่อต้องเลือกวันเช็คเอาต์เพื่อให้ใช้โปรโมชันได้ คุณไม่จำเป็นต้องใช้องค์ประกอบนี้หากต้องการลบโปรโมชันอย่างน้อย 1 รายการ นอกจากนี้ ยังรองรับรูปแบบ YearlessDate ด้วย 
 | 
| 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" เป็นการระบุว่าระบบอนุญาตให้ใช้วันธรรมดาในช่วงวันที่ อักขระที่ใช้ได้มีดังนี้ 
 คุณจะระบุชุดค่าผสมของอักขระแบบใดก็ได้ | 
| Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | คอนเทนเนอร์สำหรับแสดงรายการอุปกรณ์ของผู้ใช้ที่มีสิทธิ์รับโปรโมชัน หากระบุไว้ เฉพาะผู้ใช้ที่มีสิทธิ์ในอุปกรณ์ที่ระบุเท่านั้นที่จะได้รับราคาส่วนลด หากไม่ได้ระบุ ผู้ใช้ที่มีสิทธิ์ในอุปกรณ์ทุกเครื่องจะได้รับราคาหลังหักส่วนลด | 
| Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | กำหนดอุปกรณ์ของผู้ใช้ 1 ประเภทที่มีสิทธิ์รับโปรโมชัน | 
| Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | ประเภทอุปกรณ์ ค่าต้องเป็น desktop,tabletหรือmobile | 
| Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | ต้องระบุ  ระบุส่วนลดที่จะใช้กับโปรโมชันนี้ | 
| Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | ต้องระบุ  ค่าทศนิยมตั้งแต่ 0-100 ซึ่งระบุเปอร์เซ็นต์ส่วนลด
          โดยจะมีผลกับ  ตัวอย่าง 
 | 
| Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float | ต้องระบุ  ค่าทศนิยมตั้งแต่ 0-100 ซึ่งระบุเปอร์เซ็นต์ของส่วนลดฐาน คล้ายกับ  ซึ่งแตกต่างจาก  ตัวอย่าง 
 | 
| Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | ต้องระบุ  จำนวนเงินคงที่ที่จะหักออกจากผลรวมของราคาต่อคืน  ตัวอย่าง 
 | 
| Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | ต้องระบุ  ส่วนลดแบบคงที่ที่มีผลกับ ตัวอย่าง 
 | 
| Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | ต้องระบุ  หากระบุราคาต่อคืน  หาก  ตัวอย่าง 
 | 
| Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | ต้องระบุ  หากระบุราคาต่อคืน  หาก  หากระบุ  ตัวอย่าง 
 | 
| Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | ควรใช้กับ  จำนวนคืนที่มีสิทธิ์รับส่วนลด โดยเริ่มจากคืนที่มีราคาต่ำที่สุด ต้องเป็นจำนวนเต็มตั้งแต่ 1 ถึง 99 หากไม่ได้ระบุ ระบบจะใช้ส่วนลดกับทุกคืน | 
| Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | ระบุส่วนลดสำหรับบางคืนที่เข้าพักเมื่อเข้าพักถึงระยะเวลาขั้นต่ำ ไม่อนุญาตให้ใช้แอตทริบิวต์ในองค์ประกอบ Discountหลักหากมีการใช้องค์ประกอบนี้ | 
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | จำนวนคืนที่เข้าพักเพื่อให้ได้รับส่วนลด ส่วนลดแต่ละรายการจะมีผลกับกลุ่มจำนวนคืนที่เข้าพักแยกกัน เช่น สำหรับการเข้าพัก 10 คืนโดยที่  | 
| 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 | ส่วนลดจะใช้กับกลุ่มการเข้าพักหลายคืนได้หรือไม่ หากเป็น  ตัวอย่างเช่น หาก  | 
| Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | กําหนดลําดับชั้นของโปรโมชันนี้และเลือกให้อยู่ในการเลือกแบบลําดับชั้น ซึ่งจะเลือกเฉพาะโปรโมชันที่มีลําดับชั้นต่ำที่สุดเพื่อใช้งาน ค่าต้องอยู่ระหว่าง 1 ถึง 99 หากโปรโมชันหลายรายการมีอันดับเดียวกัน ระบบจะสุ่มเลือกโปรโมชันรายการใดรายการหนึ่งและนำไปใช้ | 
| Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | ต้องระบุ  ระบุส่วนลดรายวันซึ่งอาจใช้กับการเข้าพัก 1 คืน ซึ่งแตกต่างจาก  ที่พักแต่ละแห่งอาจมีโปรโมชันกลุ่มเดียวที่ถือว่า "ดีที่สุดในแต่ละวัน" ซึ่งหมายความว่าในแต่ละคืนที่เข้าพัก ระบบจะเลือกโปรโมชัน "รายวันที่ดีที่สุด" รายการเดียวที่มีสิทธิ์และมอบส่วนลดสูงสุดสำหรับคืนนั้นๆ และอาจใช้โปรโมชันดังกล่าว 
 
 | 
| Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | ต้องระบุ  ค่าทศนิยมตั้งแต่ 0-100 ซึ่งระบุเปอร์เซ็นต์ส่วนลด
          โดยจะมีผลกับ  ตัวอย่าง 
 | 
| Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | ต้องระบุ  จำนวนเงินคงที่ที่จะหักออกจาก ตัวอย่าง 
 | 
| Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | ต้องระบุ  หากระบุราคาต่อคืน  ตัวอย่าง 
 | 
| 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 | คอนเทนเนอร์สำหรับกฎอัตราสมาชิกที่จะทริกเกอร์ตัวเลือก UI ที่เฉพาะเจาะจงสำหรับส่วนลดที่เกี่ยวข้อง ไม่ควรระบุองค์ประกอบนี้ เว้นแต่จะมีการระบุ  | 
| 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 | ระบุแพ็กเกจราคา ระบบจะกำหนดแพ็กเกจราคาจากชุดค่าผสมของแพ็กเกจ ราคา และจำนวนห้องว่างตามที่ระบุไว้ในข้อความ Transaction (Property Data), OTA_HotelRateAmountNotifRQ และ OTA_HotelAvailNotifRQ รวมถึงกำหนดตามที่ PackageID ระบุไว้ | 
| Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | ตัวระบุที่ไม่ซ้ำกันสำหรับแพ็กเกจราคา ค่านี้จะแมปกับค่า PackageID ใน <PackageData>ของข้อความ Transaction (Property Data) และในแอตทริบิวต์RatePlanCodeของ<StatusApplicationControl>ทั้งข้อความ<OTA_HotelRateAmountNotifRQ>และ<OTA_HotelAvailNotifRQ>จำนวนอักขระสูงสุดที่อนุญาตคือ 50 ตัว | 
| Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | คอนเทนเนอร์สำหรับรายการประเภทห้องพักที่มีสิทธิ์รับโปรโมชัน
        โปรโมชันจะมีผลกับ <RoomType>แต่ละรายการที่ระบุ หากไม่มีการระบุ<RoomTypes>โปรโมชันจะมีผลกับห้องพักทุกประเภท | 
| Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | ระบุประเภทห้องพัก ประเภทห้องพักจะระบุอยู่ในองค์ประกอบ <RoomData>ของข้อความ Transaction (Property Data) และมีการอ้างอิงโดยใช้ค่า<RoomID>(นอกจากนี้ ค่า<RoomID>ยังอ้างอิงโดยแอตทริบิวต์InvTypeCodeในข้อความ OTA_HotelRateAmountNotifRQ) | 
| Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | ตัวระบุที่ไม่ซ้ำกันสำหรับห้องพัก (ประเภทห้องพัก) ค่านี้จะแมปกับ <RoomID>ในข้อความ Transaction (Property Data)
        จำนวนอักขระสูงสุดที่อนุญาตคือ 50 ตัว | 
| Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | ระบุวิธีรวมโปรโมชัน หากไม่ได้ระบุ ระบบจะถือว่า "type" เป็น base | 
| Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | คุณใช้โปรโมชันหลายรายการกับราคาเดียวได้ โดยขึ้นอยู่กับการตั้งค่าต่อไปนี้ 
 ระบบจะใช้ชุดโปรโมชันที่ให้ส่วนลดสูงสุดกับราคาจากชุดค่าผสมที่อนุญาต | 
| Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | คอนเทนเนอร์สำหรับช่วงวันที่อย่างน้อย 1 ช่วงซึ่งกำหนดวิธีใช้โปรโมชัน เช่น เพื่อรองรับส่วนลดตามฤดูกาล | 
| Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | อธิบายวิธีใช้โปรโมชัน ค่าที่ใช้ได้มีดังนี้ 
 คุณต้องระบุแอตทริบิวต์นี้เสมอ 
 | 
| Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | ช่วงวันที่ซึ่งระบุวันที่ที่จะใช้โปรโมชัน นอกจากนี้ ยังรองรับรูปแบบ YearlessDate ด้วย 
 หากต้องการตั้งค่าช่วง  | 
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | วันที่เริ่มต้น (ตามเขตเวลาของที่พัก) ของช่วงวันที่เข้าพัก โดยนับรวมวันที่ดังกล่าวด้วย วันที่นี้ต้องเป็นวันที่ก่อนหน้าหรือวันที่เดียวกับ endหากไม่มีการระบุstartระบบจะถือว่าช่วงวันที่ดังกล่าวไม่มีขอบเขตวันที่เริ่มต้นคุณควรระบุค่า  | 
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | วันที่สิ้นสุด (ตามเขตเวลาของที่พัก) ของช่วงวันที่เข้าพัก โดยนับรวมวันที่ดังกล่าวด้วย วันที่นี้ต้องเป็นวันที่เดียวกันหรือหลังจาก startหากไม่มีการระบุendระบบจะถือว่าช่วงวันที่ดังกล่าวไม่มีขอบเขตนับตั้งแต่วันที่startเป็นต้นไปคุณควรระบุค่า  | 
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | วันของสัปดาห์ที่อนุญาตให้ใช้ในช่วงวันที่ หากไม่มีการระบุ ระบบจะอนุญาตให้ใช้ทุกวันในช่วงวันที่ อักขระแต่ละตัวในสตริงจะระบุวัน เช่น "MTWHF" เป็นการระบุว่าระบบอนุญาตให้ใช้วันธรรมดาในช่วงวันที่ อักขระที่ใช้ได้มีดังนี้ 
 คุณจะระบุชุดค่าผสมของอักขระแบบใดก็ได้ | 
| Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | คอนเทนเนอร์สำหรับแสดงสถานที่ตั้ง (ประเทศ) ของผู้ใช้ที่มีสิทธิ์รับโปรโมชัน หากระบุไว้ จะมีเฉพาะผู้ใช้ที่มีสิทธิ์ในประเทศที่ระบุเท่านั้นที่ได้รับราคาส่วนลด หากไม่ได้ระบุ ผู้ใช้ที่มีสิทธิ์ในประเทศใดก็ได้จะได้รับราคาที่มีส่วนลด | 
| Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | ประเภทของข้อกําหนด UserCountries ค่าที่ใช้ได้คือ  หากตั้งค่า UserCountries  หาก UserCountries  หากไม่ได้ตั้งค่า UserCountries  | 
| Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | กำหนดประเทศเดียวที่ผู้ใช้มีสิทธิ์รับโปรโมชัน | 
| Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | รหัสประเทศ CLDR เช่น DEหรือFRโปรดทราบว่าสำหรับบางประเทศ รหัสประเทศ CLDR จะแตกต่างจากรหัสประเทศ ISO 2 ตัวอักษร นอกจากนี้ ระบบยังไม่รองรับรหัสภูมิภาค CLDR | 
ตัวอย่าง
พร็อพเพอร์ตี้ 1 รายการมีโปรโมชันได้ไม่เกิน 500 รายการ ดูตัวอย่าง "ลบโปรโมชัน 1 รายการ" เพื่อนำโปรโมชันออกจากพร็อพเพอร์ตี้
ข้อความพื้นฐาน
ตัวอย่างต่อไปนี้แสดงข้อความ 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>
ลบโปรโมชัน 1 รายการ
ตัวอย่างต่อไปนี้แสดงวิธีลบโปรโมชัน 1 รายการสำหรับที่พัก
<?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> สำหรับที่พักที่มีโปรโมชันใหม่อย่างน้อย 1 รายการ เมื่อ 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>
ประเภทการซ้อน 3 ประเภท
ตัวอย่างต่อไปนี้แสดงกรณีที่จะมีการใช้โปรโมชัน 3 รายการที่แตกต่างกัน (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
 ข้อจำกัดเกี่ยวกับกรอบเวลาการจองนี้กำหนดให้ต้องจองภายในเวลา 18:00 น. ของวันก่อนถึงวันเดินทาง และหลังจากเวลา 12:00 น. ของวันที่ 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">
      <BookingWindow min="P1DT6H" max="P2DT12H"/>
      <Discount percentage="20"/>
    </Promotion>
  </HotelPromotions>
</Promotions>
ขอบเขตวันที่และเวลาของวันที่จอง
ตัวอย่างต่อไปนี้แสดงกรณีที่ใช้องค์ประกอบ BookingDates กับแอตทริบิวต์ start และ end เป็นประเภท DateTime ข้อจำกัดด้านวันที่ของข้อจำกัดนี้กำหนดให้ต้องจองระหว่างเวลา 06:30 น. ของวันที่ 01-07-2020 ถึง 18:45 น. ของวันที่ 02-07-2020
<?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 จึงแสดงเป็นช่วงวันที่ 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
ตัวอย่างต่อไปนี้ลดราคา 2 คืน 50% สำหรับการเข้าพัก 4 คืนแต่ละคืนในช่วงวันที่ที่จองที่ระบุ สำหรับแผนการเดินทาง 10 คืน ระบบจะลดราคา 4 คืนแรก 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% สำหรับ 1 คืนสำหรับการเข้าพักทุกๆ 3 คืนในช่วงวันที่เข้าพักที่ระบุ เฉพาะคืนที่ทับซ้อนกันเท่านั้นที่นับรวมในการเข้าพักที่มีสิทธิ์รับส่วนลด สำหรับแผนการเดินทางต่อไปนี้ที่เช็คอินในวันที่ 01-01-2022 และเช็คเอาต์ในวันที่ 07-01-2022 จำนวนคืนที่เข้าพักและส่วนลดที่มีสิทธิ์จะมีผลดังนี้
- 2022-01-01 (stay)
- 2022-01-02 (stay)
- 2022-01-03
- 2022-01-04 (ลดราคา)
- 2022-01-05 (stay)
- 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>
การเลือกแบบจัดอันดับ
ตัวอย่างต่อไปนี้มีส่วนลด 2 รายการ โดยรายการหนึ่งให้ส่วนลด 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
ตัวอย่างต่อไปนี้แสดงส่วนลดสำหรับการเข้าพัก 2 คืนโดยใช้ BestDailyDiscount ซ้อนกับ Discount
<?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>
พิจารณาการเข้าพัก 2 คืนตั้งแต่วันที่ 30 เมษายน 2023 ถึง 2 พฤษภาคม 2023 ระบบจะคำนวณจากส่วนลดรายวันที่ให้ส่วนลดสูงสุดก่อน
สำหรับคืนแรก โปรโมชัน "ทั่วไป" คือจำนวนเงินที่มีสิทธิ์เพียงรายการเดียวที่มีส่วนลดคงที่ 20
สำหรับคืนที่ 2 โปรโมชัน "อาจ" ให้ส่วนลดมากกว่าส่วนลด "ทั่วไป" ดังนั้น เมื่อเลือก "อาจ" ส่วนลดแบบคงที่จะเป็น 50
จากนั้นสำหรับการเข้าพัก โปรโมชัน "Fiesta" จะลดราคาเป็น 500 บาทต่อคืน หรือ 1,500 บาททั้งหมด ส่วนลดนี้สามารถใช้ร่วมกับชุดค่าผสมของส่วนลดรายวันที่ดีที่สุดได้เนื่องจาก "fiesta" มีการตั้งค่าประเภทการซ้อนเป็น any หากตั้งค่าเป็น base ระบบจะใช้เฉพาะส่วนลดรายวันที่ดีที่สุดหรือส่วนลด "Fiesta" เท่านั้น ดูข้อมูลเพิ่มเติมได้ในคำอธิบายของ 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 | ตัวระบุที่ไม่ซ้ำกันจากข้อความ Promotions ที่เกี่ยวข้อง | 
| PromotionsResponse / @partner | 1 | string | บัญชีพาร์ทเนอร์สำหรับข้อความนี้ | 
| PromotionsResponse / Success | 0..1 | Success | บ่งบอกว่าข้อความโปรโมชันได้รับการประมวลผลเรียบร้อยแล้วโดยไม่มีคำเตือน ข้อผิดพลาด หรือความล้มเหลว แต่ละข้อความจะมี  | 
| PromotionsResponse / Issues | 0..1 | Issues | คอนเทนเนอร์สำหรับปัญหาอย่างน้อย 1 รายการที่พบขณะประมวลผลข้อความโปรโมชัน แต่ละข้อความจะมี  | 
| PromotionsResponse / Issues / Issue | 1..n | Issue | คำอธิบายของคำเตือน ข้อผิดพลาด หรือความล้มเหลวที่พบขณะประมวลผลข้อความ Promotions ดูรายละเอียดเกี่ยวกับปัญหาเหล่านี้ได้ในข้อความแสดงข้อผิดพลาดของสถานะฟีด | 
| PromotionsResponse / Issues / Issue / @code | 1 | integer | ตัวระบุสำหรับปัญหา | 
| PromotionsResponse / Issues / Issue / @status | 1 | enum | ประเภทของปัญหาที่พบ ค่าที่ใช้ได้คือ  | 
ตัวอย่าง
สำเร็จ
การตอบกลับข้อความ Promotions ที่ประมวลผลเรียบร้อยแล้วมีดังนี้
<?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>