مرجع XML قیمت‌گذاری و موجودی اتاق (تراکنش‌ها)

این صفحه مرجعی برای پیام‌های تراکنش مبتنی بر XML ارائه می‌دهد.

<Transaction>

عنصر ریشه پیام تراکنش <Transaction> است. این ظرفی برای اطلاعات توصیفی درباره اتاق‌ها و بسته‌ها و قیمت‌گذاری و دردسترس بودن اتاق‌ها و بسته‌ها است.

عنصر <Transaction> در مکان زیر در سلسله‌مراتب XML پیام تراکنش نشان داده می‌شود:

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

پیام‌هایی که از <Transaction> به‌عنوان عنصر ریشه استفاده می‌کنند، حداقل به یک عنصر فرزند نیاز دارند. پیام‌های تراکنش می‌توانند هر تعداد عنصر فرزند داشته باشند، به‌شرطی که اندازه کل پیام از ۱۰۰ مگابایت بیشتر نشود.

نحو

عنصر <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

لحظه‌ای که پیام تراکنش ارسال شد.

هر پیامی که با مُهر زمان در ۲۴ ساعت گذشته ارسال شده باشد پردازش خواهد شد، و از پیام‌هایی که مُهر زمان نداشته باشند صرف‌نظر خواهد شد.

پیام‌ها براساس 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>
    <MilesIncluded>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines"/>
      </Provider>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
    </MilesIncluded>
  </Result>
</Transaction>

نرخ‌های یک شب

مثال زیر داده‌های قیمت‌گذاری را برای ۱ تا ۷ شب از ۷ ژوئن ۲۰۲۳ تعریف می‌کند:

<?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>
      </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> یک سوئیت بزرگ ممکن است ۶ باشد، اما <Occupancy> آن ۴ است.

مقدار <Capacity> باید عدد صحیح مثبتی بین ۱ و ۲۰ باشد.

<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 حداکثر تعداد مهمانانی که اتاق برای آن‌ها درنظر گرفته شده است. برای مثال، یک سوئیت بزرگ ممکن است ازنظر فیزیکی بتواند ۶ مهمان را در خود جای دهد (ظرفیت = ۶)، اما فقط برای حداکثر ۴ مهمان درنظر گرفته شده است.

این مقدار باید کمتر یا مساوی با عنصر <Capacity> باشد که تعداد افرادی است که اتاق می‌تواند به‌طور فیزیکی در خود جای دهد.

مقدار <Occupancy> باید عدد صحیح مثبتی بین ۱ تا ۹۹ باشد.

<Occupancy> ممکن است با <OccupancyDetails> همراه باشد که نوع مهمانان (بزرگسال یا کودک) را مشخص می‌کند. برای نحو و شرح عناصر فرزند، به <OccupancyDetails> مراجعه کنید.

<OccupancySettings> Optional Object تنظیماتی که می‌تواند الزامات اشغال اتاق را محدود یا اصلاح کند.

عنصر <OccupancySettings> عناصر فرزند زیر را می‌گیرد:

  • <MinOccupancy>: حداقل تعداد مهمانانی که می‌توانند در اتاق اقامت داشته باشند. برای مثال، اگر این گزینه روی 2 تنظیم شده باشد، این اتاق را نمی‌توان برای یک مهمان رزرو کرد.

    مقدار <MinOccupancy> باید عدد صحیح مثبتی بین ۱ تا ۹۹ باشد و می‌تواند این دو عدد را نیز دربر بگیرد.

  • ‫<MinAge>: حداقل سن برای همه مهمانانی که در اتاق اقامت دارند. برای مثال، اگر این مقدار روی 18 تنظیم شده باشد، این اتاق فقط برای گروه‌هایی قابل‌رزرو است که همه مهمانان ۱۸ سال یا بیشتر داشته باشند.

    مقدار <MinAge> باید عدد صحیح مثبتی بین ۰ تا ۹۹ باشد و می‌تواند این دو عدد را نیز دربر بگیرد.

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

لازم نیست همه عناصر فرزند گنجانده شوند.

<PhotoURL> Optional Object نشانی وب و زیرنویس اختیاری برای عکس اتاق یا «بسته ترکیبی اتاق» موردنظر. می‌توانید بیش‌از یک <PhotoURL> برای اتاق یا «بسته ترکیبی اتاق» مشخص کنید. هر نشانی وب عکس باید در <PhotoURL> خودش باشد.

