API การจับคู่กลุ่ม
 นี่คือ API ที่ใช้สำหรับการจับคู่ในกลุ่ม เช่น คนรู้จักหรือเพื่อน ในระหว่างการเล่นเกม. 
 ก่อนที่จะทำการขอจับคู่ ผู้ใช้แอปสองคนขึ้นไปจะต้องสร้าง กลุ่ม และตัวแทนกลุ่มจะดำเนินการขอจับคู่
  Note
 การใช้ API กลุ่มสามารถทำได้เมื่อการตั้งค่า Match ID สำหรับ Match Unit / Personnel ถูกตั้งค่าเป็น Team
   สร้างกลุ่ม
 นี่คือ API สำหรับการสร้างกลุ่มเพื่อเชิญสมาชิกเข้าร่วมทีมเดียวกัน
  - ผู้สร้างคำขอจะกลายเป็นผู้นำกลุ่ม (ผู้นำห้อง)。
- ไม่สามารถใช้ในระหว่างคำขอการจับคู่ส่วนบุคคลได้。
- รหัสการเข้าร่วมสำหรับเชิญคนรู้จักจะถูกจัดเตรียมเมื่อสร้าง。
- เมื่อสร้าง สามารถป้อนข้อมูลคะแนนเพื่อให้สอดคล้องกับกฎของ match ID。
URL การร้องขอ
    | ลิงก์สด | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/group | 
    | ลิงก์แซนด์บ็อกซ์ | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/group | 
  | วิธีการ HTTP | POST | 
  | ประเภทเนื้อหา | application/json | 
  
 พารามิเตอร์หัวเรื่อง
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | การอนุญาต | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API (Bearer) | string | Y | 
  
 พารามิเตอร์เส้นทาง
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | gameIndex | รหัสโปรเจกต์ที่สามารถตรวจสอบได้ในศูนย์แอป Hive console | int | Y | 
  | matchId | รหัสสำหรับแต่ละแมตช์ที่สร้างขึ้นใน Hive console | int | Y | 
 
 เนื้อหาคำขอ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | playerId | ตัวระบุบัญชี | long | ใช่ | 
  | point | นี่คือคะแนนที่จะใช้ในการจับคู่ ช่วงค่าที่ป้อนคือ 0 ~ 999,999,999หากไม่ระบุ จะถือว่าเป็น0. | integer | ไม่ | 
  | extraData | ข้อมูลบัญชีเพิ่มเติม (ชื่อเล่น, ระดับ, ประเทศ ฯลฯ) สามารถป้อนได้สูงสุด 256 ตัวอักษร จะรวมอยู่ในผลลัพธ์การจับคู่ | string | ไม่ | 
  
 การตอบกลับ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | groupCode | รหัสที่จำเป็นในการเข้ากลุ่ม | string | 
  | ownerPlayerId | รหัสประจำตัวบัญชีของเจ้าของกลุ่ม (โฮสต์) | long | 
  | memberInfos | ข้อความผลลัพธ์ | object | 
  | matchInfo | ข้อมูลเกี่ยวกับ gameIndexและmatchIdที่กลุ่มเกี่ยวข้อง | object | 
  | requstingStatus | ข้อมูลสถานะการร้องขอ | string | 
  
 ตัวอย่างคำขอ
 curl --location 'http://sandbox-api-match.withhive.com/gameindexes/2/matchmakings/1/group' --header 'Content-Type: application/json' --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a' --data '{"playerId":1}'
