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

الطلبات

البنية

تستخدم الرسالة 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>
      <!-- Add Loyalty point information -->
      <MilesIncluded>
        <LoyaltyCampaignID>campaign-ID</LoyaltyCampaignID>
        <!-- (Optional) Use <NumberOfMiles> if the rate plan earns fixed loyalty rewards-->
        <NumberOfMiles>integer</NumberOfMiles>
      </MilesIncluded>
      <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>

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

تتضمّن رسالة &quot;المعاملة (بيانات الموقع)&quot; العناصر والسمات التالية:

العنصر / @السمة عدد مرات الظهور النوع الوصف
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 حاوية لتحديد أنواع الغرف والحِزم لمكان مخصّص للاستئجار واحد

ننصحك بإرسال <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 مع 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 / MilesIncluded 0..1 MilesIncluded أضِف معلومات نقاط الولاء إلى الحِزم استنادًا إلى طريقة تحديد خطط الأسعار أو الحِزم. حدِّد العنصر <MilesIncluded> ضمن العنصر <PackageData> الذي يحدّد خطة الأسعار. يتضمّن <MilesIncluded> العنصر الثانوي التالي:
  • LoyaltyCampaignID: معرّف فريد يحدّد حملة الولاء المحدّدة التي تم إعدادها وتعديلها باستخدام Google. تضيف هذه الميزة نقاط الولاء إلى سعر الفندق.

    لتضمين العنصر <MilesIncluded>، يجب ضبط رقم تعريف الحملة في إعدادات "حملة برنامج الولاء". تحدّد إعدادات &quot;حملة الولاء&quot; التفاصيل المحدّدة حول كيفية استخدام Google لنقاط الولاء في النتائج.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
    </MilesIncluded>

    ملاحظة: في حالات نادرة، يمكنك تضمين <NumberOfMiles> ضمن العنصر <MilesIncluded> لتحديد أنّ الخطة تحقّق دائمًا عددًا ثابتًا من النقاط، بغض النظر عن خطة الرحلة. مزيد من المعلومات عن <MilesIncluded> في <PackageData>

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

أمثلة

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

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