# Dashboard Running

## Compare Metrics (week-by-week)

> Return a single composite object that places several running metrics on the same ISO-week timeline.\
> \
> \*\*chart\_data\*\*\
> • \*\*x\_values\*\* - first day of each ISO-week in the interval.\
> • \*\*y\_values\*\* - dictionary keyed by metric (snake-case); each entry is a list\
> &#x20; whose items line up with \*\*x\_values\*\* (use \*null\* when a week has no data).\
> • \*\*max\_values\*\* - the interval-wide maximum for every requested metric (handy for axis scaling).\
> \
> \*\*weeks\*\*\
> Helper structure for tables/tool-tips: every bucket is broken out with its start/end dates and per-metric value(s).

```json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Enter your bearer token (Firebase auth) in the format: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Enter your API key in the header: API-KEY: <api_key>"}}},"paths":{"/dashboard-running/client-overview/compare-metrics/":{"get":{"operationId":"dashboard-running_client-overview_compare-metrics_list","summary":"Compare Metrics (week-by-week)","description":"Return a single composite object that places several running metrics on the same ISO-week timeline.\n\n**chart_data**\n• **x_values** - first day of each ISO-week in the interval.\n• **y_values** - dictionary keyed by metric (snake-case); each entry is a list\n  whose items line up with **x_values** (use *null* when a week has no data).\n• **max_values** - the interval-wide maximum for every requested metric (handy for axis scaling).\n\n**weeks**\nHelper structure for tables/tool-tips: every bucket is broken out with its start/end dates and per-metric value(s).","parameters":[{"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"name":"user_ids","in":"query","description":"One or more user ids (CSV list)","required":false},{"schema":{"type":"array","items":{"type":"string","enum":["All","Speed","Distance","Pace","Stride Length","Contact Time","Flight Time","Cadence","Power","Normalized Power","Contact Angle","Footstrike","Incline","Balance","Training Frequency"]}},"style":"form","explode":false,"name":"metrics","in":"query","description":"CSV list of metrics to compare or `All`","required":true},{"schema":{"type":"string","format":"date"},"name":"start_date","in":"query","description":"Interval start (YYYY-MM-DD)","required":true},{"schema":{"type":"string","format":"date"},"name":"end_date","in":"query","description":"Interval end (YYYY-MM-DD)","required":true}],"responses":{"200":{"description":"Metrics compared successfully.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad Request - invalid parameters"},"401":{"description":"Unauthorized - token missing or invalid"},"403":{"description":"Forbidden - admin access required"},"404":{"description":"Not Found - user or session data missing"},"500":{"description":"Internal Server Error"}},"tags":["dashboard-running"]}}}}
```

## Compare Sessions (flat series per metric)

