Session observability
The Session observability service exposes key events that occurred in a multiplayer session. Currently, it supports Matchmaker events.
The Session observability API allows fetching of session details by ID or by the following filter criteria:
- Pool ID
- Pool Name
- Queue Name
- Region ID
- Matchmaking Ticket ID
- Created After
- Updated After
Session details are stored for 30 days from its creation.
Authentication
The Session Observability service uses service account authentication. Service accounts that are granted the project-level Multiplayer Session Details Viewer role will be authorized to make requests to the API for that project.
Session events
Player IDs in session events are anonymized to Player 1
, Player 2
, etc. to comply with policies regarding retention of personal identifiable information. These anonymized IDs are consistent across one session only.
The following session events are currently supported:
Event name | Description |
---|---|
Match Created | A match was created by matchmaker. The matchId of this match is the sessionId of this session. This event contains the teams in this match and the rules applied to create this match. |
Allocation Requested | A Multiplay Hosting allocation was requested for this session in the specified region. |
Allocation Succeeded | The requested Multiplay Hosting allocation was successful. |
Allocation Failed | The requested Multiplay Hosting allocation has failed. |
Players Assigned | Players have been assigned to this session by the matchmaker. |
Backfill Match Created | Requires backfill to be enabled. A match has been created for the backfill ticket associated with this session. This event contains the teams in this match and the rules applied to create this match. |
Players Connected | Requires backfill to be enabled. Players external to the matchmaker have connected to the session. The matchmaker uses backfill updates sent by the DGS to determine these players. |
Players Disconnected | Requires backfill to be enabled. Players external to the matchmaker have disconnected from the session. The matchmaker uses backfill updates sent by the DGS to determine these players. |
Sample session detail
The following is an example of a response received from the API of a session detail where backfill is not enabled.
{
"allocation": {
"completedAt": "2024-03-19T22:12:48.237Z",
"regionId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5",
"requestedAt": "2024-03-19T22:12:47.981Z",
"status": "Allocated"
},
"createdAt": "2024-03-19T22:12:47.847Z",
"environmentId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5",
"gameMode": {
"poolId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5",
"poolName": "default-pool",
"queueId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5",
"queueName": "default-queue"
},
"matchmakingStatus": "OpenNotBackfilling",
"projectId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5",
"sessionEvents": [
{
"appliedRules": [
{
"context": "Team",
"teamId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5",
"name": "Blue Team",
"type": "Difference",
"source": "Players.CustomData.Skill",
"reference": 500,
"not": false,
"externalData": {}
}
],
"teams": [
{
"id": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5",
"name": "Red Team",
"playerIds": [
"Player 1",
"Player 2",
"Player 3",
]
},
{
"id": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5",
"name": "Blue Team",
"playerIds": [
"Player 4",
"Player 5",
"Player 6",
]
}
],
"timestamp": "2024-03-19T22:12:47.847Z",
"type": "match.created"
},
{
"regionId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5",
"timestamp": "2024-03-19T22:12:47.981Z",
"type": "allocation.requested"
},
{
"timestamp": "2024-03-19T22:12:48.237Z",
"type": "allocation.succeeded"
},
{
"assignmentStatus": "Found",
"players": [
{
"customData": {
"Skill": 2000
},
"id": "Player 3",
"qosResults": [],
"ticketId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5"
},
{
"customData": {
"Skill": 1800
},
"id": "Player 4",
"qosResults": [],
"ticketId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5"
},
{
"customData": {
"Skill": 2100
},
"id": "Player 5",
"qosResults": [],
"ticketId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5"
},
{
"customData": {
"Skill": 1750
},
"id": "Player 6",
"qosResults": [],
"ticketId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5"
},
{
"customData": {
"Skill": 1950
},
"id": "Player 1",
"qosResults": [],
"ticketId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5"
},
{
"customData": {
"Skill": 1675
},
"id": "Player 2",
"qosResults": [],
"ticketId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5"
}
],
"timestamp": "2024-03-19T22:12:49.198Z",
"type": "players.assigned"
}
],
"sessionId": "0e5a4f23-5e1a-4a82-80b0-a1bd80019bc5",
"updatedAt": "2024-03-19T22:12:49.198Z"
}