این عنصر عناصر فرزند زیر را می‌گیرد:

  • <URL>: مکان عکس را مشخص می‌کند. مکان باید عمومی باشد (دیوار آتش نداشته باشد) و باید شامل پروتکل باشد (برای مثال، https://). فقط از یک <URL> برای هر <PhotoURL> استفاده کنید.
  • <Caption>: شرح عکس را تعریف می‌کند. این عنصر یک عنصر فرزند تکی، <Text>، می‌گیرد که دو مشخصه الزامی دارد: text و language. مشخصه text زیرنویس ناشنوایان است، و مشخصه language کد زبان دو حرفی را مشخص می‌کند، مانند en.

مثال:

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

مثال‌ها

داده‌های اتاق

مثال زیر داده‌های اتاق را تعریف می‌کند:

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

فراداده اتاق و بسته

مثال زیر فراداده اتاق و بسته را تعریف می‌کند:

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

چند بسته ترکیبی اتاق

مثال زیر فراداده اتاق و بسته را برای چند «بسته ترکیبی اتاق» تعریف می‌کند:

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

<RoomFeatures>

ویژگی‌های موجود در اتاق را تعریف می‌کند.

عنصر <RoomFeatures> در مکان زیر در سلسله‌مراتب XML پیام تراکنش نشان داده می‌شود:

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

نحو

عنصر <RoomFeatures> از نحو زیر استفاده می‌کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    ...
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
        <Beds>
           <Bed size="[single|semi_double|double|queen|king]">
             <Width unit="cm" number="width"/>
             <Length unit="cm" number="length"/>
           </Bed>
           <!-- Include with any additional beds. -->
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>[shared|private]</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>[smoking|non_smoking]</Smoking>
        <BathAndToilet relation="[together|separate]">
          <Bath bathtub="[false|true]" shower="[false|true]"/>
          <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <!-- (Optional) Defines the type of views from the room. -->
          <!-- Example: <OceanView/> -->
        </Views>

      </RoomFeatures>
      ...
    </RoomData>
    ...
  </PropertyDataSet>
</Transactions>

مشخصه‌ها

عنصر <RoomFeatures> هیچ مشخصه‌ای ندارد.

عناصر فرزند

عنصر <RoomFeatures> دارای عناصر فرزند زیر است:

عنصر فرعی الزامی است؟ نوع شرح
<JapaneseHotelRoomStyle> Optional enum

نشان‌دهنده سبک اتاق هتل ژاپنی است.

مقادیر معتبر عبارت‌اند از:

  • ‫western: اتاقی به سبک غربی با تخت‌خواب.
  • ‫japanese: اتاقی به‌سبک ژاپنی با مبل تختخواب‌شو.
  • japanese_western: اتاقی به‌سبک ژاپنی-غربی با تختخواب‌های سبک غربی و تشک‌های سبک ژاپنی.
<Beds> Optional Object به تعداد <Bed> موجود در اتاق، دارد. توجه داشته باشید که فوتون‌های ژاپنی نباید در اینجا شمرده شوند.

هر <Bed> مشخصه‌های زیر را دارد:

  • size (اختیاری): مقادیر معتبر عبارت‌اند از single، semi_double، double، queen، و king.
هر <Bed> دارای عناصر فرزند زیر است:
  • <Width> (اختیاری): عرض تخت را مشخص می‌کند. باید دارای مشخصه unit با مقدار cm و مشخصه number با عرض تخت به‌صورت عدد صحیح سانتی‌متر باشد.
  • <Length> (اختیاری): طول تخت را مشخص می‌کند. باید دارای مشخصه unit با مقدار cm و مشخصه number با طول تخت به‌صورت عدد صحیح به سانتی‌متر باشد.
مثال:
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
<Suite> Optional empty اگر این اتاق سوئیت است، این عنصر را ارائه دهید.
<Capsule> Optional empty وقتی این اتاق از نوع اتاق کپسولی است، این عنصر را ارائه دهید.
<Roomsharing> Optional enum اینکه این اتاق با ساکنان دیگر مثل مالکان یا مهمانان دیگر مشترک است یا نه. مقادیر معتبر shared و private است.
<Outdoor> Optional empty اگر این اتاق اقامتگاه فضای باز است که دیوار ثابت، لوله‌کشی، و کنترل دما ندارد، این عنصر را ارائه دهید. برای مثال، اتاق‌های هتل اقامتگاه فضای باز نیستند، درحالی‌که اردوگاه‌هایی که مهمانان در چادر اقامت می‌کنند و پارک‌های خودروهای کاروان که مهمانان خودروی کاروان خود را می‌آورند، اقامتگاه فضای باز هستند.
<MobilityAccessible> Optional empty اگر این اتاق برای افراد کم‌توان حرکتی دسترس‌پذیر است، این عنصر را ارائه دهید.
<Smoking> Optional enum اینکه این اتاق سیگار ممنوع است یا سیگار آزاد. مقادیر معتبر non_smoking و smoking هستند.
<BathAndToilet> Optional Object حاوی اطلاعاتی درباره حمام و توالت در اتاق است.

شاخصه:

  • relation (اختیاری): نشان می‌دهد حمام و توالت چگونه نسبت به یکدیگر قرار گرفته‌اند. مقادیر معتبر عبارت‌اند از together (حمام و توالت هر دو در یک اتاق (مثلاً حمام) درست کنار یکدیگر قرار دارند) و separate (حمام و توالت هرکدام فضای اختصاصی دارند). اگر اتاق هم حمام و هم توالت نداشته باشد، این مشخصه نباید تنظیم شود.

این عنصر به‌طور اختیاری عناصر فرزند زیر را می‌گیرد:

  • <Bath> (اختیاری): وجود این عنصر نشان می‌دهد که اتاق وان دارد.

    این مشخصه‌ها عبارت‌اند از:

    • bathtub (اختیاری): نشان می‌دهد که حمام دارای وان است. مقادیر معتبر عبارت‌اند از 0 (یا false) و 1 (یا true).
    • shower (اختیاری): نشان می‌دهد که حمام دوش دارد. مقادیر معتبر 0 (یا false) و 1 (یا true) هستند.
  • <Toilet> (اختیاری): وجود این عنصر نشان می‌دهد که این اتاق توالت دارد.

    این مشخصه‌ها عبارت‌اند از:

    • electronic_bidet (اختیاری): نشان می‌دهد که توالت بیده الکترونیکی دارد. مقادیر معتبر عبارت‌اند از 0 (یا false) و 1 (یا true).
    • mobility_accessible (اختیاری): نشان می‌دهد که توالت برای افراد کم‌توان حرکتی قابل‌دسترس است. مقادیر معتبر 0 (یا false) و 1 (یا true) است.

مثال:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath> Optional empty اگر این اتاق وان خصوصی در فضای باز دارد، این عنصر را ارائه دهید.
<AirConditioning> Optional empty اگر این اتاق تهویه مطبوع دارد، این عنصر را ارائه دهید.
<Balcony> Optional empty اگر این اتاق بالکن یا ایوان دارد، این عنصر را ارائه دهید.
<Views> Optional Object گزینه‌های معتبر عبارت‌اند از:

<AirportView/>
<BayView/>
<BeachView>/>
<CastleView/>
<CityView/>
<CountrysideView/>
<CourtyardView/>
<DuneView/>
<ForestView/>
<GardenView/>
<GolfCourseView/>
<HarborView/>
<LagoonView/>
<LakeView/>
<MarinaView/>
<MountainView/>
<NatureView/>
<OceanView/>
<ParkView/>
<PartialOceanView/>
<PisteView/>
<PoolView/>
<PyramidView/>
<RiverView/>
<StreetView/>

مثال‌ها

JapaneseHotelRoomStyle مقدار پیش‌فرض ندارد. حذف کردن مقدار منجر به خطای XML نمی‌شود، اما وقتی کاربر براساس سبک اتاق یا تخت فیلتر می‌کند، فهرستگان شما در نتایج جستجو نشان داده نمی‌شود.

دو تخت یک‌نفره

مثال زیر نحوه استفاده از <RoomFeatures> را نشان می‌دهد:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two single beds -->
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>private</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>non_smoking</Smoking>
        <BathAndToilet relation="separate">
          <Bath bathtub="1" shower="1"/>
          <Toilet electronic_bidet="1" mobility_accessible="1"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <LakeView/>
          <MarinaView/>
          <BeachView/>
          <ForestView/>
          <MountainView/>
          <NatureView/>
        </Views>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

دو تخت‌خواب یک‌نفره بزرگ

در زیر نمونه‌ای از اتاق ژاپنی به‌سبک western با دو تخت‌خواب double آورده شده است.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two double beds-->
          <Bed size="double"></Bed>
          <Bed size="double"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>


سبک ژاپنی بدون تخت‌خواب

در زیر نمونه‌ای از اتاق به‌سبک ژاپنی بدون تخت را می‌بینید. اطلاعات تخت برای اتاق سبک japanese الزامی نیست.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

ژاپنی غربی با تخت‌خواب

در زیر نمونه‌ای از اتاق به‌سبک japanese_western با تخت‌خوابی به‌اندازه king آورده شده است.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
        <Beds>
          <Bed size="king"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

اگر شریک اطلاعات تعداد تخت‌خواب‌ها را در japanese_western اتاق ندارد، از این نمونه پیروی کنید:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

<PackageData>

فراداده‌های مستقل از برنامه سفر را درباره «بسته‌های ترکیبی اتاق» برای دارایی تعریف می‌کند. این عنصر حاوی اطلاعاتی است که با شریک و هتل مرتبط است، اما با برنامه سفر مرتبط نیست. هدف موردنظر این است که همه داده‌های غیربرنامه سفر یک‌بار تعریف شوند و از داده‌های برنامه سفر به آن‌ها ارجاع داده شود.

عنصر <PackageData> در مکان زیر در سلسله‌مراتب XML پیام تراکنش نشان داده می‌شود:

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

عنصر <PackageData> شبیه به <RoomData> است، اما ویژگی‌ها و شرایط نرخ را که بخشی از شرح فیزیکی اتاق نیستند توصیف می‌کند. از <RoomData> و <PackageData> به‌صورت ترکیبی استفاده می‌کنید تا جزئیات مربوط به «بسته‌های ترکیبی اتاق» و ویژگی‌های نرخ را ارائه دهید. برای اتاق‌های تکی که بخشی از بسته نیستند، فقط از <RoomData> استفاده کنید.

می‌توانید هر دو عنصر <RoomData> و <PackageData> را برای یک اتاق یا «بسته ترکیبی اتاق» تعریف کنید. وقتی Google آن اتاق یا بسته را در نتایج جستجو نمایش می‌دهد، شرح هر دو را دربرمی‌گیرد که با خط تیره از هم جدا شده‌اند.

اگر یک عنصر <PackageData> را برای دارایی به‌روزرسانی کنید، باید همه عناصر <PackageData> و <RoomData> را برای دارایی به‌روزرسانی کنید. هر <PropertyDataSet> به‌عنوان همه داده‌های مربوط به ملک درنظر گرفته می‌شود و روی هرگونه داده موجود بازنویسی می‌شود.

برای اطلاعات بیشتر، به فراداده «بسته ترکیبی اتاق» مراجعه کنید.

نحو

عنصر <PackageData> از نحو زیر استفاده می‌کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
  <PropertyDataSet ... >
    <PackageData>
      <PackageID>package_ID</PackageID>
      <Name>
        <Text text="package_name" language="language_code"/>
        ...
      </Name>
      <Description>
        <Text text="package_description" language="language_code"/>
        ...
      </Description>
      <Refundable available="[false|true]" refundable_until_days="number_of_days"
        refundable_until_time="time"/>
      <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails><!-- optional info about the types of guests,
      whether adults or children --></OccupancyDetails>
      <!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
      <BreakfastIncluded>boolean_value</BreakfastIncluded>
      <InternetIncluded>boolean_value</InternetIncluded>
      <ParkingIncluded>boolean_value</ParkingIncluded>
      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      ...
      <Meals>
        <Breakfast
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
        <Dinner
          included="[true|false]" buffet="[true|false]"
          in_room="[true|false]" in_private_space="[true|false]"/>
      </Meals>
      <CheckinTime>checkin_time</CheckinTime>
      <CheckoutTime>checkout_time</CheckoutTime>
      <MembershipBenefitsIncluded>
        <ProgramName>
          <Text language="en" text="Special Rewards">
        </ProgramName>
        <ProgramLevel>
          <Text language="en" text="Platinum">
        </ProgramLevel>
      </MembershipBenefitsIncluded>
      <OnPropertyCredit>
        <Amount currency="USD">123.45</Amount>
      </OnPropertyCredit>
    </PackageData>
    <!-- a PackageID with a MilesIncluded rate feature -->
    <PackageData>
      <PackageID>room_with_miles</PackageID>
      <Name>
       <Text text="Room with Bundled Miles" language="en">
      </Name>
      <ChargeCurrency>hotel </ChargeCurrency>
      <MilesIncluded>
        <NumberOfMiles>integer</NumberOfMiles>
        <Provider>
          <Text language="en" text="provider-name">
        </Provider>
        <!-- Add Loyalty point information -->
        <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
      </MilesIncluded>
    </PackageData>
    ...
    ...
  </PropertyDataSet>
  ...
</Transaction>

مشخصه‌ها

عنصر <PackageData> هیچ مشخصه‌ای ندارد.

عناصر فرزند

عنصر <PackageData> دارای عناصر فرزند زیر است:

عنصر فرعی الزامی است؟ نوع شرح
<BreakfastIncluded> Optional boolean مشخص می‌کند که آیا این بسته شامل صبحانه با نرخ است یا نه. مقادیر معتبر عبارت‌اند از 0 (یا false) و 1 (یا true).

بهتر است به‌جای <BreakfastIncluded> از <Meals> استفاده کنید.

<ChargeCurrency> Optional enum زمان و مکان پرداخت هزینه رزرو توسط کاربر. این عنصر از همان نحو <ChargeCurrency> در <Result> استفاده می‌کند.

مقدار پیش‌فرض web است.

<CheckinTime> Optional Time زودترین زمان ممکن برای اعلام حضور. زمان باید کمتر از ۲۴:۰۰ به وقت محلی هتل باشد.
<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) کار کنند، باید هم <Breakfast> و هم <Dinner> با مشخصه included ارائه شوند.

