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

طلبات

البنية

تستخدم الرسالة 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>

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

تحتوي رسالة المعاملة (بيانات الموقع) على العناصر والسمات التالية:

العنصر / @Attribute عدد مرات الظهور النوع الوصف
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> في خلاصة قائمة الفنادق. يكون رقم تعريف الفندق مُدرَجًا أيضًا في مركز إدارة معلومات الفنادق.
Transaction / PropertyDataSet / RoomData 0..n RoomData

وصف غرفة.

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

Transaction / PropertyDataSet / RoomData / RoomID 1 RoomID معرّف فريد لنوع من الغرف تتم الإشارة إلى هذه القيمة باستخدام السمة InvTypeCode في العنصر <StatusApplicationControl> في رسائل <OTA_HotelAvailNotifRQ> و<OTA_HotelRateAmountNotifRQ>.
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 تُحدِّد هذه السياسة قيمة RoomID لنوع غرفة يمكن دمجها مع خطة السعر هذه. يتم تحديد نوع الغرفة في عنصر <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 true.

لكي تعمل فلاتر الوجبات (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>، ولكن للحزمة (مثل صور الوجبات).

أمثلة

بيانات الغرف والحزمة

فيما يلي مثال أساسي على كيفية تحديد بيانات غرفة وحزمة موقع في رسالة المعاملة (بيانات الموقع). تُستخدَم السمة 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 الرسالة المعروضة. يُرجى العِلم أنّ إزالة بيانات الحزمة تؤثّر في خطة السعر الإجمالي على النحو المحدّد في رسائل "المعاملات (بيانات الموقع)" و"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) على العناصر والسمات التالية:

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