# The fixture lineups object

A fixture's two sides with their team sheets as known at the cutoff (`GET /v1/fixtures/{id}/lineups`).

Attributes:
- `fixture_id` (string): Fixture identifier (`fx_<digits>`).
- `sides` (array of objects): The home side, then the away side.
  - `team_id` (string): Team identifier (`tm_<digits>`).
  - `side` (enum):  One of: `home`, `away`.
  - `status` (enum): `available` = the entries are served; `unavailable` = no entry is known for the side at the cutoff; `withheld` = entries exist but a source of the side holds no display right for lineups. One of: `available`, `unavailable`, `withheld`.
  - `sheet_complete` (boolean): True when every source of the served entries sends complete team sheets, so a player a newer sheet left out is no longer listed, and the entries name eleven starters. False otherwise, and always for a side that is not `available`. When false, the sheet may be short, as the source's own record of a match can be, or a player named in an earlier snapshot of the sheet and dropped later may still be listed. A newer sheet naming a player not yet matched to a person removes nobody until that player is matched, so until then that player is missing and one the sheet dropped may be listed, whatever the value.
  - `formation` (string, nullable): The side's formation (`4-2-3-1`, outfield lines from defence to attack) as its source wrote it; `null` with `formation_status` `unavailable` when no formation the caller may be served is known.
  - `formation_status` (enum): `known` = `formation` is served; `unavailable` = no formation is known for the side at the cutoff, or its source may not serve lineups to this caller. One of: `known`, `unavailable`.
  - `coaches` (array of objects): The side's coaches at the cutoff from sources that may serve lineups to the caller (usually one); empty when none is known.
    - `id` (string): Lineup coach identifier (`lc_<digits>`).
    - `version` (integer)
    - `person_id` (string): The canonical person at the cutoff (a coach recorded under a person merged away since is served under the survivor).
    - `recorded_at` (timestamp): RFC 3339 instant in UTC with `Z` suffix; optional fractional seconds up to microseconds.
  - `entries` (array of objects): Starters first, then the bench; within each by position (goalkeeper, defender, midfielder, attacker, none) and shirt number (none last).
    - `id` (string): Lineup entry identifier (`lu_<digits>`).
    - `version` (integer)
    - `person_id` (string): The canonical person at the cutoff (an entry recorded under a person merged away since is served under the survivor).
    - `role` (enum): `starter` = in the named eleven, `bench` = named among the substitutes (`bench_status` says whether he came on). One of: `starter`, `bench`.
    - `bench_status` (enum, nullable): Whether a bench player came on, from the fixture's substitution events at the cutoff: `substitute` = he came on, `unused_substitute` = no event names him coming on, `unknown` = the events say nothing to this caller (the fixture is not finished or has no events, a substitution names no player, or the caller may not be served them). `null` for a starter. One of: `substitute`, `unused_substitute`, `unknown`.
    - `position` (enum, nullable): The position the sheet gave the player; `null` means unavailable (no source reported one). One of: `goalkeeper`, `defender`, `midfielder`, `attacker`.
    - `jersey_number` (integer, nullable): The shirt number on the sheet; `null` means unavailable.
    - `formation_field` (string, nullable): The player's slot on the formation grid (`row:col`, row 1 the goalkeeper's); `null` for a bench player or when no source reported one (unavailable).
    - `formation_position` (integer, nullable): The source's formation position number of the slot (1 the goalkeeper); `null` like `formation_field`.
    - `recorded_at` (timestamp): When the platform recorded this version (`known_at` compares against it).
  - `sources` (object): Source references, or an explicit statement that they are withheld by source rights or unknown.
    - `status` (enum):  One of: `included`, `withheld`, `unknown`.
    - `items` (array of objects)
      - `source` (string): Source namespace (for example `footystats`).
      - `observed_at` (timestamp, nullable): A `Timestamp`, or `null` when unknown; the owning object says why.
      - `recorded_at` (timestamp): RFC 3339 instant in UTC with `Z` suffix; optional fractional seconds up to microseconds.
      - `precision` (enum): Precision of the source timestamp; `unknown` when the source gave none. One of: `unknown`, `day`, `hour`, `minute`, `second`, `millisecond`.
- `knowledge` (object): The effective knowledge cutoff of the response. Under a grant freshness delay it is never later than the request time minus the delay, whatever `known_at` asked for.
  - `known_at` (timestamp): RFC 3339 instant in UTC with `Z` suffix; optional fractional seconds up to microseconds.
  - `as_requested` (boolean): True when the caller supplied `known_at`; false when it defaulted to the request time.
- `resolution` (object): How the requested identifier resolved. Present whenever the requested identifier is not the canonical one, and optional otherwise.
  - `requested_id` (string): OddsFinder identifier, `<prefix>_<digits>`, a per-kind sequence number without padding, leading zeros, grouping or sign (1 to 9223372036854775807). The prefix names the kind; the per-kind schemas fix it where a field or parameter has one kind. `Resolution` uses this generic form because its identifiers are of the resource's kind.
  - `canonical_id` (string): OddsFinder identifier, `<prefix>_<digits>`, a per-kind sequence number without padding, leading zeros, grouping or sign (1 to 9223372036854775807). The prefix names the kind; the per-kind schemas fix it where a field or parameter has one kind. `Resolution` uses this generic form because its identifiers are of the resource's kind.
  - `status` (enum): `canonical`: the requested identifier is the identity itself; `alias`: it was retired by a merge decision and resolves to `canonical_id`. One of: `canonical`, `alias`.
  - `decision_id` (string, nullable): Identifier of a merge or reversal decision (`dec_<digits>`), a record you can cite.
  - `decided_at` (timestamp, nullable): A `Timestamp`, or `null` when unknown; the owning object says why.

Example:

```json
{
  "fixture_id": "fx_1",
  "sides": [
    {
      "team_id": "tm_1",
      "side": "home",
      "status": "withheld",
      "sheet_complete": false,
      "formation": null,
      "formation_status": "unavailable",
      "coaches": [],
      "entries": []
    },
    {
      "team_id": "tm_2",
      "side": "away",
      "status": "unavailable",
      "sheet_complete": false,
      "formation": null,
      "formation_status": "unavailable",
      "coaches": [],
      "entries": []
    }
  ],
  "knowledge": {
    "known_at": "2026-10-03T16:00:00Z",
    "as_requested": false
  }
}
```
