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

نظرة عامة

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

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

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

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

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