# Item types

The generic envelope and the NBA content definitions.

Source: [Item types](/item-types/)

Use both `definitionKey` and `definitionVersion` to select a renderer. The envelope stays generic; the definition controls `content`. A definition in the schema need not appear in the samples or be enabled for your feed.

The listed samples contain Player Performance version 2. Portland contains the nine original NBA types at version 1. Team Performance version 2, Four Factors version 2 and Run Momentum version 1 are demonstrated by items captured from [public fixture 0012600066](https://api.live.storyos.ai/v1/fixtures/0012600066/feeds/pulse) on 6 October 2026. These are recorded examples; the current feed may contain later revisions or withdrawals. The OpenAPI item union and NBA schema cover the same thirteen definition/version variants.

| Definition                                                          | Version | Public example                                                               |
| ------------------------------------------------------------------- | ------- | ---------------------------------------------------------------------------- |
| [`nba.initial-game-entry-summary`](#schema-initialGameEntryItem)    | 1       | [0022501147](https://api.live.storyos.ai/v1/fixtures/0022501147/feeds/pulse) |
| [`nba.post-game-summary`](#schema-postGameItem)                     | 1       | [0022501147](https://api.live.storyos.ai/v1/fixtures/0022501147/feeds/pulse) |
| [`nba.pre-game-summary`](#schema-preGameItem)                       | 1       | [0022501147](https://api.live.storyos.ai/v1/fixtures/0022501147/feeds/pulse) |
| [`nba.timeout-quarter-halftime-summary`](#schema-breakItem)         | 1       | [0022501147](https://api.live.storyos.ai/v1/fixtures/0022501147/feeds/pulse) |
| [`nba.player-performance-summary`](#schema-playerPerformanceItem)   | 1       | [0022501147](https://api.live.storyos.ai/v1/fixtures/0022501147/feeds/pulse) |
| [`nba.player-performance-summary`](#schema-playerPerformanceItemV2) | 2       | [0042500405](https://api.live.storyos.ai/v1/fixtures/0042500405/feeds/pulse) |
| [`nba.team-performance-summary`](#schema-teamPerformanceItem)       | 1       | [0022501147](https://api.live.storyos.ai/v1/fixtures/0022501147/feeds/pulse) |
| [`nba.team-performance-summary`](#schema-teamPerformanceItemV2)     | 2       | [0012600066](https://api.live.storyos.ai/v1/fixtures/0012600066/feeds/pulse) |
| [`nba.four-factors`](#schema-fourFactorsItem)                       | 1       | [0022501147](https://api.live.storyos.ai/v1/fixtures/0022501147/feeds/pulse) |
| [`nba.four-factors`](#schema-fourFactorsItemV2)                     | 2       | [0012600066](https://api.live.storyos.ai/v1/fixtures/0012600066/feeds/pulse) |
| [`nba.point-breakdown`](#schema-pointBreakdownItem)                 | 1       | [0022501147](https://api.live.storyos.ai/v1/fixtures/0022501147/feeds/pulse) |
| [`nba.defensive-summary`](#schema-defensiveItem)                    | 1       | [0022501147](https://api.live.storyos.ai/v1/fixtures/0022501147/feeds/pulse) |
| [`nba.run-momentum`](#schema-runMomentumItem)                       | 1       | [0012600066](https://api.live.storyos.ai/v1/fixtures/0012600066/feeds/pulse) |

## Generic snapshot [#generic-snapshot]

| Field        | Required | Type / values                                         | Constraints                            |
| ------------ | -------- | ----------------------------------------------------- | -------------------------------------- |
| `fixtureId`  | Yes      | string                                                | minLength: 1                           |
| `feedKey`    | Yes      | string                                                | pattern: ^\[a-z0-9]+(?:-\[a-z0-9]+)\*$ |
| `snapshotAt` | Yes      | string                                                | format: date-time                      |
| `items`      | Yes      | array of [`contentItem`](#schema-generic-contentItem) |                                        |

The snapshot, item, entity and asset objects reject additional properties. The generic `content` object is open; the NBA definition supplies its fields. The API validates published envelopes against the generic schema; the NBA schema is the integration’s typed reference.

<a id="schema-generic-contentItem"></a>

## contentItem [#contentitem]

| Field               | Required | Type / values                               | Constraints                                |
| ------------------- | -------- | ------------------------------------------- | ------------------------------------------ |
| `id`                | Yes      | string                                      | minLength: 1                               |
| `fixtureId`         | Yes      | string                                      | minLength: 1                               |
| `definitionKey`     | Yes      | string                                      | pattern: ^\[a-z0-9]+(?:\[.-]\[a-z0-9-]+)+$ |
| `definitionVersion` | Yes      | integer                                     | minimum: 1                                 |
| `revision`          | Yes      | integer                                     | minimum: 1                                 |
| `effectiveAt`       | Yes      | string                                      | format: date-time                          |
| `asOf`              | Yes      | string                                      | format: date-time                          |
| `publishedAt`       | Yes      | string                                      | format: date-time                          |
| `entities`          | Yes      | array of [`entity`](#schema-generic-entity) |                                            |
| `content`           | Yes      | object                                      |                                            |
| `assets`            | Yes      | array of [`asset`](#schema-generic-asset)   |                                            |

**Complete generic schema**

```json
{
  "type": "object",
  "required": [
    "id",
    "fixtureId",
    "definitionKey",
    "definitionVersion",
    "revision",
    "effectiveAt",
    "asOf",
    "publishedAt",
    "entities",
    "content",
    "assets"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "fixtureId": {
      "type": "string",
      "minLength": 1
    },
    "definitionKey": {
      "type": "string",
      "pattern": "^[a-z0-9]+(?:[.-][a-z0-9-]+)+$"
    },
    "definitionVersion": {
      "type": "integer",
      "minimum": 1
    },
    "revision": {
      "type": "integer",
      "minimum": 1
    },
    "effectiveAt": {
      "type": "string",
      "format": "date-time"
    },
    "asOf": {
      "type": "string",
      "format": "date-time"
    },
    "publishedAt": {
      "type": "string",
      "format": "date-time"
    },
    "entities": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/entity"
      }
    },
    "content": {
      "type": "object"
    },
    "assets": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/asset"
      }
    }
  },
  "additionalProperties": false
}
```

<a id="schema-generic-entity"></a>

## entity [#entity]

| Field         | Required | Type / values | Constraints  |
| ------------- | -------- | ------------- | ------------ |
| `id`          | Yes      | string        | minLength: 1 |
| `kind`        | Yes      | string        | minLength: 1 |
| `displayName` | Yes      | string        | minLength: 1 |

**Complete generic schema**

```json
{
  "type": "object",
  "required": [
    "id",
    "kind",
    "displayName"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "kind": {
      "type": "string",
      "minLength": 1
    },
    "displayName": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
```

<a id="schema-generic-asset"></a>

## asset [#asset]

| Field       | Required | Type / values | Constraints           |
| ----------- | -------- | ------------- | --------------------- |
| `id`        | Yes      | string        | minLength: 1          |
| `kind`      | Yes      | string        | minLength: 1          |
| `href`      | Yes      | string        | format: uri-reference |
| `mediaType` | Yes      | string        | minLength: 1          |
| `altText`   | Yes      | string        | minLength: 1          |

**Complete generic schema**

```json
{
  "type": "object",
  "required": [
    "id",
    "kind",
    "href",
    "mediaType",
    "altText"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "kind": {
      "type": "string",
      "minLength": 1
    },
    "href": {
      "type": "string",
      "format": "uri-reference"
    },
    "mediaType": {
      "type": "string",
      "minLength": 1
    },
    "altText": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
```

<a id="schema-generic-fixtureIndex"></a>

## fixtureIndex [#fixtureindex]

| Field      | Required | Type / values   | Constraints |
| ---------- | -------- | --------------- | ----------- |
| `fixtures` | Yes      | array of object |             |

**Complete generic schema**

```json
{
  "description": "Response of GET /v1/fixtures. Each entry names a fixture and the feed keys it serves; an integration view defines the entry's descriptive fields.",
  "type": "object",
  "required": [
    "fixtures"
  ],
  "properties": {
    "fixtures": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "fixtureId",
          "feeds"
        ],
        "properties": {
          "fixtureId": {
            "type": "string",
            "minLength": 1
          },
          "feeds": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
            }
          }
        }
      }
    }
  },
  "additionalProperties": false
}
```

## NBA definition versions and real items [#nba-definition-versions-and-real-items]

<a id="schema-initialGameEntryItem"></a>

### nba.initial-game-entry-summary (version 1) [#nbainitial-game-entry-summary-version-1]

Content shape: [`initialGameEntryContent`](#schema-initialGameEntryContent).

| Field               | Required | Type / values                    | Constraints  |
| ------------------- | -------- | -------------------------------- | ------------ |
| `headline`          | Yes      | string                           | minLength: 1 |
| `summary`           | Yes      | string                           | minLength: 1 |
| `supportingContext` | Yes      | array of string                  | maxItems: 3  |
| `gameState`         | Yes      | [`gameState`](#schema-gameState) |              |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.initial-game-entry-summary"
        },
        "definitionVersion": {
          "const": 1
        },
        "content": {
          "$ref": "#/$defs/initialGameEntryContent"
        }
      }
    }
  ]
}
```

**Real item from fixture 0022501147**

```json
{
  "id": "0022501147-initial-game-entry",
  "fixtureId": "0022501147",
  "definitionKey": "nba.initial-game-entry-summary",
  "definitionVersion": 1,
  "revision": 14,
  "effectiveAt": "2026-04-07T01:15:55.000Z",
  "asOf": "2026-04-07T03:45:45Z",
  "publishedAt": "2026-04-07T03:46:05.000Z",
  "entities": [
    {
      "id": "1610612757",
      "kind": "team",
      "displayName": "Portland Trail Blazers"
    },
    {
      "id": "1610612743",
      "kind": "team",
      "displayName": "Denver Nuggets"
    }
  ],
  "content": {
    "headline": "Denver seizes control of overtime",
    "summary": "The Nuggets lead 135–128 with 2:01 left in OT after Jamal Murray's drive extends the gap to seven.",
    "supportingContext": [
      "Nikola Jokić has 35 points and 13 assists."
    ],
    "gameState": {
      "period": 5,
      "periodLabel": "OT1",
      "clock": "PT02M01.00S",
      "awayTeamId": "1610612757",
      "awayScore": 128,
      "homeTeamId": "1610612743",
      "homeScore": 135
    }
  },
  "assets": []
}
```

<a id="schema-postGameItem"></a>

### nba.post-game-summary (version 1) [#nbapost-game-summary-version-1]

Content shape: [`postGameContent`](#schema-postGameContent).

| Field               | Required | Type / values            | Constraints  |
| ------------------- | -------- | ------------------------ | ------------ |
| `headline`          | Yes      | string                   | minLength: 1 |
| `summary`           | Yes      | string                   | minLength: 1 |
| `supportingContext` | Yes      | array of string          | maxItems: 3  |
| `finalScore`        | Yes      | [`score`](#schema-score) |              |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.post-game-summary"
        },
        "definitionVersion": {
          "const": 1
        },
        "content": {
          "$ref": "#/$defs/postGameContent"
        }
      }
    }
  ]
}
```

**Real item from fixture 0022501147**

```json
{
  "id": "0022501147-post-game",
  "fixtureId": "0022501147",
  "definitionKey": "nba.post-game-summary",
  "definitionVersion": 1,
  "revision": 1,
  "effectiveAt": "2026-04-07T03:48:44Z",
  "asOf": "2026-04-07T03:48:44Z",
  "publishedAt": "2026-04-07T03:48:54.000Z",
  "entities": [
    {
      "id": "1610612757",
      "kind": "team",
      "displayName": "Portland Trail Blazers"
    },
    {
      "id": "1610612743",
      "kind": "team",
      "displayName": "Denver Nuggets"
    },
    {
      "id": "203999",
      "kind": "player",
      "displayName": "Nikola Jokić"
    },
    {
      "id": "1641739",
      "kind": "player",
      "displayName": "Toumani Camara"
    }
  ],
  "content": {
    "headline": "Nuggets finish the comeback in overtime",
    "summary": "Denver erased a 16-point fourth-quarter deficit and won the extra period 12–7 to beat Portland 137–132. Nikola Jokić finished with 35 points, 14 rebounds and 13 assists.",
    "supportingContext": [
      "Toumani Camara scored 30 as Portland made 25 of 52 threes.",
      "Denver outscored Portland 66–32 in the paint and 30–15 on second chances.",
      "Jokić and Matisse Thybulle each recorded five steals."
    ],
    "finalScore": {
      "awayTeamId": "1610612757",
      "awayScore": 132,
      "homeTeamId": "1610612743",
      "homeScore": 137,
      "periodsPlayed": 5
    }
  },
  "assets": []
}
```

<a id="schema-preGameItem"></a>

### nba.pre-game-summary (version 1) [#nbapre-game-summary-version-1]

Content shape: [`preGameContent`](#schema-preGameContent).

| Field               | Required | Type / values   | Constraints       |
| ------------------- | -------- | --------------- | ----------------- |
| `headline`          | Yes      | string          | minLength: 1      |
| `summary`           | Yes      | string          | minLength: 1      |
| `supportingContext` | Yes      | array of string | maxItems: 3       |
| `scheduledTipoff`   | Yes      | string          | format: date-time |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.pre-game-summary"
        },
        "definitionVersion": {
          "const": 1
        },
        "content": {
          "$ref": "#/$defs/preGameContent"
        }
      }
    }
  ]
}
```

**Real item from fixture 0022501147**

```json
{
  "id": "0022501147-pre-game",
  "fixtureId": "0022501147",
  "definitionKey": "nba.pre-game-summary",
  "definitionVersion": 1,
  "revision": 2,
  "effectiveAt": "2026-04-06T01:00:00Z",
  "asOf": "2026-04-05T23:59:59Z",
  "publishedAt": "2026-04-06T23:00:10.000Z",
  "entities": [
    {
      "id": "1610612757",
      "kind": "team",
      "displayName": "Portland Trail Blazers"
    },
    {
      "id": "1610612743",
      "kind": "team",
      "displayName": "Denver Nuggets"
    }
  ],
  "content": {
    "headline": "Can Portland's volume crack Denver's efficiency?",
    "summary": "Portland's 42.2 three-point attempts per game test a Denver team making 39.6% from deep. Extra possessions are the Trail Blazers' clearest counterweight.",
    "supportingContext": [
      "Denver averages 121.6 points; Portland averages 115.4.",
      "Portland averages 18.5 second-chance points.",
      "Jokić enters at 27.9 points, 12.9 rebounds and 10.9 assists per game."
    ],
    "scheduledTipoff": "2026-04-07T01:00:00Z"
  },
  "assets": []
}
```

<a id="schema-breakItem"></a>

### nba.timeout-quarter-halftime-summary (version 1) [#nbatimeout-quarter-halftime-summary-version-1]

Content shape: [`breakContent`](#schema-breakContent).

| Field             | Required | Type / values                    | Constraints  |
| ----------------- | -------- | -------------------------------- | ------------ |
| `headline`        | Yes      | string                           | minLength: 1 |
| `keyTakeaways`    | Yes      | array of string                  | minItems: 1  |
| `whatToWatchNext` | Yes      | string                           | minLength: 1 |
| `break`           | Yes      | [`break`](#schema-break)         |              |
| `gameState`       | Yes      | [`gameState`](#schema-gameState) |              |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.timeout-quarter-halftime-summary"
        },
        "definitionVersion": {
          "const": 1
        },
        "content": {
          "$ref": "#/$defs/breakContent"
        }
      }
    }
  ]
}
```

**Real item from fixture 0022501147**

```json
{
  "id": "0022501147-break-a746",
  "fixtureId": "0022501147",
  "definitionKey": "nba.timeout-quarter-halftime-summary",
  "definitionVersion": 1,
  "revision": 1,
  "effectiveAt": "2026-04-07T03:42:44Z",
  "asOf": "2026-04-07T03:42:44Z",
  "publishedAt": "2026-04-07T03:42:54.000Z",
  "entities": [
    {
      "id": "1610612757",
      "kind": "team",
      "displayName": "Portland Trail Blazers"
    },
    {
      "id": "1610612743",
      "kind": "team",
      "displayName": "Denver Nuggets"
    }
  ],
  "content": {
    "headline": "Denver protects a five-point OT lead",
    "keyTakeaways": [
      "The Nuggets lead 133–128 with 2:11 left in overtime.",
      "Portland has not scored since cutting Denver's lead to 131–128."
    ],
    "whatToWatchNext": "Portland needs a stop and a clean scoring possession immediately.",
    "break": {
      "kind": "timeout",
      "period": 5,
      "clock": "PT02M11.00S"
    },
    "gameState": {
      "period": 5,
      "periodLabel": "OT1",
      "clock": "PT02M11.00S",
      "awayTeamId": "1610612757",
      "awayScore": 128,
      "homeTeamId": "1610612743",
      "homeScore": 133
    }
  },
  "assets": []
}
```

<a id="schema-playerPerformanceItem"></a>

### nba.player-performance-summary (version 1) [#nbaplayer-performance-summary-version-1]

Content shape: [`playerPerformanceContent`](#schema-playerPerformanceContent).

| Field              | Required | Type / values                                             | Constraints  |
| ------------------ | -------- | --------------------------------------------------------- | ------------ |
| `summary`          | Yes      | string                                                    | minLength: 1 |
| `playerId`         | Yes      | string                                                    | minLength: 1 |
| `gameState`        | Yes      | [`gameState`](#schema-gameState)                          |              |
| `gameStatistics`   | Yes      | array of [`statistic`](#schema-statistic)                 |              |
| `seasonAverages`   | Yes      | array of [`statistic`](#schema-statistic)                 |              |
| `recentGames`      | Yes      | array of [`recentPerformance`](#schema-recentPerformance) |              |
| `comparisons`      | Yes      | array of [`statistic`](#schema-statistic)                 |              |
| `shotChartAssetId` | No       | string                                                    | minLength: 1 |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.player-performance-summary"
        },
        "definitionVersion": {
          "const": 1
        },
        "content": {
          "$ref": "#/$defs/playerPerformanceContent"
        }
      }
    }
  ]
}
```

**Real item from fixture 0022501147**

```json
{
  "id": "0022501147-player-203999",
  "fixtureId": "0022501147",
  "definitionKey": "nba.player-performance-summary",
  "definitionVersion": 1,
  "revision": 3,
  "effectiveAt": "2026-04-07T02:55:55.000Z",
  "asOf": "2026-04-07T03:46:46Z",
  "publishedAt": "2026-04-07T03:47:05.000Z",
  "entities": [
    {
      "id": "1610612757",
      "kind": "team",
      "displayName": "Portland Trail Blazers"
    },
    {
      "id": "1610612743",
      "kind": "team",
      "displayName": "Denver Nuggets"
    },
    {
      "id": "203999",
      "kind": "player",
      "displayName": "Nikola Jokić"
    },
    {
      "id": "1610612759",
      "kind": "team",
      "displayName": "San Antonio Spurs"
    },
    {
      "id": "1610612762",
      "kind": "team",
      "displayName": "Utah Jazz"
    },
    {
      "id": "1610612744",
      "kind": "team",
      "displayName": "Golden State Warriors"
    }
  ],
  "content": {
    "summary": "Jokić has 35 points, 12 rebounds and 13 assists with Denver in control late in overtime.",
    "playerId": "203999",
    "gameState": {
      "period": 5,
      "periodLabel": "OT1",
      "clock": "PT01M26.00S",
      "awayTeamId": "1610612757",
      "awayScore": 130,
      "homeTeamId": "1610612743",
      "homeScore": 137
    },
    "gameStatistics": [
      {
        "key": "points",
        "label": "Points",
        "unit": "points",
        "values": [
          {
            "label": "Current game",
            "entityId": "203999",
            "scope": "currentGame",
            "value": 35,
            "displayValue": "35"
          }
        ]
      },
      {
        "key": "rebounds",
        "label": "Rebounds",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "203999",
            "scope": "currentGame",
            "value": 12,
            "displayValue": "12"
          }
        ]
      },
      {
        "key": "assists",
        "label": "Assists",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "203999",
            "scope": "currentGame",
            "value": 13,
            "displayValue": "13"
          }
        ]
      },
      {
        "key": "steals",
        "label": "Steals",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "203999",
            "scope": "currentGame",
            "value": 5,
            "displayValue": "5"
          }
        ]
      },
      {
        "key": "blocks",
        "label": "Blocks",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "203999",
            "scope": "currentGame",
            "value": 2,
            "displayValue": "2"
          }
        ]
      },
      {
        "key": "threePointersMade",
        "label": "Three-pointers made",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "203999",
            "scope": "currentGame",
            "value": 1,
            "displayValue": "1"
          }
        ]
      },
      {
        "key": "threePointersAttempted",
        "label": "Three-pointers attempted",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "203999",
            "scope": "currentGame",
            "value": 5,
            "displayValue": "5"
          }
        ]
      }
    ],
    "seasonAverages": [
      {
        "key": "points",
        "label": "Points",
        "unit": "points",
        "values": [
          {
            "label": "Season average",
            "entityId": "203999",
            "scope": "seasonAverage",
            "value": 27.9,
            "displayValue": "27.9"
          }
        ]
      },
      {
        "key": "assists",
        "label": "Assists",
        "unit": "count",
        "values": [
          {
            "label": "Season average",
            "entityId": "203999",
            "scope": "seasonAverage",
            "value": 10.9,
            "displayValue": "10.9"
          }
        ]
      }
    ],
    "recentGames": [
      {
        "fixtureId": "0022501130",
        "fixtureDate": "2026-04-04",
        "opponentEntityId": "1610612759",
        "statistics": [
          {
            "key": "points",
            "label": "Points",
            "unit": "points",
            "values": [
              {
                "label": "Game",
                "entityId": "203999",
                "scope": "recentGame",
                "value": 40,
                "displayValue": "40"
              }
            ]
          },
          {
            "key": "rebounds",
            "label": "Rebounds",
            "unit": "count",
            "values": [
              {
                "label": "Game",
                "entityId": "203999",
                "scope": "recentGame",
                "value": 8,
                "displayValue": "8"
              }
            ]
          },
          {
            "key": "assists",
            "label": "Assists",
            "unit": "count",
            "values": [
              {
                "label": "Game",
                "entityId": "203999",
                "scope": "recentGame",
                "value": 13,
                "displayValue": "13"
              }
            ]
          }
        ]
      },
      {
        "fixtureId": "0022501112",
        "fixtureDate": "2026-04-01",
        "opponentEntityId": "1610612762",
        "statistics": [
          {
            "key": "points",
            "label": "Points",
            "unit": "points",
            "values": [
              {
                "label": "Game",
                "entityId": "203999",
                "scope": "recentGame",
                "value": 15,
                "displayValue": "15"
              }
            ]
          },
          {
            "key": "rebounds",
            "label": "Rebounds",
            "unit": "count",
            "values": [
              {
                "label": "Game",
                "entityId": "203999",
                "scope": "recentGame",
                "value": 17,
                "displayValue": "17"
              }
            ]
          },
          {
            "key": "assists",
            "label": "Assists",
            "unit": "count",
            "values": [
              {
                "label": "Game",
                "entityId": "203999",
                "scope": "recentGame",
                "value": 12,
                "displayValue": "12"
              }
            ]
          }
        ]
      },
      {
        "fixtureId": "0022501090",
        "fixtureDate": "2026-03-29",
        "opponentEntityId": "1610612744",
        "statistics": [
          {
            "key": "points",
            "label": "Points",
            "unit": "points",
            "values": [
              {
                "label": "Game",
                "entityId": "203999",
                "scope": "recentGame",
                "value": 25,
                "displayValue": "25"
              }
            ]
          },
          {
            "key": "rebounds",
            "label": "Rebounds",
            "unit": "count",
            "values": [
              {
                "label": "Game",
                "entityId": "203999",
                "scope": "recentGame",
                "value": 15,
                "displayValue": "15"
              }
            ]
          },
          {
            "key": "assists",
            "label": "Assists",
            "unit": "count",
            "values": [
              {
                "label": "Game",
                "entityId": "203999",
                "scope": "recentGame",
                "value": 8,
                "displayValue": "8"
              }
            ]
          }
        ]
      }
    ],
    "comparisons": [
      {
        "key": "assists",
        "label": "Assists",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "203999",
            "scope": "currentGame",
            "value": 13,
            "displayValue": "13"
          },
          {
            "label": "Season average",
            "entityId": "203999",
            "scope": "seasonAverage",
            "value": 10.9,
            "displayValue": "10.9"
          }
        ]
      }
    ]
  },
  "assets": []
}
```

<a id="schema-playerPerformanceItemV2"></a>

### nba.player-performance-summary (version 2) [#nbaplayer-performance-summary-version-2]

Content shape: [`playerPerformanceContentV2`](#schema-playerPerformanceContentV2).

| Field              | Required | Type / values                                                 | Constraints  |
| ------------------ | -------- | ------------------------------------------------------------- | ------------ |
| `headline`         | Yes      | string                                                        | minLength: 1 |
| `summary`          | Yes      | string                                                        | minLength: 1 |
| `statLine`         | Yes      | string                                                        | minLength: 1 |
| `playerId`         | Yes      | string                                                        | minLength: 1 |
| `actionNumber`     | Yes      | integer                                                       | minimum: 0   |
| `gameState`        | Yes      | [`gameState`](#schema-gameState)                              |              |
| `gameStatistics`   | Yes      | array of [`statisticV2`](#schema-statisticV2)                 |              |
| `seasonAverages`   | Yes      | array of [`statisticV2`](#schema-statisticV2)                 |              |
| `recentGames`      | Yes      | array of [`recentPerformanceV2`](#schema-recentPerformanceV2) |              |
| `comparisons`      | Yes      | array of [`statisticV2`](#schema-statisticV2)                 |              |
| `shotChartAssetId` | No       | string                                                        | minLength: 1 |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.player-performance-summary"
        },
        "definitionVersion": {
          "const": 2
        },
        "content": {
          "$ref": "#/$defs/playerPerformanceContentV2"
        }
      }
    }
  ]
}
```

