# gg.postmatch.rocketleague.defs

> Published by [jbhutch.bsky.social](https://lexicon.garden/identity/did:plc:i3mm6gpnxjjygdqt5utxopqw)

✓ This is the authoritative definition for this NSID.

## Description

Reusable definitions for complete Rocket League matches observed by the Postmatch live collector.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:i3mm6gpnxjjygdqt5utxopqw/gg.postmatch.rocketleague.defs)
- [Documentation](https://lexicon.garden/lexicon/did:plc:i3mm6gpnxjjygdqt5utxopqw/gg.postmatch.rocketleague.defs/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:i3mm6gpnxjjygdqt5utxopqw/gg.postmatch.rocketleague.defs/examples)

## Definitions

### `gg.postmatch.rocketleague.defs#side`

**Type**: `string`

An intrinsic Rocket League team side.

**Allowed Values**:
- `blue`
- `orange`

### `gg.postmatch.rocketleague.defs#team`

**Type**: `object`

Final score for one intrinsic Rocket League side.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `side` | `ref` → `#side` | Yes |  |
| `score` | `integer` | Yes | Final observed team score. |

### `gg.postmatch.rocketleague.defs#player`

**Type**: `object`

A public final-scoreboard row identified only within this observed match.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `side` | `ref` → `#side` | Yes | Intrinsic blue or orange side assigned to this player in the observed match. |
| `alias` | `string` | Yes | Public in-game display name observed on the final scoreboard. |
| `stats` | `ref` → `#playerStats` | Yes |  |
| `matchPlayerKey` | `integer` | Yes | Rocket League Shortcut value; unique only within this report and never a durable account identifier. |

### `gg.postmatch.rocketleague.defs#liveCapture`

**Type**: `object`

Provenance for a complete report produced from Rocket League's live Game Data API.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `source` | `string` | Yes | Source API used for this observation. |
| `transport` | `string` | Yes | Transport used to receive the live frames. |
| `endEvidence` | `string` | Yes | Evidence used to decide that the match was complete. match-ended-event means Rocket League emitted MatchEnded. score-derived means teardown arrived without MatchEnded and the collector inferred completion only from a decisive overtime score or a non-tied regulation score at zero seconds. |
| `finalSnapshot` | `string` | Yes | Where the final scoreboard snapshot sat relative to an observed MatchEnded event. after-match-ended is the usual case. before-match-ended means the accumulated last in-match snapshot was used; endEvidence says whether MatchEnded was observed or completion was score-derived. |
| `collectorVersion` | `string` | Yes | Version of the Postmatch collector that assembled this report. |

### `gg.postmatch.rocketleague.defs#playerStats`

**Type**: `object`

Final Rocket League scoreboard totals for one match player.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `demos` | `integer` | Yes |  |
| `goals` | `integer` | Yes |  |
| `saves` | `integer` | Yes |  |
| `score` | `integer` | Yes | In-game scoreboard points, not goals. |
| `shots` | `integer` | Yes |  |
| `assists` | `integer` | Yes |  |
| `touches` | `integer` | Yes | Ball touches; car-to-car contact is not included. |

### `gg.postmatch.rocketleague.defs#reportingPlayer`

**Type**: `object`

Identifies which match-scoped scoreboard row represents the author of this repository record.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `matchPlayerKey` | `integer` | Yes | Must resolve to exactly one player row in this report. |

## Raw Schema

```json
{
  "id": "gg.postmatch.rocketleague.defs",
  "defs": {
    "side": {
      "enum": [
        "blue",
        "orange"
      ],
      "type": "string",
      "description": "An intrinsic Rocket League team side."
    },
    "team": {
      "type": "object",
      "required": [
        "side",
        "score"
      ],
      "properties": {
        "side": {
          "ref": "#side",
          "type": "ref"
        },
        "score": {
          "type": "integer",
          "minimum": 0,
          "description": "Final observed team score."
        }
      },
      "description": "Final score for one intrinsic Rocket League side."
    },
    "player": {
      "type": "object",
      "required": [
        "matchPlayerKey",
        "alias",
        "side",
        "stats"
      ],
      "properties": {
        "side": {
          "ref": "#side",
          "type": "ref",
          "description": "Intrinsic blue or orange side assigned to this player in the observed match."
        },
        "alias": {
          "type": "string",
          "maxLength": 128,
          "minLength": 1,
          "description": "Public in-game display name observed on the final scoreboard.",
          "maxGraphemes": 32
        },
        "stats": {
          "ref": "#playerStats",
          "type": "ref"
        },
        "matchPlayerKey": {
          "type": "integer",
          "minimum": 0,
          "description": "Rocket League Shortcut value; unique only within this report and never a durable account identifier."
        }
      },
      "description": "A public final-scoreboard row identified only within this observed match."
    },
    "liveCapture": {
      "type": "object",
      "required": [
        "source",
        "transport",
        "collectorVersion",
        "endEvidence",
        "finalSnapshot"
      ],
      "properties": {
        "source": {
          "type": "string",
          "const": "rocket-league-game-data-api",
          "description": "Source API used for this observation."
        },
        "transport": {
          "type": "string",
          "const": "websocket",
          "description": "Transport used to receive the live frames."
        },
        "endEvidence": {
          "enum": [
            "match-ended-event",
            "score-derived"
          ],
          "type": "string",
          "description": "Evidence used to decide that the match was complete. match-ended-event means Rocket League emitted MatchEnded. score-derived means teardown arrived without MatchEnded and the collector inferred completion only from a decisive overtime score or a non-tied regulation score at zero seconds."
        },
        "finalSnapshot": {
          "enum": [
            "after-match-ended",
            "before-match-ended"
          ],
          "type": "string",
          "description": "Where the final scoreboard snapshot sat relative to an observed MatchEnded event. after-match-ended is the usual case. before-match-ended means the accumulated last in-match snapshot was used; endEvidence says whether MatchEnded was observed or completion was score-derived."
        },
        "collectorVersion": {
          "type": "string",
          "maxLength": 128,
          "minLength": 1,
          "description": "Version of the Postmatch collector that assembled this report."
        }
      },
      "description": "Provenance for a complete report produced from Rocket League's live Game Data API."
    },
    "playerStats": {
      "type": "object",
      "required": [
        "score",
        "goals",
        "shots",
        "assists",
        "saves",
        "demos",
        "touches"
      ],
      "properties": {
        "demos": {
          "type": "integer",
          "minimum": 0
        },
        "goals": {
          "type": "integer",
          "minimum": 0
        },
        "saves": {
          "type": "integer",
          "minimum": 0
        },
        "score": {
          "type": "integer",
          "minimum": 0,
          "description": "In-game scoreboard points, not goals."
        },
        "shots": {
          "type": "integer",
          "minimum": 0
        },
        "assists": {
          "type": "integer",
          "minimum": 0
        },
        "touches": {
          "type": "integer",
          "minimum": 0,
          "description": "Ball touches; car-to-car contact is not included."
        }
      },
      "description": "Final Rocket League scoreboard totals for one match player."
    },
    "reportingPlayer": {
      "type": "object",
      "required": [
        "matchPlayerKey"
      ],
      "properties": {
        "matchPlayerKey": {
          "type": "integer",
          "minimum": 0,
          "description": "Must resolve to exactly one player row in this report."
        }
      },
      "description": "Identifies which match-scoped scoreboard row represents the author of this repository record."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "description": "Reusable definitions for complete Rocket League matches observed by the Postmatch live collector."
}
```
