Rename, restore, or set the sections or the audience of a Solution run
const url = 'http://localhost:8000/api/solutions/runs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"audience":"athlete"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url http://localhost:8000/api/solutions/runs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/ \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "audience": "athlete" }'Partial update (#1192): name sets the coach-editable display name (blank clears back to the client-computed default); archived: false restores an archived run to the active list (true archives it). Send whichever applies — all are optional. Team-scoped; cross-team 404.
hidden_sections (#1977) switches whole sections off for this run — the coach sends a client a metrics-only report. One setting, three surfaces: the authenticated web report, the public share link and the downloaded PDF all omit them, because the prune happens once during report assembly. The metrics are the report’s floor and have no key. A share link already issued keeps the set it was minted with; re-clicking Share re-stamps it.
audience (#2040) changes who the report is written for. Same three surfaces; a link already issued keeps the tier it was minted with — it is never re-stamped.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Body
Section titled “Request Body”PATCH /api/solutions/runs/<id>/ — rename, (un)archive, and/or set the
switched-off report sections of a run (#1192, #1977). Every field is
optional so a rename (name), a restore (archived: false) and a section
edit (hidden_sections) share one endpoint; send whichever applies.
object
New display name; blank clears back to the computed default.
false restores an archived run to the active list; true archives it (same as DELETE without ?permanent).
Report sections to omit from the web report, the public share link and the PDF. One or more of ai, injury, graphs, phases, frames, profile, comparisons, trends, metric_notes. [] renders the full report. The metrics are the report’s floor and cannot be switched off — there is no key for them.
Who the report is written for. practitioner (the default) is the full report. coach leaves out the joint-angle graphs, the movement-profile radar and the frame-by-frame stills. athlete is for the athlete or a parent: a plain-language summary, at most five takeaways and the headline metrics, with every joint angle and the analysis sections left out. The web report, the PDF and every link minted from it apply the same tier. Links already issued keep their own tier.
practitioner- practitionercoach- coachathlete- athlete
Whose words the report is written in (#2867): coach or amateur (Bowler Mode on bowling). Saved on the report, from the same Sections panel as audience; until set, the report follows the client’s own setting. Links already issued keep their own.
coach- Coachamateur- Amateur
Examples
The athlete or a parent reads it: no joint angles, plain language
{ "audience": "athlete"}PATCH /api/solutions/runs/<id>/ — rename, (un)archive, and/or set the
switched-off report sections of a run (#1192, #1977). Every field is
optional so a rename (name), a restore (archived: false) and a section
edit (hidden_sections) share one endpoint; send whichever applies.
object
New display name; blank clears back to the computed default.
false restores an archived run to the active list; true archives it (same as DELETE without ?permanent).
Report sections to omit from the web report, the public share link and the PDF. One or more of ai, injury, graphs, phases, frames, profile, comparisons, trends, metric_notes. [] renders the full report. The metrics are the report’s floor and cannot be switched off — there is no key for them.
Who the report is written for. practitioner (the default) is the full report. coach leaves out the joint-angle graphs, the movement-profile radar and the frame-by-frame stills. athlete is for the athlete or a parent: a plain-language summary, at most five takeaways and the headline metrics, with every joint angle and the analysis sections left out. The web report, the PDF and every link minted from it apply the same tier. Links already issued keep their own tier.
practitioner- practitionercoach- coachathlete- athlete
Whose words the report is written in (#2867): coach or amateur (Bowler Mode on bowling). Saved on the report, from the same Sections panel as audience; until set, the report follows the client’s own setting. Links already issued keep their own.
coach- Coachamateur- Amateur
PATCH /api/solutions/runs/<id>/ — rename, (un)archive, and/or set the
switched-off report sections of a run (#1192, #1977). Every field is
optional so a rename (name), a restore (archived: false) and a section
edit (hidden_sections) share one endpoint; send whichever applies.
object
New display name; blank clears back to the computed default.
false restores an archived run to the active list; true archives it (same as DELETE without ?permanent).
Report sections to omit from the web report, the public share link and the PDF. One or more of ai, injury, graphs, phases, frames, profile, comparisons, trends, metric_notes. [] renders the full report. The metrics are the report’s floor and cannot be switched off — there is no key for them.
Who the report is written for. practitioner (the default) is the full report. coach leaves out the joint-angle graphs, the movement-profile radar and the frame-by-frame stills. athlete is for the athlete or a parent: a plain-language summary, at most five takeaways and the headline metrics, with every joint angle and the analysis sections left out. The web report, the PDF and every link minted from it apply the same tier. Links already issued keep their own tier.
practitioner- practitionercoach- coachathlete- athlete
Whose words the report is written in (#2867): coach or amateur (Bowler Mode on bowling). Saved on the report, from the same Sections panel as audience; until set, the report follows the client’s own setting. Links already issued keep their own.
coach- Coachamateur- Amateur
Responses
Section titled “Responses”One row in the reports manager (#1192). name is the raw stored name
(blank until the coach renames the run — the FE renders a localized
fallback when blank); client_name / session_count are display helpers.
sessions (the report’s constituent captures) is populated only when the
view seeds a session_refs context map — see session_refs_for_runs.
object
draft- Draftready- Readyfailed- Failed
A constituent session of a run (one entry of its bindings) — enough
for the reports card to render like a Sessions journal row: label + link it
(the expandable “attached sessions” list) plus its headline metrics chips
(#1192). Read-only projection; the run’s report is still assembled from the
sessions’ metrics on retrieve.
object
One headline metric on a candidate row — the picker shows the top few as chips (mirrors the Sessions journal row shape).
object
Whether a public link to this report still opens — not revoked, not past its expiry. The reports journal offers Revoke on exactly these rows, including a report shared in an earlier visit, so revoking never requires re-sharing first (which would re-stamp a fresh 30-day window).
Who the report is written for. practitioner (the default) is the full report. coach leaves out the joint-angle graphs, the movement-profile radar and the frame-by-frame stills. athlete is for the athlete or a parent: a plain-language summary, at most five takeaways and the headline metrics, with every joint angle and the analysis sections left out. The web report, the PDF and every link minted from it apply the same tier.
practitioner- practitionercoach- coachathlete- athlete
Example
{ "status": "draft", "audience": "practitioner"}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).
Example generated
{ "detail": "example"}