**Real item from fixture 0042500405**

```json
{
  "id": "0042500405-player-1642844-774",
  "fixtureId": "0042500405",
  "definitionKey": "nba.player-performance-summary",
  "definitionVersion": 2,
  "revision": 1,
  "effectiveAt": "2026-06-14T03:27:56Z",
  "asOf": "2026-06-14T03:27:56Z",
  "publishedAt": "2026-06-14T03:27:56Z",
  "entities": [
    {
      "id": "1642844",
      "kind": "player",
      "displayName": "Dylan Harper"
    },
    {
      "id": "1610612752",
      "kind": "team",
      "displayName": "New York Knicks"
    },
    {
      "id": "1610612759",
      "kind": "team",
      "displayName": "San Antonio Spurs"
    }
  ],
  "content": {
    "headline": "Harper misses both free throws with 8.5 seconds left",
    "summary": "Dylan Harper misses two free throws with 8.5 seconds left and San Antonio down 93-90, and OG Anunoby's rebound gives New York the ball. Harper has 25 points, the most for the Spurs tonight.",
    "statLine": "25 PTS · 3-6 FT",
    "playerId": "1642844",
    "actionNumber": 774,
    "gameState": {
      "period": 4,
      "periodLabel": "Q4",
      "clock": "PT00M08.50S",
      "awayTeamId": "1610612752",
      "awayScore": 93,
      "homeTeamId": "1610612759",
      "homeScore": 90
    },
    "gameStatistics": [
      {
        "key": "points",
        "label": "Points",
        "unit": "points",
        "values": [
          {
            "label": "Current game",
            "entityId": "1642844",
            "scope": "currentGame",
            "value": 25,
            "displayValue": "25"
          }
        ]
      },
      {
        "key": "rebounds",
        "label": "Rebounds",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "1642844",
            "scope": "currentGame",
            "value": 5,
            "displayValue": "5"
          }
        ]
      },
      {
        "key": "assists",
        "label": "Assists",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "1642844",
            "scope": "currentGame",
            "value": 4,
            "displayValue": "4"
          }
        ]
      },
      {
        "key": "freeThrowsMade",
        "label": "Free throws made",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "1642844",
            "scope": "currentGame",
            "value": 3,
            "displayValue": "3"
          }
        ]
      },
      {
        "key": "freeThrowsAttempted",
        "label": "Free throws attempted",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "1642844",
            "scope": "currentGame",
            "value": 6,
            "displayValue": "6"
          }
        ]
      }
    ],
    "seasonAverages": [
      {
        "key": "points",
        "label": "Points",
        "unit": "points",
        "values": [
          {
            "label": "2026 playoff average (22 games)",
            "entityId": "1642844",
            "scope": "postseasonAverage",
            "value": 13.6,
            "displayValue": "13.6"
          },
          {
            "label": "2025-26 regular season average (69 games)",
            "entityId": "1642844",
            "scope": "seasonAverage",
            "value": 11.8,
            "displayValue": "11.8"
          }
        ]
      },
      {
        "key": "rebounds",
        "label": "Rebounds",
        "unit": "count",
        "values": [
          {
            "label": "2026 playoff average (22 games)",
            "entityId": "1642844",
            "scope": "postseasonAverage",
            "value": 5.6,
            "displayValue": "5.6"
          },
          {
            "label": "2025-26 regular season average (69 games)",
            "entityId": "1642844",
            "scope": "seasonAverage",
            "value": 3.4,
            "displayValue": "3.4"
          }
        ]
      },
      {
        "key": "assists",
        "label": "Assists",
        "unit": "count",
        "values": [
          {
            "label": "2026 playoff average (22 games)",
            "entityId": "1642844",
            "scope": "postseasonAverage",
            "value": 2.6,
            "displayValue": "2.6"
          },
          {
            "label": "2025-26 regular season average (69 games)",
            "entityId": "1642844",
            "scope": "seasonAverage",
            "value": 3.9,
            "displayValue": "3.9"
          }
        ]
      }
    ],
    "recentGames": [
      {
        "fixtureDate": "2026-06-10",
        "opponentEntityId": "1610612752",
        "statistics": [
          {
            "key": "points",
            "label": "Points",
            "unit": "points",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 21,
                "displayValue": "21"
              }
            ]
          },
          {
            "key": "rebounds",
            "label": "Rebounds",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 4,
                "displayValue": "4"
              }
            ]
          },
          {
            "key": "assists",
            "label": "Assists",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 3,
                "displayValue": "3"
              }
            ]
          },
          {
            "key": "threePointersMade",
            "label": "Three-pointers made",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 3,
                "displayValue": "3"
              }
            ]
          }
        ]
      },
      {
        "fixtureDate": "2026-06-08",
        "opponentEntityId": "1610612752",
        "statistics": [
          {
            "key": "points",
            "label": "Points",
            "unit": "points",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 13,
                "displayValue": "13"
              }
            ]
          },
          {
            "key": "rebounds",
            "label": "Rebounds",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 9,
                "displayValue": "9"
              }
            ]
          },
          {
            "key": "assists",
            "label": "Assists",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 4,
                "displayValue": "4"
              }
            ]
          },
          {
            "key": "threePointersMade",
            "label": "Three-pointers made",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 1,
                "displayValue": "1"
              }
            ]
          }
        ]
      },
      {
        "fixtureDate": "2026-06-05",
        "opponentEntityId": "1610612752",
        "statistics": [
          {
            "key": "points",
            "label": "Points",
            "unit": "points",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 15,
                "displayValue": "15"
              }
            ]
          },
          {
            "key": "rebounds",
            "label": "Rebounds",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 6,
                "displayValue": "6"
              }
            ]
          },
          {
            "key": "assists",
            "label": "Assists",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 3,
                "displayValue": "3"
              }
            ]
          },
          {
            "key": "threePointersMade",
            "label": "Three-pointers made",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 0,
                "displayValue": "0"
              }
            ]
          }
        ]
      },
      {
        "fixtureDate": "2026-06-03",
        "opponentEntityId": "1610612752",
        "statistics": [
          {
            "key": "points",
            "label": "Points",
            "unit": "points",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 16,
                "displayValue": "16"
              }
            ]
          },
          {
            "key": "rebounds",
            "label": "Rebounds",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 8,
                "displayValue": "8"
              }
            ]
          },
          {
            "key": "assists",
            "label": "Assists",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 1,
                "displayValue": "1"
              }
            ]
          },
          {
            "key": "threePointersMade",
            "label": "Three-pointers made",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 1,
                "displayValue": "1"
              }
            ]
          }
        ]
      },
      {
        "fixtureDate": "2026-05-30",
        "opponentEntityId": "1610612760",
        "statistics": [
          {
            "key": "points",
            "label": "Points",
            "unit": "points",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 12,
                "displayValue": "12"
              }
            ]
          },
          {
            "key": "rebounds",
            "label": "Rebounds",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 7,
                "displayValue": "7"
              }
            ]
          },
          {
            "key": "assists",
            "label": "Assists",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 3,
                "displayValue": "3"
              }
            ]
          },
          {
            "key": "threePointersMade",
            "label": "Three-pointers made",
            "unit": "count",
            "values": [
              {
                "label": "Recent game",
                "entityId": "1642844",
                "scope": "recentGame",
                "value": 2,
                "displayValue": "2"
              }
            ]
          }
        ]
      }
    ],
    "comparisons": [
      {
        "key": "points",
        "label": "Points",
        "unit": "points",
        "values": [
          {
            "label": "Current game",
            "entityId": "1642844",
            "scope": "currentGame",
            "value": 25,
            "displayValue": "25"
          },
          {
            "label": "2026 playoff high",
            "entityId": "1642844",
            "scope": "postseasonHigh",
            "value": 27,
            "displayValue": "27"
          },
          {
            "label": "Career playoff high",
            "entityId": "1642844",
            "scope": "careerPlayoffHigh",
            "value": 27,
            "displayValue": "27"
          },
          {
            "label": "2025-26 regular season high",
            "entityId": "1642844",
            "scope": "seasonHigh",
            "value": 24,
            "displayValue": "24"
          },
          {
            "label": "Career high (regular season)",
            "entityId": "1642844",
            "scope": "careerHigh",
            "value": 24,
            "displayValue": "24"
          }
        ]
      }
    ]
  },
  "assets": []
}
```

