رسائل ترويجية

نظرة عامة

تتيح لك واجهة برمجة التطبيقات هذه تحديد الخصومات المحتملة. من بين العروض الترويجية المحدّدة، تطبّق Google العرض الترويجي المؤهّل أو مجموعة العروض الترويجية التي تؤدي إلى تحديد أدنى سعر. إذا كنت تبحث عن واجهة برمجة تطبيقات تتيح تعديلات أسعار عشوائية يمكنها زيادة السعر أو خفضه عند استيفاء الشروط، ننصحك باستخدام Rate Modifications API. يُرجى العلم أنّه في حال توفّر كلتا واجهات برمجة التطبيقات، يتم تطبيق تعديلات الأسعار قبل العروض الترويجية.

الطلبات

البنية

تستخدم رسالة Promotions البنية التالية:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key"
            id="message_ID"
            timestamp="timestamp">
  <HotelPromotions hotel_id="HotelID" action="[overlay]">
    <Promotion id="PromotionID" action="[delete]">
      <BookingDates>
        <DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
          days_of_week="MTWHFSU_or_subset"/>
        <DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
          days_of_week="MTWHFSU_or_subset"/>
      </BookingDates>
      <BookingWindow min="integer_or_duration" max="integer_or_duration"/>
      <Ceiling amount_per_night="float"/>
      <Floor amount_per_night="float"/>
      <CheckinDates>
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </CheckinDates>
      <CheckoutDates>
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </CheckoutDates>
      <!-- Specify only one of percentage, percentage_of_base, fixed_amount,
           fixed_amount_per_night, fixed_price, or fixed_price_per_night;
           applied_nights is only used with percentage, fixed_amount_per_night,
           and fixed_price_per_night. -->
      <Discount percentage="float" percentage_of_base="float"
                fixed_amount="float" fixed_amount_per_night="float"
                fixed_price="float" fixed_price_per_night="float"
                applied_nights="integer_1_to_99" rank="integer_1_to_99">
        <!-- FreeNights may not be used in conjunction with attributes on Discount -->
        <FreeNights stay_nights="integer" discount_nights="integer"
                    discount_percentage="float" night_selection="[cheapest|last]"
                    repeats="boolean"/>
      </Discount>
      <!-- Exactly one of Discount or BestDailyDiscount must be specified.
           Specify only one of percentage, fixed_amount, or fixed_price. -->
      <BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <InventoryCount min="integer" max="integer"/>
      <LengthOfStay min="integer" max="integer"/>
      <MembershipRateRule id="RateRuleID"/>
      <MinimumAmount before_discount="integer"/>
      <Occupancy min="integer" max="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <Stacking type="[any|base|none|second]"/>
      <StayDates application="[all|any|overlap]">
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </StayDates>
      <UserCountries type="[include|exclude]">
        <Country code="country_code"/>
      </UserCountries>
    </Promotion>
  </HotelPromotions>
</Promotions>

العناصر والسمات

تحتوي رسالة "العروض الترويجية" على العناصر والسمات التالية:

العنصر / @السمة عدد مرات الظهور النوع الوصف
Promotions 1 Complex element عنصر الجذر لرسالة عروض ترويجية.
Promotions / @partner 1 string حساب الشريك لهذه الرسالة. قيمة السلسلة هذه هي قيمة "مفتاح الشريك" المدرَجة في صفحة "إعدادات الحساب" في Hotel Center.

