مرجع XML للأسعار ومستودع الغرف (المعاملات)

توفّر هذه الصفحة مرجعًا لرسائل المعاملات المستندة إلى XML.

<Transaction>

العنصر الجذر لرسالة المعاملة هو <Transaction>. إنها حاوية للمعلومات الوصفية حول الغرف والحزم والسعر والتوافر للغرف والحزم.

يظهر العنصر <Transaction> في المكان التالي في تسلسل XML لرسالة المعاملات:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

إنّ الرسائل التي تستخدم <Transaction> كعنصر جذر تتطلّب عنصرًا ثانويًا واحدًا على الأقل. يمكن أن تحتوي رسائل المعاملات على أي عدد من العناصر الفرعية، طالما لا يتجاوز إجمالي حجم الرسالة 100 ميغابايت.

البنية

يستخدم العنصر <Transaction> الصيغة التالية:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp" id="transaction_ID">

  <!-- Defines data about a room or package (Room Bundle) -->
  <PropertyDataSet>
    ...
  </PropertyDataSet>

  <!-- Updates/sets prices and availability for rooms and Room Bundles -->
  <!-- (Also removes itineraries from inventory) -->
  <Result>
    ...
  </Result>

</Transaction>

السمات

يحتوي العنصر <Transaction> على السمات التالية:

السمة مطلوب؟ النوع الوصف
id Required سلسلة معرّف فريد لكل رسالة حول المعاملات.
partner Optional string حساب الشريك المعنيّ برسالة "المعاملة" وتستخدم عادةً هذه الطريقة إذا كانت الخلفية توفّر خلاصات أسعار لحسابات شركاء متعددة. قيمة السلسلة هذه هي قيمة "مفتاح الشريك" المدرَجة في صفحة "إعدادات الحساب" ضمن Hotel Center.
timestamp Required DateTime

اللحظة الزمنية التي تم فيها إرسال رسالة المعاملة.

وستتم معالجة أي رسالة مُرسَلة بطابع زمني خلال الـ 24 ساعة السابقة، وسيتم تجاهل الرسائل التي لم يتم حذفها.

تتم معالجة الرسائل وفقًا لترتيب الاستلام (timestamp) وليس حسب ترتيب استلامها. على سبيل المثال، إذا تم تعديل السعر بالطابع الزمني للسمة 2019-05-03 14:09:00 والذي يتم استلامه بعد رسالة تحمل طابعًا زمنيًا للسمة 2019-05-03 14:10:00، سنواصل معالجة هذا التعديل، وسيتم استخدام السعر الوارد في الرسالة التي تحمل الطابع الزمني للسمة 2019-05-03 14:10:00.

العناصر الفرعية

يحتوي العنصر <Transaction> على العناصر الثانوية التالية:

عنصر ثانوي مطلوب؟ النوع الوصف
<PropertyDataSet> Optional* <PropertyDataSet>

تصف هذه السمة غرفة محدّدة ومجموعات غرف محدّدة. وتستخدم عادةً هذا العنصر في رسالة "معاملة" منفصلة لتحديد القيم المشتركة لحِزم الغرف وتقليل حجم رسائل "المعاملات".

<Result> Optional* <Result>

بيانات الأسعار لبرنامج رحلة الغرفة أو عنصر <RoomBundle> الذي يحدّد حزم الغرف وأنواع الغرف الإضافية في الفندق. يمكن أيضًا استخدام العنصر <Result> لإزالة برامج الرحلات من المستودع.

* يجب توفير سمة واحدة على الأقل من <PropertyDataSet> أو <Result>.

أمثلة

بيانات الغرفة

يوضِّح المثال التالي بيانات الغرفة في رسالة "معاملة":

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>5440OF</RoomID>
      <Name>
        <Text text="Single King Bed Room" language="en"/>
        <Text text="Simple Lit de Roi" language="fr"/>
      </Name>
      <Description>
        <Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
          and down comforters (bedspreads). City view. 300 square feet. Desk with
          rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
          complimentary HBO and pay movies." language="en"/>
        <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Bathroom View" language="en"/>
          <Text text="La salle de baines" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Capacity>4</Capacity>
    </RoomData>
  </PropertyDataSet>
</Transaction>

بيانات الأسعار

يوضّح المثال التالي بيانات الأسعار في رسالة "المعاملات":

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
  </Result>
</Transaction>

أسعار الإقامة في الليلة

يوضّح المثال التالي بيانات الأسعار للإقامة من ليلة واحدة إلى 7 ليالٍ اعتبارًا من 7 حزيران (يونيو) 2023:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-08-24T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">209.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">419.98</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>3</Nights>
    <Baserate currency="USD">614.97</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>4</Nights>
    <Baserate currency="USD">819.96</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>5</Nights>
    <Baserate currency="USD">999.95</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>6</Nights>
    <Baserate currency="USD">1193.94</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-07</Checkin>
    <Nights>7</Nights>
    <Baserate currency="USD">1259.93</Baserate>
    <Tax currency="USD">21.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
  </Result>
</Transaction>


الأسعار الأساسية والأسعار المشروطة

يعرض المثال التالي رسالة معاملة تحتوي على سعر أساسي وسعر مشروط:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
        <!-- NOTE: OtherFees is inherited from the above setting -->
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

إزالة المستودع

في ما يلي مثال يضيف عدة مستودعات (إقامة لمدة ليلة واحدة لعدة تواريخ مختلفة) لفندق من المستودع:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-05-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-23</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-24</Checkin>
    <Nights>1</Nights>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
  <!---Sending <Baserate> is optional with <Unavailable> -->
  <Result>
    <Property>1123581321</Property>
    <Checkin>2023-05-25</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">-1</Baserate>
    <Unavailable>
      <NoVacancy/>
    </Unavailable>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>
  </Result>
</Transaction>

<PropertyDataSet>

تمثّل هذه السمة حاوية لمعلومات الغرفة والحزمة (أو حزمة الغرفة) في رسالة <Transaction>. القيم المحدَّدة في أحد الفنادق لإلغاء القيم التي تم ضبطها من قِبل أحد الشركاء تخزِّن Google هذه المعلومات لكي لا تحتاج إلى تحديدها في كل مرة ترسل فيها تعديلات على الأسعار.

يظهر العنصر <PropertyDataSet> في المكان التالي في تسلسل XML لرسالة المعاملات:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>  // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف.

البنية

يستخدم العنصر <PropertyDataSet> الصيغة التالية:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet>
    <!-- (Required) ID that matches the Hotel List Feed -->
    <Property>hotel_ID</Property>

    <!-- (Optional) Defines metadata about a room -->
    <RoomData>
      ...
    </RoomData>

    <!-- (Optional) Defines package metadata to be paired with rooms (Room Bundles) -->
    <PackageData>
      ...
    </PackageData>
  </PropertyDataSet>
  ...
</Transaction>

السمات

لا يتضمّن العنصر <PropertyDataSet> أي سمات.

العناصر الفرعية

يحتوي العنصر <PropertyDataSet> على العناصر الثانوية التالية:

عنصر ثانوي مطلوب؟ النوع الوصف
<PackageData> Optional* <PackageData> تصف حزمة الغرف. ترتبط هذه البيانات بشريك وفندق، ولكن ليس ببرنامج رحلة. هذا العنصر يشبه السمة <RoomData>، لكنّه يصف وسائل الراحة والمصطلحات التي لا تشكّل جزءًا من وصف الغرفة.

ويمكنك الرجوع إلى معرّف الحزمة في تعديلات الأسعار.

لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف.

<Property> Required string رقم تعريف الفندق الذي تنطبق عليه البيانات المرتبطة. ويجب أن تكون قيمة هذا العنصر سلسلة تتطابق مع البيانات <id> في خلاصة بيانات الفنادق.
<RoomData> Optional* <RoomData> يصف غرفة. ترتبط هذه البيانات بشريك وفندق، ولكن ليس ببرنامج رحلة.

يمكنك الرجوع إلى رقم تعريف الغرفة في تعديلات الأسعار.

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

أمثلة

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

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

عند إرسال أسعار هذه الغرفة وحزمة الغرف ومدى توفّرها، يمكنك الاطّلاع على معرّفات الغرف والحزم في رسائل الأسعار. والنتيجة هي تقليل حجم رسائلك بشكل كبير، وكذلك تقليل كمية الأخطاء التي قد تواجهها بسبب البيانات المكررة. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف.

<RoomData>

تحدِّد البيانات الوصفية المستقلة عن برنامج الرحلة عن الغرف، وبالتالي، حِزم الغرف (لأنّ حِزم الغرف هي غرف إلى جانب وسائل راحة إضافية). استخدِم <RoomData> لتقليل تكرار البيانات الوصفية في "خلاصة الأسعار".

يظهر العنصر <RoomData> في المكان التالي في تسلسل XML لرسالة المعاملات:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

تحتوي عناصر <RoomData> على معلومات مرتبطة بشريك وفندق، ولكن ليس ببرنامج رحلة. الغرض المقصود هو جميع البيانات غير المتعلقة بمسار الرحلة.

العنصر <RoomData> مشابه للعنصر <PackageData>، لكنه يصف الغرفة الفعلية بدلاً من وسائل الراحة وبنود الطرد. يمكنك استخدام <RoomData> و<PackageData> معًا لتقديم تفاصيل عن حِزم الغرف. بالنسبة إلى الغرف الفردية التي ليست جزءًا من حزمة، استخدِم السمة <RoomData> فقط.

يمكنك تحديد كل من العنصرَين <RoomData> و<PackageData> للغرفة أو حزمة الغرف نفسها. وعندما يعرض محرك بحث Google تلك الغرفة أو الحزمة في نتائج البحث، فإنه سيتضمن الأوصاف من كليهما، مع الفصل بينها بواصلة.

لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف.

البنية

يستخدم العنصر <RoomData> الصيغة التالية:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet>
    ...
    <RoomData>
      <RoomID>room_ID</RoomID>

      <Name>
        <Text text="room_name" language="language_code"/>
        ...
      </Name>

      <Description>
        <Text text="room_description" language="language_code"/>
        ...
      </Description>

      <Capacity>max_number_of_occupants</Capacity>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults, children, or seniors --></OccupancyDetails>
      <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>
        ...
      </RoomFeatures>
    </RoomData>
    ...
  </PropertyDataSet>
</Transaction>

السمات

لا يتضمّن العنصر <RoomData> أي سمات.

العناصر الفرعية

يحتوي العنصر <RoomData> على العناصر الثانوية التالية:

عنصر ثانوي مطلوب؟ النوع الوصف
<Capacity> Optional integer الحد الأقصى لعدد النزلاء الذين يمكن للغرفة استيعابهم فعليًا. بالنسبة إلى الغرف، تكون السعة أكبر من عدد النزلاء أو تساويها.

عند تحديد هذه القيمة، يجب أن تكون هذه القيمة مساوية لقيمة العنصر <Occupancy> أو أكبر منها، وهو العدد المقصود للنزلاء في غرفة معيّنة. على سبيل المثال، قد يكون <Capacity> في جناح كبير 6، بينما يبلغ <Occupancy> له 4.