<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 حداکثر تعداد مهمانانی که «بسته ترکیبی اتاق» برای آن‌ها درنظر گرفته شده است. برای مثال، یک سوئیت بزرگ ممکن است ازنظر فیزیکی بتواند ۶ مهمان را در خود جای دهد، اما فقط برای حداکثر ۴ مهمان درنظر گرفته شده است.

این مقدار باید کمتر یا مساوی با عنصر <Capacity> باشد که تعداد افرادی است که اتاق می‌تواند به‌طور فیزیکی در خود جای دهد.

مقدار <Occupancy> باید عدد صحیح مثبتی بین ۱ تا ۹۹ باشد و می‌تواند این دو عدد را نیز دربر بگیرد.

اگر این عنصر را هم در <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 باید عدد صحیحی بین ۰ تا ۳۳۰ باشد و می‌تواند این دو عدد را نیز دربر بگیرد.
  • refundable_until_time: (اگر available true باشد، به‌شدت توصیه می‌شود) آخرین زمان روز را به وقت محلی هتل مشخص می‌کند که درخواست استرداد کامل مبلغ پذیرفته می‌شود. این را می‌توان با refundable_until_days ترکیب کرد تا مثلاً مشخص شود که «استرداد مبلغ تا ساعت ۴:۰۰ بعدازظهر دو روز قبل‌از ورود به هتل امکان‌پذیر است». اگر refundable_until_time تنظیم نشده باشد، مقدار به‌طور پیش‌فرض روی نیمه‌شب تنظیم می‌شود.

    مقدار این مشخصه از قالب زمان استفاده می‌کند.

هنگام تنظیم مشخصه‌ها، به موارد زیر توجه کنید:

  • اگر available یا refundable_until_days تنظیم نشده باشد، نرخ به‌عنوان قابل‌استرداد نمایش داده نمی‌شود.
  • اگر available برابر با 0 یا false باشد، مشخصه‌های دیگر نادیده گرفته می‌شوند. نرخ به‌عنوان قابل‌استرداد نمایش داده نمی‌شود، حتی اگر یکی یا هر دو مشخصه دیگر تنظیم شده باشد.
<MembershipBenefits Included> Optional boolean نرخ شامل مزایای وضعیت ممتاز برای مدت اقامت است. شامل پارامترهای زیر است:
  • ‫ProgramName: نام برنامه وضعیت ممتاز
  • ‫ProgramLevel: سطح برنامه. برای مثال: «طلا».
  • ‫NightlyValue (optional): ارزش شبانه مزایا.
<CarRentalIncluded> Optional boolean رده‌بندی شامل کرایه خودرو رایگان برای مدت اقامت است.
<MilesIncluded> Optional boolean نرخ شامل مایل‌های مسافر همیشگی است. پارامترها عبارت‌اند از:
  • ‫NumberOfMiles: تعداد مایل‌ها در هر برنامه سفر.
  • ‫Provider: ارائه‌دهنده مایل‌های مسافر پرسفر.
  • LoyaltyCampaignID: شناسه یکتایی که «پویش وفاداری» خاصی را که با Google پیکربندی و به‌روزرسانی شده است شناسایی می‌کند. این گزینه امتیازهای وفاداری را به قیمت هتل اضافه می‌کند.

    برای گنجاندن عنصر <MilesIncluded>، شناسه پویش باید در پیکربندی «پویش وفاداری» پیکربندی شود. جزئیات خاص درباره نحوه استفاده Google از امتیازهای وفاداری در نتایج توسط پیکربندی «پویش وفاداری» تعیین می‌شود.

    عنصر <MilesIncluded> دارای عنصر فرزند <NumberOfMiles> است که تعداد امتیازهای کسب‌شده را محاسبه می‌کند. اگر <NumberOfMiles> تنظیم نشده باشد، امتیازهای کسب‌شده براساس پیکربندی «پویش وفاداری» تعیین می‌شود.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • توجه: <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>
        <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      </MilesIncluded>
      <AirportTransportationIncluded direction="from"/>
    </PackageData>
  </PropertyDataSet>

<!-- The actual list of prices -->
  <Result>
…
  </Result>
</Transaction>

غذاها و عکس‌ها

مثال زیر فراداده اتاق و بسته را برای وعده‌های غذایی، عکس‌ها، و زمان‌های اعلام حضور و تسویه‌حساب تعریف می‌کند:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Meals Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <!-- Guests can choose to have breakfast in their room or in another
        space to avoid contact with other guests. -->
        <Breakfast included="1" in_room="1" in_private_space="1"/>
        <Dinner included="1" buffet="1"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

صبحانه

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <Breakfast included="true"/>
        <!-- Dinner not included needs to be explicitly specified -->
        <Dinner included="false"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

<Result>

محفظه‌ای برای به‌روزرسانی‌های قیمت‌گذاری و دردسترس بودن در پیام <Transaction>.

منتقل کنید.

عنصر <Result> در مکان زیر در سلسله‌مراتب XML پیام تراکنش نشان داده می‌شود:

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

از <Result> برای تنظیم یا به‌روزرسانی قیمت اتاق‌ها و تعریف فهرست موجودی دردسترس استفاده کنید. موارد تعریف‌شده در این عنصر معمولاً به فراداده مستقل از برنامه سفر درباره اتاق یا بسته (مانند شرح یا مجموعه‌ای از امکانات رفاهی) تعریف‌شده در <PackageData> و <RoomData> ارجاع می‌دهند.

معمولاً پیام‌های «تراکنش» را با به‌روزرسانی‌های قیمت به‌طور مکرر ارسال می‌کنید. اینکه دقیقاً چطور و هر چند وقت یک‌بار این کار را انجام می‌دهید به حالت ارسال شما بستگی دارد.

