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

طلبات

البنية

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

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

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>