<a id="schema-teamPerformanceItem"></a>

### nba.team-performance-summary (version 1) [#nbateam-performance-summary-version-1]

Content shape: [`teamPerformanceContent`](#schema-teamPerformanceContent).

| Field              | Required | Type / values                             | Constraints  |
| ------------------ | -------- | ----------------------------------------- | ------------ |
| `summary`          | Yes      | string                                    | minLength: 1 |
| `teamId`           | Yes      | string                                    | minLength: 1 |
| `gameState`        | Yes      | [`gameState`](#schema-gameState)          |              |
| `gameStatistics`   | Yes      | array of [`statistic`](#schema-statistic) |              |
| `seasonAverages`   | Yes      | array of [`statistic`](#schema-statistic) |              |
| `comparisons`      | Yes      | array of [`statistic`](#schema-statistic) |              |
| `shotChartAssetId` | No       | string                                    | minLength: 1 |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.team-performance-summary"
        },
        "definitionVersion": {
          "const": 1
        },
        "content": {
          "$ref": "#/$defs/teamPerformanceContent"
        }
      }
    }
  ]
}
```

**Real item from fixture 0022501147**

```json
{
  "id": "0022501147-team-1610612757-three-point-volume",
  "fixtureId": "0022501147",
  "definitionKey": "nba.team-performance-summary",
  "definitionVersion": 1,
  "revision": 5,
  "effectiveAt": "2026-04-07T01:35:55.000Z",
  "asOf": "2026-04-07T03:40:24Z",
  "publishedAt": "2026-04-07T03:41:07.000Z",
  "entities": [
    {
      "id": "1610612757",
      "kind": "team",
      "displayName": "Portland Trail Blazers"
    },
    {
      "id": "1610612743",
      "kind": "team",
      "displayName": "Denver Nuggets"
    }
  ],
  "content": {
    "summary": "Portland's 25th three is a franchise game high, according to the NBA alert feed, and accounts for 75 of its first 128 points.",
    "teamId": "1610612757",
    "gameState": {
      "period": 5,
      "periodLabel": "OT1",
      "clock": "PT03M04.00S",
      "awayTeamId": "1610612757",
      "awayScore": 128,
      "homeTeamId": "1610612743",
      "homeScore": 131
    },
    "gameStatistics": [
      {
        "key": "threePointersMade",
        "label": "Three-pointers made",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 25,
            "displayValue": "25"
          }
        ]
      },
      {
        "key": "threePointersAttempted",
        "label": "Three-pointers attempted",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 51,
            "displayValue": "51"
          }
        ]
      },
      {
        "key": "threePointPercentage",
        "label": "Three-point percentage",
        "unit": "percent",
        "values": [
          {
            "label": "Current game",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 49.01960784313725,
            "displayValue": "49.0%"
          }
        ]
      }
    ],
    "seasonAverages": [
      {
        "key": "threePointersMade",
        "label": "Three-pointers made",
        "unit": "count",
        "values": [
          {
            "label": "Season average",
            "entityId": "1610612757",
            "scope": "seasonAverage",
            "value": 14.4,
            "displayValue": "14.4"
          }
        ]
      },
      {
        "key": "threePointPercentage",
        "label": "Three-point percentage",
        "unit": "percent",
        "values": [
          {
            "label": "Season average",
            "entityId": "1610612757",
            "scope": "seasonAverage",
            "value": 34.1,
            "displayValue": "34.1%"
          }
        ]
      }
    ],
    "comparisons": [
      {
        "key": "threePointersMade",
        "label": "Three-pointers made",
        "unit": "count",
        "values": [
          {
            "label": "Current game",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 25,
            "displayValue": "25"
          },
          {
            "label": "Season average",
            "entityId": "1610612757",
            "scope": "seasonAverage",
            "value": 14.4,
            "displayValue": "14.4"
          }
        ]
      }
    ],
    "shotChartAssetId": "0022501147-team-1610612757-three-point-volume-shot-chart-r5"
  },
  "assets": [
    {
      "id": "0022501147-team-1610612757-three-point-volume-shot-chart-r5",
      "kind": "shot-chart",
      "href": "../assets/0022501147-team-1610612757-three-point-volume-shot-chart-r5.svg",
      "mediaType": "image/svg+xml",
      "altText": "Portland three-point shot chart. 25 makes and 26 misses through the stated checkpoint."
    }
  ]
}
```

<a id="schema-teamPerformanceItemV2"></a>

### nba.team-performance-summary (version 2) [#nbateam-performance-summary-version-2]

Content shape: [`teamPerformanceContentV2`](#schema-teamPerformanceContentV2).

| Field              | Required | Type / values                             | Constraints  |
| ------------------ | -------- | ----------------------------------------- | ------------ |
| `headline`         | Yes      | string                                    | minLength: 1 |
| `summary`          | Yes      | string                                    | minLength: 1 |
| `teamId`           | Yes      | string                                    | minLength: 1 |
| `gameState`        | Yes      | [`gameState`](#schema-gameState)          |              |
| `gameStatistics`   | Yes      | array of [`statistic`](#schema-statistic) |              |
| `seasonAverages`   | Yes      | array of [`statistic`](#schema-statistic) |              |
| `comparisons`      | Yes      | array of [`statistic`](#schema-statistic) |              |
| `shotChartAssetId` | No       | string                                    | minLength: 1 |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.team-performance-summary"
        },
        "definitionVersion": {
          "const": 2
        },
        "content": {
          "$ref": "#/$defs/teamPerformanceContentV2"
        }
      }
    }
  ]
}
```

