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

نظرة عامة

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

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

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

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

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

في حال ضبط إعدادات العروض الترويجية المجمّعة، يمكن تطبيق عروض ترويجية متعددة تتضمّن <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> بقيمة percentage تساوي 0.

سيظل منطق <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> أيضًا، يجب ضبط هذه السمة على قيمة أقل من أو تساوي قيمة السمة 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

  • إذا كان سعر الإقامة لليلة واحدة هو 50، وAmountBeforeTax هو 60، وTaxFeeInfo يحدّد ضريبة بقيمة 10، يكون الناتج كما يلي:fixed_amount

    معدّل العرض الترويجي = (AmountBeforeTax - الخصم الثابت) * الضريبة

    10.00 = 0 + 10

  • إذا كنّا نحدّد سعر الإقامة لمدة 3 ليالٍ وكانت قيم AmountAfterTax هي 100 و110 و120، وكانت قيمة fixed_amount هي 150،

    معدّل العرض الترويجي = مجموع(AmountAfterTax) - (الخصم الثابت)

    ‫180.00 = (100 + 110 + 120) - 150

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

يجب توفير قيمة واحدة فقط من القيم percentage أو percentage_of_base أو fixed_amount أو fixed_amount_per_night أو fixed_price أو fixed_price_per_night.

خصم ثابت يتم تطبيقه على كل من AmountAfterTax الأسعار الليلية (أو أرخص N إذا تم تحديد applied_nights). إذا لم يتم تحديد AmountAfterTax، سيتم تطبيقه على AmountBeforeTax. ويُفترض أن تكون هذه العملة هي نفسها عملة الأسعار الليلية. إذا كان fixed_amount_per_night أكبر من السعر الليلي، يتم تخفيض السعر الليلي إلى صفر، أي لا يمكن أن يؤدي الخصم إلى أن يصبح السعر الليلي سالبًا.

أمثلة:

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

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

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

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

  • إذا كنّا نحدّد سعر الإقامة لمدة 3 ليالٍ وكانت قيم AmountAfterTax هي 100 و110 و120، وكانت قيمة fixed_amount هي 300،

    promotion rate = 300

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

يجب توفير قيمة واحدة فقط من القيم percentage أو percentage_of_base أو fixed_amount أو fixed_amount_per_night أو fixed_price أو fixed_price_per_night.

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

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

في حال تحديد applied_nights، سيتم تطبيق السعر الجديد على أرخص N ليلة.

أمثلة:

  • إذا كنّا نحدّد سعر إقامة لليلتَين حيث تكون قيم AmountBeforeTax هي 90 و90، وقيم AmountAfterTax هي 100 و100، وقيمة fixed_price هي 80، يكون سعر العرض الترويجي 80 + 80 = 160.
  • إذا كنا نحدّد سعر إقامة لمدة ليلتَين حيث AmountBeforeTax هو 100، 100؛ fixed_amount هو 80، ويحدّد TaxFeeInfo ضريبة بنسبة %8، يكون سعر العرض الترويجي هو (80 + 80) * 1.08 = 172.8.
  • إذا كنّا نحدّد سعر إقامة لمدة 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 هي "صحيح")، سيكون هناك جزآن من ليالي الإقامة: الليلة الأولى إلى الليلة الرابعة، واللّيلة الخامسة إلى الليلة الثامنة، أما الليلة التاسعة واللّيلة العاشرة، فلا تشكّلان جزءًا من ليالي الإقامة.

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

أمثلة:

  • إذا كان سعر الإقامة لليلة واحدة هو 100 دولار أمريكي وكانت قيمة percentage هي 20 دولار أمريكي، يكون المبلغ الذي سيتم تحصيله هوAmountAfterTax

    سعر العرض الترويجي = 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 سعر ليلة واحدة (أو 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 تحدّد هذه السمة خطة أسعار. يتم تحديد خطة الأسعار من خلال مجموعة من الحزم والأسعار ومدى التوفّر، كما هو موضّح في الرسائل Transaction (Property Data) و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> في رسالة "معاملة" (بيانات الموقع). الحد الأقصى لعدد الأحرف المسموح به هو 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>

‫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 أو بعدها في اليوم الثاني قبل تاريخ الوصول.

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingWindow min="P1DT6H" max="P2DT12H"/>
      <Discount percentage="20"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


Booking Dates DateTime Bounds

يعرض المثال التالي حالة يتم فيها استخدام العنصر BookingDates مع السمتَين start وend كنوعَي DateTime. يتطلّب قيد تاريخ الحجز هذا أن يتم الحجز بين الساعة 6:30 صباحًا من يوم 2020-07-01 والساعة 6:45 مساءً من يوم 2020-07-02.

<?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 ديسمبر و2 يناير، بغض النظر عن السنة. إنّ النطاقات الزمنية التي لا تتضمّن سنة وتعبر حدود السنة الجديدة تكون غير صالحة، لذا يتم التعبير عن DateRange كنطاقَين زمنيَّين متجاورَين.

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



FreeNights discount

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

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

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

  • ‫2022-01-01 (إقامة)
  • ‫2022-01-02 (إقامة)
  • 2022-01-03
  • ‫2022-01-04 (بسعر مخفَّض)
  • ‫2022-01-05 (إقامة)
  • ‫2022-01-06 (إقامة)
<?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

يقدّم المثال التالي خصمًا على إقامة ليلتَين من خلال تطبيق 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>