จัดการแคมเปญ Hotel Ad

หมายเหตุ

รุ่นเบต้าของโฆษณาราคาโรงแรมนี้มีให้เลือกเฉพาะผู้เข้าร่วมเท่านั้น สําหรับข้อมูลเกี่ยวกับการเข้าร่วมในโปรแกรมรุ่นเบต้า โปรดติดต่อผู้จัดการบัญชีของคุณหรือลงทะเบียนที่นี่

API และเอกสารอาจเปลี่ยนแปลงได้

API ของโรงแรมช่วยให้คุณจัดการแคมเปญและการเสนอราคาของโรงแรมได้ บัญชีย่อยให้องค์กรเชิงตรรกะระดับสูงสุดของโฆษณาราคาโรงแรมของคุณ คุณสามารถนึกภาพเป็นแคมเปญที่พัก (เดิมคือแคมเปญโรงแรม) คุณอาจมีจํานวนบัญชีย่อยที่ใช้งานอยู่ได้สูงสุด 75 บัญชี

บัญชีย่อยจะระบุงบประมาณรายวัน ของแคมเปญ จํานวนการเสนอราคาสูงสุดที่อนุญาต และตัวคูณการเสนอราคาและราคาเสนอเริ่มต้นสําหรับโฆษณาที่ไม่ได้ระบุราคาเสนอหรือตัวคูณ

หมายเหตุ

แคมเปญโฆษณาโรงแรมที่อ้างถึงที่นี่ไม่มีความสัมพันธ์กับแคมเปญใน Microsoft Advertising

ถ้าคุณยังไม่ได้ดําเนินการ ดังกล่าว ทําความคุ้นเคยกับหัวข้อต่อไปนี้:

สําหรับจุดสิ้นสุด API ของโรงแรม ดูจุดสิ้นสุด

สําหรับข้อมูลเกี่ยวกับการรายงาน โปรดดู API การรายงานโฆษณาราคาโรงแรม

การทํางานกับบัญชีย่อย

บัญชีย่อยเป็นองค์กรระดับสูงสุดของโฆษณาราคาโรงแรม บริการจะสร้างบัญชีย่อยเริ่มต้นสําหรับคุณเมื่อคุณลงทะเบียนโฆษณาราคาโรงแรม API ช่วยให้คุณสามารถเพิ่มบัญชีย่อย บัญชีย่อยรายการ รับบัญชีย่อยเฉพาะ และอัปเดตบัญชีย่อย

ต่อไปนี้คือเทมเพลต REST ที่คุณใช้ในการจัดการบัญชีย่อย

สําหรับตัวอย่างที่ได้รับและอัปเดตบัญชีย่อย ให้ดูตัวอย่างโค้ด (ใช้ตัวเลือกภาษาในบานหน้าต่างด้านขวาเพื่อดูตัวอย่างในภาษาต่างๆ)

บัญชีย่อยของรายการ

เมื่อต้องการรับรายการของบัญชีย่อย ให้ส่งคําขอต่อไปนี้

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 ที่คุณใช้ในการจัดการกลุ่มโรงแรม

ตัวอย่างเช่น ที่รับ เพิ่ม และอัปเดตกลุ่มโรงแรม ดูตัวอย่างรหัส (ใช้ตัวเลือกภาษาในบานหน้าต่างด้านขวาเพื่อดูตัวอย่างในภาษาต่างๆ)

กําลังแสดงรายการกลุ่มโรงแรม

ตามค่าเริ่มต้น เมื่อคุณร้องขอรายการกลุ่มโรงแรมภายใต้บัญชีย่อย 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 ที่คุณใช้เพื่อจัดการโรงแรม

ตัวอย่างเช่น ที่รับและอัปเดตโรงแรม ให้ดูตัวอย่างโรงแรม (ใช้ตัวเลือกภาษาในบานหน้าต่างด้านขวาเพื่อดูตัวอย่างในภาษาต่างๆ)

กําลังแสดงรายการโรงแรม

ตามค่าเริ่มต้น เมื่อคุณร้องขอรายชื่อโรงแรมในกลุ่มโรงแรม 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--

รหัสตัวอย่างสําหรับการประมวลผลคําขอชุดงาน

ตัวอย่างเช่น รหัสที่อัปเดตการกําหนดราคาโรงแรมในคําขอชุดงาน ให้ดู ตัวอย่างการประมวลผลชุดงาน