> Return a \*\*per-session\*\* breakdown for one or more running metrics.\
> \
> \*  \*\*chart\_data\*\* - one entry per metric:  \
> &#x20;  • \*\*x\_values\*\* - ISO dates (\`YYYY-MM-DD\`) of every requested session in chronological order.  \
> &#x20;  • \*\*y\_values\*\* - the same length list of \*session-detail objects\* — each object carries the\
> &#x20;    metric \*\*value\*\* plus the session / user identifiers needed for tool-tips or tables.\
> \*  \*\*weeks\*\* - unchanged: sessions grouped into ISO-week buckets (handy for tables/tool-tips).\
> \*  \*\*sessions\*\* - quick lookup list of \`{ session\_id, session\_name }\` used to populate filters.

```json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Enter your bearer token (Firebase auth) in the format: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Enter your API key in the header: API-KEY: <api_key>"}}},"paths":{"/dashboard-running/client-overview/compare-sessions-individually/":{"get":{"operationId":"dashboard-running_client-overview_compare-sessions-individually_list","summary":"Compare Sessions (flat series per metric)","description":"Return a **per-session** breakdown for one or more running metrics.\n\n*  **chart_data** - one entry per metric:  \n   • **x_values** - ISO dates (`YYYY-MM-DD`) of every requested session in chronological order.  \n   • **y_values** - the same length list of *session-detail objects* — each object carries the\n     metric **value** plus the session / user identifiers needed for tool-tips or tables.\n*  **weeks** - unchanged: sessions grouped into ISO-week buckets (handy for tables/tool-tips).\n*  **sessions** - quick lookup list of `{ session_id, session_name }` used to populate filters.","parameters":[{"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"name":"session_ids","in":"query","description":"One or more session ids (CSV list)","required":true},{"schema":{"type":"array","items":{"type":"string","enum":["All","Speed","Distance","Pace","Stride Length","Contact Time","Flight Time","Cadence","Power","Normalized Power","Contact Angle","Footstrike","Incline","Balance","Training Frequency"]}},"style":"form","explode":false,"name":"metrics","in":"query","description":"One or more metrics (CSV) or `All`","required":true},{"schema":{"type":"string","format":"date"},"name":"start_date","in":"query","description":"Interval start (YYYY-MM-DD)","required":true},{"schema":{"type":"string","format":"date"},"name":"end_date","in":"query","description":"Interval end (YYYY-MM-DD)","required":true}],"responses":{"200":{"description":"Per-session metrics returned successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"chart_data":{"type":"object","additionalProperties":{"type":"object","properties":{"x_values":{"type":"array","items":{"type":"string"}},"y_values":{"type":"array","items":{"type":"object"}}}}},"weeks":{"type":"object","additionalProperties":{"type":"object"}},"sessions":{"type":"array","items":{"type":"object","properties":{"session_id":{"type":"string"},"session_name":{"type":"string"}}}}}}}}},"400":{"description":"Bad Request - invalid parameters"},"401":{"description":"Unauthorized - token missing or invalid"},"403":{"description":"Forbidden - admin access required"},"404":{"description":"Not Found - user or session data missing"},"500":{"description":"Internal Server Error"}},"tags":["dashboard-running"]}}}}
```

## Compare Sessions (per-session values in weekly buckets)

> Return a \*\*per-session\*\* breakdown for one or more running metrics.\
> \
> \*   The requested interval is split into ISO-weeks (listed in \`x\_values\`).\
> \*   \*\*chart\_data\*\* → one entry per metric.  For each week the \`y\_values\` array contains the \*\*session objects\*\* that fall into that bucket.\
> \*   \*\*weeks\*\* mirrors the same data for easy table / tooltip rendering.

```json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Enter your bearer token (Firebase auth) in the format: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Enter your API key in the header: API-KEY: <api_key>"}}},"paths":{"/dashboard-running/client-overview/compare-sessions/":{"get":{"operationId":"dashboard-running_client-overview_compare-sessions_list","summary":"Compare Sessions (per-session values in weekly buckets)","description":"Return a **per-session** breakdown for one or more running metrics.\n\n*   The requested interval is split into ISO-weeks (listed in `x_values`).\n*   **chart_data** → one entry per metric.  For each week the `y_values` array contains the **session objects** that fall into that bucket.\n*   **weeks** mirrors the same data for easy table / tooltip rendering.","parameters":[{"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"name":"session_ids","in":"query","description":"One or more session ids (CSV list)","required":true},{"schema":{"type":"array","items":{"type":"string","enum":["All","Speed","Distance","Pace","Stride Length","Contact Time","Flight Time","Cadence","Power","Normalized Power","Contact Angle","Footstrike","Incline","Balance","Training Frequency"]}},"style":"form","explode":false,"name":"metrics","in":"query","description":"One or more metrics (CSV) or `All`","required":true},{"schema":{"type":"string","format":"date"},"name":"start_date","in":"query","description":"Interval start (YYYY-MM-DD)","required":true},{"schema":{"type":"string","format":"date"},"name":"end_date","in":"query","description":"Interval end (YYYY-MM-DD)","required":true}],"responses":{"200":{"description":"Per-session metrics returned successfully.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad Request - invalid parameters"},"401":{"description":"Unauthorized - token missing or invalid"},"403":{"description":"Forbidden - admin access required"},"404":{"description":"Not Found - user or session data missing"},"500":{"description":"Internal Server Error"}},"tags":["dashboard-running"]}}}}
```

## Compare Users (interval-wide totals)

> Compare selected running metrics \*\*per user\*\* across the requested date range.  \
> The interval is split into calendar-week buckets.  \
> \
> \* \*\*chart\_data\*\* - for every metric, supplies the overall \*min / max / avg\* and a \*\*y\_values\*\* matrix \*(user x week)\* aligned to \*\*x\_values\*\* (ISO week start dates).  \
> \* \*\*weeks\*\* - lists, for every bucket, the users that contributed sessions and the underlying session details.  \
> \* \*\*users\*\* - an ordered roster mapping user IDs to display names.  \
> \
> \*   For numeric metrics each cell in \*y\_values\* is the user's weekly average.  \
> \*   \*\*Training Frequency\*\* cells are raw counts.  \
> \*   \*\*Footstrike\*\* cells are percentage breakdowns of strike patterns for that user & week.

```json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Enter your bearer token (Firebase auth) in the format: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Enter your API key in the header: API-KEY: <api_key>"}}},"paths":{"/dashboard-running/client-overview/compare-users/":{"get":{"operationId":"dashboard-running_client-overview_compare-users_list","summary":"Compare Users (interval-wide totals)","description":"Compare selected running metrics **per user** across the requested date range.  \nThe interval is split into calendar-week buckets.  \n\n* **chart_data** - for every metric, supplies the overall *min / max / avg* and a **y_values** matrix *(user x week)* aligned to **x_values** (ISO week start dates).  \n* **weeks** - lists, for every bucket, the users that contributed sessions and the underlying session details.  \n* **users** - an ordered roster mapping user IDs to display names.  \n\n*   For numeric metrics each cell in *y_values* is the user's weekly average.  \n*   **Training Frequency** cells are raw counts.  \n*   **Footstrike** cells are percentage breakdowns of strike patterns for that user & week.","parameters":[{"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"name":"user_ids","in":"query","description":"One or more user ids (CSV list)","required":false},{"schema":{"type":"array","items":{"type":"string","enum":["All","Speed","Distance","Pace","Stride Length","Contact Time","Flight Time","Cadence","Power","Normalized Power","Contact Angle","Footstrike","Incline","Balance","Training Frequency"]}},"style":"form","explode":false,"name":"metrics","in":"query","description":"CSV list of metrics to compare or `All`","required":true},{"schema":{"type":"string","format":"date"},"name":"start_date","in":"query","description":"Interval start (YYYY-MM-DD)","required":true},{"schema":{"type":"string","format":"date"},"name":"end_date","in":"query","description":"Interval end (YYYY-MM-DD)","required":true}],"responses":{"200":{"description":"Per-user weekly metric values returned successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"chart_data":{"type":"object"},"weeks":{"type":"object"},"users":{"type":"array","items":{"type":"object"}}}}}}},"400":{"description":"Bad Request - invalid parameters"},"401":{"description":"Unauthorized - token missing or invalid"},"403":{"description":"Forbidden - admin access required"},"404":{"description":"Not Found - user or data missing"},"500":{"description":"Internal Server Error"}},"tags":["dashboard-running"]}}}}
```

## Retrieve Extended Metric Data (weekly buckets)

> Return a detailed, week-by-week breakdown for \*\*one\*\* running metric.\
> \
> \*   The interval is split into ISO-weeks (see \`x\_values\`).\
> \*   \*\*chart\_data\*\* contains the global min / max / avg and an array of bucket averages in \`y\_values\`.\
> \*   \*\*weeks\*\* enumerates the sessions that form each bucket and exposes their raw metric values.\
> \
> Special cases:\
> • \*\*Training Frequency\*\* - raw weekly counts.\
> • \*\*Foot-strike\*\* - weekly percentage splits (categorical).\
> • All other metrics - numeric \*min / avg / max\* per session.

```json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Enter your bearer token (Firebase auth) in the format: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Enter your API key in the header: API-KEY: <api_key>"}}},"paths":{"/dashboard-running/client-overview/metric-extended/":{"get":{"operationId":"dashboard-running_client-overview_metric-extended_list","summary":"Retrieve Extended Metric Data (weekly buckets)","description":"Return a detailed, week-by-week breakdown for **one** running metric.\n\n*   The interval is split into ISO-weeks (see `x_values`).\n*   **chart_data** contains the global min / max / avg and an array of bucket averages in `y_values`.\n*   **weeks** enumerates the sessions that form each bucket and exposes their raw metric values.\n\nSpecial cases:\n• **Training Frequency** - raw weekly counts.\n• **Foot-strike** - weekly percentage splits (categorical).\n• All other metrics - numeric *min / avg / max* per session.","parameters":[{"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"name":"user_ids","in":"query","description":"One or more user ids (CSV list)","required":false},{"schema":{"type":"string","enum":["Speed","Distance","Pace","Stride Length","Contact Time","Flight Time","Cadence","Power","Normalized Power","Contact Angle","Footstrike","Incline","Balance","Training Frequency"]},"name":"metric","in":"query","description":"The metric to drill into","required":true},{"schema":{"type":"string","format":"date"},"name":"start_date","in":"query","description":"Interval start (YYYY-MM-DD)","required":true},{"schema":{"type":"string","format":"date"},"name":"end_date","in":"query","description":"Interval end (YYYY-MM-DD)","required":true}],"responses":{"200":{"description":"Extended metric data returned successfully.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad Request - invalid parameters.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Details of the invalid request.","type":"string"}}}}}},"401":{"description":"Unauthorized - token missing or invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Auth error message.","type":"string"}}}}}},"403":{"description":"Forbidden - admin access required.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Admin privileges required.","type":"string"}}}}}},"404":{"description":"Not Found - user or session missing / invalid plan.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Resource not found.","type":"string"}}}}}},"500":{"description":"Internal Server Error.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Server-side failure.","type":"string"}}}}}}},"tags":["dashboard-running"]}}}}
```

## Retrieve Dashboard Metrics (weekly buckets)

> Return aggregated running metrics for dashboard charts.  \
> The requested interval is split into \*\*calendar-week buckets\*\*.  \
> \
> The response has two top-level blocks:  \
> \* \*\*chart\_data\*\* - global stats and weekly values for every metric.  \
> \* \*\*weeks\*\*- per-week session lists (and their metric values).  \
> \
> \* \*\*Training Frequency\*\* is a simple count per week.  \
> \* \*\*Footstrike\*\* is a percentage breakdown for the whole interval.

```json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Enter your bearer token (Firebase auth) in the format: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Enter your API key in the header: API-KEY: <api_key>"}}},"paths":{"/dashboard-running/client-overview/overview":{"get":{"operationId":"dashboard-running_client-overview_overview_list","summary":"Retrieve Dashboard Metrics (weekly buckets)","description":"Return aggregated running metrics for dashboard charts.  \nThe requested interval is split into **calendar-week buckets**.  \n\nThe response has two top-level blocks:  \n* **chart_data** - global stats and weekly values for every metric.  \n* **weeks**- per-week session lists (and their metric values).  \n\n* **Training Frequency** is a simple count per week.  \n* **Footstrike** is a percentage breakdown for the whole interval.","parameters":[{"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"name":"user_ids","in":"query","description":"One or more user ids (CSV list)","required":false},{"schema":{"type":"array","items":{"type":"string","enum":["All","Speed","Distance","Pace","Stride Length","Contact Time","Flight Time","Cadence","Power","Normalized Power","Contact Angle","Footstrike","Incline","Balance","Training Frequency"]}},"style":"form","explode":false,"name":"metrics","in":"query","description":"One or more metrics (CSV) or `All`","required":true},{"schema":{"type":"string","format":"date"},"name":"start_date","in":"query","description":"Interval start (YYYY-MM-DD)","required":true},{"schema":{"type":"string","format":"date"},"name":"end_date","in":"query","description":"Interval end (YYYY-MM-DD)","required":true}],"responses":{"200":{"description":"Aggregated metrics returned successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"chart_data":{"type":"object","additionalProperties":{"type":"object"}},"weeks":{"type":"object","additionalProperties":{"type":"object"}}}}}}},"400":{"description":"Bad Request - invalid parameters.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Details of the invalid request.","type":"string"}}}}}},"401":{"description":"Unauthorized - token missing or invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Auth error message.","type":"string"}}}}}},"403":{"description":"Forbidden - admin access required.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Admin privileges required.","type":"string"}}}}}},"404":{"description":"Not Found - user or session missing / invalid plan.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Resource not found.","type":"string"}}}}}},"500":{"description":"Internal Server Error.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Server-side failure.","type":"string"}}}}}}},"tags":["dashboard-running"]}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.aikynetix.app/api-documentation/developer-resources-and-api-reference/api-reference/v.2/dashboard-running.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
