نظرة عامة
تتيح لك واجهة برمجة التطبيقات هذه تحديد الخصومات المحتملة. من بين العروض الترويجية المحدّدة، تطبّق 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, 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" 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>
العناصر والسمات
تحتوي رسالة العروض الترويجية على العناصر والسمات التالية:
العنصر / @Attribute | عدد مرات الظهور | النوع | الوصف |
---|---|---|---|
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>
في خلاصة قوائم الفنادق مُدرَج أيضًا رقم تعريف الفندق في مركز إدارة معلومات الفنادق. |
Promotions / HotelPromotions / @action | 0..1 | enum | في حال تحديدها، يجب أن تكون القيمة
في حال عدم تحديد قيمة لهذه السمة، يكون كل عرض ترويجي محدّد في الرسالة الحالية هو:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | عرض ترويجي واحد لفندق. يُرجى العلم أنّه في حال عدم تحديد
إذا كنت بحاجة إلى استخدام أكثر من 99 عرضًا ترويجيًا، يُرجى التواصل مع المدير التقني للحساب. |
Promotions / HotelPromotions / Promotion / @id | 1 | string | معرّف فريد للعرض الترويجي الحد الأقصى لعدد الأحرف المسموح بها هي 40. الأحرف المسموح بها هي a-z وA-Z و0-9 و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 / @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
messages.) |
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 | تمثّل هذه السمة نوع مواصفات Userالبُلدان.
القيم الصالحة هي في حال ضبط سمة "بلدان المستخدم إذا كانت قيمة Userالبُلدان وفي حال ترك سمة Userالبُلدان |
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 Duration
الكتابة. تتطلّب فترة الحجز هذه الحجز بحلول الساعة 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، بغض النظر عن السنة. بدون عام
النطاقات الزمنية التي تعبر حدود السنة الجديدة غير صالحة، وبالتالي يمكن أن يكون النطاق الزمني
ويتم التعبير عنها في نطاقين زمنيين متجاورين.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<CheckInDates>
<DateRange start="12-29" end="12-31"/>
<DateRange start="01-01" end="01-02"/>
</CheckInDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
خصم على FreeNights
يقدم المثال التالي تخفيضًا على ليلتين بنسبة 50٪ لكل أربع ليالٍ تم إقامة إقامة لمدة ليلتين النطاق المحدد لتواريخ الحجز. بالنسبة لمسار رحلة مدته عشر ليالٍ، يكون إجمالي ثم تخفيض السعر بنسبة 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 (إقامة)
- 2022-01-02 (stay)
- 2022-01-03
- 2022-01-04 (discounted)
- 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 إجمالاً يمكن الجمع بين أفضل الخصومات اليومية.
لأنّ "مهرجان" تم ضبط نوع التكديس على 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
على العناصر والسمات التالية:
العنصر / @Attribute | عدد مرات الظهور | النوع | الوصف |
---|---|---|---|
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>