إذا كان لديك نظام أساسي يقدّم خلاصات لحساب متعدّد، يجب أن تتطابق هذه القيمة مع قيمة سمة ID المحدّدة في عنصر <RequestorID> في رسائل <OTA_HotelRateAmountNotifRQ> و <OTA_HotelAvailNotifRQ> للحساب نفسه.

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 المعرّف الفريد للمكان يجب أن تتطابق هذه القيمة مع معرّف الفندق المحدّد باستخدام <id> في عنصر <listing> في خلاصة بيانات الفنادق. يظهر رقم تعريف الفندق أيضًا في 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 عرضًا ترويجيًا، يُرجى التواصل مع المدير التقني للحساب (TAM).

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 تُحدِّد الفترة الزمنية التي يجب أن يتم فيها الحجز مقارنةً بتاريخ تسجيل الوصول (استنادًا إلى المنطقة الزمنية للفندق). على سبيل المثال، يمكن ضبط فترة الحجز على 7 أيام على الأقل، ولكن ليس أكثر من 180 يومًا، قبل تسجيل الوصول.
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration الحد الأدنى لمدة الحجز قبل تسجيل الوصول ليتم تطبيق العرض الترويجي إذا لم يتم تحديد الحد الأدنى أو كانت قيمته هي 0، لن يكون هناك حد أدنى.

في ما يلي أنواع القيم الصالحة:

  • عدد صحيح: عدد الأيام قبل تاريخ تسجيل الوصول على سبيل المثال، تشير القيمة 30 إلى أنّه لا ينطبق العرض الترويجي إلا على الحجوزات التي يتم إجراؤها قبل 30 يومًا على الأقل من تاريخ تسجيل الوصول.
  • مدة بتنسيق ISO 8601 (أي الأيام والساعات والدقائق): عدد الأيام (والساعات أو الدقائق اختياريًا) قبل تاريخ تسجيل الوصول على سبيل المثال، تشير القيمة P30D إلى أنّ العرض الترويجي لا ينطبق إلا على الحجوزات التي تتم قبل 30 يومًا على الأقل من تاريخ تسجيل الوصول. إذا كانت قيمة P30DT6H، يجب الحجز قبل الساعة 6:00 مساءً أو قبلها في اليوم 30 قبل الوصول.
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration الحد الأقصى لعدد الأيام قبل تاريخ تسجيل الوصول الذي يجب أن يتم الحجز فيه ليتم تطبيق العرض الترويجي إذا لم يتم تحديد هذه السمة أو كانت قيمتها هي 0، لن يكون هناك حد أقصى.

في ما يلي أنواع القيم الصالحة:

  • عدد صحيح: عدد الأيام قبل تاريخ تسجيل الوصول على سبيل المثال، تشير القيمة 30 إلى أنّه لا ينطبق العرض الترويجي إلا على الحجوزات التي يتم إجراؤها قبل 30 يومًا كحد أقصى من تاريخ تسجيل الوصول.
  • مدة بتنسيق ISO 8601 (أي الأيام والساعات والدقائق): عدد الأيام (والساعات أو الدقائق اختياريًا) قبل تاريخ تسجيل الوصول على سبيل المثال، تشير القيمة P30D إلى أنّ العرض الترويجي لا ينطبق إلا على الحجوزات التي تتم قبل 30 يومًا بحد أقصى من تاريخ تسجيل الوصول. إذا كانت قيمة P30DT6H، يجب الحجز في الساعة 6:00 مساءً أو بعد ذلك في اليوم 30 قبل الوصول.
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

تحدّد هذه السمة القيود المفروضة على الحد الأقصى للقيمة التي يمكن ضبط السعر عليها بعد تطبيق العروض الترويجية.

يجب أن تحدّد العروض الترويجية دائمًا <Discount> أو <BestDailyDiscount>، لذا لإنشاء عرض ترويجي لا يطبّق سوى <Ceiling>، يمكنك ضبط <Discount> مع percentage0.

في حال ضبط الميزة "تجميع العروض الترويجية"، يمكن أن تنطبق عروض ترويجية متعددة تتضمّن <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> أيضًا، يجب ضبط هذه السمة على قيمة أكبر من أو مساوية لسمة amount_per_night في <Floor>.

يتم تطبيق amount_per_night على الضرائب والرسوم عند تضمينها في السعر لكل ليلة باستخدام AmountAfterTax، ولكن ليس تلك المحدّدة باستخدام TaxFeeInfo.

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

