Bragi - Game-specific schemas: Counter-Strike 2
This article is section 6.1 of Oddin.gg Bragi - Data Feed documentation. Sections 1 to 5 there cover general information, the match timeline, processing the data feed, match events and team profiles.
Other game schemas: Dota 2 · League of Legends · Valorant · eBasketball · eFootball · eCricket
6.1. Counter-Strike 2 (CS2)
The CS2 schema models a Counter-Strike 2 match as a series of maps; each map is played as a series of rounds. State is kept for the match overall, for the current map, for the current round, for each team, and for each player on each team.
6.1.1. Top-level CS2 messages
CS2MatchMessage
A concrete implementation of the (Game)MatchMessage pattern (see section 3.5.2.2).
| Field | Type | Description |
match_urn |
string |
Match identifier. |
sequence |
uint64 |
Sequence number; must be exactly cached sequence + 1. |
timestamp |
google.protobuf.Timestamp |
Time the message was produced. |
data_status |
DataStatus |
Quality flag for the underlying data. |
payload |
CS2MatchMessage.Payload |
Oneof: snapshot (CS2MatchSnapshot) or update (CS2MatchUpdate). |
CS2MatchSnapshot
A concrete implementation of the (Game)MatchSnapshot pattern. Cache the snapshot in memory and update it with later messages.
| Field | Type | Description |
match_urn |
string |
Match identifier. |
sequence |
uint64 |
Initial sequence number. |
timestamp |
google.protobuf.Timestamp |
Snapshot timestamp. |
data_status |
DataStatus |
Quality flag for the underlying data. |
announcements |
repeated Announcement |
Operational announcements for the match. |
match_state |
CS2MatchState |
Full current state of the match. |
tournament |
Tournament |
Tournament the match belongs to. |
CS2MatchUpdate
| Field | Type | Description |
payload |
CS2MatchUpdate.Payload |
Oneof: match_state (a full CS2MatchState) or partial_updates (CS2MatchStatePartialUpdates). |
events |
repeated CS2Event |
Deprecated. Use MatchEventsFeed instead. |
CS2MatchStatePartialUpdates
| Field | Type | Description |
updates |
repeated CS2MatchStatePartialUpdate |
Non-empty list of partial updates to apply to the cached CS2MatchState. |
CS2MatchEvents
| Field | Type | Description |
match_urn |
string |
Match this batch of events belongs to. |
events |
repeated CS2Event |
Events for the match (full history on the first frame, individual events on later frames). |
6.1.2. CS2 match-level state
CS2MatchStatePartialUpdate
Oneof choosing which sub-state of CS2MatchState to update.
| Field | Type | Description |
score |
CS2MatchScoreState |
Replaces the score property of CS2MatchState. |
current_map_state |
CS2CurrentMapState |
Replaces the current_map_state property of CS2MatchState. To reduce the risk of stale data on the current map, the server sends this partial update at a customer-configurable interval. |
current_map_state_partial_update |
CS2CurrentMapStatePartialUpdate |
Applies a partial update to the current_map_state property. |
There is no dedicated partial update for previous_map_states. When a previous map state changes, the server sends a full CS2MatchState update.
CS2MatchState
| Field | Type | Description |
match_urn |
string |
Match identifier. |
match_type |
BestOfType |
Best-of format (BO1, BO3, BO5, etc.). |
home_team |
CS2Team |
Home team. |
away_team |
CS2Team |
Away team. |
score |
CS2MatchScoreState |
Series score (maps won by each team). |
win_team_urn |
string (optional) |
URN of the winning team, once the match has finished. |
match_status |
MatchStatusType |
Current status of the match. |
current_map_state |
CS2CurrentMapState |
State of the map currently in play. |
previous_map_states |
repeated CS2PreviousMapState |
States of the maps already finished. Updated only when a full CS2MatchState is received. |
CS2MatchScoreState
| Field | Type | Description |
home_score |
uint32 |
Number of maps won by the home team. |
away_score |
uint32 |
Number of maps won by the away team. |
CS2Team
| Field | Type | Description |
team_urn |
string |
Unique team URN. |
team_name |
string |
Team display name. |
6.1.3. CS2 current map state
CS2CurrentMapStatePartialUpdate
Oneof choosing which sub-state of CS2CurrentMapState to update.
| Field | Type | Description |
info |
CS2MapInfoState |
Replaces the info property of CS2CurrentMapState (referred to in the schema as CS2MapState). |
score |
CS2MapScoreState |
Replaces the score property of the current map. |
current_round_state |
CS2CurrentRoundState |
Replaces the current_round_state property of the current map. |
current_round_state_partial_update |
CS2CurrentRoundStatePartialUpdate |
Applies a partial update to the current round state. |
team_map_states_partial_update |
CS2TeamMapStatePartialUpdate |
Applies a partial update to the value stored under a particular team URN in the team_map_states map. |
CS2CurrentMapState
| Field | Type | Description |
map_order |
uint32 |
Ordinal number of this map within the series (1 = first map, and so on). |
info |
CS2MapInfoState |
Static information about the map (name, time limits, etc.). |
score |
CS2MapScoreState |
Current score on this map. |
current_round_state |
CS2CurrentRoundState |
State of the round currently in play. |
previous_round_states |
repeated CS2PreviousRoundState |
States of every round already finished on this map. Updated only when a full CS2MapState is received. |
team_map_states |
map<string, CS2TeamMapState> |
Per-team state on this map, keyed by team URN. |
CS2PreviousMapState
| Field | Type | Description |
map_order |
uint32 |
Ordinal number of this map within the series. |
info |
CS2MapInfoState |
Information about the map. |
score |
CS2MapScoreState |
Final score on this map. |
round_states |
repeated CS2PreviousRoundState |
Every round played on this map. |
team_map_states |
map<string, CS2TeamMapState> |
Per-team final state on this map. |
CS2MapInfoState
| Field | Type | Description |
map_name |
string |
Map name, e.g., de_mirage. |
max_rounds_default |
uint32 |
Maximum number of rounds before overtime. |
max_rounds_overtime |
uint32 |
Maximum number of overtime rounds. |
freeze_time_duration |
google.protobuf.Duration (optional) |
Duration of the freeze time before each round. |
round_time_duration |
google.protobuf.Duration (optional) |
Duration of each round. |
bomb_time_duration |
google.protobuf.Duration (optional) |
Time the bomb takes to detonate after being planted. |
start_time |
google.protobuf.Timestamp (optional) |
Time the map started. |
end_time |
google.protobuf.Timestamp (optional) |
Time the map ended. |
map_ended |
bool |
True if the map has ended. |
win_team_urn |
string (optional) |
URN of the team that won the map, once it has ended. |
CS2MapScoreState
| Field | Type | Description |
home_score |
uint32 |
Rounds won by the home team on this map. |
away_score |
uint32 |
Rounds won by the away team on this map. |
6.1.4. CS2 current round state
CS2CurrentRoundStatePartialUpdate
| Field | Type | Description |
info |
CS2RoundInfoState |
Replaces the info property of CS2CurrentRoundState. |
time |
CS2RoundTimeState |
Replaces the time property (round time remaining). |
bomb_state |
CS2BombState |
Replaces the bomb_state property (current bomb situation). |
team_states_partial_update |
CS2TeamCurrentRoundStatePartialUpdate |
Applies a partial update to the per-team round state for a particular team URN. |
CS2CurrentRoundState
| Field | Type | Description |
round_number |
uint32 |
Current round number, starting at 1. |
info |
CS2RoundInfoState |
Information about the round (type, start/end times, winner if known). |
time |
CS2RoundTimeState |
Time remaining in the round. |
bomb_state |
CS2BombState |
Current bomb situation. |
team_states |
map<string, CS2TeamCurrentRoundState> |
Per-team state for the round, keyed by team URN. |
CS2PreviousRoundState
| Field | Type | Description |
round_number |
uint32 |
Round number. |
info |
CS2RoundInfoState |
Information about the round. |
team_states |
map<string, CS2PreviousTeamRoundState> |
Per-team state at the end of the round. |
CS2RoundInfoState
| Field | Type | Description |
round_type |
CS2RoundStateType |
Phase of the round (buy time, in progress, paused, finished). |
start_time |
google.protobuf.Timestamp |
When the round started. |
end_time |
google.protobuf.Timestamp (optional) |
When the round ended. |
winning_team_urn |
string (optional) |
URN of the team that won the round. |
win_reason |
CS2WinReason (optional) |
Why the round was won (elimination, defuse, etc.). |
home_won |
bool (optional) |
True if the home team won the round. |
CS2RoundTimeState
| Field | Type | Description |
time_remaining |
google.protobuf.Duration |
Time remaining in the current round. |
6.1.5. CS2 bomb state
CS2BombState
Oneof representing the current situation of the bomb.
| Field | Type | Description |
carried |
CS2BombCarriedState |
A player is carrying the bomb. |
dropped |
CS2BombDroppedState |
The bomb is on the ground. |
planting |
CS2BombPlantingState |
A player is planting the bomb. |
planted |
CS2BombPlantedState |
The bomb has been planted. |
defusing |
CS2BombDefusingState |
A player is defusing the bomb. |
defused |
CS2BombDefusedState |
The bomb has been defused. |
exploded |
CS2BombExplodedState |
The bomb has exploded. |
CS2BombCarriedState
| Field | Type | Description |
player_urn |
string |
Player carrying the bomb. |
position |
CS2Position |
Current position of that player. |
CS2BombDroppedState
| Field | Type | Description |
dropped_by_player_urn |
string |
Player who dropped the bomb. |
position |
CS2Position |
Position where the bomb was dropped. |
CS2BombPlantingState
| Field | Type | Description |
player_urn |
string |
Player planting the bomb. |
position |
CS2Position |
Position of the planting player. |
countdown |
google.protobuf.Duration |
Time remaining until the plant completes. |
CS2BombPlantedState
| Field | Type | Description |
planted_by_player_urn |
string |
Player who planted the bomb. |
position |
CS2Position |
Position of the bomb. |
planted_at |
google.protobuf.Timestamp |
When the bomb was planted. |
countdown |
google.protobuf.Duration |
Time remaining until detonation. |
CS2BombDefusingState
| Field | Type | Description |
player_urn |
string |
Player defusing the bomb. |
position |
CS2Position |
Position of the defusing player. |
countdown |
google.protobuf.Duration |
Time remaining for the defuse to complete. |
defuse_started_at |
google.protobuf.Timestamp |
When the defuse began. |
CS2BombDefusedState
| Field | Type | Description |
defused_by_player_urn |
string |
Player who defused the bomb. |
position |
CS2Position |
Position where the bomb was defused. |
defused_at |
google.protobuf.Timestamp |
When the defuse completed. |
CS2BombExplodedState
| Field | Type | Description |
position |
CS2Position |
Position of the explosion. |
exploded_at |
google.protobuf.Timestamp |
When the bomb exploded. |
6.1.6. CS2 per-team and per-player state
CS2TeamMapStatePartialUpdate
| Field | Type | Description |
team_urn |
string |
Team this partial update is for. |
payload |
CS2TeamMapStatePartialUpdate.Payload |
Oneof: player_state (replaces a value in player_map_states) or player_map_states_partial_update (applies a partial update to a value in player_map_states). |
CS2TeamMapState
| Field | Type | Description |
team_urn |
string |
Team URN. |
side |
CS2Side |
Side the team is playing (CT or T). |
player_map_states |
map<string, CS2PlayerMapState> |
Per-player map state, keyed by player URN. |
CS2TeamCurrentRoundStatePartialUpdate
| Field | Type | Description |
team_urn |
string |
Team this partial update is for. |
payload |
CS2TeamCurrentRoundStatePartialUpdate.Payload |
Oneof: player_state (replaces a value in player_round_states) or player_round_states_partial_update (applies a partial update to a value in player_round_states). |
CS2TeamCurrentRoundState
| Field | Type | Description |
team_urn |
string |
Team URN. |
player_round_states |
map<string, CS2PlayerCurrentRoundState> |
Per-player state for the current round, keyed by player URN. |
CS2PreviousTeamRoundState
| Field | Type | Description |
team_urn |
string |
Team URN. |
players |
map<string, CS2PlayerPreviousRoundState> |
Per-player state at the end of the round, keyed by player URN. |
CS2PlayerMapStatePartialUpdate
| Field | Type | Description |
player_urn |
string |
Player this partial update is for. |
payload |
CS2PlayerMapStatePartialUpdate.Payload |
Oneof: statistics (replaces the statistics property of CS2PlayerMapState). |
CS2PlayerMapState
| Field | Type | Description |
player_urn |
string |
Player URN. |
player_name |
string |
Display name of the player. |
slot_id |
uint32 |
Slot the player occupies in the match (1–10 for CS2). |
ext_id |
string |
External player identifier (e.g., Steam ID). |
statistics |
CS2PlayerMapStatisticsState |
Per-map player statistics. |
CS2PlayerMapStatisticsState
| Field | Type | Description |
player_urn |
string |
Player URN. |
opening_kills |
uint32 |
Number of opening kills on this map. |
opening_deaths |
uint32 |
Number of opening deaths on this map. |
total_damage |
uint32 |
Total damage dealt on this map. |
average_damage_per_round |
float |
Average damage per round on this map. |
statistics |
CS2PlayerStatistics |
Aggregated player statistics. |
CS2PlayerCurrentRoundStatePartialUpdate
| Field | Type | Description |
player_urn |
string |
Player this partial update is for. |
payload |
CS2PlayerCurrentRoundStatePartialUpdate.Payload |
Oneof: statistics, items or position — replaces the corresponding property of CS2PlayerCurrentRoundState. |
CS2PlayerCurrentRoundState
| Field | Type | Description |
player_urn |
string |
Player URN. |
player_name |
string |
Display name of the player. |
slot_id |
uint32 |
Slot occupied by the player. |
ext_id |
string |
External player identifier. |
statistics |
CS2PlayerCurrentRoundStatisticsState |
Statistics for the player in the current round. |
items |
CS2PlayerItemsState |
Items the player is currently carrying. |
position |
CS2PlayerPositionState |
Player position on the map. |
CS2PlayerCurrentRoundStatisticsState
| Field | Type | Description |
player_urn |
string |
Player URN. |
alive |
bool |
True while the player is alive in the round. |
health |
uint32 |
Current health. |
armor |
uint32 |
Current armour. |
balance |
uint32 |
Current in-game balance (money). |
damage |
uint32 (optional) |
Damage dealt by the player this round. |
statistics |
CS2PlayerStatistics |
Aggregated statistics. |
CS2PlayerItemsState
| Field | Type | Description |
player_urn |
string |
Player URN. |
equipment_value |
uint32 |
Total value of the player's equipment. |
items |
repeated CS2Item |
Items currently in the player's inventory. |
CS2PlayerPreviousRoundState
| Field | Type | Description |
player_urn |
string |
Player URN. |
player_name |
string |
Display name. |
statistics |
CS2PlayerStatistics |
Player statistics at the end of the round. |
ext_id |
string |
External identifier. |
CS2PlayerPositionState
| Field | Type | Description |
player_urn |
string |
Player URN. |
position |
CS2Position |
Position coordinates and orientation. |
CS2PlayerStatistics
Aggregated per-player statistics used both within rounds and across the map.
| Field | Type | Description |
player_urn |
string |
Player URN. |
kills |
uint32 |
Total kills. |
friendly_kills |
uint32 |
Kills against teammates. |
enemy_kills |
uint32 |
Kills against the opposing team. |
self_kills |
uint32 |
Suicides. |
deaths |
uint32 |
Total deaths. |
assists |
uint32 |
Total assists. |
headshots |
uint32 |
Number of headshot kills. |
damage |
uint32 (deprecated) |
Deprecated. Use CS2PlayerMapStatisticsState.total_damage or CS2PlayerCurrentRoundStatisticsState.damage instead. |
friendly_damage_dealt_armor |
uint32 (optional) |
Armour damage dealt to teammates. |
friendly_damage_dealt_health |
uint32 (optional) |
Health damage dealt to teammates. |
enemy_damage_dealt_armor |
uint32 (optional) |
Armour damage dealt to opponents. |
enemy_damage_dealt_health |
uint32 (optional) |
Health damage dealt to opponents. |
enemy_damage_dealt_armor_raw |
uint32 (optional) |
Raw armour damage (before any clamping). |
enemy_damage_dealt_health_raw |
uint32 (optional) |
Raw health damage (before any clamping). |
CS2Item
| Field | Type | Description |
name |
string |
Display name of the item. |
weapon_type |
CS2WeaponType (deprecated) |
Deprecated. Use type instead. |
type |
CS2ItemType |
Item category (pistol, rifle, grenade, etc.). |
count |
uint32 |
How many of this item the player is carrying. |
isActive |
bool |
True if the item is currently equipped. |
CS2Position
| Field | Type | Description |
x |
float |
X coordinate. |
y |
float |
Y coordinate. |
z |
float |
Z coordinate. |
angle |
float |
Viewing angle in degrees. |
CS2PlayerBalance
| Field | Type | Description |
player_urn |
string |
Player URN. |
team_urn |
string |
Team URN. |
balance |
uint32 |
Current in-game balance (money). |
CS2PlayerItems
| Field | Type | Description |
player_urn |
string |
Player URN. |
team_urn |
string |
Team URN. |
equipment_value |
uint32 |
Total value of the player's equipment. |
items |
repeated CS2Item |
Items currently in the player's inventory. |
6.1.7. CS2 event payload types
The messages below are the payload types of CS2Event (see section 4.2.1.1). Many of them include a map_time field that is deprecated in favour of CS2Event.timestamp.
CS2BombDefuseStarted
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining at the moment of the event. |
current_round_number |
uint32 |
Round in which the event happened. |
player_urn |
string |
Player who started defusing. |
team_urn |
string |
Team URN of that player. |
CS2BombDefused
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
player_urn |
string |
Player who defused the bomb. |
team_urn |
string |
Team URN of that player. |
CS2BombExploded
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining at explosion. |
current_round_number |
uint32 |
Round number. |
CS2BombPlantStarted
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
player_urn |
string |
Player who started planting. |
team_urn |
string |
Team URN of that player. |
CS2BombPlanted
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
player_urn |
string |
Player who planted the bomb. |
team_urn |
string |
Team URN. |
bomb_site |
string |
Bomb site (e.g., "A" or "B"). |
CS2DamageDealt
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
killer_position |
CS2Position |
Position of the player dealing damage. |
killer_urn |
string |
Player URN of the attacker. |
killer_team_urn |
string |
Team URN of the attacker. |
victim_urn |
string |
Player URN of the victim. |
victim_team_urn |
string |
Team URN of the victim. |
weapon |
string |
Weapon used. |
hitgroup |
string |
Hit group (head, chest, leg, etc.). |
health_deducted |
uint32 |
Health damage dealt. |
health_remaining |
uint32 |
Victim's health after the hit. |
armor_deducted |
uint32 |
Armour damage dealt. |
armor_remaining |
uint32 |
Victim's armour after the hit. |
victim_position |
CS2Position |
Position of the victim. |
CS2FreezeTimeEnded
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
player_balances |
map<string, CS2PlayerBalance> |
Per-player balances at end of freeze, keyed by player URN. |
player_inventories |
map<string, CS2PlayerItems> |
Per-player inventories at end of freeze. |
CS2FreezeTimeStarted
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
player_balances |
map<string, CS2PlayerBalance> |
Per-player balances at the start of freeze time. |
teams_round_info |
map<string, CS2Side> |
Side (CT or T) per team for this round, keyed by team URN. |
CS2ItemDrop
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
position |
CS2Position |
Position at which the item was dropped. |
player_urn |
string |
Player who dropped the item. |
team_urn |
string |
Team URN. |
item |
string |
Item dropped. |
CS2ItemPickUp
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
player_urn |
string |
Player who picked the item up. |
team_urn |
string |
Team URN. |
item |
string |
Item picked up. |
CS2ItemPurchase
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
player_urn |
string |
Player who bought the item. |
team_urn |
string |
Team URN. |
item |
string |
Item bought. |
player_balance |
uint32 |
Balance after the purchase. |
equipment_value |
uint32 |
Equipment value after the purchase. |
CS2ItemThrow
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
position |
CS2Position |
Position where the throw happened. |
player_urn |
string |
Player who threw the item. |
team_urn |
string |
Team URN. |
item |
string |
Item thrown (e.g., "Smoke Grenade"). |
CS2Kill
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
killer_position |
CS2Position |
Position of the killer. |
killer_urn |
string |
Player URN of the killer. |
killer_team_urn |
string |
Team URN of the killer. |
victim_urn |
string |
Player URN of the victim. |
victim_team_urn |
string |
Team URN of the victim. |
weapon |
string |
Weapon used. |
headshot |
bool |
True if the kill was a headshot. |
penetrated |
bool |
True if the kill went through penetration. |
assistants |
repeated string |
Player URNs of any assistants. |
CS2Death
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
position |
CS2Position |
Position of the dying player. |
player_urn |
string |
Player URN of the dying player. |
team_urn |
string |
Team URN of the dying player. |
total_deaths |
uint32 |
Total deaths for that player so far. |
suicide |
bool |
True if the death was a suicide. |
death_by_bomb |
bool |
True if the player was killed by the bomb. |
CS2MapEnd
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
current_round_number |
uint32 |
Round number at the end of the map. |
map_name |
string |
Map name. |
winning_team_urn |
string |
Team URN of the map winner. |
light_team_score |
uint32 |
Final score for the team on the "light" side. |
dark_team_score |
uint32 |
Final score for the team on the "dark" side. |
CS2MapStart
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
map_name |
string |
Map name (e.g., de_mirage). |
CS2RoundEnd
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining at end of round. |
current_round_number |
uint32 |
Round number. |
winning_team_urn |
string |
Team URN of the round winner. |
win_reason |
CS2WinReason |
Why the round was won. |
player_balances |
map<string, CS2PlayerBalance> |
Per-player balances at end of round. |
player_inventories |
map<string, CS2PlayerItems> |
Per-player inventories at end of round. |
CS2RoundPause
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
CS2RoundResume
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
CS2RoundRollback
| Field | Type | Description |
next_round_number |
uint32 |
Round number that will be played next, replacing the round that was rolled back. |
CS2RoundStart
| Field | Type | Description |
map_time |
google.protobuf.Duration (deprecated) |
Deprecated. Use CS2Event.timestamp. |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
current_round_number |
uint32 |
Round number. |
CS2WorldBomb
| Field | Type | Description |
time_remaining |
google.protobuf.Duration |
Round time remaining. |
state |
CS2BombState |
Current bomb state. |
6.1.8. CS2 enumerations
CS2Side
| Value | Description |
CS2_SIDE_UNSPECIFIED |
Default value. |
CS2_SIDE_COUNTER_TERRORISTS |
Counter-Terrorists. |
CS2_SIDE_TERRORISTS |
Terrorists. |
CS2WinReason
| Value | Description |
CS2_WIN_REASON_UNSPECIFIED |
Default value. |
CS2_WIN_REASON_COUNTER_TERRORISTS_ELIMINATED |
All Counter-Terrorists have been eliminated. |
CS2_WIN_REASON_TERRORISTS_ELIMINATED |
All Terrorists have been eliminated. |
CS2_WIN_REASON_EXPLOSION |
The bomb exploded. |
CS2_WIN_REASON_DEFUSE |
The bomb was defused. |
CS2_WIN_REASON_TIMEOUT |
The round timed out. |
CS2_WIN_REASON_TARGET_SAVED |
The target was saved. |
CS2RoundStateType
| Value | Description |
CS2_ROUND_STATE_TYPE_UNSPECIFIED |
Default value. |
CS2_ROUND_STATE_TYPE_BUY_TIME |
The buy phase is active. |
CS2_ROUND_STATE_TYPE_IN_PROGRESS |
Round in progress. |
CS2_ROUND_STATE_TYPE_PAUSED |
Round paused. |
CS2_ROUND_STATE_TYPE_FINISHED |
Round finished. |
CS2WeaponType (deprecated — use CS2ItemType)
| Value | Description |
CS2_WEAPON_TYPE_UNSPECIFIED |
Default value. |
CS2_WEAPON_TYPE_PISTOL |
Pistol. |
CS2_WEAPON_TYPE_BOMB |
Bomb. |
CS2_WEAPON_TYPE_GRENADE |
Grenade. |
CS2_WEAPON_TYPE_MACHINE_GUN |
Machine gun. |
CS2_WEAPON_TYPE_RIFLE |
Rifle. |
CS2_WEAPON_TYPE_SHOTGUN |
Shotgun. |
CS2_WEAPON_TYPE_SNIPER_RIFLE |
Sniper rifle. |
CS2_WEAPON_TYPE_SUBMACHINE_GUN |
Submachine gun. |
CS2_WEAPON_TYPE_KNIFE |
Knife. |
CS2_WEAPON_TYPE_DEFUSE_KIT |
Defuse kit. |
CS2ItemType
| Value | Description |
CS2_ITEM_TYPE_UNSPECIFIED |
Default value. |
CS2_ITEM_TYPE_PISTOL |
Pistol. |
CS2_ITEM_TYPE_BOMB |
Bomb. |
CS2_ITEM_TYPE_GRENADE |
Grenade. |
CS2_ITEM_TYPE_MACHINE_GUN |
Machine gun. |
CS2_ITEM_TYPE_RIFLE |
Rifle. |
CS2_ITEM_TYPE_SHOTGUN |
Shotgun. |
CS2_ITEM_TYPE_SNIPER_RIFLE |
Sniper rifle. |
CS2_ITEM_TYPE_SUBMACHINE_GUN |
Submachine gun. |
CS2_ITEM_TYPE_KNIFE |
Knife. |
CS2_ITEM_TYPE_DEFUSE_KIT |
Defuse kit. |
CS2_ITEM_TYPE_ARMOR |
Armour. |
Example JSON — CS2MatchSnapshot (abridged)
{
"match_urn": "od:match:55501",
"sequence": 1,
"timestamp": "2026-05-27T18:00:00.000Z",
"data_status": "DATA_STATUS_VALID_DATA",
"announcements": [],
"match_state": {
"match_urn": "od:match:55501",
"match_type": "BEST_OF_TYPE_BO3",
"home_team": { "team_urn": "od:team:101", "team_name": "Team Alpha" },
"away_team": { "team_urn": "od:team:202", "team_name": "Team Bravo" },
"score": { "home_score": 0, "away_score": 0 },
"match_status": "MATCH_STATUS_TYPE_LIVE",
"current_map_state": {
"map_order": 1,
"info": {
"map_name": "de_mirage",
"max_rounds_default": 24,
"max_rounds_overtime": 6,
"map_ended": false
},
"score": { "home_score": 0, "away_score": 0 },
"current_round_state": {
"round_number": 1,
"info": {
"round_type": "CS2_ROUND_STATE_TYPE_BUY_TIME",
"start_time": "2026-05-27T18:00:20.000Z"
},
"time_remaining": "20s",
"bomb_state": {},
"team_states": {}
},
"previous_round_states": [],
"team_map_states": {
"od:team:101": {
"team_urn": "od:team:101",
"side": "CS2_SIDE_COUNTER_TERRORISTS",
"player_map_states": {}
}
}
},
"previous_map_states": []
},
"tournament": {
"urn": "od:tournament:1001",
"name": "ESL Pro League"
}
}