ตัวอย่างการตอบกลับ
 {
    "groupCode": "0343322",
    "matchInfo": {
        "gameIndex": 2,
        "matchId": 1
    },
    "ownerPlayerId": 1,
    "memberInfos": [
        {
            "playerId": 1
        }
    ],
    "requestingStatus": "notRequested"
}
เข้าร่วมกลุ่ม
 นี่คือ API ที่ใช้เมื่อผู้ใช้แอปที่ต้องการเข้าร่วมกลุ่มใช้รหัส (groupCode) ที่ได้รับจากผู้นำกลุ่ม (ผู้นำห้อง) เพื่อเข้าร่วมกลุ่ม
 URL การร้องขอ
    | URL สด | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/groups/code/{code}/member | 
    | URL แซนด์บ็อกซ์ | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/groups/code/{code}/member | 
  | วิธีการ HTTP | POST | 
  
 พารามิเตอร์หัวเรื่อง
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | การอนุญาต | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API (Bearer) | string | ใช่ | 
  
 พารามิเตอร์เส้นทาง
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | gameIndex | รหัสโปรเจกต์ที่สามารถตรวจสอบได้ในศูนย์แอป Hive console | int | ใช่ | 
  | matchId | รหัสการแข่งขันแต่ละรายการที่สร้างขึ้นใน Hive console | int | ใช่ | 
  | code | ค่า groupCodeที่ได้รับในคำตอบของ API การสร้างกลุ่ม | string | ใช่ | 
 
 เนื้อหาคำขอ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | playerId | รหัสประจำตัวบัญชี | long | Y | 
  | point | นี่คือคะแนนที่จะใช้ในการจับคู่ ช่วงค่าที่ป้อนคือ 0 ~ 999,999,999หากไม่ป้อน จะถือว่าเป็น0. | integer | N | 
  | extraData | ข้อมูลบัญชีเพิ่มเติม (ชื่อเล่น, ระดับ, ประเทศ, ฯลฯ) สามารถป้อนได้สูงสุด 256 ตัวอักษร จะถูกนำไปใช้ในผลลัพธ์การจับคู่ | string | N | 
  
 การตอบกลับ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | groupCode | รหัสเพื่อเข้าสู่กลุ่มที่เกี่ยวข้อง | string | 
  | ownerPlayerId | รหัสประจำตัวสำหรับบัญชีผู้นำกลุ่ม (โฮสต์) | long | 
  | memberInfos | ข้อความผลลัพธ์ | object | 
  | matchInfo | ข้อมูลเกี่ยวกับ gameIndexและmatchIdที่กลุ่มเกี่ยวข้อง | object | 
  | requestingStatus | ข้อมูลสถานะการร้องขอ | string | 
  
 ตัวอย่างคำขอ
 curl --location 'http://sandbox-api-match.withhive.com/gameindexes/2/matchmakings/1/groups/code/0343322/member' --header 'Content-Type: application/json' --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a' --data '{"playerId":2}'
ตัวอย่างการตอบกลับ
 {
    "groupCode": "0343322",
    "matchInfo": {
        "gameIndex": 2,
        "matchId": 1
    },
    "ownerPlayerId": 1,
    "memberInfo": [
        {
            "playerId": 1
        },
        {
            "playerId": 2
        }
    ],
    "requestingStatus": "notRequested"
}
ออกจากกลุ่ม
 นี่คือ API ที่ใช้เมื่อคุณต้องการออกจากกลุ่มที่คุณอยู่ในขณะนี้ หากผู้นำกลุ่ม (ผู้นำห้อง) ออกไป หนึ่งในสมาชิกที่เหลือจะกลายเป็นผู้นำกลุ่มคนถัดไป
 หากไม่มีสมาชิกที่เหลืออยู่ กลุ่มจะถูกลบออก
 URL ที่ร้องขอ
    | ลิงก์สด | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group | 
    | ลิงก์แซนด์บ็อกซ์ | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group | 
  | วิธีการ HTTP | DELETE | 
  
 พารามิเตอร์หัวเรื่อง
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | การอนุญาต | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API (Bearer) | string | ใช่ | 
  
 พารามิเตอร์เส้นทาง
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | gameIndex | รหัสโปรเจกต์ที่มีอยู่ในศูนย์แอปของ Hive console | int | ใช่ | 
  | matchId | รหัสสำหรับแต่ละแมตช์ที่สร้างใน Hive console | int | ใช่ | 
  | playerId | รหัสผู้ใช้ | long | ใช่ | 
 
 การตอบกลับ
 ในกรณีของ 200 OK ร่างกายว่างเปล่า
 ตัวอย่างคำขอ
 curl --location --request DELETE 'http://sandbox-api-match.withhive.com/gameindexes/2/matchmakings/1/players/2/group' --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a'
