المعاملة (بيانات الموقع)

الطلبات

البنية

تستخدم رسالة Transaction (Property Data) البنية التالية:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp"
             id="message_ID"
             partner="partner_key">
  <PropertyDataSet action="[overlay|delta]">
    <!-- (Required) ID that matches the Hotel List Feed -->
    <Property>HotelID</Property>
    <RoomData>
      <!-- (Required) One room ID per RoomData element -->
      <RoomID>RoomID</RoomID>
      <Name>
        <Text text="room_name" language="language_code"/>
      </Name>
      <Description>
        <Text text="room_description" language="language_code"/>
      </Description>
      <!-- (Optional) Restricts the rate plans allowed for this room type to
        those listed here. If specified, don't specify AllowableRoomIDs. -->
      <AllowablePackageIDs>
        <AllowablePackageID>PackageID</AllowablePackageID>
      </AllowablePackageIDs>
      <Capacity>max_number_of_occupants</Capacity>
      <AdultCapacity>max_number_of_adult_occupants</AdultCapacity>
      <ChildCapacity>max_number_of_child_occupants</ChildCapacity>
      <OccupancySettings>
        <MinOccupancy>min_number_of_occupants</MinOccupancy>
        <MinAge>min_age_of_occupants</MinAge>
      </OccupancySettings>
      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
        <Beds>
           <Bed size="[single|semi_double|double|queen|king]">
             <Width unit="cm" number="bed_width"/>
             <Length unit="cm" number="bed_length"/>
           </Bed>
           <!-- Include with any additional beds. -->
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>[shared|private]</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>[smoking|non_smoking]</Smoking>
        <BathAndToilet relation="[together|separate]">
          <Bath bathtub="[false|true]" shower="[false|true]"/>
          <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <!-- (Optional) Defines the type of views from the room. -->
          <!-- Example: <OceanView/> -->
        </Views>
      </RoomFeatures>
    </RoomData>
    <PackageData>
      <!-- (Required) One package ID per PackageData element -->
      <PackageID>PackageID</PackageID>
      <Name>
        <Text text="package_name" language="language_code"/>
      </Name>
      <Description>
        <Text text="package_description" language="language_code"/>
      </Description>
      <!-- (Optional) Restricts the room types allowed for this rate plan to
        those listed here. If specified, don't specify AllowablePackageIDs. -->
      <AllowableRoomIDs>
        <AllowableRoomID>RoomID</AllowableRoomID>
      </AllowableRoomIDs>
      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>
      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      ...
      <Meals>
        <Breakfast
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
        <Dinner
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
      </Meals>
      <CheckinTime>checkin_time</CheckinTime>
      <CheckoutTime>checkout_time</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

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

تحتوي رسالة Transaction (Property Data) (المعاملة (بيانات الموقع الإلكتروني)) على العناصر والسمّات التالية:

العنصر / @السمة عدد مرات الظهور النوع الوصف
Transaction 1 Complex element في عملية تنفيذ ARI، هذا هو العنصر الجذر لرسالة التي تحدّد أنواع الغرف والحزم لموقع واحد.
Transaction / @timestamp 1 DateTime تاريخ ووقت إنشاء هذه الرسالة
Transaction / @id 1 string معرّف فريد لرسالة الطلب هذه. يتم عرض هذه القيمة في رسالة الاستجابة. الأحرف المسموح بها هي a-z وA-Z و0-9 و_ (شرطة سفلية) و- (شرطة).
Transaction / @partner 1 string حساب الشريك المرتبط بهذه الرسالة. قيمة السلسلة هذه هي قيمة "مفتاح الشريك" المدرَجة في صفحة "إعدادات الحساب" في Hotel Center.

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

Transaction / PropertyDataSet 1.. PropertyDataSet حاوية لتحديد أنواع الغرف والحزم لموقع واحد
Transaction / PropertyDataSet / @action 0..1 enum

نوع التعديل الذي سيتم تطبيقه على تعريفات أسعار الغرف.

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

  • overlay : تستبدل كلّ <RoomData> و<PackageData> المحدّدة سابقًا للموقع. لا يُسمح إلا باستخدام <RoomData> و <PackageData> في الرسالة الحالية.
  • delta : تُضيف <RoomData> و<PackageData> غير المحدَّدين سابقًا أو تعدّل القيم الحالية.

