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.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”object
object
object
Examplegenerated
{ "items": [ { "activity": "example", "label": "example", "exercises": [ { "name": "example", "metric_count": 1, "customised_count": 1 } ] } ]}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).
Examplegenerated
{ "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."}