ตัวอย่างการตอบกลับ
 ไม่มีเนื้อหาการตอบสนองพิเศษเมื่อประมวลผลตามปกติ
 การไล่กลุ่ม (Kick-out)
 นี่คือ API ที่อนุญาตให้หัวหน้ากลุ่ม (หัวหน้าห้อง) ขับไล่สมาชิกเฉพาะออกไปโดยไม่สมัครใจ
 URL ที่ร้องขอ
    | ลิงก์สด | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group/members/{targetPlayerId} | 
    | ลิงก์แซนด์บ็อกซ์ | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group/members/{targetPlayerId} | 
  | วิธีการ HTTP | DELETE | 
  
 พารามิเตอร์ส่วนหัว
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | การอนุญาต | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API (Bearer) | string | Y | 
  
 พารามิเตอร์เส้นทาง
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | gameIndex | รหัสโปรเจกต์ที่สามารถตรวจสอบได้ในศูนย์แอป Hive console | int | ใช่ | 
  | matchId | รหัสสำหรับแต่ละแมตช์ที่สร้างใน Hive console | int | ใช่ | 
  | playerId | รหัสผู้ใช้ | long | ใช่ | 
  | targetPlayerId | รหัสของสมาชิกที่จะถูกบังคับให้ออกจาก | long | ใช่ | 
 
 การตอบกลับ
 นี่คือรูปแบบของข้อมูลผลลัพธ์สำหรับ API การสร้างกลุ่ม ข้อมูลของสมาชิกที่ถูกบังคับให้ออกจากข้อมูลสมาชิก (memberInfos) จะถูกลบออกเท่านั้น
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | groupCode | รหัสเพื่อเข้าสู่กลุ่มที่เกี่ยวข้อง | string | 
  | ownerPlayerId | ตัวระบุสำหรับผู้นำกลุ่ม (โฮสต์) | long | 
  | memberInfos | ข้อความผลลัพธ์ | object | 
  | matchInfo | ข้อมูลเกี่ยวกับ gameIndexและmatchIdที่กลุ่มเป็นสมาชิก | object | 
  | requstingStatus | ข้อมูลสถานะการร้องขอ | string | 
  
 ตัวอย่างคำขอ
 curl --location --request DELETE 'http://sandbox-api-match.withhive.com/gameindexes/2/matchmakings/1/players/1/group/members/2' --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a'
ตัวอย่างการตอบกลับ
 {
    "groupCode": "0343322",
    "matchInfo": {
        "gameIndex": 2,
        "matchId": 1
    },
    "ownerPlayerId": 1,
    "memberInfo": [
        {
            "playerId": 1
        }
    ],
    "requestingStatus": "notRequested"
}
การดึงข้อมูลกลุ่ม (ตามสมาชิกกลุ่ม)
 นี่คือ API ที่ดึงข้อมูลเกี่ยวกับกลุ่มที่ผู้ใช้แอปอยู่ในขณะทำการร้องขอ มันสามารถใช้ได้สำหรับวัตถุประสงค์ต่างๆ และจำเป็นต้องตรวจสอบเป็นระยะๆ ผ่านการ polling
 มักใช้สำหรับวัตถุประสงค์ต่อไปนี้
  - ตรวจสอบรายชื่อผู้ใช้แอปที่เข้าร่วมกลุ่ม
- ตรวจสอบผลการจับคู่หลังจากคำขอการจับคู่
URL ที่ร้องขอ
    | ลิงก์สด | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group | 
    | ลิงก์แซนด์บ็อกซ์ | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group | 
  | วิธีการ HTTP | GET | 
  
 พารามิเตอร์หัวข้อ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | การอนุญาต | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API (Bearer) | string | Y | 
  
 พารามิเตอร์เส้นทาง
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | gameIndex | รหัสโปรเจกต์ที่สามารถพบได้ในศูนย์แอป Hive console | int | ใช่ | 
  | matchId | รหัสสำหรับแต่ละแมตช์ที่สร้างขึ้นใน Hive console | int | ใช่ | 
  | playerId | รหัสผู้ใช้ | long | ใช่ | 
 
 การตอบกลับ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | groupCode | รหัสเพื่อเข้าสู่กลุ่มที่ соответств | string | 
  | ownerPlayerId | รหัสประจำตัวของบัญชีผู้นำกลุ่ม | long | 
  | memberInfos | ข้อความผลลัพธ์ | object | 
  | matchInfo | ข้อมูลเกี่ยวกับ gameIndexและmatchIdของกลุ่ม | object | 
  | requstingStatus | ข้อมูลสถานะการร้องขอ | string | 
  | requestingInfo | ข้อมูลการร้องขอการจับคู่ | object | 
  | matchingInfo | ข้อมูลความก้าวหน้าการจับคู่ | object | 
  
 ตัวอย่างคำขอ
 curl --location 'http://sandbox-api-match.withhive.com/gameindexes/2/matchmakings/1/players/1/group' --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a'
