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

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

<Transaction>

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

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

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

בהודעות שבהן נעשה שימוש ב-<Transaction> בתור הרכיב הבסיסי (root) צריך להיות לפחות פריט אחד רכיב צאצא. הודעות על עסקאות יכולות לכלול כל מספר של רכיבי צאצא, כל עוד הגודל הכולל של ההודעה לא עולה על 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 string מזהה ייחודי לכל הודעת עסקה.
partner Optional string חשבון השותף שאליו שייכת ההודעה 'עסקה'. שלך בדרך כלל יש להשתמש באפשרות הזו אם הקצה העורפי שלכם מספק פידים של מחירים לכמה חשבונות של שותפים. ערך המחרוזת הזה הוא 'מפתח שותף' הערך שרשום ב ה דף הגדרות החשבון ב-Hotel Center.
timestamp Required DateTime

הרגע בזמן שבו הודעת העסקה נשלח.

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

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

רכיבי צאצא

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

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

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

<Result> Optional* <Result>

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

* לפחות אחד מתוך <PropertyDataSet> או <Result> הוא שדה חובה.

דוגמאות

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

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

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

נתוני תמחור

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

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

מחירים ללילה

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

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


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

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

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

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

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

  </Result>
</Transaction>

הסרת מלאי

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

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

<PropertyDataSet>

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

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

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

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

תחביר

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

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

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

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

מאפיינים

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

רכיבי צאצא

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

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

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

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

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

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

* לפחות אחד מתוך <PackageData> או <RoomData> הוא שדה חובה.

דוגמאות

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

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

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

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

<RoomData>

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

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

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

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

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

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

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

תחביר

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

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

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

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

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

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

מאפיינים

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

רכיבי צאצא

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

דוגמה:

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

דוגמאות

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

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

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

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

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

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

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

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

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

<RoomFeatures>

ההגדרה הזו מגדירה את התכונות שנמצאות בחדר.

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

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

תחביר

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

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

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

מאפיינים

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

רכיבי צאצא

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

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

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

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

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

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

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

המאפיין הוא:

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

הרכיב באופן אופציונלי לוקח את רכיבי הצאצא הבאים:

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

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

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

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

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

דוגמה:

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

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

דוגמאות

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

<PackageData>

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

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

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

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

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

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

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

תחביר

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

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

מאפיינים

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

רכיבי צאצא

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

הערה:

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

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

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

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

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

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

  • אם הערכים available או refundable_until_days הם לא מוגדר, לא יוצג החזר כספי על המחיר.
  • אם הערך של available הוא 0 או false, המערכת מתעלמת מהמאפיינים האחרים. התעריף לא מוצג בתור ניתן לקבל החזר כספי גם אם אחד מהמאפיינים האחרים או שניהם מוגדרים.
<MembershipBenefits Included> Optional boolean המחיר כולל הטבות של סטטוס עילית למשך השהייה. כולל את הפרמטרים הבאים:
  • ProgramName: השם של תוכנית הסטטוס היוקרתי
  • ProgramLevel: הרמה בתוכנית. מוצרים לדוגמה: "זהב".
  • NightlyValue (optional): הערך ללילה היתרונות.
<CarRentalIncluded> Optional boolean המחיר כולל השכרת רכב בחינם למשך השהייה.
<MilesIncluded>&gt; Optional boolean המחיר כולל מיילים של נוסע מתמיד. הפרמטרים כוללים:
  • NumberofMiles: מספר המיילים בכל מסלול.
  • Provider: מיילים של נוסע מתמיד יכולים לספק נתונים.