می‌توانید از <Result> در پیام تراکنش برای برداشتن برنامه سفر استفاده کنید، همان‌طور که در برداشتن موجودی شرح داده شده است. برای اطلاعات بیشتر درباره استفاده از پیام‌های «تراکنش» برای به‌روزرسانی قیمت‌ها و دردسترس بودن، به افزودن و به‌روزرسانی موجودی مراجعه کنید.

یک پیام تراکنش می‌تواند شامل هر تعداد عنصر <Result> باشد، به‌شرطی که اندازه پیام از ۱۰۰ مگابایت بیشتر نشود.

نحو

عنصر <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. -->
    <!-- Child occupancy rates should only be sent through Live pricing
         with context and not through Pull or Changed pricing -->
    <OccupancyDetails>occupancy_info</OccupancyDetails>

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

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

    <MilesIncluded>
      <NumberOfMiles>integer</NumberOfMiles>
      <Provider>
        <Text language="en" text="provider-name">
      </Provider>
      <!-- Add Loyalty point information -->
      <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
    </MilesIncluded>
  </Result>
  ...
  </Transaction>

مشخصه‌ها

عنصر <Result> دارای مشخصه‌های زیر است:

مشخصه الزامی است؟ نوع شرح
mergeable Optional boolean به‌طور پیش‌فرض، قیمت‌های جدید برای یک جفت هتل و برنامه سفر خاص، جایگزین قیمت‌های قبلی (منقضی‌نشده) موجود در حافظه پنهان Google خواهد شد. ویژگی ادغام‌پذیر به شما امکان می‌دهد قیمت‌های اضافی را بدون حذف اطلاعات قیمت‌گذاری قبلی در حافظه نهان Google ذخیره کنید. «پرس‌وجوی قیمت‌گذاری زنده» با پاسخ‌های «بافت» همیشه این مشخصه را روی true تنظیم می‌کند (صرف‌نظر از پاسخ پیام تراکنش شما).

عناصر فرزند

عنصر <Result> دارای عناصر فرزند زیر است:

عنصر فرعی الزامی است؟ نوع شرح
<AllowablePointsOfSale> Optional Object یک یا چند صفحه مقصد که برای هتل واجدشرایط است. صفحه مقصد وب‌سایتی است که می‌تواند فرایند رزرو را برای کاربر نهایی انجام دهد. برای گنجاندن صریح صفحه مقصد خاصی (و مستثنی کردن دیگران)، یک یا چند عنصر <AllowablePointsOfSale> اضافه کنید که با مشخصه id عنصر <PointOfSale> در فایل صفحه‌های مقصد مطابقت داشته باشد.

اگر این عنصر را اضافه نکنید، همه صفحه‌های مقصد تعریف‌شده در فایل صفحه‌های مقصد برای استفاده در رزرو اتاق واجدشرایط درنظر گرفته می‌شوند. برای اطلاعات بیشتر، به نحو فایل صفحه‌های مقصد مراجعه کنید.

<Baserate> Optional float

قیمت اتاق برای اقامت. مقدار این عنصر باید نشان‌دهنده موارد زیر باشد:

  • برای اتاق خصوصی، ارزان‌ترین نرخ اتاق دونفره را که ارائه می‌دهید تنظیم کنید. اگر نرخ دونفره نداشته باشید و نرخ‌های غیردونفره در حسابتان فعال باشد، در اینجا تعداد نفرات بیشتر مجاز است. لطفاً برای فعال کردن نرخ‌های غیراشغال دوگانه با ما تماس بگیرید. نرخ‌های اقامت تک‌نفره در اینجا مجاز نیست—این نرخ‌ها باید در <Rates> تنظیم شود.
  • برای اتاق مشترک، خالی بگذارید و از <RoomBundle> استفاده کنید.
  • این مقدار باید قیمت پایه کل برای همه شب‌ها باشد، نه میانگین نرخ شبانه.

وقتی اتاق برای برنامه سفر دردسترس نباشد، <Baserate> باید حذف شود یا روی -1 تنظیم شود، و <Unavailable> باید به‌همراه دلایل شناخته‌شده برای دردسترس نبودن مشخص شود. گنجاندن <Unavailable> توصیه می‌شود اما در اکثر موارد اختیاری است. اگر سؤالی دارید، لطفاً با ما تماس بگیرید.

برای برداشتن «بسته ترکیبی اتاق»، از دستورالعمل‌های برداشتن بسته ترکیبی اتاق استفاده کنید.

<Baserate> نباید حاوی هیچ‌گونه نماد گروه‌بندی رقم، مانند ویرگول (،) یا نقطه (.) باشد. همیشه کسرها را بااستفاده از نقطه (.) به‌عنوان علامت اعشار جدا کنید. برای مثال، ‫۱٬۲۰۰٫۴۰ دلار را به‌صورت زیر نشان دهید:

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

عنصر <Baserate> مشخصه‌های اختیاری زیر را می‌گیرد:

  • all_inclusive: مقدار بولی که نشان می‌دهد آیا این نرخ شامل مالیات و کارمزد می‌شود یا نه. به‌طور کلی، این مقدار را برای کاربران نهایی ایالات متحده و کانادا روی false تنظیم کنید و مقادیر را برای عناصر <Tax> و <OtherFees> ارائه دهید. اگر از قیمت‌های همه‌جانبه استفاده می‌کنید، ممکن است واجدشرایط نمایش در فهرستگان نباشید، مگر اینکه قیمت‌هایتان مالیات‌ها و کارمزدها را برای کاربران کانادایی جدا کند.

    اکنون قیمت‌های همه‌جانبه به کاربران ایالات متحده نشان داده می‌شود.

    برای همه کاربران نهایی دیگر، معمولاً مالیات‌ها و کارمزدها را در نرخ پایه لحاظ می‌کنید و مقدار مشخصه all_inclusive را روی true تنظیم می‌کنید. برای اطلاعات بیشتر، به خط‌مشی مالیات و کارمزد مراجعه کنید.

    مقدار پیش‌فرض false است.

  • currency: کد ارز سه‌حرفی. برای مثال، USD برای دلار امریکا.
<ChargeCurrency> Optional enum زمان و مکان پرداخت هزینه رزرو توسط کاربر. این عنصر می‌تواند در پیام تراکنش در عنصر <Result> برای قیمت هتل یا بلوک <PackageData> برای بسته ترکیبی اتاق استفاده شود.

مقادیر معتبر عبارت‌اند از:

  • web: هزینه به‌صورت آنلاین در زمان رزرو از کاربر کسر می‌شود. این مقدار پیش‌فرض است. صفحه مقصد واقعی توسط فایل صفحه مقصد تعریف می‌شود و می‌تواند تحت‌تأثیر واحد پول، مکان، زبان، یا عوامل دیگر کاربر قرار گیرد.
  • hotel: هزینه هنگام اعلام حضور در هتل از کاربر کسر می‌شود. اگر پرداخت همیشه باید به واحد پول هتل انجام شود، مقدار <ChargeCurrency> را روی hotel تنظیم کنید. صفحه مقصد واقعی تحت تأثیر واحد پول کاربر قرار نمی‌گیرد.
  • deposit: بخشی از هزینه بلافاصله از کاربر کسر می‌شود و باقی‌مانده هزینه در زمان دیگری کسر می‌شود، معمولاً وقتی کاربر هتل را ترک می‌کند.
  • installments: از کاربر بخش اولیه کل مبلغ سررسید کسر می‌شود و انتظار می‌رود به‌طور معمول تراز تعیین‌شده‌ای را درطول دوره زمانی ثابتی پرداخت کند.

مقدار پیش‌فرض web است.

<Checkin> Required Date تاریخ ورود برای برنامه سفر بااستفاده از قالب تاریخ. ترکیب عنصر <Nights> و عنصر <Checkin> یک برنامه سفر را تشکیل می‌دهد.
Optional string منسوخ‌شده: فیلد سفارشی‌ای را تعریف می‌کند که می‌توانید از آن برای ارسال داده‌های اضافی مرتبط با هتل استفاده کنید. می‌توانید حداکثر پنج مقدار سفارشی را با نام‌های عنصر زیر ارسال کنید:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