ตัวอย่างการตอบกลับ
 // 매칭 요청 전
{
    "groupCode": "0343322",
    "matchInfo": {
        "gameIndex": 2,
        "matchId": 1
    },
    "ownerPlayerId": 1,
    "memberInfo": [
        {
            "playerId": 1
        }
    ],
    "requestingStatus": "notRequested"
}
// 매칭이 성사된 이후 (2:2 팀전)
{
    "groupCode": "3683207",
    "matchInfo": {
        "gameIndex": 2,
        "matchId": 1
    },
    "ownerPlayerId": 1,
    "memberInfo": [
        {
            "playerId": 1,
            "ready": true
        },
        {
            "playerId": 2,
            "ready": true
        }
    ],
    "matchingInfo": {
        "status": "matched",
        "matchingId": "2:1_2024-12-18T06:55:19.91_1",
        "teamInfos": [
            {
                "teamIndex": 0,
                "playerInfos": [
                    {
                        "playerId": 4,
                        "point": 50,
                        "extraData": "bbb"
                    },
                    {
                        "playerId": 3,
                        "extraData": "aaa"
                    }
                ]
            },
            {
                "teamIndex": 1,
                "playerInfos": [
                    {
                        "playerId": 1,
                        "extraData": "extra1"
                    },
                    {
                        "playerId": 2,
                        "point": 250,
                        "extraData": "aaa"
                    }
                ]
            }
        ]
    },
    "requestingStatus": "requested",
    "requestingInfo": {
        "requestTimeUtc": "2024-12-18T06:55:19.17"
    }
}
// 매칭 시간이 초과된 경우(timeout)
{
    "groupCode": "0400606",
    "matchInfo": {
        "gameIndex": 2,
        "matchId": 1
    },
    "ownerPlayerId": 1,
    "memberInfo": [
        {
            "playerId": 1,
            "ready": true
        },
        {
            "playerId": 2,
            "ready": true
        }
    ],
    "matchingInfo": {
        "status": "timeout"
    },
    "requestingStatus": "requested",
    "requestingInfo": {
        "requestTimeUtc": "2024-12-20T06:37:47.99"
    }
}
การดึงข้อมูลกลุ่ม (ตามรหัส)
 นี่คือ API ที่ตรวจสอบว่ากลุ่มมีอยู่จริงหรือไม่ โดยใช้รหัส (groupCode) ที่จัดเตรียมโดยหัวหน้ากลุ่ม (หัวหน้าห้อง)
 URL ที่ร้องขอ
    | ลิงก์สด | https://api-match.withhive.com/gameindexes/{gameIndex}/groups | 
    | ลิงก์แซนด์บ็อกซ์ | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/groups | 
  | วิธีการ HTTP | GET | 
  
 พารามิเตอร์หัวเรื่อง
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | การอนุญาต | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API (Bearer) | string | Y | 
  
 พารามิเตอร์เส้นทาง
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | gameIndex | รหัสประจำโปรเจกต์ที่สามารถตรวจสอบได้ในศูนย์แอป Hive console | int | Y | 
 
 พารามิเตอร์การค้นหา
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | รหัส | รหัสกลุ่ม ( groupCode) | สตริง | ใช่ | 
 
 การตอบกลับ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | groupCode | รหัสที่จำเป็นในการเข้ากลุ่ม | สตริง | 
  | ownerPlayerId | รหัสประจำตัวของเจ้าของกลุ่ม (โฮสต์) | ยาว | 
  | matchInfo | ข้อมูลเกี่ยวกับ gameIndexและmatchIdที่กลุ่มนั้นเกี่ยวข้อง | อ็อบเจ็กต์ | 
  
 ตัวอย่างคำขอ
 curl --location 'http://sandbox-api-match.withhive.com/gameindexes/2/groups?code=0343322' --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a'
ตัวอย่างการตอบกลับ
 {
    "groupCode": "0343322",
    "matchInfo": {
        "gameIndex": 2,
        "matchId": 1
    },
    "ownerPlayerId": 1
}
การอัปเดตข้อมูลสมาชิก
 นี่คือ API ที่ใช้เมื่อสมาชิกในกลุ่มต้องการเปลี่ยนข้อมูลของตน ข้อมูลที่สามารถเปลี่ยนแปลงได้มีดังนี้
  - สถานะพร้อม (ready) - หัวหน้ากลุ่ม (หัวหน้าห้อง) เป็นรายการที่ไม่ได้ใช้งาน.\n
