תמחור & מלאי חדרים (עסקאות) XML עם הפניה

בדף הזה מופיעה הפניה להודעות לגבי עסקאות שמבוססות על XML.

<Transaction>

רכיב הבסיס של הודעה לגבי עסקה הוא <Transaction>. זהו מאגר למידע תיאורי על חדרים וחבילות, כמו גם מחירים וזמינות של חדרים וחבילות.

הרכיב <Transaction> מופיע במקום הבא בהיררכיית ה-XML של הודעת הטרנזקציה:

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

בהודעות שבהן נעשה שימוש ב-<Transaction> כרכיב הבסיס, נדרש לפחות רכיב צאצא אחד. הודעות על עסקאות יכולות לכלול כמה רכיבי צאצא, כל עוד הגודל הכולל של ההודעות לא עולה על 100MB.

תחביר

הרכיב <Transaction> משתמש בתחביר הבא:

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

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

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

</Transaction>

מאפיינים

לרכיב <Transaction> יש את המאפיינים הבאים:

מאפיין חובה? סוג תיאור
id Required מחרוזת מזהה ייחודי לכל הודעה על עסקה.
partner Optional string חשבון השותף שאליו נשלחה הודעת העסקה. בדרך כלל משתמשים באפשרות הזו אם הקצה העורפי שלך מספק פידים של מחירים למספר חשבונות שותפים. ערך המחרוזת הזה הוא הערך של 'מפתח שותף' שמופיע בדף הגדרות החשבון ב-Hotel Center.
timestamp Required DateTime

הרגע שבו ההודעה על העסקה נשלחה.

הודעות שיישלחו עם חותמת זמן ב-24 השעות האחרונות יעובדו, והודעות שלא נמחקו, יימחקו.

ההודעות מעובדות לפי timestamp ולא לפי סדר קבלתן. לדוגמה: עדכון מחיר בחותמת הזמן 2019-05-03 14:09:00 שמתקבל אחרי הודעה בחותמת הזמן 2019-05-03 14:10:00 עדיין יעובד לפי הסדר, וייעשה שימוש במחיר מההודעה עם חותמת הזמן 2019-05-03 14:10:00.

אלמנטים צאצאים

הרכיב <Transaction> כולל את רכיבי הצאצא הבאים:

רכיב צאצא חובה? סוג תיאור
<PropertyDataSet> Optional* <PropertyDataSet>

מתאר חדר ספציפי וחבילות חדרים. הרכיב הזה משמש בדרך כלל בהודעת עסקה נפרדת כדי להגדיר ערכים משותפים לחבילות של חדרים ולצמצם את גודל ההודעות הקשורות לעסקאות.

<Result> Optional* <Result>

נתוני תמחור למסלול נסיעה של חדר או רכיב <RoomBundle> שמגדיר חבילות חדרים וסוגים נוספים של חדרים בנכס. אפשר להשתמש ברכיב <Result> גם כדי להסיר מסלולי נסיעה ממלאי.

* יש להזין לפחות אחד מ-<PropertyDataSet> או <Result>.

דוגמאות

נתוני החדר

בדוגמה הבאה מוגדרים נתוני חדרים בהודעה על 'עסקה':

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

נתוני תמחור

בדוגמה הבאה מוגדרים נתוני תמחור בהודעה על 'עסקה':

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

מחירים ללילה

בדוגמה הבאה מוגדרים נתוני תמחור ל-1 עד 7 לילות, החל מ-7 ביוני 2023:

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


תעריפים בסיסיים ותעריפים בלעדיים

בדוגמה הבאה מוצגת הודעת עסקה שכוללת תעריף בסיסי ותעריף מותנה:

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

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

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

  </Result>
</Transaction>

הסרת המלאי

בדוגמה הבאה מסירים מהמלאי כמה מלאים (שהיות של לילה אחד בכמה תאריכים שונים) מהמלאי:

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

<PropertyDataSet>

מאגר של פרטי חדר וחבילה (או חבילת חדר) בהודעת <Transaction>. הערכים שהוגדרו לגבי ערכי ברירת מחדל של מלון שהוגדרו לשותף. Google שומרת את המידע הזה, כך שלא צריך להגדיר אותו בכל פעם ששולחים עדכוני תמחור.

הרכיב <PropertyDataSet> מופיע במקום הבא בהיררכיית ה-XML של הודעת הטרנזקציה:

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

מידע נוסף זמין במאמר מטא-נתונים של חבילת חדר.

תחביר

הרכיב <PropertyDataSet> משתמש בתחביר הבא:

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

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

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

מאפיינים

לרכיב <PropertyDataSet> אין מאפיינים.

אלמנטים צאצאים

הרכיב <PropertyDataSet> כולל את רכיבי הצאצא הבאים:

רכיב צאצא חובה? סוג תיאור
<PackageData> Optional* <PackageData> מתאר חבילת חדר. הנתונים האלה משויכים לשותף ולמלון, אבל לא למסלול נסיעה. הרכיב הזה דומה ל-<RoomData>, אבל הוא מתאר את השירותים והמונחים שהם לא חלק מהתיאור של החדר הפיזי.

מזהה החבילה מופיע בעדכוני התמחור.

מידע נוסף זמין במאמר מטא-נתונים של חבילת חדר.

<Property> Required string המזהה של המלון שהנתונים המשויכים אליו חלים. הערך של הרכיב הזה חייב להיות מחרוזת שתואמת לכרטיס המוצר <id> בפיד רשימת המלונות.
<RoomData> Optional* <RoomData> מתאר את החדר. הנתונים האלה משויכים לשותף ולמלון, אבל לא למסלול נסיעה.

מזהה החדר מופיע בעדכוני התמחור.

* יש להזין לפחות אחד מ-<PackageData> או <RoomData>.

דוגמאות

נתוני חדרים וחבילות

בדוגמה הבאה מוצגים נתוני חדרים וחבילה ב-<PropertyDataSet>:

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

כשאתם שולחים את המחירים והזמינות של החדר הזה ושל חבילת החדר, אתם מציינים את פרטי החדר ואת מזהה החבילה בהודעות התמחור. כתוצאה מכך, מצמצמים משמעותית את גודל ההודעות ומפחיתים את כמות השגיאות שעשויות להתרחש בגלל נתונים כפולים. מידע נוסף זמין במאמר מטא-נתונים של חבילת חדר.

<RoomData>

מגדיר מטא-נתונים שלא תלויים במסלול נסיעה של חדרים, ובהרחבה, חבילות חדרים (כי חבילות החדרים הן חדרים ושירותים נוספים). אפשר להשתמש בערך <RoomData> כדי לצמצם חזרה על נתונים תיאוריים בפיד המחירים.

הרכיב <RoomData> מופיע במקום הבא בהיררכיית ה-XML של הודעת הטרנזקציה:

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

רכיבי <RoomData> מכילים מידע שמשויך לשותף ולמלון, אבל לא למסלול נסיעה. המטרה היא לכל הנתונים שאינם של תכנון האתר.

הרכיב <RoomData> דומה לרכיב <PackageData>, אבל הוא מתאר את החדר הפיזי ולא את שירותי המלון והתנאים של החבילה. אתם משתמשים ב-<RoomData> וב-<PackageData> ביחד כדי לספק פרטים על חבילות החדרים. לחדרים נפרדים שאינם חלק מחבילה, יש להשתמש רק ב-<RoomData>.

ניתן להגדיר גם את הרכיבים <RoomData> וגם את הרכיבים <PackageData> לאותו חדר או חבילת חדר. כש-Google מציגה את החדר או החבילה בתוצאות החיפוש, היא תכלול את התיאורים משניהם, מופרדים באמצעות מקף.

מידע נוסף זמין במאמר מטא-נתונים של חבילת חדר.

תחביר

הרכיב <RoomData> משתמש בתחביר הבא:

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

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

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

      <Capacity>max_number_of_occupants</Capacity>
      <Occupancy>max_number_of_intended_occupants</Occupancy>
      <OccupancyDetails> <!-- optional info about the types of guests,
      whether adults, children, or seniors --></OccupancyDetails>
      <OccupancySettings>
        <MinOccupancy>min_number_of_occupants</MinOccupancy>
        <MinAge>min_age_of_occupants</MinAge>
      </OccupancySettings>

      <PhotoURL>
        <Caption>
          <Text text="photo_description" language="language_code"/>
          ...
        </Caption>
        <URL>photo_location</URL>
      </PhotoURL>
      <RoomFeatures>
        ...
      </RoomFeatures>
    </RoomData>
    ...
  </PropertyDataSet>
</Transaction>

מאפיינים

לרכיב <RoomData> אין מאפיינים.

אלמנטים צאצאים

הרכיב <RoomData> כולל את רכיבי הצאצא הבאים:

רכיב צאצא חובה? סוג תיאור
<Capacity> Optional integer המספר המקסימלי של אורחים שחדר יכול להתארח פיזית בו. הקיבולת של חדר גדולה יותר או שווה לתפוסה.

כשמציינים אותו, הערך הזה צריך להיות שווה לערך של הרכיב <Occupancy> או גדול ממנו, שהוא מספר האורחים המיועד לחדר מסוים. לדוגמה, בסוויטה גדולה, הערך <Capacity> יכול להיות 6, אבל <Occupancy> עבור סוויטה גדולה הוא 4.

