# com.professorbutts.sports.game

> Record key is a stable game slug, e.g. 'nfl-2026-11-09-cin-pit'.

- Kind: record
- Record key: any
- Authority: sports.professorbutts.com
- Lexicon: 1
- Published by [professorbutts.com](https://lexicon.garden/identity/did:plc:x6njyeyi47bqs2kueuv3mrg5), the NSID's authority

## Links

- [Documentation](https://lexicon.garden/lexicon/did:plc:x6njyeyi47bqs2kueuv3mrg5/com.professorbutts.sports.game)
- [Schema JSON](https://lexicon.garden/lexicon/did:plc:x6njyeyi47bqs2kueuv3mrg5/com.professorbutts.sports.game/schema.json)
- [Analytics](https://lexicon.garden/lexicon/did:plc:x6njyeyi47bqs2kueuv3mrg5/com.professorbutts.sports.game/analytics)

## Record (`com.professorbutts.sports.game`)

Type: record · key any

### Properties

- `away` (ref, required)
  - Reference: `com.professorbutts.sports.defs#competitor`
- `clock` (string): Display clock, e.g. '4:32'. Omitted when not applicable.
  - Constraints: maxLength: 16
- `conference` (string): Conference for playoff games before the Super Bowl.
  - Constraints: knownValues: AFC | NFC
- `home` (ref, required)
  - Reference: `com.professorbutts.sports.defs#competitor`
- `league` (string, required): League short code, e.g. NFL, NBA, MLS.
  - Constraints: maxLength: 32
- `period` (ref)
  - Reference: `com.professorbutts.sports.defs#period`
- `round` (string): Stage of the season. Playoff rounds get a badge on the card.
  - Constraints: knownValues: preseason | regular | wildcard | divisional | conference | superbowl
- `season` (string)
  - Constraints: maxLength: 32
- `situation` (union): Sport-specific live detail. Each value carries its $type.
  - One of: `com.professorbutts.sports.defs#footballSituation`, `com.professorbutts.sports.defs#baseballSituation`, `com.professorbutts.sports.defs#basketballSituation`, `com.professorbutts.sports.defs#hockeySituation`, `com.professorbutts.sports.defs#soccerSituation`
- `source` (string · uri): Where the data came from.
- `sport` (string, required)
  - Constraints: maxLength: 64, knownValues: football | basketball | baseball | hockey | soccer
- `startsAt` (string · datetime, required)
- `stats` (array): Optional stats blocks (line score, box score). The only thing that may make the card taller.
  - Constraints: maxLength: 4
  - `items` (union): Optional extra detail. Viewers keep the card one fixed size unless they draw stats.
    - One of: `com.professorbutts.sports.defs#lineScore`, `com.professorbutts.sports.defs#footballBoxScore`, `com.professorbutts.sports.defs#baseballBoxScore`, `com.professorbutts.sports.defs#basketballBoxScore`
- `status` (string, required)
  - Constraints: knownValues: scheduled | live | halftime | final | postponed | canceled
- `updatedAt` (string · datetime, required)
- `venue` (string)
  - Constraints: maxLength: 256

## Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Record key is a stable game slug, e.g. 'nfl-2026-11-09-cin-pit'.",
      "key": "any",
      "record": {
        "properties": {
          "away": {
            "ref": "com.professorbutts.sports.defs#competitor",
            "type": "ref"
          },
          "clock": {
            "description": "Display clock, e.g. '4:32'. Omitted when not applicable.",
            "maxLength": 16,
            "type": "string"
          },
          "conference": {
            "description": "Conference for playoff games before the Super Bowl.",
            "knownValues": [
              "AFC",
              "NFC"
            ],
            "type": "string"
          },
          "home": {
            "ref": "com.professorbutts.sports.defs#competitor",
            "type": "ref"
          },
          "league": {
            "description": "League short code, e.g. NFL, NBA, MLS.",
            "maxLength": 32,
            "type": "string"
          },
          "period": {
            "ref": "com.professorbutts.sports.defs#period",
            "type": "ref"
          },
          "round": {
            "description": "Stage of the season. Playoff rounds get a badge on the card.",
            "knownValues": [
              "preseason",
              "regular",
              "wildcard",
              "divisional",
              "conference",
              "superbowl"
            ],
            "type": "string"
          },
          "season": {
            "maxLength": 32,
            "type": "string"
          },
          "situation": {
            "description": "Sport-specific live detail. Each value carries its $type.",
            "refs": [
              "com.professorbutts.sports.defs#footballSituation",
              "com.professorbutts.sports.defs#baseballSituation",
              "com.professorbutts.sports.defs#basketballSituation",
              "com.professorbutts.sports.defs#hockeySituation",
              "com.professorbutts.sports.defs#soccerSituation"
            ],
            "type": "union"
          },
          "source": {
            "description": "Where the data came from.",
            "format": "uri",
            "type": "string"
          },
          "sport": {
            "knownValues": [
              "football",
              "basketball",
              "baseball",
              "hockey",
              "soccer"
            ],
            "maxLength": 64,
            "type": "string"
          },
          "startsAt": {
            "format": "datetime",
            "type": "string"
          },
          "stats": {
            "description": "Optional stats blocks (line score, box score). The only thing that may make the card taller.",
            "items": {
              "description": "Optional extra detail. Viewers keep the card one fixed size unless they draw stats.",
              "refs": [
                "com.professorbutts.sports.defs#lineScore",
                "com.professorbutts.sports.defs#footballBoxScore",
                "com.professorbutts.sports.defs#baseballBoxScore",
                "com.professorbutts.sports.defs#basketballBoxScore"
              ],
              "type": "union"
            },
            "maxLength": 4,
            "type": "array"
          },
          "status": {
            "knownValues": [
              "scheduled",
              "live",
              "halftime",
              "final",
              "postponed",
              "canceled"
            ],
            "type": "string"
          },
          "updatedAt": {
            "format": "datetime",
            "type": "string"
          },
          "venue": {
            "maxLength": 256,
            "type": "string"
          }
        },
        "required": [
          "sport",
          "league",
          "status",
          "home",
          "away",
          "startsAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "A single sporting event and its current state. One record per game, updated in place as the game progresses.",
  "id": "com.professorbutts.sports.game",
  "lexicon": 1
}
```