- คะแนน (point)\n
- ข้อมูลเพิ่มเติม (extraData)
URL ที่ร้องขอ
    | ลิงก์สด | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group/memberinfo | 
    | ลิงก์แซนด์บ็อกซ์ | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group/memberinfo | 
  | วิธีการ HTTP | PATCH | 
  | ประเภทเนื้อหา | application/json | 
  
 พารามิเตอร์หัวเรื่อง
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | Authorization | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API (Bearer) | string | Y | 
  
 พารามิเตอร์เส้นทาง
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | gameIndex | รหัสโปรเจกต์ที่สามารถตรวจสอบได้ในศูนย์แอป Hive console | int | ใช่ | 
  | matchId | รหัสการแข่งขันแต่ละรายการที่สร้างขึ้นใน Hive console | int | ใช่ | 
  | playerId | รหัสผู้ใช้ | long | ใช่ | 
 
 เนื้อหาคำขอ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | ready | สถานะพร้อม | boolean | Y | 
  | point | นี่คือคะแนนที่จะใช้สำหรับการจับคู่ ช่วงค่าข้อมูลคือ 0 ~ 999,999,999หากไม่กรอก จะถือว่าเป็น0. | integer | N | 
  | extraData | ข้อมูลบัญชีเพิ่มเติม (ชื่อเล่น, ระดับ, ประเทศ ฯลฯ) สามารถกรอกได้สูงสุด 256 ตัวอักษร จะรวมอยู่ในผลลัพธ์การจับคู่ | string | N | 
  
 การตอบกลับ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | groupCode | รหัสเพื่อเข้าสู่กลุ่มที่เกี่ยวข้อง | string | 
  | ownerPlayerId | รหัสบัญชีของผู้นำกลุ่ม | long | 
  | memberInfos | ข้อความผลลัพธ์ | object | 
  | matchInfo | ข้อมูลเกี่ยวกับ gameIndexและmatchIdที่กลุ่มเกี่ยวข้อง | object | 
  | requstingStatus | ข้อมูลสถานะการขอ | string | 
  
 ตัวอย่างคำขอ
 curl --location --request PATCH 'http://sandbox-api-match.withhive.com/gameindexes/2/matchmakings/1/players/2/group/memberinfo' --header 'Content-Type: application/json' --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a' --data '{"ready":false,"point":0,"extraData":""}'
ตัวอย่างการตอบกลับ
 {
    "groupCode": "0343322",
    "matchInfo": {
        "gameIndex": 2,
        "matchId": 1
    },
    "ownerPlayerId": 1,
    "memberInfo": [
        {
            "playerId": 1
        }
    ],
    "requestingStatus": "notRequested"
}
การจับคู่คำขอ
 นี่คือ API ที่ร้องขอสำหรับแต่ละกลุ่มเพื่อเริ่มการจับคู่
  - คุณต้องสร้างการแข่งขันที่ตรงกับ matchIdล่วงหน้าในคอนโซล (เช่นเดียวกับคำขอการจับคู่ส่วนบุคคล)
- จะต้องมีสมาชิกอย่างน้อย 2 คนในขณะทำการขอ 
- สมาชิกที่ไม่ใช่หัวหน้ากลุ่ม (หัวหน้าห้อง) จะต้องตั้งสถานะ 'พร้อม' (Ready) เป็น true
- หากมีการแข่งขันที่กำลังดำเนินอยู่ จะต้องถูกจัดระเบียบ (ลบ) ก่อนที่จะทำการขอ 
- เฉพาะตัวแทนกลุ่ม (หัวหน้าห้อง) เท่านั้นที่สามารถทำการขอได้
URL การร้องขอ
    | URL สด | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/group/request | 
    | URL แซนด์บ็อกซ์ | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/group/request | 
  | วิธีการ HTTP | POST | 
  | ประเภทเนื้อหา | application/json | 
  
 พารามิเตอร์หัวเรื่อง
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | Authorization | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API (Bearer) | string | Y | 
  
 พารามิเตอร์เส้นทาง
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | gameIndex | รหัสโปรเจกต์ที่สามารถตรวจสอบได้ในศูนย์แอป Hive console | int | ใช่ | 
  | matchId | รหัสสำหรับแต่ละแมตช์ที่สร้างขึ้นใน Hive console | int | ใช่ | 
 
 เนื้อหาคำขอ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | playerId | รหัสบัญชี | long | Y | 
  
 การตอบกลับ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | groupCode | รหัสเพื่อเข้าสู่กลุ่มที่เกี่ยวข้อง | string | 
  | ownerPlayerId | รหัสประจำตัวของผู้นำกลุ่ม (โฮสต์) | long | 
  | memberInfos | ข้อความผลลัพธ์ | object | 
  | matchInfo | ข้อมูลเกี่ยวกับ gameIndexและmatchIdที่กลุ่มเป็นส่วนหนึ่ง | object | 
  | requstingStatus | ข้อมูลสถานะการร้องขอ | string | 
  | requestingInfo | ข้อมูลการร้องขอการจับคู่ | object | 
  | matchingInfo | ข้อมูลความก้าวหน้าของการจับคู่ | object | 
  
 ตัวอย่างคำขอ
 curl --location 'http://sandbox-api-match.withhive.com/gameindexes/2/matchmakings/1/group/request' --header 'Content-Type: application/json' --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a' --data '{"playerId":1}'