**Real item from fixture 0012600066**

```json
{
  "id": "614150fd-590a-faec-02ff-0724ad71bf72",
  "fixtureId": "0012600066",
  "definitionKey": "nba.team-performance-summary",
  "definitionVersion": 2,
  "revision": 1,
  "effectiveAt": "2026-10-05T01:21:36.587+00:00",
  "asOf": "2026-10-05T01:24:08.939+00:00",
  "publishedAt": "2026-10-05T01:28:03.7864047+00:00",
  "entities": [
    {
      "id": "1610612744",
      "kind": "team",
      "displayName": "GSW"
    },
    {
      "id": "1610612746",
      "kind": "team",
      "displayName": "LAC"
    }
  ],
  "content": {
    "comparisons": [
      {
        "key": "secondChancePoints",
        "label": "Second-chance points",
        "unit": "points",
        "values": [
          {
            "displayValue": "18",
            "entityId": "1610612744",
            "label": "GSW",
            "scope": "currentGame",
            "value": 18
          },
          {
            "displayValue": "4",
            "entityId": "1610612746",
            "label": "LAC",
            "scope": "currentGame",
            "value": 4
          },
          {
            "displayValue": "15.7",
            "entityId": "1610612744",
            "label": "2025-26 season average (82 games)",
            "scope": "seasonAverage",
            "value": 15.7
          }
        ]
      }
    ],
    "gameState": {
      "awayScore": 95,
      "awayTeamId": "1610612744",
      "clock": "PT02M17.00S",
      "homeScore": 95,
      "homeTeamId": "1610612746",
      "period": 4,
      "periodLabel": "Q4"
    },
    "gameStatistics": [
      {
        "key": "secondChancePoints",
        "label": "Second-chance points",
        "unit": "points",
        "values": [
          {
            "displayValue": "18",
            "entityId": "1610612744",
            "label": "Current game",
            "scope": "currentGame",
            "value": 18
          }
        ]
      }
    ],
    "headline": "Warriors hold 18-4 edge in second-chance points",
    "seasonAverages": [
      {
        "key": "secondChancePoints",
        "label": "Second-chance points",
        "unit": "points",
        "values": [
          {
            "displayValue": "15.7",
            "entityId": "1610612744",
            "label": "2025-26 season average (82 games)",
            "scope": "seasonAverage",
            "value": 15.7
          }
        ]
      }
    ],
    "summary": "Golden State has 18 second-chance points to the Clippers’ four. Two offensive rebounds by Charles Bassey and Dalen Terry extended the possession for Alex Toohey’s go-ahead layup, putting the Warriors up 94-93; the game is now tied 95-95.",
    "teamId": "1610612744"
  },
  "assets": []
}
```

<a id="schema-fourFactorsItem"></a>

### nba.four-factors (version 1) [#nbafour-factors-version-1]

Content shape: [`fourFactorsContent`](#schema-fourFactorsContent).

| Field            | Required | Type / values                                                                                               | Constraints              |
| ---------------- | -------- | ----------------------------------------------------------------------------------------------------------- | ------------------------ |
| `summary`        | Yes      | string                                                                                                      | minLength: 1             |
| `descriptor`     | Yes      | string                                                                                                      | minLength: 1             |
| `focusFactorKey` | Yes      | `"effectiveFieldGoalPercentage"`, `"turnoverPercentage"`, `"offensiveReboundPercentage"`, `"freeThrowRate"` |                          |
| `gameState`      | Yes      | [`gameState`](#schema-gameState)                                                                            |                          |
| `factors`        | Yes      | array of [`statistic`](#schema-statistic)                                                                   | minItems: 4; maxItems: 4 |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.four-factors"
        },
        "definitionVersion": {
          "const": 1
        },
        "content": {
          "$ref": "#/$defs/fourFactorsContent"
        }
      }
    }
  ]
}
```

**Real item from fixture 0022501147**

```json
{
  "id": "0022501147-four-factors-q4",
  "fixtureId": "0022501147",
  "definitionKey": "nba.four-factors",
  "definitionVersion": 1,
  "revision": 1,
  "effectiveAt": "2026-04-07T03:34:24Z",
  "asOf": "2026-04-07T03:34:24Z",
  "publishedAt": "2026-04-07T03:34:35.000Z",
  "entities": [
    {
      "id": "1610612757",
      "kind": "team",
      "displayName": "Portland Trail Blazers"
    },
    {
      "id": "1610612743",
      "kind": "team",
      "displayName": "Denver Nuggets"
    }
  ],
  "content": {
    "summary": "Free-throw rate is the widest Four Factors gap: Portland leads 33.7% to 23.4%.",
    "descriptor": "Four Factors compare shooting efficiency, ball security, offensive rebounding and free-throw pressure.",
    "focusFactorKey": "freeThrowRate",
    "gameState": {
      "period": 4,
      "periodLabel": "Q4",
      "clock": "PT00M00.00S",
      "awayTeamId": "1610612757",
      "awayScore": 125,
      "homeTeamId": "1610612743",
      "homeScore": 125
    },
    "factors": [
      {
        "key": "effectiveFieldGoalPercentage",
        "label": "Effective field-goal percentage",
        "unit": "percent",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 61.4,
            "displayValue": "61.4%"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 56.4,
            "displayValue": "56.4%"
          }
        ]
      },
      {
        "key": "turnoverPercentage",
        "label": "Turnover percentage",
        "unit": "percent",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 16.5,
            "displayValue": "16.5%"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 12.4,
            "displayValue": "12.4%"
          }
        ]
      },
      {
        "key": "offensiveReboundPercentage",
        "label": "Offensive-rebound percentage",
        "unit": "percent",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 39.6,
            "displayValue": "39.6%"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 43.5,
            "displayValue": "43.5%"
          }
        ]
      },
      {
        "key": "freeThrowRate",
        "label": "Free-throw rate",
        "unit": "percent",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 33.7,
            "displayValue": "33.7%"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 23.4,
            "displayValue": "23.4%"
          }
        ]
      }
    ]
  },
  "assets": []
}
```

<a id="schema-fourFactorsItemV2"></a>

### nba.four-factors (version 2) [#nbafour-factors-version-2]

Content shape: [`fourFactorsContentV2`](#schema-fourFactorsContentV2).

| Field                   | Required | Type / values                                                                                                        | Constraints              |
| ----------------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| `summary`               | Yes      | string                                                                                                               | minLength: 1             |
| `descriptor`            | Yes      | string                                                                                                               | minLength: 1             |
| `focusFactorKey`        | Yes      | `"effectiveFieldGoalPercentage"`, `"turnoverPercentage"`, `"offensiveReboundPercentage"`, `"freeThrowRate"`          |                          |
| `gameState`             | Yes      | [`gameState`](#schema-gameState)                                                                                     |                          |
| `factors`               | Yes      | array of [`statistic`](#schema-statistic)                                                                            | minItems: 2; maxItems: 4 |
| `unavailableFactorKeys` | Yes      | array of `"effectiveFieldGoalPercentage"`, `"turnoverPercentage"`, `"offensiveReboundPercentage"`, `"freeThrowRate"` | maxItems: 2              |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.four-factors"
        },
        "definitionVersion": {
          "const": 2
        },
        "content": {
          "$ref": "#/$defs/fourFactorsContentV2"
        }
      }
    }
  ]
}
```

**Real item from fixture 0012600066**

