Skip to content

Activity → exercise drill-down catalog

GET
/api/thresholds/nav/
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.

client_group
string

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).

Media typeapplication/json
object
items
required
Array<object>
object
activity
required
string
label
required
string
exercises
required
Array<object>
object
name
required
string
metric_count
required
integer
customised_count
required
integer

Example generated

{
"items": [
{
"activity": "example",
"label": "example",
"exercises": [
{
"name": "example",
"metric_count": 1,
"customised_count": 1
}
]
}
]
}

Bad client_group filter (keyed on client_group).

Media typeapplication/json

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
key
additional properties
Array<string>

Examples

Example400—ClientGroupIsNotThisTeam's

400 — client group is not this team's

{
"client_group": [
"Unknown client group for this team."
]
}
Media typeapplication/json
object
detail
required

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).

string

Example generated

{
"detail": "example"
}
Media typeapplication/json
object
detail
required

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).

string

Examples

Example403—PartnerAPIKeysCan'tManageThresholds

403 — partner API keys can't manage thresholds

{
"detail": "You do not have permission to perform this action."
}