Ringkasan
API ini memungkinkan Anda menentukan kemungkinan diskon. Dari promosi yang ditentukan, Google menerapkan promosi atau kumpulan promosi yang memenuhi syarat yang menghasilkan harga terendah. Jika Anda mencari API yang mendukung penyesuaian tarif arbitrer yang dapat menaikkan atau menurunkan harga saat kondisi terpenuhi, pertimbangkan Rate Modifications API kami. Perhatikan bahwa jika kedua API ada, perubahan tarif diterapkan sebelum promosi.
Permintaan
Sintaksis
Pesan Promotions menggunakan sintaksis berikut:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key"
id="message_ID"
timestamp="timestamp">
<HotelPromotions hotel_id="HotelID" action="[overlay]">
<Promotion id="PromotionID" action="[delete]">
<BookingDates>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
</BookingDates>
<BookingWindow min="integer_or_duration" max="integer_or_duration"/>
<Ceiling amount_per_night="float"/>
<Floor amount_per_night="float"/>
<CheckinDates>
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</CheckoutDates>
<!-- Specify only one of percentage, percentage_of_base, fixed_amount,
fixed_amount_per_night, fixed_price, or fixed_price_per_night;
applied_nights is only used with percentage, fixed_amount_per_night,
and fixed_price_per_night. -->
<Discount percentage="float" percentage_of_base="float"
fixed_amount="float" fixed_amount_per_night="float"
fixed_price="float" fixed_price_per_night="float"
applied_nights="integer_1_to_99" rank="integer_1_to_99">
<!-- FreeNights may not be used in conjunction with attributes on Discount -->
<FreeNights stay_nights="integer" discount_nights="integer"
discount_percentage="float" night_selection="[cheapest|last]"
repeats="boolean"/>
</Discount>
<!-- Exactly one of Discount or BestDailyDiscount must be specified.
Specify only one of percentage, fixed_amount, or fixed_price. -->
<BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
<Devices>
<Device type="[desktop|tablet|mobile]"/>
</Devices>
<InventoryCount min="integer" max="integer"/>
<LengthOfStay min="integer" max="integer"/>
<MembershipRateRule id="RateRuleID"/>
<MinimumAmount before_discount="integer"/>
<Occupancy min="integer" max="integer"/>
<RatePlans>
<RatePlan id="PackageID_1"/>
<RatePlan id="PackageID_2"/>
</RatePlans>
<RoomTypes>
<RoomType id="RoomID_1"/>
<RoomType id="RoomID_2"/>
</RoomTypes>
<Stacking type="[any|base|none|second]"/>
<StayDates application="[all|any|overlap]">
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</StayDates>
<UserCountries type="[include|exclude]">
<Country code="country_code"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
Elemen dan Atribut
Pesan Promosi memiliki elemen dan atribut berikut:
| Elemen / @Atribut | Kejadian | Jenis | Deskripsi |
|---|---|---|---|
| Promotions | 1 | Complex element | Elemen root pesan promosi. |
| Promotions / @partner | 1 | string | Akun partner untuk pesan ini. Nilai string ini adalah nilai "Kunci partner" yang tercantum di
halaman Setelan akun di Pusat Pengelolaan Hotel.
Jika Anda memiliki backend yang menyediakan feed untuk beberapa akun, nilai ini harus cocok dengan nilai atribut |
| Promotions / @id | 1 | string | ID unik untuk pesan permintaan ini. Nilai ini ditampilkan di pesan respons. Karakter yang diizinkan adalah a-z, A-Z, 0-9, _ (garis bawah), dan - (tanda hubung). |
| Promotions / @timestamp | 1 | DateTime | Tanggal dan waktu pembuatan pesan ini. |
| Promotions / HotelPromotions | 0..n | HotelPromotions | Promosi untuk suatu properti. Setiap promosi berlaku untuk satu properti. Kecuali jika |
| Promotions / HotelPromotions / @hotel_id | 1 | string | ID unik untuk properti. Nilai ini harus cocok dengan ID Hotel yang ditentukan menggunakan
<id> di elemen <listing> di Feed Daftar Hotel. ID Hotel juga tercantum di Pusat Pengelolaan Hotel. |
| Promotions / HotelPromotions / @action | 0..1 | enum | Jika ditentukan, nilainya harus
Jika tidak ditentukan, maka setiap promosi yang ditentukan di pesan saat ini akan:
|
| Promotions / HotelPromotions / Promotion | 0..99 | Promotion | Satu promosi untuk suatu properti. Perhatikan bahwa jika
Jika perlu menggunakan lebih dari 99 promosi, hubungi Manajer Akun Teknis (TAM) Anda. |
| Promotions / HotelPromotions / Promotion / @id | 1 | string | ID unik untuk promosi. Jumlah karakter maksimum yang diizinkan adalah 40. Karakter yang diizinkan adalah a-z, A-Z, 0-9, _ (garis bawah), - (tanda hubung), dan . (titik). (titik). |
| Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | Jika ditentukan, nilainya harus Jika |
| Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | Container untuk satu atau beberapa rentang yang menentukan kapan pemesanan harus dilakukan agar promosi dapat diterapkan. |
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | Rentang yang menentukan kapan pemesanan harus dilakukan agar promosi dapat diterapkan. |
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date atau DateTime | Tanggal atau tanggal dan waktu mulai (berdasarkan zona waktu properti), inklusif, dari rentang.
|
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date atau DateTime | Tanggal atau waktu tanggal akhir (berdasarkan zona waktu properti), inklusif, dari rentang.
|
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | Hari yang diizinkan dalam rentang tanggal. Jika tidak ditentukan, maka semua hari diizinkan dalam rentang tanggal. Setiap karakter dalam string menentukan hari. Misalnya, "MTWHF" menentukan bahwa hari kerja diizinkan dalam rentang tanggal. Karakter yang valid adalah:
Kombinasi karakter apa pun valid. |
| Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | Menentukan periode waktu saat pemesanan harus dilakukan sesuai dengan tanggal check in (berdasarkan zona waktu properti). Misalnya, periode pemesanan dapat ditetapkan ke minimal 7 hari, tetapi tidak lebih dari 180 hari, sebelum check in. |
| Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | Durasi minimum sebelum check in saat pemesanan harus dilakukan agar promosi dapat diterapkan. Jika tidak ditentukan, atau nilainya
adalah 0, maka tidak ada batas minimum.
Jenis nilai yang valid adalah:
|
| Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | Jumlah maksimum hari sebelum check in saat pemesanan harus dilakukan agar promosi dapat diterapkan. Jika tidak ditentukan, atau nilainya
adalah 0, tidak ada batas maksimum.
Jenis nilai yang valid adalah:
|
| Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
Menentukan batasan pada nilai maksimum tarif yang dapat ditetapkan setelah promosi diterapkan. Promosi harus selalu menentukan Jika penumpukan dikonfigurasi, beberapa promosi dengan
Contoh: Menetapkan harga untuk menginap 1 malam dengan
Berikut urutan penghitungannya:
Fakta bahwa 60 adalah batas keseluruhan yang lebih ketat tidak relevan karena hanya berlaku untuk promosinya sendiri, dan tidak boleh ada satu batas yang mencakup seluruh tumpukan promosi. |
| Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
Jumlah maksimum yang dapat ditetapkan untuk tarif per malam setelah diskon diterapkan. Jika elemen
|
| Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
Menentukan batasan pada nilai minimum tarif yang dapat ditetapkan setelah promosi diterapkan. Promosi harus selalu menentukan Logika Jika penumpukan dikonfigurasi, beberapa promosi dengan
Contoh: Menetapkan harga untuk menginap 1 malam dengan
Berikut urutan penghitungannya:
Fakta bahwa 90 adalah batas minimum keseluruhan yang lebih ketat tidak relevan karena hanya berlaku untuk promosinya sendiri, dan tidak ada batas minimum tunggal yang mencakup seluruh stack promosi. |
| Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
Jumlah minimum yang dapat ditetapkan untuk tarif per malam setelah diskon diterapkan. Jika elemen
|
| Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | Container untuk satu atau beberapa rentang tanggal yang menentukan kapan check in harus dilakukan agar promosi diterapkan. |
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | Rentang tanggal yang menentukan kapan check in harus dilakukan agar promosi diterapkan. Elemen ini tidak diperlukan jika Anda menghapus satu atau beberapa promosi. Format YearlessDate juga didukung.
|
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | Tanggal mulai (berdasarkan zona waktu properti), inklusif, dari rentang tanggal. Tanggal ini harus sebelum atau sama dengan tanggal end. Jika start tidak ditentukan, maka tanggal mulai dari rentang tanggal menjadi tidak terbatas. |
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | Tanggal akhir (berdasarkan zona waktu properti), inklusif, dari rentang tanggal. Tanggal ini harus sama dengan, atau setelah, tanggal start. Jika end tidak ditentukan, maka tanggal akhir dari rentang tanggal menjadi tidak terbatas. |
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | Hari yang diizinkan dalam rentang tanggal. Jika tidak ditentukan, maka semua hari diizinkan dalam rentang tanggal. Setiap karakter dalam string menentukan hari. Misalnya, "MTWHF" menentukan bahwa hari kerja diizinkan dalam rentang tanggal. Karakter yang valid adalah:
Kombinasi karakter apa pun valid. |
| Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | Container untuk satu atau beberapa rentang tanggal yang menentukan kapan check out harus dilakukan agar promosi dapat diterapkan. |
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | Rentang tanggal yang menentukan kapan check out harus dilakukan agar promosi diterapkan. Elemen ini tidak diperlukan jika Anda menghapus satu atau beberapa promosi. Format YearlessDate juga didukung.
|
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | Tanggal mulai (berdasarkan zona waktu properti), inklusif, dari rentang tanggal. Tanggal ini harus sebelum atau sama dengan tanggal end. Jika start tidak ditentukan, maka tanggal mulai dari rentang tanggal menjadi tidak terbatas. |
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | Tanggal akhir (berdasarkan zona waktu properti), inklusif, dari rentang tanggal. Tanggal ini harus sama dengan, atau setelah, tanggal start. Jika end tidak ditentukan, maka tanggal akhir dari rentang tanggal menjadi tidak terbatas. |
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | Hari yang diizinkan dalam rentang tanggal. Jika tidak ditentukan, maka semua hari diizinkan dalam rentang tanggal. Setiap karakter dalam string menentukan hari. Misalnya, "MTWHF" menentukan bahwa hari kerja diizinkan dalam rentang tanggal. Karakter yang valid adalah:
Kombinasi karakter apa pun valid. |
| Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | Container untuk mencantumkan perangkat pengguna yang memenuhi syarat untuk promosi. Jika ditentukan, hanya pengguna yang memenuhi syarat di perangkat tercantum yang ditawari tarif diskon. Jika tidak ditentukan, maka pengguna yang memenuhi syarat di perangkat apa pun akan ditawari tarif diskon. |
| Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | Menentukan satu jenis perangkat pengguna yang memenuhi syarat untuk promosi. |
| Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | Jenis perangkat. Nilainya harus desktop, tablet, atau mobile. |
| Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | Tepat satu dari Menentukan diskon yang akan diterapkan untuk promosi ini. |
| Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | Tepat salah satu dari Nilai desimal dari 0-100 yang menentukan persentase diskon.
Nilai tersebut diterapkan ke Contoh:
|
| Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float | Tepat salah satu dari Nilai desimal dari 0-100 yang menentukan persentase diskon
dasar. Serupa dengan Tidak seperti Contoh:
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | Tepat salah satu dari Jumlah tetap yang akan dikurangi dari total tarif per malam Contoh:
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | Tepat salah satu dari Diskon tetap yang berlaku untuk masing-masing tarif per malam Contoh:
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | Tepat salah satu dari Jika tarif per malam Jika Contoh:
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | Tepat salah satu dari Jika tarif per malam Jika Jika Contoh:
|
| Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | Ini hanya boleh digunakan dengan
Jumlah malam saat diskon diterapkan, dimulai dari yang paling murah. Harus berupa bilangan bulat dari 1 hingga 99. Jika tidak ditentukan, maka diskon berlaku untuk semua malam. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | Menentukan diskon pada malam tertentu selama menginap jika panjang masa inap minimum terpenuhi. Atribut pada elemen Discount induk
tidak diizinkan jika elemen ini digunakan. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | Jumlah malam yang diperlukan agar diskon diterapkan. Setiap diskon diterapkan ke segmen malam menginap yang terpisah. Misalnya, untuk menginap 10 malam dengan |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | Jumlah malam dengan diskon dalam setiap segmen malam menginap. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | Diskon yang diterapkan pada malam diskon. Jika nilai ini adalah 50, setiap malam yang dipilih akan mendapatkan diskon 50%. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | Harus berupa cheapest atau last. Jika
last, maka malam di akhir segmen malam menginap
akan didiskon. Jika cheapest, maka malam termurah dalam segmen malam menginap akan didiskon. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | Apakah diskon dapat diterapkan ke beberapa segmen malam menginap. Jika Misalnya, jika |
| Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | Memberi promosi ini peringkat dan mengikutsertakannya dalam pemilihan berperingkat, dengan hanya promosi dengan peringkat terendah yang dipilih untuk diterapkan. Nilai harus antara 1 dan 99, inklusif. Jika beberapa promosi memiliki peringkat yang sama, salah satunya akan dipilih dan diterapkan secara acak. |
| Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | Tepat satu dari Menentukan
diskon harian yang dapat diterapkan untuk satu malam menginap. Hal ini berbeda dengan Setiap properti dapat memiliki satu grup promosi yang dianggap "harian terbaik". Artinya, untuk setiap malam menginap, promosi "harian terbaik" tunggal yang memenuhi syarat dan memberikan diskon terbesar untuk malam tersebut akan dipilih dan dapat diterapkan.
|
| Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | Salah satu dari Nilai desimal dari 0-100 yang menentukan persentase diskon.
Nilai tersebut diterapkan ke Contoh:
|
| Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | Salah satu dari Jumlah tetap yang akan dikurangi dari satu tarif per malam Contoh:
|
| Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | Salah satu dari Jika tarif per malam Contoh:
|
| Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | Menentukan batasan jumlah kamar yang harus tersedia agar promosi ini dapat diterapkan. Diskon hanya diterapkan untuk malam yang memenuhi batasan. Tidak diizinkan dengan diskon fixed_amount. Perhatikan bahwa jumlah kamar yang tersedia ditentukan dengan OTA_HotelInvCountNotifRQ (InvCount) atau OTA_HotelAvailNotifRQ (BookingLimit). |
| Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | Jumlah minimum kamar yang harus tersedia agar promosi dapat diterapkan ke tarif per malam. Jika tidak ditentukan, maka tidak ada batas minimum. |
| Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | Jumlah maksimum kamar yang harus tersedia agar promosi dapat diterapkan pada tarif per malam. Jika tidak ditentukan, maka tidak ada batas maksimum. |
| Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | Menentukan batas lama menginap saat promosi ini dapat diterapkan. Promosi tidak berlaku jika lama menginap di luar batas minimum dan maksimum. |
| Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | Jumlah malam minimum menginap yang diizinkan agar promosi dapat diterapkan. Jika tidak ditentukan, maka tidak ada batas minimum. |
| Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | Jumlah malam maksimum menginap yang diizinkan agar promosi dapat diterapkan. Jika tidak ditentukan, maka tidak ada batas maksimum. |
| Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
Penampung untuk aturan tarif keanggotaan yang memicu perlakuan UI tertentu untuk diskon terkait. Elemen ini tidak boleh ditentukan kecuali
|
| Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string |
ID aturan tarif yang terkait dengan program keanggotaan. |
| Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | Menentukan total minimum tarif kamar harian (menggunakan AmountBeforeTax atau AmountAfterTax yang lebih besar) yang harus dilampaui agar promosi dapat diterapkan. |
| Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | Nilai yang harus dilampaui agar promosi dapat diterapkan. |
| Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | Menentukan batasan hunian yang berlaku untuk promosi ini. Promosi tidak berlaku jika hunian berada di luar batas minimum dan maksimum.
Promosi berlaku untuk tarif rencana perjalanan. Diskon maksimum per penghuni tidak dapat ditetapkan. |
| Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | Hunian yang ditentukan pengguna harus minimal bernilai ini agar diskon dapat diterapkan. |
| Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | Hunian yang ditentukan pengguna harus maksimal nilai ini agar diskon dapat diterapkan. |
| Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | Container untuk daftar paket tarif yang menerapkan promosi.
Jika <RatePlans> tidak ditentukan, maka promosi akan berlaku untuk semua paket tarif. |
| Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | Menentukan paket tarif. Paket tarif ditentukan oleh kombinasi paket, tarif, dan ketersediaan, seperti yang didefinisikan di pesan Transaksi (Data Properti), OTA_HotelRateAmountNotifRQ, dan OTA_HotelAvailNotifRQ, serta seperti yang diidentifikasi oleh PackageID. |
| Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | ID unik untuk paket tarif. Nilai ini dipetakan ke nilai PackageID di <PackageData> dalam pesan Transaksi (Data Properti), dan di atribut RatePlanCode di <StatusApplicationControl> dalam pesan <OTA_HotelRateAmountNotifRQ> serta <OTA_HotelAvailNotifRQ>.
Jumlah karakter maksimum yang diizinkan adalah 50. |
| Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | Container untuk daftar jenis kamar yang menerapkan promosi.
Promosi ini berlaku untuk setiap <RoomType> yang ditentukan. Jika <RoomTypes> tidak ditentukan, maka promosi akan berlaku untuk semua kamar. |
| Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | Menentukan jenis kamar. Jenis kamar ditentukan di elemen <RoomData> dalam pesan Transaksi (Data Properti) dan direferensikan menggunakan nilai <RoomID>-nya. (Nilai <RoomID>-nya juga direferensikan oleh atribut InvTypeCode di pesan OTA_HotelRateAmountNotifRQ.) |
| Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | ID unik untuk inventaris (jenis kamar). Nilai ini dipetakan ke <RoomID> di pesan Transaksi (Data Properti).
Jumlah karakter maksimum yang diizinkan adalah 50. |
| Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | Menentukan cara promosi dapat digabungkan. Jika tidak ditentukan, maka "type" diasumsikan menjadi base. |
| Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | Beberapa promosi dapat diterapkan ke satu tarif bergantung pada setelan ini:
Dari kombinasi yang diizinkan, kumpulan promosi yang menghasilkan diskon terbesar diterapkan ke tarif. |
| Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | Container untuk satu atau beberapa rentang tanggal yang menentukan cara promosi diterapkan, seperti untuk mengakomodasi diskon musiman. |
| Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | Menjelaskan cara promosi diterapkan. Nilai yang valid adalah:
Atribut ini harus selalu ditentukan.
|
| Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | Rentang tanggal yang menentukan tanggal promosi diterapkan. Format YearlessDate juga didukung.
Jika Anda ingin menetapkan rentang |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | Tanggal mulai (berdasarkan zona waktu properti), inklusif, dari rentang tanggal. Tanggal ini harus sebelum atau sama dengan tanggal end. Jika start tidak ditentukan, maka tanggal mulai dari rentang tanggal menjadi tidak terbatas.
Anda harus menentukan nilai |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | Tanggal akhir (berdasarkan zona waktu properti), inklusif, dari rentang tanggal. Tanggal ini harus sama dengan, atau setelah, tanggal start. Jika end tidak ditentukan, maka rentang tanggal menjadi tidak terbatas sejak tanggal start.
Anda harus menentukan nilai |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | Hari yang diizinkan dalam rentang tanggal. Jika tidak ditentukan, maka semua hari diizinkan dalam rentang tanggal. Setiap karakter dalam string menentukan hari. Misalnya, "MTWHF" menentukan bahwa hari kerja diizinkan dalam rentang tanggal. Karakter yang valid adalah:
Kombinasi karakter apa pun valid. |
| Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | Container untuk mencantumkan lokasi pengguna (negara) yang memenuhi syarat untuk promosi. Jika ditentukan, hanya pengguna yang memenuhi syarat di negara tercantum yang ditawari tarif diskon. Jika tidak ditentukan, maka pengguna yang memenuhi syarat di semua negara akan ditawari tarif diskon. |
| Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | Jenis spesifikasi UserCountries.
Nilai yang valid adalah Jika UserCountries Jika UserCountries Jika |
| Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | Menentukan satu negara tempat pengguna memenuhi syarat untuk promosi. |
| Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | Kode negara CLDR, seperti DE atau FR. Perhatikan bahwa, untuk beberapa negara, kode negara CLDR tidak sama dengan kode negara ISO 2 huruf. Selain itu, kode wilayah CLDR juga tidak didukung. |
Contoh
Ada batas 500 promosi per properti. Lihat contoh "Menghapus satu promosi" untuk menghapus promosi dari properti.
Pesan dasar
Contoh berikut menunjukkan pesan Promotions dasar:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<BookingWindow min="7" max="330"/>
<CheckinDates>
<DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/>
</CheckoutDates>
<Devices>
<Device type="mobile"/>
<Device type="tablet"/>
</Devices>
<Discount percentage="20" applied_nights="2"/>
<LengthOfStay min="2" max="14"/>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<Stacking type="base"/>
<UserCountries>
<Country code="US"/>
<Country code="GB"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
Kondisi inventaris
Contoh berikut menunjukkan cara membuat diskon jika ada inventaris berlebih yang dekat dengan tanggal kedatangan:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow max="7"/>
<Discount percentage="10"/>
<InventoryCount min="3"/>
</Promotion>
</HotelPromotions>
</Promotions>
Menghapus satu promosi
Contoh berikut menunjukkan cara menghapus satu promosi untuk suatu properti:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1" action="delete"/>
</HotelPromotions>
</Promotions>
Menghapus semua promosi
Contoh berikut menunjukkan cara menghapus semua promosi untuk suatu properti:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay"/>
</Promotions>
Menempatkan semua promosi
Contoh berikut menunjukkan cara menempatkan <HotelPromotions> untuk suatu properti dengan satu atau beberapa promosi baru. Saat action="overlay", semua promosi yang disimpan akan dihapus sebelum menyimpan promosi yang ditentukan di pesan saat ini:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<Discount percentage="10"/>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<Stacking type="base"/>
</Promotion>
</HotelPromotions>
</Promotions>
3 Jenis Penumpukan yang Berbeda
Contoh berikut menunjukkan kasus saat tiga promosi berbeda akan diterapkan (base, second, any). Perhatikan bahwa promosi none tidak akan diterapkan karena promosi lainnya memberikan diskon yang lebih baik. Jika harga aslinya $100, harga diskonnya adalah $72,90.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="second"/>
</Promotion>
<Promotion id="3">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="4">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
Tidak Ada Jenis Promosi Gabungan
Contoh berikut menunjukkan kasus saat promosi none digunakan karena kombinasi promosi lainnya memberikan diskon yang lebih kecil. Jika harga
aslinya adalah Rp1.000.000, harga diskonnya adalah Rp750.000.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="3">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
Batas Durasi Periode Pemesanan
Contoh berikut menunjukkan kasus saat elemen BookingWindow
digunakan dengan batas awal dan akhirnya ditentukan sebagai jenis
Durasi ISO 8601. Batasan periode pemesanan ini mengharuskan pemesanan dilakukan pada atau sebelum pukul 18.00 sehari sebelum kedatangan, dan pada atau setelah pukul 12.00 pada hari ke-2 sebelum kedatangan.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow min="P1DT6H" max="P2DT12H"/>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Batas DateTime Tanggal Pemesanan
Contoh berikut menunjukkan kasus saat elemen BookingDates digunakan dengan atribut start dan end sebagai jenis DateTime. Pembatasan tanggal pemesanan ini mengharuskan pemesanan dilakukan
antara pukul 06.30 pada 01-07-2020 dan pukul 18.45 pada 02-07-2020.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01T06:30:00" end="2020-07-02T18:45:00"/>
</BookingDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Rentang tanggal tanpa tahun
Contoh berikut menunjukkan kasus saat elemen CheckInDates
berisi DateRanges yang memiliki kolom start dan
end tanpa tahun. Dalam contoh ini, promosi berlaku untuk tanggal check-in antara 29/12 dan 2/1, terlepas dari tahunnya. Rentang tanggal tanpa tahun yang melewati batas tahun baru tidak valid, sehingga DateRange dinyatakan sebagai dua rentang tanggal yang berdekatan.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<CheckInDates>
<DateRange start="12-29" end="12-31"/>
<DateRange start="01-01" end="01-02"/>
</CheckInDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Diskon FreeNights
Contoh berikut memberikan diskon 50% untuk dua malam dari setiap empat malam menginap untuk rentang tanggal pemesanan yang ditentukan. Untuk itinerari sepuluh malam, total empat malam akan didiskon 50%.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2022-01-01" end="2022-05-31"/>
</BookingDates>
<Discount>
<FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
Contoh berikutnya memberikan diskon 50% untuk satu malam setiap tiga malam menginap untuk rentang tanggal menginap yang ditentukan. Hanya malam menginap yang tumpang-tindih yang dihitung untuk memenuhi syarat mendapatkan diskon. Untuk rencana perjalanan berikut dengan check-in pada 01-01-2022 dan check-out pada 07-01-2022, malam menginap yang memenuhi syarat dan diskon diterapkan sebagai berikut.
- 2022-01-01 (menginap)
- 2022-01-02 (masa inap)
- 2022-01-03
- 04-01-2022 (diskon)
- 2022-01-05 (menginap)
- 2022-01-06 (tetap)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<StayDates application="overlap">
<DateRange start="2022-01-01" end="2022-01-02"/>
<DateRange start="2022-01-04" end="2022-01-06"/>
</StayDates>
<Discount>
<FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
Pilihan Berperingkat
Contoh berikut menawarkan dua diskon, satu untuk diskon 20% dan satu lagi untuk diskon 15%. Selama evaluasi, hanya diskon 15% yang diterapkan karena memiliki peringkat yang lebih rendah.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="15" rank="25"/>
</Promotion>
<Promotion id="2">
<Discount percentage="20" rank="50"/>
</Promotion>
</HotelPromotions>
</Promotions>
BestDailyDiscount
Contoh berikut memberikan diskon untuk menginap dua malam dengan menerapkan
BestDailyDiscount yang ditumpuk dengan Discount.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="HotelID" action="overlay">
<Promotion id="general">
<BestDailyDiscount fixed_amount="20"/>
</Promotion>
<Promotion id="may">
<BestDailyDiscount fixed_amount="50"/>
<StayDates application="overlap">
<DateRange start="2023-05-01" end="2023-05-31"/>
</StayDates>
</Promotion>
<Promotion id="fiesta">
<Discount fixed_amount_per_night="5"/>
<Stacking type="any"/>
</Promotion>
</HotelPromotions>
</Promotions>
Pertimbangkan masa inap dua malam dari 30 April 2023 hingga 2 Mei 2023 Untuk perhitungan, kombinasi diskon harian terbaik yang menghasilkan diskon terbesar akan ditemukan terlebih dahulu.
Untuk malam pertama, promosi "umum" adalah satu-satunya jumlah yang memenuhi syarat dengan diskon tetap sebesar 20.
Untuk malam kedua, promosi "mungkin" menawarkan diskon yang lebih besar daripada diskon "umum". Jadi, jika "dapat" dipilih, jumlah diskon tetapnya adalah 50.
Kemudian, untuk menginap, promosi "fiesta" memberikan diskon menjadi 5 per malam, atau
total 10. Dapat digabungkan dengan kombinasi diskon harian terbaik karena "fiesta" memiliki jenis penumpukan yang ditetapkan ke any. Jika disetel ke base, hanya kombinasi diskon harian terbaik atau diskon "fiesta" yang diterapkan. Lihat deskripsi
Stacking untuk mengetahui informasi selengkapnya.
`Secara keseluruhan, harga menginap mendapatkan diskon tetap sebesar 20 + 50 + 10 = 80.
Respons
Sintaksis
Pesan PromotionsResponse menggunakan sintaksis berikut:
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues are populated. -->
<Success/>
<Issues>
<Issue code="issue_code"
status="issue_type">
issue_description
</Issue>
</Issues>
</PromotionsResponse>
Elemen dan Atribut
Pesan PromotionsResponse memiliki elemen dan atribut berikut:
| Elemen / @Atribut | Kejadian | Jenis | Deskripsi |
|---|---|---|---|
| PromotionsResponse | 1 | Complex element | Elemen root yang menunjukkan keberhasilan atau masalah untuk pesan permintaan Promosi yang diterima. |
| PromotionsResponse / @timestamp | 1 | DateTime | Tanggal dan waktu pembuatan pesan ini. |
| PromotionsResponse / @id | 1 | string | ID unik dari pesan Promosi terkait. |
| PromotionsResponse / @partner | 1 | string | Akun partner untuk pesan ini. |
| PromotionsResponse / Success | 0..1 | Success | Menunjukkan bahwa pesan Promosi berhasil diproses tanpa peringatan, error, atau kegagalan.
|
| PromotionsResponse / Issues | 0..1 | Issues | Container untuk satu atau beberapa masalah yang dialami saat memproses pesan Promosi.
|
| PromotionsResponse / Issues / Issue | 1..n | Issue | Deskripsi dari peringatan, error, atau kegagalan yang dialami saat memproses pesan Promosi. Detail tentang masalah ini dapat ditemukan di Pesan Error Status Feed. |
| PromotionsResponse / Issues / Issue / @code | 1 | integer | ID untuk masalah. |
| PromotionsResponse / Issues / Issue / @status | 1 | enum | Jenis masalah yang dialami. Nilai yang valid adalah |
Contoh
Berhasil
Berikut adalah respons terhadap pesan Promosi yang berhasil diproses.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
Masalah
Berikut adalah respons terhadap pesan Promosi yang tidak diproses karena error.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</PromotionsResponse>