تعديلات المعدل

نظرة عامة

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

طلبات

البنية

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

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="partner_key"
                      id="message_ID"
                      timestamp="timestamp">
  <HotelRateModifications hotel_id="HotelID" action="[overlay]">
    <ItineraryRateModification id="ModificationID" action="[delete]">
      <BookingDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
      </BookingDates>
      <BookingWindow min="integer" max="integer"/>
      <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>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <LengthOfStay min="integer" max="integer"/>
      <MinimumAmount before_discount="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <StayDates application="[all|any]">
        <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>
      <ModificationActions>
        <PriceAdjustment multiplier="float"/>
        <RateRule id="RateRuleID"/>
        <Refundable available="[false|true]"
                       refundable_until_days="number_of_days"
                       refundable_until_time="time"/>
        <Availability status="[unavailable]"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

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

تحتوي رسالة RateModifications على العناصر والسمات التالية:

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

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

RateModifications / @id 1 string معرّف فريد لرسالة الطلب هذه يتم عرض هذه القيمة في رسالة الرد. الأحرف المسموح بها هي a-z وA-Z و0-9 و_ (شرطة سفلية) و- (شرطة).
RateModifications / @timestamp 1 DateTime تاريخ إنشاء هذه الرسالة ووقتها.
RateModifications / HotelRateModifications 0..n HotelRateModifications

تعديلات الأسعار لأحد المواقع. ينطبق كل تعديل للسعر على موقع واحد.

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

RateModifications / HotelRateModifications / @hotel_id 1 string تشير هذه السمة إلى المعرّف الفريد الخاص بالمكان المخصّص للاستئجار. يجب أن تتطابق هذه القيمة مع معرّف الفندق المحدّد باستخدام <id> في العنصر <listing> في خلاصة بيانات الفنادق. مُدرَج أيضًا رقم تعريف الفندق في مركز إدارة معلومات الفنادق.
RateModifications / HotelRateModifications / @action 0..1 enum

إذا لم يتم تحديد السمة action، ستتم إضافة التعديلات داخل هذا العنصر أو تعديلها لهذا الفندق. في حال تحديد action="overlay"، يتم أولاً حذف جميع التعديلات المحدّدة سابقًا لهذا الفندق. وبعد ذلك، تتم كتابة التعديلات المحددة هنا. في حال استخدام action="overlay" بدون تحديد أي تعديلات داخل هذا العنصر، سيتم حذف جميع التعديلات التي تم إجراؤها على هذا الفندق.

RateModifications / HotelRateModifications / ItineraryRateModification 0..200 ItineraryRateModification

تعديل سعر واحد لأحد المواقع

ملاحظة:يصعب تصحيح أخطاء تعديلات الأسعار، وننصح باستخدامها باعتدال. يُرجى التواصل مع المدير الفني لحسابك (TAM) بخصوص حالات الاستخدام التي تتطلّب إجراء أكثر من 200 تعديل على السعر.

RateModifications / HotelRateModifications / ItineraryRateModification / @id 1 string معرّف فريد لتعديل السعر الحد الأقصى لعدد الأحرف المسموح به هو 40 حرفًا. الأحرف المسموح بها هي a-z وA-Z و0-9 و_ (شرطة سفلية) و- (شرطة) و . (نقطة).
RateModifications / HotelRateModifications / ItineraryRateModification / @action 0..1 enum

وإذا لم يتم تحديد السعر ولم يتم تخزين تعديل السعر باستخدام id نفسه، سيتم تخزين تعديل السعر هذا. وإذا لم يتم تحديده وتم تخزين تعديل السعر مع سمة id نفسها، سيتم تعديل السعر الحالي.