```json
{
  "id": "25b85e9f-5969-a0f7-81b1-5d9e102dc4a3",
  "fixtureId": "0012600066",
  "definitionKey": "nba.four-factors",
  "definitionVersion": 2,
  "revision": 1,
  "effectiveAt": "2026-10-05T01:33:38.928+00:00",
  "asOf": "2026-10-05T01:37:44.749+00:00",
  "publishedAt": "2026-10-05T01:42:08.488219+00:00",
  "entities": [
    {
      "id": "1610612744",
      "kind": "team",
      "displayName": "GSW"
    },
    {
      "id": "1610612746",
      "kind": "team",
      "displayName": "LAC"
    }
  ],
  "content": {
    "descriptor": "Four Factors compares shooting efficiency, ball security, offensive rebounding and getting to the free-throw line.",
    "factors": [
      {
        "key": "effectiveFieldGoalPercentage",
        "label": "Effective field-goal percentage",
        "unit": "percent",
        "values": [
          {
            "displayValue": "42.1%",
            "entityId": "1610612744",
            "label": "GSW",
            "scope": "currentGame",
            "value": 42.1
          },
          {
            "displayValue": "46.9%",
            "entityId": "1610612746",
            "label": "LAC",
            "scope": "currentGame",
            "value": 46.9
          }
        ]
      },
      {
        "key": "offensiveReboundPercentage",
        "label": "Offensive-rebound percentage",
        "unit": "percent",
        "values": [
          {
            "displayValue": "28.6%",
            "entityId": "1610612744",
            "label": "GSW",
            "scope": "currentGame",
            "value": 28.6
          },
          {
            "displayValue": "26.4%",
            "entityId": "1610612746",
            "label": "LAC",
            "scope": "currentGame",
            "value": 26.4
          }
        ]
      },
      {
        "key": "freeThrowRate",
        "label": "Free-throw rate",
        "unit": "percent",
        "values": [
          {
            "displayValue": "32.6%",
            "entityId": "1610612744",
            "label": "GSW",
            "scope": "currentGame",
            "value": 32.6
          },
          {
            "displayValue": "47.5%",
            "entityId": "1610612746",
            "label": "LAC",
            "scope": "currentGame",
            "value": 47.5
          }
        ]
      }
    ],
    "focusFactorKey": "freeThrowRate",
    "gameState": {
      "awayScore": 101,
      "awayTeamId": "1610612744",
      "clock": "PT00M00.00S",
      "homeScore": 104,
      "homeTeamId": "1610612746",
      "period": 4,
      "periodLabel": "Q4"
    },
    "summary": "Los Angeles widened its free-throw-rate edge from 42.6%-34.8% after three quarters to 47.5%-32.6%, with 38 free-throw attempts to Golden State's 31. The Clippers won 104-101.",
    "unavailableFactorKeys": [
      "turnoverPercentage"
    ]
  },
  "assets": []
}
```

<a id="schema-pointBreakdownItem"></a>

### nba.point-breakdown (version 1) [#nbapoint-breakdown-version-1]

Content shape: [`pointBreakdownContent`](#schema-pointBreakdownContent).

| Field              | Required | Type / values                                                                          | Constraints              |
| ------------------ | -------- | -------------------------------------------------------------------------------------- | ------------------------ |
| `summary`          | Yes      | string                                                                                 | minLength: 1             |
| `descriptor`       | Yes      | string                                                                                 | minLength: 1             |
| `focusCategoryKey` | Yes      | `"fastBreakPoints"`, `"pointsInPaint"`, `"pointsOffTurnovers"`, `"secondChancePoints"` |                          |
| `gameState`        | Yes      | [`gameState`](#schema-gameState)                                                       |                          |
| `categories`       | Yes      | array of [`statistic`](#schema-statistic)                                              | minItems: 4; maxItems: 4 |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.point-breakdown"
        },
        "definitionVersion": {
          "const": 1
        },
        "content": {
          "$ref": "#/$defs/pointBreakdownContent"
        }
      }
    }
  ]
}
```

**Real item from fixture 0022501147**

```json
{
  "id": "0022501147-point-breakdown-q4",
  "fixtureId": "0022501147",
  "definitionKey": "nba.point-breakdown",
  "definitionVersion": 1,
  "revision": 1,
  "effectiveAt": "2026-04-07T03:34:24Z",
  "asOf": "2026-04-07T03:34:24Z",
  "publishedAt": "2026-04-07T03:34:36.000Z",
  "entities": [
    {
      "id": "1610612757",
      "kind": "team",
      "displayName": "Portland Trail Blazers"
    },
    {
      "id": "1610612743",
      "kind": "team",
      "displayName": "Denver Nuggets"
    }
  ],
  "content": {
    "summary": "Denver's 62–28 edge in points in the paint is the largest scoring-source gap.",
    "descriptor": "Points Breakdown compares fast-break, paint, off-turnover and second-chance scoring; categories can overlap.",
    "focusCategoryKey": "pointsInPaint",
    "gameState": {
      "period": 4,
      "periodLabel": "Q4",
      "clock": "PT00M00.00S",
      "awayTeamId": "1610612757",
      "awayScore": 125,
      "homeTeamId": "1610612743",
      "homeScore": 125
    },
    "categories": [
      {
        "key": "fastBreakPoints",
        "label": "Fast-break points",
        "unit": "points",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 16,
            "displayValue": "16"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 13,
            "displayValue": "13"
          }
        ]
      },
      {
        "key": "pointsInPaint",
        "label": "Points in the paint",
        "unit": "points",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 28,
            "displayValue": "28"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 62,
            "displayValue": "62"
          }
        ]
      },
      {
        "key": "pointsOffTurnovers",
        "label": "Points off turnovers",
        "unit": "points",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 16,
            "displayValue": "16"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 18,
            "displayValue": "18"
          }
        ]
      },
      {
        "key": "secondChancePoints",
        "label": "Second-chance points",
        "unit": "points",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 15,
            "displayValue": "15"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 30,
            "displayValue": "30"
          }
        ]
      }
    ]
  },
  "assets": []
}
```

<a id="schema-defensiveItem"></a>

### nba.defensive-summary (version 1) [#nbadefensive-summary-version-1]

Content shape: [`defensiveContent`](#schema-defensiveContent).

| Field                | Required | Type / values                                                                                | Constraints                    |
| -------------------- | -------- | -------------------------------------------------------------------------------------------- | ------------------------------ |
| `summary`            | Yes      | string                                                                                       | minLength: 1                   |
| `focusStatisticKeys` | Yes      | array of `"offensiveRebounds"`, `"defensiveRebounds"`, `"turnovers"`, `"blocks"`, `"steals"` | minItems: 1; uniqueItems: true |
| `gameState`          | Yes      | [`gameState`](#schema-gameState)                                                             |                                |
| `statistics`         | Yes      | array of [`statistic`](#schema-statistic)                                                    | minItems: 5; maxItems: 5       |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.defensive-summary"
        },
        "definitionVersion": {
          "const": 1
        },
        "content": {
          "$ref": "#/$defs/defensiveContent"
        }
      }
    }
  ]
}
```

**Real item from fixture 0022501147**

```json
{
  "id": "0022501147-defensive-q4",
  "fixtureId": "0022501147",
  "definitionKey": "nba.defensive-summary",
  "definitionVersion": 1,
  "revision": 1,
  "effectiveAt": "2026-04-07T03:34:24Z",
  "asOf": "2026-04-07T03:34:24Z",
  "publishedAt": "2026-04-07T03:34:37.000Z",
  "entities": [
    {
      "id": "1610612757",
      "kind": "team",
      "displayName": "Portland Trail Blazers"
    },
    {
      "id": "1610612743",
      "kind": "team",
      "displayName": "Denver Nuggets"
    }
  ],
  "content": {
    "summary": "The largest defensive-breakdown gap is offensive rebounds: Portland 11, Denver 17.",
    "focusStatisticKeys": [
      "offensiveRebounds"
    ],
    "gameState": {
      "period": 4,
      "periodLabel": "Q4",
      "clock": "PT00M00.00S",
      "awayTeamId": "1610612757",
      "awayScore": 125,
      "homeTeamId": "1610612743",
      "homeScore": 125
    },
    "statistics": [
      {
        "key": "offensiveRebounds",
        "label": "Offensive rebounds",
        "unit": "count",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 11,
            "displayValue": "11"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 17,
            "displayValue": "17"
          }
        ]
      },
      {
        "key": "defensiveRebounds",
        "label": "Defensive rebounds",
        "unit": "count",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 25,
            "displayValue": "25"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 25,
            "displayValue": "25"
          }
        ]
      },
      {
        "key": "turnovers",
        "label": "Turnovers forced",
        "unit": "count",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 12,
            "displayValue": "12"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 16,
            "displayValue": "16"
          }
        ]
      },
      {
        "key": "blocks",
        "label": "Blocks",
        "unit": "count",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 5,
            "displayValue": "5"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 5,
            "displayValue": "5"
          }
        ]
      },
      {
        "key": "steals",
        "label": "Steals",
        "unit": "count",
        "values": [
          {
            "label": "Portland Trail Blazers",
            "entityId": "1610612757",
            "scope": "currentGame",
            "value": 8,
            "displayValue": "8"
          },
          {
            "label": "Denver Nuggets",
            "entityId": "1610612743",
            "scope": "currentGame",
            "value": 10,
            "displayValue": "10"
          }
        ]
      }
    ]
  },
  "assets": []
}
```

<a id="schema-runMomentumItem"></a>

### nba.run-momentum (version 1) [#nbarun-momentum-version-1]

Content shape: [`runMomentumContent`](#schema-runMomentumContent).

| Field                | Required | Type / values                    | Constraints  |
| -------------------- | -------- | -------------------------------- | ------------ |
| `summary`            | Yes      | string                           | minLength: 1 |
| `teamId`             | Yes      | string                           | minLength: 1 |
| `actionNumber`       | Yes      | integer                          | minimum: 0   |
| `run`                | Yes      | object                           |              |
| `contributors`       | Yes      | array of object                  | maxItems: 4  |
| `turnoversForced`    | Yes      | integer                          | minimum: 0   |
| `pointsOffTurnovers` | Yes      | integer                          | minimum: 0   |
| `answersItemId`      | No       | string                           | minLength: 1 |
| `gameState`          | Yes      | [`gameState`](#schema-gameState) |              |

**Complete item schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/contentItem"
    },
    {
      "type": "object",
      "properties": {
        "definitionKey": {
          "const": "nba.run-momentum"
        },
        "definitionVersion": {
          "const": 1
        },
        "content": {
          "$ref": "#/$defs/runMomentumContent"
        }
      }
    }
  ]
}
```

**Real item from fixture 0012600066**

```json
{
  "id": "3d18f2d0-f57a-3761-49b7-8cd3fc069ece",
  "fixtureId": "0012600066",
  "definitionKey": "nba.run-momentum",
  "definitionVersion": 1,
  "revision": 1,
  "effectiveAt": "2026-10-05T01:15:26.288+00:00",
  "asOf": "2026-10-05T01:17:28.505+00:00",
  "publishedAt": "2026-10-05T01:23:48.6175815+00:00",
  "entities": [
    {
      "id": "1610612744",
      "kind": "team",
      "displayName": "GSW"
    },
    {
      "id": "1610612746",
      "kind": "team",
      "displayName": "LAC"
    },
    {
      "id": "1643413",
      "kind": "player",
      "displayName": "Keaton Wagler"
    },
    {
      "id": "1642353",
      "kind": "player",
      "displayName": "Cam Christie"
    }
  ],
  "content": {
    "actionNumber": 703,
    "answersItemId": "2455a3e2-fa9c-0537-c9a4-56f4cf5112bd",
    "contributors": [
      {
        "assists": 0,
        "playerId": "1643413",
        "points": 5,
        "steals": 0
      },
      {
        "assists": 0,
        "playerId": "1642353",
        "points": 2,
        "steals": 0
      }
    ],
    "gameState": {
      "awayScore": 92,
      "awayTeamId": "1610612744",
      "clock": "PT04M16.00S",
      "homeScore": 91,
      "homeTeamId": "1610612746",
      "period": 4,
      "periodLabel": "Q4"
    },
    "pointsOffTurnovers": 0,
    "run": {
      "endScore": {
        "away": 88,
        "home": 89
      },
      "lastActionNumber": 699,
      "periods": [
        4
      ],
      "pointsAgainst": 0,
      "pointsFor": 7,
      "startActionNumber": 684,
      "startScore": {
        "away": 88,
        "home": 82
      },
      "teamId": "1610612746",
      "unanswered": true
    },
    "summary": "Keaton Wagler's five points and Cam Christie's running reverse layup fueled a 7-0 Clippers run, erasing an 88-82 deficit for an 89-88 lead. Charles Bassey's putback ended it; after two more lead changes, Golden State leads 92-91.",
    "teamId": "1610612746",
    "turnoversForced": 0
  },
  "assets": []
}
```

## NBA shared structures [#nba-shared-structures]

References in the tables link here. Complete excerpts retain composition, required fields, bounds and additional-property rules.

<a id="schema-statisticValue"></a>

### statisticValue [#statisticvalue]

| Field          | Required | Type / values                                      | Constraints  |
| -------------- | -------- | -------------------------------------------------- | ------------ |
| `label`        | Yes      | string                                             | minLength: 1 |
| `entityId`     | Yes      | string                                             | minLength: 1 |
| `scope`        | Yes      | `"currentGame"`, `"seasonAverage"`, `"recentGame"` |              |
| `value`        | Yes      | one of: number / string / boolean                  |              |
| `displayValue` | Yes      | string                                             |              |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "label",
    "entityId",
    "scope",
    "value",
    "displayValue"
  ],
  "properties": {
    "label": {
      "type": "string",
      "minLength": 1
    },
    "entityId": {
      "type": "string",
      "minLength": 1
    },
    "scope": {
      "enum": [
        "currentGame",
        "seasonAverage",
        "recentGame"
      ]
    },
    "value": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "string"
        },
        {
          "type": "boolean"
        }
      ]
    },
    "displayValue": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
```