يجب أن تكون قيمة <Capacity> عددًا صحيحًا موجبًا بين 1 و20 بشكل شامل.

<Description> Optional Object وصف مفصل للغرفة. ويجب أن يتضمّن هذا العنصر معلومات لم يتم وصفها بواسطة عناصر أخرى أو العنصر <Name>. ويجب عدم استخدام أحرف كبيرة بالكامل عند تحديد وصف الغرفة.

يأخذ العنصر <Description> عنصرًا ثانويًا واحدًا، وهو <Text>، ويتضمّن السمتَين المطلوبتَين التاليتَين:

  • text: وصف تفصيلي للغرفة
  • language: رمز لغة مكوّن من حرفَين، مثل fr

استخدِم عنصر <Text> منفصلاً لكل لغة قد يظهر بها إعلانك أو رابط الحجز المجاني (بقيم مختلفة للسمات language).

يعرض المثال التالي نسختَين باللغتَين الفرنسية والإنجليزية من وصف الغرفة:

<Description>
  <Text text="Two queen-sized beds" language="en"/>
  <Text text="Deux lits de la reine" language="fr"/>
</Description>
<Name> Required string اسم فئة الغرفة. يجب أن تتطابق هذه القيمة مع ما يظهر على الصفحة المقصودة للفندق (نقطة بيع سابقًا). ولا تضبط قيمة هذا العنصر على كل الأحرف الكبيرة.

يأخذ هذا العنصر عنصرًا فرعيًا واحدًا، <Text>، يتضمّن السمتَين المطلوبتَين التاليتَين:

  • text: اسم الغرفة
  • language: رمز لغة مكوّن من حرفَين، مثل fr

استخدِم عنصر <Text> منفصلاً لكل لغة قد يظهر بها إعلانك أو رابط الحجز المجاني (بقيم مختلفة للسمات language).

يعرض المثال التالي نسختَين بالفرنسية والإنجليزية لاسم الغرفة:

<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Optional integer الحدّ الأقصى لعدد النزلاء المخصصة للغرفة. على سبيل المثال، قد يستوعب جناح كبير ما يصل إلى 6 نزلاء (السعة = 6)، ولكنه مخصّص لما يصل إلى 4 نزلاء فقط.

ويجب أن تكون هذه القيمة أقل من أو مساوية للعنصر <Capacity>، وهو عدد الأشخاص الذين يمكن أن تتسع الغرفة لهم.

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

قد يكون <Occupancy> مصحوبًا بـ <OccupancyDetails>، الذي يحدد نوع النزلاء (بالغين أو أطفال). راجِع <OccupancyDetails> للاطّلاع على بنية العناصر الفرعية ووصفها.

<OccupancySettings> Optional Object الإعدادات التي يمكنها تقييد أو تعديل متطلبات الإشغال في غرفة.

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

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

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

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

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

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

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

<PhotoURL> Optional Object تمثّل هذه السمة عنوان URL وتسمية توضيحية اختيارية لصورة الغرفة المحدّدة أو حزمة الغرفة. يمكنك تحديد أكثر من سمة <PhotoURL> واحدة للغرفة أو مجموعة الغرف. ويجب أن يكون كل عنوان URL لصورة في قسم <PhotoURL> الخاص به.