وفي حال تحديدها، يجب أن تكون القيمة "delete". إذا تم تحديد "delete"، سيتم حذف تعديل السعر المُخزَّن مع id نفسه. عند استخدام "delete"، لا تضمِّن أي عناصر فرعية في <ItineraryRateModification>. ولا يُسمح أيضًا باستخدام السمة "delete" مع السمة <HotelRateModifications action="overlay"/>.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates 0..1 BookingDates تمثّل هذه السمة حاوية لنطاق زمني واحد أو أكثر تحدِّد وقت إجراء الحجز ليتم تطبيق تعديل السعر.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange 1..99 DateRange نطاق زمني يحدّد وقت إجراء الحجز ليتم تطبيق تعديل السعر.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start 0..1 Date تاريخ البدء (استنادًا إلى المنطقة الزمنية للموقع)، ويشمل ذلك النطاق الزمني. ويجب أن يكون هذا التاريخ قبل تاريخ end أو مطابقًا له. إذا لم يتم تحديد السمة start، يصبح النطاق الزمني غير محدود فعليًا من حيث تاريخ البدء.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end 0..1 Date تاريخ الانتهاء (استنادًا إلى المنطقة الزمنية للموقع)، ويشمل ذلك النطاق الزمني. ويجب أن يتطابق هذا التاريخ مع تاريخ start أو بعده. إذا لم يتم تحديد السمة end، يصبح النطاق الزمني غير محدود فعليًا من حيث تاريخ الانتهاء.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @days_of_week 0..1 string

أيام الأسبوع المسموح بها في النطاق الزمني. إذا لم يتم تحديده، سيتم السماح بجميع الأيام في النطاق الزمني. ويحدّد كل حرف في السلسلة يومًا. على سبيل المثال، يحدّد "MTWHF" أنّ أيام الأسبوع مسموح بها في النطاق الزمني.

الأحرف الصالحة هي:

  • M ليوم الاثنين
  • T يوم الثلاثاء
  • W يوم الأربعاء
  • H يوم الخميس
  • F يوم الجمعة
  • S ليوم السبت
  • U ليوم الأحد

أي تركيبة أحرف صالحة.

RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow 0..1 BookingWindow تحدّد هذه السمة الفترة الزمنية التي يجب أن يحدث فيها الحجز بالنسبة إلى تاريخ تسجيل الوصول (استنادًا إلى المنطقة الزمنية للموقع). على سبيل المثال، يمكن ضبط فترة الحجز على 7 أيام على الأقل، ولكن ليس أكثر من 180 يومًا، قبل تسجيل الوصول.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @min 0..1 integer تمثّل هذه السمة الحد الأدنى لعدد الأيام قبل تسجيل الوصول، ويجب أن يتم الحجز خلالها ليتم تطبيق تعديل السعر. وإذا لم يتم تحديد قيمة السمة، ما مِن حد أدنى.
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max 0..1 integer تمثّل هذه السمة الحد الأقصى لعدد الأيام قبل تسجيل الوصول التي يجب أن يتم خلالها الحجز ليتم تطبيق تعديل السعر. وإذا لم يتم تحديد قيمة السمة، لن يكون هناك حد أقصى.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates 0..1 CheckinDates تمثّل هذه السمة حاوية لنطاق زمني واحد أو أكثر تحدّد وقت تسجيل الوصول لكي يتم تطبيق تعديل السعر.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange 1..99 DateRange نطاق زمني يحدّد وقت تسجيل الوصول لكي يتم تطبيق تعديل السعر. هذا العنصر غير مطلوب في حال حذف تعديل واحد أو أكثر في الأسعار.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @start 0..1 Date تاريخ البدء (استنادًا إلى المنطقة الزمنية للموقع)، ويشمل ذلك النطاق الزمني. ويجب أن يكون هذا التاريخ قبل تاريخ end أو مطابقًا له. إذا لم يتم تحديد السمة start، يصبح النطاق الزمني غير محدود فعليًا من حيث تاريخ البدء.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end 0..1 Date تاريخ الانتهاء (استنادًا إلى المنطقة الزمنية للموقع)، ويشمل ذلك النطاق الزمني. ويجب أن يتطابق هذا التاريخ مع تاريخ start أو بعده. إذا لم يتم تحديد السمة end، يصبح النطاق الزمني غير محدود فعليًا من حيث تاريخ الانتهاء.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @days_of_week 0..1 string

