API การจับคู่ส่วนตัว
 นี่คือ API ที่ใช้เมื่อทำการจับคู่แบบเดี่ยวระหว่างการเล่นเกม สำหรับการจับคู่แบบกลุ่ม กรุณาใช้ Group API 
 การจับคู่คำขอ
 นี่เรียกใช้เมื่อเริ่มคำขอการแข่งขัน การแข่งขันที่ตรงกับ matchId จะต้องถูกสร้างล่วงหน้าในคอนโซล Hive.
 URL ที่ร้องขอ
    | ลิงก์สด | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players | 
    | ลิงก์แซนด์บ็อกซ์ | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players | 
  | วิธีการ HTTP | POST | 
  | ประเภทเนื้อหา | application/json | 
  
 พารามิเตอร์หัวเรื่อง
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | Authorization | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API (Bearer) | string | Y | 
  
 พารามิเตอร์เส้นทาง
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | gameIndex | รหัสโปรเจกต์ที่สามารถพบได้ในศูนย์แอป Hive console | int | ใช่ | 
  | matchId | รหัสสำหรับแต่ละแมตช์ที่สร้างขึ้นใน Hive console | int | ใช่ | 
 
 เนื้อหาคำขอ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | playerId | รหัสบัญชี | long | ใช่ | 
  | point | นี่คือคะแนนที่จะใช้ในการจับคู่ ช่วงค่าที่ป้อนคือ 0 ~ 999,999,999หากไม่ป้อน จะถูกประมวลผลเป็น0. | integer | ไม่ | 
  | extraData | ข้อมูลบัญชีเพิ่มเติม (ชื่อเล่น, ระดับ, ประเทศ, ฯลฯ) สามารถป้อนได้สูงสุด 256 ตัวอักษร จะรวมอยู่ในผลลัพธ์การจับคู่ | string | ไม่ | 
  
 การตอบสนอง
    | ชื่อฟิลด์ | คำอธิบาย | 
  | playerId | รหัสบัญชี | 
  | matchInfo | ข้อมูลที่ร้องขอ  gameIndex: ค่าของgameIndexmatchId: ค่าของmatchId | 
  | requestingStatus | ข้อมูลสถานะการร้องขอ  requested: การร้องขอแมตช์สำเร็จnotRequested: ไม่มีการร้องขอแมตช์ หรือแมตช์ได้เสร็จสิ้นแล้วและไม่มีแมตช์ที่กำลังดำเนินการ | 
  | requestingInfo | ข้อมูลการร้องขอ  requestTimeUtc: เวลาที่ร้องขออิงตาม UTC+0point:pointที่ป้อนในขณะทำการร้องขอextraData:extraDataที่ป้อนในขณะทำการร้องขอ | 
  | matchingInfo | ข้อมูลความก้าวหน้าการจับคู่ ( status) matchingInProgress: การจับคู่กำลังดำเนินการtimeout: การจับคู่ไม่เกิดขึ้นภายในเวลาที่กำหนดmatched: การจับคู่เสร็จสิ้น | 
  
 ตัวอย่างคำขอ
 curl --location 'https://sandbox-api-match.withhive.com/gameindexes/1/matchmakings/1/request' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a' \
--data '{
   "playerId":100,
   "point": 1000
}'
ตัวอย่างการตอบกลับ
 {
   "playerId": 100,
   "matchInfo": {
       "gameIndex": 1,
       "matchId": 1
   },
   "requestingStatus": "requested",
   "requestingInfo": {
       "requestTimeUtc": "2024-06-05T05:09:28.72",
       "point": 1000
   },
   "matchingInfo": {
       "status": "matchingInProgress"
   }
}
ตรวจสอบสถานะการจับคู่
 กำลังตรวจสอบสถานะการจับคู่ที่ร้องขอ
 URL ที่ร้องขอ
    | URL สด | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players | 
    | URL แซนด์บ็อกซ์ | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players | 
  | วิธีการ HTTP | GET | 
  
 พารามิเตอร์หัวเรื่อง
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | Authorization | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API (Bearer) | string | Y | 
  
 พารามิเตอร์เส้นทาง
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | gameIndex | รหัสโปรเจกต์ที่สามารถตรวจสอบได้ในศูนย์แอปของ Hive | int | ใช่ | 
  | matchId | รหัสสำหรับแต่ละแมตช์ที่สร้างขึ้นใน Hive console | int | ใช่ | 
 
 พารามิเตอร์การค้นหา
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | id | รหัสผู้ใช้ (`playerId`) | long | Y | 
 
 การตอบกลับ
    | ชื่อฟิลด์ | คำอธิบาย | 
  | playerId | รหัสบัญชี | 
  | matchInfo | ข้อมูลที่ร้องขอ  gameIndex: ค่าของgameIndexmatchId: ค่าของmatchId | 
  | requestingStatus | ข้อมูลสถานะการร้องขอ  requested: การร้องขอการแข่งขันถูกทำสำเร็จnotRequested : ไม่มีการร้องขอการแข่งขัน หรือการแข่งขันได้เสร็จสิ้นแล้วและไม่มีการแข่งขันที่กำลังดำเนินอยู่ | 
  | requestingInfo | ข้อมูลการร้องขอ  requestTimeUtc: เวลาที่ร้องขออิงตาม UTC+0point:pointที่ป้อนระหว่างการร้องขอextraData:extraDataที่ป้อนระหว่างการร้องขอ | 
  | matchingInfo | ข้อมูลความก้าวหน้าการจับคู่ ( status) matchingInProgress: กำลังดำเนินการจับคู่timeout: การจับคู่ไม่สำเร็จภายในเวลาที่กำหนดmatched: การจับคู่เสร็จสิ้น | 
  
 ตัวอย่างคำขอ
 curl --location --request GET 'https://sandbox-api-match.withhive.com/gameindexes/1/matchmakings/1/players?id=100' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a'
