RateModifications

نظرة عامة

تتيح لك واجهة برمجة التطبيقات هذه تحديد طرق لتطبيق إجراءات بشكل ديناميكي على السعر كلما تم استيفاء الشروط، مثل تعديل السعر أو إتاحة إمكانية استرداد الأموال. على عكس 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 على العناصر والسمات التالية:

العنصر / @السمة عدد مرات الظهور النوع الوصف
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> في خلاصة بيانات الفنادق. يظهر رقم تعريف الفندق أيضًا في Hotel Center.
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 تستبدل هذه السمة إمكانية استرداد الأموال للمعدّل بالقيمة المحدّدة.

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

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

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

إذا تم ضبط UserCountries type على include، ينطبق تعديل السعر على المستخدمين من البلدان المدرَجة.

إذا كانت قيمة UserCountries type هي exclude، ينطبق تعديل السعر على المستخدمين خارج البلدان المدرَجة.

في حال عدم ضبط UserCountries 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 العناصر والسمات التالية:

العنصر / @السمة عدد مرات الظهور النوع الوصف
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>