Individual Entries¶
An individual entry links one person to a competition and tracks their
payment and approval status. Each entry also carries a set of entry events
(IndivEntryEvents) — the events that person has selected/entered.
Permissions¶
indiv-entries and indiv-entry-events are competition-admin read-only:
you must be an admin of the relevant competition to view entries and their
events, and no client can create, edit, or delete them through these endpoints
(write operations are handled internally by OpenTrack).
All requests require authentication.
List individual entries¶
GET /api/indiv-entries/
Returns the individual entries for the competitions you administer. An explicit
?competition=<pk> filter is honoured and its permission enforced separately.
Filters (all optional): competition, person, made_by, team_org,
team_code, team_name, is_paid, can_be_paid, non_scorer, age_group,
category, is_approved_by_director, is_approved_by_tm, is_withdrawn.
Ordering: ?ordering=when_paid, ?ordering=scheduled_start_time.
Search: ?search=<text> matches competition name or person first/last name.
The natural URL¶
Entries can also be read under a competition's natural key:
GET /api/x/<year>/<country>/<slug>/entries/ # all entries
GET /api/x/<year>/<country>/<slug>/entries/<entry_id>/ # one entry
Each entry returned anywhere includes a hyperlinked url field pointing at its
natural per-entry URL above, e.g.
{
"url": "https://data.opentrack.run/api/x/2026/GBR/demo-comp/entries/451/",
"entry_num": 1,
"competition": 88,
"person": "https://data.opentrack.run/api/persons/1234/",
"age_group": "SEN",
"category": "SM",
"is_paid": true,
"can_be_paid": true,
"is_approved_by_tm": false,
"is_approved_by_director": false,
"is_withdrawn": false,
"when_started": "2026-01-10T09:34:00Z",
"price": "12.00",
"events_entered": [ ... ]
}
IndivEntryEvents — the events an entry has selected¶
Every entry exposes a nested events_entered array (read-only). Each element is
an IndivEntryEvent: a join between the entry and one EventSpec, plus the
athlete's declared performances for that event.
{
"url": "https://data.opentrack.run/api/x/2026/GBR/demo-comp/entries/451/events/9001/",
"entry": "https://data.opentrack.run/api/indiv-entries/451/",
"event": "https://data.opentrack.run/api/events/312/",
"rt_id": "", // relay team id, for relay events
"idx": 1, // running order, for relays
"qp": "10.8", // recent best (last 2 years)
"sb": "10.9", // season's best
"pb": "10.7", // personal best
"is_paid": true,
"info": ""
}
The url is the natural URL for this entry event. The event and entry
are hyperlinks — the EventSpec resolves via /api/events/<pk>/ and the parent
entry via /api/indiv-entries/<pk>/ (or its natural URL).
Read IndivEntryEvents¶
Competition admins can list and read the events a particular entry has selected, scoped to the competitions they administer:
GET /api/indiv-entry-events/ # list (scoped to your competitions)
GET /api/indiv-entry-events/<pk>/ # one entry event
Filter by a specific entry with ?entry=<pk>.
The natural-key URL lists all events under one entry (and identifies each one):
GET /api/x/<year>/<country>/<slug>/entries/<entry_id>/events/ # all entry events for the entry
GET /api/x/<year>/<country>/<slug>/entries/<entry_id>/events/<pk>/ # one entry event