<OnPropertyCredit> Optional boolean המחיר כולל זיכוי לפרסום עתידי (F&B, אתר נופש, ספא וכו'). פרמטר:
  • 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>
      <PackageID>PackageID_1</PackageID>
      <Name>
        <Text text="Meals Included" language="en"/>
      </Name>
      <PhotoURL>
        <Caption>
          <Text text="Breakfast" language="en"/>
          <Text text="朝食" language="ja"/>
        </Caption>
        <URL>http://example.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <Meals>
        <!-- Guests can choose to have breakfast in their room or in another
        space to avoid contact with other guests. -->
        <Breakfast included="1" in_room="1" in_private_space="1"/>
        <Dinner included="1" buffet="1"/>
      </Meals>
      <CheckinTime>15:00</CheckinTime>
      <CheckoutTime>11:00</CheckoutTime>
    </PackageData>
  </PropertyDataSet>
</Transaction>

ארוחת בוקר

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

<Result>

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

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

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

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

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

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

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

תחביר

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

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

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

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

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

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

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

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

מאפיינים

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

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

רכיבי צאצא

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

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

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

<Baserate> Optional float

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

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

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

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

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

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

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

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

    מחירים מסוג 'הכול כלול' מוצגים עכשיו למשתמשים בארה"ב.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

הערה: תעריפים לחדרים ליחידים בתוך <Result> יכולים יש לציין רק ב-<Rates>. צריך ליצור איתנו קשר כדי לאשר מחירים לחדרים לא זוגיים.

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

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

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

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

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

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

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

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

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

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

<RoomID> Optional string המזהה הייחודי של החדר, כדי למפות אותו לנתוני החדר שהוגדרו מראש. וגם משמש לאכלוס המשתנה של דף הנחיתה PARTNER-ROOM-ID. מידע נוסף זמין במאמר חדר מטא-נתונים של חבילה.
<Tax> Optional float המיסים שמחושבים לפי המחיר הסופי של החדר. הרכיב <Tax> מקבל מאפיין חובה אחד, currency, המגדיר את קוד המטבע בן שלוש האותיות לגבי המיסים. לדוגמה, USD. נדרש רכיב <Tax> אם <Baserate> גדול מאפס.

אם הרכיב <Baserate> 'all_include' מוגדר במפורש כ-True, ואז מגדיר הוא אופציונלי.

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

דוגמאות

דוגמה לשימוש בכמה נכסים

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

<?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>, הם יורשים את הערך שלהם מרכיב ההורה. רק &lt;AllowablePointsofSale&gt; עוברת בירושה לרכיב <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 תווים לכל שדה מותאם אישית. מידע נוסף זמין במאמר קבצים של דפי נחיתה.

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

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

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

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

אם הרכיב <Baserate> 'all_include' מוגדר במפורש כ-True, ואז מגדיר הוא אופציונלי.

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

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

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

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

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

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

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

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

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

דוגמאות

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

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

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

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

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

  </Result>
</Transaction>

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

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

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

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

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


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

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

<RoomBundle>

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

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

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

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

תחביר

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

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

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

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

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

      <RatePlanID>rate_plan_ID</RatePlanID>

      <Rates>...</Rates>

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

מאפיינים

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

רכיבי צאצא

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

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

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

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

אם בוחרים ב<התאמה אישית> רכיבים אלה מסופקים <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>. עבור מידע נוסף, אפשר לעיין חדר מטא-נתונים של חבילה. (את/ה יכול להשתמש במזהה הזה גם כדי להתייחס להגדרה של חבילת חדרים נפוצה בהודעת עסקה יחידה כשמגדירים נתונים של חבילת חדר inline.)
<ParkingIncluded> Optional boolean האם חבילת חדרים כוללת חניה ללא תשלום, במקרים שבהם אחרת, החניה במלון הזה תהיה בתשלום. לא לציין ערך לרכיב הזה עבור מלון שמציע חניה בחינם.

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

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

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

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

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

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

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

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

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

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

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

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

דוגמאות

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

<OccupancyDetails>

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

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

תחביר

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

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

רכיבי צאצא

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

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

דוגמאות

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

תשובה לתוצאה

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

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

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

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

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

חבילת חדרים

בדוגמה הבאה מוגדר חדר של 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>