Activity → exercise drill-down catalog
const url = 'http://localhost:8000/api/thresholds/nav/';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url http://localhost:8000/api/thresholds/nav/ \ --header 'Authorization: Bearer <token>'Any team member. Tree of activities and their exercises with two counters per node: total (every MetricSpec the activity / exercise carries) and customised (rows the team has actually overridden). Powers the left-rail picker on the threshold-configurator page and surfaces the “X tuned” badges so coaches see at a glance what they’ve touched.
With client_group (#2518) customised_count counts that group’s own ranges instead of the team’s base rows — what the list marks inherited=false under the same filter.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Client-group UUID (#2518) — address that group’s OWN range instead of a cohort slot. Must be a group of the caller’s team and cannot be combined with gender / age_band / skill_level (both → 400, keyed on client_group).
Responses
Section titled “Responses”object
object
object
Example generated
{ "items": [ { "activity": "example", "label": "example", "exercises": [ { "name": "example", "metric_count": 1, "customised_count": 1 } ] } ]}Bad client_group filter (keyed on client_group).
Validation error keyed by parameter name — client_group is malformed, names no group of the caller’s team, or rides with a demographic filter.
object
Examples
400 — client group is not this team's
{ "client_group": [ "Unknown client group for this team." ]}object
Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).
Example generated
{ "detail": "example"}object
Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).
Examples
403 — partner API keys can't manage thresholds
{ "detail": "You do not have permission to perform this action."}