تحدّد القيود على الحدّ الأدنى للقيمة التي يمكن ضبط السعر عليها بعد تطبيق العروض الترويجية.

يجب أن تحدِّد العروض الترويجية دائمًا <Discount> أو <BestDailyDiscount>، لذا لإنشاء عرض ترويجي لا يطبِّق سوى <Floor>، يمكنك ضبط <Discount> مع percentage0.

سيظل منطق <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. هذا الرقم أعلى من الحدّ الأدنى للطابق الثاني، لذا لن يتم تطبيقه. ويكون السعر النهائي هو 65.

إنّ حقيقة أنّ 90 هي حدّ أدنى إجمالي أكثر صرامة لا يهمّ، لأنّه لا يكون صالحًا إلا للعرض الترويجي الخاص به، ولا يمكن أن يكون هناك حدّ أدنى واحد يشمل حزمة العروض الترويجية بأكملها.

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

الحد الأدنى للمبلغ الذي يمكن ضبط سعر الليلة عليه بعد تطبيق الخصم

في حال تحديد عنصر <Ceiling> أيضًا، يجب ضبط هذه السمة على قيمة أقل من أو مساوية لسمة amount_per_night في <Ceiling>.

يتم تطبيق 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 (أو AmountBeforeTax في حال عدم تحديد AmountAfterTax).

أمثلة:

  • إذا كان 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 (أو AmountBeforeTax في حال عدم تحديد AmountAfterTax).

على عكس percentage، يتم احتساب هذا الخصم دائمًا على أنّه نسبة مئوية من الأسعار الأساسية بغض النظر عن العروض الترويجية السابقة التي تم تطبيقها بالتسلسل.

مثال:

  • لنفترض أنّ لدينا عرضَين ترويجيَين يتم تطبيقهما بالتسلسل على إقامة لمدة ليلة واحدة بسعر 100. الأول هو خصم عادي بنسبة مئوية تبلغ ‎10%، والثاني هو خصم بنسبة مئوية تبلغ ‎10% من الخصم الأساسي. سيكون السعر المخفَّض بعد ذلك 80 لأنّ كلا العرضَين الترويجيين يقدّمان خصمًا بنسبة ‎10%. يُرجى العِلم أنّه إذا كان العرض الترويجي الثاني يقدّم أيضًا خصمًا بنسبة مئوية عادية، سيكون السعر المخفَّض 81 لأنّه يقدّم خصمًا بنسبة ‎10% من 90.
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 سعر الإقامة لليلة واحدة (أو مجموع AmountBeforeTax سعر الإقامة لليلة واحدة إذا AmountAfterTax لم يتم تحديده). ويُفترض أن تكون بالعملة نفسها المستخدَمة في الأسعار لكل ليلة. إذا كانت هذه القيمة أكبر من مجموع الأسعار لكل ليلة، تكون القيمة الناتجة هي صفر.

أمثلة:

  • إذا أردنا تحديد سعر الإقامة لليلة واحدة حيث 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

  • إذا أردنا تحديد سعر الإقامة لمدة 3 ليالٍ حيث تكون قيم 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 الأسعار الليلية (أو أرخص N إذا تم تحديد applied_nights). إذا لم يتم تحديد AmountAfterTax، يتم تطبيقه على AmountBeforeTax. ويُفترض أن تكون بالعملة نفسها المستخدَمة في الأسعار لكل ليلة. إذا كان fixed_amount_per_night أكبر من السعر لكل ليلة، يتم تخفيض هذا السعر إلى القيمة صفر، ولا يمكن أن يؤدي الخصم إلى أن يصبح السعر لكل ليلة سالبًا.

أمثلة:

  • إذا أردنا تحديد سعر الإقامة لمدة 3 ليالٍ حيث تكون قيم AmountAfterTax هي 100 و110 و120، وقيمة fixed_amount_per_night هي 10، عندئذٍ

    نسبة العرض الترويجي = sum(AmountBeforeTax - مبلغ ثابت خصم)

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

  • إذا أردنا تحديد سعر الإقامة لمدة 3 ليالٍ حيث تكون قيم AmountAfterTax هي 10 و50 و100، وقيمة fixed_amount_per_night هي 20، عندئذٍ

    نسبة العرض الترويجي = sum(AmountAfterTax - مبلغ ثابت خصم)

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

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

