درخواستها
نحو
پیام 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>
<!-- Add Loyalty point information -->
<MilesIncluded>
<LoyaltyCampaignID>campaign-ID</LoyaltyCampaignID>
<!-- (Optional) Use <NumberOfMiles> if the rate plan earns fixed loyalty rewards-->
<NumberOfMiles>integer</NumberOfMiles>
</MilesIncluded>
<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>
عناصر و ویژگیها
پیام تراکنش (دادههای ملک) دارای عناصر و ویژگیهای زیر است:
| عنصر / @Attribute | رخدادها | نوع | توضیحات |
|---|---|---|---|
| Transaction | 1 | Complex element | در پیادهسازی ARI، این عنصر ریشه پیامی است که انواع اتاقها و بستهها را برای یک ملک واحد تعریف میکند. |
| Transaction / @timestamp | 1 | DateTime | تاریخ و زمان ایجاد این پیام. |
| Transaction / @id | 1 | string | یک شناسه منحصر به فرد برای این پیام درخواست. این مقدار در پیام پاسخ برگردانده میشود. کاراکترهای مجاز عبارتند از az، AZ، 0-9، _ (زیرخط) و - (خط تیره). |
| Transaction / @partner | 1 | string | حساب کاربری همکار برای این پیام. این مقدار رشتهای، مقدار «کلید همکار» است که در صفحه تنظیمات حساب کاربری در مرکز هتل فهرست شده است. توجه: اگر یک backend دارید که برای چندین حساب کاربری فید ارائه میدهد، این مقدار باید با مقدار ویژگی |
| Transaction / PropertyDataSet | 1.. | PropertyDataSet | یک ظرف برای تعریف انواع اتاقها و بستهها برای یک ملک واحد. توصیه میشود که |
| Transaction / PropertyDataSet / @action | 0..1 | enum | نوع بهروزرسانی که باید در تعاریف نرخ اتاق اعمال شود. مقادیر معتبر عبارتند از:
این ویژگی اختیاری است و در صورت مشخص نکردن، به طور پیشفرض روی |
| Transaction / PropertyDataSet / Property | 1 | string | شناسه منحصر به فرد برای ملک. این مقدار باید با شناسه هتل مشخص شده با استفاده از <id> در عنصر <listing> در فید فهرست هتل مطابقت داشته باشد. شناسه هتل همچنین در مرکز هتل فهرست شده است. |
| 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 | این عنصر را زمانی فراهم کنید که این اتاق، اقامتگاهی در فضای باز است که دیوارهای ثابت، لولهکشی و سیستم کنترل دما ندارد. برای مثال، اتاقهای هتل اقامتگاه فضای باز نیستند، در حالی که اردوگاههایی که مهمانان در چادر اقامت میکنند و پارکهای RV که مهمانان RV خود را میآورند، اقامتگاه فضای باز هستند. |
| 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 | RoomID نوع اتاقی را مشخص میکند که میتواند با این طرح نرخ ترکیب شود. نوع اتاق در عنصر <RoomData> تعریف میشود. |
| Transaction / PropertyDataSet / PackageData / MilesIncluded | 0..1 | MilesIncluded | اطلاعات امتیاز وفاداری را بر اساس نحوه تعریف طرحها یا بستههای نرخ، به بستهها اضافه کنید. عنصر <MilesIncluded> را درون عنصر <PackageData> که طرح نرخ را تعریف میکند، مشخص کنید. <MilesIncluded> دارای عنصر فرزند زیر است:
|
| 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 | (در صورت true بودن available ، اکیداً توصیه میشود) آخرین زمان روز، به وقت محلی هتل، را مشخص میکند که درخواست بازپرداخت کامل پذیرفته میشود. این میتواند با refundable_until_days ترکیب شود تا مثلاً مشخص شود که "بازپرداخت تا ساعت ۴ بعد از ظهر، دو روز قبل از ورود، در دسترس است". اگر refundable_until_time تنظیم نشده باشد، مقدار پیشفرض روی نیمهشب است. |
| Transaction / PropertyDataSet / PackageData / BreakfastIncluded | 0..1 | boolean | مشخص میکند که آیا این نوع اتاق شامل صبحانه میشود یا خیر. مقادیر معتبر 0 (یا false ) و 1 (یا true ) هستند. ترجیح داده میشود که از |
| Transaction / PropertyDataSet / PackageData / CheckinTime | 0..1 | Time | زودترین زمان ممکن برای ورود به هتل نسبت به ساعت محلی هتل. زمان باید کمتر از ساعت ۲۴ باشد. |
| 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> ، اما برای بستهبندی (مثلاً عکسهای غذا).) |
مثالها
دادههای اتاق و بسته
در ادامه یک مثال ساده از نحوه تعریف دادههای اتاق و بسته یک ملک در یک پیام تراکنش (دادههای ملک) آمده است. ویژگی 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>
<MilesIncluded>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</MilesIncluded>
<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>
حذف انواع اتاق
در ادامه مثالی از نحوه حذف انواع اتاق و بستههای موجود آمده است. در این سناریو، اگر پیامهای موجود در «دادههای اتاق و بسته» و «افزودن یک نوع اتاق» قبلاً به گوگل ارسال شده باشند، انواع اتاقهای King و Double پس از دریافت پیام نشان داده شده توسط گوگل، دیگر وجود نخواهند داشت. توجه داشته باشید که حذف دادههای بسته بر طرح کلی نرخ تعریف شده در پیامهای 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) میتواند در مجموع تا ۴ مهمان داشته باشد. علاوه بر این، میتواند تا ۴ بزرگسال و تا ۳ کودک را در خود جای دهد. برای اینکه این اتاق قابل رزرو باشد، باید هر سه شرط ظرفیت رعایت شود. این پیکربندی نمایانگر یک اتاق معمولی با دو تخت است که هر کدام برای دو نفر مناسب است. ظرفیت کودک یکی کمتر از ظرفیت کل است زیرا اتاق باید حداقل یک بزرگسال داشته باشد.
مثالهای توسعهیافته با <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) دارای عناصر و ویژگیهای زیر است:
| عنصر / @Attribute | رخدادها | نوع | توضیحات |
|---|---|---|---|
| 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 | شرح هشدار، خطا یا خرابی که هنگام پردازش پیام تراکنش رخ داده است. جزئیات مربوط به این مشکلات را میتوانید در پیامهای خطای وضعیت فید (Feed Status Error Messages) بیابید. |
| 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>