هذه السمة اختيارية وتكون القيمة التلقائية لها هي delta في حال عدم تحديد قيمة لها.

Transaction / PropertyDataSet / Property 1 string المعرّف الفريد للمكان يجب أن تتطابق هذه القيمة مع معرّف الفندق المحدّد باستخدام <id> في عنصر <listing> في خلاصة بيانات الفنادق. يظهر رقم تعريف الفندق أيضًا في Hotel Center.
Transaction / PropertyDataSet / RoomData 0..n RoomData

يصف غرفة.

ملاحظة: يجب توفير سمة واحدة على الأقل من <RoomData> أو <PackageData>.

Transaction / PropertyDataSet / RoomData / RoomID 1 RoomID معرّف فريد لنوع الغرفة تتم الإشارة إلى هذه القيمة باستخدام السمة InvTypeCode في عنصر <StatusApplicationControl> في رسائل <OTA_HotelAvailNotifRQ> و <OTA_HotelRateAmountNotifRQ> و <OTA_HotelInvCountNotifRQ>.
Transaction / PropertyDataSet / RoomData / Name 1 Name حاوية لاسم فئة الغرفة بلغة واحدة أو أكثر
Transaction / PropertyDataSet / RoomData / Name / Text 1..n Text تُستخدَم لتحديد اسم فئة الغرفة بلغة واحدة.
Transaction / PropertyDataSet / RoomData / Name / Text / @text 1..n string اسم فئة الغرفة باللغة المحدّدة من خلال سمة language.
Transaction / PropertyDataSet / RoomData / Description 1 Name حاوية لوصف فئة الغرفة بلغة واحدة أو أكثر
Transaction / PropertyDataSet / RoomData / Description / Text 1..n Text لتحديد وصف فئة الغرفة بلغة واحدة.
Transaction / PropertyDataSet / RoomData / Description / Text / @text 1..n string وصف فئة الغرفة باللغة المحدّدة من خلال سمة language
Transaction / PropertyDataSet / RoomData / Description / Text / @language 1..n string رمز لغة مكوّن من حرفَين
Transaction / PropertyDataSet / RoomData / AllowablePackageIDs 0..1 AllowablePackageIDs حاوية لعناصر <AllowablePackageID>

في حال تحديد <AllowablePackageIDs>، يمكن فقط دمج نوع الغرفة الذي يحدّده <RoomID> في العنصر الرئيسي <RoomData> مع خطط الأسعار التي تحدّدها عناصر <AllowablePackageID>.

في حال عدم تحديد <AllowablePackageIDs>، يمكن دمج نوع الغرفة الذي يحدّده العنصر <RoomID> في العنصر родительский <RoomData> مع أي خطة أسعار.

استخدِم إما <AllowablePackageIDs> أو <AllowableRoomIDs>، ولكن ليس كِليهما.

Transaction / PropertyDataSet / RoomData / AllowablePackageIDs / AllowablePackageID 1..n AllowablePackageID تُحدِّد PackageID لخطة أسعار يمكن دمجها مع نوع الغرفة هذا. يتم تحديد خطة الأسعار من خلال مجموعة من الحزمة والأسعار ومدى التوفّر. يتطابق العنصر PackageID مع العنصر RatePlanCode في الرسالتَين OTA_HotelRateAmountNotifRQ وOTA_HotelAvailNotifRQ.
Transaction / PropertyDataSet / RoomData / Capacity 0..1 integer الحد الأقصى لعدد البالغين والأطفال الذين يمكنهم الإقامة في الغرفة يجب أن تكون هذه القيمة أكبر من أو تساوي أي قيم NumberOfGuests ترسلها مع الأسعار.

يجب أن تكون قيمة <Capacity> عددًا صحيحًا موجبًا بين 1 و99، بما في ذلك الرقمان. يمكنك الاطّلاع على مثال هنا.

ملاحظة:في حال عدم ضبط <Capacity>، يتم اعتبار عدد المقيمين المسموح بهم غير محدود. في حال عدم ضبط قيمة هذا الحقل وتحديد ExtraGuestCharges أو AdditionalGuestAmounts، يمكن إنشاء أسعار لأي عدد من النزلاء. ننصح بضبط <Capacity> إذا تم تحديد ExtraGuestCharges أو AdditionalGuestAmounts لضمان عدم عرض الأسعار لاختيارات الإشغال غير الصالحة.