يجب إدخال قيمة واحدة بالضبط من percentage أو percentage_of_base أو fixed_amount أو fixed_amount_per_night أو fixed_price أو fixed_price_per_night.

في حال تحديد AmountAfterTax سعرًا للإقامة في الليلة، سيتم عندئذٍ ضبط سعر الإقامة، بما في ذلك الضرائب والرسوم، على القيمة المحدّدة. في حال تحديد AmountBeforeTax، سواءً تم تحديد AmountAfterTax أم لا، يتم ضبط السعر قبل احتساب الضريبة للإقامة على القيمة المحدّدة. ويُفترض أن تكون بالعملة نفسها المستخدَمة في الأسعار لكل ليلة.

إذا كان المقصود من AmountAfterTax هو تمثيل الضريبة المئوية، قد يؤدي ضبط سعر ثابت ل AmountBeforeTax إلى ظهور قيمة غير دقيقة للضرائب والرسوم. بشكل عام، ننصحك بشدة باستخدام TaxFeeInfo لتحديد الضرائب والرسوم الخاصة بالموقع.

أمثلة:

  • إذا أردنا تحديد سعر الإقامة لمدة ليلة واحدة حيث يكون AmountBeforeTax هو 90، AmountAfterTax هو 100، وfixed_price هو 80، يكون السعر الترويجي هو 80.
  • إذا أردنا تحديد سعر الإقامة لمدة ليلة واحدة حيث AmountBeforeTax هو 100، وfixed_amount هو 80، وTaxFeeInfo يحدّد ضريبة بنسبة %8، عندئذٍ

    السعر الترويجي = السعر الثابت * (1 + النسبة المئوية للضريبة)

    86.40 = 80 * 1.08

  • إذا أردنا تحديد سعر الإقامة لمدة 3 ليالٍ حيث تكون قيم 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، يتم تطبيق السعر الجديد على أرخص عدد من الليالي.

أمثلة:

  • إذا أردنا تحديد سعر الإقامة لمدة ليلتَين حيث قيم 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.
  • إذا أردنا تحديد سعر الإقامة لمدة 3 ليالٍ حيث تكون قيم 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 صحيحًا)، يكون هناك قسمان للإقامة: من الليلة الأولى إلى الليلة الرابعة والليلة الخامسة إلى الليلة الثامنة، ولا تشكل الليلة 9 والليلة 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

ما إذا كان يمكن تطبيق الخصم على شرائح متعددة للإقامة لعدة ليالٍ إذا كان 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> التي يمكن دمجها معه للعثور على الخصم العميق الوحيد أو المبلغ المُجمّع الذي يقدّم الخصم العميق يتم اختيار إما مجموعة من BestDailyDiscount أو سعر Discount واحد، أيهما يحقّق السعر الأقل، ويتم تطبيقه على نوع التجميع base.

يمكن تحديد StayDates باستخدام هذا النوع من الخصم، ولكن يجب ضبط application على overlap.

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

يجب توفير سمة واحدة بالضبط من percentage أو fixed_amount أو fixed_price.

قيمة عشرية من 0 إلى 100 تحدّد النسبة المئوية للخصم. ويتم تطبيقه على AmountAfterTax (أو AmountBeforeTax في حال عدم تحديد AmountAfterTax ).