عناصر <Custom> به شما امکان می‌دهند داده‌های دلخواه را ارسال کنید. برای مثال، می‌توانید مقداری را در این فیلد مشخص کنید که سپس توسط فایل صفحه‌های مقصد برای ساختن نشانی وب سفارشی برای صفحه مقصد استفاده خواهد شد. حد مجاز برای هر فیلد سفارشی ۲۰۰ نویسه است. برای اطلاعات بیشتر، به فایل‌های صفحه مقصد مراجعه کنید. عناصر <Custom> ارائه‌شده در عنصر <Rate> به عنصر <RoomBundle> منتقل نمی‌شوند. باید مشخصه <Custom> را به‌طور جداگانه در هر <RoomBundle> تعریف کنید.

<ExpirationTime> Optional DateTime تاریخ و ساعتی که قیمت منقضی‌شده درنظر گرفته می‌شود (حداقل ۳ ساعت).

توصیه می‌کنیم اگر مُهر زمان انقضا برای ساختار قیمت‌گذاری‌تان حیاتی نیست، آن را ارائه نکنید.

Google هیچ قیمتی را که منقضی شده باشد ارائه نمی‌دهد و هر برنامه سفری که قیمت منقضی‌شده داشته باشد واجدشرایط پرس‌وجوی قیمت‌گذاری زنده خواهد شد.

<MilesIncluded> Optional boolean نرخ شامل مایل‌های مسافر همیشگی است. پارامترها عبارت‌اند از:
  • ‫NumberOfMiles: تعداد مایل‌ها در هر برنامه سفر.
  • ‫Provider: ارائه‌دهنده مایل‌های مسافر پرسفر.
  • LoyaltyCampaignID: شناسه یکتایی که «پویش وفاداری» خاصی را که با Google پیکربندی و به‌روزرسانی شده است شناسایی می‌کند. این گزینه امتیازهای وفاداری را به قیمت هتل اضافه می‌کند.

    برای گنجاندن عنصر <MilesIncluded>، شناسه پویش باید در پیکربندی «پویش وفاداری» پیکربندی شود. جزئیات خاص درباره نحوه استفاده Google از امتیازهای وفاداری در نتایج براساس پیکربندی «پویش وفاداری» تعیین می‌شود.

    عنصر <MilesIncluded> دارای عنصر فرزند <NumberOfMiles> است که تعداد امتیازهای کسب‌شده را محاسبه می‌کند. اگر <NumberOfMiles> تنظیم نشده باشد، امتیازهای کسب‌شده براساس پیکربندی «پویش وفاداری» تعیین می‌شود.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • توجه: <NumberOfMiles> و <Provider> اختیاری هستند.

<Nights> Required integer تعداد شب‌های برنامه سفر. مقدار عنصر <Nights> باید عدد صحیح مثبت باشد. ترکیب <Nights> و <Checkin> برنامه سفر را تشکیل می‌دهد.
<OtherFees> Optional float کارمزدهایی غیراز نرخ پایه و مالیات که بر قیمت نهایی اتاق تأثیر می‌گذارد. عنصر <OtherFees> یک مشخصه الزامی تکی، currency، را می‌گیرد که کد ارز سه‌حرفی را برای کارمزدها تعریف می‌کند. به‌عنوان مثال، USD.

اگر <Baserate> بزرگ‌تر از صفر باشد، عنصر <OtherFees> الزامی است.

<Occupancy> Optional integer حداکثر تعداد مجاز ساکنان را برای این نرخ مشخص می‌کند. وقتی <Occupancy> مستقیماً زیر <Result> ظاهر می‌شود، باید 2 یا بیشتر را مشخص کند. <Occupancy> ممکن است با <OccupancyDetails> همراه باشد که نوع مهمانان (بزرگسالان یا کودکان) را مشخص می‌کند. اگر نوع مهمان مشخص نشده باشد، فرض می‌شود که بزرگسال است. برای نحو و شرح عناصر فرزند، به <OccupancyDetails> مراجعه کنید. اگر عنصر <Occupancy> ارائه نشده باشد، ظرفیت به‌طور پیش‌فرض 2 درنظر گرفته می‌شود.

نکته کلیدی: نرخ‌های اشغال کودک فقط باید ازطریق قیمت‌گذاری زنده با بافت ارسال شود و نه ازطریق قیمت‌گذاری کششی یا تغییریافته.

توجه: برای فعال کردن ویژگی ارسال قیمت‌های غیردونفره، با تیم پشتیبانی تماس بگیرید.

<PackageID> Optional string شناسه یکتای بسته برای نگاشت آن به داده‌های بسته ازپیش تعریف‌شده. همچنین برای پر کردن متغیر صفحه مقصد PACKAGE-ID استفاده می‌شود. برای اطلاعات بیشتر، به فراداده بسته ترکیبی اتاق مراجعه کنید.

گنجاندن <RoomBundle> برای تعریف <PackageID> و <RoomID> در عنصر <Result> الزامی است. بااین‌حال، ترجیح داده می‌شود که شناسه‌های بسته و اتاق را فقط در عنصر <RoomBundle> به‌جای عنصر <Result> مشخص کنید.

<Property> Required string شناسه هتلی که تحت‌تأثیر داده‌های مرتبط (قیمت، برنامه سفر، «بسته ترکیبی اتاق»، یا فراداده) قرار گرفته است. مقدار این عنصر باید رشته باشد. مقدار این عنصر باید با فهرستگان <id> که در «فید فهرست هتل» تعریف کرده‌اید مطابقت داشته باشد.
<Rates> Optional <Rates> ظرفی برای یک یا چند بلوک <Rate>. هر <Rate> در <Rates> قیمت متفاوتی را برای ترکیب اتاق/برنامه سفر تعریف می‌کند.

وقتی چند نرخ برای ترکیب اتاق/برنامه سفر یکسان وجود دارد یا وقتی نرخ مجاز نیست در سطح <Result> مشخص شود، از عنصر <Rates> استفاده کنید. برای مثال، چند نرخ برای نرخ‌های شرطی، نرخ‌های خصوصی، نرخ‌های شرطی در «بسته‌های ترکیبی اتاق»، یا ظرفیت‌های مختلف تعریف می‌کنید.

توجه: در <Result>، نرخ‌های تک‌نفره را فقط می‌توان در <Rates> مشخص کرد. لطفاً با ما تماس بگیرید تا قیمت‌های غیراشغال دوبرابر را مجاز کنیم.

<Refundable> Optional Object امکان فهرست کردن نرخ به‌عنوان کاملاً قابل‌استرداد یا ارائه لغو رایگان را فراهم می‌کند. اگر ارائه نشود، هیچ اطلاعاتی درباره بازپرداخت نمایش داده نمی‌شود. خط‌مشی استرداد مبلغ در سطح <PackageData> بر خط‌مشی استرداد مبلغ در سطح <Result> اولویت دارد. خط‌مشی استرداد مبلغ در سطح <Rates> بر خط‌مشی استرداد مبلغ در سطح <PackageData> اولویت دارد. قیمت‌گذاری قابل‌استرداد را می‌توان ازطریق گزینه‌های جایگزین بدون تغییر مستقیم طرح‌واره پیام تراکنش برای کاربران برجسته کرد. درباره خط‌مشی نرخ‌های قابل‌استرداد بیشتر بدانید.

مثال زیر عنصر <Refundable> را با همه مشخصه‌های تنظیم‌شده آن نشان می‌دهد:

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

توجه: توصیه می‌کنیم همه مشخصه‌ها را تنظیم کنید. وقتی یک یا چند مشخصه تنظیم نشده باشد، پیام هشدار وضعیت فید تولید می‌شود.

اگر هیچ مشخصه‌ای تنظیم نکنید، نرخ به‌عنوان قابل‌استرداد نمایش داده نمی‌شود. این مشخصه‌ها عبارت‌اند از:

  • available: (الزامی) روی 1 (یا true) تنظیم کنید تا نشان دهد آیا نرخ اجازه استرداد کامل می‌دهد یا نه؛ درغیراین‌صورت روی 0 (یا false) تنظیم کنید.
  • refundable_until_days: (اگر available، true باشد الزامی است) تعداد روزهای قبل‌از ورود به هتل را که می‌توان درخواست استرداد کامل مبلغ کرد مشخص می‌کند. مقدار refundable_until_days باید عدد صحیحی بین ۰ تا ۳۳۰ باشد و می‌تواند این دو عدد را نیز دربر بگیرد.
  • refundable_until_time: (اگر available true باشد، به‌شدت توصیه می‌شود) آخرین زمان روز را به وقت محلی هتل مشخص می‌کند که درخواست استرداد کامل مبلغ پذیرفته می‌شود. این را می‌توان با refundable_until_days ترکیب کرد تا مثلاً مشخص شود که «استرداد مبلغ تا ساعت ۴:۰۰ بعدازظهر دو روز قبل‌از ورود به هتل امکان‌پذیر است». اگر refundable_until_time تنظیم نشده باشد، مقدار به‌طور پیش‌فرض روی نیمه‌شب تنظیم می‌شود.

    مقدار این مشخصه از قالب زمان استفاده می‌کند.

