{
"id": "gg.postmatch.rocketleague.match",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"createdAt",
"matchId",
"observedStartAt",
"observedEndAt",
"arena",
"playlistId",
"overtime",
"clockRemainingSeconds",
"winnerSide",
"reportingPlayer",
"teams",
"players",
"capture"
],
"properties": {
"arena": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Arena identifier observed in the final Game Data API snapshot."
},
"teams": {
"type": "array",
"items": {
"ref": "gg.postmatch.rocketleague.defs#team",
"type": "ref"
},
"maxLength": 2,
"minLength": 2,
"description": "Exactly the blue and orange final scoreboard scores."
},
"capture": {
"ref": "gg.postmatch.rocketleague.defs#liveCapture",
"type": "ref",
"description": "Live-collector provenance for this complete report."
},
"matchId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Observed Rocket League MatchGuid; a correlation candidate, not a globally unique or proven cross-repository join."
},
"players": {
"type": "array",
"items": {
"ref": "gg.postmatch.rocketleague.defs#player",
"type": "ref"
},
"maxLength": 8,
"minLength": 2,
"description": "Final scoreboard players with explicit intrinsic side assignments."
},
"overtime": {
"type": "boolean",
"description": "Whether the final observed snapshot reports overtime."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared time when this report was assembled; not an authoritative game-server timestamp."
},
"playlistId": {
"type": "integer",
"minimum": 0,
"description": "Numeric Rocket League playlist identifier; presentation labels are derived separately."
},
"winnerSide": {
"ref": "gg.postmatch.rocketleague.defs#side",
"type": "ref",
"description": "Winning side determined from the end evidence described by capture.endEvidence; retained alongside final scores."
},
"observedEndAt": {
"type": "string",
"format": "datetime",
"description": "Reporter-clock receipt time for the end evidence named by capture.endEvidence: MatchEnded itself or the decisive snapshot used during teardown."
},
"observedStartAt": {
"type": "string",
"format": "datetime",
"description": "Reporter-clock receipt time associated with the match's first lifecycle observation."
},
"reportingPlayer": {
"ref": "gg.postmatch.rocketleague.defs#reportingPlayer",
"type": "ref"
},
"clockRemainingSeconds": {
"type": "integer",
"minimum": 0,
"description": "Game-clock seconds remaining in the final observed snapshot."
}
}
}
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"description": "One reporter's complete observation of a Rocket League match produced by the Postmatch live collector."
}