Success envelopes
REST reads return JSON with an outerdata key. The payload inside it depends
on the endpoint:
Current game odds use this structure (illustrative empty payload):
data. Canonical reads
commonly use snake_case, while some soccer analytics and provider-derived
statistics retain camelCase.
Metadata
Authenticated catalog handlers include
_meta.request_id but generally omit
cache metadata. Service metadata, token/tenant introspection, and public
coverage have separate schemas and may omit _meta.
The endpoint reference expands nested response attributes by default. For a
directory, read data.items[] for the entity’s fields; for a single entity,
read data. The generated response example also shows nested fields.
Team and player views retain their canonical identity, names, league-specific
attributes, timestamps, and asset metadata, then add a resolved logo_url or
headshot_url. Soccer competition views and Proto mapped fixtures likewise
retain their embedded canonical fields. These added fields do not replace the
underlying entity.
Optional fields may be absent; nullable fields or uninitialized collections
can be null. Neither omission nor null means zero. Preserve numeric zero
when explicitly present.
Errors
error.code and HTTP status. Messages can change. details is
optional and varies by code; it may be absent, null, or a context object.
See each operation for its statuses. The public reads do not share a general
204, 409, or field-validation response contract beyond these behaviors.
Empty and unavailable data
Empty results retain the endpoint’s own shape:data: [], data.items: [],
data.data.markets: {}, or another documented collection. A successful list
can be empty because of filters, ingestion coverage, an off-season, or a
provider limitation.
Soccer analytics can return data.available=false with a reason when a
competition or measure cannot be resolved. KBL injury reads instead return
data.availability="provider_unavailable" and
data.reason="dated_injury_feed_not_exposed". These are successful availability
responses, not evidence that every player is healthy.
See IDs, Assets & Availability and
Rate Limits & Quota before deciding whether to
retry or count a response as complete.