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

نظرة عامة

تتيح لك واجهة برمجة التطبيقات هذه تحديد طرق لتطبيق الإجراءات ديناميكيًا على معدّل معيّن كلما تم استيفاء الشروط، مثل تعديل السعر أو تفعيل إمكانية استرداد الأموال. وعلى عكس 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 و_ (شرطة سفلية) و- (dash) و . (نقطة).
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 على القيمة include، سيسري تعديل السعر على المستخدمين من البلدان المدرَجة.

وإذا كانت قيمة السمة type في بلدان المستخدمين هي 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>