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

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

<Transaction>

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

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

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

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

תחביר

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

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

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

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

</Transaction>

מאפיינים

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

מאפיין חובה? סוג תיאור
id Required string מזהה ייחודי לכל הודעת Transaction.
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>.

דוגמאות

נתוני החדר

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

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

נתוני תמחור

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

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

מחירים ללילה

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

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


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

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

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

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

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

  </Result>
</Transaction>

הסרת מלאי שטחי פרסום

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

<?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> שקיימים בחדר. חשוב לזכור שלא צריך לספור כאן את המיטה היפנית (futon).

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

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

המאפיין הוא:

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

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

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

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

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

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

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

דוגמה:

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

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

דוגמאות

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

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

בדוגמה הבאה מוצג אופן השימוש ב-<RoomFeatures>:

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

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

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

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


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

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

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

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

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

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

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

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

<PackageData>

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

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

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

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

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

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

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

תחביר

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

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

מאפיינים

לאלמנט <PackageData> אין מאפיינים.

רכיבים צאצאים

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

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

מומלץ להשתמש ב-<Meals> במקום ב-<BreakfastIncluded>.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

הערה:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

דוגמאות

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <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>.

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

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

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

תחביר

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

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

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

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

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

    <Rates>...</Rates>

    <RoomBundle>...</RoomBundle>

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

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

מאפיינים

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

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

רכיבים צאצאים

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

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

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

<Baserate> Optional float

המחיר של החדר לשהייה. הערך של האלמנט הזה צריך לשקף את הפרטים הבאים:

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

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

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

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

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

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

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

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

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

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

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

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

    הערך של המאפיין הזה צריך להיות בפורמט 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> גדול מאפס.

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

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

דוגמאות

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

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

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

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

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

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

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

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

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

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

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

<Rates>

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

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

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

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

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

תחביר

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

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

מאפיינים

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

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

רכיבים צאצאים

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

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

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

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

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

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

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

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

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

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

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

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

כמה תעריפים בלעדיים

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

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

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

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


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

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

<RoomBundle>

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

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

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

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

תחביר

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

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

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

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

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

      <RatePlanID>rate_plan_ID</RatePlanID>

      <Rates>...</Rates>

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

מאפיינים

לאלמנט <RoomBundle> אין מאפיינים.

רכיבים צאצאים

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

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

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

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

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

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

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

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

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

הערות:

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

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

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

למידע נוסף, קראו את המאמר שימוש במשתנים ובתנאים.

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

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

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

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

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

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

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

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

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

דוגמאות

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

<OccupancyDetails>

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

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

תחביר

כשהקוד <OccupancyDetails> מופיע, תמיד מופיע לפניו <Occupancy>. שימו לב לסינטקס הבא:

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

רכיבים צאצאים

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

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

דוגמאות

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

תגובת התוצאה

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

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

תגובה לדירוג

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

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

חבילת חדר

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

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
  <Result>
    <Property>6781291</Property>
    <Checkin>2017-08-05</Checkin>
    <Nights>2</Nights>
    ...
    <RoomBundle>
      <RoomID>10291</RoomID>
      <RatePlanID>564739</RatePlanID>
      <PackageID>564739</PackageID>
      <Occupancy>3</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
        <Children>
          <Child age="17"/>
        </Children>
      </OccupancyDetails>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="true" refundable_until_days="1" refundable_until_time="23:59:00" />
      <Baserate currency="USD">185.34</Baserate>
      <Tax currency="USD">37.06</Tax>
      <OtherFees currency="USD">2.22</OtherFees>
    </RoomBundle>
  </Result>
</Transaction>

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

בדוגמה הבאה מוגדרים כמה תעריפים של <RoomBundle> שמוגבלים לאירוח של 2 מבוגרים ו-2 ילדים. כאן, הערכים של <OccupancyDetails> מופיעים ברכיב <Rates> של <RoomBundle>.

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