هنگام تنظیم مشخصه‌ها، به موارد زیر توجه کنید:

  • اگر available یا refundable_until_days تنظیم نشده باشد، نرخ به‌عنوان قابل‌استرداد نمایش داده نمی‌شود.
  • اگر available برابر با 0 (یا false) باشد، مشخصه‌های دیگر نادیده گرفته می‌شوند. نرخ به‌عنوان قابل‌استرداد نمایش داده نمی‌شود، حتی اگر یکی یا هر دو مشخصه دیگر تنظیم شده باشد.
<RoomBundle> Optional <RoomBundle> محفظه‌ای برای اطلاعات مربوط به شرح فیزیکی قیمت‌گذاری‌شده اتاق، هرگونه بسته‌بندی امکانات رفاهی، و برخی جزئیات خط‌مشی خرید برای هتل و برنامه سفر ارائه‌شده.

به‌طور کلی، از این عنصر برای تعریف قیمت‌گذاری اتاق پایه و انواع مختلف اتاق‌ها در همان ملک استفاده کنید. اگرچه امکان تعریف شرح «بسته ترکیبی اتاق» به‌صورت درون‌خطی وجود دارد، باید از «پیام تراکنش» جداگانه‌ای برای تعریف آن اطلاعات استفاده کنید. Google فراداده را ذخیره می‌کند تا بتوانید در همه به‌روزرسانی‌های قیمت‌گذاری آینده به‌جای تکرار کردن آن، به آن ارجاع دهید.

<RoomID> Optional string شناسه یکتای اتاق برای تخصیص آن به داده‌های اتاق ازپیش تعریف‌شده. همچنین برای پر کردن متغیر صفحه مقصد PARTNER-ROOM-ID استفاده می‌شود. برای اطلاعات بیشتر، به فراداده بسته ترکیبی اتاق مراجعه کنید.

گنجاندن <RoomBundle> برای تعریف <PackageID> و <RoomID> در عنصر <Result> الزامی است. بااین‌حال، ترجیح داده می‌شود که شناسه‌های بسته و اتاق را فقط در عنصر <RoomBundle> به‌جای عنصر <Result> مشخص کنید.

<Tax> Optional float مالیات‌هایی که برای قیمت نهایی اتاق محاسبه می‌شود. عنصر <Tax> یک مشخصه الزامی تکی، currency، می‌گیرد که کد ارز سه‌حرفی را برای مالیات‌ها تعریف می‌کند. به‌عنوان مثال، USD. اگر <Baserate> بزرگ‌تر از صفر باشد، عنصر <Tax> الزامی است.

اگر مشخصه «all_inclusive» عنصر <Baserate> صریحاً روی true تنظیم شده باشد، تنظیم این مقدار اختیاری است.

<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=""/>: برنامه سفر به‌دلیل برخی محدودیت‌های رزرو نامشخص دردسترس نبود. مشخصه اختیاری 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>
    <MilesIncluded>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines"/>
      </Provider>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
    </MilesIncluded>
  </Result>
</Transaction>

جزئیات مربوط به اتاق، مانند شرح، تصویر و زیرنویس، نام اتاق، و ظرفیت آن در این مثال نشان داده نشده است.

می‌توانید آن اطلاعات را یک‌بار در پیام «تراکنش» جداگانه‌ای که Google ذخیره می‌کند تعریف کنید. سپس می‌توانید در همه به‌روزرسانی‌های بعدی قیمت‌گذاری و موجودی به آن ارجاع دهید. برای اطلاعات بیشتر، به فراداده «بسته ترکیبی اتاق» مراجعه کنید.

مثال چندنرخی

مثال زیر یک برنامه سفر و ملک را با چندین نرخ برای ظرفیت‌های مختلف تعریف می‌کند. از عنصر <Rates> می‌توان برای ارائه قیمت‌گذاری چندنرخی برای یک ملک خاص استفاده کرد. مثال زیر برای املاک «اقامتگاه‌های اجاره‌ای» (VR) نیز مفید است:

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

مثال غیرقابل‌دسترس

مثال زیر یک برنامه سفر را تعریف می‌کند که دردسترس بودن آن از کانال‌های پایین‌دست قابل‌بازیابی نیست، برنامه سفر دوم که هم کمتر از حداقل اقامت شبانه است و هم قبلاً برای تاریخ‌های مشخص‌شده رزرو شده است، و برنامه سفر سوم که ملک آن در تاریخ ورود بسته است اما درطول دوره اقامت باز می‌شود:

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

<Rates>

ظرفی برای یک یا چند بلوک <Rate>. هر <Rate> در <Rates> قیمت متفاوتی را برای ترکیب اتاق یا برنامه سفر تعریف می‌کند.

فقط زمانی از عنصر <Rates> استفاده کنید که چندین نرخ برای ترکیب اتاق یا برنامه سفر یکسان وجود داشته باشد. برای مثال، چند نرخ برای نرخ‌های شرطی، نرخ‌های خصوصی، یا نرخ‌های شرطی در «بسته‌های ترکیبی اتاق» تعریف می‌کنید.

عنصر <Rates> در مکان زیر در سلسله‌مراتب XML پیام تراکنش نشان داده می‌شود:

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

مقادیر تنظیم‌شده در <Rate>، مقادیر مربوط به قیمت‌گذاری را در عنصر اصلی <Result> یا <RoomBundle> لغو می‌کند. اگر در <Rate> تنظیم نشده باشند، مقدارشان را از عنصر اصلی می‌گیرند. فقط <AllowablePointsofSale> به عنصر <RoomBundle> منتقل می‌شود.

نحو

عنصر <Rates> از نحو زیر استفاده می‌کند:

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

مشخصه‌ها

عنصر <Rates> دارای مشخصه‌های زیر است:

مشخصه الزامی است؟ شرح
rate_rule_id Optional برای نرخ‌های شرطی، این شناسه با نرخی در تعریفی در فایل «تعریف قانون نرخ» شما مطابقت دارد. حد نویسه برای این فیلد ۴۰ نویسه است. این شناسه نمی‌تواند رشته خالی باشد.

عناصر فرزند

عنصر <Rates> دارای عناصر فرزند زیر است:

عنصر فرعی الزامی است؟ نوع شرح
<AllowablePointsOfSale> Optional Object یک یا چند صفحه مقصد که برای هتل واجدشرایط است. این عنصر از همان نحوی استفاده می‌کند که <AllowablePointsOfSale> در <Result> استفاده می‌کند.
<Baserate> Required float قیمت اتاق برای اقامت. این عنصر از همان نحوی استفاده می‌کند که <Baserate> در <Result> استفاده می‌کند.

توجه: عنصر فرزند <Baserate> در <Rate> نمی‌تواند به‌عنوان غیرقابل‌دسترس تعریف شود.

