# CompareTeamsRosterEntryView

> The wire shape of one roster entry AS SERVED BY COMPARE-TEAMS — the assembled [`Person`] tagged with the [`RosterSource`] that produced it (`appearance` = played, `membership` = named).

The wire shape of one roster entry AS SERVED BY COMPARE-TEAMS — the
assembled [`Person`] tagged with the [`RosterSource`] that produced it
(`appearance` = played, `membership` = named). This is a **separate**
struct from `teams::RosterEntryView` (deliberately, not deduped):
compare-teams' `TeamSide` never loads injury data, so this shape carries
no `injury` field, while `teams::RosterEntryView` (the team roster
endpoint) does. Registered under its own OpenAPI schema name
(`#[schema(as =...)]`) so the two don't collide on the unqualified
`RosterEntryView` components key now that their shapes diverge — see
`tests/openapi_refs.rs` fix pattern 2 and
`roster_schema_shapes_are_not_conflated` in that file.

**Kind:** object

| Field | Type | Required | Description |
|---|---|---|---|
| `person` | `Person` | yes |  |
| `source` | `RosterSource` | yes |  |

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