תמחור & מלאי חדרים (עסקאות) 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>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two single beds -->
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>private</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>non_smoking</Smoking>
        <BathAndToilet relation="separate">
          <Bath bathtub="1" shower="1"/>
          <Toilet electronic_bidet="1" mobility_accessible="1"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <LakeView/>
          <MarinaView/>
          <BeachView/>
          <ForestView/>
          <MountainView/>
          <NatureView/>
        </Views>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

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

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

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


סגנון יפני עם מיטה

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

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

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

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

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

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

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

<PackageData>

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

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

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

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

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

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

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

תחביר

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

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

מאפיינים

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

רכיבי צאצא

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

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

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

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

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

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

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

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

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

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

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

כדי שמסנני הארוחות (no meals, breakfast only, dinner only ו-breakfast and dinner) יפעלו, יש לספק את המאפיין included גם <Breakfast> וגם <Dinner>.

<Name> Required string שם החבילה. הערך הזה צריך להיות זהה לערך שמופיע בדף הנחיתה של המלון. הערך של הרכיב הזה לא יכול להיות מורכב מאותיות גדולות בלבד.

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

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer המספר המקסימלי של אורחים שחבילת חדר מיועדת להם. לדוגמה, בסוויטה גדולה יכולים ללון עד 6 אורחים, אבל היא מיועדת לעד 4 אורחים בלבד.

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

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

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

הערה:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

ארוחת בוקר

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

<Result>

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

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

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

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

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

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

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

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

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

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

<RatePlanID> Optional string מזהה תוכנית המחירים מייצג את המזהה הייחודי של שילוב של חדר וחבילה. לדוגמה, אם נותנים את הערך 5 של <RoomID> ואת הערך <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>