הערך של <Capacity> חייב להיות מספר שלם חיובי בין 1 ל-20, כולל.

<Description> Optional Object תיאור מפורט של החדר. הרכיב הזה צריך להכיל מידע שלא מתואר על ידי רכיבים אחרים או על ידי הרכיב <Name>. אין להשתמש באותיות רישיות בלבד כשמציינים את תיאור החדר.

הרכיב <Description> כולל רכיב צאצא יחיד, <Text>, שכולל את שני מאפייני החובה הבאים:

  • text: תיאור מפורט של החדר.
  • language: קוד שפה בן שתי אותיות. לדוגמה, fr.

צריך להשתמש ברכיב <Text> נפרד לכל שפה שבה המודעה או הקישור החינמי להזמנה עשויים להופיע (עם ערכים שונים במאפיין language).

בדוגמה הבאה מוצגות גרסאות בצרפתית ובאנגלית של תיאור החדר:

<Description>
  <Text text="Two queen-sized beds" language="en"/>
  <Text text="Deux lits de la reine" language="fr"/>
</Description>
<Name> Required string שם הקטגוריה של החדר. הערך הזה צריך להתאים למה שמופיע בדף הנחיתה של המלון (לשעבר נקודת המכירה). הערך של הרכיב הזה לא צריך להיות מורכב מאותיות רישיות בלבד.

הרכיב הזה מקבל רכיב צאצא יחיד, <Text>, שכולל את שני מאפייני החובה הבאים:

  • text: שם החדר.
  • language: קוד שפה בן שתי אותיות. לדוגמה, fr.

צריך להשתמש ברכיב <Text> נפרד לכל שפה שבה עשויים להופיע המודעה או הקישור החינמי להזמנה (עם ערכים שונים במאפייני language).

בדוגמה הבאה אפשר לראות גרסה של שם החדר בצרפתית ובאנגלית:

<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Optional integer המספר המקסימלי של אורחים שחדר מיועד להם. לדוגמה, יכול להיות בסוויטה גדולה יכולה ללון פיזית 6 אורחים (קיבולת = 6), אבל היא מיועדת ל-4 אורחים בלבד.

הערך הזה צריך להיות שווה לרכיב <Capacity> או קטן ממנו, שהוא מספר האנשים שהחדר יכול להכיל באופן פיזי.

הערך של <Occupancy> חייב להיות מספר שלם חיובי בין 1 ל-99, כולל.

ייתכן שהמלווה <Occupancy> ילווה את <OccupancyDetails>, שמציין את סוג האורחים (מבוגרים או ילדים). בקטע <OccupancyDetails> אפשר לקרוא תחביר ותיאור של רכיבי צאצא.

<OccupancySettings> Optional Object הגדרות שיכולות להגביל או לשנות את דרישות התפוסה של חדר.

הרכיב <OccupancySettings> כולל את רכיבי הצאצא הבאים:

  • <MinOccupancy>: מספר האורחים המינימלי שיכולים לשהות בחדר. לדוגמה, אם המדיניות מוגדרת לערך 2, לא ניתן להזמין את החדר הזה לאורח אחד.

    הערך של <MinOccupancy> חייב להיות מספר שלם חיובי בין 1 ל-99, כולל.

  • <MinAge>: הגיל המינימלי של כל האורחים ששוהים בחדר. לדוגמה, אם ההגדרה היא 18, אפשר להזמין את החדר הזה רק לקבוצות שבהן כל האורחים הם בני 18 ומעלה.

    הערך של <MinAge> חייב להיות מספר שלם חיובי בין 0 ל-99, כולל.

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

אין צורך לכלול את כל רכיבי הצאצא.

<PhotoURL> Optional Object כתובת URL וכיתוב אופציונלי לתמונה של החדר או של חבילת החדר. אפשר לציין יותר ממאפיין <PhotoURL> אחד לכל חדר או חבילת חדר. כל כתובת URL של תמונה צריכה להיות ב-<PhotoURL> משלה.