<ChargeCurrency> Optional enum زمان و مکان پرداخت هزینه رزرو توسط کاربر. این عنصر از همان نحوی استفاده می‌کند که <ChargeCurrency> در <Result> استفاده می‌کند.
Optional string منسوخ‌شده: فیلدهای سفارشی که می‌توانید برای ارسال داده‌های اضافی مرتبط با هتل به صفحه مقصد استفاده کنید. این عنصر از همان نحوی استفاده می‌کند که <Custom[1‑5]> در <Result> استفاده می‌کند. حد مجاز برای هر فیلد سفارشی ۲۰۰ نویسه است. برای اطلاعات بیشتر، به فایل‌های صفحه مقصد مراجعه کنید. اگر عناصر <Custom> در عنصر <Result> ارائه شده باشند، در عنصر <RoomBundle> به ارث برده نمی‌شوند و باید به‌طور جداگانه برای هر <RoomBundle> تعریف شوند یا درصورت نیاز می‌توانند در <PackageData> گنجانده شوند.
<ExpirationTime> Optional DateTime تاریخ و زمانی که نرخ منقضی‌شده درنظر گرفته می‌شود. این عنصر از همان نحوی استفاده می‌کند که <ExpirationTime> در <Result> استفاده می‌کند.
<MilesIncluded> Optional boolean نرخ شامل مایل‌های مسافر همیشگی است. پارامترها عبارت‌اند از:
  • ‫NumberOfMiles: تعداد مایل‌ها در هر برنامه سفر.
  • ‫Provider: ارائه‌دهنده مایل‌های مسافر پرسفر.
  • LoyaltyCampaignID: شناسه یکتایی که «پویش وفاداری» خاصی را که با Google پیکربندی و به‌روزرسانی شده است شناسایی می‌کند. این گزینه امتیازهای وفاداری را به قیمت هتل اضافه می‌کند.

    برای گنجاندن عنصر <MilesIncluded>، شناسه پویش باید در پیکربندی «پویش وفاداری» پیکربندی شود. جزئیات خاص درباره نحوه استفاده Google از امتیازهای وفاداری در نتایج براساس پیکربندی «پویش وفاداری» تعیین می‌شود.

    عنصر <MilesIncluded> دارای عنصر فرزند <NumberOfMiles> است که تعداد امتیازهای کسب‌شده را محاسبه می‌کند. اگر <NumberOfMiles> تنظیم نشده باشد، امتیازهای کسب‌شده براساس پیکربندی «پویش وفاداری» تعیین می‌شود.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • توجه: <NumberOfMiles> و <Provider> اختیاری هستند.

<Occupancy> Optional integer

حداکثر تعداد مجاز ساکنان را برای این نرخ مشخص می‌کند. اگر مشخص نشده باشد، فرض می‌شود که همان نرخ اصلی است. <Occupancy> ممکن است با <OccupancyDetails> همراه باشد که نوع مهمانان (بزرگسال یا کودک) را مشخص می‌کند. برای نحو و شرح عناصر فرزند، به <OccupancyDetails> مراجعه کنید.

<OtherFees> Required float کارمزدهایی غیراز نرخ پایه و مالیات که بر قیمت نهایی اتاق تأثیر می‌گذارند. این عنصر از همان نحو <OtherFees> در <Result> استفاده می‌کند.

اگر مشخصه «all_inclusive» عنصر <Baserate> صریحاً روی درست تنظیم شده باشد، تنظیم این مقدار اختیاری است.

<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 باید عدد صحیحی بین ۰ تا ۳۳۰ باشد و می‌تواند این دو عدد را نیز دربر بگیرد.
  • refundable_until_time: (اگر available true باشد، به‌شدت توصیه می‌شود) آخرین زمان روز را به وقت محلی هتل مشخص می‌کند که درخواست استرداد کامل مبلغ پذیرفته می‌شود. این را می‌توان با refundable_until_days ترکیب کرد تا مثلاً مشخص شود که «استرداد مبلغ تا ساعت ۴:۰۰ بعدازظهر دو روز قبل‌از ورود به هتل امکان‌پذیر است». اگر refundable_until_time تنظیم نشده باشد، مقدار به‌طور پیش‌فرض روی نیمه‌شب تنظیم می‌شود.

    مقدار این مشخصه از قالب زمان استفاده می‌کند.

هنگام تنظیم مشخصه‌ها، به موارد زیر توجه کنید:

  • اگر available یا refundable_until_days تنظیم نشده باشد، نرخ به‌عنوان قابل‌استرداد نمایش داده نمی‌شود.
  • اگر available برابر با 0 (یا false) باشد، مشخصه‌های دیگر نادیده گرفته می‌شوند. نرخ به‌عنوان قابل‌استرداد نمایش داده نمی‌شود، حتی اگر یکی یا هر دو مشخصه دیگر تنظیم شده باشد.
<Tax> Required float مالیات‌هایی که برای قیمت نهایی اتاق محاسبه می‌شود. این عنصر از همان نحوی استفاده می‌کند که <Tax> در <Result> استفاده می‌کند.

مثال‌ها

نرخ پایه و نرخ شرطی

مثال زیر «پیام تراکنش» حاوی نرخ پایه و نرخ شرطی را نشان می‌دهد:

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

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

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
      </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 and it should be within 50 characters in length for optimal
      performance. 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>

      <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>
        </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>
        </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>

      <!-- Add Loyalty point information -->
      <MilesIncluded>
        <NumberOfMiles>integer</NumberOfMiles>
        <Provider>
          <Text language="en" text="provider-name">
        </Provider>
        <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>>
      </MilesIncluded>

      <!-- 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>

    </RoomBundle>
    ...
  </Result>
</Transaction>

مشخصه‌ها

عنصر <RoomBundle> هیچ مشخصه‌ای ندارد.

عناصر فرزند

عنصر <RoomBundle> دارای عناصر فرزند زیر است:

عنصر فرعی الزامی است؟ نوع شرح
<Baserate> Required float قیمت «بسته ترکیبی اتاق» را برای اقامت تعریف می‌کند. این عنصر از همان نحو <Baserate> در <Result> استفاده می‌کند، با این استثنا:
  • وقتی اتاق برای برنامه سفر دردسترس نیست، عنصر <RoomBundle> را بردارید تا نشان دهید اتاق دیگر در موجودی نیست. برای اطلاعات بیشتر، به برداشتن بسته ترکیبی اتاق مراجعه کنید.
<BreakfastIncluded> Optional boolean مشخص می‌کند که آیا این «بسته ترکیبی اتاق» شامل صبحانه با نرخ است یا نه.
<ChargeCurrency> Optional enum زمان و مکان پرداخت هزینه رزرو توسط کاربر. این عنصر از همان نحو <ChargeCurrency> در <Result> استفاده می‌کند.

مقدار پیش‌فرض web است.

Optional string منسوخ‌شده: فیلدهای سفارشی برای ارسال داده‌های اضافی به صفحه‌های مقصد برای «بسته ترکیبی اتاق». این عناصر از همان نحو <Custom[1-5]> در <Result> استفاده می‌کنند. حد مجاز برای هر فیلد سفارشی ۲۰۰ نویسه است. برای اطلاعات بیشتر، به فایل‌های صفحه مقصد مراجعه کنید. متغیرهای سفارشی فقط زمانی فهرست می‌شوند که قیمت‌ها را در پیام تراکنش ارسال کنید. اگر عناصر <Custom> در عنصر <Result> ارائه شده باشند، در عنصر <RoomBundle> به ارث برده نمی‌شوند و باید به‌طور جداگانه برای هر <RoomBundle> تعریف شوند یا درصورت نیاز می‌توانند در <PackageData> گنجانده شوند.
<InternetIncluded> Optional boolean اگر «بسته ترکیبی اتاق» شامل دسترسی به اینترنت رایگان باشد، درحالی‌که بسته‌های دیگر شامل این امکانات رفاهی نباشد. این عنصر را برای «بسته‌های ترکیبی اتاق» در هتلی که اینترنت رایگان برای همه اتاق‌ها ارائه می‌دهد تنظیم نکنید. این عنصر برای اینترنت سیمی داخل اتاق یا اینترنت بی‌سیم که در اتاق‌های مهمان دردسترس نیست اعمال نمی‌شود.
<MilesIncluded> Optional boolean نرخ شامل مایل‌های مسافر همیشگی است. پارامترها عبارت‌اند از:
  • ‫NumberOfMiles: تعداد مایل‌ها در هر برنامه سفر.
  • ‫Provider: ارائه‌دهنده مایل‌های مسافر پرسفر.
  • LoyaltyCampaignID: شناسه یکتایی که «پویش وفاداری» خاصی را که با Google پیکربندی و به‌روزرسانی شده است شناسایی می‌کند. این گزینه امتیازهای وفاداری را به قیمت هتل اضافه می‌کند.

    برای گنجاندن <MilesIncluded>، شناسه پویش باید در پیکربندی «پویش وفاداری» پیکربندی شود. جزئیات خاص درباره نحوه استفاده Google از امتیازهای وفاداری در نتایج براساس پیکربندی «پویش وفاداری» تعیین می‌شود.

    عنصر <MilesIncluded> دارای عنصر فرزند <NumberOfMiles> است که تعداد امتیازهای کسب‌شده را محاسبه می‌کند. اگر <NumberOfMiles> تنظیم نشده باشد، امتیازهای کسب‌شده براساس پیکربندی «پویش وفاداری» تعیین می‌شود.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
      <NumberOfMiles>1200</NumberOfMiles>
      <Provider>
        <Text language="en" text="United Airlines">
      </Provider>
    </MilesIncluded>
  • توجه: <NumberOfMiles> و <Provider> اختیاری هستند.