أيام الأسبوع المسموح بها في النطاق الزمني. إذا لم يتم تحديده، سيتم السماح بجميع الأيام في النطاق الزمني. ويحدّد كل حرف في السلسلة يومًا. على سبيل المثال، يحدّد "MTWHF" أنّ أيام الأسبوع مسموح بها في النطاق الزمني.

الأحرف الصالحة هي:

  • M ليوم الاثنين
  • T يوم الثلاثاء
  • W يوم الأربعاء
  • H يوم الخميس
  • F يوم الجمعة
  • S ليوم السبت
  • U ليوم الأحد

أي تركيبة أحرف صالحة.

RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates 0..1 CheckoutDates يجب أن تنطبق حاوية نطاق زمني واحد أو أكثر تحدِّد وقت إتمام الدفع كي يتم تطبيق تعديل السعر.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange 1..99 DateRange نطاق زمني يحدّد وقت إتمام عملية الدفع كي يتم تطبيق تعديل السعر. هذا العنصر غير مطلوب في حال حذف تعديل واحد أو أكثر في الأسعار.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @start 0..1 Date تاريخ البدء (استنادًا إلى المنطقة الزمنية للموقع)، ويشمل ذلك النطاق الزمني. ويجب أن يكون هذا التاريخ قبل تاريخ end أو مطابقًا له. إذا لم يتم تحديد السمة start، يصبح النطاق الزمني غير محدود فعليًا من حيث تاريخ البدء.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end 0..1 Date تاريخ الانتهاء (استنادًا إلى المنطقة الزمنية للموقع)، ويشمل ذلك النطاق الزمني. ويجب أن يتطابق هذا التاريخ مع تاريخ start أو بعده. إذا لم يتم تحديد السمة end، يصبح النطاق الزمني غير محدود فعليًا من حيث تاريخ الانتهاء.
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @days_of_week 0..1 string

أيام الأسبوع المسموح بها في النطاق الزمني. إذا لم يتم تحديده، سيتم السماح بجميع الأيام في النطاق الزمني. ويحدّد كل حرف في السلسلة يومًا. على سبيل المثال، يحدّد "MTWHF" أنّ أيام الأسبوع مسموح بها في النطاق الزمني.

الأحرف الصالحة هي:

  • M ليوم الاثنين
  • T يوم الثلاثاء
  • W يوم الأربعاء
  • H يوم الخميس
  • F يوم الجمعة
  • S ليوم السبت
  • U ليوم الأحد

أي تركيبة أحرف صالحة.

RateModifications / HotelRateModifications / ItineraryRateModification / Devices 0..1 Devices تمثّل هذه السمة حاوية تعرض أجهزة المستخدمين المؤهَّلة لتعديل السعر. وفي حال تحديد السعر، لن يتم تطبيق تعديل السعر إلا إذا تطابق المستخدم مع أحد الأجهزة المدرَجة. إذا لم يتم تحديده، لن يؤدي ذلك إلى حظر تطبيق تعديل السعر.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device 1..3 Device تحدّد هذه السمة نوعًا واحدًا من أجهزة المستخدمين مؤهَّلاً لتعديل السعر.
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device / @type 1 enum نوع الجهاز يجب أن تكون القيمة desktop أو tablet أو mobile.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions 1 ModificationActions

الإجراءات التي يتم تطبيقها على السعر في حال استيفاء جميع الشروط المحدّدة.

RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment 0..1 PriceAdjustment يتم تعديل المعدّل من خلال ضرب كل من AmountBeforeTax وAmountAfterTax في المُضاعِف المحدّد.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment / @multiplier 1 float تم ضرب كل من AmountBeforeTax وAmountAfterTax في هذه القيمة.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule 0..1 RateRule يتم تعديل السعر من خلال تطبيق رقم تعريف قاعدة السعر المحددة عليه.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule / @id 1 string يطابق هذا المعرّف سعرًا مع تعريف في ملف تعريف قاعدة التقييم. ملاحظة:
  • عدد الأحرف المسموح به لهذا الحقل هو 40 حرفًا.
  • يمكن ربط كل سعر بقاعدة سعر واحدة فقط.
  • إذا كانت هناك تعديلات متعددة تطبّق رقم تعريف قاعدة أسعار، يتم تحديد السعر الذي يكون رقم تعريف قاعدة السعر الأصغر حجمًا من الناحية اللغوية.
  • إذا لم يتطابق هذا المعرّف مع قاعدة أسعار في ملف تعريف قاعدة الأسعار، سيُعتبر غير مؤهَّل.
يمكنك الاطّلاع على هذه المقالة للحصول على معلومات حول مختلف طرق معالجة واجهة المستخدم ذات الأسعار الخاصة.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable 0..1 Refundable يؤدي هذا الإجراء إلى استبدال إمكانية استرداد الأموال بنسبة مئوية إلى القيمة المحدّدة.