ตัวอย่างการตอบกลับ
 {
    "groupCode": "0343322",
    "matchInfo": {
        "gameIndex": 2,
        "matchId": 1
    },
    "ownerPlayerId": 1,
    "memberInfo": [
        {
            "playerId": 1
        },
        {
            "playerId": 2,
            "ready": true
        }
    ],
    "matchingInfo": {
        "status": "matchingInProgress"
    },
    "requestingStatus": "requested",
    "requestingInfo": {
        "requestTimeUtc": "2024-12-05T07:35:35.15"
    }
}
ยกเลิกคำขอการจับคู่
 URL การร้องขอ
    | URL สด | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/group/request | 
    | URL แซนด์บ็อกซ์ | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/group/request | 
  | วิธีการ HTTP | DELETE | 
  
 พารามิเตอร์หัวเรื่อง
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | การอนุญาต | โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API (Bearer) | string | Y | 
  
 พารามิเตอร์เส้นทาง
   | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | gameIndex | รหัสโปรเจกต์ที่สามารถตรวจสอบได้ในศูนย์แอป Hive console | int | ใช่ | 
  | matchId | รหัสการแข่งขันแต่ละรายการที่สร้างขึ้นใน Hive console | int | ใช่ | 
 
 เนื้อหาคำขอ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
  | playerId | รหัสบัญชี | long | Y | 
  
 การตอบกลับ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | groupCode | รหัสสำหรับเข้ากลุ่ม | string | 
  | ownerPlayerId | ตัวระบุสำหรับหัวหน้ากลุ่ม | long | 
  | memberInfos | ข้อความผลลัพธ์ | object | 
  | matchInfo | ข้อมูลเกี่ยวกับ gameIndexและmatchIdที่กลุ่มเกี่ยวข้อง | object | 
  | requstingStatus | ข้อมูลสถานะการขอ | string | 
  
 ตัวอย่างคำขอ
 curl --location --request DELETE 'https://sandbox-api-match.withhive.com/gameindexes/2/matchmakings/1/group/request' --header 'Content-Type: application/json' --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a' --data '{"playerId":3}'
ตัวอย่างการตอบกลับ
 {
    "groupCode": "0343322",
    "matchInfo": {
        "gameIndex": 2,
        "matchId": 1
    },
    "ownerPlayerId": 1,
    "memberInfo": [
        {
            "playerId": 1
        },
        {
            "playerId": 2
        }
    ],
    "requestingStatus": "notRequested"
}
การตอบสนองสาธารณะ
 นี่คือคำอธิบายของฟิลด์ที่ใช้บ่อยในคำตอบ API ที่เกี่ยวข้องกับกลุ่ม
 memberInfos
 ข้อมูลเกี่ยวกับสมาชิกที่อยู่ในกลุ่ม (รวมถึงหัวหน้ากลุ่มหรือหัวหน้าห้อง) มีดังต่อไปนี้ 
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | playerId | ตัวระบุบัญชี | long | 
  | ready | สถานะพร้อม | boolean | 
  | point | คะแนนที่ป้อนเมื่อเข้าร่วม (อัปเดต) กลุ่ม | integer | 
  | extraData | ข้อมูลเพิ่มเติมที่ป้อนเมื่อเข้าร่วม (อัปเดต) กลุ่ม | string | 
  
 matchInfo
 ฟิลด์ที่ประกอบด้วยข้อมูล gameIndex และ matchId ที่กลุ่มเป็นสมาชิกมีดังนี้
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | gameIndex | ค่าของ Game Indexของโปรเจกต์ที่ลงทะเบียนในApp Centerของคอนโซล | จำนวนเต็ม | 
  | matchId | Match IDที่ลงทะเบียนในMatchmakingของคอนโซล | จำนวนเต็ม | 
  
 requestingStatus
 ค่าที่ตรงกับฟิลด์สถานะคำขอที่ตรงกันมีดังต่อไปนี้
  - notRequested: ไม่ได้ขอให้จับคู่
