نظرة عامة
تتيح لك واجهة برمجة التطبيقات هذه تحديد الخصومات المحتملة. ومن بين العروض الترويجية المحدّدة، تطبِّق Google العرض الترويجي المؤهّل أو مجموعة العروض الترويجية التي تؤدي إلى أدنى سعر. إذا كنت تبحث عن واجهة برمجة تطبيقات تتيح إجراء تعديلات عشوائية على الأسعار يمكن أن تؤدي إلى زيادة السعر أو خفضه عند استيفاء الشروط، ننصحك بالاطّلاع على Rate Modifications API. تجدر الإشارة إلى أنّه في حال توفّر واجهتَي برمجة التطبيقات، يتم تطبيق تعديلات المعدّل قبل العروض الترويجية.
الكائن Requests
البنية
تستخدم رسالة 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 عرضًا ترويجيًا، يُرجى التواصل مع المدير الفني لحسابك (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 / @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> في رسالة المعاملة (بيانات الموقع).
الحد الأقصى لعدد الأحرف المسموح بها هو 50. |
Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | تحدّد هذه العلامة كيفية جمع العروض الترويجية. وإذا لم يتم تحديد ذلك، يُفترض أن تكون قيمة "type"
هي 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 ، يكون النطاق الزمني غير محدود فعليًا في ما يتعلق بتاريخ الانتهاء. |
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 | تمثّل هذه السمة نوع مواصفات بلدان المستخدم.
القيمتان الصالحتان هما وإذا تم ضبط السمة إذا كانت قيمة وإذا لم يتم ضبط سمة "بلدان المستخدمين" |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | تحدّد بلدًا واحدًا يكون المستخدمون فيه مؤهّلين للعرض الترويجي. |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | رمز CLDR للبلد، مثل DE أو FR يُرجى العِلم أنّه في بعض البلدان، لا يكون رمز CLDR للبلدان هو نفسه رمز البلد المكوّن من حرفَين وفقًا لمعيار ISO. ولا تتوفّر أيضًا رموز CLDR للمناطق. |
أمثلة
الرسالة الأساسية
يعرض المثال التالي رسالة 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. يتطلب فرض قيود على تاريخ الحجز أن يتم الحجز بين الساعة 06:30 صباحًا في يوم 01-07-2020 والساعة 18: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
بدون سنوات. في هذا المثال، ينطبق العرض الترويجي على
تواريخ تسجيل الوصول بين 12/29 و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٪ لكل أربع ليالٍ تبقى للنطاق المحدد لتواريخ الحجز. بالنسبة إلى برنامج رحلة مدته 10 ليالٍ، سيتم خصم إجمالي 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 (إقامة)
- 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
مع إضافة 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
، سيتم تطبيق مجموعة أفضل الخصومات اليومية أو
خصم "fiesta" فقط. يمكنك الاطّلاع على وصف
Stacking
للحصول على مزيد من المعلومات.
"بوجه عام، يحصل سعر الإقامة على خصم بقيمة 20 + 50 + 10 = 80 من المبلغ الثابت.
الردود
البنية
تستخدم رسالة PromotionsResponse
البنية التالية:
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues are populated. -->
<Success/>
<Issues>
<Issue code="issue_code"
status="issue_type">
issue_description
</Issue>
</Issues>
</PromotionsResponse>
العناصر والسمات
تحتوي رسالة PromotionsResponse
على العناصر والسمات التالية:
العنصر / @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>