الطلبات
البنية
تستخدم رسالة Transaction (Property Data)
البنية التالية:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp "
id="message_ID "
partner="partner_key ">
<PropertyDataSet action="[overlay|delta]">
<!-- (Required) ID that matches the Hotel List Feed -->
<Property>HotelID </Property>
<RoomData>
<!-- (Required) One room ID per RoomData element -->
<RoomID>RoomID </RoomID>
<Name>
<Text text="room_name " language="language_code "/>
</Name>
<Description>
<Text text="room_description " language="language_code "/>
</Description>
<!-- (Optional) Restricts the rate plans allowed for this room type to
those listed here. If specified, don't specify AllowableRoomIDs. -->
<AllowablePackageIDs>
<AllowablePackageID>PackageID </AllowablePackageID>
</AllowablePackageIDs>
<Capacity>max_number_of_occupants </Capacity>
<AdultCapacity>max_number_of_adult_occupants </AdultCapacity>
<ChildCapacity>max_number_of_child_occupants </ChildCapacity>
<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>
<JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
<Beds>
<Bed size="[single|semi_double|double|queen|king]">
<Width unit="cm" number="bed_width "/>
<Length unit="cm" number="bed_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>
<PackageData>
<!-- (Required) One package ID per PackageData element -->
<PackageID>PackageID </PackageID>
<Name>
<Text text="package_name " language="language_code "/>
</Name>
<Description>
<Text text="package_description " language="language_code "/>
</Description>
<!-- (Optional) Restricts the room types allowed for this rate plan to
those listed here. If specified, don't specify AllowablePackageIDs. -->
<AllowableRoomIDs>
<AllowableRoomID>RoomID </AllowableRoomID>
</AllowableRoomIDs>
<Refundable available="[false|true]" refundable_until_days="number_of_days "
refundable_until_time="time "/>
<!-- 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>
</PackageData>
</PropertyDataSet>
</Transaction>
العناصر والسمات
تحتوي رسالة Transaction (Property Data) (المعاملة (بيانات الموقع الإلكتروني)) على العناصر والسمّات التالية:
العنصر / @السمة | عدد مرات الظهور | النوع | الوصف |
---|---|---|---|
Transaction | 1 | Complex element | في عملية تنفيذ ARI، هذا هو العنصر الجذر لرسالة التي تحدّد أنواع الغرف والحزم لموقع واحد. |
Transaction / @timestamp | 1 | DateTime | تاريخ ووقت إنشاء هذه الرسالة |
Transaction / @id | 1 | string | معرّف فريد لرسالة الطلب هذه. يتم عرض هذه القيمة في رسالة الاستجابة. الأحرف المسموح بها هي a-z وA-Z و0-9 و_ (شرطة سفلية) و- (شرطة). |
Transaction / @partner | 1 | string | حساب الشريك المرتبط بهذه الرسالة. قيمة السلسلة هذه هي
قيمة "مفتاح الشريك" المدرَجة في
صفحة "إعدادات الحساب" في Hotel Center.
ملاحظة: إذا كان لديك نظام أساسي يقدّم خلاصات لعدة حسابات، يجب أن تتطابق هذه القيمة مع قيمة سمة |
Transaction / PropertyDataSet | 1.. | PropertyDataSet | حاوية لتحديد أنواع الغرف والحزم لموقع واحد |
Transaction / PropertyDataSet / @action | 0..1 | enum | نوع التعديل الذي سيتم تطبيقه على تعريفات أسعار الغرف. القيم الصالحة هي:
هذه السمة اختيارية وتكون القيمة التلقائية لها هي |
Transaction / PropertyDataSet / Property | 1 | string | المعرّف الفريد للمكان يجب أن تتطابق هذه القيمة مع
معرّف الفندق المحدّد باستخدام
<id> في عنصر <listing>
في خلاصة بيانات الفنادق. يظهر رقم تعريف الفندق أيضًا في Hotel Center. |
Transaction / PropertyDataSet / RoomData | 0..n | RoomData | يصف غرفة. ملاحظة: يجب توفير سمة واحدة على الأقل من |
Transaction / PropertyDataSet / RoomData / RoomID | 1 | RoomID | معرّف فريد لنوع الغرفة تتم الإشارة إلى هذه القيمة باستخدام
السمة InvTypeCode في عنصر
<StatusApplicationControl> في رسائل
<OTA_HotelAvailNotifRQ> و
<OTA_HotelRateAmountNotifRQ> و
<OTA_HotelInvCountNotifRQ> . |
Transaction / PropertyDataSet / RoomData / Name | 1 | Name | حاوية لاسم فئة الغرفة بلغة واحدة أو أكثر |
Transaction / PropertyDataSet / RoomData / Name / Text | 1..n | Text | تُستخدَم لتحديد اسم فئة الغرفة بلغة واحدة. |
Transaction / PropertyDataSet / RoomData / Name / Text / @text | 1..n | string | اسم فئة الغرفة باللغة المحدّدة من خلال سمة
language . |
Transaction / PropertyDataSet / RoomData / Description | 1 | Name | حاوية لوصف فئة الغرفة بلغة واحدة أو أكثر |
Transaction / PropertyDataSet / RoomData / Description / Text | 1..n | Text | لتحديد وصف فئة الغرفة بلغة واحدة. |
Transaction / PropertyDataSet / RoomData / Description / Text / @text | 1..n | string | وصف فئة الغرفة باللغة المحدّدة
من خلال سمة language |
Transaction / PropertyDataSet / RoomData / Description / Text / @language | 1..n | string | رمز لغة مكوّن من حرفَين |
Transaction / PropertyDataSet / RoomData / AllowablePackageIDs | 0..1 | AllowablePackageIDs | حاوية لعناصر <AllowablePackageID>
في حال تحديد في حال عدم تحديد استخدِم إما |
Transaction / PropertyDataSet / RoomData / AllowablePackageIDs / AllowablePackageID | 1..n | AllowablePackageID | تُحدِّد PackageID لخطة أسعار يمكن دمجها مع
نوع الغرفة هذا. يتم تحديد خطة الأسعار من خلال مجموعة من
الحزمة والأسعار ومدى التوفّر. يتطابق العنصر PackageID
مع العنصر RatePlanCode في
الرسالتَين OTA_HotelRateAmountNotifRQ وOTA_HotelAvailNotifRQ.
|
Transaction / PropertyDataSet / RoomData / Capacity | 0..1 | integer | الحد الأقصى لعدد البالغين والأطفال الذين يمكنهم
الإقامة في الغرفة يجب أن تكون هذه القيمة أكبر من أو تساوي
أي قيم NumberOfGuests ترسلها مع الأسعار.
يجب أن تكون قيمة ملاحظة:في حال عدم ضبط |
Transaction / PropertyDataSet / RoomData / AdultCapacity | 0..1 | integer | الحد الأقصى لعدد البالغين الذين يمكن أن تستوعبهم الغرفة
بشكلٍ جسدي. يجب أن تكون هذه القيمة أكبر من أو تساوي أي قيم
NumberOfGuests ترسلها مع الأسعار.
يجب أن تكون قيمة |
Transaction / PropertyDataSet / RoomData / ChildCapacity | 0..1 | integer | الحد الأقصى لعدد الأطفال الذين يمكن أن تستوعبه الغرفة
بشكلٍ جسدي.
يجب أن تكون قيمة |
Transaction / PropertyDataSet / RoomData / OccupancySettings | 0..1 | OccupancySettings | الإعدادات التي يمكنها فرض قيود على متطلبات الإشغال في
الغرفة أو تعديلها
يأخذ العنصر
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> ولا يلزم تضمين جميع العناصر الفرعية. |
Transaction / PropertyDataSet / RoomData / PhotoURL | 0..n | PhotoURL | عنوان URL وتعليق اختياري لصورة الغرفة المحدّدة أو
حزمة الغرف يمكنك تحديد أكثر من <PhotoURL>
واحد لغرفة أو حزمة غرف.
يقبل هذا العنصر العناصر الفرعية التالية:
<PhotoURL> <URL>http://www.example.com/image1.jpg</URL> <Caption> <Text text="A bright way to enjoy your mornin' cuppa tea." language="en"/> <Text text="Une façon lumineuse pour profiter de votre tasse de thé." language="fr"/> </Caption> </PhotoURL> |
Transaction / PropertyDataSet / RoomData / RoomFeatures | 0..1 | <RoomFeatures> |
يحتوي على معلومات عن ميزات الغرفة. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / JapaneseHotelRoomStyle | 0..1 | enum | يشير إلى أسلوب غرفة فندق يابانية. القيم الصالحة هي:
|
Transaction / PropertyDataSet / RoomData / RoomFeatures / Beds | 0..1 | Object | يحتوي على عدد <Bed> يساوي عدد الغرف. يُرجى العلم
أنّه لا يجب احتساب أسرّة الفوتون اليابانية هنا.
تحتوي كل سمة
<Bed> على العناصر الفرعية التالية:
<Beds> <Bed size="double"> <Width unit="cm" number="140"/> <Length unit="cm" number="195"/> </Bed> <Bed/> <!-- Size unknown --> </Beds> |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Suite | 0.. | enum | قدِّم هذا العنصر عندما تكون هذه الغرفة جناحًا. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Capsule | 0..1 | enum | قدِّم هذا العنصر عندما تكون هذه الغرفة غرفة كبسولية. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Roomsharing | 0..1 | enum | ما إذا كانت هذه الغرفة مشترَكة مع نزلاء آخرين، مثل المالكين
أو الضيوف الآخرين القيم الصالحة هي shared وprivate . |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Outdoor | 0..1 | enum | قدِّم هذا العنصر عندما تكون هذه الغرفة مكان إقامة في الهواء الطلق لا يتضمّن جدرانًا ثابتة وأنظمة صرف صحي وأجهزة تحكّم في المناخ. على سبيل المثال، غرف الفنادق ليست أماكن إقامة في الهواء الطلق، في حين أنّ مواقع التخييم التي يقيم فيها النزلاء في الخيام والمتنزّهات للمركبات الترفيهية التي يحضر فيها النزلاء المركبات الترفيهية الخاصة بهم هي أماكن إقامة في الهواء الطلق. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / MobileAccessible | 0..1 | enum | قدِّم هذا العنصر عندما تكون هذه الغرفة متاحة للأشخاص الذين يعانون من عجز في الحركة. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Smoking | 0..1 | enum | ما إذا كانت هذه الغرفة مخصّصة لغير المدخنين أو للمدخنين القيم
الصالحة هي non_smoking وsmoking . |
Transaction / PropertyDataSet / RoomData / RoomFeatures / BathAndToilet | 0..1 | Object | يحتوي على معلومات عن حوض الاستحمام والمرحاض في الغرفة.
السمة هي:
يقبل العنصر اختياريًا العناصر الفرعية التالية:
مثال: <BathAndToilet relation="separate"> <Bath bathtub="1" shower="1"/> <Toilet electronic_bidet="1" mobility_accessible="1"/> </BathAndToilet> |
Transaction / PropertyDataSet / RoomData / RoomFeatures / OpenAirBath | 0..1 | enum | قدِّم هذا العنصر عندما تحتوي هذه الغرفة على حمام خاص في الهواء الطلق. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / AirConditioning | 0..1 | enum | قدِّم هذا العنصر عندما تحتوي هذه الغرفة على مكيّف هواء. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Balcony | 0..1 | enum | قدِّم هذا العنصر عندما تحتوي هذه الغرفة على شرفة أو شرفة خارجية. |
Transaction / PropertyDataSet / RoomData / RoomFeatures / Views | 0..1 | Object | تشمل الخيارات الصالحة ما يلي:
|
Transaction / PropertyDataSet / PackageData | 0..n | PackageData | حاوية للعناصر التي تصف ميزات الأسعار والأحكام التي ليست جزءًا من وصف الغرفة المادي ملاحظة: يجب توفير سمة واحدة على الأقل من |
Transaction / PropertyDataSet / PackageData / PackageID | 1 | string | يتوافق العنصر PackageID في هذه الرسائل مع العنصر
RatePlanCode في الرسالتَين OTA_HotelRateAmountNotifRQ و
OTA_HotelAvailNotifRQ. |
Transaction / PropertyDataSet / PackageData / Name | 1 | Name | حاوية لاسم الحزمة بلغة واحدة أو أكثر |
Transaction / PropertyDataSet / PackageData / Name / Text | 1..n | Text | تُستخدَم لتحديد اسم الحزمة بلغة واحدة. |
Transaction / PropertyDataSet / PackageData / Name / Text / @text | 1..n | string | اسم الحزمة باللغة المحدّدة من خلال سمة
language . |
Transaction / PropertyDataSet / PackageData / Description | 1 | Description | حاوية لوصف الحزمة بلغة واحدة أو أكثر |
Transaction / PropertyDataSet / PackageData / Description / Text | 1..n | Text | تُستخدَم لتحديد وصف الحزمة بلغة واحدة. |
Transaction / PropertyDataSet / PackageData / Description / Text / @text | 1..n | string | وصف الحزمة باللغة المحدّدة في سمة
language |
Transaction / PropertyDataSet / PackageData / Description / Text / @language | 1..n | string | رمز لغة مكوّن من حرفَين |
Transaction / PropertyDataSet / PackageData / AllowableRoomIDs | 0..1 | AllowableRoomIDs | حاوية لعناصر <AllowableRoomID>
في حال تحديد في حال عدم تحديد استخدِم إما |
Transaction / PropertyDataSet / PackageData / AllowableRoomIDs / AllowableRoomID | 1..n | AllowableRoomID | تحدِّد هذه السمة رقم تعريف الغرفة لنوع الغرفة الذي يمكن دمجه مع خطة أسعار
هذه. يتم تحديد نوع الغرفة في عنصر <RoomData> .
|
Transaction / PropertyDataSet / PackageData / Refundable | 0..1 | Refundable | يتيح هذا الخيار إدراج سعر على أنّه قابل للاسترداد بالكامل أو الإلغاء. وفي حال عدم تقديمها، لن يتم عرض أي معلومات عن ردّ الأموال.
ملاحظة: ننصحك بضبط جميع السمات. يتم إنشاء رسالة تحذير بشأن حالة الخلاصة عند عدم ضبط سمة واحدة أو أكثر. في حال عدم ضبط أي سمات، لن يظهر السعر على أنّه قابل للاسترداد. عند ضبط السمات، يُرجى مراعاة ما يلي:
|
Transaction / PropertyDataSet / PackageData / Refundable / @available | 1 | boolean | (سمة مطلوبة) اضبطها على 1 أو
true للإشارة إلى ما إذا كان السعر يسمح بتقديم طلب لاسترداد المبلغ المدفوع بالكامل، وبخلاف ذلك اضبطها على 0 أو false . |
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days | 0..1 | integer | (سمة مطلوبة إذا كان available يساوي true ) تحدد
عدد الأيام قبل تسجيل الوصول التي يمكن فيها
طلب استرداد الأموال بالكامل. يجب أن تكون قيمة refundable_until_days
عددًا صحيحًا يتراوح بين 0 و330، بما في ذلك هذين الرقمَين. |
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_time | 0.. | Time | (ننصح بشدة باستخدام هذا الحقل إذا كان
available يساوي true ) لتحديد
آخر وقت بالتوقيت المحلي للفندق يمكن فيه قبول طلب ردّ
الأموال بالكامل. يمكن دمج ذلك مع
refundable_until_days لتحديد، مثلاً، "تتوفّر إمكانية ردّ الأموال حتى الساعة 4:00 مساءً قبل يومين من
تسجيل الوصول". إذا لم يتم ضبط refundable_until_time ، تكون القيمة
التلقائية هي منتصف الليل. |
Transaction / PropertyDataSet / PackageData / BreakfastIncluded | 0..1 | boolean | تُستخدَم لتحديد ما إذا كان نوع الغرفة هذا يتضمّن وجبة فطور.
القيم الصالحة هي 0 (أو false ) و1
(أو true ).
يُفضَّل استخدام |
Transaction / PropertyDataSet / PackageData / CheckinTime | 0..1 | Time | أقرب وقت ممكن لتسجيل الوصول بالتوقيت المحلي للفندق يجب أن يكون الوقت أقل من 24:00. |
Transaction / PropertyDataSet / PackageData / CheckoutTime | 0..1 | Time | آخر وقت ممكن للمغادرة بالتوقيت المحلي للفندق |
Transaction / PropertyDataSet / PackageData / InternetIncluded | 0..1 | boolean | لتحديد ما إذا كانت الغرفة تتضمّن خدمة إنترنت مجانية
في حين لا تتضمّن الغرف الأخرى هذه الميزة لا تضبط هذا العنصر في
فندق يقدّم خدمة إنترنت مجانية في جميع الغرف. لا ينطبق هذا العنصر
على الإنترنت السلكي في الغرف أو الإنترنت اللاسلكي الذي
لا يتوفّر في غرف النزلاء. القيم الصالحة هي 0 (أو
false ) و1 (أو true ).
|
Transaction / PropertyDataSet / PackageData / Meals | 0..1 | Object | يحتوي على معلومات عن الوجبات في هذه الحزمة.
يقبل عنصر
لا يتم استخدام السمات الاختيارية إلا عندما يكون لكي تعمل فلاتر الوجبات ( |
Transaction / PropertyDataSet / PackageData / ParkingIncluded | 0..1 | boolean | ما إذا كانت الغرفة تتضمّن موقف سيارات بدون رسوم، حيث
تكون خدمة ركن السيارات مدفوعة في هذا الفندق لا تحدِّد
قيمة لهذا العنصر في الفندق الذي يقدّم مواقف مجانية للسيارات.
القيم الصالحة هي 0 (أو false ) و
1 (أو true ). القيمة التلقائية هي
false .
|
Transaction / PropertyDataSet / PackageData / PhotoURL | 0..1 | Object | (كما هو الحال مع <PhotoURL> في <RoomData> ،
ولكن للحزمة (مثل صور الوجبات).)
|
أمثلة
في ما يلي مثال أساسي على كيفية تحديد بيانات الغرف والبرامج الترفيهية في رسالة Transaction (Property Data). تُستخدَم السمة overlay
لضمان حذف جميع البيانات الحالية واستبدالها بالبيانات الواردة في هذه الرسالة في حال توفّر أي بيانات بشكل غير متوقّع:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="King" language="en"/>
</Name>
<Description>
<Text text="Room with a king bed" language="en"/>
</Description>
<Capacity>2</Capacity>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image.jpg</URL>
<Caption>
<Text text="Room with a king bed" language="en"/>
</Caption>
</PhotoURL>
</RoomData>
<RoomData>
<RoomID>RoomID_2</RoomID>
<Name>
<Text text="Double" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Standard" language="en"/>
</Name>
<Description>
<Text text="Standard rate" language="en"/>
</Description>
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>PackageID_2</PackageID>
<Name>
<Text text="Free Breakfast" language="en"/>
</Name>
<Description>
<Text text="Free breakfast rate" language="en"/>
</Description>
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
في ما يلي مثال على كيفية إضافة نوع غرفة وحزمة إلى
بيانات <Transaction>
الحالية:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="delta">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_3</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>PackageID_3</PackageID>
<Name>
<Text text="Non-Refundable" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="false"/>
</PackageData>
</PropertyDataSet>
</Transaction>
في ما يلي مثال على كيفية إزالة أنواع الغرف والرحلات
الحالية. في هذا السيناريو، إذا سبق أن تم إرسال الرسائل في "بيانات الغرف والحزم"
و "إضافة نوع غرفة" إلى Google، لن يعود نوعا الغرف King
وDouble
متوفّرين بعد أن تتلقّى Google الرسالة
المعروضة. يُرجى العِلم أنّ إزالة بيانات الحزمة تؤثّر في خطة الأسعار العامة
على النحو المحدّد في رسائل Transaction (Property Data) وOTA_HotelRateAmountNotifRQ
وOTA_HotelAvailNotifRQ
(من خلال الإشارة إلى قيمةPackageID
نفسها)، وبالتالي قد يكون من الضروري إجراء تعديلات مقابلة باستخدام أنواع الرسائل الأخرى
للإشارة إلى أنّه لم يعُد يتم تحديدPackageID_2
وPackageID_3
هنا.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-08-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
<Capacity>2</Capacity>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image.jpg</URL>
<Caption>
<Text text="Room with a queen bed" language="en"/>
</Caption>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Refundable" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
في ما يلي مثال على كيفية استخدام العنصر <AllowablePackageIDs>
لحصر خطط الأسعار المسموح بها لنوع غرفة معيّن. في هذا المثال،
لا يمكن الجمع بين نوع الغرفة Queen
(RoomID_2
) إلا مع الحزمة و
خطة الأسعار المحدّدة باسم PackageID_1.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-12-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="King" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<RoomData>
<RoomID>RoomID_2</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<AllowablePackageIDs>
<AllowablePackageID>PackageID_1</AllowablePackageID>
</AllowablePackageIDs>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Standard" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>PackageID_2</PackageID>
<Name>
<Text text="Free Breakfast" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
في ما يلي مثال على كيفية استخدام العناصر <Capacity>
و<AdultCapacity>
<ChildCapacity>
لفرض قيود على سعة الغرف.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-12-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="Double" language="en"/>
</Name>
<Capacity>4</Capacity>
<AdultCapacity>4</AdultCapacity>
<ChildCapacity>3</ChildCapacity>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
</PropertyDataSet>
</Transaction>
يمكن أن يستوعب نوع الغرفة المزدوجة (RoomID_1) ما يصل إلى 4 نزلاء كحد أقصى. بالإضافة إلى ذلك، يمكن أن يستوعب الفندق ما يصل إلى 4 بالغين و3 أطفال كحد أقصى. يجب استيفاء جميع متطلبات السعة الثلاثة لكي تكون هذه الغرفة قابلة للحجز. يمثّل هذا الإعداد غرفة عادية تحتوي على سريرَين يتسع كل منهما لفردَين. تكون سعة الإقامة للأطفال أقل بواحد من إجمالي السعة لأنّه يجب أن يكون هناك شخص بالغ واحد على الأقل في الغرفة.
أمثلة موسّعة تتضمّن <RoomFeatures>
والوجبات
لا تحتوي السمة 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>
يحدِّد المثال التالي البيانات الوصفية للغرفة والحزمة الخاصة بالوجبات والصور وأوقات تسجيل الوصول والمغادرة:
<?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>
الردود
البنية
تستخدم رسالة TransactionResponse (Property Data)
البنية التالية:
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="timestamp "
id="message_ID "
partner="partner_key ">
<!-- Either Success or Issues will be populated. -->
<Success/>
<Issues>
<Issue code="issue_code " status="issue_type ">issue_description </Issue>
</Issues>
</TransactionResponse>
العناصر والسمات
تحتوي رسالة TransactionResponse (Property Data)
على العناصر والسمات التالية:
العنصر / @السمة | عدد مرات الظهور | النوع | الوصف |
---|---|---|---|
TransactionResponse | 1 | Complex element | العنصر الجذر الذي يشير إلى نجاح رسالة طلب المعاملة أو المشاكل المتعلّقة بها |
TransactionResponse / @timestamp | 1 | DateTime | تاريخ ووقت إنشاء هذه الرسالة |
TransactionResponse / @id | 1 | string | المعرّف الفريد من رسالة المعاملة المرتبطة. |
TransactionResponse / @partner | 1 | string | حساب الشريك المرتبط بهذه الرسالة. |
TransactionResponse / Success | 0..1 | Success | يشير إلى أنّه تمت معالجة رسالة المعاملة بنجاح
بدون تحذيرات أو أخطاء أو حالات تعذُّر.
يجب استخدام إما |
TransactionResponse / Issues | 0..1 | Issues | حاوية لمشكلة واحدة أو أكثر حدثت أثناء معالجة
رسالة المعاملة
يجب استخدام إما |
TransactionResponse / Issues / Issue | 1..n | Issue | وصف التحذير أو الخطأ أو العُطل الذي حدث أثناء معالجة رسالة المعاملة يمكن العثور على تفاصيل عن هذه المشاكل في رسائل الخطأ المتعلّقة بحالة الخلاصة. |
TransactionResponse / Issues / Issue / @code | 1 | integer | معرّف المشكلة |
TransactionResponse / Issues / Issue / @status | 1 | enum | نوع المشكلة التي واجهتها القيم الصالحة هي |
أمثلة
في ما يلي ردّ على رسالة معاملة تمت معالجتها بنجاح.
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</TransactionResponse>
في ما يلي ردّ على رسالة معاملة لم تتم معالجتها بسبب أخطاء.
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</TransactionResponse>