مرجع 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>
      <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>
      <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>
      <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>
      <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>
      <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 صحيحة.

لكي تعمل فلاتر الوجبات ("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، سيتم ضبط القيمة التلقائية على منتصف الليل.

    تستخدم قيمة هذه السمة تنسيق 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>
      <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>
      <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 سعر غرفة الإقامة. يجب أن تعكس قيمة هذا العنصر ما يلي:

  • بالنسبة إلى الغرف الخاصة، عليك تحديد سعر الإقامة المزدوجة الأقل تكلفة الذي تقدّمه.
  • بالنسبة إلى الغرف المشترَكة، اترك الحقل فارغًا واستخدِم <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 تاريخ تسجيل الوصول لبرنامج رحلة باستخدام تنسيق 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> إلا عند توفُّر أسعار متعددة لمجموعة الغرف/برنامج الرحلة نفسه. على سبيل المثال، يمكنك تحديد أسعار متعدّدة للأسعار المشروطة أو الأسعار الخاصة أو الأسعار المشروطة في حِزم الغرف).

<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، سيتم ضبط القيمة التلقائية على منتصف الليل.

    تستخدم قيمة هذه السمة تنسيق 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> لتوفير أسعار متعددة لموقع إلكتروني معيّن. يُعد المثال أدناه مفيدًا أيضًا لالعقارات المخصصة للاستئجار.

<?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، سيتم ضبط القيمة التلقائية على منتصف الليل.

    تستخدم قيمة هذه السمة تنسيق 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، يمكنك استخدام القيمة <RatePlanID> 5-ABC. ننصحك بشدة باستخدام 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، سيتم ضبط القيمة التلقائية على منتصف الليل.

    تستخدم قيمة هذه السمة تنسيق 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>