<a id="schema-statistic"></a>

### statistic [#statistic]

| Field    | Required | Type / values                                       | Constraints                     |
| -------- | -------- | --------------------------------------------------- | ------------------------------- |
| `key`    | Yes      | string                                              | pattern: ^\[a-z]\[A-Za-z0-9]\*$ |
| `label`  | Yes      | string                                              | minLength: 1                    |
| `unit`   | Yes      | `"count"`, `"points"`, `"percent"`                  |                                 |
| `values` | Yes      | array of [`statisticValue`](#schema-statisticValue) | minItems: 1                     |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "key",
    "label",
    "unit",
    "values"
  ],
  "properties": {
    "key": {
      "type": "string",
      "pattern": "^[a-z][A-Za-z0-9]*$"
    },
    "label": {
      "type": "string",
      "minLength": 1
    },
    "unit": {
      "enum": [
        "count",
        "points",
        "percent"
      ]
    },
    "values": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/statisticValue"
      }
    }
  },
  "additionalProperties": false
}
```

<a id="schema-statisticValueV2"></a>

### statisticValueV2 [#statisticvaluev2]

Version 2 statistic value: the version 1 shape with a wider scope set. seasonAverage and seasonHigh cover the regular season, postseasonAverage and postseasonHigh this postseason, lastSeasonAverage the previous regular season, careerHigh regular-season games and careerPlayoffHigh playoff games; averages and highs are before the current game.

| Field          | Required | Type / values                                                                                                                                                               | Constraints  |
| -------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| `label`        | Yes      | string                                                                                                                                                                      | minLength: 1 |
| `entityId`     | Yes      | string                                                                                                                                                                      | minLength: 1 |
| `scope`        | Yes      | `"currentGame"`, `"seasonAverage"`, `"postseasonAverage"`, `"lastSeasonAverage"`, `"recentGame"`, `"seasonHigh"`, `"postseasonHigh"`, `"careerHigh"`, `"careerPlayoffHigh"` |              |
| `value`        | Yes      | one of: number / string / boolean                                                                                                                                           |              |
| `displayValue` | Yes      | string                                                                                                                                                                      |              |

**Complete schema**

```json
{
  "description": "Version 2 statistic value: the version 1 shape with a wider scope set. seasonAverage and seasonHigh cover the regular season, postseasonAverage and postseasonHigh this postseason, lastSeasonAverage the previous regular season, careerHigh regular-season games and careerPlayoffHigh playoff games; averages and highs are before the current game.",
  "type": "object",
  "required": [
    "label",
    "entityId",
    "scope",
    "value",
    "displayValue"
  ],
  "properties": {
    "label": {
      "type": "string",
      "minLength": 1
    },
    "entityId": {
      "type": "string",
      "minLength": 1
    },
    "scope": {
      "enum": [
        "currentGame",
        "seasonAverage",
        "postseasonAverage",
        "lastSeasonAverage",
        "recentGame",
        "seasonHigh",
        "postseasonHigh",
        "careerHigh",
        "careerPlayoffHigh"
      ]
    },
    "value": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "string"
        },
        {
          "type": "boolean"
        }
      ]
    },
    "displayValue": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
```

<a id="schema-statisticV2"></a>

### statisticV2 [#statisticv2]

| Field    | Required | Type / values                                           | Constraints                     |
| -------- | -------- | ------------------------------------------------------- | ------------------------------- |
| `key`    | Yes      | string                                                  | pattern: ^\[a-z]\[A-Za-z0-9]\*$ |
| `label`  | Yes      | string                                                  | minLength: 1                    |
| `unit`   | Yes      | `"count"`, `"points"`, `"percent"`                      |                                 |
| `values` | Yes      | array of [`statisticValueV2`](#schema-statisticValueV2) | minItems: 1                     |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "key",
    "label",
    "unit",
    "values"
  ],
  "properties": {
    "key": {
      "type": "string",
      "pattern": "^[a-z][A-Za-z0-9]*$"
    },
    "label": {
      "type": "string",
      "minLength": 1
    },
    "unit": {
      "enum": [
        "count",
        "points",
        "percent"
      ]
    },
    "values": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/statisticValueV2"
      }
    }
  },
  "additionalProperties": false
}
```

<a id="schema-gameState"></a>

### gameState [#gamestate]

| Field         | Required | Type / values | Constraints  |
| ------------- | -------- | ------------- | ------------ |
| `period`      | Yes      | integer       | minimum: 1   |
| `periodLabel` | Yes      | string        | minLength: 1 |
| `clock`       | Yes      | string        | minLength: 1 |
| `awayTeamId`  | Yes      | string        | minLength: 1 |
| `awayScore`   | Yes      | integer       | minimum: 0   |
| `homeTeamId`  | Yes      | string        | minLength: 1 |
| `homeScore`   | Yes      | integer       | minimum: 0   |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "period",
    "periodLabel",
    "clock",
    "awayTeamId",
    "awayScore",
    "homeTeamId",
    "homeScore"
  ],
  "properties": {
    "period": {
      "type": "integer",
      "minimum": 1
    },
    "periodLabel": {
      "type": "string",
      "minLength": 1
    },
    "clock": {
      "type": "string",
      "minLength": 1
    },
    "awayTeamId": {
      "type": "string",
      "minLength": 1
    },
    "awayScore": {
      "type": "integer",
      "minimum": 0
    },
    "homeTeamId": {
      "type": "string",
      "minLength": 1
    },
    "homeScore": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false
}
```

<a id="schema-recentPerformance"></a>

### recentPerformance [#recentperformance]

| Field              | Required | Type / values                             | Constraints  |
| ------------------ | -------- | ----------------------------------------- | ------------ |
| `fixtureId`        | Yes      | string                                    | minLength: 1 |
| `fixtureDate`      | Yes      | string                                    | format: date |
| `opponentEntityId` | Yes      | string                                    | minLength: 1 |
| `statistics`       | Yes      | array of [`statistic`](#schema-statistic) |              |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "fixtureId",
    "fixtureDate",
    "opponentEntityId",
    "statistics"
  ],
  "properties": {
    "fixtureId": {
      "type": "string",
      "minLength": 1
    },
    "fixtureDate": {
      "type": "string",
      "format": "date"
    },
    "opponentEntityId": {
      "type": "string",
      "minLength": 1
    },
    "statistics": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statistic"
      }
    }
  },
  "additionalProperties": false
}
```

<a id="schema-recentPerformanceV2"></a>

### recentPerformanceV2 [#recentperformancev2]

Version 2 recent game. fixtureId is present only when the recent game's NBA game ID is known.

| Field              | Required | Type / values                                 | Constraints  |
| ------------------ | -------- | --------------------------------------------- | ------------ |
| `fixtureId`        | No       | string                                        | minLength: 1 |
| `fixtureDate`      | Yes      | string                                        | format: date |
| `opponentEntityId` | Yes      | string                                        | minLength: 1 |
| `statistics`       | Yes      | array of [`statisticV2`](#schema-statisticV2) |              |

**Complete schema**

```json
{
  "description": "Version 2 recent game. fixtureId is present only when the recent game's NBA game ID is known.",
  "type": "object",
  "required": [
    "fixtureDate",
    "opponentEntityId",
    "statistics"
  ],
  "properties": {
    "fixtureId": {
      "type": "string",
      "minLength": 1
    },
    "fixtureDate": {
      "type": "string",
      "format": "date"
    },
    "opponentEntityId": {
      "type": "string",
      "minLength": 1
    },
    "statistics": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statisticV2"
      }
    }
  },
  "additionalProperties": false
}
```

<a id="schema-score"></a>

### score [#score]

| Field           | Required | Type / values | Constraints  |
| --------------- | -------- | ------------- | ------------ |
| `awayTeamId`    | Yes      | string        | minLength: 1 |
| `awayScore`     | Yes      | integer       | minimum: 0   |
| `homeTeamId`    | Yes      | string        | minLength: 1 |
| `homeScore`     | Yes      | integer       | minimum: 0   |
| `periodsPlayed` | Yes      | integer       | minimum: 1   |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "awayTeamId",
    "awayScore",
    "homeTeamId",
    "homeScore",
    "periodsPlayed"
  ],
  "properties": {
    "awayTeamId": {
      "type": "string",
      "minLength": 1
    },
    "awayScore": {
      "type": "integer",
      "minimum": 0
    },
    "homeTeamId": {
      "type": "string",
      "minLength": 1
    },
    "homeScore": {
      "type": "integer",
      "minimum": 0
    },
    "periodsPlayed": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false
}
```

<a id="schema-break"></a>

### break [#break]

| Field    | Required | Type / values                                        | Constraints  |
| -------- | -------- | ---------------------------------------------------- | ------------ |
| `kind`   | Yes      | `"timeout"`, `"quarter"`, `"halftime"`, `"overtime"` |              |
| `period` | Yes      | integer                                              | minimum: 1   |
| `clock`  | Yes      | string                                               | minLength: 1 |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "kind",
    "period",
    "clock"
  ],
  "properties": {
    "kind": {
      "enum": [
        "timeout",
        "quarter",
        "halftime",
        "overtime"
      ]
    },
    "period": {
      "type": "integer",
      "minimum": 1
    },
    "clock": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
```

<a id="schema-initialGameEntryContent"></a>

### initialGameEntryContent [#initialgameentrycontent]