Transaction / PropertyDataSet / RoomData / AdultCapacity 0..1 integer الحد الأقصى لعدد البالغين الذين يمكن أن تستوعبهم الغرفة بشكلٍ جسدي. يجب أن تكون هذه القيمة أكبر من أو تساوي أي قيم NumberOfGuests ترسلها مع الأسعار.

يجب أن تكون قيمة <AdultCapacity> عددًا صحيحًا موجبًا بين 1 و99، بما في ذلك الرقمان. يمكنك الاطّلاع على مثال هنا.

Transaction / PropertyDataSet / RoomData / ChildCapacity 0..1 integer الحد الأقصى لعدد الأطفال الذين يمكن أن تستوعبه الغرفة بشكلٍ جسدي.

يجب أن تكون قيمة <ChildCapacity> عددًا صحيحًا موجبًا بين 1 و99، بما في ذلك. يمكنك الاطّلاع على مثال هنا.

Transaction / PropertyDataSet / RoomData / OccupancySettings 0..1 OccupancySettings الإعدادات التي يمكنها فرض قيود على متطلبات الإشغال في الغرفة أو تعديلها

يأخذ العنصر <OccupancySettings> العناصر الفرعية التالية:

  • <MinOccupancy>: الحد الأدنى لعدد النزلاء الذين يمكنهم الإقامة في الغرفة على سبيل المثال، إذا تم ضبط هذا الخيار على 2، لا يمكن حجز هذه الغرفة لضيف واحد.

    يجب أن تكون قيمة <MinOccupancy> عددًا صحيحًا موجبًا بين 1 و99، بما في ذلك.

  • <MinAge>: الحد الأدنى للسن المسموح به لجميع النزلاء المقيمين في الغرفة على سبيل المثال، إذا تم ضبط هذا الخيار على 18، لا يمكن حجز هذه الغرفة إلا للمجموعات التي يبلغ عمر جميع النزلاء فيها 18 عامًا أو أكثر.

    يجب أن تكون قيمة <MinAge> عددًا صحيحًا موجبًا بين 0 و99، بما في ذلك.

<OccupancySettings>
  <MinOccupancy>2</MinOccupancy>
  <MinAge>16</MinAge>
</OccupancySettings>

ولا يلزم تضمين جميع العناصر الفرعية.

Transaction / PropertyDataSet / RoomData / PhotoURL 0..n PhotoURL عنوان URL وتعليق اختياري لصورة الغرفة المحدّدة أو حزمة الغرف يمكنك تحديد أكثر من <PhotoURL> واحد لغرفة أو حزمة غرف.

