# PersonCapabilities

> The capability surface for one `(person, competition, season)`: only the phases the person **actually recorded** that season — a projection of real person-season rows, NOT the sport's theoretical surface (that lives at `/v1/competitions/{comp}/capabilities`).

The capability surface for one `(person, competition, season)`: only the phases the person **actually recorded** that season — a
projection of real person-season rows, NOT the sport's theoretical surface
(that lives at `/v1/competitions/{comp}/capabilities`). Each present phase
carries its full registry measure inventory (base + derived), so a consumer
learns in one lookup which stat keys will return data — no `/stats` probe,
and no "pitcher offered batter props".

**Kind:** object

| Field | Type | Required | Description |
|---|---|---|---|
| `competition` | `CompetitionId` | yes | The competition the season aggregate is scoped to. |
| `person` | `PersonId` | yes | The person whose recorded phases are reported. |
| `phases` | `PhaseCapabilities[]` | yes | One block per phase with a materialized season row for this person, in phase-declaration order. Empty when the person recorded nothing in the scope (an existing person is a `200` with `[]`, never a `404`). |
| `season` | `SeasonYear` | yes | The season year the presence was checked against. |
| `sport` | `SportId` | yes | The competition's sport — whose phase registry supplied the measures. |

**Used by:** [ApiResponsePersonCapabilities](/docs/reference/data-model/envelope/ApiResponsePersonCapabilities.md)