| Field               | Required | Type / values                    | Constraints  |
| ------------------- | -------- | -------------------------------- | ------------ |
| `headline`          | Yes      | string                           | minLength: 1 |
| `summary`           | Yes      | string                           | minLength: 1 |
| `supportingContext` | Yes      | array of string                  | maxItems: 3  |
| `gameState`         | Yes      | [`gameState`](#schema-gameState) |              |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "headline",
    "summary",
    "supportingContext",
    "gameState"
  ],
  "properties": {
    "headline": {
      "type": "string",
      "minLength": 1
    },
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "supportingContext": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "gameState": {
      "$ref": "#/$defs/gameState"
    }
  },
  "additionalProperties": false
}
```

<a id="schema-postGameContent"></a>

### postGameContent [#postgamecontent]

| Field               | Required | Type / values            | Constraints  |
| ------------------- | -------- | ------------------------ | ------------ |
| `headline`          | Yes      | string                   | minLength: 1 |
| `summary`           | Yes      | string                   | minLength: 1 |
| `supportingContext` | Yes      | array of string          | maxItems: 3  |
| `finalScore`        | Yes      | [`score`](#schema-score) |              |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "headline",
    "summary",
    "supportingContext",
    "finalScore"
  ],
  "properties": {
    "headline": {
      "type": "string",
      "minLength": 1
    },
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "supportingContext": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "finalScore": {
      "$ref": "#/$defs/score"
    }
  },
  "additionalProperties": false
}
```

<a id="schema-preGameContent"></a>

### preGameContent [#pregamecontent]

| Field               | Required | Type / values   | Constraints       |
| ------------------- | -------- | --------------- | ----------------- |
| `headline`          | Yes      | string          | minLength: 1      |
| `summary`           | Yes      | string          | minLength: 1      |
| `supportingContext` | Yes      | array of string | maxItems: 3       |
| `scheduledTipoff`   | Yes      | string          | format: date-time |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "headline",
    "summary",
    "supportingContext",
    "scheduledTipoff"
  ],
  "properties": {
    "headline": {
      "type": "string",
      "minLength": 1
    },
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "supportingContext": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "scheduledTipoff": {
      "type": "string",
      "format": "date-time"
    }
  },
  "additionalProperties": false
}
```

<a id="schema-breakContent"></a>

### breakContent [#breakcontent]

| Field             | Required | Type / values                    | Constraints  |
| ----------------- | -------- | -------------------------------- | ------------ |
| `headline`        | Yes      | string                           | minLength: 1 |
| `keyTakeaways`    | Yes      | array of string                  | minItems: 1  |
| `whatToWatchNext` | Yes      | string                           | minLength: 1 |
| `break`           | Yes      | [`break`](#schema-break)         |              |
| `gameState`       | Yes      | [`gameState`](#schema-gameState) |              |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "headline",
    "keyTakeaways",
    "whatToWatchNext",
    "break",
    "gameState"
  ],
  "properties": {
    "headline": {
      "type": "string",
      "minLength": 1
    },
    "keyTakeaways": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "whatToWatchNext": {
      "type": "string",
      "minLength": 1
    },
    "break": {
      "$ref": "#/$defs/break"
    },
    "gameState": {
      "$ref": "#/$defs/gameState"
    }
  },
  "additionalProperties": false
}
```

<a id="schema-playerPerformanceContent"></a>

### playerPerformanceContent [#playerperformancecontent]

| Field              | Required | Type / values                                             | Constraints  |
| ------------------ | -------- | --------------------------------------------------------- | ------------ |
| `summary`          | Yes      | string                                                    | minLength: 1 |
| `playerId`         | Yes      | string                                                    | minLength: 1 |
| `gameState`        | Yes      | [`gameState`](#schema-gameState)                          |              |
| `gameStatistics`   | Yes      | array of [`statistic`](#schema-statistic)                 |              |
| `seasonAverages`   | Yes      | array of [`statistic`](#schema-statistic)                 |              |
| `recentGames`      | Yes      | array of [`recentPerformance`](#schema-recentPerformance) |              |
| `comparisons`      | Yes      | array of [`statistic`](#schema-statistic)                 |              |
| `shotChartAssetId` | No       | string                                                    | minLength: 1 |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "summary",
    "playerId",
    "gameState",
    "gameStatistics",
    "seasonAverages",
    "recentGames",
    "comparisons"
  ],
  "properties": {
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "playerId": {
      "type": "string",
      "minLength": 1
    },
    "gameState": {
      "$ref": "#/$defs/gameState"
    },
    "gameStatistics": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statistic"
      }
    },
    "seasonAverages": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statistic"
      }
    },
    "recentGames": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/recentPerformance"
      }
    },
    "comparisons": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statistic"
      }
    },
    "shotChartAssetId": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
```

<a id="schema-playerPerformanceContentV2"></a>

### playerPerformanceContentV2 [#playerperformancecontentv2]

| Field              | Required | Type / values                                                 | Constraints  |
| ------------------ | -------- | ------------------------------------------------------------- | ------------ |
| `headline`         | Yes      | string                                                        | minLength: 1 |
| `summary`          | Yes      | string                                                        | minLength: 1 |
| `statLine`         | Yes      | string                                                        | minLength: 1 |
| `playerId`         | Yes      | string                                                        | minLength: 1 |
| `actionNumber`     | Yes      | integer                                                       | minimum: 0   |
| `gameState`        | Yes      | [`gameState`](#schema-gameState)                              |              |
| `gameStatistics`   | Yes      | array of [`statisticV2`](#schema-statisticV2)                 |              |
| `seasonAverages`   | Yes      | array of [`statisticV2`](#schema-statisticV2)                 |              |
| `recentGames`      | Yes      | array of [`recentPerformanceV2`](#schema-recentPerformanceV2) |              |
| `comparisons`      | Yes      | array of [`statisticV2`](#schema-statisticV2)                 |              |
| `shotChartAssetId` | No       | string                                                        | minLength: 1 |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "headline",
    "summary",
    "statLine",
    "playerId",
    "actionNumber",
    "gameState",
    "gameStatistics",
    "seasonAverages",
    "recentGames",
    "comparisons"
  ],
  "properties": {
    "headline": {
      "type": "string",
      "minLength": 1
    },
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "statLine": {
      "type": "string",
      "minLength": 1
    },
    "playerId": {
      "type": "string",
      "minLength": 1
    },
    "actionNumber": {
      "type": "integer",
      "minimum": 0
    },
    "gameState": {
      "$ref": "#/$defs/gameState"
    },
    "gameStatistics": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statisticV2"
      }
    },
    "seasonAverages": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statisticV2"
      }
    },
    "recentGames": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/recentPerformanceV2"
      }
    },
    "comparisons": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statisticV2"
      }
    },
    "shotChartAssetId": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
```

<a id="schema-teamPerformanceContent"></a>

### teamPerformanceContent [#teamperformancecontent]

| Field              | Required | Type / values                             | Constraints  |
| ------------------ | -------- | ----------------------------------------- | ------------ |
| `summary`          | Yes      | string                                    | minLength: 1 |
| `teamId`           | Yes      | string                                    | minLength: 1 |
| `gameState`        | Yes      | [`gameState`](#schema-gameState)          |              |
| `gameStatistics`   | Yes      | array of [`statistic`](#schema-statistic) |              |
| `seasonAverages`   | Yes      | array of [`statistic`](#schema-statistic) |              |
| `comparisons`      | Yes      | array of [`statistic`](#schema-statistic) |              |
| `shotChartAssetId` | No       | string                                    | minLength: 1 |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "summary",
    "teamId",
    "gameState",
    "gameStatistics",
    "seasonAverages",
    "comparisons"
  ],
  "properties": {
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "teamId": {
      "type": "string",
      "minLength": 1
    },
    "gameState": {
      "$ref": "#/$defs/gameState"
    },
    "gameStatistics": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statistic"
      }
    },
    "seasonAverages": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statistic"
      }
    },
    "comparisons": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statistic"
      }
    },
    "shotChartAssetId": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
```

<a id="schema-teamPerformanceContentV2"></a>

### teamPerformanceContentV2 [#teamperformancecontentv2]

| Field              | Required | Type / values                             | Constraints  |
| ------------------ | -------- | ----------------------------------------- | ------------ |
| `headline`         | Yes      | string                                    | minLength: 1 |
| `summary`          | Yes      | string                                    | minLength: 1 |
| `teamId`           | Yes      | string                                    | minLength: 1 |
| `gameState`        | Yes      | [`gameState`](#schema-gameState)          |              |
| `gameStatistics`   | Yes      | array of [`statistic`](#schema-statistic) |              |
| `seasonAverages`   | Yes      | array of [`statistic`](#schema-statistic) |              |
| `comparisons`      | Yes      | array of [`statistic`](#schema-statistic) |              |
| `shotChartAssetId` | No       | string                                    | minLength: 1 |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "headline",
    "summary",
    "teamId",
    "gameState",
    "gameStatistics",
    "seasonAverages",
    "comparisons"
  ],
  "properties": {
    "headline": {
      "type": "string",
      "minLength": 1
    },
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "teamId": {
      "type": "string",
      "minLength": 1
    },
    "gameState": {
      "$ref": "#/$defs/gameState"
    },
    "gameStatistics": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statistic"
      }
    },
    "seasonAverages": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statistic"
      }
    },
    "comparisons": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/statistic"
      }
    },
    "shotChartAssetId": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
```

<a id="schema-fourFactorsContent"></a>

### fourFactorsContent [#fourfactorscontent]

| Field            | Required | Type / values                                                                                               | Constraints              |
| ---------------- | -------- | ----------------------------------------------------------------------------------------------------------- | ------------------------ |
| `summary`        | Yes      | string                                                                                                      | minLength: 1             |
| `descriptor`     | Yes      | string                                                                                                      | minLength: 1             |
| `focusFactorKey` | Yes      | `"effectiveFieldGoalPercentage"`, `"turnoverPercentage"`, `"offensiveReboundPercentage"`, `"freeThrowRate"` |                          |
| `gameState`      | Yes      | [`gameState`](#schema-gameState)                                                                            |                          |
| `factors`        | Yes      | array of [`statistic`](#schema-statistic)                                                                   | minItems: 4; maxItems: 4 |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "summary",
    "descriptor",
    "focusFactorKey",
    "gameState",
    "factors"
  ],
  "properties": {
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "descriptor": {
      "type": "string",
      "minLength": 1
    },
    "focusFactorKey": {
      "enum": [
        "effectiveFieldGoalPercentage",
        "turnoverPercentage",
        "offensiveReboundPercentage",
        "freeThrowRate"
      ]
    },
    "gameState": {
      "$ref": "#/$defs/gameState"
    },
    "factors": {
      "type": "array",
      "minItems": 4,
      "maxItems": 4,
      "items": {
        "$ref": "#/$defs/statistic"
      }
    }
  },
  "additionalProperties": false
}
```

<a id="schema-fourFactorsContentV2"></a>

### fourFactorsContentV2 [#fourfactorscontentv2]

| Field                   | Required | Type / values                                                                                                        | Constraints              |
| ----------------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| `summary`               | Yes      | string                                                                                                               | minLength: 1             |
| `descriptor`            | Yes      | string                                                                                                               | minLength: 1             |
| `focusFactorKey`        | Yes      | `"effectiveFieldGoalPercentage"`, `"turnoverPercentage"`, `"offensiveReboundPercentage"`, `"freeThrowRate"`          |                          |
| `gameState`             | Yes      | [`gameState`](#schema-gameState)                                                                                     |                          |
| `factors`               | Yes      | array of [`statistic`](#schema-statistic)                                                                            | minItems: 2; maxItems: 4 |
| `unavailableFactorKeys` | Yes      | array of `"effectiveFieldGoalPercentage"`, `"turnoverPercentage"`, `"offensiveReboundPercentage"`, `"freeThrowRate"` | maxItems: 2              |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "summary",
    "descriptor",
    "focusFactorKey",
    "gameState",
    "factors",
    "unavailableFactorKeys"
  ],
  "properties": {
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "descriptor": {
      "type": "string",
      "minLength": 1
    },
    "focusFactorKey": {
      "enum": [
        "effectiveFieldGoalPercentage",
        "turnoverPercentage",
        "offensiveReboundPercentage",
        "freeThrowRate"
      ]
    },
    "gameState": {
      "$ref": "#/$defs/gameState"
    },
    "factors": {
      "type": "array",
      "minItems": 2,
      "maxItems": 4,
      "items": {
        "$ref": "#/$defs/statistic"
      }
    },
    "unavailableFactorKeys": {
      "type": "array",
      "maxItems": 2,
      "items": {
        "enum": [
          "effectiveFieldGoalPercentage",
          "turnoverPercentage",
          "offensiveReboundPercentage",
          "freeThrowRate"
        ]
      }
    }
  },
  "additionalProperties": false
}
```