أمثلة:

  • إذا كان سعر الإقامة لمدة ليلة واحدة في فندق AmountAfterTax هو 100 percentage هو 20،

    معدّل الخصم الترويجي = AmountAfterTax * (1 - النسبة المئوية للخصم)

    80.00 = 100 * (1 - 0.2)

  • إذا كان سعر الإقامة لمدة ليلة واحدة هو AmountBeforeTax‏، وحدّد 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 (أو AmountBeforeTax إذا لم يتم تحديد قيمة AmountAfterTax). ويُفترض أن تكون بالعملة نفسها المستخدَمة في الأسعار لكل ليلة. إذا كانت هذه القيمة أكبر من مجموع الأسعار لكل ليلة، تكون القيمة الناتجة هي صفر.

أمثلة:

  • إذا كان سعر الإقامة في 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 المعرّف الفريد لخطة الأسعار يتم ربط هذه القيمة بقيمة PackageID في <PackageData> في رسالة المعاملة (بيانات الموقع)، وفي سمة 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> في رسالة المعاملة (بيانات الفندق) ويتم الإشارة إليه باستخدام قيمته <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 تحدِّد كيفية دمج العروض الترويجية. إذا لم يتم تحديد نوع العنصر، يتم افتراض أنّه 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، يكون النطاق الزمني غير محدود بشكلٍ فعال من حيث تاريخ البدء.

يجب تحديد القيمة start إذا لم يتم تقديم القيمة end.

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate تاريخ الانتهاء (استنادًا إلى المنطقة الزمنية للموقع) شاملاً النطاق الزمني يجب أن يكون هذا التاريخ هو نفسه تاريخ start أو تاريخًا لاحقًا له. في حال عدم تحديد end، يكون النطاق الزمني غير محدود بشكلٍ فعال بدءًا من تاريخ start فصاعدًا.

يجب تحديد القيمة end إذا لم يتم تقديم القيمة start.

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 يختلف عن رمز بلد ISO المكوّن من حرفَين في بعض البلدان. ولا تتوفّر أيضًا رموز مناطق 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:00 مساءً أو قبلها في اليوم السابق للوصول، وفي الساعة 12:00 ظهرًا أو بعد ذلك في اليوم الثاني قبل الوصول.

<?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. يفرض هذا القيد على تاريخ الحجز أن يتم الحجز بين الساعة 6:30 صباحًا في 1 تموز (يوليو) 2020 والساعة 6:45 مساءً في 2 تموز (يوليو) 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 كنطاقَين زمنيَّين متجاورَين.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <CheckInDates>
         <DateRange start="12-29" end="12-31"/>
         <DateRange start="01-01" end="01-02"/>
      </CheckInDates>
      <Discount percentage="20"/>
    </Promotion>
  </HotelPromotions>
</Promotions>



يقدّم المثال التالي خصمًا بنسبة% 50 على ليلتَين لكل أربع ليالٍ مُقيم فيها في النطاق المحدّد لتواريخ الحجز. بالنسبة إلى برنامج رحلة يضمّ عشر ليالٍ، سيتم خصم ‎50% على إجمالي أربعة ليالٍ.

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

في المثال التالي، يتم تقديم خصم بنسبة% 50 على ليلة واحدة مقابل كل ثلاث ليالٍ مُقيم فيها خلال الفترات المحدّدة لتاريخ الإقامة. لا يتم احتساب سوى الليالي المتداخلة للإقامة للتأهّل للحصول على الخصم. بالنسبة إلى برنامج الرحلة التالي الذي يتضمّن تسجيل المغادرة في ‎01-01-2022 وتسجيل المغادرة في ‎07-01-2022، يتم تطبيق ليالي الإقامة المؤهّلة والتخفيضات التالية:

  • ‎2022-01-01 (stay)
  • ‎2022-01-02 (stay)
  • 2022-01-03
  • ‎2022-01-04 (discounted)
  • ‎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>


يوفّر المثال التالي خصمين، أحدهما بخصم% 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.

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

بعد ذلك، يتم تطبيق خصم "الحفلة" الترويجي على الإقامة ليصبح 5 دولار أمريكي لليلة أو 10 دولار أمريكي في المجمل. ويمكن تجميعها مع أفضل الخصومات اليومية لأنّ نوع التجميع في "fiesta" تم ضبطه على 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>