<Occupancy> Required integer حداکثر تعداد مجاز ساکنان را برای این نرخ مشخص می‌کند. برای مثال، یک سوئیت بزرگ ممکن است ازنظر فیزیکی بتواند ۶ مهمان را در خود جای دهد، اما «بسته ماه عسل» فقط به ۲ مهمان اجازه می‌دهد.

این مقدار باید کمتر یا مساوی با <Capacity> باشد که تعداد افرادی است که اتاق می‌تواند ازنظر فیزیکی در خود جای دهد.

هنگام تعریف کردن ظرفیت در نشانی وب صفحه مقصد، از متغیرهای NUM-ADULTS و NUM-CHILDREN استفاده کنید، همان‌طور که در استفاده از متغیرها و شرایط شرح داده شده است. مقدار پیش‌فرض 2 بزرگسال و 0 کودک است.

مقدار <Occupancy> باید عدد صحیح مثبتی بین ۱ تا ۹۹ باشد.

نکته‌ها:

  • <Occupancy> برای <RoomBundle> به‌شدت توصیه می‌شود، بنابراین به‌عنوان الزامی پرچم‌گذاری شده است و اگر حذف شود خطای ۱۰۹۷ ایجاد خواهد شد.
  • <Occupancy> از شیء داده در این ترتیب می‌آید: <RoomBundle>، <PackageData>، و سپس = <RoomData>. اگر هیچ مقداری در هیچ‌کدام از این‌ها وجود نداشته باشد، مقدار به‌طور پیش‌فرض ۲ خواهد بود.
  • <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> برابر با ۵ و مقدار <PackageID> برابر با ABC، می‌توانید از مقدار ‎5-ABC برای <RatePlanID> استفاده کنید. قویاً توصیه می‌کنیم از RatePlanID به‌عنوان متغیری برای ساختن نشانی وب صفحه مقصد پویای خود (قبلاً «نقطه فروش») استفاده کنید.

توجه: برای عملکرد بهینه، RatePlanID باید حداکثر ۵۰ نویسه داشته باشد.

برای اطلاعات بیشتر، به استفاده از متغیرها و شرایط مراجعه کنید.

<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 باید عدد صحیحی بین ۰ تا ۳۳۰ باشد و می‌تواند این دو عدد را نیز دربر بگیرد.
  • refundable_until_time: (اگر available true باشد، به‌شدت توصیه می‌شود) آخرین زمان روز را به وقت محلی هتل مشخص می‌کند که درخواست استرداد کامل مبلغ پذیرفته می‌شود. این را می‌توان با refundable_until_days ترکیب کرد تا مثلاً مشخص شود که «استرداد مبلغ تا ساعت ۴:۰۰ بعدازظهر دو روز قبل‌از ورود به هتل امکان‌پذیر است». اگر refundable_until_time تنظیم نشده باشد، مقدار به‌طور پیش‌فرض روی نیمه‌شب تنظیم می‌شود.

    مقدار این مشخصه از قالب زمان استفاده می‌کند.

هنگام تنظیم مشخصه‌ها، به موارد زیر توجه کنید:

  • اگر available یا refundable_until_days تنظیم نشده باشد، نرخ به‌عنوان قابل‌استرداد نمایش داده نمی‌شود.
  • اگر available برابر با 0 (یا false) باشد، مشخصه‌های دیگر نادیده گرفته می‌شوند. نرخ به‌عنوان قابل‌استرداد نمایش داده نمی‌شود، حتی اگر یکی یا هر دو مشخصه دیگر تنظیم شده باشد.
<RoomID> Required string شناسه یکتای داده‌های اتاق. از این شناسه برای مطابقت دادن داده‌های «بسته ترکیبی اتاق» با آنچه در <RoomData> ارسال کردید استفاده کنید. برای اطلاعات بیشتر، به فراداده «بسته ترکیبی اتاق» مراجعه کنید. (همچنین می‌توانید از این شناسه برای ارجاع به تعریف اتاق مشترک در یک پیام تراکنش هنگام تعریف داده‌های اتاق به‌صورت درون‌خطی استفاده کنید.)
<Tax> Required float مالیات‌هایی که برای قیمت نهایی اتاق محاسبه می‌شود. عنصر <Tax> یک مشخصه الزامی تکی، currency، می‌گیرد که کد ارز سه‌حرفی را برای مالیات‌ها تعریف می‌کند. برای مثال، از USD برای دلار امریکا استفاده کنید.

مثال‌ها

بسته اقامت تک‌نفره

مثال زیر پاسخی را با یک بسته اشغال تعریف می‌کند. وقتی کاربر 1 را در انتخابگر «تعداد نفرات» انتخاب می‌کند، Google پایین‌ترین قیمت واجدشرایط را صرف‌نظر از تعداد نفرات نمایش می‌دهد.

اگر قیمت اتاق یک‌نفره دردسترس نباشد، Google پایین‌ترین قیمت اتاق دونفره را نشان خواهد داد. توجه داشته باشید که اگر قیمت‌های دونفره یا بیشتر برای یک برنامه سفر ذخیره شده باشد، قیمت‌های تک‌نفره به‌صورت زنده پرس‌وجو نمی‌شوند.

این مثال به فراداده اتاق و بسته ازپیش تعریف‌شده با عناصر <RoomID> و <PackageID> ارجاع می‌دهد. از عناصر <RoomData> و <PackageData> برای تعریف آن اطلاعات استفاده کنید.

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

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

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


دو یا چند اشغال

مثال زیر پاسخی را تعریف می‌کند که شامل دو یا چند اشغال است.

این مثال به فراداده اتاق و بسته ازپیش تعریف‌شده با عناصر <RoomID> و <PackageID> ارجاع می‌دهد. از عناصر <RoomData> و <PackageData> برای تعریف آن اطلاعات استفاده کنید.

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

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

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


چند بسته ترکیبی اتاق

مثال زیر «ظرفیت» را در چند «بسته ترکیبی اتاق» تنظیم می‌کند تا قیمت‌گذاری احتمالی اتاق خوابگاه را نشان دهد.

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

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

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

چند نرخ شرطی

مثال زیر نرخ پایه و چند نرخ شرطی را در <RoomBundle> تعریف می‌کند:

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

      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL and it should be within 50 characters in length for optimal
      performance. 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>

      <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>
        </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>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

<OccupancyDetails>

<Occupancy> در پیام تراکنش حداکثر تعداد مهمانان را برای اتاق یا بسته مشخص می‌کند. <OccupancyDetails> می‌تواند حاوی اطلاعات تکمیلی مثل تعداد و نوع مهمانان (بزرگسال یا کودک) باشد.

وقتی <Occupancy> و <OccupancyDetails> در عنصر <Rates> <Result> یا <RoomBundle> ظاهر می‌شوند، به این معنی است که نرخ با جزئیات اشغال محدود شده است.

اگر <OccupancyDetails> را در <RoomBundle> به‌همراه عنصر تودرتوی <Rate> قرار دهید، نمی‌توانید <Occupancy> اصلی را در <Rate> ارسال کنید؛ درعوض، یکی از گزینه‌های زیر توصیه می‌شود:

  • حذف ظرفیت از <Rate>: در این حالت، <Rate> <OccupancyDetails> را مستقیماً از <RoomBundle> به ارث می‌برد

یا،

  • تکراری <OccupancyDetails>: در این مورد، <OccupancyDetails> یکسان دیگری را در هر دو عنصر <RoomBundle> و <Rate> تودرتو ارسال کنید

نحو

وقتی <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 تعداد مهمانان بزرگسال. حداقل:۱، حداکثر:۲۰.
<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>
        <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>
      <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>
        </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>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>