- requested: ขอให้จับคู่
requestingInfo
 นี่คือฟิลด์ข้อมูลคำขอที่ตรงกัน
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | requestTimeUtc | เวลาที่ร้องขอโดยอิงจาก UTC+0 | string | 
  
 matchingInfo
 ฟิลด์ที่ประกอบด้วยข้อมูลความก้าวหน้าที่ตรงกันมีดังต่อไปนี้
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | สถานะ | สถานะความก้าวหน้าของการจับคู่ | string | 
  | matchingId | รหัสที่กำหนดให้กับการจับคู่ที่ตรงกัน เพิ่มเมื่อ สถานะ ข้างต้นเป็น matched. | string | 
  | ข้อมูลส่วนตัว | (ในกรณีที่มีการจับคู่แบบบุคคล) แสดงอาร์เรย์ของข้อมูลผู้ใช้แอปที่ตรงกัน. | array | 
  | ข้อมูลทีม | (ในกรณีที่มีการจับคู่แบบทีม) แสดงอาร์เรย์ของข้อมูลผู้ใช้แอปที่ตรงกัน. | array | 
  
 matchingInfo → สถานะ
 ค่าที่ตรงกับฟิลด์สถานะในข้อมูลความก้าวหน้าที่ตรงกันมีดังนี้
  - matchingInProgress: กำลังจับคู่
- timeout: ไม่พบการจับคู่ภายในเวลาที่กำหนด
- matched: การจับคู่สำเร็จ
matchingInfo → privateInfos
 ข้อมูลที่ประกอบขึ้นเป็นข้อมูลผู้ใช้แอปการจับคู่ส่วนบุคคลในระหว่างข้อมูลความก้าวหน้าของการจับคู่มีดังต่อไปนี้ มันอยู่ในรูปแบบข้อมูลเดียวกันกับ matchingInfo → teamInfos → playerInfos。
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | playerId | ตัวระบุบัญชี ต้องถูกประมวลผลเป็นบอทหากเป็น 0 | long | 
  | point | คะแนนที่ป้อนเมื่อเข้าร่วม (อัปเดต) กลุ่ม | integer | 
  | extraData | ข้อมูลเพิ่มเติมที่ป้อนเมื่อเข้าร่วม (อัปเดต) กลุ่ม | string | 
  
 matchingInfo → teamInfos
 ข้อมูลในฟิลด์ที่ประกอบเป็นข้อมูลทีมที่ตรงกันในกลุ่มการจับคู่ของข้อมูลความก้าวหน้าการจับคู่มีดังต่อไปนี้
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | teamIndex | ค่าที่ใช้ในการแยกแยะทีม โดยเริ่มจาก 0 | จำนวนเต็ม | 
  | playerInfos | ข้อมูลเกี่ยวกับผู้ใช้แอปที่เป็นสมาชิกของทีม | อาร์เรย์ | 
  
 matchingInfo → teamInfos → playerInfos
 ฟิลด์ที่กำหนดข้อมูลผู้ใช้แอปของทีมที่ตรงกันในกระบวนการจับคู่มีดังต่อไปนี้.
 มันอยู่ในรูปแบบข้อมูลเดียวกันกับ matchingInfo → privateInfos.
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | 
    | playerId | ตัวระบุบัญชี ต้องถูกประมวลผลเป็นบอทหากเป็น 0 | long | 
  | point | คะแนนที่ป้อนเมื่อเข้าร่วม (อัปเดต) กลุ่ม | integer | 
  | extraData | ข้อมูลเพิ่มเติมที่ป้อนเมื่อเข้าร่วม (อัปเดต) กลุ่ม | string |