يقبل هذا العنصر العناصر الفرعية التالية:

  • <URL>: لتحديد الموقع الجغرافي للصورة يجب أن يكون الموقع الجغرافي متاحًا للجميع (وألا يكون محميًا بجدار حماية) وأن يتضمّن البروتوكول (http://).
  • <Caption>: لتحديد شرح الصورة. يقبل هذا العنصر عنصرًا فرعيًا واحدًا، وهو <Text>، الذي يحتوي على سمتَين مطلوبتَين، وهما Text و language. سمة Text هي الترجمة، وسمة language تحدّد رمز لغة مكوّنًا من حرفَين مثل en.
<PhotoURL>
 <URL>http://www.example.com/image1.jpg</URL>
 <Caption>
  <Text text="A bright way to enjoy your
   mornin' cuppa tea." language="en"/>
  <Text text="Une façon lumineuse pour profiter
   de votre tasse de thé." language="fr"/>
 </Caption>
</PhotoURL>
Transaction / PropertyDataSet / RoomData / RoomFeatures 0..1 <RoomFeatures> يحتوي على معلومات عن ميزات الغرفة.
Transaction / PropertyDataSet / RoomData / RoomFeatures / JapaneseHotelRoomStyle 0..1 enum

يشير إلى أسلوب غرفة فندق يابانية.

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

  • western: غرفة على الطراز الغربي تحتوي على أسرّة
  • japanese: غرفة على الطراز الياباني تحتوي على أسرّة فوتون
  • japanese_western: غرفة على الطراز الياباني الغربي مع سريرَين على الطراز الغربي ومقاعد فوتون على الطراز الياباني
Transaction / PropertyDataSet / RoomData / RoomFeatures / Beds 0..1 Object يحتوي على عدد <Bed> يساوي عدد الغرف. يُرجى العلم أنّه لا يجب احتساب أسرّة الفوتون اليابانية هنا.

تحتوي كل سمة <Bed> على السمات التالية:

  • size (اختياري): القيم الصالحة هي single semi_double وdouble وqueen king.
يحتوي كل عنصر <Bed> على العناصر الفرعية التالية:
  • <Width> (اختيارية): تحدّد هذه السمة عرض السرير. يجب أن تحتوي على السمة unit بالقيمة cm والسمة number التي تحتوي على عرض السرير بالسنتيمترات.
  • <Length> (اختيارية): تحدّد طول السرير. يجب أن تحتوي على السمة unit بالقيمة cm والسمة number بطول السرير بالسنتيمترات الصحيحة.
مثال:
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
Transaction / PropertyDataSet / RoomData / RoomFeatures / Suite 0.. enum قدِّم هذا العنصر عندما تكون هذه الغرفة جناحًا.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Capsule 0..1 enum قدِّم هذا العنصر عندما تكون هذه الغرفة غرفة كبسولية.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Roomsharing 0..1 enum ما إذا كانت هذه الغرفة مشترَكة مع نزلاء آخرين، مثل المالكين أو الضيوف الآخرين القيم الصالحة هي shared وprivate.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Outdoor 0..1 enum قدِّم هذا العنصر عندما تكون هذه الغرفة مكان إقامة في الهواء الطلق لا يتضمّن جدرانًا ثابتة وأنظمة صرف صحي وأجهزة تحكّم في المناخ. على سبيل المثال، غرف الفنادق ليست أماكن إقامة في الهواء الطلق، في حين أنّ مواقع التخييم التي يقيم فيها النزلاء في الخيام والمتنزّهات للمركبات الترفيهية التي يحضر فيها النزلاء المركبات الترفيهية الخاصة بهم هي أماكن إقامة في الهواء الطلق.
Transaction / PropertyDataSet / RoomData / RoomFeatures / MobileAccessible 0..1 enum قدِّم هذا العنصر عندما تكون هذه الغرفة متاحة للأشخاص الذين يعانون من عجز في الحركة.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Smoking 0..1 enum ما إذا كانت هذه الغرفة مخصّصة لغير المدخنين أو للمدخنين القيم الصالحة هي non_smoking وsmoking.
Transaction / PropertyDataSet / RoomData / RoomFeatures / BathAndToilet 0..1 Object يحتوي على معلومات عن حوض الاستحمام والمرحاض في الغرفة.

السمة هي:

  • relation (اختياري): يشير إلى كيفية وضع الحمام والمرحاض بالنسبة إلى بعضهما. القيم الصالحة هي together، على سبيل المثال، حمام يتضمّن كليًا الحمام والمرحاض في الغرفة نفسها، و separate، حيث يكون لكل من الحمام والمرحاض مساحة مخصّصة. يجب عدم ضبط هذه السمة عندما لا تحتوي الغرفة على حوض استحمام ومرحاض.

يقبل العنصر اختياريًا العناصر الفرعية التالية:

  • <Bath> (اختياري): يشير وجود هذا العنصر إلى أنّ الغرفة تحتوي على حمام.

    السمات هي:

    • bathtub (اختيارية): تشير إلى أنّ الحمام يحتوي على حوض استحمام. القيم الصالحة هي 0 (أو false) و1 (أو true).
    • shower (اختياري): يشير إلى أنّ الحمام يحتوي على دُش. القيم الصالحة هي 0 (أو false) و 1 (أو true).
  • <Toilet> (اختياري): يشير وجود هذا العنصر إلى أنّ هذه الغرفة تحتوي على مرحاض.

    السمات هي:

    • electronic_bidet (اختياري): يشير إلى أنّ المرحاض يحتوي على بيديه إلكتروني. القيم الصالحة هي 0 (أو false) و 1 (أو true).
    • mobility_accessible (اختياري): يشير إلى أنّه يمكن للأشخاص الذين يعانون من عجز التنقّل استخدام المرحاض. القيم الصالحة هي 0 (أو false) و1 (أو true).

مثال:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
Transaction / PropertyDataSet / RoomData / RoomFeatures / OpenAirBath 0..1 enum قدِّم هذا العنصر عندما تحتوي هذه الغرفة على حمام خاص في الهواء الطلق.
Transaction / PropertyDataSet / RoomData / RoomFeatures / AirConditioning 0..1 enum قدِّم هذا العنصر عندما تحتوي هذه الغرفة على مكيّف هواء.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Balcony 0..1 enum قدِّم هذا العنصر عندما تحتوي هذه الغرفة على شرفة أو شرفة خارجية.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Views 0..1 Object تشمل الخيارات الصالحة ما يلي:

<AirportView/>
<BayView/>
<BeachView>/>
<CastleView/>
<CityView/>
<CountrysideView/>
<CourtyardView/>
<DuneView/>
<ForestView/>
<GardenView/>
<GolfCourseView/>
<HarborView/>
<LagoonView/>
<LakeView/>
<MarinaView/>
<MountainView/>
<NatureView/>
<OceanView/>
<ParkView/>
<PartialOceanView/>
<PisteView/>
<PoolView/>
<PyramidView/>
<RiverView/>
<StreetView/>

Transaction / PropertyDataSet / PackageData 0..n PackageData

حاوية للعناصر التي تصف ميزات الأسعار والأحكام التي ليست جزءًا من وصف الغرفة المادي

ملاحظة: يجب توفير سمة واحدة على الأقل من <RoomData> أو <PackageData>.

Transaction / PropertyDataSet / PackageData / PackageID 1 string يتوافق العنصر PackageID في هذه الرسائل مع العنصر RatePlanCode في الرسالتَين OTA_HotelRateAmountNotifRQ و OTA_HotelAvailNotifRQ.
Transaction / PropertyDataSet / PackageData / Name 1 Name حاوية لاسم الحزمة بلغة واحدة أو أكثر
Transaction / PropertyDataSet / PackageData / Name / Text 1..n Text تُستخدَم لتحديد اسم الحزمة بلغة واحدة.
Transaction / PropertyDataSet / PackageData / Name / Text / @text 1..n string اسم الحزمة باللغة المحدّدة من خلال سمة language.
Transaction / PropertyDataSet / PackageData / Description 1 Description حاوية لوصف الحزمة بلغة واحدة أو أكثر
Transaction / PropertyDataSet / PackageData / Description / Text 1..n Text تُستخدَم لتحديد وصف الحزمة بلغة واحدة.
Transaction / PropertyDataSet / PackageData / Description / Text / @text 1..n string وصف الحزمة باللغة المحدّدة في سمة language
Transaction / PropertyDataSet / PackageData / Description / Text / @language 1..n string رمز لغة مكوّن من حرفَين
Transaction / PropertyDataSet / PackageData / AllowableRoomIDs 0..1 AllowableRoomIDs حاوية لعناصر <AllowableRoomID>

في حال تحديد <AllowableRoomIDs>، لا يمكن دمج خطة الأسعار التي تم تحديدها من خلال <PackageID> في العنصر الرئيسي <PackageData> إلا مع أنواع الغرف التي تم تحديدها من خلال عناصر <AllowableRoomID>.

في حال عدم تحديد <AllowableRoomIDs>، يمكن دمج خطة الأسعار التي يحدّدها العنصر<PackageID> في العنصر родительский<PackageData> مع أي نوع من الغرف.

استخدِم إما <AllowablePackageIDs> أو <AllowableRoomIDs>، ولكن ليس كِليهما.

Transaction / PropertyDataSet / PackageData / AllowableRoomIDs / AllowableRoomID 1..n AllowableRoomID تحدِّد هذه السمة رقم تعريف الغرفة لنوع الغرفة الذي يمكن دمجه مع خطة أسعار هذه. يتم تحديد نوع الغرفة في عنصر <RoomData>.
Transaction / PropertyDataSet / PackageData / Refundable 0..1 Refundable يتيح هذا الخيار إدراج سعر على أنّه قابل للاسترداد بالكامل أو الإلغاء. وفي حال عدم تقديمها، لن يتم عرض أي معلومات عن ردّ الأموال.

ملاحظة: ننصحك بضبط جميع السمات. يتم إنشاء رسالة تحذير بشأن حالة الخلاصة عند عدم ضبط سمة واحدة أو أكثر.

في حال عدم ضبط أي سمات، لن يظهر السعر على أنّه قابل للاسترداد.

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

  • إذا لم يتم ضبط available أو refundable_until_days ، لن يظهر السعر على أنّه قابل للاسترداد.
  • إذا كان available هو 0 أو false، يتم تجاهل السمات الأخرى. لا يتم عرض السعر على أنّه قابل للاسترداد حتى إذا تم ضبط سمة واحدة أو كلتا السمتَين الأخرىَين.
Transaction / PropertyDataSet / PackageData / 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، بما في ذلك هذين الرقمَين.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_time 0.. Time (ننصح بشدة باستخدام هذا الحقل إذا كان available يساوي true) لتحديد آخر وقت بالتوقيت المحلي للفندق يمكن فيه قبول طلب ردّ الأموال بالكامل. يمكن دمج ذلك مع refundable_until_days لتحديد، مثلاً، "تتوفّر إمكانية ردّ الأموال حتى الساعة 4:00 مساءً قبل يومين من تسجيل الوصول". إذا لم يتم ضبط refundable_until_time، تكون القيمة التلقائية هي منتصف الليل.
Transaction / PropertyDataSet / PackageData / BreakfastIncluded 0..1 boolean تُستخدَم لتحديد ما إذا كان نوع الغرفة هذا يتضمّن وجبة فطور. القيم الصالحة هي 0 (أو false) و1 (أو true).

يُفضَّل استخدام <Meals> بدلاً من <BreakfastIncluded>.

Transaction / PropertyDataSet / PackageData / CheckinTime 0..1 Time أقرب وقت ممكن لتسجيل الوصول بالتوقيت المحلي للفندق يجب أن يكون الوقت أقل من 24:00.
Transaction / PropertyDataSet / PackageData / CheckoutTime 0..1 Time آخر وقت ممكن للمغادرة بالتوقيت المحلي للفندق
Transaction / PropertyDataSet / PackageData / InternetIncluded 0..1 boolean لتحديد ما إذا كانت الغرفة تتضمّن خدمة إنترنت مجانية في حين لا تتضمّن الغرف الأخرى هذه الميزة لا تضبط هذا العنصر في فندق يقدّم خدمة إنترنت مجانية في جميع الغرف. لا ينطبق هذا العنصر على الإنترنت السلكي في الغرف أو الإنترنت اللاسلكي الذي لا يتوفّر في غرف النزلاء. القيم الصالحة هي 0 (أو false) و1 (أو true).
Transaction / PropertyDataSet / PackageData / Meals 0..1 Object يحتوي على معلومات عن الوجبات في هذه الحزمة.

يقبل عنصر <Meals> عنصرَين اختياريَين ثانويَين، <Breakfast> و<Dinner>، اللذَين تتضمّنان السمتَين التاليتَين:

  • included (سمة مطلوبة): اضبطها على 1 (أو true) إذا كان السعر يشمل وجبة الفطور أو العشاء، وإلا اضبطها على 0 أو false.
  • in_room (اختياري): اضبط القيمة على 1 (أو true) إذا كان بإمكان النزلاء تناول وجبة الإفطار أو العشاء في الغرفة التي يقيمون فيها، وإلا اضبط القيمة على 0 (أو false).
  • in_private_space (اختياري): اضبط القيمة على 1 (أو true) إذا كان بإمكان النزلاء تناول الإفطار/ العشاء في مساحة (باستثناء الغرفة التي يقيمون فيها) يمكنهم فيها تجنب التواصل مع النزلاء الآخرين، وإلا اضبط القيمة على 0 (أو false).
  • buffet (اختياري): اضبط القيمة على 1 (أو true) إذا كان يتم تقديم وجبة الفطور أو العشاء في بوفيه، وإلا اضبط القيمة على 0 (أو false).

لا يتم استخدام السمات الاختيارية إلا عندما يكون included صحيحًا.

لكي تعمل فلاتر الوجبات (no meals وbreakfast only dinner only وbreakfast and dinner)، يجب أن يتم تزويد كل من <Breakfast> و<Dinner> بسمة included.

Transaction / PropertyDataSet / PackageData / ParkingIncluded 0..1 boolean ما إذا كانت الغرفة تتضمّن موقف سيارات بدون رسوم، حيث تكون خدمة ركن السيارات مدفوعة في هذا الفندق لا تحدِّد قيمة لهذا العنصر في الفندق الذي يقدّم مواقف مجانية للسيارات. القيم الصالحة هي 0 (أو false) و 1 (أو true). القيمة التلقائية هي false.
Transaction / PropertyDataSet / PackageData / PhotoURL 0..1 Object (كما هو الحال مع <PhotoURL> في <RoomData>، ولكن للحزمة (مثل صور الوجبات).)

أمثلة

في ما يلي مثال أساسي على كيفية تحديد بيانات الغرف والبرامج الترفيهية في رسالة Transaction (Property Data). تُستخدَم السمة overlay لضمان حذف جميع البيانات الحالية واستبدالها بالبيانات الواردة في هذه الرسالة في حال توفّر أي بيانات بشكل غير متوقّع:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-05-18T16:20:00-04:00"
             id="12345678"
             partner="partner_key">
  <PropertyDataSet action="overlay">
    <Property>Property_1</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <Name>
        <Text text="King" language="en"/>
      </Name>
      <Description>
        <Text text="Room with a king bed" language="en"/>
      </Description>
      <Capacity>2</Capacity>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image.jpg</URL>
        <Caption>
          <Text text="Room with a king bed" language="en"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <RoomData>
      <RoomID>RoomID_2</RoomID>
      <Name>
        <Text text="Double" language="en"/>
      </Name>
      <!-- Additional RoomData child elements omitted. -->
    </RoomData>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Standard" language="en"/>
      </Name>
      <Description>
        <Text text="Standard rate" language="en"/>
      </Description>
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>0</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>PackageID_2</PackageID>
      <Name>
        <Text text="Free Breakfast" language="en"/>
      </Name>
      <Description>
        <Text text="Free breakfast rate" language="en"/>
      </Description>
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

في ما يلي مثال على كيفية إضافة نوع غرفة وحزمة إلى بيانات <Transaction> الحالية:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-18T16:20:00-04:00"
             id="12345678"
             partner="partner_key">
  <PropertyDataSet action="delta">
    <Property>Property_1</Property>
    <RoomData>
      <RoomID>RoomID_3</RoomID>
      <Name>
        <Text text="Queen" language="en"/>
      </Name>
      <!-- Additional RoomData child elements omitted. -->
    </RoomData>
    <PackageData>
      <PackageID>PackageID_3</PackageID>
      <Name>
        <Text text="Non-Refundable" language="en"/>
      </Name>
      <!-- Additional PackageData child elements omitted. -->
      <Refundable available="false"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>

في ما يلي مثال على كيفية إزالة أنواع الغرف والرحلات الحالية. في هذا السيناريو، إذا سبق أن تم إرسال الرسائل في "بيانات الغرف والحزم" و "إضافة نوع غرفة" إلى Google، لن يعود نوعا الغرف King وDouble متوفّرين بعد أن تتلقّى Google الرسالة المعروضة. يُرجى العِلم أنّ إزالة بيانات الحزمة تؤثّر في خطة الأسعار العامة على النحو المحدّد في رسائل Transaction (Property Data) وOTA_HotelRateAmountNotifRQ وOTA_HotelAvailNotifRQ (من خلال الإشارة إلى قيمةPackageID نفسها)، وبالتالي قد يكون من الضروري إجراء تعديلات مقابلة باستخدام أنواع الرسائل الأخرى للإشارة إلى أنّه لم يعُد يتم تحديدPackageID_2 وPackageID_3 هنا.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-08-18T16:20:00-04:00"
             id="12345678"
             partner="partner_key">
  <PropertyDataSet action="overlay">
    <Property>Property_1</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <Name>
        <Text text="Queen" language="en"/>
      </Name>
      <!-- Additional RoomData child elements omitted. -->
      <Capacity>2</Capacity>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image.jpg</URL>
        <Caption>
          <Text text="Room with a queen bed" language="en"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Refundable" language="en"/>
      </Name>
      <!-- Additional PackageData child elements omitted. -->
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>0</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>


في ما يلي مثال على كيفية استخدام العنصر <AllowablePackageIDs> لحصر خطط الأسعار المسموح بها لنوع غرفة معيّن. في هذا المثال، لا يمكن الجمع بين نوع الغرفة Queen (RoomID_2) إلا مع الحزمة و خطة الأسعار المحدّدة باسم PackageID_1.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-12-18T16:20:00-04:00"
             id="12345678"
             partner="partner_key">
  <PropertyDataSet action="overlay">
    <Property>Property_1</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <Name>
        <Text text="King" language="en"/>
      </Name>
      <!-- Additional RoomData child elements omitted. -->
    </RoomData>
    <RoomData>
      <RoomID>RoomID_2</RoomID>
      <Name>
        <Text text="Queen" language="en"/>
      </Name>
      <AllowablePackageIDs>
        <AllowablePackageID>PackageID_1</AllowablePackageID>
      </AllowablePackageIDs>
      <!-- Additional RoomData child elements omitted. -->
    </RoomData>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Standard" language="en"/>
      </Name>
      <!-- Additional PackageData child elements omitted. -->
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>0</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>PackageID_2</PackageID>
      <Name>
        <Text text="Free Breakfast" language="en"/>
      </Name>
      <!-- Additional PackageData child elements omitted. -->
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

في ما يلي مثال على كيفية استخدام العناصر <Capacity> و<AdultCapacity> <ChildCapacity> لفرض قيود على سعة الغرف.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-12-18T16:20:00-04:00"
             id="12345678"
             partner="partner_key">
  <PropertyDataSet action="overlay">
    <Property>Property_1</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <Name>
        <Text text="Double" language="en"/>
      </Name>
      <Capacity>4</Capacity>
      <AdultCapacity>4</AdultCapacity>
      <ChildCapacity>3</ChildCapacity>
      <!-- Additional RoomData child elements omitted. -->
    </RoomData>
  </PropertyDataSet>
</Transaction>

يمكن أن يستوعب نوع الغرفة المزدوجة (RoomID_1) ما يصل إلى 4 نزلاء كحد أقصى. بالإضافة إلى ذلك، يمكن أن يستوعب الفندق ما يصل إلى 4 بالغين و3 أطفال كحد أقصى. يجب استيفاء جميع متطلبات السعة الثلاثة لكي تكون هذه الغرفة قابلة للحجز. يمثّل هذا الإعداد غرفة عادية تحتوي على سريرَين يتسع كل منهما لفردَين. تكون سعة الإقامة للأطفال أقل بواحد من إجمالي السعة لأنّه يجب أن يكون هناك شخص بالغ واحد على الأقل في الغرفة.

أمثلة موسّعة تتضمّن <RoomFeatures> والوجبات

لا تحتوي السمة JapaneseHotelRoomStyle على قيمة تلقائية. لا يؤدي حذف قيمة إلى ظهور خطأ في ملف XML، ولكن لن يتم عرض بيانات الفندق في نتائج البحث عندما يفلتر المستخدم حسب نمط الغرفة أو الأسرة.

يوضّح المثال التالي كيفية استخدام <RoomFeatures>:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two single beds -->
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>private</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>non_smoking</Smoking>
        <BathAndToilet relation="separate">
          <Bath bathtub="1" shower="1"/>
          <Toilet electronic_bidet="1" mobility_accessible="1"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <LakeView/>
          <MarinaView/>
          <BeachView/>
          <ForestView/>
          <MountainView/>
          <NatureView/>
        </Views>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

في ما يلي مثال على غرفة على طراز western تحتوي على سريرَين double.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two double beds-->
          <Bed size="double"></Bed>
          <Bed size="double"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

في ما يلي مثال على غرفة على الطراز الياباني بدون سرير. لا يُشترط إدخال معلومات عن أسرة للغرف ذات الطراز japanese.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

في ما يلي مثال على غرفة بأسلوب japanese_western تحتوي على سرير بحجم king.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
        <Beds>
          <Bed size="king"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

إذا لم يكن لدى الشريك معلومات عن عدد الأسرّة في japanese_western الغرف، يُرجى الرجوع إلى المثال التالي:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>


يحدِّد المثال التالي البيانات الوصفية للغرفة والحزمة الخاصة بالوجبات والصور وأوقات تسجيل الوصول والمغادرة:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Meals Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <!-- Guests can choose to have breakfast in their room or in another
        space to avoid contact with other guests. -->
        <Breakfast included="1" in_room="1" in_private_space="1"/>
        <Dinner included="1" buffet="1"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <Breakfast included="true"/>
        <!-- Dinner not included needs to be explicitly specified -->
        <Dinner included="false"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

الردود

البنية

تستخدم رسالة TransactionResponse (Property Data) البنية التالية:

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

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

تحتوي رسالة TransactionResponse (Property Data) على العناصر والسمات التالية:

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

يجب استخدام إما <Success> أو <Issues> في كل رسالة.

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

يجب استخدام إما <Success> أو <Issues> في كل رسالة.

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

نوع المشكلة التي واجهتها

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

أمثلة

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

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

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

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