จัดการแคมเปญ Hotel Ad
หมายเหตุ
รุ่นเบต้าของโฆษณาราคาโรงแรมนี้มีให้เลือกเฉพาะผู้เข้าร่วมเท่านั้น สําหรับข้อมูลเกี่ยวกับการเข้าร่วมในโปรแกรมรุ่นเบต้า โปรดติดต่อผู้จัดการบัญชีของคุณหรือลงทะเบียนที่นี่
API และเอกสารอาจเปลี่ยนแปลงได้
API ของโรงแรมช่วยให้คุณจัดการแคมเปญและการเสนอราคาของโรงแรมได้ บัญชีย่อยให้องค์กรเชิงตรรกะระดับสูงสุดของโฆษณาราคาโรงแรมของคุณ คุณสามารถนึกภาพเป็นแคมเปญที่พัก (เดิมคือแคมเปญโรงแรม) คุณอาจมีจํานวนบัญชีย่อยที่ใช้งานอยู่ได้สูงสุด 75 บัญชี
บัญชีย่อยจะระบุงบประมาณรายวัน ของแคมเปญ จํานวนการเสนอราคาสูงสุดที่อนุญาต และตัวคูณการเสนอราคาและราคาเสนอเริ่มต้นสําหรับโฆษณาที่ไม่ได้ระบุราคาเสนอหรือตัวคูณ
หมายเหตุ
แคมเปญโฆษณาโรงแรมที่อ้างถึงที่นี่ไม่มีความสัมพันธ์กับแคมเปญใน Microsoft Advertising
ถ้าคุณยังไม่ได้ดําเนินการ ดังกล่าว ทําความคุ้นเคยกับหัวข้อต่อไปนี้:
สําหรับจุดสิ้นสุด API ของโรงแรม ดูจุดสิ้นสุด
สําหรับข้อมูลเกี่ยวกับการรายงาน โปรดดู API การรายงานโฆษณาราคาโรงแรม
การทํางานกับบัญชีย่อย
บัญชีย่อยเป็นองค์กรระดับสูงสุดของโฆษณาราคาโรงแรม บริการจะสร้างบัญชีย่อยเริ่มต้นสําหรับคุณเมื่อคุณลงทะเบียนโฆษณาราคาโรงแรม API ช่วยให้คุณสามารถเพิ่มบัญชีย่อย บัญชีย่อยรายการ รับบัญชีย่อยเฉพาะ และอัปเดตบัญชีย่อย
ต่อไปนี้คือเทมเพลต REST ที่คุณใช้ในการจัดการบัญชีย่อย
/SubAccounts
— รับ | โพสต์/SubAccounts('{subAccountId}')
— รับ | โปรแกรมแก้ไข
สําหรับตัวอย่างที่ได้รับและอัปเดตบัญชีย่อย ให้ดูตัวอย่างโค้ด (ใช้ตัวเลือกภาษาในบานหน้าต่างด้านขวาเพื่อดูตัวอย่างในภาษาต่างๆ)
บัญชีย่อยของรายการ
เมื่อต้องการรับรายการของบัญชีย่อย ให้ส่งคําขอต่อไปนี้
GET https://<host>/Travel/V1/Customers(<customerid>)/Accounts(<accountid>)/SubAccounts HTTP/1.1
Authorization: Bearer <oauthaccesstoken>
Accept: application/json
Host: <host>
การตอบสนองมีวัตถุ CollectionResponse อาร์เรย์value
ประกอบด้วยรายการของวัตถุ SubAccount
HTTP/1.1 200 OK
x-ms-requestid: a21451ae-f86b-4a19-a00e-9265b59a99ec
x-ms-trackingid: 7cd2710c-821a-48e8-99af-efdc05aebe86
{
"@odata.count":1,
"value":[
{
"Id":"1902000002",
"Name":"DefaultSubAccount1",
"Status":"Active",
"Bid":{
"@odata.type":"#Model.FixedBid",
"Amount":2.75
},
"BidMultipliers":[],
"DailyBudget":{
"Amount":125.25
},
"MaximumBid":{
"Amount":10.0
}
}
]
}
การอัปเดตบัญชีย่อย
บัญชีย่อยจะระบุตัวคูณการเสนอราคาและราคาเสนอเริ่มต้นที่จะใช้สําหรับกลุ่มโรงแรมและโรงแรมที่ไม่ได้ระบุการเสนอราคาหรือตัวคูณ บัญชีย่อยยังระบุงบประมาณที่กระจายอยู่ตลอดทั้งวัน และราคาเสนอสูงสุดที่คุณต้องการให้ราคาเสนอทั้งหมดไม่เกิน
สําหรับรายละเอียดเกี่ยวกับช่วงการเสนอราคาและงบประมาณที่ถูกต้องสําหรับตลาดของคุณ ดูตารางค่าสกุลเงินในหัวข้อสกุลเงิน
เมื่อต้องการหยุดพักโรงแรมทั้งหมดในบัญชีย่อย ให้ตั้งค่าคุณสมบัติของบัญชี Bid
ย่อยเป็นวัตถุ PercentageBid และจํานวนการเสนอราคาเป็นศูนย์ (0.0)
ถ้าบัญชีย่อยระบุตัวคูณการเสนอราคาและคุณต้องการลบ ออก ให้ตั้งค่า BidMultipliers
เป็นอาร์เรย์ว่าง (ตัวอย่างเช่น "BidMultipliers":[])
เมื่อต้องการอัปเดตบัญชีย่อย ให้ส่งคําขอ PATCH เนื้อความของการร้องขอเป็นวัตถุ SubAccount รวมเฉพาะคุณสมบัติที่คุณต้องการอัปเดต ตัวอย่างนี้แสดงการอัพเดตตัวคูณ
PATCH https://<host>/Travel/V1/Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>') HTTP/1.1
Authorization: Bearer <oauthaccesstoken>
Content-Type: application/json
Host: <host>
Content-Length: 682
{
"Id":"1902000002",
"BidMultipliers":[
{
"Countries":["US"],
"Factor":1.1,
"@odata.type":"#Model.UserCountryMultiplier"
},
{
"Sites":["LocalUniversal","MapResults"],
"Factor":0.85,
"@odata.type":"#Model.SiteMultiplier"
},
{
"DeviceTypes":["Desktop"],
"Factor":0.65,
"@odata.type":"#Model.DeviceMultiplier"
},
{
"MinimumNumberOfNights":5,
"Factor":1.3,
"@odata.type":"#Model.LengthOfStayMultiplier"
},
{
"DaysOfWeek":["Thursday","Friday","Saturday"],
"Factor":1.2,
"@odata.type":"#Model.CheckinDayOfWeekMultiplier"
},
{
"DaysOfWeek":["Sunday","Monday"],
"Factor":0.9,
"@odata.type":"#Model.CheckinDayOfWeekMultiplier"
},
{
"MinimumNumberOfDays":3,
"Factor":1.3,
"@odata.type":"#Model.AdvanceBookingWindowMultiplier"
}
]
}
การรับบัญชีย่อย
หากต้องการรับบัญชีย่อยเฉพาะ ให้ส่งคําขอต่อไปนี้ ID ของบัญชีย่อยต้องถูกตัดคําในเครื่องหมายอัญประกาศเดี่ยวตามที่แสดง
GET https://<host>/Travel/V1/Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>') HTTP/1.1
Authorization: Bearer <oauthaccesstoken>
Accept: application/json
Host: <host>
การตอบสนองมีวัตถุ SubAccount
HTTP/1.1 200 OK
x-ms-requestid: 58d37dd1-78ae-4ced-91e4-7f57e647ddee
x-ms-trackingid: 5345bf4f-e64a-47a6-8d1e-43cc0231dc1b
{
"Id":"1902000002",
"Name":"DefaultSubAccount1",
"Status":"Active",
"Bid":{
"@odata.type":"#Model.FixedBid",
"Amount":2.75
},
"BidMultipliers":[
{
"@odata.type":"#Model.DeviceMultiplier",
"Factor":0.65,
"DeviceTypes":["Desktop"]
},
{
"@odata.type":"#Model.LengthOfStayMultiplier",
"Factor":1.3,
"MinimumNumberOfNights":5
},
{
"@odata.type":"#Model.UserCountryMultiplier",
"Factor":1.1,
"Countries":["US"]
},
{
"@odata.type":"#Model.AdvanceBookingWindowMultiplier",
"Factor":1.3,
"MinimumNumberOfDays":3
},
{
"@odata.type":"#Model.CheckinDayOfWeekMultiplier",
"Factor":0.9,
"DaysOfWeek":["Monday","Sunday"]
},
{
"@odata.type":"#Model.CheckinDayOfWeekMultiplier",
"Factor":1.2,
"DaysOfWeek":["Thursday","Friday","Saturday"]
},
{
"@odata.type":"#Model.SiteMultiplier",
"Factor":0.85,
"Sites":["MapResults","LocalUniversal"]
}
],
"DailyBudget":{
"Amount":125.25
},
"MaximumBid":{
"Amount":10.0
},
"HotelAssociationCount":39540
}
การทํางานกับกลุ่มโรงแรม
กลุ่มโรงแรมเป็นองค์กรระดับที่สองที่คุณใช้เพื่อจัดกลุ่มโรงแรม เมื่อคุณสร้างบัญชีย่อย บริการจะสร้างกลุ่มโรงแรมเริ่มต้นภายใต้บัญชีย่อยที่ชื่อว่า Ungrouped API ช่วยให้คุณสามารถแสดงรายการ รับ อัปเดต และเพิ่มกลุ่มโรงแรมได้
ต่อไปนี้คือเทมเพลต REST ที่คุณใช้ในการจัดการกลุ่มโรงแรม
/SubAccounts('{subAccountId}')/HotelGroups
— รับ | โพสต์/SubAccounts('{subAccountId}')/HotelGroups('{hotelGroupId}')
— รับ | การลบโปรแกรมแก้ไข |
ตัวอย่างเช่น ที่รับ เพิ่ม และอัปเดตกลุ่มโรงแรม ดูตัวอย่างรหัส (ใช้ตัวเลือกภาษาในบานหน้าต่างด้านขวาเพื่อดูตัวอย่างในภาษาต่างๆ)
กําลังแสดงรายการกลุ่มโรงแรม
ตามค่าเริ่มต้น เมื่อคุณร้องขอรายการกลุ่มโรงแรมภายใต้บัญชีย่อย API จะส่งกลับสูงสุด 1,000 กลุ่ม เมื่อต้องการกําหนดจํานวนกลุ่มทั้งหมดในบัญชีย่อย ให้ใช้พารามิเตอร์คิวรี$count หากต้องการระบุจํานวนกลุ่มที่จะส่งกลับ ให้ใช้พารามิเตอร์คิวรี$top จํานวนกลุ่มสูงสุดที่คุณสามารถร้องขอได้ในการโทรครั้งเดียวคือ 5,000 ถ้าบัญชีย่อยประกอบด้วยกลุ่มมากกว่า 5,000 กลุ่ม ให้ใช้$top และ $skip พารามิเตอร์คิวรีไปยังหน้าผ่านกลุ่มทั้งหมด
หากต้องการรับรายการกลุ่มโรงแรม 1,000 กลุ่มแรกภายใต้บัญชีย่อย ให้ส่งคําขอต่อไปนี้
GET https://<host>/Travel/V1/Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>')/HotelGroups HTTP/1.1
Authorization: Bearer <oauthaccesstoken>
Accept: application/json
Host: <host>
การตอบสนองมีวัตถุ CollectionResponse อาร์เรย์value
ประกอบด้วยรายการของออบเจ็กต์ HotelGroup ตัวอย่างนี้แสดงค่าเริ่มต้น กลุ่มที่ยังไม่ได้จัดกลุ่ม
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
x-ms-requestid: f526c0e6-f7d8-48c7-9270-8fb0a0465153
x-ms-trackingid: 21fafae0-4053-46e0-8271-87bc5fce6312
{
"@odata.count":6,
"value":[
{
"Id":"55113020342274",
"Name":"UnGrouped",
"Status":"Active",
"Bid":{
"@odata.type":"#Model.FixedBid",
"Amount":3.0
},
"BidSource":"SubAccount",
"BidMultiplierSource":null,
"BidMultipliers":[]
},
. . .
{
"Id":"55113020351605",
"Name":"test-2",
"Status":"Active",
"Bid":{
"@odata.type":"#Model.FixedBid",
"Amount":1.5
},
"BidSource":"HotelGroup",
"BidMultiplierSource":null,
"BidMultipliers":[]
}
]
}
การเพิ่มกลุ่มโรงแรม
คุณจะสร้างกลุ่มโรงแรมใหม่ถ้าคุณต้องการสร้างการจัดกลุ่มโรงแรมเชิงตรรกะใหม่ เมื่อต้องการระบุกลุ่มโรงแรม ให้ใช้วัตถุ HotelGroup เขตข้อมูลเดียวที่ต้องการคือName
ใช้ชื่อที่เป็นคําอธิบายที่บ่งชี้การจัดกลุ่ม เขตข้อมูล Bid
และ BidMultipliers
ไม่จําเป็นต้องระบุ ถ้าคุณไม่ได้ระบุกลุ่ม จะใช้ตัวคูณการเสนอราคาและราคาเสนอจากบัญชีย่อย ระบุค่าเหล่านั้นถ้าคุณต้องการแทนที่ค่าของบัญชีย่อย คุณสามารถระบุการเสนอราคา ตัวคูณ หรือทั้งสองอย่างได้
สําหรับรายละเอียดเกี่ยวกับช่วงการเสนอราคาที่ถูกต้องสําหรับตลาดของคุณ ดูตารางค่าสกุลเงินในหัวข้อสกุลเงิน
ตัวอย่างต่อไปนี้สร้างกลุ่มโรงแรมที่สืบทอดตัวคูณการเสนอราคาและราคาเสนอจากบัญชีย่อย
POST https://<host>/Travel/V1/Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>')/HotelGroups HTTP/1.1
Authorization: Bearer <oauthaccesstoken>
Accept: application/json
Host: <host>
Content-Length: 26
{"Name":"test-3"}
การตอบสนองคือวัตถุ AddResponse ที่มี ID ของกลุ่มโรงแรมที่เพิ่มเข้ามา
HTTP/1.1 200 OK
Content-Length: 140
Content-Type: application/json; odata.metadata=minimal
x-ms-requestid: 8a2e2026-e170-4607-b4fe-06954a67b80a
x-ms-trackingid: e86fcdbd-613e-44a9-b5fc-528cfa87297a
{
"value":"55113020351606"
}
หลังจากเพิ่มกลุ่มโรงแรมให้ใช้เทมเพลต ร่วม เพื่อเพิ่มโรงแรมในกลุ่ม สําหรับข้อมูล ดูการเชื่อมโยงโรงแรมกับกลุ่มโรงแรม
การอัปเดตกลุ่มโรงแรม
กลุ่มโรงแรมจะระบุตัวคูณการเสนอราคาและราคาเสนอเริ่มต้นที่จะใช้สําหรับโรงแรมในกลุ่ม กลุ่มจะระบุอย่างชัดเจน หรือสืบทอดกลุ่มจากบัญชีย่อยที่เป็นของกลุ่มย่อย คุณสามารถใช้ API เพื่ออัปเดตตัวคูณการเสนอราคาและเสนอราคาเพื่อใช้สําหรับโรงแรมที่ไม่ได้ระบุการเสนอราคาหรือตัวคูณได้
สําหรับรายละเอียดเกี่ยวกับช่วงการเสนอราคาและงบประมาณที่ถูกต้องสําหรับตลาดของคุณ ดูตารางค่าสกุลเงินในหัวข้อสกุลเงิน
ถ้าบัญชีย่อยระบุการเสนอราคาสูงสุด ราคาเสนอของกลุ่มโรงแรมต้องน้อยกว่าการเสนอราคาสูงสุดของบัญชีย่อย
เมื่อต้องการหยุดโรงแรมทั้งหมดในกลุ่มโรงแรมชั่วคราว ให้ตั้งค่าคุณสมบัติของกลุ่ม Bid
เป็นวัตถุ PercentageBid และจํานวนเปอร์เซ็นต์การเสนอราคาเป็นศูนย์ (0.0)
ถ้ากลุ่มระบุการเสนอราคามากกว่าศูนย์ แต่โรงแรมของกลุ่มไม่ได้ให้บริการ อาจเป็นเพราะราคาเสนอของบัญชีย่อยเท่ากับศูนย์
หากต้องการลบการเสนอราคาของกลุ่มโรงแรม ให้ตั้งค่า Bid
เป็น null (ตัวอย่างเช่น "Bid":null)
หากกลุ่มโรงแรมระบุตัวคูณการเสนอราคาและคุณต้องการลบออก ให้ตั้งค่า BidMultipliers
เป็นอาร์เรย์ว่าง (ตัวอย่างเช่น "BidMultipliers":[])
หากต้องการอัปเดตกลุ่มโรงแรม ให้ส่งคําขอ PATCH เนื้อความของการร้องขอเป็นวัตถุ HotelGroup รวมเฉพาะคุณสมบัติที่คุณต้องการอัปเดต ตัวอย่างนี้แสดงการอัปเดตการเสนอราคาและตัวคูณ
PATCH https://<host>/Travel/V1/Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>')/HotelGroups('<hotelgroupid>') HTTP/1.1
Authorization: Bearer <oauthaccesstoken>
Content-Type: application/json
Content-Length: 474
Host: <host>
{
"Id":"55113020351606",
"Bid":{
"Amount":4.75,
"@odata.type":"#Model.FixedBid"
},
"BidMultipliers":[
{
"DeviceTypes":["Desktop"],
"Factor":0.65,
"@odata.type":"#Model.DeviceMultiplier"
},
{
"MinimumNumberOfNights":7,
"Factor":1.3,
"@odata.type":"#Model.LengthOfStayMultiplier"
},
{
"DaysOfWeek":["Thursday","Friday","Saturday"],
"Factor":1.5,
"@odata.type":"#Model.CheckinDayOfWeekMultiplier"
},
{
"DaysOfWeek":["Sunday","Monday"],
"Factor":2.5,
"@odata.type":"#Model.CheckinDayOfWeekMultiplier"
}
]
}
การได้กลุ่มโรงแรม
หากต้องการรับกลุ่มโรงแรมเฉพาะ ให้ส่งคําขอต่อไปนี้ ID กลุ่มโรงแรมต้องครอบคลุมด้วยเครื่องหมายอัญประกาศเดี่ยวตามที่แสดง
GET https://<host>/Travel/V1/Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>')/HotelGroups('<hotelgroupid>') HTTP/1.1
Authorization: Bearer <oauthaccesstoken>
Accept: application/json
Host: <host>
การตอบกลับมีวัตถุ HotelGroup
HTTP/1.1 200 OK
Content-Length: 813
Content-Type: application/json; odata.metadata=minimal
x-ms-requestid: 3be2a39c-723c-41bd-9e74-0a9e44c4fa3c
x-ms-trackingid: e5eba818-2ef7-4fe6-9225-9e2325414e3b
{
"Id":"55113020351606",
"Name":"test-2",
"Status":"Active",
"Bid":{
"@odata.type":"#Model.FixedBid",
"Amount":4.75
},
"BidSource":"HotelGroup",
"BidMultiplierSource":"HotelGroup",
"BidMultipliers":[
{
"@odata.type":"#Model.DeviceMultiplier",
"Factor":0.65,
"DeviceTypes":["Desktop"]
},
{
"@odata.type":"#Model.LengthOfStayMultiplier",
"Factor":1.3,
"MinimumNumberOfNights":7
},
{
"@odata.type":"#Model.CheckinDayOfWeekMultiplier",
"Factor":2.5,
"DaysOfWeek":["Monday","Sunday"]
},
{
"@odata.type":"#Model.CheckinDayOfWeekMultiplier",
"Factor":1.5,
"DaysOfWeek":["Thursday","Friday","Saturday"]
}
],
"HotelAssociationCount":0
}
การทํางานกับโรงแรม
โรงแรมเป็นตัวแทนโรงแรมในฟีดโรงแรมของคุณ API ช่วยให้คุณสามารถแสดงรายการ รับ และอัปเดตโรงแรมได้ คุณไม่สามารถใช้ API เพื่อเพิ่มโรงแรม; หากต้องการเพิ่มโรงแรม ให้ใช้ตัวดึงข้อมูลโรงแรม โรงแรมจะไม่ซ้ํากันสําหรับแต่ละบัญชีย่อย — บัญชีย่อยมากกว่าหนึ่งบัญชีอาจไม่ประกอบด้วยโรงแรมเดียวกัน
ต่อไปนี้คือเทมเพลต REST ที่คุณใช้เพื่อจัดการโรงแรม
/SubAccounts('{subAccountId}')/Hotels
— รับ/SubAccounts('{subAccountId}')/HotelGroups('{hotelGroupId}')/Hotels
— รับ/SubAccounts('{subAccountId}')/HotelGroups('{hotelGroupId}')/Hotels('{hotelId}')
— รับ | โปรแกรมแก้ไข
ตัวอย่างเช่น ที่รับและอัปเดตโรงแรม ให้ดูตัวอย่างโรงแรม (ใช้ตัวเลือกภาษาในบานหน้าต่างด้านขวาเพื่อดูตัวอย่างในภาษาต่างๆ)
กําลังแสดงรายการโรงแรม
ตามค่าเริ่มต้น เมื่อคุณร้องขอรายชื่อโรงแรมในกลุ่มโรงแรม API จะส่งกลับโรงแรมสูงสุด 1,000 แห่ง หากต้องการกําหนดจํานวนโรงแรมทั้งหมดในกลุ่มโรงแรม ให้ใช้พารามิเตอร์คิวรี$count เมื่อต้องการระบุจํานวนโรงแรมที่จะส่งกลับ ให้ใช้พารามิเตอร์คิวรี$top จํานวนโรงแรมสูงสุดที่คุณสามารถขอโทรครั้งเดียวได้คือ 5,000 หากกลุ่มโรงแรมของคุณประกอบด้วยโรงแรมมากกว่า 5,000 แห่ง ให้ใช้พารามิเตอร์$top และ $skip คิวรีเพื่อเข้าถึงทั่วทั้งโรงแรม
หมายเหตุ
คุณควรใช้$top และ$skip พารามิเตอร์คิวรีเพื่อหน้าผ่านโรงแรมในประสบการณ์ UI เท่านั้น หากต้องการรับโรงแรมทั้งหมดของคุณ ให้ใช้คุณลักษณะ การรายงาน เพื่อดาวน์โหลดโรงแรม
- /SubAccounts('{subAccountId}')/Hotels
- /SubAccounts('{subaccountid}')/HotelGroups('{hotelgroupid}')/Hotels
- /SubAccounts('{subAccountId}')/Ungrouped
หากต้องการรับโรงแรม 1,000 แห่งแรกในกลุ่มโรงแรม ให้ส่งคําขอต่อไปนี้
GET https://<host>/Travel/V1/Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>')/HotelGroups('<hotelgroupid>')/Hotels HTTP/1.1
Authorization: Bearer <oauthaccesstoken>
Accept: application/json
Host: <host>
การตอบสนองมีวัตถุ CollectionResponse อาร์เรย์value
ประกอบด้วยรายการของออบเจ็กต์โรงแรม
HTTP/1.1 200 OK
Content-Length: 1611
Content-Type: application/json; odata.metadata=minimal
x-ms-requestid: d836f741-8083-4d54-b49e-e1f14287b944
x-ms-trackingid: 3787a393-eca3-4ad0-be3d-dd4c7ae08906
{
"@odata.count":2,
"value":[
{
"Id":"55113020344013",
"Name":"Contoso Inn Singer",
"PartnerHotelId":"942909",
"Status":"Active",
"CountryCode":"US",
"Bid":{
"@odata.type":"#Model.FixedBid",
"Amount":2.75
},
"BidSource":"HotelGroup",
"BidMultiplierSource":"HotelGroup",
"BidMultipliers":[
{
"@odata.type":"#Model.DeviceMultiplier",
"Factor":2.65,
"DeviceTypes":["Desktop"]
},
{
"@odata.type":"#Model.LengthOfStayMultiplier",
"Factor":1.3,
"MinimumNumberOfNights":8
},
{
"@odata.type":"#Model.UserCountryMultiplier",
"Factor":1.1,
"Countries":["US"]
},
{
"@odata.type":"#Model.AdvanceBookingWindowMultiplier",
"Factor":1.3,
"MinimumNumberOfDays":3
},
{
"@odata.type":"#Model.CheckinDayOfWeekMultiplier",
"Factor":0.9,
"DaysOfWeek":["Monday","Sunday"]
},
{
"@odata.type":"#Model.CheckinDayOfWeekMultiplier",
"Factor":1.2,
"DaysOfWeek":["Thursday","Friday","Saturday"]
},
{
"@odata.type":"#Model.SiteMultiplier",
"Factor":0.85,"Sites":["MapResults","LocalUniversal"]
}
]
},
{
"Id":"55113020351595",
"Name":"Contoso Inn Casino Center",
"PartnerHotelId":"60278",
"Status":"Active",
"CountryCode":"US",
"Bid":{
"@odata.type":"#Model.FixedBid",
"Amount":2.75
},
"BidSource":"HotelGroup",
"BidMultiplierSource":null,
"BidMultipliers":[]
}
]
}
การอัปเดตโรงแรม
ทางโรงแรมจะระบุตัวคูณราคาเสนอและราคาเสนอเพื่อใช้สําหรับโฆษณาราคาโรงแรม โรงแรมระบุไว้อย่างชัดเจนหรือสืบทอดจากกลุ่มโรงแรมหรือบัญชีย่อยตามลําดับนั้น คุณสามารถใช้ API เพื่ออัปเดตตัวคูณการเสนอราคาและเสนอราคาเพื่อใช้สําหรับโฆษณาของโรงแรมได้
สําหรับรายละเอียดเกี่ยวกับช่วงการเสนอราคาที่ถูกต้องสําหรับตลาดของคุณ ดูตารางค่าสกุลเงินในหัวข้อสกุลเงิน
ถ้าบัญชีย่อยระบุการเสนอราคาสูงสุด การเสนอราคาของโรงแรมต้องน้อยกว่าการเสนอราคาสูงสุดของบัญชีย่อย
เมื่อต้องการหยุดโรงแรมชั่วคราว ให้ตั้งค่าคุณสมบัติ Bid
เป็นวัตถุ PercentageBid และจํานวนเปอร์เซ็นต์การเสนอราคาเป็นศูนย์ (0.0)
หากโรงแรมระบุราคาเสนอที่มากกว่าศูนย์ แต่ไม่ได้ให้บริการ อาจเป็นเพราะราคาเสนอของกลุ่มโรงแรมหรือบัญชีย่อยเป็นศูนย์
หากต้องการลบการเสนอราคาของโรงแรม ให้ตั้งค่าเป็น Bid
null (ตัวอย่างเช่น "Bid":null)
ถ้าโรงแรมระบุตัวคูณการเสนอราคาและคุณต้องการลบออก ให้ตั้งค่า BidMultipliers
เป็นอาร์เรย์ว่าง (ตัวอย่างเช่น "BidMultipliers":[])
หากต้องการอัปเดตโรงแรม ให้ส่งคําขอ PATCH คําขออาจระบุ ID ที่ Microsoft กําหนดให้กับโรงแรมหรือ ID ที่ผู้โฆษณากําหนดให้กับโรงแรม หากคุณระบุ ID ที่ผู้โฆษณากําหนด คําขอต้องตั้งค่าพารามิเตอร์คิวรี PartnerHotelIdเป็นจริง
เนื้อความของคําขอเป็นวัตถุของโรงแรม รวมเฉพาะคุณสมบัติที่คุณต้องการอัปเดต ตัวอย่างนี้แสดงการอัปเดตตัวคูณ
{
"BidMultipliers":[
{
"Countries":["US"],
"Factor":1.1,
"@odata.type":"#Model.UserCountryMultiplier"
},
{
"DeviceTypes":["Desktop"],
"Factor":2.65,
"@odata.type":"#Model.DeviceMultiplier"
}
]
}
การหาโรงแรม
หากต้องการรับโรงแรมที่เฉพาะเจาะจง ให้ส่งคําขอต่อไปนี้ ต้องคลุม ID โรงแรมด้วยเครื่องหมายอัญประกาศเดี่ยวตามที่แสดง
GET https://<host>/Travel/V1/Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>')/HotelGroups('<hotelgroupid>')/Hotels('<hotelid>') HTTP/1.1
Authorization: Bearer <oauthaccesstoken>
Accept: application/json
Host: <host>
การตอบสนองมีวัตถุโรงแรม
HTTP/1.1 200 OK
Content-Length: 1122
Content-Type: application/json; odata.metadata=minimal
x-ms-requestid: a9a591c2-01c1-4e1c-8a6a-5cdece574460
x-ms-trackingid: ceb70eb3-36ca-4b99-a5f7-b1a04de1e4ae
{
"Id":"55113020344013",
"Name":"Contoso Inn Singer",
"PartnerHotelId":"942909",
"Status":"Active",
"CountryCode":"US",
"Bid":{
"@odata.type":"#Model.FixedBid",
"Amount":3.0
},
"BidSource":"SubAccount",
"BidSource":"Hotel",
"BidMultipliers":[
{
"@odata.type":"#Model.DeviceMultiplier",
"Factor":2.65,
"DeviceTypes":["Desktop"]
},
{
"@odata.type":"#Model.UserCountryMultiplier",
"Factor":1.1,
"Countries":["US"]
}
]
}
ระยะเวลาของการเข้าพักและหน้าต่างการจองขั้นสูงคูณ
คําอธิบายสําหรับ LengthOfStayMultiplier ระบุว่า Bing ใช้ตัวคูณถ้าผู้ใช้พักตามจํานวนคืนที่ระบุ หรือนานกว่านั้น และคําอธิบายสําหรับ AdvanceBookingWindowMultiplier ยังระบุว่า Bing ใช้ตัวคูณหากการจองเกิดขึ้นล่วงหน้าตามจํานวนวัน หรือนานกว่าที่ระบุ ส่วนสําคัญของคําอธิบายคือวลีหรือยาวกว่า
หากคุณระบุตัวคูณเหล่านี้มากกว่าหนึ่งตัว การรวมของปัจจัยและวัน/คืนต้องไม่ซ้ํากัน มิฉะนั้น การเรียกล้มเหลวด้วยข้อผิดพลาด DuplicateValues ในตัวอย่าง LengthOfStayMultiplier ต่อไปนี้ ตัวประกอบสําหรับแต่ละรายการคือ 1 เนื่องจากการเข้า 6 คืนจะมีผลสําหรับการเข้าพัก 6 คืนหรือนานกว่านั้นรายการที่สองเป็นเวลา 8 คืนจึงซ้ํากัน หากต้องการแก้ไขข้อผิดพลาดนี้ เพียงแค่ลบรายการเป็นเวลา 8 คืนหรือระบุค่าปัจจัยที่แตกต่างกัน
{
"MinimumNumberOfNights": 8,
"Factor": "1",
"@odata.type": "#Model.LengthOfStayMultiplier"
},
{
"MinimumNumberOfNights": 6,
"Factor": "1",
"@odata.type": "#Model.LengthOfStayMultiplier"
}
การเชื่อมโยงโรงแรมกับกลุ่มโรงแรม
เมื่อคุณนําเข้าไฟล์ตัวดึงข้อมูลโรงแรมของคุณ โรงแรมจะถูกวางในกลุ่มโรงแรม ที่ยังไม่ได้จัดกลุ่ม ซึ่งเป็นกลุ่มโรงแรมเริ่มต้น โรงแรมอาจเชื่อมโยงกับกลุ่มโรงแรมเพียงกลุ่มเดียวเท่านั้น หากคุณสร้างกลุ่มโรงแรมใหม่เพื่อจัดระเบียบโรงแรมของคุณอย่างมีเหตุผล คุณจะต้องย้ายโรงแรมจากกลุ่มโรงแรม ที่ยังไม่ได้จัดกลุ่ม ไปยังกลุ่มใหม่ที่คุณสร้างขึ้น หากต้องการเชื่อมโยงโรงแรมกับกลุ่มโรงแรมใหม่ ให้ใช้เทมเพลต Associate เมื่อคุณเชื่อมโยงโรงแรมกับกลุ่มโรงแรมใหม่ บริการจะลบการเชื่อมโยงก่อนหน้าออก
ตัวอย่าง POST ต่อไปนี้ แสดงวิธีการระบุความสัมพันธ์ เนื้อความของการร้องขอเป็นวัตถุ AssociationCollection คอลเลกชันอาจมีวัตถุ HotelAssociation ได้สูงสุด 500 วัตถุ
POST https://<host>/Travel/V1/Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>')/Associate HTTP/1.1
Authorization: Bearer <oauthaccesstoken>
Content-Type: application/json
Host: <host>
Content-Length: 169
{
"HotelAssociations":[
{
"HotelGroupId":"55113020351226",
"HotelId":"55113020351595"
},
{
"HotelGroupId":"55113020351226",
"HotelId":"55113020344013"
}
]
}
วิธีการ Associate ควรส่งกลับความสําเร็จเสมอ ถ้าความสัมพันธ์อย่างน้อยหนึ่งรายการล้มเหลว การตอบสนองจะประกอบด้วยความสัมพันธ์ที่ป้อนเข้าของความสัมพันธ์ที่ล้มเหลว และสาเหตุของความล้มเหลว
การตอบสนองมีวัตถุ CollectionResponse ถ้าการเชื่อมโยงทั้งหมดสําเร็จ value
อาร์เรย์จะว่างเปล่า มิฉะนั้น value
จะมีออบเจ็กต์ HotelAssociation สําหรับแต่ละความสัมพันธ์ที่ล้มเหลว ฟิลด์ของ Errors
ความสัมพันธ์มีเหตุผลสําหรับความล้มเหลว
HTTP/1.1 200 OK
Content-Length: 770
Content-Type: application/json; odata.metadata=minimal
x-ms-requestid: 574fe6c6-503d-427d-8921-a259f76de0ed
x-ms-trackingid: a5f2510e-709a-4370-876e-bfb05ef2b8df
{
"value":[
{
"HotelId":"55113020351595",
"HotelName":null,
"PartnerHotelId":null,
"HotelGroupId":"55113020351226",
"HotelGroupName":null,
"Errors@odata.type":"#Collection(Model.AdsApiError)",
"Errors":[
{
"Code":"<code>","Property":"<propertyname>","Message":"<messagestring>"
}
]
}
]
}
รับการเชื่อมโยงโรงแรม
ตามค่าเริ่มต้น เมื่อคุณร้องขอรายการของการเชื่อมโยงในบัญชีย่อย API จะส่งกลับความสัมพันธ์สูงสุด 1,000 รายการ เมื่อต้องการกําหนดจํานวนความสัมพันธ์ทั้งหมด ให้ใช้พารามิเตอร์คิวรี$count เมื่อต้องการระบุจํานวนความสัมพันธ์ที่จะส่งกลับ ให้ใช้พารามิเตอร์คิวรี $top จํานวนสูงสุดของความสัมพันธ์ที่คุณสามารถร้องขอได้ในการเรียกครั้งเดียวคือ 5,000 ถ้าบัญชีย่อยของคุณประกอบด้วยความสัมพันธ์มากกว่า 5,000 รายการ ให้ใช้$top และ $skip พารามิเตอร์คิวรีไปยังหน้าผ่านความสัมพันธ์ทั้งหมด
หากต้องการรับการเชื่อมโยงโรงแรมและกลุ่มโรงแรม 1,000 แห่งแรกสําหรับบัญชีย่อย ให้ส่งคําขอต่อไปนี้:
GET https://<host>/Travel/V1/Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>')/Associations HTTP/1.1
Authorization: Bearer <oauthaccesstoken>
Accept: application/json
Host: <host>
การตอบสนองมีวัตถุ CollectionResponse อาร์เรย์value
ประกอบด้วยรายการของออบเจ็กต์ HotelAsssociation
HTTP/1.1 200 OK
Content-Length: 6880
Content-Type: application/json; odata.metadata=minimal
x-ms-requestid: 50bb9a63-f324-4c28-84f9-733b24ab3d0f
x-ms-trackingid: 4fa56e03-7e86-4f44-b671-8e00a67c2eed
{
"@odata.count":39540,
"value":[
{
"HotelId":"55113020342273",
"HotelName":"Contoso Inn Downtown DC/Convention Center",
"PartnerHotelId":"99995",
"HotelGroupId":"55113020342274",
"HotelGroupName":"UnGrouped"
},
{
"HotelId":"55113020342274",
"HotelName":"The Contoso Hotel",
"PartnerHotelId":"999896",
"HotelGroupId":"55113020342274",
"HotelGroupName":"UnGrouped"
},
. . .
]
}
การกรองความสัมพันธ์โรงแรม
เมื่อต้องการส่งกลับชุดย่อยของความสัมพันธ์ ให้ใช้พารามิเตอร์คิวรี OData $filter คุณอาจกรองความสัมพันธ์โดย HotelId
หรือ PartnerHotelId
เท่านั้น ความยาวสูงสุดของ URL (2,048) จะกําหนดจํานวนรหัสที่คุณสามารถระบุได้ ถ้า URL เกิน 2,048 อักขระ คําขอจะส่งกลับ 404
ต่อไปนี้แสดงตัวอย่างที่แสดงความสัมพันธ์โรงแรมที่ระบุ
GET https://<host>/Travel/V1/Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>')/Associations?$filter=HotelId+eq+'55113020342282'+or+HotelId+eq+'55113020344943' HTTP/1.1
Authorization: Bearer <accesstokengoeshere>
Accept: application/json
Host: <host>
การประมวลผลชุดงาน
หากต้องการส่งคําขอหลายรายการในคําขอ HTTP เดียว ให้ใช้เทมเพลต /$batch คุณสามารถส่งคําขอได้สูงสุด 500 รายการในคําขอเป็นชุดเดียว
หมายเหตุ
การประมวลผลแบบกลุ่มได้รับการสนับสนุนสําหรับการอัปเดตโรงแรมเท่านั้น เช่น การเปลี่ยนแปลงการเสนอราคา
คําขอ
ต่อไปนี้แสดงตัวอย่างคําขอ
POST https://<host>/Travel/V1/$batch HTTP/1.1
Authorization: Bearer <accesstokengoeshere>
Content-Type: multipart/mixed; boundary=batch_086fe0de-9b26-4d4a-a206-6df2013a2816
Host: <host>
Content-Length: 1371
ส่วนหัว Content-Type ต้องตั้งค่าเป็น multipart/mixed และรวม ID ขอบเขต ID ขอบเขตเป็นแบบทึบ และคั่นการร้องขอย่อยแต่ละรายการในคําขอชุดงาน ID อาจเป็นสตริงที่ไม่ซ้ํากันใดๆ ตัวอย่างนี้ใช้ สตริง> batch_<unique โดยที่<สตริง>ที่ไม่ซ้ํากันคือ GUID
เนื้อความของการร้องขอชุดงานประกอบด้วยการร้องขอแต่ละรายการหลายรายการที่คั่นด้วย ID ขอบเขต ต่อไปนี้แสดงตัวอย่างของเนื้อความของคําขอชุดงาน ตรวจสอบให้แน่ใจว่าได้ยุติแต่ละบรรทัดในเนื้อความของคําขอชุดที่มี CRLF (การขนส่งกลับและป้อนบรรทัด)
--batch_086fe0de-9b26-4d4a-a206-6df2013a2816
Content-Type: application/http
Content-Transfer-Encoding: binary
PATCH Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>')/HotelGroups('<groupid>')/Hotels('<hotelid>') HTTP/1.1
Content-Type: application/json; odata.metadata=minimal
Host: partner.api.sandbox.bingads.microsoft.com
{"Id":"<hotelid>","Bid":{"Amount":1.75,"@odata.type":"#Model.FixedBid"}}
--batch_086fe0de-9b26-4d4a-a206-6df2013a2816
Content-Type: application/http
Content-Transfer-Encoding: binary
PATCH Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>')/HotelGroups('groupid>')/Hotels('<hotelid>') HTTP/1.1
Content-Type: application/json; odata.metadata=minimal
Host: partner.api.sandbox.bingads.microsoft.com
{"Id":"<hotelid>","Bid":{"Amount":1.75,"@odata.type":"#Model.FixedBid"}}
--batch_086fe0de-9b26-4d4a-a206-6df2013a2816
Content-Type: application/http
Content-Transfer-Encoding: binary
PATCH Customers(<customerid>)/Accounts(<accountid>)/SubAccounts('<subaccountid>')/HotelGroups('groupid>')/Hotels('<hotelid>') HTTP/1.1
Content-Type: application/json; odata.metadata=minimal
Host: partner.api.sandbox.bingads.microsoft.com
{"Id":"<hotelid>","Bid":{"Amount":1.75,"@odata.type":"#Model.FixedBid"}}
--batch_086fe0de-9b26-4d4a-a206-6df2013a2816--
โปรดทราบว่า ID ขอบเขตแต่ละ ID จะมีเส้นประคู่ (ตัวอย่างเช่น --batch_086fe0de-9b26-4d4a-a206-6df2013a2816) และ ID ขอบเขตการสิ้นสุดที่ไปหลังจากคําขอสุดท้ายในชุดงานถูกล้อมรอบด้วยเส้นประคู่ (ตัวอย่างเช่น --batch_086fe0de-9b26-4d4a-a206-6df2013a2816--)
ตัวคั่น ID ขอบเขตต้องตามด้วยส่วนหัวการเข้ารหัสเนื้อหาชนิดและเนื้อหา-ถ่ายโอนตามที่แสดง เนื่องจากคุณอาจอัปเดตโรงแรมได้เท่านั้น คําขอต้องใช้คํากริยา HTTP PATCH และใช้เทมเพลต โรงแรม เพื่อระบุโรงแรมที่จะอัปเดต คําขอต้องมีส่วนหัว Content-Type และต้องตั้งค่าเป็น application/json; odata.metadata=minimal เนื้อความของคําขอเป็นวัตถุของโรงแรม วัตถุต้องมี ID ของโรงแรมและควรมีเฉพาะเขตข้อมูลที่คุณกําลังอัปเดตเท่านั้น
การตอบสนอง
การตอบสนองจะมีตัวคั่นในทํานองเดียวกัน และแต่ละรายการในการตอบสนองจะสอดคล้องกับแต่ละรายการในคําขอโดยตรง ส่วนหัว Content-Type ของการตอบสนองมี ID ขอบเขต รับ ID และใช้เพื่อแยกวิเคราะห์แต่ละรายการคําตอบ
ต่อไปนี้แสดงการตอบสนองต่อคําขอข้างต้น
HTTP/1.1 200 OK
Content-Type: multipart/mixed; boundary=batchresponse_d33d1715-3dd3-45aa-80a9-854493c8764e
x-ms-requestid: c0fb9b49-2af0-4b41-bf57-0e4a0f8b55b9
x-ms-trackingid: 8b652a73-1bef-488d-b7d5-f371a31867a4
Date: Tue, 27 Mar 2018 20:30:19 GMT
Content-Length: 512
--batchresponse_d33d1715-3dd3-45aa-80a9-854493c8764e
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
--batchresponse_d33d1715-3dd3-45aa-80a9-854493c8764e
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
--batchresponse_d33d1715-3dd3-45aa-80a9-854493c8764e
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 204 No Content
--batchresponse_d33d1715-3dd3-45aa-80a9-854493c8764e--
แต่ละรายการการตอบกลับประกอบด้วยสถานะ HTTP สําหรับการอัปเดต หากการอัปเดตสําเร็จ สถานะคือ 204 หากการอัปเดตล้มเหลว (ตัวอย่างเช่น ไม่พบโรงแรมค่าไม่ถูกต้องหรือวัตถุโรงแรมมีรูปแบบไม่ถูกต้อง) สถานะคือ 400 และเนื้อความมีรายการข้อผิดพลาด (คําขออาจล้มเหลวด้วยรหัสสถานะอื่น)
ต่อไปนี้แสดงรายการการตอบสนองที่มีข้อผิดพลาด ถ้ามีข้อผิดพลาดเกิดขึ้น เนื้อความประกอบด้วยวัตถุ CollectionResponse และแต่ละรายการในvalue
อาร์เรย์เป็นวัตถุ AdsApiError
--batchresponse_d0048f4c-8a3f-40aa-9392-718943ecc5f3
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 400 Bad Request
x-ms-requestid: 00b551c2-b552-4cca-9e1b-04e0e5ffb4b7
x-ms-trackingid: ad383e45-4174-43d7-95bc-cca2ac6176e8
Content-Type: application/json; odata.metadata=minimal; odata.streaming=true
OData-Version: 4.0
{
"@odata.count":1,
"value":[
{
"Code":"EntityDoesNotExist","Property":null,"Message":null
}
]
}
--batchresponse_d0048f4c-8a3f-40aa-9392-718943ecc5f3--
รหัสตัวอย่างสําหรับการประมวลผลคําขอชุดงาน
ตัวอย่างเช่น รหัสที่อัปเดตการกําหนดราคาโรงแรมในคําขอชุดงาน ให้ดู ตัวอย่างการประมวลผลชุดงาน