Reference
API reference
Every endpoint, parameter and field, generated from the OYSS OpenAPI document the service is validated against — so this page cannot describe an API that does not exist.
https://api.sidelineexchange.com/v1OYSS 0.1.0All responses snake_caseConventions
- The key decides the mode
- A
sk_test_…key reads and writes an isolated partition;sk_live_…touches production. There is no mode parameter, so there is none to get wrong. - Everything is snake_case
- Ingest, read and management alike.
batch_id,external_id,time_status— there is no camelCase surface anywhere. - Ids say what they are
- A prefix and a ULID:
fx_fixture,tm_team,cmp_competition,ven_venue,org_organization. Passing the wrong kind fails on the prefix, not on a lookup. - Instants are UTC
- Every timestamp is RFC 3339 ending in
Z. Local time comes from the venue’s IANA zone; a fixture with no time yet carriesdateandtime_status: tbd. - Pages are cursors, not offsets
- Pass the
cursoryou were given back. A page never skips or repeats a row because something was inserted while you were reading. - Errors are problem documents
- RFC 9457, with a stable
typeURI that resolves to a page explaining that exact error, and — for batches — anerrorsarray pointing at each rejected observation.
Ingest
/observationsSecret keyPush a batch of observations
Accepts up to 1000 observations from one source. Idempotent per
Idempotency-Key: replaying a batch with the same key returns the original
receipt. Validation errors are reported per observation; the batch is
accepted if at least one observation is valid.
Headers
Idempotency-Keystringrequired8–128 characters
Request body · application/json
The payload a source pushes to POST /v1/observations. Each observation says: source X saw entity Y with these fields at time T.
sourcestringrequiredSource key registered to the caller's account, e.g. gotsport, or a feed key such as feed:ical:lakesidefc.
pattern ^[a-z0-9][a-z0-9._:-]{1,99}$
sent_atstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
observationsarray of Observationrequired1–1000 items
Show 6 nested fields ›Hide nested fields ˅
typestringrequiredone oforganizationcompetitionteamvenuefixtureresultstat_line
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
observed_atstringoptionalWhen the source saw this state. Defaults to receipt time.
RFC 3339, UTC
confidencenumberoptionalSource's own confidence. Defaults to 1.0 for push sources.
0–1
deletedbooleanoptionalThe source no longer has this entity. The hub marks it withdrawn from this source; it never deletes canonical data.
dataobjectrequiredResponses
Show the 4 fields it returns ›Hide fields ˅
batch_idstringrequiredacceptedintegerrequiredrejectedintegerrequirederrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalpathstringoptionalmessagestringoptionalShow the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptionalShow the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptionalShow the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptionalShow the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptionalRead
/fixturesAny keyList fixtures
Query parameters
teamstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
competitionstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
venuestringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
nearstringoptionalFixtures at venues within a radius of a point — lat,lng or lat,lng,km (25 km by default, 250 at most). Counts as a filter on its own.
fromstringoptionalInclusive lower bound on start (RFC 3339) or date.
tostringoptionalExclusive upper bound on start (RFC 3339) or date.
statusarray of stringoptionalone ofscheduledpostponedcancelledcompletedin_progressforfeit
limitintegeroptionaldefault 100 · 1–500
cursorstringoptionalResponses
Show the 2 fields it returns ›Hide fields ˅
dataarray of FixturerequiredShow 22 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
type"fixture"requiredsportstringrequiredone ofsoccerbaseballsoftballbasketballvolleyballlacrossehockeyfootballrugbyfield_hockeyother
kindstringrequiredone ofgamepracticetryoutscrimmageevent
competitionRefoptionalShow 2 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionaldivisionobjectoptionalShow 5 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionalage_groupstringoptionalU-notation age group (U4–U19) or an open/adult marker.
pattern ^(U(0?[4-9]|1[0-9])|open|adult)$
genderstringoptionalone ofMFcoed
levelstringoptionalstageobjectoptionalShow 3 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionaltypestringoptionalstartstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
endstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
datestring · dateoptionaltime_zonestringoptionalIANA time zone name, e.g. America/Chicago.
pattern ^[A-Za-z_]+(/[A-Za-z_+-]+)+$|^UTC$
time_statusstringrequiredone ofconfirmedestimatedtbd
statusstringrequiredone ofscheduledpostponedcancelledcompletedin_progressforfeit
venueobjectoptionalShow 4 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionalfieldstringoptionalgeoarray of anyoptional[latitude, longitude] in WGS-84 decimal degrees.
2–2 items
sidesarray of objectoptionalShow 2 nested fields ›Hide nested fields ˅
rolestringrequiredone ofhomeawayparticipant
teamRefrequiredShow 2 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionaltitlestringoptionalresultobjectoptionalA score for a fixture. Several results may be observed; the hub picks one by policy and keeps the rest.
Show 5 nested fields ›Hide nested fields ˅
scoresarray of objectrequired1–2 items
Show 3 nested fields ›Hide nested fields ˅
rolestringrequiredone ofhomeawayparticipant
scoreintegerrequired0–∞
penaltiesintegeroptionalShoot-out score, if any.
0–∞
finalbooleanrequiredofficialbooleanoptionalTrue when the host or a scoring partner marks the result official.
default false
periodstringoptionalCurrent period for in-progress results, e.g. 2H, Q3, T7.
0–20 characters
outcomestringoptionalone ofhome_winaway_windrawforfeit_homeforfeit_awayabandoned
provenancemap of ProvenancerequiredField name → provenance of the observation that won it.
external_idsmap of stringoptionalSource key → the source's external id for this fixture.
previousany | nulloptionalWhat the fixture said before its most recent headline change — a reschedule, a relocation,
a cancellation, a postponement or a reinstatement. Null until one has happened. The full
sequence is GET /v1/fixtures/{id}/history.
updated_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
versionintegerrequired1–∞
next_cursorstring | nulloptionalShow the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptional/fixtures/{id}Any keyGet one fixture with provenance
Path parameters
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
Responses
Show the 22 fields it returns ›Hide fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
type"fixture"requiredsportstringrequiredone ofsoccerbaseballsoftballbasketballvolleyballlacrossehockeyfootballrugbyfield_hockeyother
kindstringrequiredone ofgamepracticetryoutscrimmageevent
competitionRefoptionalShow 2 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionaldivisionobjectoptionalShow 5 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionalage_groupstringoptionalU-notation age group (U4–U19) or an open/adult marker.
pattern ^(U(0?[4-9]|1[0-9])|open|adult)$
genderstringoptionalone ofMFcoed
levelstringoptionalstageobjectoptionalShow 3 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionaltypestringoptionalstartstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
endstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
datestring · dateoptionaltime_zonestringoptionalIANA time zone name, e.g. America/Chicago.
pattern ^[A-Za-z_]+(/[A-Za-z_+-]+)+$|^UTC$
time_statusstringrequiredone ofconfirmedestimatedtbd
statusstringrequiredone ofscheduledpostponedcancelledcompletedin_progressforfeit
venueobjectoptionalShow 4 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionalfieldstringoptionalgeoarray of anyoptional[latitude, longitude] in WGS-84 decimal degrees.
2–2 items
sidesarray of objectoptionalShow 2 nested fields ›Hide nested fields ˅
rolestringrequiredone ofhomeawayparticipant
teamRefrequiredShow 2 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionaltitlestringoptionalresultobjectoptionalA score for a fixture. Several results may be observed; the hub picks one by policy and keeps the rest.
Show 5 nested fields ›Hide nested fields ˅
scoresarray of objectrequired1–2 items
Show 3 nested fields ›Hide nested fields ˅
rolestringrequiredone ofhomeawayparticipant
scoreintegerrequired0–∞
penaltiesintegeroptionalShoot-out score, if any.
0–∞
finalbooleanrequiredofficialbooleanoptionalTrue when the host or a scoring partner marks the result official.
default false
periodstringoptionalCurrent period for in-progress results, e.g. 2H, Q3, T7.
0–20 characters
outcomestringoptionalone ofhome_winaway_windrawforfeit_homeforfeit_awayabandoned
provenancemap of ProvenancerequiredField name → provenance of the observation that won it.
external_idsmap of stringoptionalSource key → the source's external id for this fixture.
previousany | nulloptionalWhat the fixture said before its most recent headline change — a reschedule, a relocation,
a cancellation, a postponement or a reinstatement. Null until one has happened. The full
sequence is GET /v1/fixtures/{id}/history.
updated_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
versionintegerrequired1–∞
Show the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptional/fixtures/{id}/historyAny keyEvery recorded change to a fixture
The fixture's history, oldest first: what it said before, what it says now, what kind of change that was (moved, rescheduled, cancelled, reinstated, withdrawn by a source), and the observation that caused it. This is how "why does it say Field 3A?" is answered without a support thread, and how a consumer learns that a game moved rather than that it changed.
Path parameters
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
Responses
Show the 2 fields it returns ›Hide fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
dataarray of FixtureChangerequiredShow 12 nested fields ›Hide nested fields ˅
versionintegerrequired1–∞
changed_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
kindstringrequiredWhat a change amounted to. relocated is a venue or field change; rescheduled a start, end,
date or time-status change; withdrawn means one source stopped listing the fixture (the
canonical row persists); reinstated means a cancelled or postponed fixture is scheduled again.
one ofcreatedupdatedrescheduledrelocatedpostponedcancelledcompletedreinstatedwithdrawn
changed_fieldsarray of stringrequiredbeforeobjectoptionalThe fields a family plans around, frozen at one version of the fixture.
Show 6 nested fields ›Hide nested fields ˅
startstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
endstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
datestring · dateoptionaltime_statusstringrequiredone ofconfirmedestimatedtbd
statusstringrequiredone ofscheduledpostponedcancelledcompletedin_progressforfeit
venueobjectoptionalShow 3 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionalfieldstringoptionalafterFixtureStaterequiredThe fields a family plans around, frozen at one version of the fixture.
Show 6 nested fields ›Hide nested fields ˅
startstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
endstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
datestring · dateoptionaltime_statusstringrequiredone ofconfirmedestimatedtbd
statusstringrequiredone ofscheduledpostponedcancelledcompletedin_progressforfeit
venueobjectoptionalShow 3 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionalfieldstringoptionalsourcestringrequiredThe source whose observation caused the change.
observation_idstring | nulloptionalchange_groupstringrequiredShared by every kind one observation produced, so a relocation and a reschedule from one edit are one notification.
venue_change_scopestring | nulloptionalfield when the move stayed inside one complex (Field 3 → Field 3A); complex when the venue itself changed.
one offieldcomplex
distance_kmnumber | nulloptionalreasonstring | nulloptionalIn words: "moved from Field 3 to Field 3A", "withdrawn by every source".
Show the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptional/venuesAny keyFind venues by name or by place
Venues across every source, merged: a complex two platforms name differently is one venue here.
Filter by name (q), by state (region) or by distance from a point (near=lat,lng[,km], radius
25 km by default and 250 at most); with near, results come nearest first and carry distance_km.
At least one filter is required.
Query parameters
qstringoptional2–∞ characters
nearstringoptionallat,lng or lat,lng,km.
regionstringoptionalTwo-letter state or province code.
limitintegeroptionaldefault 100 · 1–500
Responses
Show the 1 fields it returns ›Hide fields ˅
dataarray of VenuerequiredShow 11 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
type"venue"requirednamestringrequiredaddressobjectoptionalShow 6 nested fields ›Hide nested fields ˅
line1string | nulloptionalline2string | nulloptionalcitystring | nulloptionalregionstring | nulloptionalpostal_codestring | nulloptionalcountrystring | nulloptionalgeoarray of anyoptional[latitude, longitude] in WGS-84 decimal degrees.
2–2 items
time_zonestring | nulloptionalfieldsarray of stringrequireddistance_kmnumber | nulloptionalOnly with near: kilometres from the point asked about.
external_idsmap of stringrequiredupdated_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
versionintegerrequired1–∞
Show the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptional/venues/{id}Any keyGet one venue
A venue merged into another answers as its survivor, so an id a consumer stored keeps working.
Path parameters
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
Responses
Show the 11 fields it returns ›Hide fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
type"venue"requirednamestringrequiredaddressobjectoptionalShow 6 nested fields ›Hide nested fields ˅
line1string | nulloptionalline2string | nulloptionalcitystring | nulloptionalregionstring | nulloptionalpostal_codestring | nulloptionalcountrystring | nulloptionalgeoarray of anyoptional[latitude, longitude] in WGS-84 decimal degrees.
2–2 items
time_zonestring | nulloptionalfieldsarray of stringrequireddistance_kmnumber | nulloptionalOnly with near: kilometres from the point asked about.
external_idsmap of stringrequiredupdated_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
versionintegerrequired1–∞
Show the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptional/competitionsAny keyBrowse competitions by sport, place and date
Every tournament and league season the hub holds, from every source, as one catalog. Filter by
sport, kind, region (where it plays, or failing that where its host is), a date window
(from/to, matching any competition that overlaps it), distance from a point (near), or name (q).
Ordered by start date; undated competitions last. Page with cursor.
Query parameters
sportstringoptionalone ofsoccerbaseballsoftballbasketballvolleyballlacrossehockeyfootballrugbyfield_hockeyother
kindstringoptionalone oftournamentleagueshowcasecampfriendlyother
regionstringoptionalfromstring · dateoptionaltostring · dateoptionalnearstringoptionallat,lng or lat,lng,km.
qstringoptional2–∞ characters
limitintegeroptionaldefault 100 · 1–500
cursorstringoptionalResponses
Show the 2 fields it returns ›Hide fields ˅
dataarray of CompetitionrequiredShow 16 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
type"competition"requirednamestringrequiredsportstringrequiredone ofsoccerbaseballsoftballbasketballvolleyballlacrossehockeyfootballrugbyfield_hockeyother
kindstringrequiredone oftournamentleagueshowcasecampfriendlyother
hostobjectoptionalShow 2 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionalseasonstring | nulloptionalstart_datestring | null · dateoptionalend_datestring | null · dateoptionaltime_zonestring | nulloptionalwebsitestring | nulloptionaldivisionsarray of objectrequiredShow 6 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringrequiredage_groupstring | nulloptionalgenderstring | nulloptionallevelstring | nulloptionalstagesarray of objectrequiredShow 4 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringrequiredtypestringrequiredorderintegerrequiredvenuesarray of VenueoptionalDetail only — the distinct venues its fixtures play at. Absent on the list.
Show 11 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
type"venue"requirednamestringrequiredaddressobjectoptionalShow 6 nested fields ›Hide nested fields ˅
line1string | nulloptionalline2string | nulloptionalcitystring | nulloptionalregionstring | nulloptionalpostal_codestring | nulloptionalcountrystring | nulloptionalgeoarray of anyoptional[latitude, longitude] in WGS-84 decimal degrees.
2–2 items
time_zonestring | nulloptionalfieldsarray of stringrequireddistance_kmnumber | nulloptionalOnly with near: kilometres from the point asked about.
external_idsmap of stringrequiredupdated_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
versionintegerrequired1–∞
external_idsmap of stringrequiredupdated_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
versionintegerrequired1–∞
next_cursorstring | nulloptionalShow the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptional/competitions/{id}Any keyGet one competition with its divisions and venues
Path parameters
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
Responses
Show the 16 fields it returns ›Hide fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
type"competition"requirednamestringrequiredsportstringrequiredone ofsoccerbaseballsoftballbasketballvolleyballlacrossehockeyfootballrugbyfield_hockeyother
kindstringrequiredone oftournamentleagueshowcasecampfriendlyother
hostobjectoptionalShow 2 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionalseasonstring | nulloptionalstart_datestring | null · dateoptionalend_datestring | null · dateoptionaltime_zonestring | nulloptionalwebsitestring | nulloptionaldivisionsarray of objectrequiredShow 6 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringrequiredage_groupstring | nulloptionalgenderstring | nulloptionallevelstring | nulloptionalstagesarray of objectrequiredShow 4 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringrequiredtypestringrequiredorderintegerrequiredvenuesarray of VenueoptionalDetail only — the distinct venues its fixtures play at. Absent on the list.
Show 11 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
type"venue"requirednamestringrequiredaddressobjectoptionalShow 6 nested fields ›Hide nested fields ˅
line1string | nulloptionalline2string | nulloptionalcitystring | nulloptionalregionstring | nulloptionalpostal_codestring | nulloptionalcountrystring | nulloptionalgeoarray of anyoptional[latitude, longitude] in WGS-84 decimal degrees.
2–2 items
time_zonestring | nulloptionalfieldsarray of stringrequireddistance_kmnumber | nulloptionalOnly with near: kilometres from the point asked about.
external_idsmap of stringrequiredupdated_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
versionintegerrequired1–∞
external_idsmap of stringrequiredupdated_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
versionintegerrequired1–∞
Show the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptional/competitions/{id}/standingsAny keyStandings for every stage of a competition
Derived tables, one per stage, recomputed when results land. Honest about partial data (complete, as_of, missing_fixtures) and auditable — each row carries the tiebreak trace that explains its position, and derived_from names the fixture versions it came from.
Path parameters
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
Responses
Show the 15 fields it returns ›Hide fields ˅
stagestringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionaltypestringoptionaldivisionstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
division_namestringoptionalcompetitionstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
completebooleanoptionaltiebreak_sourcestringoptionalone ofstagedefault
versionintegeroptionalas_ofstringoptionalRFC 3339, UTC
pointsstringoptionalPoints per win-draw-loss, e.g. 3-1-0.
tiebreakersarray of stringoptionalmissing_fixturesarray of stringoptionalderived_fromarray of stringoptionalfixture@version inputs
rowsarray of objectoptionalShow 13 nested fields ›Hide nested fields ˅
teamstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
team_namestringoptionalpositionintegeroptionalplayedintegeroptionalwinsintegeroptionaldrawsintegeroptionallossesintegeroptionalgoals_forintegeroptionalgoals_againstintegeroptionalgoal_diffintegeroptionalpointsintegeroptionalprovisionalbooleanoptionaltracearray of stringoptionalThe rules that placed this row, in order.
Show the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptional/stages/{id}/standingsAny keyThe standings table for one stage
Path parameters
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
Responses
Show the 15 fields it returns ›Hide fields ˅
stagestringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionaltypestringoptionaldivisionstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
division_namestringoptionalcompetitionstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
completebooleanoptionaltiebreak_sourcestringoptionalone ofstagedefault
versionintegeroptionalas_ofstringoptionalRFC 3339, UTC
pointsstringoptionalPoints per win-draw-loss, e.g. 3-1-0.
tiebreakersarray of stringoptionalmissing_fixturesarray of stringoptionalderived_fromarray of stringoptionalfixture@version inputs
rowsarray of objectoptionalShow 13 nested fields ›Hide nested fields ˅
teamstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
team_namestringoptionalpositionintegeroptionalplayedintegeroptionalwinsintegeroptionaldrawsintegeroptionallossesintegeroptionalgoals_forintegeroptionalgoals_againstintegeroptionalgoal_diffintegeroptionalpointsintegeroptionalprovisionalbooleanoptionaltracearray of stringoptionalThe rules that placed this row, in order.
Show the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptional/teamsAny keyFind teams by name
Name in, ids out — the entry point everything id-scoped hangs off. Public tier.
Query parameters
qstringrequired2–∞ characters
limitintegeroptionaldefault 100 · 1–500
Responses
Show the 2 fields it returns ›Hide fields ˅
idstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptional/competitions/{id}/export/fixtures.parquetSecret keyA competition's canonical fixtures as one Parquet file
Bulk export for notebooks and warehouses: one flat row per fixture with teams, venue, schedule and result columns. Secret keys only — bulk is not a widget concern.
Path parameters
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
Responses
Show the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptional/fixtures/{id}/statsAny keyBox-score lines for a fixture
Team lines are public tier. Player lines are PII tier — a secret key holding a participants:read grant from the team's organization, or they are withheld and player_lines_withheld says so. Publishable keys are structurally incapable of the player tier.
Path parameters
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
Responses
Show the 3 fields it returns ›Hide fields ˅
fixturestringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
player_lines_withheldbooleanoptionallinesarray of objectoptionalShow 10 nested fields ›Hide nested fields ˅
idstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
teamstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
team_namestringoptionalplayerstring | nulloptionalplayer_namestring | nulloptionalperiodstring | nulloptionalsportstringoptionalstatsmap of numberoptionalsourcestringoptionalversionintegeroptionalShow the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptional/fixtures/{id}/resultsAny keyEvery reported result for a fixture, losers included
Two scorers keep two books; the conflict policy picks one. This shows every report with its source and marks the one that won — provenance for scores, not just the winning value.
Path parameters
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
Responses
Show the 3 fields it returns ›Hide fields ˅
fixturestringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
winning_sourcestring | nulloptionalreportedarray of objectoptionalShow 6 nested fields ›Hide nested fields ˅
sourcestringoptionalsource_classstringoptionalobserved_atstringoptionalRFC 3339, UTC
confidencenumberoptionalwinningbooleanoptionalresultResultoptionalA score for a fixture. Several results may be observed; the hub picks one by policy and keeps the rest.
Show 5 nested fields ›Hide nested fields ˅
scoresarray of objectrequired1–2 items
Show 3 nested fields ›Hide nested fields ˅
rolestringrequiredone ofhomeawayparticipant
scoreintegerrequired0–∞
penaltiesintegeroptionalShoot-out score, if any.
0–∞
finalbooleanrequiredofficialbooleanoptionalTrue when the host or a scoring partner marks the result official.
default false
periodstringoptionalCurrent period for in-progress results, e.g. 2H, Q3, T7.
0–20 characters
outcomestringoptionalone ofhome_winaway_windrawforfeit_homeforfeit_awayabandoned
Show the 6 fields it returns ›Hide fields ˅
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptionalSync
/changesAny keyDelta sync
Returns entity changes after cursor, oldest first. A consumer stores the
returned next_cursor and never re-downloads a season. Cursors are opaque
and valid for 30 days.
Query parameters
cursorstringoptionallimitintegeroptionaldefault 100 · 1–500
typesarray of stringoptionalone offixtureteamcompetitionvenueorganizationresult
Responses
Show the 2 fields it returns ›Hide fields ˅
dataarray of ChangerequiredShow 6 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
typestringrequiredeventstringrequiredThe oyss.* event type that produced this change.
versionintegerrequiredatstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
changed_fieldsarray of stringoptionalnext_cursorstringrequiredCalendars
/teams/{id}/calendar.icsNo keyiCalendar feed for a team
Public, cacheable, no key required. Token-scoped feeds for non-public data are issued by the dashboard.
Path parameters
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
Responses
Webhooks
/subscriptionsSecret keyRegister a webhook endpoint
Request body · application/json
urlstring · urirequiredeventsarray of stringrequired1–∞ items
filtermap of stringoptionalOptional scope, e.g. {"competition": "cmp_…"} or {"team": "tm_…"}.
Responses
Show the 7 fields it returns ›Hide fields ˅
urlstring · urirequiredeventsarray of stringrequired1–∞ items
filtermap of stringoptionalOptional scope, e.g. {"competition": "cmp_…"} or {"team": "tm_…"}.
idstringrequiredmodestringrequiredone oftestlive
secretstringrequiredHMAC-SHA256 signing secret, shown once.
created_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
The observation envelope
Every observation in a batch has the same envelope. What data must contain depends on type — one schema per type, listed below. Nothing else is accepted: an unknown type is rejected with a pointer to the field, not silently ignored.
typestringrequiredone oforganizationcompetitionteamvenuefixtureresultstat_line
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
observed_atstringoptionalWhen the source saw this state. Defaults to receipt time.
RFC 3339, UTC
confidencenumberoptionalSource's own confidence. Defaults to 1.0 for push sources.
0–1
deletedbooleanoptionalThe source no longer has this entity. The hub marks it withdrawn from this source; it never deletes canonical data.
dataobjectrequiredWhat data holds, by type
▶type: "organization"A club, league, tournament host or governing body.
namestringrequired1–200 characters
kindstringrequiredone ofclubleaguetournament_hostgoverning_bodyother
short_namestringoptional0–50 characters
regionstringoptionalFree-text region, e.g. North Texas.
0–100 characters
countrystringoptionalpattern ^[A-Z]{2}$
websitestring · urioptionalsanctioningmap of stringoptionalIdentifiers assigned by governing bodies, keyed by body (usys, usclub, ayso, uslacrosse, ...).
{
"name": "Lakeside FC 2014B Blue",
"kind": "club",
"short_name": "Lakeside FC 2014B Blue",
"region": "string",
"country": "string",
"website": "https://example.com/hooks/sideline",
"sanctioning": {
"start": "string"
}
}▶type: "competition"A tournament or a league season. The unit at which an authoritative source is designated.
namestringrequired1–200 characters
sportstringrequiredone ofsoccerbaseballsoftballbasketballvolleyballlacrossehockeyfootballrugbyfield_hockeyother
kindstringrequiredone oftournamentleagueshowcasefriendly_seriesother
hostobjectoptionalReference to another entity by the source's external id. Used inside observations.
Show 2 nested fields ›Hide nested fields ˅
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringoptional0–200 characters
seasonstringoptionale.g. 2026-27 or Spring 2027.
0–40 characters
start_datestring · dateoptionalend_datestring · dateoptionaltime_zonestringoptionalIANA time zone name, e.g. America/Chicago.
pattern ^[A-Za-z_]+(/[A-Za-z_+-]+)+$|^UTC$
websitestring · urioptionaldivisionsarray of DivisionoptionalShow 6 nested fields ›Hide nested fields ˅
external_idstringoptionalA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringrequired0–120 characters
age_groupstringoptionalU-notation age group (U4–U19) or an open/adult marker.
pattern ^(U(0?[4-9]|1[0-9])|open|adult)$
genderstringoptionalone ofMFcoed
levelstringoptionalCompetitive tier as named by the host, e.g. gold, premier, rec.
0–60 characters
stagesarray of objectoptionalShow 6 nested fields ›Hide nested fields ˅
external_idstringoptionalA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringrequired0–120 characters
typestringrequiredone ofpoolbracketround_robinleagueplayoffother
orderintegeroptional0–∞
pointsstringoptionalPoints per win-draw-loss, e.g. 3-1-0. 3-1-0 is common, not universal.
pattern ^\d{1,2}-\d{1,2}-\d{1,2}$
tiebreakersarray of stringoptionalOrdered rules: points, wins, goal_diff, goal_diff_capped:N, goals_for, goals_against, head_to_head:mini_table, head_to_head:pairwise_only, coin_toss. Unknown names are rejected at ingest, never skipped.
0–10 items
{
"name": "Lakeside FC 2014B Blue",
"sport": "soccer",
"kind": "tournament",
"host": {
"external_id": "fx_01J7Y3M2K9QW8ZP4R6T1N0A5BC",
"name": "Lakeside FC 2014B Blue"
},
"season": "string",
"start_date": "2027-04-10",
"end_date": "2027-04-10",
"time_zone": "America/Chicago",
"website": "https://example.com/hooks/sideline",
"divisions": [
{
"external_id": "fx_01J7Y3M2K9QW8ZP4R6T1N0A5BC",
"name": "2014 Boys Premier",
"age_group": "U13",
"gender": "M",
"level": "Premier",
"stages": [
{}
]
}
]
}▶type: "team"A club team in a season. Identity = organization + age group + gender + name + season.
namestringrequiredName as the source shows it, e.g. Lakeside FC 2014B Blue.
1–200 characters
organizationobjectoptionalReference to another entity by the source's external id. Used inside observations.
Show 2 nested fields ›Hide nested fields ˅
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringoptional0–200 characters
sportstringoptionalone ofsoccerbaseballsoftballbasketballvolleyballlacrossehockeyfootballrugbyfield_hockeyother
age_groupstringoptionalU-notation age group (U4–U19) or an open/adult marker.
pattern ^(U(0?[4-9]|1[0-9])|open|adult)$
birth_yearintegeroptional1990–2100
genderstringoptionalone ofMFcoed
seasonstringoptional0–40 characters
levelstringoptional0–60 characters
coachstringoptionalHead coach name as published by the source. Used only for resolution.
0–120 characters
colorsarray of stringoptional0–3 items
sanctioningmap of stringoptionalTeam identifiers assigned by governing bodies, keyed by body.
{
"name": "Lakeside FC 2014B Blue",
"organization": {
"external_id": "fx_01J7Y3M2K9QW8ZP4R6T1N0A5BC",
"name": "Lakeside FC"
},
"sport": "soccer",
"age_group": "U13",
"birth_year": 1,
"gender": "M",
"season": "string",
"level": "Premier",
"coach": "string",
"colors": [
"string"
],
"sanctioning": {
"start": "string"
}
}▶type: "venue"A complex (park, school, facility). Fields within it are named on the fixture.
namestringrequired1–200 characters
addressobjectoptionalShow 6 nested fields ›Hide nested fields ˅
line1stringoptional0–200 characters
line2stringoptional0–200 characters
citystringoptional0–100 characters
regionstringoptionalState or province code.
0–10 characters
postal_codestringoptional0–20 characters
countrystringoptionalpattern ^[A-Z]{2}$
geoarray of anyoptional[latitude, longitude] in WGS-84 decimal degrees.
2–2 items
time_zonestringoptionalIANA time zone name, e.g. America/Chicago.
pattern ^[A-Za-z_]+(/[A-Za-z_+-]+)+$|^UTC$
fieldsarray of stringoptionalNamed fields/courts/rinks within the complex, as the source labels them.
{
"name": "Lakeside FC 2014B Blue",
"address": {
"line1": "string",
"line2": "string",
"city": "string",
"region": "string",
"postal_code": "string",
"country": "string"
},
"geo": [
"string"
],
"time_zone": "America/Chicago",
"fields": [
"string"
]
}▶type: "fixture"Anything schedulable: a game, practice, tryout or team event.
kindstringrequiredone ofgamepracticetryoutscrimmageevent
sportstringrequiredone ofsoccerbaseballsoftballbasketballvolleyballlacrossehockeyfootballrugbyfield_hockeyother
competitionobjectoptionalReference to another entity by the source's external id. Used inside observations.
Show 2 nested fields ›Hide nested fields ˅
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringoptional0–200 characters
divisionobjectoptionalReference to another entity by the source's external id. Used inside observations.
Show 2 nested fields ›Hide nested fields ˅
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringoptional0–200 characters
stageobjectoptionalReference to another entity by the source's external id. Used inside observations.
Show 2 nested fields ›Hide nested fields ˅
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringoptional0–200 characters
startstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
endstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
datestring · dateoptionalLocal date when the time is not yet known (time_status = tbd).
time_zonestringoptionalIANA time zone name, e.g. America/Chicago.
pattern ^[A-Za-z_]+(/[A-Za-z_+-]+)+$|^UTC$
time_statusstringoptionalone ofconfirmedestimatedtbd
default "confirmed"
statusstringoptionalone ofscheduledpostponedcancelledcompletedin_progressforfeit
default "scheduled"
venueobjectoptionalShow 3 nested fields ›Hide nested fields ˅
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringoptional0–200 characters
fieldstringoptional0–60 characters
sidesarray of objectoptional0–2 items
Show 2 nested fields ›Hide nested fields ˅
rolestringrequiredone ofhomeawayparticipant
teamobjectrequiredReference to another entity by the source's external id. Used inside observations.
Show 2 nested fields ›Hide nested fields ˅
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringoptional0–200 characters
titlestringoptionalDisplay title for non-game fixtures (practice, event).
0–200 characters
notesstringoptional0–2000 characters
resultResultoptionalA score for a fixture. Several results may be observed; the hub picks one by policy and keeps the rest.
Show 5 nested fields ›Hide nested fields ˅
scoresarray of objectrequired1–2 items
Show 3 nested fields ›Hide nested fields ˅
rolestringrequiredone ofhomeawayparticipant
scoreintegerrequired0–∞
penaltiesintegeroptionalShoot-out score, if any.
0–∞
finalbooleanrequiredofficialbooleanoptionalTrue when the host or a scoring partner marks the result official.
default false
periodstringoptionalCurrent period for in-progress results, e.g. 2H, Q3, T7.
0–20 characters
outcomestringoptionalone ofhome_winaway_windrawforfeit_homeforfeit_awayabandoned
urlstring · urioptionalSource page for this fixture, if public.
{
"kind": "game",
"sport": "soccer",
"competition": {
"external_id": "fx_01J7Y3M2K9QW8ZP4R6T1N0A5BC",
"name": "Dallas Cup 2027"
},
"division": {
"external_id": "fx_01J7Y3M2K9QW8ZP4R6T1N0A5BC",
"name": "2014 Boys Premier"
},
"stage": {
"external_id": "fx_01J7Y3M2K9QW8ZP4R6T1N0A5BC",
"name": "Pool B"
},
"start": "2027-04-10T14:00:00Z",
"end": "2027-04-10T14:00:00Z",
"date": "2027-04-10",
"time_zone": "America/Chicago",
"time_status": "confirmed",
"status": "scheduled",
"venue": {
"external_id": "fx_01J7Y3M2K9QW8ZP4R6T1N0A5BC",
"name": "MoneyGram Soccer Park",
"field": "Field 7"
},
"sides": [
{
"role": "home",
"team": {
"external_id": "fx_01J7Y3M2K9QW8ZP4R6T1N0A5BC",
"name": "Lakeside FC 2014B Blue"
}
}
],
"title": "Invalid parameter",
"notes": "string",
"result": {
"scores": [
{
"role": "home",
"score": 1,
"penalties": 1
}
],
"final": true,
"official": false,
"period": "FT",
"outcome": "home_win"
},
"url": "https://example.com/hooks/sideline"
}▶type: "result"A result observed for a fixture identified by the source's external id.
fixtureobjectrequiredReference to another entity by the source's external id. Used inside observations.
Show 2 nested fields ›Hide nested fields ˅
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringoptional0–200 characters
resultResultrequiredA score for a fixture. Several results may be observed; the hub picks one by policy and keeps the rest.
Show 5 nested fields ›Hide nested fields ˅
scoresarray of objectrequired1–2 items
Show 3 nested fields ›Hide nested fields ˅
rolestringrequiredone ofhomeawayparticipant
scoreintegerrequired0–∞
penaltiesintegeroptionalShoot-out score, if any.
0–∞
finalbooleanrequiredofficialbooleanoptionalTrue when the host or a scoring partner marks the result official.
default false
periodstringoptionalCurrent period for in-progress results, e.g. 2H, Q3, T7.
0–20 characters
outcomestringoptionalone ofhome_winaway_windrawforfeit_homeforfeit_awayabandoned
{
"fixture": {
"external_id": "fx_01J7Y3M2K9QW8ZP4R6T1N0A5BC",
"name": "Lakeside FC 2014B Blue v Riverbend SC 14B Red"
},
"result": {
"scores": [
{
"role": "home",
"score": 1,
"penalties": 1
}
],
"final": true,
"official": false,
"period": "FT",
"outcome": "home_win"
}
}▶type: "stat_line"A box-score line for a fixture: team-level, or per player behind an organization grant. Player lines are PII tier — never served to a publishable key, never in an event payload.
fixtureobjectrequiredReference to another entity by the source's external id. Used inside observations.
Show 2 nested fields ›Hide nested fields ˅
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringoptional0–200 characters
teamobjectrequiredReference to another entity by the source's external id. Used inside observations.
Show 2 nested fields ›Hide nested fields ˅
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringoptional0–200 characters
playerobjectoptionalPresent only for a player line. The token is the source's stable participant id; a display name is optional and grant-gated on the way out.
Show 2 nested fields ›Hide nested fields ˅
external_idstringrequiredA source's own identifier for an entity. Opaque to the hub; stable within the source.
1–256 characters
namestringoptional0–120 characters
periodstringoptionalOne period's line (e.g. 1H, Q3); absent means the whole game.
0–20 characters
sportstringrequiredone ofsoccerbaseball
statsobjectrequired{
"fixture": {
"external_id": "fx_01J7Y3M2K9QW8ZP4R6T1N0A5BC",
"name": "Lakeside FC 2014B Blue v Riverbend SC 14B Red"
},
"team": {
"external_id": "fx_01J7Y3M2K9QW8ZP4R6T1N0A5BC",
"name": "Lakeside FC 2014B Blue"
},
"player": {
"external_id": "fx_01J7Y3M2K9QW8ZP4R6T1N0A5BC",
"name": "Lakeside FC 2014B Blue"
},
"period": "FT",
"sport": "soccer",
"stats": {}
}Objects
Fixture
Canonical fixture with per-field provenance.
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
type"fixture"requiredsportstringrequiredone ofsoccerbaseballsoftballbasketballvolleyballlacrossehockeyfootballrugbyfield_hockeyother
kindstringrequiredone ofgamepracticetryoutscrimmageevent
competitionRefoptionalShow 2 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionaldivisionobjectoptionalShow 5 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionalage_groupstringoptionalU-notation age group (U4–U19) or an open/adult marker.
pattern ^(U(0?[4-9]|1[0-9])|open|adult)$
genderstringoptionalone ofMFcoed
levelstringoptionalstageobjectoptionalShow 3 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionaltypestringoptionalstartstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
endstringoptionalRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
datestring · dateoptionaltime_zonestringoptionalIANA time zone name, e.g. America/Chicago.
pattern ^[A-Za-z_]+(/[A-Za-z_+-]+)+$|^UTC$
time_statusstringrequiredone ofconfirmedestimatedtbd
statusstringrequiredone ofscheduledpostponedcancelledcompletedin_progressforfeit
venueobjectoptionalShow 4 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionalfieldstringoptionalgeoarray of anyoptional[latitude, longitude] in WGS-84 decimal degrees.
2–2 items
sidesarray of objectoptionalShow 2 nested fields ›Hide nested fields ˅
rolestringrequiredone ofhomeawayparticipant
teamRefrequiredShow 2 nested fields ›Hide nested fields ˅
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionaltitlestringoptionalresultobjectoptionalA score for a fixture. Several results may be observed; the hub picks one by policy and keeps the rest.
Show 5 nested fields ›Hide nested fields ˅
scoresarray of objectrequired1–2 items
Show 3 nested fields ›Hide nested fields ˅
rolestringrequiredone ofhomeawayparticipant
scoreintegerrequired0–∞
penaltiesintegeroptionalShoot-out score, if any.
0–∞
finalbooleanrequiredofficialbooleanoptionalTrue when the host or a scoring partner marks the result official.
default false
periodstringoptionalCurrent period for in-progress results, e.g. 2H, Q3, T7.
0–20 characters
outcomestringoptionalone ofhome_winaway_windrawforfeit_homeforfeit_awayabandoned
provenancemap of ProvenancerequiredField name → provenance of the observation that won it.
external_idsmap of stringoptionalSource key → the source's external id for this fixture.
previousany | nulloptionalWhat the fixture said before its most recent headline change — a reschedule, a relocation,
a cancellation, a postponement or a reinstatement. Null until one has happened. The full
sequence is GET /v1/fixtures/{id}/history.
updated_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
versionintegerrequired1–∞
Standings
A derived table for one stage. Never hand-edited; a wrong table is a wrong result.
stagestringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
namestringoptionaltypestringoptionaldivisionstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
division_namestringoptionalcompetitionstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
completebooleanoptionaltiebreak_sourcestringoptionalone ofstagedefault
versionintegeroptionalas_ofstringoptionalRFC 3339, UTC
pointsstringoptionalPoints per win-draw-loss, e.g. 3-1-0.
tiebreakersarray of stringoptionalmissing_fixturesarray of stringoptionalderived_fromarray of stringoptionalfixture@version inputs
rowsarray of objectoptionalShow 13 nested fields ›Hide nested fields ˅
teamstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
team_namestringoptionalpositionintegeroptionalplayedintegeroptionalwinsintegeroptionaldrawsintegeroptionallossesintegeroptionalgoals_forintegeroptionalgoals_againstintegeroptionalgoal_diffintegeroptionalpointsintegeroptionalprovisionalbooleanoptionaltracearray of stringoptionalThe rules that placed this row, in order.
Change
idstringrequiredCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
typestringrequiredeventstringrequiredThe oyss.* event type that produced this change.
versionintegerrequiredatstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
changed_fieldsarray of stringoptionalSubscription
urlstring · urirequiredeventsarray of stringrequired1–∞ items
filtermap of stringoptionalOptional scope, e.g. {"competition": "cmp_…"} or {"team": "tm_…"}.
idstringrequiredmodestringrequiredone oftestlive
secretstringrequiredHMAC-SHA256 signing secret, shown once.
created_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
BatchReceipt
batch_idstringrequiredacceptedintegerrequiredrejectedintegerrequirederrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalpathstringoptionalmessagestringoptionalProvenance
Where a canonical field's value came from.
sourcestringrequiredSource key, e.g. gotsport or web:dallascup.com.
observed_atstringrequiredRFC 3339 timestamp in UTC (must end in Z).
RFC 3339, UTC
confidencenumberoptional0–1
observation_idstringoptionalCanonical hub identifier: a type prefix and a ULID.
a prefixed ULID, e.g. tm_01J7Y3M2K9QW8ZP4R6T1N0A5BC
Problem
typestring · urioptionaltitlestringoptionalstatusintegeroptionaldetailstringoptionalinstancestringoptionalerrorsarray of objectoptionalShow 3 nested fields ›Hide nested fields ˅
indexintegeroptionalObservation index within the batch.
pathstringoptionalJSON pointer into the observation.
messagestringoptional