نظرة عامة
تتيح لك واجهة برمجة التطبيقات هذه تحديد الخصومات المحتملة. من بين العروض الترويجية المحدّدة، تطبّق 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.
إذا كان لديك نظام أساسي يقدّم خلاصات لحساب
متعدّد، يجب أن تتطابق هذه القيمة مع قيمة سمة |
Promotions / @id | 1 | string | معرّف فريد لرسالة الطلب هذه. يتم عرض هذه القيمة في رسالة الاستجابة. الأحرف المسموح بها هي a-z وA-Z و0-9 و_ (شرطة سفلية) و- (شرطة). |
Promotions / @timestamp | 1 | DateTime | تاريخ ووقت إنشاء هذه الرسالة |
Promotions / HotelPromotions | 0..n | HotelPromotions | العروض الترويجية لفندق ينطبق كل عرض ترويجي على موقع واحد. ما لم يتم استخدام |
Promotions / HotelPromotions / @hotel_id | 1 | string | المعرّف الفريد للمكان يجب أن تتطابق هذه القيمة مع
معرّف الفندق المحدّد باستخدام
<id> في عنصر <listing>
في خلاصة بيانات الفنادق. يظهر رقم تعريف الفندق أيضًا في Hotel Center. |
Promotions / HotelPromotions / @action | 0..1 | enum | في حال تحديدها، يجب أن تكون القيمة
في حال عدم تحديد هذه السمة، يكون كل عرض ترويجي محدّد في الرسالة الحالية هو:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | عرض ترويجي واحد لموقع يُرجى العلم أنّه في حال عدم تحديد
إذا كنت بحاجة إلى استخدام أكثر من 99 عرضًا ترويجيًا، يُرجى التواصل مع المدير التقني للحساب (TAM). |
Promotions / HotelPromotions / Promotion / @id | 1 | string | معرّف فريد للعرض الترويجي الحد الأقصى لعدد الأحرف المسموح به هو 40. الأحرف المسموح بها هي a-z وA-Z و0-9، _ (شرطة سفلية) و- (شرطة) و . (نقطة). |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | يجب أن تكون القيمة في حال تحديد |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | حاوية لنطاق واحد أو أكثر يحدّد وقت إجراء الحجز من أجل تطبيق العرض الترويجي |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | نطاق يحدّد وقت إجراء الحجز لكي يتم تطبيق العرض الترويجي |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date أو DateTime | تاريخ البدء أو التاريخ والوقت (استنادًا إلى المنطقة الزمنية للموقع)، شاملاً النطاق
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date أو DateTime | التاريخ أو التاريخ والوقت (استنادًا إلى المنطقة الزمنية للموقع) النهائيَين للنطاق
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | أيام الأسبوع المسموح بها في النطاق الزمني في حال عدم تحديد هذه السمة، تكون جميع الأيام مسموحًا بها في النطاق الزمني. يحدِّد كل حرف في السلسلة يومًا. على سبيل المثال، تشير القيمة "MTWHF" إلى أنّه يُسمح بأيام الأسبوع في النطاق الزمني. الأحرف الصالحة هي:
أيّ مجموعة من الأحرف صالحة. |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | تُحدِّد الفترة الزمنية التي يجب أن يتم فيها الحجز مقارنةً بتاريخ تسجيل الوصول (استنادًا إلى المنطقة الزمنية للفندق). على سبيل المثال، يمكن ضبط فترة الحجز على 7 أيام على الأقل، ولكن ليس أكثر من 180 يومًا، قبل تسجيل الوصول. |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | الحد الأدنى لمدة الحجز قبل تسجيل الوصول
ليتم تطبيق العرض الترويجي إذا لم يتم تحديد الحد الأدنى أو كانت قيمته
هي 0 ، لن يكون هناك حد أدنى.
في ما يلي أنواع القيم الصالحة:
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | الحد الأقصى لعدد الأيام قبل تاريخ تسجيل الوصول الذي يجب أن يتم الحجز فيه
ليتم تطبيق العرض الترويجي إذا لم يتم تحديد هذه السمة أو كانت قيمتها
هي 0 ، لن يكون هناك حد أقصى.
في ما يلي أنواع القيم الصالحة:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
تحدّد هذه السمة القيود المفروضة على الحد الأقصى للقيمة التي يمكن ضبط السعر عليها بعد تطبيق العروض الترويجية. يجب أن تحدّد العروض الترويجية دائمًا في حال ضبط الميزة "تجميع العروض الترويجية"، يمكن أن تنطبق عروض ترويجية متعددة تتضمّن
مثال: تحديد سعر الإقامة لمدة ليلة واحدة حيث يكون
في ما يلي ترتيب الحساب:
إنّ حقيقة أنّ 60 هو الحدّ الأقصى العام الأكثر صرامة ليست ذات صلة لأنّه لا يسري إلا على العرض الترويجي الخاص به، ولا يمكن أن يكون هناك وحده حدّ أقصى يشمل حزمة العروض الترويجية بأكملها. |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
الحدّ الأقصى للمبلغ الذي يمكن ضبطه للسعر لكل ليلة بعد تطبيق الخصم في حال تحديد عنصر يتم تطبيق |
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
تحدّد القيود على الحدّ الأدنى للقيمة التي يمكن ضبط السعر عليها بعد تطبيق العروض الترويجية. يجب أن تحدِّد العروض الترويجية دائمًا سيظل منطق في حال ضبط الميزة "تجميع العروض الترويجية"، يمكن أن تنطبق عروض ترويجية متعددة تتضمّن
مثال: تحديد سعر الإقامة لمدة ليلة واحدة حيث يكون
في ما يلي ترتيب الحساب:
إنّ حقيقة أنّ 90 هي حدّ أدنى إجمالي أكثر صرامة لا يهمّ، لأنّه لا يكون صالحًا إلا للعرض الترويجي الخاص به، ولا يمكن أن يكون هناك حدّ أدنى واحد يشمل حزمة العروض الترويجية بأكملها. |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
الحد الأدنى للمبلغ الذي يمكن ضبط سعر الليلة عليه بعد تطبيق الخصم في حال تحديد عنصر يتم تطبيق |
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | حاوية لفترات زمنية واحدة أو أكثر تحدّد وقت تسجيل الوصول ليتم تطبيق العرض الترويجي |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | نطاق زمني يحدّد وقت تسجيل الوصول لكي يتم تطبيق العرض الترويجي هذا العنصر غير مطلوب إذا كنت تحذف عرضًا ترويجيًا واحدًا أو أكثر. يُسمح أيضًا باستخدام تنسيق YearlessDate.
|
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | تاريخ البدء (استنادًا إلى المنطقة الزمنية للموقع) شاملاً
النطاق الزمني. يجب أن يكون هذا التاريخ قبل تاريخ
end أو مطابقًا له. في حال عدم تحديد start ، يكون النطاق الزمني
غير محدود بشكلٍ فعال من حيث تاريخ البدء. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | تاريخ الانتهاء (استنادًا إلى المنطقة الزمنية للموقع) شاملاً
النطاق الزمني يجب أن يكون هذا التاريخ هو نفسه تاريخ start
أو تاريخًا لاحقًا له. إذا لم يتم تحديد end ، يكون النطاق الزمني
غير محدود بشكلٍ فعال من حيث تاريخ الانتهاء. |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | أيام الأسبوع المسموح بها في النطاق الزمني في حال عدم تحديد هذه السمة، تكون جميع الأيام مسموحًا بها في النطاق الزمني. يحدِّد كل حرف في السلسلة يومًا. على سبيل المثال، تشير القيمة "MTWHF" إلى أنّه يُسمح بأيام الأسبوع في النطاق الزمني. الأحرف الصالحة هي:
أيّ مجموعة من الأحرف صالحة. |
Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | حاوية لفترات زمنية واحدة أو أكثر تحدّد وقت إتمام الدفع ليتم تطبيق العرض الترويجي |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | نطاق زمني يحدّد وقت تسجيل المغادرة لكي يتم تطبيق العرض الترويجي لا يكون هذا العنصر مطلوبًا إذا كنت بصدد حذف عرض ترويجي واحد أو أكثر. يُسمح أيضًا باستخدام تنسيق YearlessDate.
|
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | تاريخ البدء (استنادًا إلى المنطقة الزمنية للموقع) شاملاً
النطاق الزمني. يجب أن يكون هذا التاريخ قبل تاريخ
end أو مطابقًا له. في حال عدم تحديد start ، يكون النطاق الزمني
غير محدود بشكلٍ فعال من حيث تاريخ البدء. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | تاريخ الانتهاء (استنادًا إلى المنطقة الزمنية للموقع) شاملاً
النطاق الزمني يجب أن يكون هذا التاريخ هو نفسه تاريخ start
أو تاريخًا لاحقًا له. إذا لم يتم تحديد end ، يكون النطاق الزمني
غير محدود بشكلٍ فعال من حيث تاريخ الانتهاء. |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | أيام الأسبوع المسموح بها في النطاق الزمني في حال عدم تحديد هذه السمة، تكون جميع الأيام مسموحًا بها في النطاق الزمني. يحدِّد كل حرف في السلسلة يومًا. على سبيل المثال، تشير القيمة "MTWHF" إلى أنّه يُسمح بأيام الأسبوع في النطاق الزمني. الأحرف الصالحة هي:
أيّ مجموعة من الأحرف صالحة. |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | حاوية لعرض أجهزة المستخدمين المؤهَّلة للاستفادة من الميزة الترويجية إذا تم تحديده، يتم منح السعر المخفَّض للمستخدمين المؤهَّلين فقط على الأجهزة المدرَجة. إذا لم يتم تحديد جهاز معيّن، يتم تقديم السعر المخفَّض للمستخدمين المؤهّلين على أي جهاز. |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | تحدِّد هذه السمة نوعًا واحدًا من أجهزة المستخدمين المؤهَّلة للاستفادة من العرض الترويجي. |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | نوع الجهاز يجب أن تكون القيمة desktop أو
tablet أو mobile . |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | يجب تحديد سمة واحدة فقط من تُحدِّد الخصم الذي سيتم تطبيقه على هذا العرض الترويجي. |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | يجب إدخال قيمة واحدة بالضبط من قيمة عشرية من 0 إلى 100 تحدّد النسبة المئوية للخصم.
ويتم تطبيقه على أمثلة:
|
Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float | يجب إدخال قيمة واحدة بالضبط من قيمة عشرية من 0 إلى 100 تحدّد النسبة المئوية للخصم الأساسي
على غرار على عكس مثال:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | يجب إدخال قيمة واحدة بالضبط من مبلغ ثابت يتم طرحه من مجموع
أمثلة:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | يجب إدخال قيمة واحدة بالضبط من خصم ثابت يتم تطبيقه على كلّ من أمثلة:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | يجب إدخال قيمة واحدة بالضبط من في حال تحديد إذا كان المقصود من أمثلة:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | يجب إدخال قيمة واحدة بالضبط من في حال تحديد إذا كان المقصود من في حال تحديد أمثلة:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | يجب استخدام هذا الرمز فقط مع
عدد الليالي التي ينطبق عليها الخصم، بدءًا من الليلة الأقل تكلفة يجب أن تكون القيمة عددًا صحيحًا من 1 إلى 99. في حال عدم تحديد هذه السمة، يتم تطبيق الخصم على جميع الليالي. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | يحدّد هذا الخيار خصمًا على ليالٍ معيّنة من الإقامة عند استيفاء الحد الأدنى لطول الإقامة. لا يُسمح بالسمات في العنصر الرئيسي Discount
في حال استخدام هذا العنصر. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | عدد الليالي المطلوبة لتطبيق الخصم يتم تطبيق كل خصم على شريحة منفصلة من ليالي الإقامة. على سبيل المثال، بالنسبة إلى إقامة لمدة 10 ليالٍ تكون فيها قيمة |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | عدد الليالي المخفَّضة السعر ضمن كل قسم من ليالي الإقامة |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | الخصم الذي يتم تطبيقه على الليالي المخفَّضة. إذا كانت هذه القيمة
هي 50 ، يعني ذلك أنّه يتم تطبيق خصم بنسبة% 50 على كل ليلة تم اختيارها. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | يجب أن تكون القيمة cheapest أو last . إذا كان
last ، يتم تطبيق خصم على الليالي في نهاية فترة الإقامة التي تبلغ
ليالٍ. إذا كان cheapest ، يتم تطبيق خصم على
الليالي الأرخص ضمن نطاق ليالي الإقامة. |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | ما إذا كان يمكن تطبيق الخصم على شرائح متعددة للإقامة لعدة ليالٍ
إذا كان على سبيل المثال، إذا كان |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | تعيين ترتيب لهذا العرض الترويجي وتفعيله في الاختيار حسب الترتيب، حيث يتم اختيار العرض الترويجي الأقل ترتيبًا فقط لتطبيقه يجب أن تتراوح القيم بين 1 و99، بما في ذلك الرقمان. إذا كانت عدّة عروض ترويجية تشترك في الترتيب نفسه، يتم اختيار عرض ترويجي واحد بشكل عشوائي وتطبيقه. |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | يجب تحديد سمة واحدة فقط من لتحديد
خصم يومي يمكن تطبيقه على ليلة إقامة. يختلف ذلك عن يمكن أن يحتوي كلّ موقع على مجموعة واحدة من العروض الترويجية التي تُعدّ "الأفضل يوميًا". وهذا يعني أنّه لكل ليلة إقامة، يتم اختيار العرض الترويجي "الأكثر ملاءمةً" الوحيد المؤهّل الذي يقدّم العميل أكبر خصم لتلك الليلة، ويمكن تطبيقه. يمكن تحديد يمكن تحديد |
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | يجب توفير سمة واحدة بالضبط من قيمة عشرية من 0 إلى 100 تحدّد النسبة المئوية للخصم.
ويتم تطبيقه على أمثلة:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | يجب توفير سمة واحدة بالضبط من مبلغ ثابت يتم طرحه من سعر ليلة واحدة بقيمة
أمثلة:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | يجب توفير سمة واحدة بالضبط من في حال تحديد أمثلة:
|
Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | تحدِّد القيود المفروضة على عدد الغرف التي يجب أن تكون متاحة
حتى يمكن تطبيق هذا العرض الترويجي. لا ينطبق الخصم إلا على
الليالي التي تستوفي القيود. لا يُسمح باستخدامه مع
خصم fixed_amount . يُرجى العِلم أنّه يتم تحديد عدد الغرف
المتوفّرة باستخدام إما
OTA_HotelInvCountNotifRQ (InvCount )
أو OTA_HotelAvailNotifRQ
(BookingLimit ). |
Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | الحد الأدنى لعدد الغرف التي يجب أن تكون متاحة لتطبيق العرض الترويجي على السعر لكل ليلة إذا لم يتم تحديد ذلك، لن يكون هناك حد أدنى. |
Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | الحدّ الأقصى لعدد الغرف التي يجب أن تكون متاحة لكي يتم تطبيق العرض الترويجى على سعر الإقامة لليلة. إذا لم يتم تحديد هذه السمة، لن يكون هناك حدّ أقصى. |
Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | لتحديد حدود مدة الإقامة التي يمكن فيها تطبيق هذا العرض الترويجي لا يتم تطبيق العرض الترويجي عندما تكون مدة الإقامة خارج الحدّ الأدنى والحدّ الأقصى. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | الحد الأدنى لعدد الليالي المسموح به في الإقامة لتطبيق العرض الترويجيفي إذا لم يتم تحديد هذه السمة، لن يكون هناك حدّ أدنى. |
Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | الحد الأقصى لعدد الليالي المسموح بها في الإقامة لتطبيق العرض الترويجي إذا لم يتم تحديد هذه السمة، لن يكون هناك حدّ أقصى. |
Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
حاوية لقاعدة تعرفة الاشتراك التي تؤدي إلى معالجة محددة في واجهة المستخدم للخصم المرتبط يجب عدم تحديد هذا العنصر ما لم يتم تحديد
|
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 | يمكن تطبيق عروض ترويجية متعددة على سعر واحد استنادًا إلى هذا الإعداد:
من بين التركيبات المسموح بها، يتم تطبيق مجموعة العروض الترويجية التي تحقّق أكبر خصم على السعر. |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | حاوية لفترات زمنية واحدة أو أكثر تحدّد كيفية تطبيق العرض الترويجي، مثل استيعاب الخصومات الموسمية |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | يصف كيفية تطبيق العرض الترويجي. القيم الصالحة هي:
يجب تحديد هذه السمة دائمًا.
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | نطاق زمني يحدِّد تواريخ تطبيق العرض الترويجي يُسمح أيضًا باستخدام تنسيق YearlessDate.
إذا كنت تريد ضبط النطاق |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | تاريخ البدء (استنادًا إلى المنطقة الزمنية للموقع) شاملاً
النطاق الزمني. يجب أن يكون هذا التاريخ قبل تاريخ
end أو مطابقًا له. في حال عدم تحديد start ، يكون النطاق الزمني
غير محدود بشكلٍ فعال من حيث تاريخ البدء.
يجب تحديد القيمة |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | تاريخ الانتهاء (استنادًا إلى المنطقة الزمنية للموقع) شاملاً
النطاق الزمني يجب أن يكون هذا التاريخ هو نفسه تاريخ
start أو تاريخًا لاحقًا له. في حال عدم تحديد end ، يكون النطاق الزمني
غير محدود بشكلٍ فعال بدءًا من تاريخ start فصاعدًا.
يجب تحديد القيمة |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | أيام الأسبوع المسموح بها في النطاق الزمني في حال عدم تحديد هذه السمة، تكون جميع الأيام مسموحًا بها في النطاق الزمني. يحدِّد كل حرف في السلسلة يومًا. على سبيل المثال، تشير القيمة "MTWHF" إلى أنّه يُسمح بأيام الأسبوع في النطاق الزمني. الأحرف الصالحة هي:
أيّ مجموعة من الأحرف صالحة. |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | حاوية لعرض مواقع المستخدمين الجغرافية (البُلدان) المؤهّلة للعرض الترويجي إذا تم تحديده، يتم تقديم السعر المخفَّض للمستخدمين المؤهَّلين فقط في البلدان المدرَجة. إذا لم يتم تحديد بلد معيّن، يتم تقديم السعر المخفَّض للمستخدمين المؤهَّلين في أي بلد. |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | نوع مواصفات UserCountries
القيم الصالحة هي إذا تم ضبط UserCountries إذا كان UserCountries إذا لم يتم ضبط UserCountries |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | يحدِّد بلدًا واحدًا يكون فيه المستخدمون مؤهّلين للاستفادة من العرض الترويجي. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | رمز بلد
CLDR،
مثل DE أو FR يُرجى العِلم أنّ رمز بلد CLDR يختلف عن رمز بلد ISO المكوّن من حرفَين في بعض
البلدان. ولا تتوفّر أيضًا رموز مناطق 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 | يشير إلى أنّه تمت معالجة رسالة "العروض الترويجية" بنجاح
بدون تحذيرات أو أخطاء أو حالات تعذّر.
يجب استخدام إما |
PromotionsResponse / Issues | 0..1 | Issues | حاوية لمشكلة واحدة أو أكثر حدثت أثناء معالجة
رسالة "العروض الترويجية"
يتم استخدام إما |
PromotionsResponse / Issues / Issue | 1..n | Issue | وصف التحذير أو الخطأ أو العُطل الذي حدث أثناء معالجة رسالة "العروض الترويجية" يمكنك الاطّلاع على تفاصيل عن هذه المشاكل في رسائل الخطأ المتعلّقة بحالة الخلاصة. |
PromotionsResponse / Issues / Issue / @code | 1 | integer | معرّف المشكلة |
PromotionsResponse / Issues / Issue / @status | 1 | enum | نوع المشكلة التي واجهتها القيم الصالحة هي |
أمثلة
في ما يلي ردّ على رسالة "العروض الترويجية" التي تمت معالجتها بنجاح.
<?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>