عند ضبط السمات، يجب مراعاة ما يلي:

  • يؤدي إجراء التعديل هذا إلى إعادة كتابة الإعداد "قابل للاسترداد" للمعدّل المؤهَّل، وليس فقط الحقول التي تمت تعبئتها.
  • في حال عدم ضبط available أو refundable_until_days، لن يظهر السعر كقابل للاسترداد.
  • إذا كانت قيمة available هي 0 أو false، يتم تجاهل السمات الأخرى. لا يظهر هذا السعر على أنّه قابل للاسترداد حتى في حال ضبط إحدى السمتَين الأخريَين أو كلتيهما.
  • ويُنصح بضبط السمة refundable_until_time، وفي حال عدم ضبطها، يتم استخدام أقرب وقت (منتصف الليل).
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @available 1 boolean (مطلوبة) اضبط القيمة على 1 أو true للإشارة إلى ما إذا كان السعر يتيح استرداد الأموال بالكامل، أو يتم ضبطها على 0 أو false.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days 0..1 integer (مطلوبة إذا كانت قيمة السمة available هي true) تحدّد عدد الأيام التي تسبق تسجيل الوصول والتي يمكن فيها طلب استرداد الأموال بالكامل. يجب أن تكون قيمة refundable_until_days عددًا صحيحًا بين 0 و330، بشكل شامل.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @refundable_until_time 0..1 Time (يُنصح باستخدامها إذا كانت قيمة السمة available هي true) تحدّد آخر وقت، حسب التوقيت المحلي للفندق، الذي يتم فيه الالتزام بطلب استرداد الأموال بالكامل. يمكن الجمع بين ذلك مع refundable_until_days لتحديد أنّ "عمليات ردّ الأموال متاحة حتى الساعة 4:00 مساءً قبل يومين من تسجيل الوصول بيومَين". إذا لم يتم ضبط السمة refundable_until_time، يتم ضبط القيمة تلقائيًا على منتصف الليل.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability 0..1 Availability استبدال توفر المعدل بالقيمة المحددة. نحن نتيح فقط ضبط السعر على unavailable.
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability / @status 1 enum إذا كانت السمة status="unavailable"، يتم التعامل مع السعر كما لو أنّه غير متوفّر، بغض النظر عمّا إذا كان هناك سعر صالح له.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay 0..1 LengthOfStay تحدّد هذه السمة حدود مدة الإقامة التي يمكن ضمنها تطبيق تعديل السعر هذا. لا يسري تعديل السعر عندما تتجاوز مدة الإقامة الحد الأدنى والحد الأقصى.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min 0..1 integer تمثّل هذه السمة الحد الأدنى لعدد الليالي المسموح بها في الإقامة ليتم تطبيق تعديل السعر. وإذا لم يتم تحديد قيمة الحقل، فلا يوجد حد أدنى.
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @max 0..1 integer تمثّل هذه السمة الحدّ الأقصى لعدد الليالي المسموح بها في الإقامة ليتم تطبيق تعديل السعر. وإذا لم يتم تحديد قيمة السمة، لن يكون هناك حدّ أقصى.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount 0..1 MinimumAmount تحدّد هذه السياسة الحد الأدنى لإجمالي أسعار الغرف اليومية (باستخدام القيمة الأكبر من AmountBeforeTax أو AmountAfterTax) التي يجب تجاوزها كي يتم تطبيق تعديل السعر.
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount 1 integer القيمة التي يجب تجاوزها ليتم تطبيق تعديل السعر.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans 0..1 RatePlans حاوية لقائمة خطط الأسعار التي ينطبق عليها تعديل الأسعار إذا لم يتم تحديد <RatePlans>، ينطبق تعديل السعر على جميع خطط الأسعار.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan 1..n RatePlan تحدّد خطة أسعار. يتم تحديد خطة الأسعار من خلال مجموعة تشمل الحزمة والأسعار ومدى التوفّر، على النحو المحدّد في رسائل المعاملات (بيانات الموقع) وOTA_HotelRateAmountNotifRQ وOTA_HotelAvailNotifRQ، وعلى النحو المحدّد في PackageID.
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan / @id 1 string المعرّف الفريد لخطة الأسعار يتم ربط هذه القيمة بقيمة PackageID في <PackageData> في رسالة المعاملة (بيانات الموقع)، وفي السمة RatePlanCode في <StatusApplicationControl> في رسالتَي <OTA_HotelRateAmountNotifRQ> و<OTA_HotelAvailNotifRQ>. الحد الأقصى لعدد الأحرف المسموح به هو 50 حرفًا.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes 0..1 RoomTypes حاوية لقائمة بأنواع الغرف التي ينطبق عليها تعديل السعر يتم تطبيق تعديل السعر على كل <RoomType> محدّد. وإذا لم يتم تحديد <RoomTypes>، سيتم تعديل السعر على جميع الغرف.
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType 1..n RoomType تحدِّد هذه السياسة نوع الغرفة. يتم تحديد نوع الغرفة في عنصر <RoomData> في رسالة المعاملة (بيانات الموقع)، وتتم الإشارة إليه باستخدام قيمة <RoomID>. (تتم الإشارة إلى قيمة <RoomID> أيضًا من خلال السمة InvTypeCode في رسائل OTA_HotelRateAmountNotifRQ).
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType / @id 1 string المعرّف الفريد للمستودع (نوع الغرفة) يتم ربط هذه القيمة بـ <RoomID> في رسالة معاملة (بيانات الموقع). الحد الأقصى لعدد الأحرف المسموح به هو 50 حرفًا.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates 0..1 StayDates تمثّل هذه السمة حاوية لنطاق زمني واحد أو أكثر تحدّد كيفية تطبيق تعديل الأسعار، مثل لاستيعاب السعر الموسمي.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / @application 1 enum

تصف كيفية تطبيق تعديل الأسعار.

القيم الصالحة هي:

  • all: يطبّق تعديل السعر على كل ليلة في برنامج الرحلة إذا تداخلت جميع التواريخ في برنامج الرحلة مع تواريخ الإقامة.
  • any: يطبّق تعديل السعر على جميع الليالي في برنامج الرحلة إذا تداخل أي تاريخ في برنامج الرحلة مع تاريخ في النطاق تواريخ الإقامة.

يجب تحديد هذه السمة دائمًا.

RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange 1..99 DateRange نطاق زمني يحدّد التواريخ التي سيتم فيها تطبيق تعديل الأسعار.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start 0..1 Date تاريخ البدء (استنادًا إلى المنطقة الزمنية للموقع)، ويشمل ذلك النطاق الزمني. ويجب أن يكون هذا التاريخ قبل تاريخ end أو مطابقًا له. إذا لم يتم تحديد السمة start، يصبح النطاق الزمني غير محدود فعليًا من حيث تاريخ البدء.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end 0..1 Date تاريخ الانتهاء (استنادًا إلى المنطقة الزمنية للموقع)، ويشمل ذلك النطاق الزمني. ويجب أن يتطابق هذا التاريخ مع تاريخ start أو بعده. إذا لم يتم تحديد السمة end، يصبح النطاق الزمني غير محدود فعليًا من حيث تاريخ الانتهاء.
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @days_of_week 0..1 string

أيام الأسبوع المسموح بها في النطاق الزمني. إذا لم يتم تحديده، سيتم السماح بجميع الأيام في النطاق الزمني. ويحدّد كل حرف في السلسلة يومًا. على سبيل المثال، يحدّد "MTWHF" أنّ أيام الأسبوع مسموح بها في النطاق الزمني.

الأحرف الصالحة هي:

  • M ليوم الاثنين
  • T يوم الثلاثاء
  • W يوم الأربعاء
  • H يوم الخميس
  • F يوم الجمعة
  • S ليوم السبت
  • U ليوم الأحد

أي تركيبة أحرف صالحة.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries 0..1 UserCountries ولن يتم تطبيق تعديل السعر، في حال تحديده، إلا إذا كان المستخدم مقيمًا في أحد البلدان المحدّدة. وفي حال عدم تحديد السعر، يتم تطبيق تعديل السعر بغض النظر عن الموقع الجغرافي للمستخدم.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / @type 0..1 enum تمثّل هذه السمة نوع مواصفات Userالبُلدان.

القيمتان الصالحتان هما include وexclude.

في حال ضبط سمة type في Userالبُلدان على include، سيسري تعديل السعر على المستخدمين في البُلدان المُدرَجة.

إذا كانت قيمة type في Userالبُلدان هي exclude، سيسري تعديل السعر على المستخدمين خارج البُلدان المذكورة.

وفي حال ترك سمة type في بلدان المستخدم بدون ضبط، يتم التعامل معها على أنّها include، وينطبق تعديل السعر على المستخدمين في البُلدان المُدرَجة.

RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country 1..300 Country تحدّد هذه السمة بلد مستخدم مسموحًا به لتعديل السعر.
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country / @code 1 string رمز CLDR للبلد، مثل DE أو FR. يُرجى العلم أنّ رمز CLDR للبلد في بعض البلدان يختلف عن رمز البلد المكوّن من حرفَين وفقًا لمعيار ISO. بالإضافة إلى ذلك، لا يمكن استخدام رموز CLDR للمناطق.

أمثلة

الرسالة الأساسية

يعرض المثال التالي رسالة RateModifications أساسية:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-07-01" end="2023-07-31" days_of_week="MTWHF"/>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <BookingWindow min="7" max="330"/>
      <CheckinDates>
         <DateRange start="2023-10-01" end="2023-10-31" days_of_week="FSU"/>
      </CheckinDates>
      <CheckoutDates>
         <DateRange start="2023-10-08" end="2023-11-07" days_of_week="FSU"/>
      </CheckoutDates>
      <Devices>
        <Device type="mobile"/>
        <Device type="tablet"/>
      </Devices>
      <LengthOfStay min="2" max="14"/>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <UserCountries>
        <Country code="US"/>
        <Country code="GB"/>
      </UserCountries>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


حذف تعديل سعر واحد

يوضّح المثال التالي كيفية حذف تعديل سعر واحد لأحد المواقع:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1" action="delete"/>
  </HotelRateModifications>
</RateModifications>

حذف جميع تعديلات الأسعار

يوضّح المثال التالي كيفية حذف جميع تعديلات الأسعار لأحد المواقع:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
</RateModifications>


