Group Match API
This is the API used for matching in groups, such as acquaintances or friends, during gameplay.
Before making a matching request, two or more app users must create a group, and the group representative will proceed with the matching request.
Note
Group API can only be used when the Match ID setting for Match Unit / Personnel is set to Team.
Create group
This is an API for creating a group to invite members to the same team.
- The creator of the request becomes the group leader (room leader).
- It cannot be used during personal matching requests.
- An entry code for inviting acquaintances is provided upon creation.
- When creating, score information can be entered to correspond to the rules of the
match ID.
Request URL
| LIVE URL | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/group |
| SANDBOX URL | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/group |
| HTTP METHOD | POST |
| CONTENT-TYPE | application/json |
| Field Name | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Path parameters
| Field Name | Description | Type | Required |
| gameIndex | Project identifier that can be checked in the Hive console app center | int | Y |
| matchId | Identifier for each match created in the Hive console | int | Y |
Request body
| Field Name | Description | Type | Required |
| playerId | Account identifier | long | Y |
| point | This is the score to be used for matching. The input range is 0 ~ 999,999,999. If not provided, it will be treated as 0. | integer | N |
| extraData | Additional account information (nickname, level, country, etc.). Up to 256 characters can be entered. It will be included in the matching result. | string | N |
Response
| Field Name | Description | Type |
| groupCode | The code required to enter the group | string |
| ownerPlayerId | The account identifier of the group owner (host) | long |
| memberInfos | Result message | object |
| matchInfo | Information about the gameIndex and matchId the group belongs to | object |
| requstingStatus | Request status information | string |
Request sample
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}'
Response sample
{
"groupCode": "0343322",
"matchInfo": {
"gameIndex": 2,
"matchId": 1
},
"ownerPlayerId": 1,
"memberInfos": [
{
"playerId": 1
}
],
"requestingStatus": "notRequested"
}
Join Group
This is the API used when app users who wish to join a group use the code (groupCode) received from the group leader (room leader) to participate in the group.
Request URL
| LIVE URL | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/groups/code/{code}/member |
| SANDBOX URL | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/groups/code/{code}/member |
| HTTP METHOD | POST |
| Field Name | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Path parameters
| Field Name | Description | Type | Required |
| gameIndex | Project identifier that can be checked in the Hive console app center | int | Y |
| matchId | Each match identifier created in the Hive console | int | Y |
| code | The groupCode value received in the response of the group creation API | string | Y |
Request body
| Field Name | Description | Type | Required |
| playerId | Account identifier | long | Y |
| point | This is the score to be used for matching. The input range is 0 ~ 999,999,999. If not entered, it will be treated as 0. | integer | N |
| extraData | Additional account information (nickname, level, country, etc.). Up to 256 characters can be entered. It will be included in the matching result. | string | N |
Response
| Field Name | Description | Type |
| groupCode | Code to enter the corresponding group | string |
| ownerPlayerId | Identifier for the group leader (host) account | long |
| memberInfos | Result message | object |
| matchInfo | Information about the gameIndex and matchId the group belongs to | object |
| requestingStatus | Request status information | string |
Request sample
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}'
Response sample
{
"groupCode": "0343322",
"matchInfo": {
"gameIndex": 2,
"matchId": 1
},
"ownerPlayerId": 1,
"memberInfo": [
{
"playerId": 1
},
{
"playerId": 2
}
],
"requestingStatus": "notRequested"
}
Leave Group
This is the API used when you want to leave the group you are currently in. If the group leader (room leader) leaves, one of the remaining members will become the next group leader.
If there are no remaining members, the group will be removed.
Request URL
| LIVE URL | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group |
| SANDBOX URL | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group |
| HTTP METHOD | DELETE |
| Field Name | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Path parameters
| Field Name | Description | Type | Required |
| gameIndex | Project identifier available in the Hive console app center | int | Y |
| matchId | Identifier for each match created in the Hive console | int | Y |
| playerId | User ID | long | Y |
Response
In the case of 200 OK, the Body is empty.
Request sample
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'
Response sample
There is no special response content when processed normally.
Group Forced Ejection (Kick-out)
This is an API that allows the group leader (room leader) to forcibly expel a specific member.
요청 URL
| LIVE URL | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group/members/{targetPlayerId} |
| SANDBOX URL | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group/members/{targetPlayerId} |
| HTTP METHOD | DELETE |
헤더 매개변수
| Field Name | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Path parameters
| Field Name | Description | Type | Required |
| gameIndex | Project identifier that can be checked in the Hive console app center | int | Y |
| matchId | Identifier for each match created in the Hive console | int | Y |
| playerId | User ID | long | Y |
| targetPlayerId | ID of the member to be forcibly removed | long | Y |
Response
This is the format of the result data for the group creation API. Only the information of members forcibly removed from the members' information (memberInfos) will be removed.
| Field Name | Description | Type |
| groupCode | Code to enter the corresponding group | string |
| ownerPlayerId | Identifier for the group leader (host) | long |
| memberInfos | Result message | object |
| matchInfo | Information on gameIndex and matchId the group belongs to | object |
| requstingStatus | Request status information | string |
Request sample
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'
Response sample
{
"groupCode": "0343322",
"matchInfo": {
"gameIndex": 2,
"matchId": 1
},
"ownerPlayerId": 1,
"memberInfo": [
{
"playerId": 1
}
],
"requestingStatus": "notRequested"
}
Group Information Retrieval (Based on Group Members)
This is an API that retrieves information about the group to which the app user belongs at the time of the request. It can be used for various purposes, and it is necessary to periodically check through polling.
Usually used for the following purposes.
- Check the list of app users who joined the group
- Check the matching results after the matching request
Request URL
| LIVE URL | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group |
| SANDBOX URL | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group |
| HTTP METHOD | GET |
| Field Name | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Path parameters
| Field Name | Description | Type | Required |
| gameIndex | Project identifier that can be found in the Hive console app center | int | Y |
| matchId | Identifier for each match created in the Hive console | int | Y |
| playerId | User ID | long | Y |
Response
| Field Name | Description | Type |
| groupCode | Code to enter the corresponding group | string |
| ownerPlayerId | Identifier for the group leader's account | long |
| memberInfos | Result message | object |
| matchInfo | Information on gameIndex and matchId of the group | object |
| requstingStatus | Request status information | string |
| requestingInfo | Matching request information | object |
| matchingInfo | Matching progress information | object |
Request sample
curl --location 'http://sandbox-api-match.withhive.com/gameindexes/2/matchmakings/1/players/1/group' --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a'
Response sample
// 매칭 요청 전
{
"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"
}
}
Group Information Retrieval (by Code)
This is an API that checks whether the group exists using the code (groupCode) provided by the group leader (room leader).
요청 URL
| LIVE URL | https://api-match.withhive.com/gameindexes/{gameIndex}/groups |
| SANDBOX URL | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/groups |
| HTTP METHOD | GET |
| Field Name | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Path parameters
| Field Name | Description | Type | Required |
| gameIndex | Project identifier that can be checked in the Hive console app center | int | Y |
Query parameters
| Field Name | Description | Type | Required |
| code | Group code (groupCode) | string | Y |
Response
| Field Name | Description | Type |
| groupCode | Code required to enter the group | string |
| ownerPlayerId | Identifier for the group owner (host) | long |
| matchInfo | Information about the gameIndex and matchId the group belongs to | object |
Request sample
curl --location 'http://sandbox-api-match.withhive.com/gameindexes/2/groups?code=0343322' --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ya3a'
Response sample
{
"groupCode": "0343322",
"matchInfo": {
"gameIndex": 2,
"matchId": 1
},
"ownerPlayerId": 1
}
Member Information Update
This is the API used when a member belonging to a group wants to change their information. The information that can be changed is as follows.
- Ready status (
ready) - The group leader (room leader) is an unused item.\n - Score (
point)\n - Additional information (
extraData)
Request URL
| LIVE URL | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group/memberinfo |
| SANDBOX URL | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/players/{playerId}/group/memberinfo |
| HTTP METHOD | PATCH |
| CONTENT-TYPE | application/json |
| Field Name | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Path parameters
| Field Name | Description | Type | Required |
| gameIndex | Project identifier that can be checked in the Hive console app center | int | Y |
| matchId | Each match identifier created in the Hive console | int | Y |
| playerId | User ID | long | Y |
Request body
| Field Name | Description | Type | Required |
| ready | Ready state | boolean | Y |
| point | This is the score to be used for matching. The input range is 0 ~ 999,999,999. If not entered, it will be treated as 0. | integer | N |
| extraData | Additional account information (nickname, level, country, etc.). Up to 256 characters can be entered. It will be included in the matching result. | string | N |
Response
| Field Name | Description | Type |
| groupCode | Code to enter the corresponding group | string |
| ownerPlayerId | Account identifier of the group leader | long |
| memberInfos | Result message | object |
| matchInfo | Information on gameIndex and matchId the group belongs to | object |
| requstingStatus | Request status information | string |
Request sample
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":""}'
Response sample
{
"groupCode": "0343322",
"matchInfo": {
"gameIndex": 2,
"matchId": 1
},
"ownerPlayerId": 1,
"memberInfo": [
{
"playerId": 1
}
],
"requestingStatus": "notRequested"
}
Matching request
This is the API requested for each group to start matching.
- You must create the match corresponding to
matchId in advance in the console. (Same as personal matching request) - There must be at least 2 members at the time of the request.
- Members who are not the group leader (room leader) must have their 'ready status' (Ready) set to
true. - If there is an existing match in progress, it must be organized (deleted) before making a request.
- Only the group representative (room leader) can make the request.
Request URL
| LIVE URL | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/group/request |
| SANDBOX URL | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/group/request |
| HTTP METHOD | POST |
| CONTENT-TYPE | application/json |
| Field Name | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Path parameters
| Field Name | Description | Type | Required |
| gameIndex | Project identifier that can be checked in the Hive console app center | int | Y |
| matchId | Identifier for each match created in the Hive console | int | Y |
Request body
| Field Name | Description | Type | Required |
| playerId | Account Identifier | long | Y |
Response
| Field Name | Description | Type |
| groupCode | Code to enter the corresponding group | string |
| ownerPlayerId | Identifier for the group leader (host) | long |
| memberInfos | Result message | object |
| matchInfo | Information about gameIndex and matchId the group belongs to | object |
| requstingStatus | Request status information | string |
| requestingInfo | Matching request information | object |
| matchingInfo | Matching progress information | object |
Request sample
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}'
Response sample
{
"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"
}
}
Cancel matching request
Request URL
| LIVE URL | https://api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/group/request |
| SANDBOX URL | https://sandbox-api-match.withhive.com/gameindexes/{gameIndex}/matchmakings/{matchId}/group/request |
| HTTP METHOD | DELETE |
| Field Name | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Path parameters
| Field Name | Description | Type | Required |
| gameIndex | Project identifier that can be checked in the Hive console app center | int | Y |
| matchId | Each match identifier created in the Hive console | int | Y |
Request body
| Field Name | Description | Type | Required |
| playerId | Account Identifier | long | Y |
Response
| Field Name | Description | Type |
| groupCode | Code to enter the group | string |
| ownerPlayerId | Identifier for the group leader | long |
| memberInfos | Result message | object |
| matchInfo | Information on gameIndex and matchId the group belongs to | object |
| requstingStatus | Request status information | string |
Request sample
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}'
Response sample
{
"groupCode": "0343322",
"matchInfo": {
"gameIndex": 2,
"matchId": 1
},
"ownerPlayerId": 1,
"memberInfo": [
{
"playerId": 1
},
{
"playerId": 2
}
],
"requestingStatus": "notRequested"
}
Public response
This is a description of the fields commonly used in the API responses related to groups.
memberInfos
The fields consisting of information about members belonging to the group (including the group leader or room leader) are as follows.
| Field Name | Description | Type |
| playerId | Account Identifier | long |
| ready | Ready State | boolean |
| point | Score entered when joining (updating) the group | integer |
| extraData | Additional information entered when joining (updating) the group | string |
matchInfo
The fields consisting of gameIndex and matchId information to which the group belongs are as follows.
| Field Name | Description | Type |
| gameIndex | The Game Index value of the project registered in the console's App Center | integer |
| matchId | The Match ID registered in the console's Matchmaking | integer |
requestingStatus
The values corresponding to the matching request status field are as follows.
notRequested: Matching not requested requested: Matching requested
requestingInfo
This is the matching request information field.
| Field Name | Description | Type |
| requestTimeUtc | Request time based on UTC+0 | string |
matchingInfo
The fields consisting of matching progress information are as follows.
| Field Name | Description | Type |
| status | Matching progress status | string |
| matchingId | The Id assigned to the matched pairing. Added when the above status is matched. | string |
| privateInfos | (In case of individual matches) Outputs an array of matched app users' information. | array |
| teamInfos | (In case of team matches) Outputs an array of matched app users' information. | array |
matchingInfo → status
The values corresponding to the status field in the matching progress information are as follows.
matchingInProgress : Matching in progress timeout : No match was made within the time limit matched : Match successful
matchingInfo → privateInfos
The fields that make up the personal matching app user information among the matching progress information are as follows. It is in the same data format as matchingInfo → teamInfos → playerInfos.
| Field Name | Description | Type |
| playerId | Account identifier. Needs to be processed as bot if 0 | long |
| point | Score entered when joining (updating) the group | integer |
| extraData | Additional information entered when joining (updating) the group | string |
matchingInfo → teamInfos
The fields that make up the team information matched in the group matching of the matching progress information are as follows.
| Field Name | Description | Type |
| teamIndex | Value for distinguishing teams, starting from 0 | integer |
| playerInfos | Information about app users belonging to the team | array |
matchingInfo → teamInfos → playerInfos
The fields that configure the app user information of the teams matched in the matching progress are as follows.
It is in the same data format as matchingInfo → privateInfos.
| Field Name | Description | Type |
| playerId | Account identifier. Needs to be processed as bot if 0 | long |
| point | Score entered when joining (updating) the group | integer |
| extraData | Additional information entered when joining (updating) the group | string |