ตัวอย่างการตอบกลับ
 เมื่อผู้พัฒนายังไม่ได้ทำการร้องขอที่ตรงกัน ผลลัพธ์สถานะการจับคู่เป็นดังนี้
 {
   "playerId": 100,
   "matchInfo": {
       "gameIndex": 1,
       "matchId": 1
   },
   "requestingStatus": "notRequested"
}
 เมื่อมีการส่งคำขอที่ตรงกัน 매칭 요청 และการจับคู่ยังคงดำเนินอยู่ มันจะส่งคืนผลลัพธ์ requested และ matchingInProgress
 {
   "playerId": 100,
   "matchInfo": {
       "gameIndex": 1,
       "matchId": 1
   },
   "requestingStatus": "requested",
   "requestingInfo": {
       "requestTimeUtc": "2024-06-05T05:09:28.72",
       "point": 1000
   },
   "matchingInfo": {
       "status": "matchingInProgress"
   }
}
 เมื่อทำการตรวจสอบสถานะคำขอหลังจากการจับคู่เสร็จสิ้น จะส่งคืนผลลัพธ์เป็น matched หรือ timeout นี่คือสถานะหลังจากการจับคู่เสร็จสิ้น แต่ก่อนที่จะได้รับ ผลลัพธ์การจับคู่ callback 
     {
       "playerId": 100,
       "matchInfo": {
           "gameIndex": 1,
           "matchId": 1
       },
       "requestingStatus": "requested",
       "requestingInfo": {
           "requestTimeUtc": "2024-06-05T05:09:28.72",
           "point": 1000
       },
       "matchingInfo": {
           "status": "matched"
       }
   }
 เมื่อการจับคู่เสร็จสมบูรณ์ เซิร์ฟเวอร์ Hive จะ ส่งผลลัพธ์การจับคู่เป็นการเรียกกลับ ไปยังเซิร์ฟเวอร์ของนักพัฒนา หลังจากที่เซิร์ฟเวอร์ของนักพัฒนาได้รับการเรียกกลับผลลัพธ์การจับคู่และส่งกลับ HTTP Status 200 ไปยังเซิร์ฟเวอร์ Hive หากสถานะคำขอการจับคู่ถูกตรวจสอบอีกครั้ง จะเปลี่ยนเป็น notRequested ตามที่แสดงด้านล่าง และคีย์ matchingInfo จะถูกลบออก นี่เป็นเพราะเมื่อเซิร์ฟเวอร์ Hive ได้รับ HTTP Status 200 เป็นการตอบกลับการเรียกกลับ จะถือว่าการจับคู่ที่นักพัฒนาขอได้เสร็จสิ้นแล้วและจะลบธุรกรรมคำขอการจับคู่ที่เกี่ยวข้องออก
 {
   "playerId": 100,
   "matchInfo": {
       "gameIndex": 1,
       "matchId": 1
   },
   "requestingStatus": "notRequested"
}
    |  | ก่อนการร้องขอการจับคู่ | หลังการร้องขอการจับคู่ | หลังจากการสร้างผลลัพธ์การจับคู่ | หลังจากการรับการเรียกกลับ | 
    | requestingStatus | notRequested | requested | requested | notRequested | 
  | matchingInfo > Status | N/A | matchingInProgress | matched or timeout | N/A | 
  | Remarks |  | ในจุดที่การจับคู่กำลังดำเนินอยู่ | ในจุดก่อนการรับการเรียกกลับ |  | 
  
 ยกเลิกคำขอจับคู่
 ยกเลิกคำขอการจับคู่ หากคุณยกเลิกคำขอการจับคู่ คำขอการจับคู่ในเซิร์ฟเวอร์ Hive จะถูกลบออก
 หากคำขอการจับคู่เสร็จสมบูรณ์หลังจากที่ ขอการจับคู่ และส่งสถานะ HTTP 200 ในการตอบกลับไปยัง การเรียกกลับผลการจับคู่ เซิร์ฟเวอร์ Hive จะถือว่าการจับคู่เสร็จสมบูรณ์ภายในและลบธุรกรรมคำขอการจับคู่ที่เกี่ยวข้อง ในสถานะนี้ แม้ว่าจะมีการเรียกยกเลิกคำขอการจับคู่ แต่ธุรกรรมคำขอการจับคู่ได้ถูกลบไปแล้ว ดังนั้นคำขอยกเลิกจะไม่ถูกดำเนินการ และจะไม่มีข้อยกเว้นใด ๆ ถูกส่งกลับแยกต่างหาก
 URL การร้องขอ
    | ลิงก์สด | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId} | 
    | ลิงก์แซนด์บ็อกซ์ | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId} | 
  | วิธีการ HTTP | DELETE | 
  
 พารามิเตอร์หัวเรื่อง
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | Authorization | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API (Bearer) | string | Y | 
  
 พารามิเตอร์เส้นทาง
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | gameIndex | รหัสโปรเจกต์ที่สามารถตรวจสอบได้ในศูนย์แอป Hive console | int | Y | 
  | matchId | รหัสสำหรับแต่ละแมตช์ที่สร้างใน Hive console | int | Y | 
  | playerId | รหัสผู้ใช้ | long | Y | 
 
 การตอบกลับ
 ในกรณีของ 200 OK ข้อมูลใน Body ว่างเปล่า
 ตัวอย่างคำขอ
 curl --location --request DELETE 'https://sandbox-api-match.withhive.com/gameindexes/1/matchmakings/1/players/100' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a'
ตัวอย่างการตอบกลับ
 ไม่มีเนื้อหาการตอบสนองพิเศษเมื่อการประมวลผลสำเร็จ