הרכיב הזה כולל את רכיבי הצאצא הבאים:

  • <URL>: מציין את המיקום של התמונה. המיקום צריך להיות ציבורי (לא מאחורי חומת אש) ולכלול את הפרוטוקול (לדוגמה, https://). יש להשתמש רק ב-<URL> אחד לכל <PhotoURL>.
  • <Caption>: מגדיר את הכיתוב של התמונה. הרכיב הזה מקבל רכיב צאצא יחיד, <Text>, שיש לו שני מאפיינים נדרשים: text ו-language. המאפיין text הוא הכיתוב, והמאפיין language מציין קוד שפה בן שתי אותיות, כמו en.

דוגמה:

<PhotoURL>
  <URL>https://www.example.com/static/bar/image1234.jpg</URL>
  <Caption>
    <Text text="A bright and breezy way to enjoy your mornin'
      cuppa tea." language="en"/>
    <Text text="Une façon lumineuse et aérée pour profiter
      de votre journée tasse de thé." language="fr"/>
  </Caption>
</PhotoURL>
<PhotoURL>
  <URL>https://www.foo.com/static/bar/image5678.jpg</URL>
  <Caption>
    <Text text="Or, perhaps you prefer coffee." language="en"/>
    <Text text="Ou peut-être préférez-vous le café." language="fr"/>
  </Caption>
</PhotoURL>
<RoomFeatures> Optional <RoomFeatures> מידע על התכונות של החדר.
<RoomID> Required string המזהה הייחודי של החדר. המזהה הזה מאפשר להתאים בין נתוני החדר לבין הבלוקים של <Result> בעדכוני התמחור שלך. אפשר לקרוא מידע נוסף במאמר מטא-נתונים של חבילת חדר. (אפשר להשתמש במזהה הזה גם כדי להפנות להגדרה של חדר משותף בהודעת עסקה אחת, כשמגדירים את נתוני החדר בתוך השורה.)

דוגמאות

נתוני החדר

בדוגמה הבאה מוגדרים נתוני חדרים:

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

מטא-נתונים של חדרים וחבילות

בדוגמה הבאה מוגדרים מטא-נתונים של חדרים וחבילות:

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

חבילות של כמה חדרים

בדוגמה הבאה מוגדרים מטא-נתונים של חדרים וחבילות למספר חבילות של חדרים:

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

<RoomFeatures>

מגדיר את המאפיינים שנמצאים בחדר.

הרכיב <RoomFeatures> מופיע במקום הבא בהיררכיית ה-XML של הודעת הטרנזקציה:

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

תחביר

הרכיב <RoomFeatures> משתמש בתחביר הבא:

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

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

מאפיינים

לרכיב <RoomFeatures> אין מאפיינים.

אלמנטים צאצאים

הרכיב <RoomFeatures> כולל את רכיבי הצאצא הבאים:

רכיב צאצא חובה? סוג תיאור
<JapaneseHotelRoomStyle> Optional enum

מציין את הסגנון של חדר מלון יפני.

הערכים החוקיים כוללים:

  • western: חדר בסגנון מערבי עם מיטות.
  • japanese: חדר בסגנון יפני עם מיטות פוטון.
  • japanese_western: חדר בסגנון מערבי יפני עם מיטות בסגנון מערבי ופוטונים בסגנון יפני.
<Beds> Optional Object המספר כולל את כל כמות <Bed> שיש בחדר. לתשומת ליבך, אין לספור כאן את הפוטונים היפנים.

לכל <Bed> יש את המאפיינים הבאים:

  • size (אופציונלי): הערכים החוקיים הם single, semi_double, double, queen ו-king.
לכל <Bed> יש את רכיבי הצאצא הבאים:
  • <Width> (אופציונלי): מציין את רוחב המיטה. חייב לכלול את המאפיין unit עם הערך cm ואת המאפיין number עם רוחב המיטה במספרים שלמים בס"מ.
  • <Length> (אופציונלי): מציין את אורך המיטה. חייב לכלול את המאפיין unit עם הערך cm ואת המאפיין number עם אורך המיטה בסנטימטרים שלמים.
דוגמה:
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
<Suite> Optional empty צריך לספק את הרכיב הזה כשהחדר הוא סוויטה.
<Capsule> Optional empty צריך לספק את הרכיב הזה כשהחדר הוא חדר קפסולות.
<Roomsharing> Optional enum האם החדר הזה משותף עם דיירים אחרים, כמו בעלים או אורחים אחרים. הערכים החוקיים הם shared ו-private.
<Outdoor> Optional empty יש לספק את הרכיב הזה כאשר מדובר בחדר לינה בחוץ ללא קירות קבועים, אינסטלציה ובקרת אקלים. לדוגמה, חדרי מלון לא מיועדים למקומות לינה בחוץ, ואילו אתרי קמפינג שבהם אורחים שוהים באוהלים ובפארקי קרוואנים שבהם האורחים שוהים בחוץ.
<MobilityAccessible> Optional empty צריך לספק את הרכיב הזה כשהחדר נגיש בנייד.
<Smoking> Optional enum האם החדר הוא חדר ללא עישון או חדר לעישון. הערכים החוקיים הם non_smoking ו-smoking.
<BathAndToilet> Optional Object מכיל מידע על אמבטיה ושירותים בחדר.

המאפיין הוא:

  • relation (אופציונלי): מציין איך חדר האמבטיה והאסלה ממוקמים זה מול זה. הערכים החוקיים הם together (אמבטיה ושירותים ממוקמים יחד באותו חדר (למשל, חדר אמבטיה) ו-separate (אמבטיה ושירותים). אי אפשר להגדיר את המאפיין הזה אם בחדר אין גם אמבטיה וגם שירותים.

הרכיב יכול לכלול את רכיבי הצאצא הבאים:

  • <Bath> (אופציונלי): אם הרכיב הזה קיים, המשמעות היא שיש בחדר אמבטיה.

    המאפיינים הם:

    • bathtub (אופציונלי): מציין שיש באמבטיה אמבטיה בחדר האמבטיה. הערכים החוקיים הם 0 (או false) ו-1 (או true).
    • shower (אופציונלי): מציין שבאמבטיה יש מקלחת. הערכים החוקיים הם 0 (או false) ו-1 (או true).
  • <Toilet> (אופציונלי): אם הרכיב הזה קיים, המשמעות היא שבחדר יש שירותים.

    המאפיינים הם:

    • electronic_bidet (אופציונלי): מציין שבאסלה יש בידה אלקטרוני. הערכים החוקיים הם 0 (או false) ו-1 (או true).
    • mobility_accessible (אופציונלי): מציין שהשירותים נגישים בנייד. הערכים החוקיים הם 0 (או false) ו-1 (או true).

דוגמה:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath> Optional empty יש לספק את הרכיב הזה כאשר יש בחדר אמבטיה פרטית בחוץ.
<AirConditioning> Optional empty צריך לספק את הרכיב הזה כשהחדר כולל מיזוג.
<Balcony> Optional empty יש לספק את הרכיב הזה כאשר בחדר יש מרפסת או מרפסת גדולה.
<Views> Optional Object האפשרויות החוקיות כוללות:

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

דוגמאות

ל-JapaneseHotelRoomStyle אין ערך ברירת מחדל. השמטת הערך לא תוביל לשגיאת XML, אבל הרישום לא יופיע בתוצאות החיפוש כשהמשתמש מבצע סינון לפי סגנון חדר או מיטות.

שתי מיטות יחיד

הדוגמה הבאה מציגה איך להשתמש ב-<RoomFeatures>:

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

שתי מיטות זוגיות

זו דוגמה לחדר יפני בסגנון western עם שתי מיטות double.

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


סגנון יפני ללא מיטה

הדוגמה הבאה היא של חדר בסגנון יפני ללא מיטה. אין צורך בפרטי המיטה בחדר בסגנון japanese.

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

מערבון יפני עם מיטה

הדוגמה הבאה היא של חדר בסגנון japanese_western עם מיטה בגודל king.

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

אם לשותף אין את מספר המיטות בחדרים ב-japanese_western, תוכלו להיעזר בדוגמה:

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

<PackageData>

מגדיר מטא-נתונים בלתי תלויים במסלול נסיעה לגבי חבילות חדרים בנכס. הרכיב הזה מכיל מידע שמשויך לשותף ולמלון, אבל לא למסלול הנסיעה. המטרה היא להגדיר את כל הנתונים שאינם מסלולי נסיעה פעם אחת, ולהפנות אליהם מנתוני מסלול הנסיעה.

הרכיב <PackageData> מופיע במקום הבא בהיררכיית ה-XML של הודעת הטרנזקציה:

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

האלמנט <PackageData> דומה לרכיב <RoomData>, אבל הוא מתאר תכונות תמחור ומונחים שהם לא חלק מתיאור החדר הפיזי. אתם משתמשים ב-<RoomData> וב-<PackageData> יחד כדי לספק פרטים על חבילות חדרים ותכונות של תעריפים. בחדרים בודדים שהם לא חלק מחבילה, השתמשו רק ב-<RoomData>.

אפשר להגדיר גם את הרכיבים <RoomData> וגם את הרכיבים <PackageData> עבור אותו חדר או חבילת חדר. כש-Google מציגה את החדר או החבילה בתוצאות החיפוש, היא תכלול את התיאורים משניהם, מופרדים באמצעות מקף.

אם מעדכנים רכיב <PackageData> אחד עבור נכס, צריך לעדכן את כל הרכיבים <PackageData> ו-<RoomData> בנכס. כל <PropertyDataSet> נחשב לכל הנתונים של הנכס, ומחליף את כל הנתונים הקיימים.

מידע נוסף זמין במאמר מטא-נתונים של חבילת חדר.

תחביר

הרכיב <PackageData> משתמש בתחביר הבא:

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

מאפיינים

לרכיב <PackageData> אין מאפיינים.

אלמנטים צאצאים

הרכיב <PackageData> כולל את רכיבי הצאצא הבאים:

רכיב צאצא חובה? סוג תיאור
<BreakfastIncluded> Optional boolean השדה מציין אם החבילה הזו כוללת ארוחת בוקר במחיר. הערכים החוקיים הם 0 (או false) ו-1 (או true).

עדיף להשתמש ב-<Meals> במקום ב-<BreakfastIncluded>.

<ChargeCurrency> Optional enum הזמן והמקום שבהם המשתמש משלם על ההזמנה. לאלמנט הזה יש תחביר זהה כמו של <ChargeCurrency> ב-<Result>.

ערך ברירת המחדל הוא web.

<CheckinTime> Optional Time שעת הצ'ק-אין המוקדמת ביותר השעה חייבת להיות פחות מ-24:00 לפי השעון המקומי של המלון.
<CheckoutTime> Optional Time שעת הצ'ק-אאוט המאוחרת ביותר לפי השעון המקומי של המלון.
<Description> Optional Object תיאור מפורט של החבילה. הרכיב הזה צריך להכיל מידע שלא מתואר על ידי רכיבים אחרים או על ידי הרכיב <Name>. אין להשתמש באותיות רישיות בלבד כשמציינים את תיאור החדר.

הרכיב <Description> כולל רכיב צאצא אחד, <Text>, שיש לו שני מאפייני חובה, text ו-language. המאפיין text הוא התיאור, והמאפיין language מציין קוד שפה בן שתי אותיות, כמו בדוגמה הבאה:

<Description>
  <Text text="Two breakfast buffet certificates for
    each night of stay." language="en"/>
  <Text text="Deux certificats petit-déjeuner buffet
    pour chaque nuit de séjour." language="fr"/>
</Description>
<InternetIncluded> Optional boolean אם חבילה כוללת גישה לאינטרנט ללא תשלום, בעוד שחבילות אחרות לא יכללו את השירותים האלה. אין להגדיר את הרכיב הזה לחבילות חדרים במלון שמספק אינטרנט בחינם לכל החדרים. הרכיב הזה לא חל על אינטרנט קווי בתוך החדר או אינטרנט אלחוטי שאינם זמינים בחדרי האורחים. הערכים החוקיים הם 0 (או false) ו-1 (או true).
<Meals> Optional Object מכילה מידע על הארוחות בחבילה הזו.

הרכיב <Meals> כולל שני רכיבי צאצא אופציונליים, <Breakfast> ו-<Dinner>, שכוללים את המאפיינים הבאים:

  • included (חובה): מגדירים את הערך 1 (או true) אם התעריף כולל ארוחת בוקר/ארוחת ערב. אם התעריף מוגדר אחרת ל-0 או ל-false.
  • in_room (אופציונלי): מגדירים את הערך 1 (או true) אם לאורחים יש אפשרות לאכול ארוחת בוקר/ארוחת ערב בחדר שבו הם שוהים. אם לא רוצים להגדיר את הערך הזה כ-0 (או false).
  • in_private_space (אופציונלי): יש להגדיר את הערך 1 (או true) אם לאורחים יש אפשרות לארוחת בוקר/ארוחת ערב במרחב משותף (חוץ מהחדר שבו הם שוהים) כדי למנוע קשר עם אורחים אחרים. אחרת, הערך מוגדר כ-0 (או false).
  • buffet (אופציונלי): מגדירים לערך 1 (או true) אם ארוחת הבוקר/ארוחת הערב מוגשת כמזנון. אחרת, הערך מוגדר כ-0 (או false).

אפשר להשתמש במאפיינים האופציונליים רק אם הערך של included הוא True.

כדי שמסנני הארוחות (no meals, breakfast only, dinner only ו-breakfast and dinner) יפעלו, צריך לספק גם את <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 המספר המקסימלי של אורחים שחבילת החדר מיועדת להם. לדוגמה, יכול להיות בסוויטה גדולה שיכולה ללון בה 6 אורחים, אבל היא מיועדת ל-4 אורחים בלבד.

הערך הזה צריך להיות שווה לרכיב <Capacity> או קטן ממנו, שהוא מספר האנשים שהחדר יכול להכיל באופן פיזי.

הערך של <Occupancy> חייב להיות מספר שלם חיובי בין 1 ל-99, כולל.

אם תציינו את האלמנט הזה גם ב-<RoomBundle> וגם ב-<PackageData>, הערך שב-<RoomBundle> יקבל עדיפות.

הערה:

ייתכן שהמלווה <Occupancy> ילווה את <OccupancyDetails>,שמציין את סוג האורחים (מבוגרים או ילדים). בקטע <OccupancyDetails> אפשר לקרוא תחביר ותיאור של רכיבי צאצא.
<PackageID> Required string

המזהה הייחודי של החבילה. המזהה הזה מאפשר להתאים בין הנתונים של חבילת החדרים לבין הבלוקים של <Result> בעדכוני התמחור. מידע נוסף זמין במאמר מטא-נתונים של חבילת חדר.

(אפשר גם להשתמש במזהה הזה כדי להפנות להגדרה של חבילת חדר משותפת שמופיעה בהודעת עסקה אחת כשהמערכת מגדירה נתוני חבילת חדר בתוך השורה.)

<ParkingIncluded> Optional boolean האם חבילת חדר כוללת חניה ללא תשלום, בעוד שאחרת החניה הייתה שירות בתשלום במלון הזה. אין לציין ערך לרכיב הזה במלון שמציע חניה בחינם.

הערכים החוקיים הם 0 (או false) ו-1 (או true). ערך ברירת המחדל הוא false.

<PhotoURL> Optional Object (כמו <PhotoURL> ב-<RoomData>, אבל עבור החבילה (למשל, תמונות של ארוחות).)
<Refundable> Optional Object מאפשר הצגת תעריף עם החזר כספי מלא או ביטול בחינם. אם לא תספקו את המידע הזה, לא יוצג מידע לגבי ההחזר הכספי. מדיניות החזרים כספיים ברמת <PackageData> מבטלת את מדיניות ההחזרים הכספיים ברמה <Result>. מדיניות החזרים כספיים ברמת <Rates> מבטלת את מדיניות ההחזרים הכספיים ברמה <PackageData>. אפשר גם להדגיש למשתמשים את המחיר שניתן להחזר כספי באמצעות אפשרויות חלופיות, בלי לשנות ישירות את סכימת ההודעות של העסקאות. מידע נוסף על האפשרויות האלה במדיניות בנושא תעריפים להחזרים כספיים.

בדוגמה הבאה מוצג הרכיב <Refundable> עם כל המאפיינים שהוגדרו:

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

הערה: מומלץ להגדיר את כל המאפיינים. הודעת אזהרה לגבי סטטוס הפיד מופיעה כשלא מוגדר מאפיין אחד או יותר.

אם לא הוגדרו מאפיינים, לא יוצג ערך עבור החזר כספי. המאפיינים הם:

  • available: (חובה) יש להגדיר את הערך 1 או את הערך true כדי לציין אם המחיר מאפשר החזר כספי מלא. אחרת, הוא מוגדר ל-0 או ל-false.
  • refundable_until_days: (חובה אם available הוא true) מציין את מספר הימים לפני הצ'ק-אין שבהם ניתן לבקש החזר כספי מלא. הערך של refundable_until_days חייב להיות מספר שלם בין 0 ל-330, כולל.
  • refundable_until_time: (מומלץ מאוד אם available הוא true) מציין את השעה המאוחרת ביותר ביום, לפי השעה המקומית של המלון, שבה תכובד בקשה להחזר כספי מלא. אפשר לשלב את השם הזה עם refundable_until_days כדי לציין, לדוגמה, ש"ההחזרים הכספיים זמינים עד 16:00 יומיים לפני הצ'ק-אין". אם לא מגדירים את refundable_until_time, ברירת המחדל של הערך היא חצות.

    הערך של המאפיין הזה צריך להיות בפורמט זמן.

כשמגדירים את המאפיינים, חשוב לשים לב לנקודות הבאות:

  • אם לא תגדירו את הערכים available או refundable_until_days, לא יוצג החזר כספי.
  • אם הערך של available הוא 0 או false, המערכת תתעלם מהמאפיינים האחרים. לא ניתן לקבל החזר כספי על התעריף, גם אם הגדרת אחד מהמאפיינים האחרים או את שניהם.
<MembershipBenefits Included> Optional boolean המחיר כולל הטבות של סטטוס יוקרתי למשך השהייה. היא כוללת את הפרמטרים הבאים:
  • ProgramName: שם התוכנית של סטטוס העילית
  • ProgramLevel: רמת התוכנית. לדוגמה: "זהב".
  • NightlyValue (optional): ערך ההטבות ללילה.
<CarRentalIncluded> Optional boolean המחיר כולל השכרת רכב בחינם למשך השהייה.
<MilesIncluded>> Optional boolean המחיר כולל מיילים של נוסע מתמיד. הפרמטרים כוללים:
  • NumberofMiles: מספר המיילים של כל מסלול נסיעה.
  • Provider: מיילים של נוסע מתמיד.
<OnPropertyCredit> Optional boolean המחיר כולל אשראי במקום (מסעדה, אתר נופש, ספא וכו'). פרמטר:
  • Amount: ערך הקרדיט לכל מסלול נסיעה, במטבע המקומי.
<AirportTransportationIncluded> Optional Object המחיר כולל הסעה בחינם לנמל התעופה וממנו בקרבת מקום. המאפיין האופציונלי direction מציין את הכיוון של התחבורה. הערכים החוקיים כוללים:
    from: תחבורה מסופק מנמל התעופה לנכס. זהו ערך ברירת המחדל אם לא צוין כיוון. to: מהנכס יש תחבורה לנמל התעופה. round_trip: יש תחבורה אל נמל התעופה וממנו וגם ממנו.

דוגמאות

חבילת חדר ליחיד

בדוגמה הבאה מוגדרת חבילת חדר אחת שכוללת 2 אורחים (2 מבוגרים וילד אחד) וכוללת ארוחת בוקר:

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

מטא-נתונים של חדרים וחבילות

בדוגמה הבאה מוגדרים מטא-נתונים של חדרים וחבילות:

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

חבילות של כמה חדרים

בדוגמה הבאה מוגדרים מטא-נתונים של חדרים וחבילות למספר חבילות של חדרים:

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


חבילת חדרים עם תעריפים

בדוגמה הבאה מוגדרים מטא-נתונים של חדרים וחבילות לחבילת חדר עם מאפייני מחיר:

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

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

ארוחות ותמונות

בדוגמה הבאה מוגדרים מטא-נתונים של חדרים וחבילות לארוחות, לתמונות ולשעות הצ'ק-אין והצ'ק-אאוט:

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

ארוחת בוקר

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

<Result>

מאגר לעדכוני תמחור וזמינות בהודעת <Transaction>.

הרכיב <Result> מופיע במקום הבא בהיררכיית ה-XML של הודעת הטרנזקציה:

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

אפשר להשתמש ב-<Result> כדי להגדיר או לעדכן מחירי חדרים ולהגדיר מלאי זמין. פריטים שמוגדרים ברכיב הזה בדרך כלל מתייחסים למטא-נתונים בלתי תלויים של מסלול נסיעה, לגבי חדר או חבילה (למשל תיאור או קבוצת שירותים) שמוגדרים ב-<PackageData> וב-<RoomData>.

בדרך כלל, אתם שולחים הודעות על עסקאות עם עדכוני מחירים לעיתים קרובות מאוד. התדירות והתדירות המדויקות של שליחת הבקשה משתנה בהתאם למצב המשלוח.

אפשר להשתמש בשדה <Result> בהודעה על העסקה על מנת להסיר מסלולי נסיעה, כפי שמתואר בהסרת מלאי. למידע נוסף על השימוש בהודעות על טרנזקציות על מנת לעדכן את המחירים והזמינות, ראו את המאמר הוספה ועדכון של מלאי.

הודעת עסקה יכולה לכלול כל מספר של רכיבי <Result>, כל עוד גודל ההודעה לא עולה על 100MB.

תחביר

הרכיב <Result> משתמש בתחביר הבא:

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

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

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

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

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

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

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

מאפיינים

לרכיב <Result> יש את המאפיינים הבאים:

מאפיין חובה? סוג תיאור
mergeable Optional boolean כברירת מחדל, מחירים חדשים למלונות ולמסלולי נסיעה ספציפיים יחליפו את כל המחירים הקודמים (שתקפים) שקיימים במטמון של Google. המאפיין שניתן למיזוג מאפשר לאחסן מחירים נוספים במטמון של Google בלי למחוק את פרטי התמחור הקודמים. בשאילתת תמחור בזמן אמת עם תגובות לפי הקשר, המאפיין הזה תמיד יוגדר כ-true (ללא קשר לתשובה בהודעת העסקה).

אלמנטים צאצאים

הרכיב <Result> כולל את רכיבי הצאצא הבאים:

רכיב צאצא חובה? סוג תיאור
<AllowablePointsOfSale> Optional Object דף נחיתה אחד או יותר שעומדים בדרישות להצגת המלון. דף נחיתה הוא אתר שיכול לטפל בתהליך ההזמנה עבור משתמש הקצה. כדי לכלול דפי נחיתה מסוימים באופן מפורש (ולהחריג דפים אחרים), צריך להוסיף רכיב <AllowablePointsOfSale> אחד או יותר שתואמים למאפיין id של הרכיב <PointOfSale> בקובץ דפי הנחיתה.

אם הרכיב הזה לא נכלל, כל דפי הנחיתה שמוגדרים בקובץ דפי הנחיתה נחשבים כמתאימים להזמנת החדר. מידע נוסף זמין במאמר התחביר של קובצי דפי נחיתה.

<Baserate> Optional float

מחיר החדר לשהייה. הערך של הרכיב הזה צריך לשקף את הערך הבא:

  • לחדר פרטי, צריך להגדיר את התעריף הזול ביותר לחדר זוגי שאתם מציעים.
  • אם מדובר בחדר משותף, אפשר להשאיר את השדה ריק ולהשתמש ב-<RoomBundle>.
  • משך השהייה הכולל ולא המחיר הממוצע ללילה.

כשהחדר לא זמין למסלול הנסיעה, צריך להשמיט את השדה <Baserate> או להגדיר אותו לערך -1, ולציין את <Unavailable> יחד עם הסיבות הידועות לחוסר הזמינות.

כדי להסיר חבילת חדר, פועלים לפי ההוראות במאמר הסרה של חבילת חדר.

<Baserate> לא יכול להכיל סמלים של קיבוץ ספרות, כמו פסיק (,) או נקודה (.). יש להפריד בין שברים באמצעות נקודה (.) כסימן העשרוני. לדוגמה, אפשר לייצג 1,200.40 $בתור:

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

הרכיב <Baserate> כולל את המאפיינים האופציונליים הבאים:

  • all_inclusive: ערך בוליאני שמציין אם שיעור המס הזה כולל מיסים ועמלות. באופן כללי, צריך להגדיר את הערך הזה כ-false למשתמשי קצה בארה"ב ובקנדה, ואת ערכי האספקה עבור הרכיבים <Tax> ו-<OtherFees>. אם משתמשים במחירי 'הכול כלול', יכול להיות שלא תהיה לך אפשרות להופיע בכרטיסי המוצר אם המחירים שלך לא מפרידים בין המיסים והעמלות למשתמשים בארה"ב ובקנדה.

    לגבי כל שאר משתמשי הקצה, בדרך כלל מציינים את המיסים והעמלות בתעריף הבסיסי ומגדירים את ערך המאפיין all_inclusive כ-true. מידע נוסף זמין במדיניות בנושא מיסים ועמלות.

    ערך ברירת המחדל הוא false.

  • currency: קוד המטבע בן שלוש האותיות. לדוגמה, USD לדולר ארה"ב.
<ChargeCurrency> Optional enum הזמן והמקום שבהם המשתמש משלם על ההזמנה. אפשר להשתמש ברכיב הזה בהודעה על עסקה ברכיב <Result> עבור מחיר המלון או הבלוק <PackageData> עבור חבילת חדר.

הערכים החוקיים כוללים:

  • web: המשתמש מחויב באינטרנט בזמן ההזמנה. זהו ערך ברירת המחדל. דף הנחיתה בפועל מוגדר באמצעות קובץ דף הנחיתה, ויכול להיות שמושפע מהמטבע, המיקום, השפה של המשתמש או מגורמים אחרים.
  • hotel: המשתמש יחויב בזמן ביצוע צ'ק-אין במלון. אם תמיד צריך לבצע את התשלום במטבע של המלון, צריך להגדיר את הערך של <ChargeCurrency> כ-hotel. דף הנחיתה בפועל אינו מושפע מהמטבע של המשתמש.
  • deposit: המשתמש מחויב בחלק מסוים באופן מיידי והיתרה תחויב במועד מאוחר יותר, בדרך כלל כשהמשתמש יוצא מהמלון.
  • installments: המשתמש מחויב בחלק ראשוני מתוך הסכום הכולל לתשלום, וצפוי לשלם באופן קבוע יתרה מוגדרת במשך תקופת זמן קבועה.

ערך ברירת המחדל הוא web.

<Checkin> Required Date תאריך הצ'ק-אין של מסלול הנסיעה בפורמט תאריך. השילוב של האלמנט <Nights> והרכיב <Checkin> מרכיב מסלול נסיעה.
<Custom[1‑5]> Optional string מגדיר שדה מותאם אישית שאפשר להשתמש בו כדי להעביר נתונים נוספים שמשויכים למלון. אפשר להעביר עד חמישה ערכים מותאמים אישית עם שמות הרכיבים הבאים:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

רכיבי <Custom> מאפשרים להעביר נתונים שרירותיים. לדוגמה, אפשר לציין ערך בשדה הזה, שישמש את קובץ דפי הנחיתה כדי ליצור כתובת URL מותאמת אישית לדף נחיתה. כל שדה מותאם אישית מוגבל ל-200 תווים. לקבלת מידע נוסף אפשר לעיין במאמר קבצים של דפי נחיתה .

רכיבי <Custom> שסופקו ברכיב <Rate> לא עוברים בירושה לרכיב <RoomBundle>. צריך להגדיר את המאפיין <Custom> בנפרד בכל <RoomBundle>.

<ExpirationTime> Optional DateTime התאריך והשעה שבהם המחיר נחשב פג (3 שעות מינימום).

מומלץ לא לספק חותמות זמן של תפוגה אם זה לא קריטי למבנה התמחור שלך.

Google לא מציגה מחירים שהתוקף שלהם פג, וכל מסלול נסיעה שהתוקף שלו פג יהיה זמין לשליחת שאילתות על תמחור בזמן אמת.

<Nights> Required integer מספר הלילות של מסלול הנסיעה. הערך של האלמנט <Nights> חייב להיות מספר שלם חיובי. השילוב של <Nights> עם <Checkin> מרכיב מסלול נסיעה.
<OtherFees> Optional float עמלות נוספות מלבד התעריף הבסיסי ומיסים שמשפיעים על המחיר הסופי של החדר. הרכיב <OtherFees> כולל מאפיין חובה יחיד, currency, שמגדיר את קוד המטבע בן שלוש האותיות עבור העמלות. לדוגמה, USD.

הרכיב <OtherFees> נדרש אם <Baserate> גדול מאפס.

<Occupancy> Optional integer מציין את מספר האנשים המקסימלי. כשהערך בשדה <Occupancy> מופיע מתחת לערך <Result>, צריך לציין בו את הערך 2 או יותר. <Occupancy> יחד עם הערך <OccupancyDetails>, שמציין את סוג האורחים (מבוגרים או ילדים). צריך להיכנס אל <OccupancyDetails> כדי לבדוק אם יש תחביר ותיאור של רכיבי צאצא. אם הרכיב <Occupancy> לא סופק, ברירת המחדל של התפוסה היא 2.

הערה: צריך לפנות לצוות התמיכה כדי להפעיל את התכונה לשליחת מחירים לחדרים שאינם זוגיים.

<PackageID> Optional string המזהה הייחודי של החבילה, שצריך למפות אותה לנתוני חבילה מוגדרים מראש. משמש גם לאכלוס המשתנה PACKAGE-ID של דף הנחיתה. מידע נוסף זמין במאמר מטא-נתונים של חבילת חדר.
<Property> Required string המזהה של המלון שמושפע מהנתונים המשויכים (מחיר, מסלול נסיעה, חבילת חדר או מטא-נתונים). הערך של הרכיב הזה חייב להיות מחרוזת. הערך של הרכיב הזה צריך להתאים לכרטיס המוצר <id> שהגדרתם בפיד רשימת המלונות.
<Rates> Optional <Rates> מאגר לבלוק <Rate> אחד או יותר. לכל <Rate> ב-<Rates> מוגדר מחיר שונה לשילוב של חדר/תוכנית נסיעה.

אפשר להשתמש באלמנט <Rates> רק כשיש כמה תעריפים לאותו שילוב של חדר/תוכנית. לדוגמה, מגדירים מספר תעריפים עבור תעריפים בלעדיים, תעריפים פרטיים או תעריפים בלעדיים בחבילות חדרים.

<Refundable> Optional Object מאפשר הצגת תעריף עם החזר כספי מלא או ביטול בחינם. אם לא תספקו את המידע הזה, לא יוצג מידע לגבי ההחזר הכספי. מדיניות החזרים כספיים ברמת <PackageData> מבטלת את מדיניות ההחזרים הכספיים ברמה <Result>. מדיניות החזרים כספיים ברמת <Rates> מבטלת את מדיניות ההחזרים הכספיים ברמה <PackageData>. אפשר גם להדגיש למשתמשים את המחיר שניתן להחזר כספי באמצעות אפשרויות חלופיות, בלי לשנות ישירות את סכימת ההודעות של העסקאות. מידע נוסף על המדיניות בנושא תעריפים להחזרים כספיים

בדוגמה הבאה מוצג הרכיב <Refundable> עם כל המאפיינים שהוגדרו:

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

הערה: מומלץ להגדיר את כל המאפיינים. הודעת אזהרה לגבי סטטוס הפיד מופיעה כשלא מוגדר מאפיין אחד או יותר.

אם לא הוגדרו מאפיינים, לא יוצג ערך עבור החזר כספי. המאפיינים הם:

  • available: (חובה) יש להגדיר כ-1 (או true) כדי לציין אם התעריף מאפשר החזר כספי מלא. אחרת, יש להגדיר כ-0 (או false).
  • refundable_until_days: (חובה אם available הוא true) מציין את מספר הימים לפני הצ'ק-אין שבהם ניתן לבקש החזר כספי מלא. הערך של refundable_until_days חייב להיות מספר שלם בין 0 ל-330, כולל.
  • refundable_until_time: (מומלץ מאוד אם available הוא true) מציין את השעה המאוחרת ביותר ביום, לפי השעה המקומית של המלון, שבה תכובד בקשה להחזר כספי מלא. אפשר לשלב את השם הזה עם refundable_until_days כדי לציין, לדוגמה, ש"ההחזרים הכספיים זמינים עד 16:00 יומיים לפני הצ'ק-אין". אם לא מגדירים את refundable_until_time, ברירת המחדל של הערך היא חצות.

    הערך של המאפיין הזה צריך להיות בפורמט זמן.

כשמגדירים את המאפיינים, חשוב לשים לב לנקודות הבאות:

  • אם לא תגדירו את הערכים available או refundable_until_days, לא יוצג החזר כספי.
  • אם הערך של available הוא 0 (או false), המערכת תתעלם מהמאפיינים האחרים. לא ניתן לקבל החזר כספי על התעריף, גם אם הגדרת אחד מהמאפיינים האחרים או את שניהם.
<RoomBundle> Optional <RoomBundle> מאגר למידע על תיאורים פיזיים מתומחרים של חדר, אריזות של שירותי המלון ופרטים מסוימים על מדיניות הרכישות של המלון ומסלול הנסיעה שצוינו.

באופן כללי, צריך להשתמש ברכיב הזה כדי להגדיר תמחור לחדר בסיס ולסוגים שונים של חדרים באותו נכס. למרות שניתן להגדיר תיאורים של חבילת חדרים באופן פנימי, צריך להשתמש בהודעה נפרדת על עסקאות כדי להגדיר את המידע הזה. Google תאחסן מטא-נתונים כדי שתוכלו להפנות אליהם במקום לחזור עליהם בכל עדכוני התמחור העתידיים.

<RoomID> Optional string המזהה הייחודי של החדר כדי למפות אותו לנתונים שהוגדרו מראש. משמש גם לאכלוס המשתנה של דף הנחיתה PARTNER-ROOM-ID. מידע נוסף זמין במאמר מטא-נתונים של חבילת חדר.
<Tax> Optional float המיסים שמחושבים לפי המחיר הסופי של החדר. הרכיב <Tax> כולל מאפיין חובה יחיד, currency, שמגדיר את קוד המטבע בן שלוש האותיות עבור המיסים. לדוגמה, USD. הרכיב <Tax> נדרש אם <Baserate> גדול מאפס.
<Unavailable> Optional Object התווית מציינת שמסלול הנסיעה לא זמין להזמנה. משמש כמאגר מסיבות מפורטות יותר לכך שמסלול הנסיעה לא היה זמין. יכול להיות שאחת או יותר מהסיבות הבאות של חוסר זמינות מוצבות מתחת לתג <Unavailable>:
  • <NoVacancy/>: אין יותר חדרים זמינים למכירה ללילה אחד או יותר בשהייה.
  • <MinNightStay value=N/>: מסלול הנסיעה היה נמוך ממשך השהייה המינימלי של N לילות בתאריכי השהייה.
  • <MaxNightStay value=N/>: מסלול הנסיעה היה גבוה ממספר הלילות המקסימלי לשהייה של N בתאריכי השהייה.
  • <MinAdvancePurchase value=N/>: מסלול הנסיעה היה מתחת לחלון המינימלי להזמנה מראש, N עבור תאריכי השהייה.
  • <MaxAdvancePurchase value=N/>: מסלול הנסיעה היה גבוה מהחלון המקסימלי להזמנה מראש של N בתאריכים השהייה.
  • <ClosedToArrival/>: הנכס לא מאפשר לעשות צ'ק-אין בתאריך ההגעה של מסלול הנסיעה.
  • <ClosedToDeparture/>: הנכס לא מאפשר צ'ק-אאוט בתאריך היציאה של מסלול הנסיעה.
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>: הנכס סגור למשך חלק מהשהייה או כולה. המאפיינים המומלצים first_open ו-first_closed מציינים את התאריכים הראשונים לפני תאריך ההגעה או תאריך ההגעה שבו הנכס פתוח או סגור, בהתאמה. בנכס שנסגר אחרי תאריך ההגעה, הערך first_open צריך להיות זהה לתאריך ההגעה ו-first_closed צריך להיות תאריך הסגירה של הנכס. עבור נכס שסגור בתאריך ההגעה, first_closed צריך להיות שווה לתאריך ההגעה, ו-first_opened צריך להיות התאריך הבא שבו הנכס פתוח.
  • <NotFetched/>: המחיר למסלול הנסיעה לא נמסר על ידי מקורות נתונים במורד הזרם.
  • <InvalidProperty/>: מזהה הנכס המבוקש לא זוהה.
  • <InvalidOccupancy/>: התפוסה המבוקשת לא נתמכת בנכס.
  • <PriceIssue/>: בעיה במחיר גרמה לכך שלא נשלחה.
  • <InternalError reason=""/>: אירעה שגיאה לא ידועה. אפשר לדווח על השגיאה כטקסט באמצעות מאפיין אופציונלי של סיבה.
  • <OtherRestriction restriction=""/>: מסלול הנסיעה לא היה זמין עקב מגבלות הזמנה שלא צוינו. מאפיין ההגבלה האופציונלי מאפשר לדווח על ההגבלה כטקסט.

דוגמאות

דוגמה למספר נכסים

בדוגמה הבאה מוגדרים מסלול נסיעה אחד והתמחור שלו לשני נכסים:

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

בדוגמה הזו לא מוצגים פרטים על החדר, כמו תיאור, תמונה וכיתוב, שם החדר והקיבולת שלו.

תוכלו להגדיר את המידע הזה פעם אחת בהודעת עסקה נפרדת ש-Google שומרת. לאחר מכן תוכלו להתייחס אליו בכל עדכוני התמחור והמלאי הבאים. מידע נוסף זמין במאמר מטא-נתונים של חבילת חדר.

דוגמה לתעריפים מרובים

בדוגמה הבאה מוגדרים מסלול נסיעה יחיד ונכס אחד עם כמה תעריפים למספרים שונים. אפשר להשתמש ברכיב <Rates> כדי לספק תמחור במספר תעריפים לנכס ספציפי. הדוגמה הבאה שימושית גם לנכסים של יחידת אירוח (VR):

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

דוגמה לא זמינה

בדוגמה הבאה מוגדרת מסלול נסיעה אחד שלא ניתן היה לאחזר את הזמינות שלו מערוצים במורד הזרם, מסלול נסיעה שני שהוא מתחת לשהייה המינימלית של לילה מסוים ושכבר הוזמן בתאריכים שצוינו, ומסלול שלישי שהנכס שלו סגור בתאריך ההגעה אבל נפתח במהלך השהייה:

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

<Rates>

מאגר לבלוק <Rate> אחד או יותר. לכל <Rate> בנכס <Rates> מוגדר מחיר שונה לשילוב של החדר או של מסלול הנסיעה.

כדאי להשתמש ברכיב <Rates> רק כשיש כמה תעריפים לאותו שילוב של חדר או מסלול נסיעה. לדוגמה, אתם מגדירים כמה תעריפים לתעריפים בלעדיים, לתעריפים פרטיים או לתעריפים בלעדיים בחבילות חדרים.

הרכיב <Rates> מופיע במקום הבא בהיררכיית ה-XML של הודעת הטרנזקציה:

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

הערכים שמוגדרים ב-<Rate> מבטלים ערכים שקשורים לתמחור ברכיב ההורה <Result> או <RoomBundle>. אם הם לא מוגדרים ב-<Rate>, הם יורשים את הערך שלהם מרכיב ההורה. רק הרכיב <AllowablePointsofSale> עובר בירושה לרכיב <RoomBundle>.

תחביר

הרכיב <Rates> משתמש בתחביר הבא:

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

מאפיינים

לרכיב <Rates> יש את המאפיינים הבאים:

מאפיין חובה? תיאור
rate_rule_id Optional עבור תעריפים בלעדיים, המזהה הזה תואם לשיעור להגדרה בקובץ 'הגדרת כללי תעריף'. מגבלת התווים בשדה הזה היא 40 תווים.

אלמנטים צאצאים

הרכיב <Rates> כולל את רכיבי הצאצא הבאים:

רכיב צאצא חובה? סוג תיאור
<AllowablePointsOfSale> Optional Object דף נחיתה אחד או יותר שעומדים בדרישות להצגת המלון. לרכיב הזה יש תחביר זהה לזה של <AllowablePointsOfSale> ב-<Result>.
<Baserate> Required float מחיר החדר לשהייה. לרכיב הזה יש תחביר זהה כמו של <Baserate> ב-<Result>.

הערה: לא ניתן להגדיר את רכיב הצאצא <Baserate> במסגרת <Rate> כלא זמין.

<ChargeCurrency> Optional enum הזמן והמקום שבהם המשתמש משלם על ההזמנה. לאלמנט הזה יש תחביר זהה לזה של <ChargeCurrency> ב-<Result>.
<Custom[1‑5]> Optional string שדות מותאמים אישית שבהם אפשר להשתמש כדי להעביר נתונים נוספים שמשויכים למלון אל דף הנחיתה. לאלמנט הזה יש תחביר זהה לזה של <Custom[1‑5]> ב-<Result>. אפשר להזין עד 200 תווים בכל שדה מותאם אישית. מידע נוסף זמין במאמר קבצים של דפי נחיתה.

אם רכיבי <Custom> מוגדרים ברכיב <Result>, הם לא עוברים בירושה מהאלמנט <RoomBundle> וצריך להגדיר אותם בנפרד לכל <RoomBundle>, או שאפשר לכלול אותם ב-<PackageData> במקרה הצורך.

<ExpirationTime> Optional DateTime התאריך והשעה שבהם שער זה נחשב בתוקף. לאלמנט הזה יש תחביר זהה לזה של <ExpirationTime> ב-<Result>.
<Occupancy> Optional integer

מציין את מספר האנשים המקסימלי. ייתכן שהמלווה <Occupancy> ילווה את <OccupancyDetails>, שמציין את סוג האורחים (מבוגרים או ילדים). מידע על תחביר ותיאור של רכיבי צאצא זמין בכתובת <OccupancyDetails>.

<OtherFees> Required float עמלות נוספות מלבד התעריף הבסיסי ומיסים שמשפיעים על המחיר הסופי של החדר. לרכיב הזה יש תחביר זהה לזה של <OtherFees> ב-<Result>.
<Refundable> Optional Object מאפשר הצגת תעריף עם החזר כספי מלא או ביטול בחינם. אם לא תספקו את המידע הזה, לא יוצג מידע לגבי ההחזר הכספי. מדיניות החזרים כספיים ברמת <PackageData> מבטלת את מדיניות ההחזרים הכספיים ברמה <Result>. מדיניות החזרים כספיים ברמת <Rates> מבטלת את מדיניות ההחזרים הכספיים ברמה <PackageData>. אפשר גם להדגיש למשתמשים את המחיר שניתן להחזר כספי באמצעות אפשרויות חלופיות, בלי לשנות ישירות את סכימת ההודעות של העסקאות. מידע נוסף על האפשרויות האלה במדיניות בנושא תעריפים להחזרים כספיים.

בדוגמה הבאה מוצג הרכיב <Refundable> עם כל המאפיינים שהוגדרו:

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

הערה: מומלץ להגדיר את כל המאפיינים. הודעת אזהרה לגבי סטטוס הפיד מופיעה כשלא מוגדר מאפיין אחד או יותר.

אם לא הוגדרו מאפיינים, לא יוצג ערך עבור החזר כספי. המאפיינים הם:

  • available: (חובה) יש להגדיר כ-1 (או true) כדי לציין אם התעריף מאפשר החזר כספי מלא. אחרת, יש להגדיר כ-0 (או false).
  • refundable_until_days: (חובה אם available הוא true) מציין את מספר הימים לפני הצ'ק-אין שבהם ניתן לבקש החזר כספי מלא. הערך של refundable_until_days חייב להיות מספר שלם בין 0 ל-330, כולל.
  • refundable_until_time: (מומלץ מאוד אם available הוא true) מציין את השעה המאוחרת ביותר ביום, לפי השעה המקומית של המלון, שבה תכובד בקשה להחזר כספי מלא. אפשר לשלב את השם הזה עם refundable_until_days כדי לציין, לדוגמה, ש"ההחזרים הכספיים זמינים עד 16:00 יומיים לפני הצ'ק-אין". אם לא מגדירים את refundable_until_time, ברירת המחדל של הערך היא חצות.

    הערך של המאפיין הזה צריך להיות בפורמט זמן.

כשמגדירים את המאפיינים, חשוב לשים לב לנקודות הבאות:

  • אם לא תגדירו את הערכים available או refundable_until_days, לא יוצג החזר כספי.
  • אם הערך של available הוא 0 (או false), המערכת תתעלם מהמאפיינים האחרים. לא ניתן לקבל החזר כספי על התעריף, גם אם הגדרת אחד מהמאפיינים האחרים או את שניהם.
<Tax> Required float המיסים שמחושבים לפי המחיר הסופי של החדר. לאלמנט הזה יש תחביר זהה לזה של <Tax> ב-<Result>.

דוגמאות

תעריף בסיסי ותעריף מותנה

בדוגמה הבאה מוצגת הודעת טרנזקציה שכוללת תעריף בסיסי ותעריף מותנה:

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

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

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

  </Result>
</Transaction>

תעריפים בלעדיים מרובים

בדוגמה הבאה מוגדרים תעריף בסיסי ומספר תעריפים בלעדיים בתוך <RoomBundle>:

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

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

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


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

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

<RoomBundle>

הגדרת התמחור והזמינות של חבילות חדרים כצאצא של <Result> בהודעת <Transaction>. הגדירו רכיב נפרד לכל שילוב של חבילה או מסלול נסיעה. כדי להגדיר את החבילה והתנאים של חבילות החדרים, משתמשים ב-<RoomData>.

הרכיב <RoomBundle> מופיע במקום הבא בהיררכיית ה-XML של הודעת הטרנזקציה:

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

מידע נוסף זמין במאמר שימוש בחבילות חדרים.

תחביר

הרכיב <RoomBundle> משתמש בתחביר הבא:

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

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

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

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

      <RatePlanID>rate_plan_ID</RatePlanID>

      <Rates>...</Rates>

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

מאפיינים

לרכיב <RoomBundle> אין מאפיינים.

אלמנטים צאצאים

הרכיב <RoomBundle> כולל את רכיבי הצאצא הבאים:

רכיב צאצא חובה? סוג תיאור
<Baserate> Required float הערך הזה מגדיר את המחיר של חבילת החדר לשהייה. לרכיב הזה יש תחביר זהה לזה של <Baserate> ב-<Result>, מלבד החריג הבא:
  • כשהחדר לא זמין למסלול הנסיעה, צריך להסיר את הרכיב <RoomBundle> כדי לציין שהחדר כבר לא במלאי. מידע נוסף זמין במאמר הסרת חבילת חדר.
<BreakfastIncluded> Optional boolean ההגדרה מציינת אם חבילת החדר כוללת ארוחת בוקר לפי התעריף.
<ChargeCurrency> Optional enum הזמן והמקום שבהם המשתמש משלם על ההזמנה. לאלמנט הזה יש תחביר זהה כמו של <ChargeCurrency> ב-<Result>.

ערך ברירת המחדל הוא web.

<Custom[1‑5]> Optional string שדות מותאמים אישית להעברת נתונים נוספים לדפי הנחיתה של חבילת החדר. התחביר של הרכיבים האלה זהה לזה של <Custom[1-5]> ב-<Result>. אפשר להזין עד 200 תווים בכל שדה מותאם אישית. למידע נוסף אפשר לעיין במאמר קבצים של דפי נחיתה.

אם רכיבי <Custom> מוגדרים ברכיב <Result>, הם לא עוברים בירושה מהאלמנט <RoomBundle> וצריך להגדיר אותם בנפרד לכל <RoomBundle>, או שאפשר לכלול אותם ב-<PackageData> במקרה הצורך.

<InternetIncluded> Optional boolean אם חבילת חדר כוללת גישה לאינטרנט ללא תשלום, בעוד שחבילות אחרות לא כוללות את השירותים האלה. אין להגדיר את הרכיב הזה לחבילות חדרים במלון שמספק אינטרנט בחינם לכל החדרים. הרכיב הזה לא חל על אינטרנט קווי בתוך החדר או אינטרנט אלחוטי שאינם זמינים בחדרי האורחים.
<Occupancy> Required integer מספר האורחים המקסימלי שעבורם מיועדת חבילת חדר. לדוגמה, יכול להיות בסוויטה גדולה שיכולה ללון בה 6 אורחים, אבל 'חבילת ירח דבש' מיועדת ל-2 אורחים בלבד.

הערך הזה צריך להיות קטן מ-<Capacity> או שווה לו, שהוא מספר האנשים שהחדר יכול להכיל באופן פיזי.

כשמגדירים תפוסה בכתובת דף הנחיתה, צריך להשתמש במשתנים NUM-ADULTS ו-NUM-CHILDREN, כפי שמתואר במאמר שימוש במשתנים ותנאים. ערך ברירת המחדל הוא 2 מבוגרים ו-0 ילדים.

הערך של <Occupancy> חייב להיות מספר שלם חיובי בין 1 ל-99, כולל.

הערות:

  • מומלץ מאוד להשתמש ב-<Occupancy> עבור <RoomBundle>
  • הערך <Occupancy> מגיע מאובייקט הנתונים בסדר הבא: <RoomBundle>, <PackageData>, ולאחר מכן = <RoomData>. אם לא קיים ערך באף אחד מהערכים האלה, ברירת המחדל של הערך תהיה 2.
  • ייתכן שהמלווה <Occupancy> ילווה את <OccupancyDetails>, שמציין את סוג האורחים (מבוגרים או ילדים). בודקים את התחביר ואת התיאור של רכיבי הצאצא: <OccupancyDetails>.
  • כשמגדירים <Occupancy> גם ב-<RoomBundle> וגם ב-<PackageData>, הערך שב-<RoomBundle> מקבל עדיפות.
<OtherFees> Required float עמלות נוספות מלבד התעריף הבסיסי ומיסים שמשפיעים על המחיר הסופי של החדר. הרכיב <OtherFees> כולל מאפיין חובה יחיד, currency, שמגדיר את קוד המטבע בן שלוש האותיות עבור העמלות. לדוגמה, אפשר לציין USD עבור דולר ארה"ב.
<PackageID> Optional (recommended) string המזהה הייחודי של נתוני החבילה. המזהה הזה מאפשר להתאים בין נתוני החבילה של החדר לבין הנתונים שנשלחו ביחידה הארגונית <PackageData>. אפשר לקרוא מידע נוסף במאמר מטא-נתונים של חבילת חדר. (אפשר להשתמש במזהה הזה גם כדי להפנות להגדרה של חבילת חדר משותפת שבה נעשה שימוש בהודעת עסקה בודדת כאשר מגדירים נתוני חבילת חדר בתוך השורה.)
<ParkingIncluded> Optional boolean האם חבילת חדר כוללת חניה ללא תשלום, בעוד שאחרת החניה הייתה שירות בתשלום במלון הזה. אין לציין ערך לרכיב הזה במלון שמציע חניה בחינם.

הערכים החוקיים הם 0 (או false) ו-1 (או true). ערך ברירת המחדל הוא false.

<RatePlanID> Optional string מזהה תוכנית התעריפים מייצג את המזהה הייחודי של שילוב של חדר וחבילה. לדוגמה, אם נותנים ל-<RoomID> את הערך 5 ואת הערך <PackageID> של ABC, אפשר להשתמש בערך של 5-ABC עבור <RatePlanID>. מומלץ מאוד להשתמש ב-RatePlanID כמשתנה כדי ליצור את כתובת ה-URL הדינמית של דף הנחיתה (לשעבר נקודת המכירה).

מידע נוסף זמין במאמר שימוש במשתנים ותנאים.

<Rates> Optional <Rates> תעריפים שמחליפים את ברירות המחדל של חבילת החדר. לאלמנט הזה יש תחביר זהה לזה של <Rates> ב-<Result>.
<Refundable> Optional Object מאפשר הצגת תעריף עם החזר כספי מלא או ביטול בחינם. אם לא תספקו את המידע הזה, לא יוצג מידע לגבי ההחזר הכספי. מדיניות החזרים כספיים ברמת <PackageData> מבטלת את מדיניות ההחזרים הכספיים ברמה <Result>. מדיניות החזרים כספיים ברמת <Rates> מבטלת את מדיניות ההחזרים הכספיים ברמה <PackageData>. אפשר גם להדגיש למשתמשים את המחיר שניתן להחזר כספי באמצעות אפשרויות חלופיות, בלי לשנות ישירות את סכימת ההודעות של העסקאות. מידע נוסף על האפשרויות האלה במדיניות בנושא תעריפים להחזרים כספיים.

בדוגמה הבאה מוצג הרכיב <Refundable> עם כל המאפיינים שהוגדרו:

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

הערה: מומלץ להגדיר את כל המאפיינים. הודעת אזהרה לגבי סטטוס הפיד מופיעה כשלא מוגדר מאפיין אחד או יותר.

אם לא הוגדרו מאפיינים, לא יוצג ערך עבור החזר כספי. המאפיינים הם:

  • available: (חובה) יש להגדיר כ-1 (או true) כדי לציין אם התעריף מאפשר החזר כספי מלא. אחרת, יש להגדיר כ-0 (או false).
  • refundable_until_days: (חובה אם available הוא true) מציין את מספר הימים לפני הצ'ק-אין שבהם ניתן לבקש החזר כספי מלא. הערך של refundable_until_days חייב להיות מספר שלם בין 0 ל-330, כולל.
  • refundable_until_time: (מומלץ מאוד אם available הוא true) מציין את השעה המאוחרת ביותר ביום, לפי השעה המקומית של המלון, שבה תכובד בקשה להחזר כספי מלא. אפשר לשלב את השם הזה עם refundable_until_days כדי לציין, לדוגמה, ש"ההחזרים הכספיים זמינים עד 16:00 יומיים לפני הצ'ק-אין". אם לא מגדירים את refundable_until_time, ברירת המחדל של הערך היא חצות.

    הערך של המאפיין הזה צריך להיות בפורמט זמן.

כשמגדירים את המאפיינים, חשוב לשים לב לנקודות הבאות:

  • אם לא תגדירו available או refundable_until_days, לא יוצג החזר כספי.
  • אם הערך של available הוא 0 (או false), המערכת תתעלם מהמאפיינים האחרים. לא ניתן לקבל החזר כספי על התעריף, גם אם הגדרת אחד מהמאפיינים האחרים או את שניהם.
<RoomID> Required string המזהה הייחודי של נתוני החדר. המזהה הזה ישמש להתאמה בין נתוני החבילה של החדר לבין הנתונים ששלחת במרחב המשותף <RoomData>. מידע נוסף זמין במאמר מטא-נתונים של חבילת חדר. (אפשר גם להשתמש במזהה הזה כדי להפנות להגדרה של חדר משותף בהודעת עסקה אחת כשאתם מגדירים את נתוני החדר בתוך השורה.)
<Tax> Required float המיסים שמחושבים לפי המחיר הסופי של החדר. הרכיב <Tax> כולל מאפיין חובה יחיד, currency, שמגדיר את קוד המטבע בן שלוש האותיות עבור המיסים. לדוגמה, אפשר לציין USD עבור דולר ארה"ב.

דוגמאות

חבילה לחדר יחיד

בדוגמה הבאה מוגדרת תגובה עם חבילת תפוסה אחת. כשמשתמש יבחר את 1 בחלונית לבחירת תפוסה, Google תציג את המחיר הנמוך ביותר שעומד בדרישות, ללא קשר למספר התפוסה.

אם אין מחיר לחדר אחד, Google תציג את המחיר הנמוך ביותר לחדר זוגי. חשוב לזכור שמחירים לחדרים ליחידים לא נשלחים בשאילתות בזמן אמת, אם מחירים לחדרים זוגיים או יותר נשמרים במטמון לתוכנית נסיעה.

הדוגמה הזו מפנה למטא-נתונים מוגדרים מראש של חדרים וחבילות באמצעות הרכיבים <RoomID> ו-<PackageID>. כדי להגדיר את המידע הזה, משתמשים ברכיבים <RoomData> ו-<PackageData>.

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

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

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


שני אנשים או יותר

בדוגמה הבאה מוגדרת תשובה שמכילה שני תפוסה או יותר.

הדוגמה הזו מפנה למטא-נתונים מוגדרים מראש של חדרים וחבילות באמצעות הרכיבים <RoomID> ו-<PackageID>. כדי להגדיר את המידע הזה, משתמשים ברכיבים <RoomData> ו-<PackageData>.

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

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

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


חבילות של כמה חדרים

בדוגמה הבאה מוגדרת התפוסה בחבילות חדרים כדי להדגים את האפשרות לתמחור חדרים באכסניה.

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

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

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

שיעורים מותנים מרובים

בדוגמה הבאה מוגדרים תעריף בסיסי ומספר תעריפים בלעדיים בתוך <RoomBundle>:

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

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

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


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

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

<OccupancyDetails>

הערך <Occupancy> בהודעה 'עסקה' מציין את מספר האורחים המקסימלי לחדר או לחבילה. <OccupancyDetails> יכול להכיל מידע נוסף כמו מספר האורחים וסוג האורחים (מבוגרים או ילדים).

כאשר <Occupancy> ו-<OccupancyDetails> מופיעים בתוך הרכיב <Rates> של <Result> או <RoomBundle>, המשמעות היא שהתעריף מוגבל על ידי פרטי התפוסה.

תחביר

כאשר הערך <OccupancyDetails> מופיע, תמיד מופיע <Occupancy> לפני הערך. שימו לב לתחביר הבא:

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

אלמנטים צאצאים

הרכיב <OccupancyDetails> כולל את רכיבי הצאצא הבאים:

רכיב צאצא חובה? סוג תיאור
<NumAdults> Required integer מספר האורחים המבוגרים. מינימום:1, מקסימום:20.
<Children> Optional Object מאגר עבור רכיב <Child> אחד או יותר.
<Child age> Optional integer הגיל המקסימלי של הילד או הילדה. לדוגמה: <Child age="17">.

דוגמאות

הדוגמאות הבאות מראות איך <OccupancyDetails> עשוי להופיע בתוך <Results>, <RoomBundle> או ברכיב הצאצא <Rates>.

תשובה שהתקבלה

בדוגמה הבאה מוגדרים מסלול נסיעה אחד והתמחור שלו לנכס אחד, בתגובה לשאילתת תמחור בזמן אמת, שבה המשתמש ציין את מספר האורחים ואת סוגי האורחים. כאן, <OccupancyDetails> – 2 מבוגרים וילד אחד – מוחזרים ב-<Result>.

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

תגובה בנושא תעריפים

בדוגמה הבאה מוגדרים מסלול נסיעה אחד והתמחור שלו למבוגר אחד ולילד אחד. כאן, הערכים מסוג <OccupancyDetails> מוחזרים ברכיב <Rates> של <Result>.

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

חבילת חדרים

בדוגמה הבאה אנחנו יכולים לראות חדר עם 2 מבוגרים וילד אחד לשני לילות, עם תעריף שאפשר לקבל עליו החזר כספי. כאן, השדה <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> שמוגבלים לאורח של 2 מבוגרים ו-2 ילדים. כאן, <OccupancyDetails> מופיע ברכיב <Rates> של <RoomBundle>.

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