يأخذ هذا العنصر العناصر الثانوية التالية:

  • <URL>: لتحديد موقع الصورة. ويجب أن يكون الموقع الجغرافي علنيًا (أي ألا يكون محميًا بجدار حماية) ويجب أن يتضمّن البروتوكول (على سبيل المثال، https://)، كما يجب استخدام <URL> واحد فقط لكل <PhotoURL>.
  • <Caption>: لتحديد شرح الصورة. يأخذ هذا العنصر عنصرًا ثانويًا واحدًا، وهو <Text>، يتضمّن سمتَين مطلوبتَين: text وlanguage. السمة text هي الشرح، وتحدّد السمة language رمز لغة مكوّنًا من حرفَين، مثل en.

مثال:

<PhotoURL>
  <URL>https://www.example.com/static/bar/image1234.jpg</URL>
  <Caption>
    <Text text="A bright and breezy way to enjoy your mornin'
      cuppa tea." language="en"/>
    <Text text="Une façon lumineuse et aérée pour profiter
      de votre journée tasse de thé." language="fr"/>
  </Caption>
</PhotoURL>
<PhotoURL>
  <URL>https://www.foo.com/static/bar/image5678.jpg</URL>
  <Caption>
    <Text text="Or, perhaps you prefer coffee." language="en"/>
    <Text text="Ou peut-être préférez-vous le café." language="fr"/>
  </Caption>
</PhotoURL>
<RoomFeatures> Optional <RoomFeatures> تحتوي على معلومات عن ميزات الغرف.
<RoomID> Required string تمثّل هذه السمة المعرّف الفريد للغرفة. استخدِم هذا المعرّف لمطابقة بيانات الغرفة مع عناصر <Result> في تعديلات الأسعار. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف. (يمكنك أيضًا استخدام رقم التعريف هذا للإشارة إلى تعريف غرفة مشترك في رسالة "معاملة" واحدة عند تحديد تضمين بيانات الغرفة.)

أمثلة

بيانات الغرفة

يوضِّح المثال التالي بيانات الغرف:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>5440OF</RoomID>
      <Name>
        <Text text="Single King Bed Room" language="en"/>
        <Text text="Simple Lit de Roi" language="fr"/>
      </Name>
      <Description>
        <Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
          and down comforters (bedspreads). City view. 300 square feet. Desk with
          rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
          complimentary HBO and pay movies." language="en"/>
        <Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Bathroom View" language="en"/>
          <Text text="La salle de baines" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Capacity>4</Capacity>
    </RoomData>
  </PropertyDataSet>
</Transaction>

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

يحدّد المثال التالي البيانات الوصفية للغرف والحزمة:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

مجموعات غرف متعددة

يحدد المثال التالي البيانات الوصفية للغرف والحزمة لحزم غرف متعددة:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
        <Text text="Chambre simple" language="fr"/>
      </Name>
      <Description>
        <Text text="A single room" language="en"/>
        <Text text="Le chambre simple" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name>
        <Text text="Double room" language="en"/>
        <Text text="Chambre double" language="fr"/>
      </Name>
      <Occupancy>1</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
        <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Continental Breakfast" language="en"/>
        <Text text="Petit déjeuner continental" language="fr"/>
      </Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name>
        <Text text="Nonrefundable" language="en"/>
        <Text text="Non remboursable" language="fr"/>
      </Name>
      <Description>
        <Text text="Blah blah blad" language="en"/>
        <Text text="Le blah blah blad" language="fr"/>
      </Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<RoomFeatures>

لتحديد الميزات المتوفّرة في الغرفة.

يظهر العنصر <RoomFeatures> في المكان التالي في تسلسل XML لرسالة المعاملات:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
            + <RoomFeatures>

البنية

يستخدم العنصر <RoomFeatures> الصيغة التالية:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    ...
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
        <Beds>
           <Bed size="[single|semi_double|double|queen|king]">
             <Width unit="cm" number="width"/>
             <Length unit="cm" number="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>
    ...
  </PropertyDataSet>
</Transactions>

السمات

لا يتضمّن العنصر <RoomFeatures> أي سمات.

العناصر الفرعية

يحتوي العنصر <RoomFeatures> على العناصر الثانوية التالية:

عنصر ثانوي مطلوب؟ النوع الوصف
<JapaneseHotelRoomStyle> Optional enum

يشير إلى نمط غرفة فندق يابانية.

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

  • western: غرفة على الطراز الغربي فيها أسرّة
  • japanese: غرفة على الطراز الياباني فيها أسرّة فوتون
  • japanese_western: غرفة على الطراز الياباني على الطراز الغربي فيها أسرّة على الطراز الغربي ومقاعد فوتون على الطراز الياباني
<Beds> Optional 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>
<Suite> Optional empty يتم توفير هذا العنصر عندما تكون هذه الغرفة جناحًا.
<Capsule> Optional empty يمكنك توفير هذا العنصر عندما تكون هذه الغرفة غرفة صغيرة.
<Roomsharing> Optional enum ما إذا تمت مشاركة هذه الغرفة مع نزلاء آخرين، مثل المالكين أو الضيوف الآخرين. القيمتان الصالحتان هما shared وprivate.
<Outdoor> Optional empty يمكنك تقديم هذا العنصر عندما تكون هذه الغرفة عبارة عن مكان إقامة في الهواء الطلق لا تتميز بجدران ثابتة وسباكة وتحكم في المناخ. على سبيل المثال، لا تُعتبر غرف الفنادق أماكن إقامة في الهواء الطلق، بينما تُستخدَم أماكن التخييم التي يقيم فيها النزلاء في الخيام وحدائق المركبات الترفيهية حيث يجلب النزلاء مركبات ترفيهية خاصة بهم.
<MobilityAccessible> Optional empty يجب توفير هذا العنصر عندما يكون من الممكن التنقّل في هذه الغرفة.
<Smoking> Optional enum ما إذا كانت هذه الغرفة غرفة لغير المدخنين أو غرفة للتدخين. القيمتان الصالحتان هما non_smoking وsmoking.
<BathAndToilet> Optional 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>
<OpenAirBath> Optional empty يمكنك تقديم هذا العنصر عندما تحتوي هذه الغرفة على حمّام خاص في الهواء الطلق.
<AirConditioning> Optional empty يمكنك تقديم هذا العنصر عندما تتوفّر مكيّفات هواء في هذه الغرفة.
<Balcony> Optional empty يجب تقديم هذا العنصر عندما تحتوي هذه الغرفة على شرفة أو شرفة.
<Views> Optional 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/>

أمثلة

لا يتضمّن 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>

<PackageData>

تحدِّد هذه السياسة البيانات الوصفية المستقلة عن برنامج الرحلة حول حِزم الغرف الخاصة بأحد المواقع. يحتوي هذا العنصر على معلومات مرتبطة بشريك وفندق، ولكن ليس ببرنامج رحلة. والغرض المقصود هو تحديد جميع البيانات غير المتعلقة بمسار الرحلة مرة واحدة والإشارة إليها من بيانات برنامج الرحلة

يظهر العنصر <PackageData> في المكان التالي في تسلسل XML لرسالة المعاملات:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

يشبه العنصر <PackageData> العنصر <RoomData>، ولكنّه يصف ميزات الأسعار والعبارات التي لا تشكّل جزءًا من وصف الغرفة. يمكنك استخدام <RoomData> و<PackageData> معًا لتقديم تفاصيل حول حزم الغرف وميزات الأسعار. بالنسبة إلى الغرف الفردية التي ليست جزءًا من باقة، يمكنك استخدام <RoomData> فقط.

يمكنك تحديد العنصرَين <RoomData> و<PackageData> لحزمة الغرفة أو حزمة الغرفة نفسها. وعندما يعرض محرك بحث Google تلك الغرفة أو الحزمة في نتائج البحث، فإنه سيتضمن الأوصاف من كليهما، مع الفصل بينها بواصلة.

إذا عدّلت عنصر <PackageData> واحد للسمة، عليك تعديل كلّ عناصر <PackageData> و<RoomData> لهذه السمة. وتشمل كل سمة <PropertyDataSet> جميع البيانات المتعلّقة بالموقع، وتحلّ محلّ أي بيانات حالية.

لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف.

البنية

يستخدم العنصر <PackageData> الصيغة التالية:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    <PackageData>
      <PackageID>package_ID</PackageID>
      <Name>
        <Text text="package_name" language="language_code"/>
        ...
      </Name>
      <Description>
        <Text text="package_description" language="language_code"/>
        ...
      </Description>
      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails><!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
      <!-- 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>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Special Rewards">
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum">
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <!-- a PackageID with a MilesIncluded rate feature -->
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
       <Text text="Room with Bundled Miles" language="en">
      </Name>
      <ChargeCurrency>hotel </ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>1000 </NumberOfMiles>
        <Provider>
          <Text language="en" text="United Airlines">
        </Provider>
      </MilesIncluded>
    </PackageData>
    ...
    ...
  </PropertyDataSet>
  ...
</Transaction>

السمات

لا يتضمّن العنصر <PackageData> أي سمات.

العناصر الفرعية

يحتوي العنصر <PackageData> على العناصر الثانوية التالية:

عنصر ثانوي مطلوب؟ النوع الوصف
<BreakfastIncluded> Optional boolean يحدّد هذا الحقل ما إذا كانت هذه الحزمة تتضمّن وجبة فطور بالسعر نفسه. القيمتان الصالحتان هما 0 (أو false) و1 (أو true).

ومن المفضّل أن تستخدم السمة <Meals> بدلاً من <BreakfastIncluded>.

<ChargeCurrency> Optional enum وقت ومكان الدفع الذي يدفع فيه المستخدم مقابل الحجز يستخدم هذا العنصر بنية <ChargeCurrency> نفسها في <Result>.

تكون القيمة التلقائية web.

<CheckinTime> Optional Time أقرب وقت ممكن لتسجيل الوصول. يجب أن يكون الوقت أقل من 24:00 بالتوقيت المحلي للفندق.
<CheckoutTime> Optional Time آخر وقت ممكن لتسجيل المغادرة بالتوقيت المحلي للفندق
<Description> Optional Object تمثّل هذه السمة وصفًا تفصيليًا للحزمة. ويجب أن يتضمّن هذا العنصر معلومات لم يتم وصفها بواسطة عناصر أخرى أو العنصر <Name>. ويجب عدم استخدام أحرف كبيرة بالكامل عند تحديد وصف الغرفة.

يأخذ العنصر <Description> عنصرًا ثانويًا واحدًا، وهو <Text>، يتضمّن سمتَين مطلوبتَين، هما text وlanguage. السمة text هي الوصف، وتحدّد السمة language رمز لغة مكوّنًا من حرفَين، على النحو الموضّح في المثال التالي:

<Description>
  <Text text="Two breakfast buffet certificates for
    each night of stay." language="en"/>
  <Text text="Deux certificats petit-déjeuner buffet
    pour chaque nuit de séjour." language="fr"/>
</Description>
<InternetIncluded> Optional boolean إذا كانت الحزمة تتضمّن إمكانية الوصول إلى الإنترنت بدون أي رسوم، في حين أنّ الحزم الأخرى لا تتضمّن تلك وسائل الراحة. لا تضبط هذا العنصر لحِزم الغرف في فندق يوفّر خدمة إنترنت مجانية لجميع الغرف. لا ينطبق هذا العنصر على خدمة الإنترنت السلكية أو الإنترنت اللاسلكي داخل الغرف والتي لا تتوفّر في غرف النزلاء. القيمتان الصالحتان هما 0 (أو false) و1 (أو true).
<Meals> Optional 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>.

<Name> Required string اسم الحزمة يجب أن تتطابق هذه القيمة مع ما يظهر على الصفحة المقصودة للفندق. لا تضبط قيمة هذا العنصر على كل الأحرف الكبيرة.

يأخذ هذا العنصر عنصرًا ثانويًا واحدًا، وهو <Text>، يتضمّن سمتَين، text وlanguage. السمة text هي الوصف، وتحدّد السمة language رمز لغة مكوّنًا من حرفَين، كما يبيِّن المثال التالي:

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer الحدّ الأقصى لعدد النزلاء المخصصة لحزمة الغرف. على سبيل المثال، قد يستوعب الجناح الكبير 6 نزلاء فعليًا، ولكنه مخصّص لما يصل إلى 4 نزلاء فقط.

ويجب أن تكون هذه القيمة أقل من أو مساوية للعنصر <Capacity>، وهو عدد الأشخاص الذين يمكن أن تتسع الغرفة لهم.

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

إذا حددت هذا العنصر في كل من <RoomBundle> و<PackageData>، ستكون الأولوية للقيمة في <RoomBundle>.

ملاحظة:

قد تتم إضافة السمة <Occupancy> مع السمة <OccupancyDetails> التي تحدّد نوع النزلاء (بالغين أو أطفال). راجِع <OccupancyDetails> للاطّلاع على بنية العناصر الفرعية ووصفها.
<PackageID> Required string

المعرّف الفريد للحزمة. يمكنك استخدام رقم التعريف هذا لمطابقة بيانات حزمة الغرف مع عناصر <Result> في تعديلات الأسعار. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحِزمة الغرف.

(يمكنك أيضًا استخدام رقم التعريف هذا للإشارة إلى تعريف حِزمة غرف مشتركة مُستخدَم في رسالة "معاملة" واحدة عند تحديد تضمين بيانات حزمة الغرف.)

<ParkingIncluded> Optional boolean ما إذا كانت حزمة الغرف تشمل مواقف للسيارات بدون أي رسوم، حيث سيكون موقف السيارات خدمة مدفوعة في هذا الفندق بخلاف ذلك. لا تحدّد قيمة لهذا العنصر في فندق يوفر مواقف مجانية للسيارات.

القيمتان الصالحتان هما 0 (أو false) و1 (أو true). القيمة التلقائية هي false.

<PhotoURL> Optional Object (مثل <PhotoURL> في <RoomData>، ولكن للحزمة (مثل صور الوجبات)
<Refundable> Optional Object تفعِّل هذه السياسة إدراج السعر على أنّه قابل للاسترداد بالكامل أو توفير إمكانية إلغاء مجانية. وإذا لم يتم تقديمها، لن يتم عرض أي معلومات حول رد الأموال. إنّ سياسة ردّ الأموال على المستوى <PackageData> تلغي سياسة ردّ الأموال على مستوى <Result>. إنّ سياسة ردّ الأموال على المستوى <Rates> تلغي سياسة ردّ الأموال على مستوى <PackageData>. ويمكن أيضًا إبراز الأسعار القابلة للاسترداد للمستخدمين من خلال خيارات بديلة بدون تعديل مخطّط رسائل المعاملات مباشرةً. مزيد من المعلومات حول هذه الخيارات سياسة الأسعار القابلة للاسترداد

يوضّح المثال التالي العنصر <Refundable> مع مجموعة كل سماته:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

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

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

  • available: (مطلوبة) اضبط القيمة على 1 أو true للإشارة إلى ما إذا كان السعر يسمح باسترداد الأموال بالكامل، وبخلاف ذلك، يتم ضبطها على 0 أو false.
  • refundable_until_days: (مطلوبة إذا كانت قيمة السمة available هي true) تحدّد عدد الأيام التي تسبق تسجيل الوصول والتي يمكن فيها طلب استرداد الأموال بالكامل. يجب أن تكون قيمة refundable_until_days عددًا صحيحًا بين 0 و330، بشكل شامل.
  • refundable_until_time: (يُنصح به بشدة إذا كانت قيمة السمة available هي true) تحدّد آخر وقت، حسب التوقيت المحلي للفندق، الذي سيتم فيه قبول طلب ردّ الأموال بالكامل. يمكن الجمع بين ذلك مع refundable_until_days لتحديد أنّ "عمليات ردّ الأموال متاحة حتى الساعة 4:00 مساءً قبل يومين من تسجيل الوصول بيومَين". إذا لم يتم ضبط السمة refundable_until_time، يتم ضبط القيمة تلقائيًا على منتصف الليل.

    تستخدم قيمة هذه السمة تنسيق الوقت.

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

  • في حال عدم ضبط available أو refundable_until_days، لن يظهر السعر كقابل للاسترداد.
  • إذا كانت قيمة available هي 0 أو false، يتم تجاهل السمات الأخرى. لا يظهر هذا السعر على أنّه قابل للاسترداد حتى في حال ضبط إحدى السمتَين الأخريَين أو كلتيهما.
<MembershipBenefits Included> Optional boolean يشمل السعر مزايا حالة النخبة خلال مدة الإقامة. ويتضمّن المَعلمات التالية:
  • ProgramName: اسم برنامج تصنيف النخبة
  • ProgramLevel: مستوى البرنامج. على سبيل المثال: "ذهب".
  • NightlyValue (optional): قيمة المزايا في الليلة
<CarRentalIncluded> Optional boolean يشمل السعر خدمة تأجير السيارات مجانًا خلال مدة الإقامة.
<MilesIncluded>> Optional boolean يشمل السعر أميال برنامج المسافر الدائم. وتشمل المَعلمات ما يلي:
  • NumberofMiles: عدد الأميال لكل برنامج رحلة
  • Provider: توفّر بيانات الأميال لبرنامج المسافر الدائم.
<OnPropertyCredit> Optional boolean يشمل السعر الرصيد المتوفر في الفندق (المأكولات و/أو المشروبات غير الكحولية، والمنتجع، والمنتجع الصحي، وغير ذلك). المَعلمة:
  • Amount: قيمة الرصيد لكل برنامج رحلة، بالعملة المحلية
<AirportTransportationIncluded> Optional Object يشمل السعر خدمة توصيل مجانية من/إلى مطار قريب. تحدّد السمة الاختيارية direction اتجاه وسيلة النقل. تشمل القيم الصالحة ما يلي:
    from: يتم توفير وسائل النقل من المطار إلى الفندق. هذه هي القيمة التلقائية إذا لم يتم تحديد أي اتجاه. to: يوفّر الفندق وسيلة النقل إلى المطار. round_trip: يتم توفير وسائل النقل من وإلى المطار.

أمثلة

باقة غرفة واحدة

يُعرِّف المثال التالي حزمة غرف واحدة، بحيث تكون لشخصين بالغين وطفل واحد وتشمل وجبة الفطور:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>1</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <PackageID>P54321</PackageID>
      <Name>
         <Text text="Breakfast Included" language="en"/>
         <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Two certificates for continental
          breakfast will be provided." language="en"/>
        <Text text="Deux certificats pour le petit déjeuner
          continental seront fournis." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

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

يحدّد المثال التالي البيانات الوصفية للغرف والحزمة:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

مجموعات غرف متعددة

يحدد المثال التالي البيانات الوصفية للغرف والحزمة لحزم غرف متعددة:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
        <Text text="Chambre simple" language="fr"/>
      </Name>
      <Description>
        <Text text="A single room" language="en"/>
        <Text text="Le chambre simple" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name>
        <Text text="Double room" language="en"/>
        <Text text="Chambre double" language="fr"/>
      </Name>
      <Occupancy>1</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
        <Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Continental Breakfast" language="en"/>
        <Text text="Petit déjeuner continental" language="fr"/>
      </Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name>
        <Text text="Nonrefundable" language="en"/>
        <Text text="Non remboursable" language="fr"/>
      </Name>
      <Description>
        <Text text="Blah blah blad" language="en"/>
        <Text text="Le blah blah blad" language="fr"/>
      </Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>


حزمة غرف مع أسعار

يحدّد المثال التالي البيانات الوصفية للغرفة والحزمة لحزمة غرفة تتضمّن ميزات السعر:

<Transaction timestamp="2010-04-24T20:44:56-04:00" id="TXNID">
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
     ...
    </RoomData>
<!-- definitions of PackageData types including rate features -->
    <PackageData>
      <PackageID>room_with_addl_benefits</PackageID>
      <Name>
        <Text text="Acme Hotels 2017 Promotion Package" language="en"/>
      </Name>
      <ChargeCurrency>hotel</ChargeCurrency>
      <BreakfastIncluded>1</BreakfastIncluded>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Marriott Rewards"/>
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum"/>
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
        <Text text="Room with Bundled Miles" language="en"/>
      </Name>
      <ChargeCurrency>hotel</ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>1000</NumberOfMiles>
        <Provider>
          <Text language="en" text="United Airlines"/>
        </Provider>
      </MilesIncluded>
      <AirportTransportationIncluded direction="from"/>
    </PackageData>
  </PropertyDataSet>

<!-- The actual list of prices -->
  <Result>
…
  </Result>
</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>

<Result>

تمثّل هذه السمة حاوية تتضمّن آخر المعلومات حول الأسعار ومدى التوفّر في رسالة <Transaction>.

يظهر العنصر <Result> في المكان التالي في تسلسل XML لرسالة المعاملات:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

يمكنك استخدام <Result> لتحديد أسعار الغرف أو تعديلها وتحديد المستودع المتاح. تشير العناصر المحدّدة في هذا العنصر عادةً إلى بيانات وصفية مستقلة عن مسار الرحلة حول غرفة أو حزمة (مثل وصف أو مجموعة من وسائل الراحة) المحدّدة في <PackageData> و<RoomData>.

عادةً ما ترسل رسائل "المعاملات" مع تعديلات الأسعار بشكل متكرر. يعتمد مقدار هذا الإجراء وعدد المرات بالضبط على وضع التسليم.

يمكنك استخدام <Result> في رسالة "المعاملة" لإزالة برامج الرحلات، على النحو الموضّح في إزالة المستودع. لمزيد من المعلومات حول استخدام رسائل "المعاملات" لتعديل الأسعار ومدى التوفّر، يمكنك الاطّلاع على مقالة إضافة المستودع وتعديله.

يمكن أن تتضمّن رسالة "المعاملة" الواحدة أي عدد من عناصر <Result>، شرط ألا يتجاوز حجم الرسالة 100 ميغابايت.

البنية

يستخدم العنصر <Result> الصيغة التالية:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    <!-- Required -->
    <Property>hotel_ID</Property>
    <!-- Required -->
    <Checkin>YYYY-MM-DD</Checkin>
    <!-- Required -->
    <Nights>number_of_nights</Nights>

    <Baserate currency="currency_code">price</Baserate>
    <!-- Only required when <Baserate> contains a real price -->
    <Tax currency="currency_code">tax_amount</Tax>
    <!-- Only required when <Baserate> contains a real price  -->
    <OtherFees currency="currency_code">fee_amount</OtherFees>
    <Refundable available="[false|true]" refundable_until_days="number_of_days"
      refundable_until_time="time"/>

    <RoomID>room_ID</RoomID>
    <PackageID>package_ID</PackageID>
    <ExpirationTime>expiration_time</ExpirationTime>
    <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>

    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <!-- For Baserate, occupancy value must be greater than or equal to 2.
         If a value is not provided for occupancy, it defaults to 2. -->
    <OccupancyDetails>occupancy_info</OccupancyDetails>

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

    <AllowablePointsOfSale>
      <PointOfSale id="landing_page_identifier"/>
      ...
    </AllowablePointsOfSale>

    <Custom[1-5]>custom_value</Custom[1-5]>
  </Result>
  ...
  </Transaction>

السمات

يحتوي العنصر <Result> على السمات التالية:

السمة مطلوب؟ النوع الوصف
mergeable Optional boolean إنّ الأسعار الجديدة لفندق ومسار رحلة محدّدَين ستحلّ تلقائيًا محلّ أي أسعار سابقة (غير منتهية الصلاحية) متوفّرة في ذاكرة التخزين المؤقت لدى Google. تتيح لك السمة القابلة للدمج إمكانية تخزين أسعار إضافية في ذاكرة التخزين المؤقت لدى Google بدون حذف معلومات الأسعار السابقة. سيتم دائمًا ضبط هذه السمة على true لطلب البحث عن الأسعار المباشرة التي تتضمن ردودًا على السياق (بصرف النظر عن ردّك على رسالة المعاملة).

العناصر الفرعية

يحتوي العنصر <Result> على العناصر الثانوية التالية:

عنصر ثانوي مطلوب؟ النوع الوصف
<AllowablePointsOfSale> Optional Object واحدة أو أكثر من الصفحات المقصودة المؤهّلة للفندق. الصفحة المقصودة هي موقع إلكتروني يمكنه إجراء عملية الحجز للمستخدم النهائي. لتضمين صفحات مقصودة معيّنة بشكل واضح (واستبعاد صفحات مقصودة أخرى)، أضِف عنصر <AllowablePointsOfSale> واحدًا أو أكثر يتطابق مع سمة id في عنصر <PointOfSale> في ملف الصفحات المقصودة.

إذا لم تضمِّن هذا العنصر، تُعتبر جميع الصفحات المقصودة المحدّدة في ملف الصفحات المقصودة مؤهَّلة للاستخدام في حجز الغرفة. لمزيد من المعلومات، راجِع بنية ملف الصفحات المقصودة.

<Baserate> Optional float

تمثّل هذه السمة سعر الغرفة. يجب أن تعكس قيمة هذا العنصر ما يلي:

  • بالنسبة إلى الغرف الخاصة، عليك تحديد السعر الأدنى الذي تقدّمه للإشغال المزدوج. يُسمح بمعدل إشغال أعلى هنا إذا لم يكن لديك معدل إشغال مزدوج، وتم تفعيل معدلات الإشغال غير المزدوجة على حسابك. يُرجى التواصل معنا لتفعيل أسعار الإقامة غير المزدوجة. لا يُسمح هنا بأسعار الإقامة الفردية، بل يجب ضبطها ضمن <Rates>.
  • بالنسبة إلى الغرف المشتركة، اترك الحقل فارغًا واستخدِم <RoomBundle>.
  • يجب أن تكون هذه القيمة هي إجمالي السعر الأساسي لجميع الليالي، وليس متوسّط سعر الإقامة في الليلة.

عندما تكون الغرفة غير متاحة لبرنامج الرحلة، يجب حذف السمة <Baserate> أو ضبطها على -1، ويجب تحديد السمة <Unavailable>، بالإضافة إلى أي أسباب معروفة لعدم التوفّر.

لإزالة حزمة غرفة، يمكنك اتّباع التعليمات الواردة في مقالة إزالة حزمة غرفة.

يجب ألّا تحتوي <Baserate> على أي رموز لتجميع الأرقام، مثل الفاصلة (,) أو النقطة (.). ويجب فصل الكسور دائمًا باستخدام نقطة (.) كعلامة عشرية. على سبيل المثال، يمثّل التمثيل 1,200.40 دولار أمريكي على النحو التالي:

<Baserate currency="USD">1200.40</Baserate>

يتضمّن العنصر <Baserate> السمات الاختيارية التالية:

  • all_inclusive: قيمة منطقية تشير إلى ما إذا كان هذا السعر يشمل الضرائب والرسوم. وبشكل عام، اضبط هذه القيمة على false للمستخدمين النهائيين في الولايات المتحدة وكندا وقدّم قيمًا للعنصرَين <Tax> و<OtherFees>. إذا كنت تستخدم أسعارًا شاملة جميع الخدمات، قد لا تكون مؤهّلاً للظهور في البيانات إذا كانت أسعارك لا تفصل الضرائب والرسوم المفروضة على المستخدمين في كندا.

    يتم الآن عرض الأسعار الشاملة الخدمات للمستخدمين في الولايات المتحدة.

    بالنسبة إلى جميع المستخدمين النهائيين الآخرين، عليك عادةً تضمين الضرائب والرسوم في السعر الأساسي وضبط قيمة السمة all_inclusive على true. لمزيد من المعلومات، يُرجى الاطّلاع على سياسة الضرائب والرسوم.

    تكون القيمة التلقائية false.

  • currency: رمز العملة المكوَّن من ثلاثة أحرف على سبيل المثال، USD للدولار الأمريكي.
<ChargeCurrency> Optional enum وقت ومكان الدفع الذي يدفع فيه المستخدم مقابل الحجز يمكن استخدام هذا العنصر في رسالة معاملة في العنصر <Result> لسعر الفندق أو في جزء <PackageData> من حزمة غرف.

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

  • web: يتم تحصيل رسوم من المستخدم على الإنترنت في وقت الحجز. هذه هي القيمة الافتراضية. يتم تحديد الصفحة المقصودة من خلال ملف الصفحة المقصودة، ويمكن أن تتأثر بعملة المستخدم أو موقعه الجغرافي أو لغته أو عوامل أخرى.
  • hotel: يتم تحصيل رسوم من المستخدم عند تسجيل الوصول في الفندق. وإذا كان يجب تسديد الدفعة دائمًا بعملة الفندق، اضبط القيمة <ChargeCurrency> على hotel. لا تتأثر الصفحة المقصودة بعملة المستخدم.
  • deposit: يتم تحصيل جزء من المبلغ على الفور من المستخدم، ويتم تحصيل المبلغ المتبقي في وقت لاحق، وذلك عادةً عند مغادرة المستخدم للفندق.
  • installments: يتم تحصيل جزء أوّلي من المستخدم من إجمالي المبلغ المستحق، ومن المتوقّع أن يدفع بشكل دوري رصيدًا محدّدًا على مدار فترة زمنية ثابتة.

تكون القيمة التلقائية web.

<Checkin> Required Date تمثّل هذه السمة تاريخ تسجيل الوصول لبرنامج رحلة باستخدام تنسيق التاريخ. ويؤدّي دمج العنصر <Nights> مع العنصر <Checkin> إلى تكوين برنامج رحلة.
<Custom[1‑5]> Optional string تحدّد هذه السمة حقلاً مخصّصًا يمكنك استخدامه لتمرير بيانات إضافية مرتبطة بأحد الفنادق. يمكنك تمرير ما يصل إلى خمس قيم مخصّصة باستخدام أسماء العناصر التالية:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

تتيح لك عناصر <Custom> تمرير بيانات عشوائية. على سبيل المثال، يمكنك تحديد قيمة في هذا الحقل ليتم استخدامها في ملف الصفحات المقصودة لإنشاء عنوان URL مخصص لصفحة مقصودة. هناك حد أقصى يبلغ 200 حرف لكل حقل مخصص. لمزيد من المعلومات، يمكنك الاطّلاع على ملفات الصفحات المقصودة .

ولا يتم اكتساب عناصر <Custom> المتوفرة في العنصر <Rate> إلى العنصر <RoomBundle>. يجب تحديد السمة <Custom> بشكل منفصل في كل <RoomBundle>.

<ExpirationTime> Optional DateTime التاريخ والوقت اللذَين يُعتبر فيهما تاريخ انتهاء صلاحية السعر (3 ساعات على الأقلّ).

ننصحك بعدم تقديم طوابع زمنية لانتهاء الصلاحية إذا لم يكن ذلك مهمًا في بنية التسعير.

لا تعرض Google أي أسعار منتهية الصلاحية، وأي برنامج رحلة له سعر منتهي الصلاحية سيصبح مؤهّلاً لتقديم طلبات البحث عن الأسعار المباشرة.

<Nights> Required integer عدد الليالي لبرنامج الرحلة. يجب أن تكون قيمة العنصر <Nights> عددًا صحيحًا موجبًا. وتشكّل مجموعتا <Nights> و<Checkin> برنامج رحلة.
<OtherFees> Optional float رسوم أخرى غير السعر الأساسي والضرائب التي تؤثر في السعر النهائي للغرفة يأخذ العنصر <OtherFees> سمة واحدة مطلوبة، وهي currency، التي تحدّد رمز العملة المكوَّن من ثلاثة أحرف للرسوم. مثلاً: USD

يجب إدراج العنصر <OtherFees> إذا كانت قيمة <Baserate> أكبر من صفر.

<Occupancy> Optional integer تحدّد هذه السمة الحد الأقصى لعدد النزلاء المسموح بهم في هذا السعر. عندما تظهر السمة <Occupancy> ضمن <Result> مباشرةً، يجب أن تحدّد القيمة 2 أو أكثر. قد تكون السمة <Occupancy> مصحوبة بسمة <OccupancyDetails> التي تحدّد نوع النزلاء (بالغين أو أطفال). في حال عدم تحديد أنواع الضيوف، يُفترض أن يكونوا بالغين. يمكنك الرجوع إلى <OccupancyDetails> للاطّلاع على بنية العناصر الثانوية ووصفها. وفي حال عدم توفير العنصر <Occupancy>، يتم ضبط معدّل الإشغال تلقائيًا على 2.

ملاحظة: يُرجى التواصل مع فريق الدعم لتفعيل الميزة من أجل إرسال أسعار الإقامة غير المزدوجة.

<PackageID> Optional string المعرّف الفريد للحزمة لربطه ببيانات الحزمة المحدَّدة مسبقًا ويُستخدَم أيضًا لتعبئة متغيّر الصفحة المقصودة لمعرّف PACKAGE-ID. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحِزمة الغرف.
<Property> Required string رقم تعريف الفندق المتأثر بالبيانات المرتبطة به (السعر أو برنامج الرحلة أو حزمة الغرف أو البيانات الوصفية). ويجب أن تكون قيمة هذا العنصر سلسلة. يجب أن تتطابق قيمة هذا العنصر مع البيانات <id> التي حدّدتها في خلاصة قوائم الفنادق.
<Rates> Optional <Rates> تمثّل هذه السمة حاوية لمجموعة <Rate> واحدة أو أكثر. تحدّد كل سمة <Rate> في <Rates> سعرًا مختلفًا لمجموعة الغرف/برنامج الرحلة.

استخدِم العنصر <Rates> عندما تكون هناك أسعار متعددة لمجموعة الغرف/برنامج الرحلة نفسها أو عندما لا يُسمح بتحديد السعر على مستوى <Result>. على سبيل المثال، يمكنك تحديد أسعار متعددة للأسعار المشروطة أو الأسعار الخاصة أو الأسعار المشروطة في حزم الغرف أو مختلفة لعدد النزلاء.

ملاحظة: ضمن <Result>، لا يمكن تحديد أسعار الإقامة الفردية في <Rates> إلا. يُرجى التواصل معنا للسماح بأسعار الإشغال غير المزدوجة.

<Refundable> Optional Object تفعِّل هذه السياسة إدراج السعر على أنّه قابل للاسترداد بالكامل أو توفير إمكانية إلغاء مجانية. وإذا لم يتم تقديمها، لن يتم عرض أي معلومات حول رد الأموال. إنّ سياسة ردّ الأموال على المستوى <PackageData> تلغي سياسة ردّ الأموال على مستوى <Result>. إنّ سياسة ردّ الأموال على المستوى <Rates> تلغي سياسة ردّ الأموال على مستوى <PackageData>. ويمكن أيضًا إبراز الأسعار القابلة للاسترداد للمستخدمين من خلال خيارات بديلة بدون تعديل مخطّط رسائل المعاملات مباشرةً. مزيد من المعلومات حول سياسة الأسعار القابلة للاسترداد

يوضّح المثال التالي العنصر <Refundable> مع مجموعة كل سماته:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

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

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

  • available: (مطلوبة) اضبط القيمة على 1 (أو true) للإشارة إلى ما إذا كان السعر يتيح استرداد الأموال بالكامل، وبخلاف ذلك، يتم ضبطها على 0 (أو false).
  • refundable_until_days: (مطلوبة إذا كانت قيمة السمة available هي true) تحدّد عدد الأيام التي تسبق تسجيل الوصول والتي يمكن فيها طلب استرداد الأموال بالكامل. يجب أن تكون قيمة refundable_until_days عددًا صحيحًا بين 0 و330، بشكل شامل.
  • refundable_until_time: (يُنصح به بشدة إذا كانت قيمة السمة available هي true) تحدّد آخر وقت، حسب التوقيت المحلي للفندق، الذي سيتم فيه قبول طلب ردّ الأموال بالكامل. يمكن الجمع بين ذلك مع refundable_until_days لتحديد أنّ "عمليات ردّ الأموال متاحة حتى الساعة 4:00 مساءً قبل يومين من تسجيل الوصول بيومَين". إذا لم يتم ضبط السمة refundable_until_time، يتم ضبط القيمة تلقائيًا على منتصف الليل.

    تستخدم قيمة هذه السمة تنسيق الوقت.

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

  • في حال عدم ضبط available أو refundable_until_days، لن يظهر السعر كقابل للاسترداد.
  • إذا كانت قيمة available هي 0 (أو false)، يتم تجاهل السمات الأخرى. لا يظهر هذا السعر على أنّه قابل للاسترداد حتى في حال ضبط إحدى السمتَين الأخريَين أو كلتيهما.
<RoomBundle> Optional <RoomBundle> تمثّل هذه السمة حاوية معلومات عن الأوصاف الفعلية للأسعار للغرفة وأي حزمة تتضمّن وسائل راحة وبعض تفاصيل سياسة الشراء للفندق وبرنامج الرحلة.

بشكل عام، يمكنك استخدام هذا العنصر لتحديد أسعار الغرفة الأساسية وأنواع الغرف المختلفة ضمن الموقع نفسه. ومع أنّه من الممكن تحديد أوصاف "حزمة الغرف" بشكل مضمّن، عليك استخدام رسالة "معاملة" منفصلة لتحديد هذه المعلومات. سيخزّن Google البيانات الوصفية لتتمكّن من الرجوع إليها في جميع التعديلات المستقبلية على الأسعار بدلاً من تكرارها.

<RoomID> Optional string المعرّف الفريد للغرفة لربطها ببيانات الغرفة المحدّدة مسبقًا. وتُستخدَم أيضًا لتعبئة متغيّر الصفحة المقصودة لـ PARTNER-room-ID. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحِزمة الغرف.
<Tax> Optional float الضرائب التي يتم احتسابها للسعر النهائي للغرفة يأخذ العنصر <Tax> سمة واحدة مطلوبة، currency، وهي تحدّد رمز العملة المكوَّن من ثلاثة أحرف للضرائب. مثلاً: USD ويجب إدراج العنصر <Tax> إذا كانت قيمة <Baserate> أكبر من صفر.
<Unavailable> Optional Object يشير إلى أنّ برنامج الرحلة غير متوفّر للحجز. ويتم استخدامه كحاوية للاطّلاع على الأسباب الأكثر تفصيلاً لعدم توفّر برنامج الرحلة. قد يكون سبب واحد أو أكثر من أسباب عدم التوفّر التالية ظاهرًا ضمن العلامة <Unavailable>:
  • <NoVacancy/>: ما مِن غرف أخرى متاحة للبيع لليلة واحدة أو أكثر من الإقامة.
  • <MinNightStay value=N/>: كان برنامج الرحلة أقل من الحد الأدنى لمدة الإقامة الذي يبلغ N خلال تواريخ الإقامة.
  • <MaxNightStay value=N/>: كان برنامج الرحلة أعلى من الحد الأقصى لعدد الليالي المسموح به وهو N خلال تواريخ الإقامة.
  • <MinAdvancePurchase value=N/>: كان برنامج الرحلة أقل من الحد الأدنى لفترة الحجز المسبق التي تبلغ N لتواريخ الإقامة.
  • <MaxAdvancePurchase value=N/>: تجاوز برنامج الرحلة الحدّ الأقصى لفترة الحجز المُسبق التي تبلغ N في تواريخ الإقامة.
  • <ClosedToArrival/>: لا يسمح الفندق بتسجيل الوصول في تاريخ وصول برنامج الرحلة.
  • <ClosedToDeparture/>: لا يسمح الفندق بإتمام المغادرة في تاريخ مغادرة برنامج الرحلة.
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>: الفندق مغلق لبعض مدة الإقامة أو كل فترة الإقامة. تحدّد السمتان المقترَحتان first_open وfirst_closed التواريخ الأولى التي تكون أكبر من أو تساوي تاريخ الوصول الذي يفتح فيه الموقع أو مغلقًا فيه، على التوالي. بالنسبة إلى الموقع الذي يُغلق بعد تاريخ الوصول، يجب أن يكون first_open مساوية لتاريخ الوصول، ويجب أن يكون first_closed هو التاريخ الذي يُغلق فيه الفندق. بالنسبة إلى الفنادق التي يتم إغلاقها في تاريخ الوصول، يجب أن يكون first_closed مطابقًا لتاريخ الوصول، ويجب أن يكون first_opened هو التاريخ التالي الذي سيفتح فيه الموقع.
  • <NotFetched/>: لم تقدّم مصادر بيانات المراحل المتقدّمة سعر برنامج الرحلة.
  • <InvalidProperty/>: لم يتم التعرّف على معرّف الموقع المطلوب.
  • <InvalidOccupancy/>: معلومات الإشغال المطلوبة غير متاحة في الموقع.
  • <PriceIssue/>: حدثت مشكلة في السعر أدت إلى عدم إرساله.
  • <InternalError reason=""/>: حدث خطأ غير مرقم. يمكن أن تُبلغ سمة السبب الاختياري عن الخطأ كنص.
  • <OtherRestriction restriction=""/>: لم يكن برنامج الرحلة متاحًا بسبب بعض القيود المفروضة على الحجز غير المؤكّدة. تسمح سمة التقييد الاختيارية بالإبلاغ عن التقييد كنص.

أمثلة

مثال على المواقع المتعددة

يحدّد المثال التالي برنامج رحلة واحدًا وأسعاره لموقعَين:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
  </Result>
  <Result>
    <Property>052213</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">299.98</Baserate>
    <Tax currency="USD">26.42</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="otto"/>
      <PointOfSale id="simon"/>
    </AllowablePointsOfSale>
  </Result>
</Transaction>

لا يظهر في هذا المثال تفاصيل عن الغرفة، مثل الوصف والصورة والشرح واسم الغرفة وسعتها.

يمكنك تحديد هذه المعلومات مرة واحدة في رسالة "معاملة" منفصلة تخزّنها Google. ويمكنك بعد ذلك الرجوع إليها في كل تحديثات الأسعار والمستودع اللاحقة. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف.

مثال على الأسعار المتعددة

يحدّد المثال التالي برنامج رحلة واحدًا وموقعًا واحدًا بأسعار متعددة لإشغالات مختلفة. يمكن استخدام العنصر <Rates> لتقديم أسعار متعددة لفندق معيّن. المثال التالي مفيد أيضًا لخصائص إيجار الإجازات (VR):

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2021-01-13</Checkin>
    <Nights>9</Nights>
    <Baserate currency="USD">3196.1</Baserate>
    <Tax currency="USD">559.49</Tax>
    <OtherFees currency="USD">543.34</OtherFees>
    <Occupancy>2</Occupancy>
    <Rates>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>1</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>3</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>4</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>5</Occupancy>
      </Rate>
      <Rate>
        <Baserate currency="USD">3196.1</Baserate>
        <Tax currency="USD">559.49</Tax>
        <OtherFees currency="USD">543.34</OtherFees>
        <Occupancy>6</Occupancy>
      </Rate>
    </Rates>
  </Result>
</Transaction>

مثال غير متاح

يحدّد المثال التالي برنامج رحلة واحدًا تعذّر استرداد مدى توفّره من القنوات التي تظهر فيها، وخط ثانٍ أقل من الحد الأدنى للإقامة لليلة وتم حجزه مسبقًا في التواريخ المحدّدة، وبرنامج رحلة ثالث مغلق في تاريخ الوصول، ولكن يفتح أثناء فترة الإقامة:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NotFetched/>
    </Unavailable>
  </Result>
  <Result>
    <Property>073313</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Unavailable>
      <NoVacancy/>
      <MinNightStay value=3/>
    </Unavailable>
  </Result>
  <Result>
    <Property>052213</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>10</Nights>
    <Unavailable>
      <PropertyClosed first_open="2018-06-15" first_closed="2018-06-10"/>
    </Unavailable>
  </Result>
</Transaction>

<Rates>

تمثّل هذه السمة حاوية لمجموعة <Rate> واحدة أو أكثر. تحدّد كل <Rate> في <Rates> سعرًا مختلفًا لمجموعة الغرف أو برنامج الرحلة.

استخدِم العنصر <Rates> فقط عند توفّر عدة أسعار لمجموعة الغرف أو برنامج الرحلة نفسها. على سبيل المثال، يمكنك تحديد أسعار متعددة للأسعار المشروطة أو الأسعار الخاصة أو الأسعار المشروطة في حزم الغرف.

يظهر العنصر <Rates> في المكان التالي في تسلسل XML لرسالة المعاملات:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>         // Pricing and availability
        + <Rates>
        + <RoomBundle> (Can also contain <Rates>)
        + ...

تلغي القيم المحدّدة في السمة <Rate> القيم المرتبطة بالتسعير في العنصر الرئيسي <Result> أو <RoomBundle>. وإذا لم يتم ضبطها في <Rate>، ستكتسب قيمتها من العنصر الرئيسي. يتم نسخ <AllowablePointsofSale> فقط إلى العنصر <RoomBundle>.

البنية

يستخدم العنصر <Rates> الصيغة التالية:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    <Rates>
      <Rate rate_rule_id="rate_rule_id">
        <Baserate currency="currency_code">price</Baserate>
        <Tax currency="currency_code">tax_amount</Tax>
        <OtherFees currency="currency_code">fee_amount</OtherFees>
        <ExpirationTime>expiration_time</ExpirationTime>
        <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
        <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
        <AllowablePointsOfSale>
          <PointOfSale id="landing_page_identifier"/>
        </AllowablePointsOfSale>
        <Occupancy>max_number_of_intended_occupants</Occupancy>
        <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
          ...
        <Custom[1-5]>custom_value</Custom[1-5]>
      </Rate>
      ...
    </Rates>
  </Result>
  ...
</Transaction>

السمات

يحتوي العنصر <Rates> على السمات التالية:

السمة مطلوب؟ الوصف
rate_rule_id Optional بالنسبة إلى الأسعار المشروطة، يطابق رقم التعريف هذا معدّلاً مع تعريف في ملف "تعريف قاعدة السعر". عدد الأحرف المسموح به في هذا الحقل هو 40 حرفًا.

العناصر الفرعية

يحتوي العنصر <Rates> على العناصر الثانوية التالية:

عنصر ثانوي مطلوب؟ النوع الوصف
<AllowablePointsOfSale> Optional Object واحدة أو أكثر من الصفحات المقصودة المؤهّلة للفندق. يستخدم هذا العنصر البنية نفسها المستخدَمة في <AllowablePointsOfSale> على <Result>.
<Baserate> Required float تمثّل هذه السمة سعر الغرفة. يستخدم هذا العنصر بنية <Baserate> نفسها على <Result>.

ملاحظة: لا يمكن تحديد العنصر الفرعي <Baserate> ضمن <Rate> على أنّه غير متاح.

<ChargeCurrency> Optional enum وقت ومكان الدفع الذي يدفع فيه المستخدم مقابل الحجز يستخدم هذا العنصر بنية <ChargeCurrency> نفسها في <Result>.
<Custom[1‑5]> Optional string حقول مخصّصة يمكنك استخدامها لنقل بيانات إضافية مرتبطة بفندق إلى صفحة مقصودة. يستخدم هذا العنصر بنية <Custom[1‑5]> نفسها في <Result>. وهناك حد أقصى 200 حرف لكل حقل مخصّص. لمزيد من المعلومات، راجِع ملفات الصفحات المقصودة.

في حال توفير عناصر <Custom> في العنصر <Result>، لن يتم اكتسابها في العنصر <RoomBundle> ويجب تحديدها بشكل منفصل لكل <RoomBundle>، أو يمكن تضمينها في <PackageData> إذا لزم الأمر.

<ExpirationTime> Optional DateTime التاريخ والوقت اللذين يُعتبر فيهما السعر منتهية الصلاحية. يستخدم هذا العنصر البنية نفسها المستخدمة في <ExpirationTime> في <Result>.
<Occupancy> Optional integer

تحدّد هذه السمة الحد الأقصى لعدد النزلاء المسموح بهم في هذا السعر. في حال عدم تحديد سعر، يُفترض أن يكون مطابقًا للسعر الأصلي. قد يكون <Occupancy> مصحوبًا بـ <OccupancyDetails>، الذي يحدد نوع النزلاء (بالغين أو أطفال). يمكنك الرجوع إلى <OccupancyDetails> للاطّلاع على بنية العناصر الثانوية ووصفها.

<OtherFees> Required float رسوم أخرى غير السعر الأساسي والضرائب التي تؤثر في السعر النهائي للغرفة يستخدم هذا العنصر البنية نفسها المستخدمة في <OtherFees> في <Result>.
<Refundable> Optional Object تفعِّل هذه السياسة إدراج السعر على أنّه قابل للاسترداد بالكامل أو توفير إمكانية إلغاء مجانية. وإذا لم يتم تقديمها، لن يتم عرض أي معلومات حول رد الأموال. إنّ سياسة ردّ الأموال على المستوى <PackageData> تلغي سياسة ردّ الأموال على مستوى <Result>. إنّ سياسة ردّ الأموال على المستوى <Rates> تلغي سياسة ردّ الأموال على مستوى <PackageData>. ويمكن أيضًا إبراز الأسعار القابلة للاسترداد للمستخدمين من خلال خيارات بديلة بدون تعديل مخطّط رسائل المعاملات مباشرةً. مزيد من المعلومات حول هذه الخيارات سياسة الأسعار القابلة للاسترداد

يوضّح المثال التالي العنصر <Refundable> مع مجموعة كل سماته:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

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

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

  • available: (مطلوبة) اضبط القيمة على 1 (أو true) للإشارة إلى ما إذا كان السعر يتيح استرداد الأموال بالكامل، وبخلاف ذلك، يتم ضبطها على 0 (أو false).
  • refundable_until_days: (مطلوبة إذا كانت قيمة السمة available هي true) تحدّد عدد الأيام التي تسبق تسجيل الوصول والتي يمكن فيها طلب استرداد الأموال بالكامل. يجب أن تكون قيمة refundable_until_days عددًا صحيحًا بين 0 و330، بشكل شامل.
  • refundable_until_time: (يُنصح به بشدة إذا كانت قيمة السمة available هي true) تحدّد آخر وقت، حسب التوقيت المحلي للفندق، الذي سيتم فيه قبول طلب ردّ الأموال بالكامل. يمكن الجمع بين ذلك مع refundable_until_days لتحديد أنّ "عمليات ردّ الأموال متاحة حتى الساعة 4:00 مساءً قبل يومين من تسجيل الوصول بيومَين". إذا لم يتم ضبط السمة refundable_until_time، يتم ضبط القيمة تلقائيًا على منتصف الليل.

    تستخدم قيمة هذه السمة تنسيق الوقت.

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

  • في حال عدم ضبط available أو refundable_until_days، لن يظهر السعر كقابل للاسترداد.
  • إذا كانت قيمة available هي 0 (أو false)، يتم تجاهل السمات الأخرى. لا يظهر هذا السعر على أنّه قابل للاسترداد حتى في حال ضبط إحدى السمتَين الأخريَين أو كلتيهما.
<Tax> Required float الضرائب التي يتم احتسابها للسعر النهائي للغرفة يستخدم هذا العنصر بنية <Tax> نفسها في <Result>.

أمثلة

السعر الأساسي والسعر المشروط

يعرض المثال التالي رسالة معاملة تحتوي على سعر أساسي وسعر مشروط:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
        <!-- NOTE: OtherFees is inherited from the above setting -->
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

أسعار مشروطة متعددة

يحدّد المثال التالي سعرًا أساسيًا وأسعارًا مشروطة متعددة ضمن <RoomBundle>:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>


      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <!-- Neither rate overrides Custom2. -->
      <Custom2>ratebasic</Custom2>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode321</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode432</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<RoomBundle>

تحدّد هذه السمة أسعار حِزم الغرف ومدى توفّرها كعنصر فرعي لـ <Result> في رسالة <Transaction>. حدد عنصرًا منفصلاً لكل مجموعة حزمة أو برنامج رحلة. لتحديد حزمة وبنود حِزم الغرف، استخدِم <RoomData>.

يظهر العنصر <RoomBundle> في المكان التالي في تسلسل XML لرسالة المعاملات:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

لمزيد من المعلومات، يُرجى الاطّلاع على مقالة استخدام حِزم الغرف.

البنية

يستخدم العنصر <RoomBundle> الصيغة التالية:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    ...
    <RoomBundle>
      <!-- Required unless specified inline under <RoomData> -->
      <RoomID>room_ID</RoomID>
      <!-- Required  <PackageData> -->
      <PackageID>package_ID</PackageID>

      <!-- Required -->
      <Baserate currency="currency_code">price</Baserate>
      <!-- Required -->
      <Tax currency="currency_code">taxes</Tax>
      <!-- Required -->
      <OtherFees currency="currency_code">other_fees</OtherFees>

      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <!-- Required -->
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>

      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>

      <RatePlanID>rate_plan_ID</RatePlanID>

      <Rates>...</Rates>

      <Custom1>custom_value_1</Custom1>
      <Custom2>custom_value_2</Custom2>
      <Custom3>custom_value_3</Custom3>
      <Custom4>custom_value_4</Custom4>
      <Custom5>custom_value_5</Custom5>
    </RoomBundle>
    ...
  </Result>
</Transaction>

السمات

لا يتضمّن العنصر <RoomBundle> أي سمات.

العناصر الفرعية

يحتوي العنصر <RoomBundle> على العناصر الثانوية التالية:

عنصر ثانوي مطلوب؟ النوع الوصف
<Baserate> Required float تحدّد هذه السمة سعر حزمة الغرفة للإقامة. يستخدم هذا العنصر البنية نفسها المستخدَمة في <Baserate> في <Result>، باستثناء ما يلي:
  • عندما تكون الغرفة غير متوفرة في برنامج الرحلة، يُرجى إزالة العنصر <RoomBundle> للإشارة إلى أنّ الغرفة لم تعُد متوفّرة في المستودع. لمزيد من المعلومات، يُرجى الاطّلاع على المقالة إزالة حزمة غرف.
<BreakfastIncluded> Optional boolean تحدِّد هذه السياسة ما إذا كانت حزمة الغرف هذه تتضمّن وجبة فطور بالسعر المحدد.
<ChargeCurrency> Optional enum وقت ومكان الدفع الذي يدفع فيه المستخدم مقابل الحجز يستخدم هذا العنصر بنية <ChargeCurrency> نفسها في <Result>.

تكون القيمة التلقائية web.

<Custom[1‑5]> Optional string حقول مخصّصة لتمرير بيانات إضافية إلى الصفحات المقصودة لحزمة الغرف. تستخدم هذه العناصر بنية <Custom[1-5]> نفسها في <Result>. هناك حد أقصى يبلغ 200 حرف لكل حقل مخصّص. لمزيد من المعلومات، يمكنك الاطّلاع على ملفات الصفحات المقصودة.

في حال توفير عناصر <Custom> في العنصر <Result>، لن يتم اكتسابها في العنصر <RoomBundle> ويجب تحديدها بشكل منفصل لكل <RoomBundle>، أو يمكن تضمينها في <PackageData> إذا لزم الأمر.

<InternetIncluded> Optional boolean إذا كانت "حزمة الغرف" تتضمّن إمكانية الوصول إلى الإنترنت بدون أي رسوم، في حين أنّ الحزم الأخرى لن تتضمّن تلك وسائل الراحة. لا تضبط هذا العنصر لحِزم الغرف في فندق يوفّر خدمة إنترنت مجانية لجميع الغرف. لا ينطبق هذا العنصر على خدمة الإنترنت السلكية أو الإنترنت اللاسلكي داخل الغرف والتي لا تتوفّر في غرف النزلاء.
<Occupancy> Required integer تحدّد هذه السمة الحد الأقصى لعدد النزلاء المسموح بهم في هذا السعر. على سبيل المثال، قد يستوعب جناح كبير العدد 6 نزلاء، فيما قد يُسمح بـ "حزمة شهر العسل" لضيفَين فقط.

يجب أن تكون هذه القيمة أقل من أو مساوية لـ <Capacity>، وهو عدد الأشخاص الذين يمكن للغرفة استيعابهم.

عند تحديد معدّل الإشغال في عنوان URL للصفحة المقصودة، استخدِم متغيّرَي NUM-ADULTS وNUM-CHILDREN كما هو موضّح في استخدام المتغيرات والشروط. القيمة التلقائية هي 2 من البالغين و0 من الأطفال.

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

ملاحظات:

  • وننصح بشدة باستخدام السمة <Occupancy> للرمز <RoomBundle> بحيث يتم وضع علامة عليها على أنّها مطلوبة، وفي حال حذفها، ستظهر رسالة الخطأ 1097.
  • تأتي <Occupancy> من كائن البيانات بالترتيب التالي: <RoomBundle>، و<PackageData>، ثم = <RoomData>. وفي حال عدم وجود قيمة في أي من هذه القيم، تكون القيمة التلقائية هي 2.
  • قد يكون <Occupancy> مصحوبًا بالسمة <OccupancyDetails> التي تحدّد نوع النزلاء (بالغين أو أطفال). في حال عدم تحديد أنواع الضيوف، يتم الافتراض أنّهم بالغون. راجِع <OccupancyDetails> للاطّلاع على بنية العناصر الثانوية ووصفها.
  • عند ضبط <Occupancy> في كل من <RoomBundle> و<PackageData>، تكون الأولوية للقيمة في <RoomBundle>.
<OtherFees> Required float رسوم أخرى غير السعر الأساسي والضرائب التي تؤثر في السعر النهائي للغرفة يأخذ العنصر <OtherFees> سمة واحدة مطلوبة، وهي currency، التي تحدّد رمز العملة المكوَّن من ثلاثة أحرف للرسوم. على سبيل المثال، استخدِم USD للدولار الأمريكي.
<PackageID> Optional (recommended) string المعرّف الفريد لبيانات الحزمة. يمكنك استخدام رقم التعريف هذا لمطابقة بيانات حزمة الغرف مع ما تم إرساله في <PackageData>. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحزمة الغرف. (يمكنك أيضًا استخدام رقم التعريف هذا للإشارة إلى تعريف حزمة غرف مشتركة مُستخدَم في رسالة "معاملة واحدة" واحدة عند تحديد تضمين بيانات حزمة الغرف.)
<ParkingIncluded> Optional boolean ما إذا كانت حزمة الغرف تشمل مواقف للسيارات بدون أي رسوم، حيث سيكون موقف السيارات خدمة مدفوعة في هذا الفندق بخلاف ذلك. لا تحدّد قيمة لهذا العنصر في فندق يوفر مواقف مجانية للسيارات.

القيمتان الصالحتان هما 0 (أو false) و1 (أو true). القيمة التلقائية هي false.

<RatePlanID> Optional string يمثّل رقم تعريف خطة الأسعار المعرّف الفريد لتركيبة غرفة وحزمة. على سبيل المثال، إذا كانت قيمة <RoomID> هي 5 وقيمة <PackageID> ABC، يمكنك استخدام القيمة 5-ABC لـ <RatePlanID>. ننصح بشدة باستخدام RatePlanID كمتغيّر لإنشاء عنوان URL ديناميكي للصفحة المقصودة (المعروفة سابقًا باسم نقطة البيع).

ولمزيد من المعلومات، راجِع استخدام المتغيّرات والشروط.

<Rates> Optional <Rates> الأسعار التي تلغي الإعدادات التلقائية لـ "حزمة الغرف" هذه يستخدم هذا العنصر بنية <Rates> نفسها في <Result>.
<Refundable> Optional Object تفعِّل هذه السياسة إدراج السعر على أنّه قابل للاسترداد بالكامل أو توفير إمكانية إلغاء مجانية. وإذا لم يتم تقديمها، لن يتم عرض أي معلومات حول رد الأموال. إنّ سياسة ردّ الأموال على المستوى <PackageData> تلغي سياسة ردّ الأموال على مستوى <Result>. إنّ سياسة ردّ الأموال على المستوى <Rates> تلغي سياسة ردّ الأموال على مستوى <PackageData>. ويمكن أيضًا إبراز الأسعار القابلة للاسترداد للمستخدمين من خلال خيارات بديلة بدون تعديل مخطّط رسائل المعاملات مباشرةً. مزيد من المعلومات حول هذه الخيارات سياسة الأسعار القابلة للاسترداد

يوضّح المثال التالي العنصر <Refundable> مع مجموعة كل سماته:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

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

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

  • available: (مطلوبة) اضبط القيمة على 1 (أو true) للإشارة إلى ما إذا كان السعر يتيح استرداد الأموال بالكامل، وبخلاف ذلك، يتم ضبطها على 0 (أو false).
  • refundable_until_days: (مطلوبة إذا كانت قيمة السمة available هي true) تحدّد عدد الأيام التي تسبق تسجيل الوصول والتي يمكن فيها طلب استرداد الأموال بالكامل. يجب أن تكون قيمة refundable_until_days عددًا صحيحًا بين 0 و330، بشكل شامل.
  • refundable_until_time: (يُنصح به بشدة إذا كانت قيمة السمة available هي true) تحدّد آخر وقت، حسب التوقيت المحلي للفندق، الذي سيتم فيه قبول طلب ردّ الأموال بالكامل. يمكن الجمع بين ذلك مع refundable_until_days لتحديد أنّ "عمليات ردّ الأموال متاحة حتى الساعة 4:00 مساءً قبل يومين من تسجيل الوصول بيومَين". إذا لم يتم ضبط السمة refundable_until_time، يتم ضبط القيمة تلقائيًا على منتصف الليل.

    تستخدم قيمة هذه السمة تنسيق الوقت.

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

  • في حال عدم ضبط available أو refundable_until_days، لن يظهر السعر كقابل للاسترداد.
  • إذا كانت قيمة available هي 0 (أو false)، يتم تجاهل السمات الأخرى. لا يظهر هذا السعر على أنّه قابل للاسترداد حتى في حال ضبط إحدى السمتَين الأخريَين أو كلتيهما.
<RoomID> Required string المعرّف الفريد لبيانات الغرفة. يمكنك استخدام رقم التعريف هذا لمطابقة بيانات حزمة الغرف مع ما أرسلته في <RoomData>. لمزيد من المعلومات، يُرجى الاطّلاع على البيانات الوصفية لحِزمة الغرف. (يمكنك أيضًا استخدام رقم التعريف هذا للإشارة إلى تعريف غرفة مشترك في رسالة "معاملة" واحدة عند تحديد تضمين بيانات الغرفة.)
<Tax> Required float الضرائب التي يتم احتسابها للسعر النهائي للغرفة يأخذ العنصر <Tax> سمة واحدة مطلوبة، currency، وهي تحدّد رمز العملة المكوَّن من ثلاثة أحرف للضرائب. على سبيل المثال، استخدِم USD للدولار الأمريكي.

أمثلة

حزمة لشخص واحد

يحدد المثال التالي ردًا بحزمة إشغال واحدة. عندما يختار أحد المستخدمين 1 في أداة اختيار معدّل الإشغال، تعرض Google أدنى سعر مؤهَّل بغض النظر عن عدد النزلاء.

إذا لم يتوفر سعر الإقامة الفردية، ستعرض Google أدنى سعر للإقامة المزدوجة. تجدر الإشارة إلى أنّه لا يتم الاستعلام عن أسعار الإقامة الفردية في حال توفّرت إمكانية الإشغال المزدوج أو أي أسعار إضافية مؤقتًا لمسار الرحلة.

يشير هذا المثال إلى البيانات الوصفية المحددة مسبقًا للغرفة والحزمة باستخدام العنصرَين <RoomID> و<PackageID>. استخدِم العنصرَين <RoomData> و<PackageData> لتحديد تلك المعلومات.

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 1 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <!-- Note:  Once defined it does not have to be repeated for future
              Transaction Messages.
              PropertyDataSets can also be defined and sent in their own
              Transaction Message separately from pricing. Google can be
              configured to pull just PropertyDataSets once per day
              (or on a predefined frequency). -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P11111</PackageID>
      <Occupancy>1</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
  <Result>
    <!-- Single occupancy pricing will be specified in a room bundle below -->
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P54321</RatePlanID>
    </RoomBundle>
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P11111</PackageID>
      <!-- Price for 1 ("occupancy") is the lowest price and will be
           displayed -->
      <Baserate currency="USD">174.99</Baserate>
      <Tax currency="USD">22.08</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P11111</RatePlanID>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
           occupancy will be displayed-->
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
      <RatePlanID>436233-P12345</RatePlanID>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 1 or more occupancies..-->
  </Result>
</Transaction>


مكانان أو أكثر

يحدد المثال التالي ردًا يحتوي على شغلين أو أكثر.

يشير هذا المثال إلى البيانات الوصفية المحددة مسبقًا للغرفة والحزمة باستخدام العنصرَين <RoomID> و<PackageID>. استخدِم العنصرَين <RoomData> و<PackageData> لتحديد تلك المعلومات.

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 3 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Efficient method of defining Room Bundles-->
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P33333</PackageID>
      <Occupancy>3</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

  <Result>
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
    <!-- Base Room Bundle -->
    <RoomBundle>
      <!-- Baserate above and attributes must match atleast one room bundle
           below -->
      <RoomID>060773</RoomID>
      <PackageID>P33333</PackageID>
      <Baserate currency="USD">499.99</Baserate>
      <Tax currency="USD">55.12</Tax>
      <OtherFees currency="USD">22.00</OtherFees>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Lowest price for 3 ("occupancy"), shown below, will be displayed -->
      <Baserate currency="USD">598.88</Baserate>
      <Tax currency="USD">62.12</Tax>
      <OtherFees currency="USD">30.00</OtherFees>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 2 or more occupancies..-->
  </Result>
</Transaction>


مجموعات غرف متعددة

يوضح المثال التالي خيار "الإشغال" في حزم غرف متعددة لتوضيح الأسعار المحتملة لغرف النُزل.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
    ...
    <!-- Suite Room Bundle -->
    <RoomBundle>
      <RoomID>suite1</RoomID>
      <PackageID>standard</PackageID>
      <Occupancy>2</Occupancy>
      <!-- Price for room -->
      <Baserate currency="USD">80.00</Baserate>
      <Tax currency="USD">5.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="Suite for 2" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>

    <!-- Small Dorm Room Bundle -->
    <RoomBundle>
      <RoomID>small_dorm</RoomID>
      <PackageID>economy</PackageID>
      <Occupancy>1</Occupancy>
      <!-- Price per bed -->
      <Baserate currency="USD">35.00</Baserate>
      <Tax currency="USD">3.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="1 bed in small dorm" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>

    <!-- Large Dorm Room Bundle -->
    <RoomBundle>
      <RoomID>large_dorm</RoomID>
      <PackageID>economy</PackageID>
      <Occupancy>1</Occupancy>
      <!-- Price per bed -->
      <Baserate currency="USD">20.00</Baserate>
      <Tax currency="USD">2.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RoomData>
        <Name>
          <Text text="1 bed in large dorm" language="en"/>
        </Name>
      </RoomData>
    </RoomBundle>
    ...
  </Result>
</Transaction>

أسعار مشروطة متعددة

يحدّد المثال التالي سعرًا أساسيًا وأسعارًا مشروطة متعددة ضمن <RoomBundle>:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">2.00</OtherFees>

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL. For details, see Using Variables and Conditions. -->
      <RatePlanID>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>


      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <!-- Neither rate overrides Custom2. -->
      <Custom2>ratebasic</Custom2>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode321</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode432</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<OccupancyDetails>

<Occupancy> في رسالة المعاملة يحدّد الحد الأقصى لعدد الضيوف في غرفة أو حزمة. يمكن أن يحتوي <OccupancyDetails> على معلومات إضافية، مثل عدد النزلاء ونوعهم (بالغون أو الأطفال).

عند ظهور <Occupancy> و<OccupancyDetails> ضمن العنصر <Rates> في <Result> أو <RoomBundle>، يعني ذلك أنّ السعر مقيّد بتفاصيل الإشغال.

البنية

عندما تظهر السمة <OccupancyDetails>، تكون مسبوقة دائمًا بـ <Occupancy>. لاحظ الصيغة التالية:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <Result>
  ...
    <Occupancy>max_number_of_intended_occupants</Occupancy>
    <OccupancyDetails>
      <NumAdults>number_of_adults</NumAdults>
      <Children>
        <Child age=age_of_one_child_guest/>
        <Child age=age_of_one_child_guest/>
      </Children>
    </OccupancyDetails>
  </Result>
</Transaction>

العناصر الفرعية

يحتوي العنصر <OccupancyDetails> على العناصر الثانوية التالية:

عنصر ثانوي مطلوب؟ النوع الوصف
<NumAdults> Required integer عدد النزلاء البالغين. الحد الأدنى:1، الحد الأقصى:20.
<Children> Optional Object تمثّل هذه السمة حاوية لعنصر <Child> واحد أو أكثر.
<Child age> Optional integer الحد الأقصى لعمر هذا الطفل، مثل <Child age="17">.

أمثلة

توضّح الأمثلة التالية كيفية ظهور <OccupancyDetails> ضمن <Results> أو <RoomBundle> أو العنصر الفرعي <Rates>.

نتيجة الرد

يحدّد المثال التالي برنامج رحلة واحدًا وسعره لخاصية واحدة استجابةً لطلب بحث الأسعار المباشر حيث حدَّد المستخدم عدد الضيوف وأنواعهم. هنا، يتم إرجاع <OccupancyDetails>، أي شخصَين بالغَين وطفل واحد، في <Result>.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>060773</Property>
    <RoomID>RoomType101</RoomID>
    <PackageID>Package101</PackageID>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">278.33</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="site1"/>
    </AllowablePointsOfSale>
    <Occupancy>3</Occupancy>
    <OccupancyDetails>
      <NumAdults>2</NumAdults>
      <Children>
        <Child age="17"/>
      </Children>
    </OccupancyDetails>
  </Result>
</Transaction>

الرد على تقييم الأسعار

يحدّد المثال التالي برنامج رحلة واحدًا وسعره لشخص بالغ وطفل واحد. هنا، يتم عرض <OccupancyDetails> في العنصر <Rates> من <Result>.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2018-04-18T11:27:45-04:00">
  <Result>
    <Property>8251</Property>
    <Checkin>2018-06-20</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">62.18</Baserate>
    <Tax currency="USD">2.45</Tax>
    <OtherFees currency="USD">0.00</OtherFees>
    <Rates>
      <Rate rate_rule_id="rule-951">
        <Occupancy>2</Occupancy>
        <OccupancyDetails>
          <NumAdults>1</NumAdults>
          <Children>
            <Child age="17"/>
          </Children>
        </OccupancyDetails>
        <Baserate currency="USD">42.61</Baserate>
        <Tax currency="USD">5.70</Tax>
        <OtherFees currency="USD">0.00</OtherFees>
        <Custom1>abc4</Custom1>
        <AllowablePointsOfSale>
          <PointOfSale id="yourhotelpartnersite.com"/>
        </AllowablePointsOfSale>
      </Rate>
    </Rates>
  </Result>
</Transaction>

حزمة الغرف

يحدد المثال التالي سعر الإقامة لشخصين بالغين وطفل واحد لمدة ليلتين، بسعر يمكن استرداده. هنا، يظهر <OccupancyDetails> داخل <RoomBundle>

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>6781291</Property>
    <Checkin>2017-08-05</Checkin>
    <Nights>2</Nights>
    ...
    <RoomBundle>
      <RoomID>10291</RoomID>
      <RatePlanID>564739</RatePlanID>
      <PackageID>564739</PackageID>
      <Occupancy>3</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="true" refundable_until_days="1" refundable_until_time="23:59:00" />
      <Baserate currency="USD">185.34</Baserate>
      <Tax currency="USD">37.06</Tax>
      <OtherFees currency="USD">2.22</OtherFees>
    </RoomBundle>
  </Result>
</Transaction>

مجموعات غرف متعددة

يحدّد المثال التالي أسعارًا متعددة من <RoomBundle> لا يمكن أن تشمل شخصًا بالغَين وطفلَين. في هذا المثال، تظهر <OccupancyDetails> في العنصر <Rates> في <RoomBundle>.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">275.00</Baserate>
    <Tax currency="USD">27.50</Tax>
    <OtherFees currency="USD">0</OtherFees>
    <RoomBundle>
      <RoomID>5</RoomID>
      <PackageID>STD</PackageID>
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">0</OtherFees>
      <InternetIncluded>1</InternetIncluded>
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <Custom2>ratebasic</Custom2>
      <Occupancy>4</Occupancy>
      <OccupancyDetails>
          <NumAdults>2</NumAdults>
          <Children>
              <Child age="17"/>
              <Child age="17"/>
          </Children>
      </OccupancyDetails>
      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <ChargeCurrency>hotel</ChargeCurrency>
          <Custom1>ratecode321</Custom1>
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <Custom1>ratecode432</Custom1>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>