<a id="schema-pointBreakdownContent"></a>

### pointBreakdownContent [#pointbreakdowncontent]

| Field              | Required | Type / values                                                                          | Constraints              |
| ------------------ | -------- | -------------------------------------------------------------------------------------- | ------------------------ |
| `summary`          | Yes      | string                                                                                 | minLength: 1             |
| `descriptor`       | Yes      | string                                                                                 | minLength: 1             |
| `focusCategoryKey` | Yes      | `"fastBreakPoints"`, `"pointsInPaint"`, `"pointsOffTurnovers"`, `"secondChancePoints"` |                          |
| `gameState`        | Yes      | [`gameState`](#schema-gameState)                                                       |                          |
| `categories`       | Yes      | array of [`statistic`](#schema-statistic)                                              | minItems: 4; maxItems: 4 |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "summary",
    "descriptor",
    "focusCategoryKey",
    "gameState",
    "categories"
  ],
  "properties": {
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "descriptor": {
      "type": "string",
      "minLength": 1
    },
    "focusCategoryKey": {
      "enum": [
        "fastBreakPoints",
        "pointsInPaint",
        "pointsOffTurnovers",
        "secondChancePoints"
      ]
    },
    "gameState": {
      "$ref": "#/$defs/gameState"
    },
    "categories": {
      "type": "array",
      "minItems": 4,
      "maxItems": 4,
      "items": {
        "$ref": "#/$defs/statistic"
      }
    }
  },
  "additionalProperties": false
}
```

<a id="schema-defensiveContent"></a>

### defensiveContent [#defensivecontent]

| Field                | Required | Type / values                                                                                | Constraints                    |
| -------------------- | -------- | -------------------------------------------------------------------------------------------- | ------------------------------ |
| `summary`            | Yes      | string                                                                                       | minLength: 1                   |
| `focusStatisticKeys` | Yes      | array of `"offensiveRebounds"`, `"defensiveRebounds"`, `"turnovers"`, `"blocks"`, `"steals"` | minItems: 1; uniqueItems: true |
| `gameState`          | Yes      | [`gameState`](#schema-gameState)                                                             |                                |
| `statistics`         | Yes      | array of [`statistic`](#schema-statistic)                                                    | minItems: 5; maxItems: 5       |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "summary",
    "focusStatisticKeys",
    "gameState",
    "statistics"
  ],
  "properties": {
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "focusStatisticKeys": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "enum": [
          "offensiveRebounds",
          "defensiveRebounds",
          "turnovers",
          "blocks",
          "steals"
        ]
      }
    },
    "gameState": {
      "$ref": "#/$defs/gameState"
    },
    "statistics": {
      "type": "array",
      "minItems": 5,
      "maxItems": 5,
      "items": {
        "$ref": "#/$defs/statistic"
      }
    }
  },
  "additionalProperties": false
}
```

<a id="schema-runScore"></a>

### runScore [#runscore]

| Field  | Required | Type / values | Constraints |
| ------ | -------- | ------------- | ----------- |
| `away` | Yes      | integer       | minimum: 0  |
| `home` | Yes      | integer       | minimum: 0  |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "away",
    "home"
  ],
  "properties": {
    "away": {
      "type": "integer",
      "minimum": 0
    },
    "home": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false
}
```

<a id="schema-runMomentumContent"></a>

### runMomentumContent [#runmomentumcontent]

| Field                | Required | Type / values                    | Constraints  |
| -------------------- | -------- | -------------------------------- | ------------ |
| `summary`            | Yes      | string                           | minLength: 1 |
| `teamId`             | Yes      | string                           | minLength: 1 |
| `actionNumber`       | Yes      | integer                          | minimum: 0   |
| `run`                | Yes      | object                           |              |
| `contributors`       | Yes      | array of object                  | maxItems: 4  |
| `turnoversForced`    | Yes      | integer                          | minimum: 0   |
| `pointsOffTurnovers` | Yes      | integer                          | minimum: 0   |
| `answersItemId`      | No       | string                           | minLength: 1 |
| `gameState`          | Yes      | [`gameState`](#schema-gameState) |              |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "summary",
    "teamId",
    "actionNumber",
    "run",
    "contributors",
    "turnoversForced",
    "pointsOffTurnovers",
    "gameState"
  ],
  "properties": {
    "summary": {
      "type": "string",
      "minLength": 1
    },
    "teamId": {
      "type": "string",
      "minLength": 1
    },
    "actionNumber": {
      "type": "integer",
      "minimum": 0
    },
    "run": {
      "type": "object",
      "required": [
        "teamId",
        "pointsFor",
        "pointsAgainst",
        "unanswered",
        "startActionNumber",
        "lastActionNumber",
        "startScore",
        "endScore",
        "periods"
      ],
      "properties": {
        "teamId": {
          "type": "string",
          "minLength": 1
        },
        "pointsFor": {
          "type": "integer",
          "minimum": 1
        },
        "pointsAgainst": {
          "type": "integer",
          "minimum": 0
        },
        "unanswered": {
          "type": "boolean"
        },
        "startActionNumber": {
          "type": "integer",
          "minimum": 0
        },
        "lastActionNumber": {
          "type": "integer",
          "minimum": 0
        },
        "startScore": {
          "$ref": "#/$defs/runScore"
        },
        "endScore": {
          "$ref": "#/$defs/runScore"
        },
        "periods": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "integer",
            "minimum": 1
          }
        }
      },
      "additionalProperties": false
    },
    "contributors": {
      "type": "array",
      "maxItems": 4,
      "items": {
        "type": "object",
        "required": [
          "playerId",
          "points",
          "assists",
          "steals"
        ],
        "properties": {
          "playerId": {
            "type": "string",
            "minLength": 1
          },
          "points": {
            "type": "integer",
            "minimum": 0
          },
          "assists": {
            "type": "integer",
            "minimum": 0
          },
          "steals": {
            "type": "integer",
            "minimum": 0
          }
        },
        "additionalProperties": false
      }
    },
    "turnoversForced": {
      "type": "integer",
      "minimum": 0
    },
    "pointsOffTurnovers": {
      "type": "integer",
      "minimum": 0
    },
    "answersItemId": {
      "type": "string",
      "minLength": 1
    },
    "gameState": {
      "$ref": "#/$defs/gameState"
    }
  },
  "additionalProperties": false
}
```

<a id="schema-playerPerformanceItemVersions"></a>

### playerPerformanceItemVersions [#playerperformanceitemversions]

**Complete schema**

```json
{
  "oneOf": [
    {
      "$ref": "#/$defs/playerPerformanceItem"
    },
    {
      "$ref": "#/$defs/playerPerformanceItemV2"
    }
  ]
}
```

<a id="schema-teamPerformanceItemVersions"></a>

### teamPerformanceItemVersions [#teamperformanceitemversions]

**Complete schema**

```json
{
  "oneOf": [
    {
      "$ref": "#/$defs/teamPerformanceItem"
    },
    {
      "$ref": "#/$defs/teamPerformanceItemV2"
    }
  ]
}
```

<a id="schema-fourFactorsItemVersions"></a>

### fourFactorsItemVersions [#fourfactorsitemversions]

**Complete schema**

```json
{
  "oneOf": [
    {
      "$ref": "#/$defs/fourFactorsItem"
    },
    {
      "$ref": "#/$defs/fourFactorsItemV2"
    }
  ]
}
```

<a id="schema-nbaContentItem"></a>

### nbaContentItem [#nbacontentitem]

**Complete schema**

```json
{
  "oneOf": [
    {
      "$ref": "#/$defs/initialGameEntryItem"
    },
    {
      "$ref": "#/$defs/postGameItem"
    },
    {
      "$ref": "#/$defs/preGameItem"
    },
    {
      "$ref": "#/$defs/breakItem"
    },
    {
      "$ref": "#/$defs/playerPerformanceItemVersions"
    },
    {
      "$ref": "#/$defs/teamPerformanceItemVersions"
    },
    {
      "$ref": "#/$defs/fourFactorsItemVersions"
    },
    {
      "$ref": "#/$defs/pointBreakdownItem"
    },
    {
      "$ref": "#/$defs/defensiveItem"
    },
    {
      "$ref": "#/$defs/runMomentumItem"
    }
  ]
}
```

<a id="schema-team"></a>

### team [#team]

| Field     | Required | Type / values | Constraints           |
| --------- | -------- | ------------- | --------------------- |
| `id`      | Yes      | string        | minLength: 1          |
| `name`    | Yes      | string        | minLength: 1          |
| `tricode` | Yes      | string        | pattern: ^\[A-Z]\{3}$ |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "id",
    "name",
    "tricode"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "name": {
      "type": "string",
      "minLength": 1
    },
    "tricode": {
      "type": "string",
      "pattern": "^[A-Z]{3}$"
    }
  },
  "additionalProperties": false
}
```

<a id="schema-fixtureIndexEntry"></a>

### fixtureIndexEntry [#fixtureindexentry]

| Field          | Required | Type / values                    | Constraints                                                                                                           |
| -------------- | -------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| `fixtureId`    | Yes      | string                           | minLength: 1                                                                                                          |
| `key`          | Yes      | string                           | pattern: ^\[a-z0-9]+(?:-\[a-z0-9]+)\*$                                                                                |
| `label`        | Yes      | one of: string / null            | description: Tells games between the same teams apart, for example Finals Game 1; null when the sample game has none. |
| `date`         | Yes      | string                           | format: date                                                                                                          |
| `seasonType`   | Yes      | `"Regular Season"`, `"Playoffs"` |                                                                                                                       |
| `awayTeam`     | Yes      | [`team`](#schema-team)           |                                                                                                                       |
| `homeTeam`     | Yes      | [`team`](#schema-team)           |                                                                                                                       |
| `firstEventAt` | Yes      | string                           | format: date-time                                                                                                     |
| `feeds`        | Yes      | array of string                  | minItems: 1; uniqueItems: true                                                                                        |
| `itemCount`    | Yes      | integer                          | minimum: 0                                                                                                            |

**Complete schema**

```json
{
  "type": "object",
  "required": [
    "fixtureId",
    "key",
    "label",
    "date",
    "seasonType",
    "awayTeam",
    "homeTeam",
    "firstEventAt",
    "feeds",
    "itemCount"
  ],
  "properties": {
    "fixtureId": {
      "type": "string",
      "minLength": 1
    },
    "key": {
      "type": "string",
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
    },
    "label": {
      "description": "Tells games between the same teams apart, for example Finals Game 1; null when the sample game has none.",
      "oneOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "null"
        }
      ]
    },
    "date": {
      "type": "string",
      "format": "date"
    },
    "seasonType": {
      "enum": [
        "Regular Season",
        "Playoffs"
      ]
    },
    "awayTeam": {
      "$ref": "#/$defs/team"
    },
    "homeTeam": {
      "$ref": "#/$defs/team"
    },
    "firstEventAt": {
      "type": "string",
      "format": "date-time"
    },
    "feeds": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "type": "string",
        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
      }
    },
    "itemCount": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false
}
```

<a id="schema-fixtureIndex"></a>

### fixtureIndex [#fixtureindex-1]

**Complete schema**

```json
{
  "allOf": [
    {
      "$ref": "content-feed.schema.json#/$defs/fixtureIndex"
    },
    {
      "type": "object",
      "properties": {
        "fixtures": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/fixtureIndexEntry"
          }
        }
      }
    }
  ]
}
```