عرض جميع تعديلات الأسعار

يوضّح المثال التالي كيفية إضافة <HotelRateModifications> إلى الموقع باستخدام تعديل واحد أو أكثر من التعديلات الجديدة على السعر. عند action="overlay"، يتم حذف جميع تعديلات الأسعار المخزّنة قبل تخزين تعديلات الأسعار المحدّدة في الرسالة الحالية:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1" action="overlay"/>
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-09-01" end="2023-09-30"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier="1.2"/>
      </ModificationActions>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>

إجراءات تعديل متعددة

يوضح المثال التالي كيفية تنفيذ عدة إجراءات تعديل في وقت واحد:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <BookingDates>
         <DateRange start="2023-01-01" end="2023-02-28"/>
      </BookingDates>
      <ModificationActions>
        <PriceAdjustment multiplier=".95"/>
        <Refundable available="true"
                    refundable_until_days="1"
                    refundable_until_time="12:00:00"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


إيقاف خطة الأسعار لبلدان المستخدمين

يوضّح المثال التالي كيفية قصر خطة الأسعار على المستخدمين اليابانيين (JP) فقط:

<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
                   id="123_abc"
                   timestamp="2023-05-22T16:20:00-04:00">
  <HotelRateModifications hotel_id="Property_1">
    <ItineraryRateModification id="1">
      <RatePlans>
         <RatePlan id="jp_only"/>
      </RatePlans>
      <UserCountries type="exclude">
        <Country code="JP"/>
      </UserCountries>
      <ModificationActions>
        <Availability status="unavailable"/>
      </ModificationActions>
    </ItineraryRateModification>
  </HotelRateModifications>
</RateModifications>


الردود

البنية

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

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_key">
  <!-- Either Success or Issues will be populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code" status="issue_type"><var>issue_description</var></Issue>
  </Issues>
</RateModificationsResponse>

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

تحتوي الرسالة RateModificationsResponse على العناصر والسمات التالية:

العنصر / @Attribute عدد مرات الظهور النوع الوصف
RateModifications 1 Complex element العنصر الجذر الذي يشير إلى نجاح أو مشاكل رسالة طلب RateModifications المُستلَمة.
RateModificationsResponse / @timestamp 1 DateTime تاريخ إنشاء هذه الرسالة ووقتها.
RateModificationsResponse / @id 1 string المعرّف الفريد من رسالة RateModifications المرتبطة.
RateModificationsResponse / @partner 1 string حساب الشريك لهذه الرسالة
RateModificationsResponse / Success 0..1 Success يشير هذا الحقل إلى أنّه تمّت معالجة رسالة RateModifications بنجاح بدون تحذيرات أو أخطاء أو حالات إخفاق.

تحتوي كل رسالة على <Success> أو <Issues>.

RateModificationsResponse / Issues 0..1 Issues تمت مواجهة حاوية لمشكلة واحدة أو أكثر أثناء معالجة رسالة RateModifications.

تحتوي كل رسالة على <Success> أو <Issues>.

RateModificationsResponse / Issues / Issue 1..n Issue يشير ذلك المصطلح إلى وصف تحذير أو خطأ أو تعذُّر أثناء معالجة رسالة RateModifications. يمكن العثور على تفاصيل حول هذه المشاكل في رسائل خطأ حالة الخلاصة.
RateModificationsResponse / Issues / Issue / @code 1 integer معرِّف المشكلة.
RateModificationsResponse / Issues / Issue / @status 1 enum

نوع المشكلة التي حدثت.

القيم الصالحة هي warning وerror وfailure.

أمثلة

تم الإجراء بنجاح

في ما يلي ردّ على رسالة RateModifications تمت معالجتها بنجاح.

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</RateModificationsResponse>

المشاكل

في ما يلي الردّ على رسالة RateModifications التي لم تتم معالجتها بسبب حدوث أخطاء.

<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</RateModificationsResponse>