# Laufen

## Erstellt eine neue Video-Verarbeitungssitzung

> Dieser Endpunkt ermöglicht es einem \*\*Administrator\*\* (oder Sub-Admin), eine \*\*Videodatei\*\* zur Verarbeitung hochzuladen und eine neue "Sitzungs"-Ressource \*\*im Namen eines anderen Benutzers\*\* zu erstellen. Der Server gibt eine \`session\_id\` zurück, die zum Abfragen oder Abrufen der Sitzungsdetails/ergebnisse verwendet werden kann.\
> \### Anfragekörper (Multipart/Form-Data)\
> Folgende Felder müssen angegeben werden:\
> \- \*\*user\_id\*\* \*(string, erforderlich)\*: Die ID des Benutzers, für den diese Sitzung erstellt wird. - \*\*video\*\* \*(Datei, erforderlich)\*: Die zu verarbeitende Videodatei. - \*\*session\_name\*\* \*(string, optional)\*: Ein lesbarer Name/Titel für die Sitzung. - \*\*incline\_degree\*\* \*(string oder number, optional)\*: Numerischer Wert für den Neigungswinkel. - \*\*body\_joint\_angles\*\* \*(array\[string], optional)\*: Eine kommagetrennte Liste von Gelenknamen (z.B. 'elbow, knee, ankle'). Standardwert ist \['all'], falls nicht angegeben.\
> \### Antwortstruktur\
> Bei Erfolg (HTTP 200) ist die Antwort ein JSON-Objekt mit: - \*\*session\_id\*\* \*(string)\*: Eine eindeutige Kennung für die erstellte Sitzung. - \*\*title\*\* \*(string)\*: Der Sitzungstitel (Standardwert, falls \`session\_name\` nicht angegeben wurde).\
> \### Ablauf\
> 1\. \*\*POST\*\*-Anfrage mit multipart/form-data, die die erforderlichen Felder \`user\_id\` und \`video\` sowie optionale Felder enthält. 2. Gültiger API-KEY-Token im \`Authorization\`-Header. 3. Der Aufrufer benötigt Admin-Rechte, um eine Sitzung für einen anderen Benutzer zu erstellen. 4. Bei Erfolg antwortet der Server mit \`session\_id\` und \`title\`. 5. Bei einem Fehler (z.B. fehlende Felder, fehlende Berechtigungen) wird ein JSON-Objekt mit einem \`error\`-Schlüssel zurückgegeben.\
> \### Beispiel cURL: \`\`\`bash curl -X POST \\\
> &#x20;    -H 'Content-Type: multipart/form-data' \\\
> &#x20;    -H 'Authorization: API-KEY \<YOUR\_ADMIN\_TOKEN>' \\\
> &#x20;    -F 'user\_id=someUserId123' \\\
> &#x20;    -F 'video=@/path/to/video.mp4' \\\
> &#x20;    -F 'session\_name=Custom Session' \\\
> &#x20;    -F 'incline\_degree=5' \\\
> &#x20;    -F 'body\_joint\_angles=elbow, knee, ankle' \\\
> &#x20;    https\://\<backend-link>/running/management/sessions/\
> \`\`\`<br>

````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":"Geben Sie Ihren Bearer-Token (Firebase Auth) im Format ein: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Geben Sie Ihren API-Schlüssel im Header ein: API-KEY: <api_key>"}}},"paths":{"/running/sessions/":{"post":{"operationId":"running_sessions_create","summary":"Erstellt eine neue Video-Verarbeitungssitzung","description":"Dieser Endpunkt ermöglicht es einem **Administrator** (oder Sub-Admin), eine **Videodatei** zur Verarbeitung hochzuladen und eine neue \"Sitzungs\"-Ressource **im Namen eines anderen Benutzers** zu erstellen. Der Server gibt eine `session_id` zurück, die zum Abfragen oder Abrufen der Sitzungsdetails/ergebnisse verwendet werden kann.\n### Anfragekörper (Multipart/Form-Data)\nFolgende Felder müssen angegeben werden:\n- **user_id** *(string, erforderlich)*: Die ID des Benutzers, für den diese Sitzung erstellt wird. - **video** *(Datei, erforderlich)*: Die zu verarbeitende Videodatei. - **session_name** *(string, optional)*: Ein lesbarer Name/Titel für die Sitzung. - **incline_degree** *(string oder number, optional)*: Numerischer Wert für den Neigungswinkel. - **body_joint_angles** *(array[string], optional)*: Eine kommagetrennte Liste von Gelenknamen (z.B. 'elbow, knee, ankle'). Standardwert ist ['all'], falls nicht angegeben.\n### Antwortstruktur\nBei Erfolg (HTTP 200) ist die Antwort ein JSON-Objekt mit: - **session_id** *(string)*: Eine eindeutige Kennung für die erstellte Sitzung. - **title** *(string)*: Der Sitzungstitel (Standardwert, falls `session_name` nicht angegeben wurde).\n### Ablauf\n1. **POST**-Anfrage mit multipart/form-data, die die erforderlichen Felder `user_id` und `video` sowie optionale Felder enthält. 2. Gültiger API-KEY-Token im `Authorization`-Header. 3. Der Aufrufer benötigt Admin-Rechte, um eine Sitzung für einen anderen Benutzer zu erstellen. 4. Bei Erfolg antwortet der Server mit `session_id` und `title`. 5. Bei einem Fehler (z.B. fehlende Felder, fehlende Berechtigungen) wird ein JSON-Objekt mit einem `error`-Schlüssel zurückgegeben.\n### Beispiel cURL: ```bash curl -X POST \\\n     -H 'Content-Type: multipart/form-data' \\\n     -H 'Authorization: API-KEY <YOUR_ADMIN_TOKEN>' \\\n     -F 'user_id=someUserId123' \\\n     -F 'video=@/path/to/video.mp4' \\\n     -F 'session_name=Custom Session' \\\n     -F 'incline_degree=5' \\\n     -F 'body_joint_angles=elbow, knee, ankle' \\\n     https://<backend-link>/running/management/sessions/\n```\n","responses":{"200":{"description":"Video-Verarbeitungssitzung erfolgreich erstellt (HTTP 200).","content":{"application/json":{"schema":{"required":["session_id","title"],"type":"object","properties":{"session_id":{"description":"Die eindeutige Kennung für die erstellte Sitzung.","type":"string"},"title":{"description":"Der Sitzungstitel (Standardwert, falls nicht angegeben).","type":"string"}}}}}},"400":{"description":"Ungültige Anfrage - Möglicherweise aufgrund fehlender `user_id`, fehlender `video` oder ungültiger Formulardaten.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Fehlender oder ungültiger Zugriffstoken.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler aufgrund eines fehlenden oder ungültigen Tokens.","type":"string"}}}}}},"403":{"description":"Verboten - Der Benutzer hat keine Admin-Berechtigung, um Sitzungen für andere zu erstellen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler aufgrund unzureichender Berechtigungen.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Geschäftslogikprobleme oder Ressourcenbeschränkungen (z.B. Sitzungslimit).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, die das Problem beschreibt.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Unerwarteter Fehler auf dem Server.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung, die auf einen serverseitigen Fehler hinweist.","type":"string"}}}}}}},"tags":["running"],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"user_id":{"type":"string","description":"**Erforderlich.** Die ID des Benutzers, für den diese Sitzung erstellt wird (Formularfeld: Text)."},"video":{"type":"string","description":"**Erforderlich.** Die zu verarbeitende Videodatei (Formularfeldtyp: Datei)."},"session_name":{"type":"string","description":"**Optional.** Ein beschreibender Name für die Sitzung (Formularfeld: Text)."},"incline_degree":{"type":"string","description":"**Optional.** Ein numerischer String, der den Neigungswinkel angibt (Formularfeld: Text)."},"body_joint_angles":{"type":"array","description":"**Optional.** Eine kommagetrennte Liste von Gelenknamen. Verfügbare Werte: `ankle`, `knee`, `elbow`, `hip`, `shoulder`. Beispiel: `ankle,knee,hip`"}},"required":["user_id","video"]}}}}}}}}
````

## Ruft Details einer Laufsitzung ab

> Ruft detaillierte Informationen für eine spezifische Laufsitzung ab, die durch die \`session\_id\` identifiziert wird.\
> \### Pfadparameter - \*\*session\_id\*\* \*(string, erforderlich)\*: Die eindeutige Kennung der abzurufenden Sitzung.\
> \### Abfrageparameter - \*\*demo\*\* \*(boolean, optional)\*: Auf \`true\` setzen, um Demo-Laufsitzungsdaten anstelle echter Daten abzurufen.\
> \### Antwortstruktur Bei Erfolg (HTTP 200) ist die Antwort ein JSON-Objekt mit folgenden Feldern: - \*\*metrics\*\* \*(object)\*: Ein Wörterbuch mit Metriken-Arrays (z.B. Geschwindigkeit, Kadenz, Distanz). - \*\*angles\*\* \*(object)\*: Ein Wörterbuch mit Winkel-Arrays (z.B. lhip\_angle, rsho\_angle). - \*\*all\_timestamps\*\* \*(array\[number])\*: Eine Liste von Zeitstempeln (in Sekunden) für die Sitzungsdaten. - \*\*analyzed\_video\_url\*\* \*(string, URI)\*: Die URL des analysierten Videos (mit Keypoint-Overlay). - \*\*video\_url\*\* \*(string, URI)\*: Die URL des hochgeladenen Originalvideos. - \*\*segments\*\* \*(integer)\*: Die Anzahl der verarbeiteten Segmente. - \*\*created\_at\*\* \*(object)\*: Enthält das Erstellungsdatum und -zeit. - \*\*user\_name\*\* \*(string)\*: Der Name des mit der Sitzung verknüpften Benutzers. - \*\*activity\*\* \*(string)\*: Die Aktivitätsart (z.B. 'Running'). - \*\*title\*\* \*(string)\*: Der Titel der Sitzung. - \*\*calculated\_metrics\*\* \*(object)\*: Ein Wörterbuch mit berechneten Statistiken. - \*\*summary\*\* \*(string)\*: Eine optionale textuelle Zusammenfassung der Sitzung.\
> \### Fehlerbehandlung - \*\*400 Ungültige Anfrage\*\*: Ungültige Parameter (z.B. ungültige Admin-UID). - \*\*401 Nicht autorisiert\*\*: Fehlender oder ungültiger Zugriffstoken. - \*\*403 Verboten\*\*: Unzureichende Berechtigungen zum Zugriff auf die Sitzung. - \*\*404 Nicht gefunden\*\*: Die Sitzung existiert nicht oder ist für die angegebene Aktivität ungültig. - \*\*500 Interner Serverfehler\*\*: Ein unerwarteter serverseitiger Fehler.\
> \### Sicherheit Ein gültiger API-KEY-Token muss im \`Authorization\`-Header angegeben werden.<br>

```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":"Geben Sie Ihren Bearer-Token (Firebase Auth) im Format ein: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Geben Sie Ihren API-Schlüssel im Header ein: API-KEY: <api_key>"}}},"paths":{"/running/sessions/{session_id}/":{"get":{"operationId":"running_sessions_read","summary":"Ruft Details einer Laufsitzung ab","description":"Ruft detaillierte Informationen für eine spezifische Laufsitzung ab, die durch die `session_id` identifiziert wird.\n### Pfadparameter - **session_id** *(string, erforderlich)*: Die eindeutige Kennung der abzurufenden Sitzung.\n### Abfrageparameter - **demo** *(boolean, optional)*: Auf `true` setzen, um Demo-Laufsitzungsdaten anstelle echter Daten abzurufen.\n### Antwortstruktur Bei Erfolg (HTTP 200) ist die Antwort ein JSON-Objekt mit folgenden Feldern: - **metrics** *(object)*: Ein Wörterbuch mit Metriken-Arrays (z.B. Geschwindigkeit, Kadenz, Distanz). - **angles** *(object)*: Ein Wörterbuch mit Winkel-Arrays (z.B. lhip_angle, rsho_angle). - **all_timestamps** *(array[number])*: Eine Liste von Zeitstempeln (in Sekunden) für die Sitzungsdaten. - **analyzed_video_url** *(string, URI)*: Die URL des analysierten Videos (mit Keypoint-Overlay). - **video_url** *(string, URI)*: Die URL des hochgeladenen Originalvideos. - **segments** *(integer)*: Die Anzahl der verarbeiteten Segmente. - **created_at** *(object)*: Enthält das Erstellungsdatum und -zeit. - **user_name** *(string)*: Der Name des mit der Sitzung verknüpften Benutzers. - **activity** *(string)*: Die Aktivitätsart (z.B. 'Running'). - **title** *(string)*: Der Titel der Sitzung. - **calculated_metrics** *(object)*: Ein Wörterbuch mit berechneten Statistiken. - **summary** *(string)*: Eine optionale textuelle Zusammenfassung der Sitzung.\n### Fehlerbehandlung - **400 Ungültige Anfrage**: Ungültige Parameter (z.B. ungültige Admin-UID). - **401 Nicht autorisiert**: Fehlender oder ungültiger Zugriffstoken. - **403 Verboten**: Unzureichende Berechtigungen zum Zugriff auf die Sitzung. - **404 Nicht gefunden**: Die Sitzung existiert nicht oder ist für die angegebene Aktivität ungültig. - **500 Interner Serverfehler**: Ein unerwarteter serverseitiger Fehler.\n### Sicherheit Ein gültiger API-KEY-Token muss im `Authorization`-Header angegeben werden.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Die eindeutige Sitzungskennung.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Auf `true` setzen, um Demo-Laufsitzungsdaten anstelle echter Daten abzurufen.","required":false}],"responses":{"200":{"description":"Sitzungsdaten erfolgreich abgerufen.","content":{"application/json":{"schema":{"required":["metrics","angles","all_timestamps","activity"],"type":"object","properties":{"metrics":{"description":"Ein Wörterbuch mit Metriken-Arrays.","type":"object","additionalProperties":{"type":"number"}},"angles":{"description":"Ein Wörterbuch mit Winkel-Arrays.","type":"object","additionalProperties":{"type":"number"}},"all_timestamps":{"description":"Liste von Zeitstempeln, die mit der Sitzung verknüpft sind.","type":"array","items":{"type":"number"}},"analyzed_video_url":{"description":"Die öffentliche URL des analysierten Videos.","type":"string","format":"uri"},"video_url":{"description":"Die öffentliche URL des Originalvideos.","type":"string","format":"uri"},"segments":{"description":"Die Anzahl der verarbeiteten Segmente.","type":"integer"},"created_at":{"description":"Zeitstempel der Sitzungserstellung.","type":"object","properties":{"date":{"description":"Erstellungsdatum im Format TT/MM/JJJJ.","type":"string"},"time":{"description":"Erstellungszeit im Format HH:MM AM/PM.","type":"string"}}},"user_name":{"description":"Der Name des mit dieser Sitzung verknüpften Benutzers.","type":"string"},"activity":{"description":"Die Art der Aktivität (z.B. \"Running\").","type":"string"},"title":{"description":"Der Sitzungstitel.","type":"string"},"calculated_metrics":{"description":"Berechnete Metriken (Durchschnitt, Min, Max Werte) für die Sitzung.","type":"object","additionalProperties":{"type":"number"}},"summary":{"description":"Eine optionale Zusammenfassung der Sitzung.","type":"string"}}}}}},"400":{"description":"Ungültige Anfrage - Ungültige Parameter oder Admin-UID.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung, die die ungültige Anfrage erklärt.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Fehlender oder ungültiger Zugriffstoken.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass kein gültiger API-KEY-Token angegeben wurde.","type":"string"}}}}}},"403":{"description":"Verboten - Der Benutzer ist nicht berechtigt, auf diese Sitzung zuzugreifen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler aufgrund unzureichender Berechtigungen zum Zugriff auf die Sitzungsdaten.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Die angeforderte Sitzung existiert nicht oder die Aktivität ist nicht \"Running\".","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, die anzeigt, dass die Sitzung nicht gefunden wurde.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Ein unerwarteter Fehler ist auf dem Server aufgetreten.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung, die auf einen serverseitigen Fehler hinweist.","type":"string"}}}}}}},"tags":["running"]}}}}
```

## Lauf-Sitzungsdaten exportieren

> Ruft detaillierte Sitzungsdaten für den Export einer bestimmten Lauf-Sitzung ab, die durch die \`session\_id\` identifiziert wird.\
> \### Pfadparameter\
> \- \*\*session\_id\*\* \*(string, erforderlich)\*: Der eindeutige Identifikator der zu exportierenden Sitzung.\
> \### Abfrageparameter\
> \- \*\*demo\*\* \*(boolean, optional)\*: Auf \`true\` setzen, um die vorgefertigte Demo-Laufsitzung anstelle einer echten abzurufen.\
> \### Antwortstruktur (HTTP 200)\
> Die Antwort ist ein JSON-Objekt, das Folgendes enthält:\
> \- \*\*metrics\*\* \*(object)\*: Ein Wörterbuch, in dem jeder Schlüssel eine Metrik (z.B. 'speed', 'cadence') darstellt und sein Wert ein Zahlenarray ist.\
> \- \*\*keypoints\*\* \*(object)\*: Ein Wörterbuch, in dem jeder Schlüssel einen Keypoint (z.B. 'lknev', 'ltoev') darstellt und sein Wert ein Zahlenarray ist.\
> \- \*\*angles\*\* \*(object)\*: Ein Wörterbuch, in dem jeder Schlüssel einen Winkel (z.B. 'lelb\_angle', 'lhip\_angle') darstellt und sein Wert ein Zahlenarray ist.\
> \- \*\*all\_timestamps\*\* \*(array\[number])\*: Ein Array von Zeitstempeln (in Sekunden), die den Datenpunkten entsprechen.\
> \- \*\*contact\*\* \*(array\[boolean])\*: Ein Array von booleschen Werten, die den Kontaktstatus anzeigen.\
> \- \*\*activity\*\* \*(string)\*: Der Aktivitätstyp (z.B. 'Running').\
> \### Fehlerbehandlung\
> \- \*\*400 Bad Request\*\*: Die Anfrageparameter sind ungültig (z.B. eine ungültige Admin-UID).\
> \- \*\*401 Unauthorized\*\*: Der Zugriffstoken fehlt oder ist ungültig.\
> \- \*\*403 Forbidden\*\*: Der Benutzer hat nicht ausreichende Berechtigungen, um auf diese Sitzungsdaten zuzugreifen.\
> \- \*\*404 Not Found\*\*: Die angeforderte Sitzung existiert nicht oder ist für die Aktivität ungültig.\
> \- \*\*500 Internal Server Error\*\*: Ein unerwarteter Serverfehler ist aufgetreten.\
> \### Sicherheit\
> Ein gültiger API-KEY-Token muss im \`Authorization\`-Header bereitgestellt werden.

```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":"Geben Sie Ihren Bearer-Token (Firebase Auth) im Format ein: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Geben Sie Ihren API-Schlüssel im Header ein: API-KEY: <api_key>"}}},"paths":{"/running/sessions/{session_id}/export/":{"get":{"operationId":"running_sessions_export_list","summary":"Lauf-Sitzungsdaten exportieren","description":"Ruft detaillierte Sitzungsdaten für den Export einer bestimmten Lauf-Sitzung ab, die durch die `session_id` identifiziert wird.\n### Pfadparameter\n- **session_id** *(string, erforderlich)*: Der eindeutige Identifikator der zu exportierenden Sitzung.\n### Abfrageparameter\n- **demo** *(boolean, optional)*: Auf `true` setzen, um die vorgefertigte Demo-Laufsitzung anstelle einer echten abzurufen.\n### Antwortstruktur (HTTP 200)\nDie Antwort ist ein JSON-Objekt, das Folgendes enthält:\n- **metrics** *(object)*: Ein Wörterbuch, in dem jeder Schlüssel eine Metrik (z.B. 'speed', 'cadence') darstellt und sein Wert ein Zahlenarray ist.\n- **keypoints** *(object)*: Ein Wörterbuch, in dem jeder Schlüssel einen Keypoint (z.B. 'lknev', 'ltoev') darstellt und sein Wert ein Zahlenarray ist.\n- **angles** *(object)*: Ein Wörterbuch, in dem jeder Schlüssel einen Winkel (z.B. 'lelb_angle', 'lhip_angle') darstellt und sein Wert ein Zahlenarray ist.\n- **all_timestamps** *(array[number])*: Ein Array von Zeitstempeln (in Sekunden), die den Datenpunkten entsprechen.\n- **contact** *(array[boolean])*: Ein Array von booleschen Werten, die den Kontaktstatus anzeigen.\n- **activity** *(string)*: Der Aktivitätstyp (z.B. 'Running').\n### Fehlerbehandlung\n- **400 Bad Request**: Die Anfrageparameter sind ungültig (z.B. eine ungültige Admin-UID).\n- **401 Unauthorized**: Der Zugriffstoken fehlt oder ist ungültig.\n- **403 Forbidden**: Der Benutzer hat nicht ausreichende Berechtigungen, um auf diese Sitzungsdaten zuzugreifen.\n- **404 Not Found**: Die angeforderte Sitzung existiert nicht oder ist für die Aktivität ungültig.\n- **500 Internal Server Error**: Ein unerwarteter Serverfehler ist aufgetreten.\n### Sicherheit\nEin gültiger API-KEY-Token muss im `Authorization`-Header bereitgestellt werden.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Der eindeutige Sitzungsidentifikator.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Auf `true` setzen, um die vorgefertigte Demo-Laufsitzung anstelle einer echten abzurufen.","required":false}],"responses":{"200":{"description":"Sitzungsdaten erfolgreich exportiert.","content":{"application/json":{"schema":{"required":["metrics","keypoints","angles","all_timestamps","contact","activity"],"type":"object","properties":{"metrics":{"description":"Ein Wörterbuch von Metrik-Arrays (z.B. Geschwindigkeit, Kadenz usw.).","type":"object","additionalProperties":{"type":"number"}},"keypoints":{"description":"Ein Wörterbuch von Keypoint-Arrays.","type":"object","additionalProperties":{"type":"array","items":{"type":"number"}}},"angles":{"description":"Ein Wörterbuch von Winkel-Arrays.","type":"object","additionalProperties":{"type":"array","items":{"type":"number"}}},"all_timestamps":{"description":"Liste von Zeitstempeln (in Sekunden).","type":"array","items":{"type":"number"}},"contact":{"description":"Array, das den Kontaktstatus anzeigt (true/false).","type":"array","items":{"type":"boolean"}},"activity":{"description":"Der Aktivitätstyp (z.B. 'Running').","type":"string"}}}}}},"400":{"description":"Ungültige Anfrage - Die Anfrageparameter sind ungültig (z.B. ungültige Admin-UID).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Eine detaillierte Fehlermeldung, die die ungültige Anfrage erklärt.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Zugriffstoken fehlt oder ist ungültig.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass der Zugriffstoken fehlt oder ungültig ist.","type":"string"}}}}}},"403":{"description":"Verboten - Der Benutzer hat nicht ausreichende Berechtigungen, um auf diese Sitzungsdaten zuzugreifen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, die unzureichende Berechtigungen anzeigt.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Die angeforderte Sitzung existiert nicht oder die Aktivität ist ungültig.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, die anzeigt, dass die Sitzung nicht gefunden wurde.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Ein unerwarteter Fehler ist auf dem Server aufgetreten.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Eine detaillierte Fehlermeldung, die einen serverseitigen Fehler anzeigt.","type":"string"}}}}}}},"tags":["running"]}}}}
```

## Ruft Gesamtmetriken ab

> Berechnet und gibt die Durchschnittsmetriken für alle Laufsitzungen des Admin-Benutzers zurück, zusammen mit den detaillierten Metriken und dem Erstellungszeitstempel der letzten Sitzung.\
> \### Antwortstruktur (HTTP 200)\
> Die Antwort ist ein JSON-Objekt mit folgender Struktur: - \*\*avg\_metrics\*\* \*(object)\*: Enthält die Durchschnittswerte aller Sitzungen. - \*\*last\_session\_metrics\*\* \*(object)\*: Enthält detaillierte Metriken der letzten Sitzung. - \*\*last\_session\_created\_at\*\* \*(object)\*: Der Erstellungszeitstempel der letzten Sitzung.\
> \### Fehlerbehandlung - \*\*400 Ungültige Anfrage\*\*: Ungültige Parameter (z.B. ungültige Admin-UID). - \*\*401 Nicht autorisiert\*\*: Fehlender oder ungültiger Zugriffstoken. - \*\*403 Verboten\*\*: Unzureichende Berechtigungen zum Abrufen der Gesamtmetriken. - \*\*404 Nicht gefunden\*\*: Keine Sitzungen gefunden oder Metriken nicht verfügbar. - \*\*500 Interner Serverfehler\*\*: Unerwarteter Fehler auf dem Server.\
> \### Sicherheit Ein gültiger API-KEY-Token muss im \`Authorization\`-Header angegeben werden.<br>

```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":"Geben Sie Ihren Bearer-Token (Firebase Auth) im Format ein: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Geben Sie Ihren API-Schlüssel im Header ein: API-KEY: <api_key>"}}},"paths":{"/running/sessions/metrics/total/":{"get":{"operationId":"running_sessions_metrics_total_list","summary":"Ruft Gesamtmetriken ab","description":"Berechnet und gibt die Durchschnittsmetriken für alle Laufsitzungen des Admin-Benutzers zurück, zusammen mit den detaillierten Metriken und dem Erstellungszeitstempel der letzten Sitzung.\n### Antwortstruktur (HTTP 200)\nDie Antwort ist ein JSON-Objekt mit folgender Struktur: - **avg_metrics** *(object)*: Enthält die Durchschnittswerte aller Sitzungen. - **last_session_metrics** *(object)*: Enthält detaillierte Metriken der letzten Sitzung. - **last_session_created_at** *(object)*: Der Erstellungszeitstempel der letzten Sitzung.\n### Fehlerbehandlung - **400 Ungültige Anfrage**: Ungültige Parameter (z.B. ungültige Admin-UID). - **401 Nicht autorisiert**: Fehlender oder ungültiger Zugriffstoken. - **403 Verboten**: Unzureichende Berechtigungen zum Abrufen der Gesamtmetriken. - **404 Nicht gefunden**: Keine Sitzungen gefunden oder Metriken nicht verfügbar. - **500 Interner Serverfehler**: Unerwarteter Fehler auf dem Server.\n### Sicherheit Ein gültiger API-KEY-Token muss im `Authorization`-Header angegeben werden.\n","responses":{"200":{"description":"Gesamtmetriken erfolgreich abgerufen.","content":{"application/json":{"schema":{"required":["avg_metrics","last_session_metrics","last_session_created_at"],"type":"object","properties":{"avg_metrics":{"description":"Durchschnittsmetriken aller Sitzungen.","required":["avg_speed","avg_power","avg_cadence","avg_flight_time"],"type":"object","properties":{"avg_speed":{"description":"Durchschnittsgeschwindigkeit.","type":"number"},"avg_power":{"description":"Durchschnittsleistung.","type":"number"},"avg_cadence":{"description":"Durchschnittliche Kadenz.","type":"number"},"avg_flight_time":{"description":"Durchschnittliche Flugzeit.","type":"number"}}},"last_session_metrics":{"description":"Detaillierte Metriken der letzten Sitzung.","required":["speed","normalized_power","cadence","total_distance","power","stride_time","total_time","contact_time","contact_angle","incline","pace","stride_length","rbalance","flight_time","footstrike"],"type":"object","properties":{"speed":{"description":"Geschwindigkeitsmetriken.","required":["avg","min","max"],"type":"object","properties":{"avg":{"description":"Durchschnittsgeschwindigkeit.","type":"number"},"min":{"description":"Minimale Geschwindigkeit.","type":"number"},"max":{"description":"Maximale Geschwindigkeit.","type":"number"}}},"normalized_power":{"description":"Normalisierte Leistungsmetriken.","required":["avg","min","max"],"type":"object","properties":{"avg":{"description":"Durchschnittliche normalisierte Leistung.","type":"number"},"min":{"description":"Minimale normalisierte Leistung.","type":"number"},"max":{"description":"Maximale normalisierte Leistung.","type":"number"}}},"cadence":{"description":"Kadenzen.","required":["avg","min","max"],"type":"object","properties":{"avg":{"description":"Durchschnittliche Kadenz.","type":"number"},"min":{"description":"Minimale Kadenz.","type":"number"},"max":{"description":"Maximale Kadenz.","type":"number"}}},"total_distance":{"description":"Gesamtdistanz der Sitzung.","type":"number"},"power":{"description":"Leistungsmetriken.","required":["avg","min","max"],"type":"object","properties":{"avg":{"description":"Durchschnittliche Leistung.","type":"number"},"min":{"description":"Minimale Leistung.","type":"number"},"max":{"description":"Maximale Leistung.","type":"number"}}},"stride_time":{"description":"Schrittzeitmetriken.","required":["avg","min","max"],"type":"object","properties":{"avg":{"description":"Durchschnittliche Schrittzeit.","type":"number"},"min":{"description":"Minimale Schrittzeit.","type":"number"},"max":{"description":"Maximale Schrittzeit.","type":"number"}}},"total_time":{"description":"Gesamtzeit der Sitzung.","type":"number"},"contact_time":{"description":"Kontaktzeitmetriken.","required":["avg","min","max"],"type":"object","properties":{"avg":{"description":"Durchschnittliche Kontaktzeit.","type":"number"},"min":{"description":"Minimale Kontaktzeit.","type":"number"},"max":{"description":"Maximale Kontaktzeit.","type":"number"}}},"contact_angle":{"description":"Kontaktwinkelmetriken.","required":["avg","min","max"],"type":"object","properties":{"avg":{"description":"Durchschnittlicher Kontaktwinkel.","type":"number"},"min":{"description":"Minimaler Kontaktwinkel.","type":"number"},"max":{"description":"Maximaler Kontaktwinkel.","type":"number"}}},"incline":{"description":"Neigungsmetriken.","required":["avg","min","max"],"type":"object","properties":{"avg":{"description":"Durchschnittliche Neigung.","type":"number"},"min":{"description":"Minimale Neigung.","type":"number"},"max":{"description":"Maximale Neigung.","type":"number"}}},"pace":{"description":"Tempometriken.","required":["avg","min","max"],"type":"object","properties":{"avg":{"description":"Durchschnittliches Tempo.","type":"number"},"min":{"description":"Minimales Tempo.","type":"number"},"max":{"description":"Maximales Tempo.","type":"number"}}},"stride_length":{"description":"Schrittlängenmetriken.","required":["avg","min","max"],"type":"object","properties":{"avg":{"description":"Durchschnittliche Schrittlänge.","type":"number"},"min":{"description":"Minimale Schrittlänge.","type":"number"},"max":{"description":"Maximale Schrittlänge.","type":"number"}}},"rbalance":{"description":"Balancemetriken.","required":["avg","min","max"],"type":"object","properties":{"avg":{"description":"Durchschnittliche Balance.","type":"number"},"min":{"description":"Minimale Balance.","type":"number"},"max":{"description":"Maximale Balance.","type":"number"}}},"flight_time":{"description":"Flugzeitmetriken.","required":["avg","min","max"],"type":"object","properties":{"avg":{"description":"Durchschnittliche Flugzeit.","type":"number"},"min":{"description":"Minimale Flugzeit.","type":"number"},"max":{"description":"Maximale Flugzeit.","type":"number"}}},"footstrike":{"description":"Der Fußaufsatztyp (z.B. \"midfoot\").","type":"string"}}},"last_session_created_at":{"description":"Erstellungszeitstempel der letzten Sitzung.","required":["date","time"],"type":"object","properties":{"date":{"description":"Erstellungsdatum im Format TT/MM/JJJJ.","type":"string"},"time":{"description":"Erstellungszeit im Format HH:MM AM/PM.","type":"string"}}}}}}}},"400":{"description":"Ungültige Anfrage - Ungültige Parameter (z.B. ungültige Admin-UID).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung, die die ungültige Anfrage erklärt.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Fehlender oder ungültiger Zugriffstoken.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass kein gültiger API-KEY-Token angegeben wurde.","type":"string"}}}}}},"403":{"description":"Verboten - Der Benutzer hat keine ausreichenden Berechtigungen zum Abrufen der Gesamtmetriken.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler aufgrund unzureichender Berechtigungen.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Keine Sitzungen gefunden oder Metriken nicht verfügbar.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, die anzeigt, dass keine Sitzungen oder Metriken gefunden wurden.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Ein unerwarteter Fehler ist auf dem Server aufgetreten.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung, die auf einen serverseitigen Fehler hinweist.","type":"string"}}}}}}},"tags":["running"]}}}}
```

## Laufform-Analysebericht

> Ruft einen detaillierten Laufform-Analysebericht für eine bestimmte Sitzung ab. Der Endpunkt erfordert, dass der Benutzer einen gültigen Admin-Token und einen aktiven Abonnementplan (Pro, Premium, Enterprise oder Standard) hat.\
> \### Anfrage\
> \- \*\*Pfadparameter\*\*:\
> &#x20; \- \*\*session\_id\*\* \*(string, erforderlich)\*: Der eindeutige Identifikator der Sitzung, für die der Laufform-Analysebericht angefordert wird.\
> \
> \- \*\*Abfrageparameter\*\*:\
> &#x20; \- \*\*demo\*\* \*(boolean, optional)\*: Auf \`true\` setzen, um einen vorgefertigten Demo-Laufform-Analysebericht anstelle eines echten abzurufen.\
> \
> \### Antwortstruktur (HTTP 200)\
> Die Antwort ist ein JSON-Objekt, das Folgendes enthält:\
> \- \*\*metrics\*\* \*(object)\*: Schrittdurchschnittswerte wie \`speed\`, \`balance\`, \`cadence\`, \`contact\_angle\`, \`eversion\_velocity\`, \`knee\_flexion\`, \`posture\_angle\`, \`ankle\_angle\`, \`com\_oscillation\`, \`stride\_angle\`, \`mean\_h\`.\
> \- \*\*images\*\* \*(object)\*: Drei repräsentative Momentaufnahmen mit den Schlüsseln \`contact\_angle\`, \`push\_angle\`, \`knee\_ankle\`; jeder Wert ist eine öffentliche Bild-URL.\
> \- \*\*user\_info\*\* \*(object)\*: Informationen über den Benutzer, der die Sitzung eingereicht hat, einschließlich:\
> &#x20; \- \*\*age\*\* \*(integer)\*\
> &#x20; \- \*\*gender\*\* \*(string)\*\
> &#x20; \- \*\*height\*\* \*(number, cm)\*\
> &#x20; \- \*\*weight\*\* \*(number, kg)\*\
> &#x20; \- \*\*email\*\* \*(string, email)\*\
> &#x20; \- \*\*uid\*\*, \*\*display\_name\*\*, \*\*admin\_name\*\*, \*\*last\_session\*\*, \*\*phone\*\*, \*\*brand\*\*, \*\*shoeModel\*\*, \*\*shoeSize\*\*, \*\*leg\_length\*\*, \*\*ycom\*\* \*(verschiedene Typen)\*\
> \
> \- \*\*form\_comments\*\* \*(object, optional)\*: GenAI-Empfehlungen für die Blöcke \`contact\_angle\`, \`hip\_extension\_at\_foot\_takeoff\`, \`foot\_contact\_angle\_and\_torso\_lean\`.\
> \- \*\*date\*\* \*(string)\*: Das Datum, an dem der Bericht im Format TT/MM/JJJJ generiert wurde.\
> \### Fehlerbehandlung\
> \- \*\*400 Bad Request\*\*: Ungültiger Token oder Parameter.\
> \- \*\*401 Unauthorized\*\*: Token fehlt oder ist ungültig.\
> \- \*\*403 Forbidden\*\*: Admin-Zugriff ist erforderlich.\
> \- \*\*404 Not Found\*\*: Die Sitzung wurde nicht gefunden oder der Benutzer hat keinen gültigen Zahlungsplan.\
> \- \*\*500 Internal Server Error\*\*: Ein unerwarteter Fehler ist auf dem Server aufgetreten.\
> \### Sicherheit\
> Ein gültiger API-KEY-Token muss im \`Authorization\`-Header bereitgestellt werden.

```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":"Geben Sie Ihren Bearer-Token (Firebase Auth) im Format ein: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Geben Sie Ihren API-Schlüssel im Header ein: API-KEY: <api_key>"}}},"paths":{"/running/sessions/{session_id}/form-analysis/":{"post":{"operationId":"running_sessions_form-analysis_create","summary":"Laufform-Analysebericht","description":"Ruft einen detaillierten Laufform-Analysebericht für eine bestimmte Sitzung ab. Der Endpunkt erfordert, dass der Benutzer einen gültigen Admin-Token und einen aktiven Abonnementplan (Pro, Premium, Enterprise oder Standard) hat.\n### Anfrage\n- **Pfadparameter**:\n  - **session_id** *(string, erforderlich)*: Der eindeutige Identifikator der Sitzung, für die der Laufform-Analysebericht angefordert wird.\n\n- **Abfrageparameter**:\n  - **demo** *(boolean, optional)*: Auf `true` setzen, um einen vorgefertigten Demo-Laufform-Analysebericht anstelle eines echten abzurufen.\n\n### Antwortstruktur (HTTP 200)\nDie Antwort ist ein JSON-Objekt, das Folgendes enthält:\n- **metrics** *(object)*: Schrittdurchschnittswerte wie `speed`, `balance`, `cadence`, `contact_angle`, `eversion_velocity`, `knee_flexion`, `posture_angle`, `ankle_angle`, `com_oscillation`, `stride_angle`, `mean_h`.\n- **images** *(object)*: Drei repräsentative Momentaufnahmen mit den Schlüsseln `contact_angle`, `push_angle`, `knee_ankle`; jeder Wert ist eine öffentliche Bild-URL.\n- **user_info** *(object)*: Informationen über den Benutzer, der die Sitzung eingereicht hat, einschließlich:\n  - **age** *(integer)*\n  - **gender** *(string)*\n  - **height** *(number, cm)*\n  - **weight** *(number, kg)*\n  - **email** *(string, email)*\n  - **uid**, **display_name**, **admin_name**, **last_session**, **phone**, **brand**, **shoeModel**, **shoeSize**, **leg_length**, **ycom** *(verschiedene Typen)*\n\n- **form_comments** *(object, optional)*: GenAI-Empfehlungen für die Blöcke `contact_angle`, `hip_extension_at_foot_takeoff`, `foot_contact_angle_and_torso_lean`.\n- **date** *(string)*: Das Datum, an dem der Bericht im Format TT/MM/JJJJ generiert wurde.\n### Fehlerbehandlung\n- **400 Bad Request**: Ungültiger Token oder Parameter.\n- **401 Unauthorized**: Token fehlt oder ist ungültig.\n- **403 Forbidden**: Admin-Zugriff ist erforderlich.\n- **404 Not Found**: Die Sitzung wurde nicht gefunden oder der Benutzer hat keinen gültigen Zahlungsplan.\n- **500 Internal Server Error**: Ein unerwarteter Fehler ist auf dem Server aufgetreten.\n### Sicherheit\nEin gültiger API-KEY-Token muss im `Authorization`-Header bereitgestellt werden.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Der eindeutige Identifikator der Sitzung, für die der Laufform-Analysebericht angefordert wird.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Auf `true` setzen, um einen vorgefertigten Demo-Laufform-Analysebericht anstelle eines echten abzurufen.","required":false}],"responses":{"200":{"description":"Laufform-Analysebericht erfolgreich abgerufen.","content":{"application/json":{"schema":{"required":["metrics","images","user_info","date"],"type":"object","properties":{"metrics":{"description":"Schrittdurchschnittsmetriken.","required":["speed","balance","cadence","contact_angle","eversion_velocity","knee_flexion","posture_angle","ankle_angle","com_oscillation","stride_angle","mean_h"],"type":"object","properties":{"speed":{"type":"number"},"balance":{"type":"number"},"cadence":{"type":"number"},"contact_angle":{"type":"number"},"eversion_velocity":{"type":"number"},"knee_flexion":{"type":"number"},"posture_angle":{"type":"number"},"ankle_angle":{"type":"number"},"com_oscillation":{"type":"number"},"stride_angle":{"type":"number"},"mean_h":{"type":"number"}}},"images":{"description":"Drei repräsentative Bild-URLs.","type":"object","additionalProperties":{"type":"string","format":"uri"}},"user_info":{"description":"Benutzerinformationen, die mit der Sitzung verknüpft sind.","required":["age","height","weight","email","uid"],"type":"object","properties":{"age":{"type":"integer"},"gender":{"type":"string"},"height":{"type":"number"},"weight":{"type":"number"},"email":{"type":"string","format":"email"},"uid":{"type":"string"},"display_name":{"type":"string"},"admin_name":{"type":"string"},"last_session":{"type":"string"},"phone":{"type":"string"},"brand":{"type":"string"},"shoeModel":{"type":"string"},"shoeSize":{"type":"integer"},"leg_length":{"type":"number"},"ycom":{"type":"number"}}},"form_comments":{"description":"(Optional) Blockebenen-Empfehlungen.","type":"object","additionalProperties":{"type":"string"}},"date":{"description":"Berichtsdatum im Format TT/MM/JJJJ.","type":"string"}}}}}},"400":{"description":"Ungültige Anfrage - Ungültiger Token oder Parameter.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Eine detaillierte Fehlermeldung, die die ungültige Anfrage beschreibt.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Token ist ungültig oder abgelaufen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass der Token fehlt oder ungültig ist.","type":"string"}}}}}},"403":{"description":"Verboten - Admin-Zugriff ist erforderlich.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass Admin-Berechtigungen erforderlich sind.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Sitzung nicht gefunden oder Benutzer hat keinen gültigen Zahlungsplan.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, die anzeigt, dass die Sitzung nicht gefunden wurde oder der Zahlungsplan ungültig ist.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Ein unerwarteter Fehler ist aufgetreten.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Eine detaillierte Fehlermeldung, die einen serverseitigen Fehler anzeigt.","type":"string"}}}}}}},"tags":["running"]}}}}
```

## Form-Analyse-Kommentar-Threads erstellen

> Generiert GenAI-Threads, die personalisierte Kommentare für jeden Laufform-Block (Kontaktwinkel, Hüftstreckung beim Fußabstoß, Fußkontaktwinkel & Oberkörperneigung) \*\*plus\*\* eine allgemeine Empfehlung erstellen. Gibt eine Zuordnung von Block-Schlüsseln zu Thread-IDs zurück.\
> \### Anfrage\
> \- \*\*session\_id\*\* (Pfadparameter, erforderlich): Die ID der Laufsitzung, für die Kommentar-Threads generiert werden sollen.\
> \### Antwort (201)\
> Ein JSON-Objekt, das jeden Formblock-Schlüssel der entsprechenden GenAI-Thread-ID zuordnet:\
> \- \*\*contact\_angle\*\*: Thread-ID für den Kontaktwinkel-Block.\
> \- \*\*push\_angle\*\*: Thread-ID für den Schubwinkel-Block.\
> \- \*\*knee\_ankle\*\*: Thread-ID für den Knie-Knöchel-Block.\
> \- \*\*general\_form\_recommendation\*\*: Thread-ID für die allgemeine Formempfehlung.\
> \### Fehlerbehandlung\
> \- \*\*403 Forbidden\*\*: Benutzer hat keinen gültigen Zahlungsplan.\
> \- \*\*404 Not Found\*\*: Sitzung nicht gefunden oder Abruf fehlgeschlagen.\
> \- \*\*500 Internal Server Error\*\*: Unerwarteter Serverfehler.\
> \### Sicherheit\
> Erfordert einen gültigen API-KEY-Token oder API-Schlüssel in den Anfrage-Headern.

```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":"Geben Sie Ihren Bearer-Token (Firebase Auth) im Format ein: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Geben Sie Ihren API-Schlüssel im Header ein: API-KEY: <api_key>"}}},"paths":{"/running/sessions/{session_id}/form-recommendations/":{"post":{"operationId":"running_sessions_form-recommendations_create","summary":"Form-Analyse-Kommentar-Threads erstellen","description":"Generiert GenAI-Threads, die personalisierte Kommentare für jeden Laufform-Block (Kontaktwinkel, Hüftstreckung beim Fußabstoß, Fußkontaktwinkel & Oberkörperneigung) **plus** eine allgemeine Empfehlung erstellen. Gibt eine Zuordnung von Block-Schlüsseln zu Thread-IDs zurück.\n### Anfrage\n- **session_id** (Pfadparameter, erforderlich): Die ID der Laufsitzung, für die Kommentar-Threads generiert werden sollen.\n### Antwort (201)\nEin JSON-Objekt, das jeden Formblock-Schlüssel der entsprechenden GenAI-Thread-ID zuordnet:\n- **contact_angle**: Thread-ID für den Kontaktwinkel-Block.\n- **push_angle**: Thread-ID für den Schubwinkel-Block.\n- **knee_ankle**: Thread-ID für den Knie-Knöchel-Block.\n- **general_form_recommendation**: Thread-ID für die allgemeine Formempfehlung.\n### Fehlerbehandlung\n- **403 Forbidden**: Benutzer hat keinen gültigen Zahlungsplan.\n- **404 Not Found**: Sitzung nicht gefunden oder Abruf fehlgeschlagen.\n- **500 Internal Server Error**: Unerwarteter Serverfehler.\n### Sicherheit\nErfordert einen gültigen API-KEY-Token oder API-Schlüssel in den Anfrage-Headern.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Ziel-Sitzungs-ID","required":true}],"responses":{"201":{"description":"Threads erfolgreich erstellt","content":{"application/json":{"schema":{"description":"Zuordnung von Formblock-Schlüsseln zu GenAI-Thread-IDs.","required":["contact_angle","push_angle","knee_ankle","general_form_recommendation"],"type":"object","properties":{"contact_angle":{"description":"Thread-ID für Kontaktwinkel-Block.","type":"string"},"push_angle":{"description":"Thread-ID für Schubwinkel-Block.","type":"string"},"knee_ankle":{"description":"Thread-ID für Knie-Knöchel-Block.","type":"string"},"general_form_recommendation":{"description":"Thread-ID für allgemeine Formempfehlung.","type":"string"}}}}}},"403":{"description":"Benutzer hat keinen gültigen Zahlungsplan","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"404":{"description":"Sitzung nicht gefunden oder anderer Abruf fehlgeschlagen","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"500":{"description":"Unerwarteter Serverfehler","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"tags":["running"]}}}}
```

## Ganganalyse-Bericht

> Ruft einen detaillierten Ganganalyse-Bericht für eine bestimmte Sitzung ab. Der Endpunkt erfordert, dass der Benutzer über ein gültiges Admin-Token und einen aktiven Abonnementplan (Pro, Premium, Enterprise oder Standard) verfügt.\
> \### Anfrage\
> \- \*\*Pfadparameter\*\*:\
> &#x20; \- \*\*session\_id\*\* \*(string, erforderlich)\*: Die eindeutige Kennung der Sitzung, für die der Ganganalyse-Bericht angefordert wird.\
> \
> \- \*\*Abfrageparameter\*\*:\
> &#x20; \- \*\*demo\*\* \*(boolean, optional)\*: Auf \`true\` setzen, um einen vorgefertigten Demo-Ganganalyse-Bericht anstelle eines echten abzurufen.\
> \
> \### Antwortstruktur (HTTP 200)\
> Die Antwort ist ein JSON-Objekt mit folgenden Inhalten:\
> \- \*\*left\*\* \*(object)\* und \*\*right\*\* \*(object)\*: Jede Seite enthält Gang- analysedaten mit folgenden Feldern:\
> &#x20; \- \*\*peak\_time\*\* \*(number)\*: Der ermittelte Spitzenzeitwert in der Ganganalyse.\
> &#x20; \- \*\*initiator\*\* \*(string)\*: Gibt an, welche Seite den Gangzyklus initiiert hat.\
> &#x20; \- \*\*phases\*\* \*(object)\*: Ein Objekt mit benannten Phasen (z.B. \`flight\`, \`takeoff\`, \`mid\_stance\`, \`strike\`, \`new\_strike\`), wobei jede Phase enthält:\
> &#x20;   \- \*\*video\_frame\*\* \*(integer)\*: Der entsprechende Videobild.\
> &#x20;   \- \*\*graph\_phase\*\* \*(integer)\*: Der Phasenwert für Diagramme.\
> &#x20;   \- \*\*video\_phase\*\* \*(integer)\*: Der Phasenwert in der Videotimeline.\
> &#x20;   \- \*\*image\_url\*\* \*(string, URI)\*: Öffentliche Bild-URL für den Phasen-Snapshot.\
> &#x20; \- \*\*angles\*\* \*(object)\*: Winkelmessungen für Gelenke wie \`posture\_angle\`, \`lhip\_angle\` usw. Jede enthält:\
> &#x20;   \- \*\*current\*\* \*(array\[number])\*: Aktuelle Winkelwerte des Frames.\
> &#x20;   \- \*\*next\*\* \*(array\[number])\*: Nächste vorhergesagte Werte.\
> &#x20;   \- \*\*std\_dev\*\* \*(array\[number])\*: Standardabweichungswerte.\
> &#x20; \- \*\*graph\_timestamps\*\* \*(array\[number])\*: Zeitstempel (ms), die mit den Diagrammdaten abgestimmt sind.\
> \
> \- \*\*user\_info\*\* \*(object)\*: Informationen über den Benutzer, der die Sitzung übermittelt hat, einschließlich:\
> &#x20; \- \*\*age\*\* \*(integer)\*\
> &#x20; \- \*\*gender\*\* \*(string)\*\
> &#x20; \- \*\*height\*\* \*(number, cm)\*\
> &#x20; \- \*\*weight\*\* \*(number, kg)\*\
> &#x20; \- \*\*email\*\* \*(string, email)\*\
> &#x20; \- \*\*uid\*\*, \*\*display\_name\*\*, \*\*admin\_name\*\*, \*\*last\_session\*\*, \*\*session\_count\*\*, \*\*phone\*\*, \*\*brand\*\*, \*\*shoeModel\*\*, \*\*shoeSize\*\*, \*\*leg\_length\*\*, \*\*ycom\*\* \*(verschiedene Typen)\*\
> \
> \- \*\*report\_comments\*\* \*(object, optional)\*: Vorschläge oder Hinweise für Winkel wie \`right\_posture\_angle\`, \`left\_knee\_angle\` usw.\
> \- \*\*date\*\* \*(string)\*: Das Datum der Berichterstellung im Format TT/MM/JJJJ.\
> \### Fehlerbehandlung\
> \- \*\*400 Bad Request\*\*: Ungültiges Token oder ungültige Parameter.\
> \- \*\*401 Unauthorized\*\*: Token fehlt oder ist ungültig.\
> \- \*\*403 Forbidden\*\*: Admin-Zugriff erforderlich.\
> \- \*\*404 Not Found\*\*: Die Sitzung wurde nicht gefunden oder der Benutzer hat keinen gültigen Zahlungsplan.\
> \- \*\*500 Internal Server Error\*\*: Ein unerwarteter Fehler ist auf dem Server aufgetreten.\
> \### Sicherheit\
> Ein gültiger API-KEY-Token muss im \`Authorization\`-Header bereitgestellt werden.

```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":"Geben Sie Ihren Bearer-Token (Firebase Auth) im Format ein: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Geben Sie Ihren API-Schlüssel im Header ein: API-KEY: <api_key>"}}},"paths":{"/running/sessions/{session_id}/gait-analysis/":{"post":{"operationId":"running_sessions_gait-analysis_create","summary":"Ganganalyse-Bericht","description":"Ruft einen detaillierten Ganganalyse-Bericht für eine bestimmte Sitzung ab. Der Endpunkt erfordert, dass der Benutzer über ein gültiges Admin-Token und einen aktiven Abonnementplan (Pro, Premium, Enterprise oder Standard) verfügt.\n### Anfrage\n- **Pfadparameter**:\n  - **session_id** *(string, erforderlich)*: Die eindeutige Kennung der Sitzung, für die der Ganganalyse-Bericht angefordert wird.\n\n- **Abfrageparameter**:\n  - **demo** *(boolean, optional)*: Auf `true` setzen, um einen vorgefertigten Demo-Ganganalyse-Bericht anstelle eines echten abzurufen.\n\n### Antwortstruktur (HTTP 200)\nDie Antwort ist ein JSON-Objekt mit folgenden Inhalten:\n- **left** *(object)* und **right** *(object)*: Jede Seite enthält Gang- analysedaten mit folgenden Feldern:\n  - **peak_time** *(number)*: Der ermittelte Spitzenzeitwert in der Ganganalyse.\n  - **initiator** *(string)*: Gibt an, welche Seite den Gangzyklus initiiert hat.\n  - **phases** *(object)*: Ein Objekt mit benannten Phasen (z.B. `flight`, `takeoff`, `mid_stance`, `strike`, `new_strike`), wobei jede Phase enthält:\n    - **video_frame** *(integer)*: Der entsprechende Videobild.\n    - **graph_phase** *(integer)*: Der Phasenwert für Diagramme.\n    - **video_phase** *(integer)*: Der Phasenwert in der Videotimeline.\n    - **image_url** *(string, URI)*: Öffentliche Bild-URL für den Phasen-Snapshot.\n  - **angles** *(object)*: Winkelmessungen für Gelenke wie `posture_angle`, `lhip_angle` usw. Jede enthält:\n    - **current** *(array[number])*: Aktuelle Winkelwerte des Frames.\n    - **next** *(array[number])*: Nächste vorhergesagte Werte.\n    - **std_dev** *(array[number])*: Standardabweichungswerte.\n  - **graph_timestamps** *(array[number])*: Zeitstempel (ms), die mit den Diagrammdaten abgestimmt sind.\n\n- **user_info** *(object)*: Informationen über den Benutzer, der die Sitzung übermittelt hat, einschließlich:\n  - **age** *(integer)*\n  - **gender** *(string)*\n  - **height** *(number, cm)*\n  - **weight** *(number, kg)*\n  - **email** *(string, email)*\n  - **uid**, **display_name**, **admin_name**, **last_session**, **session_count**, **phone**, **brand**, **shoeModel**, **shoeSize**, **leg_length**, **ycom** *(verschiedene Typen)*\n\n- **report_comments** *(object, optional)*: Vorschläge oder Hinweise für Winkel wie `right_posture_angle`, `left_knee_angle` usw.\n- **date** *(string)*: Das Datum der Berichterstellung im Format TT/MM/JJJJ.\n### Fehlerbehandlung\n- **400 Bad Request**: Ungültiges Token oder ungültige Parameter.\n- **401 Unauthorized**: Token fehlt oder ist ungültig.\n- **403 Forbidden**: Admin-Zugriff erforderlich.\n- **404 Not Found**: Die Sitzung wurde nicht gefunden oder der Benutzer hat keinen gültigen Zahlungsplan.\n- **500 Internal Server Error**: Ein unerwarteter Fehler ist auf dem Server aufgetreten.\n### Sicherheit\nEin gültiger API-KEY-Token muss im `Authorization`-Header bereitgestellt werden.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Die eindeutige Kennung der Sitzung, für die der Ganganalyse- Bericht angefordert wird.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Auf `true` setzen, um einen vorgefertigten Demo-Ganganalyse-Bericht anstelle eines echten abzurufen.","required":false}],"responses":{"200":{"description":"Ganganalyse-Bericht erfolgreich abgerufen.","content":{"application/json":{"schema":{"required":["left","right","user_info","date"],"type":"object","properties":{"left":{"description":"Ganganalysedaten für die linke Seite.","required":["peak_time","phases","initiator","angles","graph_timestamps"],"type":"object","properties":{"peak_time":{"type":"number"},"phases":{"description":"Phasen des Gangzyklus mit Video- und Diagrammdaten.","type":"object","properties":{"flight":{"required":["video_frame","graph_phase","video_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"video_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"takeoff":{"required":["video_frame","graph_phase","video_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"video_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"mid_stance":{"required":["video_frame","graph_phase","video_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"video_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"new_strike":{"required":["video_frame","graph_phase","video_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"video_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"strike":{"required":["video_frame","graph_phase","video_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"video_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}}}},"initiator":{"type":"string"},"angles":{"type":"object"},"graph_timestamps":{"type":"array","items":{"type":"number"}}}},"right":{"description":"Ganganalysedaten für die rechte Seite.","required":["peak_time","phases","initiator","angles","graph_timestamps"],"type":"object","properties":{"peak_time":{"type":"number"},"phases":{"description":"Phasen des Gangzyklus mit Video- und Diagrammdaten.","type":"object","properties":{"flight":{"required":["video_frame","graph_phase","video_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"video_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"takeoff":{"required":["video_frame","graph_phase","video_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"video_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"mid_stance":{"required":["video_frame","graph_phase","video_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"video_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"new_strike":{"required":["video_frame","graph_phase","video_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"video_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"strike":{"required":["video_frame","graph_phase","video_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"video_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}}}},"initiator":{"type":"string"},"angles":{"type":"object"},"graph_timestamps":{"type":"array","items":{"type":"number"}}}},"user_info":{"description":"Benutzerinformationen, die mit der Sitzung verknüpft sind.","required":["age","height","weight","email","uid"],"type":"object","properties":{"age":{"type":"integer"},"gender":{"type":"string"},"height":{"type":"number"},"weight":{"type":"number"},"email":{"type":"string","format":"email"},"uid":{"type":"string"},"display_name":{"type":"string"},"admin_name":{"type":"string"},"last_session":{"type":"string"},"session_count":{"type":"number"},"phone":{"type":"string"},"brand":{"type":"string"},"shoeModel":{"type":"string"},"shoeSize":{"type":"integer"},"leg_length":{"type":"number"},"ycom":{"type":"number"}}},"report_comments":{"description":"(Optional) Empfehlungen für Gelenkwinkel.","type":"object"},"date":{"description":"Das Datum des Ganganalyse-Berichts im Format TT/MM/JJJJ.","type":"string"}}}}}},"400":{"description":"Ungültige Anfrage - Ungültiges Token oder Parameter.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Eine detaillierte Fehlermeldung, die die ungültige Anfrage beschreibt.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Token ist ungültig oder abgelaufen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass das Token fehlt oder ungültig ist.","type":"string"}}}}}},"403":{"description":"Verboten - Admin-Zugriff erforderlich.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass Admin-Rechte erforderlich sind.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Sitzung nicht gefunden oder Benutzer hat keinen gültigen Zahlungsplan.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, die anzeigt, dass die Sitzung nicht gefunden wurde oder der Zahlungsplan ungültig ist.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Ein unerwarteter Fehler ist aufgetreten.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Eine detaillierte Fehlermeldung, die auf einen serverseitigen Fehler hinweist.","type":"string"}}}}}}},"tags":["running"]}}}}
```

## Erstellt Empfehlungs-Threads für Ganganalyse

> \### Erstellt Empfehlungs-Threads für Ganganalyse\
> Dieser Endpunkt generiert personalisierte Empfehlungs-Threads für eine bestimmte Sitzung basierend auf der Laufganganalyse des Benutzers. Jeder Thread bietet biomechanische Einblicke, Haltungstipps und Trainingsanleitungen für verschiedene Gelenkwinkel.\
> \*\*Verwendungsbeispiel:\*\*\
> Senden Sie eine \`POST\`-Anfrage an \`/running/sessions/{session\_id}/recommendation/\`, wobei \`{session\_id}\` die eindeutige Kennung der Sitzung ist.\
> \*\*Parameter:\*\*\
> \- \`session\_id\` \*(string, erforderlich)\*: Die eindeutige ID der Sitzung, für die Threads generiert werden sollen.\
> \*\*Antwortstruktur (HTTP 201):\*\*\
> Gibt ein JSON-Objekt zurück, das jede Gangwinkelmetrik einer Thread-ID zuordnet, einschließlich linker und rechter Seite:\
> \- \*\*left\_posture\_angle\*\*, \*\*left\_hip\_angle\*\*, \*\*left\_knee\_angle\*\*, \*\*left\_ankle\_angle\*\*\
> \- \*\*right\_posture\_angle\*\*, \*\*right\_hip\_angle\*\*, \*\*right\_knee\_angle\*\*, \*\*right\_ankle\_angle\*\*\
> \*\*Hinweise:\*\*\
> \- Die Sitzung muss gültig sein und einem Ganganalyse-Bericht entsprechen.\
> \- Erfordert einen aktiven Zahlungsplan (Pro, Premium, Enterprise oder Standard).

```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":"Geben Sie Ihren Bearer-Token (Firebase Auth) im Format ein: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Geben Sie Ihren API-Schlüssel im Header ein: API-KEY: <api_key>"}}},"paths":{"/running/sessions/{session_id}/recommendation/":{"post":{"operationId":"running_sessions_recommendation_create","summary":"Erstellt Empfehlungs-Threads für Ganganalyse","description":"### Erstellt Empfehlungs-Threads für Ganganalyse\nDieser Endpunkt generiert personalisierte Empfehlungs-Threads für eine bestimmte Sitzung basierend auf der Laufganganalyse des Benutzers. Jeder Thread bietet biomechanische Einblicke, Haltungstipps und Trainingsanleitungen für verschiedene Gelenkwinkel.\n**Verwendungsbeispiel:**\nSenden Sie eine `POST`-Anfrage an `/running/sessions/{session_id}/recommendation/`, wobei `{session_id}` die eindeutige Kennung der Sitzung ist.\n**Parameter:**\n- `session_id` *(string, erforderlich)*: Die eindeutige ID der Sitzung, für die Threads generiert werden sollen.\n**Antwortstruktur (HTTP 201):**\nGibt ein JSON-Objekt zurück, das jede Gangwinkelmetrik einer Thread-ID zuordnet, einschließlich linker und rechter Seite:\n- **left_posture_angle**, **left_hip_angle**, **left_knee_angle**, **left_ankle_angle**\n- **right_posture_angle**, **right_hip_angle**, **right_knee_angle**, **right_ankle_angle**\n**Hinweise:**\n- Die Sitzung muss gültig sein und einem Ganganalyse-Bericht entsprechen.\n- Erfordert einen aktiven Zahlungsplan (Pro, Premium, Enterprise oder Standard).","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Die eindeutige Kennung der Sitzung.","required":true}],"responses":{"201":{"description":"Threads erfolgreich erstellt.","content":{"application/json":{"schema":{"description":"Ein Wörterbuch, das Ganganalysemetriken Thread-IDs zuordnet.","required":["left_hip_angle","left_posture_angle","left_ankle_angle","left_knee_angle","right_posture_angle","right_knee_angle","right_hip_angle","right_ankle_angle"],"type":"object","properties":{"left_hip_angle":{"description":"Thread-ID für die Empfehlungen zum linken Hüftwinkel.","type":"string"},"left_posture_angle":{"description":"Thread-ID für die Empfehlungen zum linken Körperhaltungswinkel.","type":"string"},"left_ankle_angle":{"description":"Thread-ID für die Empfehlungen zum linken Knöchelwinkel.","type":"string"},"left_knee_angle":{"description":"Thread-ID für die Empfehlungen zum linken Kniewinkel.","type":"string"},"right_posture_angle":{"description":"Thread-ID für die Empfehlungen zum rechten Körperhaltungswinkel.","type":"string"},"right_knee_angle":{"description":"Thread-ID für die Empfehlungen zum rechten Kniewinkel.","type":"string"},"right_hip_angle":{"description":"Thread-ID für die Empfehlungen zum rechten Hüftwinkel.","type":"string"},"right_ankle_angle":{"description":"Thread-ID für die Empfehlungen zum rechten Knöchelwinkel.","type":"string"}}}}}},"400":{"description":"Ungültige Anfrage - Ungültiges Token oder Parameter.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Eine detaillierte Fehlermeldung, die die ungültige Anfrage beschreibt.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Token ist ungültig oder abgelaufen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass das Token fehlt oder ungültig ist.","type":"string"}}}}}},"403":{"description":"Verboten - Admin-Zugriff erforderlich.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass Admin-Rechte erforderlich sind.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Sitzung nicht gefunden oder Benutzer hat keinen gültigen Zahlungsplan.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, die anzeigt, dass die Sitzung nicht gefunden wurde oder der Zahlungsplan ungültig ist.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Ein unerwarteter Fehler ist aufgetreten.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Eine detaillierte Fehlermeldung, die auf einen serverseitigen Fehler hinweist.","type":"string"}}}}}}},"tags":["running"]}}}}
```

## Ruft Zusammenfassung einer Lauf-Sitzung ab

> Ruft eine detaillierte Zusammenfassung einer Lauf-Sitzung anhand ihrer eindeutigen \`session\_id\` ab. Diese Zusammenfassung enthält sowohl quantitative Leistungs- metrik als auch eine optionale qualitative Zusammenfassung, die von GenAI generiert wurde, falls verfügbar.\
> \*\*Verwendungsanweisungen:\*\*\
> 1\. Senden Sie eine GET-Anfrage mit der \`session\_id\` im Pfadparameter.\
> 2\. Der Endpunkt gibt ein JSON-Objekt zurück, das verschiedene Abschnitte der Sitzungszusammenfassung enthält.\
> \### Abfrageparameter\
> \- \*\*demo\*\* \*(boolean, optional)\*: Auf \`true\` setzen, um eine vorgefertigte Demo-Zusammenfassung für diese Lauf-Sitzung abzurufen.\
> \*\*Antwortstruktur:\*\*\
> \- \*\*summary\_text\*\* \*(object, optional)\*: Enthält GenAI-generierte Kommentare, falls verfügbar. Dieses Objekt kann folgende Schlüssel enthalten:\
> &#x20;   \- \*\*balance\_and\_posture\*\*: Kommentare zum Gleichgewicht und zur Körperhaltung des Athleten (z.B. Vorschläge zur Verbesserung des Laufgleichgewichts).\
> &#x20;   \- \*\*performance\_metrics\*\*: Allgemeine Leistungskommentare wie Änderungen in Geschwindigkeit, Kadenz und Kraftabgabe.\
> &#x20;   \- \*\*running\_mechanics\*\*: Beobachtungen zur Laufform, einschließlich Kontaktzeit, Flugzeit, Schrittzeit und Schrittlänge.\
> &#x20;   \- \*\*final\_summary\*\*: Eine abschließende Gesamtbewertung der Sitzungsleistung.\
> &#x20;   \- \*\*distance\_and\_duration\*\*: Kommentare zur zurückgelegten Gesamtstrecke und Sitzungsdauer.\
> \
> \- \*\*performance\_metrics\*\* \*(object)\*: Enthält aggregierte Leistungs- metrik mit ihren Minimal-, Maximal- und Durchschnittswerten sowie die Rohdaten als Array, die Folgendes abdecken:\
> &#x20;   \- \*\*speed\*\* (in m/s)\
> &#x20;   \- \*\*pace\*\* (in min/km)\
> &#x20;   \- \*\*cadence\*\* (Schritte/min)\
> &#x20;   \- \*\*power\*\* (in Watt)\
> &#x20;   \- \*\*normalized\_power\*\* (in W/kg)\
> \
> \- \*\*running\_mechanics\*\* \*(object)\*: Enthält folgende Laufmechanik-Daten:\
> &#x20;   \- \*\*contact\_time\*\* (in Sekunden)\
> &#x20;   \- \*\*flight\_time\*\* (in Sekunden)\
> &#x20;   \- \*\*stride\_time\*\* (in Sekunden)\
> &#x20;   \- \*\*stride\_length\*\* (in Metern)\
> &#x20;   \- \*\*footstrike\*\*: Eine Zeichenkette, die den häufigsten Fußaufsatztyp beschreibt (z.B. 'Vorfuß').\
> \
> \- \*\*balance\_and\_posture\*\* \*(object)\*: Enthält Metriken zu Gleichgewicht und Körperhaltung:\
> &#x20;   \- \*\*balance\*\*: Enthält Minimal-, Maximal-, Durchschnittswerte und ein Array von Gleichgewichtswerten.\
> &#x20;   \- \*\*contact\_angle\*\*: Enthält Minimal-, Maximal-, Durchschnittswerte und ein Array von Kontaktwinkelwerten (in Grad).\
> \
> \- \*\*distance\_and\_duration\*\* \*(object)\*: Enthält Rohwerte für:\
> &#x20;   \- \*\*total\_distance\*\* (in Metern)\
> &#x20;   \- \*\*total\_time\*\* (in Sekunden)\
> \
> \- \*\*user\_information\*\* \*(object)\*: Enthält detaillierte Benutzerdaten, einschließlich:\
> &#x20;   \- \*\*ycom\*\*: YCOM-Wert des Benutzers\
> &#x20;   \- \*\*weight\*\*: Gewicht des Benutzers in Kilogramm\
> &#x20;   \- \*\*age\*\*: Alter des Benutzers\
> &#x20;   \- \*\*height\*\*: Größe des Benutzers in Zentimetern\
> &#x20;   \- \*\*leg\_length\*\*: Beinlänge des Benutzers\
> &#x20;   \- \*\*shoeSize\*\*: Schuhgröße des Benutzers\
> &#x20;   \- \*\*gender\*\*: Geschlecht des Benutzers\
> &#x20;   \- \*\*user\*\*: Die eindeutige Benutzer-ID\
> &#x20;   \- \*\*brand\*\*: Schuhmarkeninformationen (falls vorhanden)\
> &#x20;   \- \*\*shoeModel\*\*: Schuhmodellinformationen (falls vorhanden)\
> &#x20;   \- \*\*email\*\*: E-Mail-Adresse des Benutzers\
> &#x20;   \- \*\*display\_name\*\*: Anzeigename des Benutzers\
> \
> \- \*\*session\_date\*\* \*(string)\*: Das Datum der Sitzung in einem formatierten String (z.B. 'TT/MM/JJJJ').\
> \*\*Hinweis:\*\* Das Feld \`summary\_text\` ist nur vorhanden, wenn GenAI-generierte Zusammenfassungskommentare für die Sitzung gespeichert wurden.

```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":"Geben Sie Ihren Bearer-Token (Firebase Auth) im Format ein: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Geben Sie Ihren API-Schlüssel im Header ein: API-KEY: <api_key>"}}},"paths":{"/running/sessions/{session_id}/summary/":{"get":{"operationId":"running_sessions_summary_list","summary":"Ruft Zusammenfassung einer Lauf-Sitzung ab","description":"Ruft eine detaillierte Zusammenfassung einer Lauf-Sitzung anhand ihrer eindeutigen `session_id` ab. Diese Zusammenfassung enthält sowohl quantitative Leistungs- metrik als auch eine optionale qualitative Zusammenfassung, die von GenAI generiert wurde, falls verfügbar.\n**Verwendungsanweisungen:**\n1. Senden Sie eine GET-Anfrage mit der `session_id` im Pfadparameter.\n2. Der Endpunkt gibt ein JSON-Objekt zurück, das verschiedene Abschnitte der Sitzungszusammenfassung enthält.\n### Abfrageparameter\n- **demo** *(boolean, optional)*: Auf `true` setzen, um eine vorgefertigte Demo-Zusammenfassung für diese Lauf-Sitzung abzurufen.\n**Antwortstruktur:**\n- **summary_text** *(object, optional)*: Enthält GenAI-generierte Kommentare, falls verfügbar. Dieses Objekt kann folgende Schlüssel enthalten:\n    - **balance_and_posture**: Kommentare zum Gleichgewicht und zur Körperhaltung des Athleten (z.B. Vorschläge zur Verbesserung des Laufgleichgewichts).\n    - **performance_metrics**: Allgemeine Leistungskommentare wie Änderungen in Geschwindigkeit, Kadenz und Kraftabgabe.\n    - **running_mechanics**: Beobachtungen zur Laufform, einschließlich Kontaktzeit, Flugzeit, Schrittzeit und Schrittlänge.\n    - **final_summary**: Eine abschließende Gesamtbewertung der Sitzungsleistung.\n    - **distance_and_duration**: Kommentare zur zurückgelegten Gesamtstrecke und Sitzungsdauer.\n\n- **performance_metrics** *(object)*: Enthält aggregierte Leistungs- metrik mit ihren Minimal-, Maximal- und Durchschnittswerten sowie die Rohdaten als Array, die Folgendes abdecken:\n    - **speed** (in m/s)\n    - **pace** (in min/km)\n    - **cadence** (Schritte/min)\n    - **power** (in Watt)\n    - **normalized_power** (in W/kg)\n\n- **running_mechanics** *(object)*: Enthält folgende Laufmechanik-Daten:\n    - **contact_time** (in Sekunden)\n    - **flight_time** (in Sekunden)\n    - **stride_time** (in Sekunden)\n    - **stride_length** (in Metern)\n    - **footstrike**: Eine Zeichenkette, die den häufigsten Fußaufsatztyp beschreibt (z.B. 'Vorfuß').\n\n- **balance_and_posture** *(object)*: Enthält Metriken zu Gleichgewicht und Körperhaltung:\n    - **balance**: Enthält Minimal-, Maximal-, Durchschnittswerte und ein Array von Gleichgewichtswerten.\n    - **contact_angle**: Enthält Minimal-, Maximal-, Durchschnittswerte und ein Array von Kontaktwinkelwerten (in Grad).\n\n- **distance_and_duration** *(object)*: Enthält Rohwerte für:\n    - **total_distance** (in Metern)\n    - **total_time** (in Sekunden)\n\n- **user_information** *(object)*: Enthält detaillierte Benutzerdaten, einschließlich:\n    - **ycom**: YCOM-Wert des Benutzers\n    - **weight**: Gewicht des Benutzers in Kilogramm\n    - **age**: Alter des Benutzers\n    - **height**: Größe des Benutzers in Zentimetern\n    - **leg_length**: Beinlänge des Benutzers\n    - **shoeSize**: Schuhgröße des Benutzers\n    - **gender**: Geschlecht des Benutzers\n    - **user**: Die eindeutige Benutzer-ID\n    - **brand**: Schuhmarkeninformationen (falls vorhanden)\n    - **shoeModel**: Schuhmodellinformationen (falls vorhanden)\n    - **email**: E-Mail-Adresse des Benutzers\n    - **display_name**: Anzeigename des Benutzers\n\n- **session_date** *(string)*: Das Datum der Sitzung in einem formatierten String (z.B. 'TT/MM/JJJJ').\n**Hinweis:** Das Feld `summary_text` ist nur vorhanden, wenn GenAI-generierte Zusammenfassungskommentare für die Sitzung gespeichert wurden.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Die eindeutige Kennung der Sitzung","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Auf `true` setzen, um eine vorgefertigte Demo-Zusammenfassung für diese Lauf-Sitzung abzurufen.","required":false}],"responses":{"200":{"description":"Sitzungszusammenfassung erfolgreich abgerufen","content":{"application/json":{"schema":{"required":["summary_text","performance_metrics","running_mechanics","balance_and_posture","distance_and_duration","user_information","session_date"],"type":"object","properties":{"summary_text":{"description":"Optionale textuelle Zusammenfassung der Sitzung (nur vorhanden, wenn GenAI- Kommentare verfügbar sind).","type":"object","properties":{"balance_and_posture":{"description":"Kommentare zum Gleichgewicht und zur Körperhaltung des Athleten.","type":"string"},"performance_metrics":{"description":"Kommentare zu Geschwindigkeit, Kadenz, Kraft und allgemeiner Leistung.","type":"string"},"running_mechanics":{"description":"Kommentare zur Laufmechanik, einschließlich Kontakt- und Flugzeiten sowie Schrittdetails.","type":"string"},"final_summary":{"description":"Abschließende Gesamtzusammenfassung der Sitzung.","type":"string"},"distance_and_duration":{"description":"Kommentare zur zurückgelegten Gesamtstrecke und Dauer der Sitzung.","type":"string"}}},"performance_metrics":{"type":"object","properties":{"speed":{"type":"object","properties":{"min":{"description":"Minimale Geschwindigkeit (m/s)","type":"number"},"max":{"description":"Maximale Geschwindigkeit (m/s)","type":"number"},"avg":{"description":"Durchschnittliche Geschwindigkeit (m/s)","type":"number"},"values":{"description":"Array einzelner Geschwindigkeitswerte","type":"array","items":{"type":"number"}}}},"pace":{"type":"object","properties":{"min":{"description":"Minimales Tempo (min/km)","type":"number"},"max":{"description":"Maximales Tempo (min/km)","type":"number"},"avg":{"description":"Durchschnittliches Tempo (min/km)","type":"number"},"values":{"description":"Array einzelner Tempowerte","type":"array","items":{"type":"number"}}}},"cadence":{"type":"object","properties":{"min":{"description":"Minimale Kadenz (Schritte/min)","type":"number"},"max":{"description":"Maximale Kadenz (Schritte/min)","type":"number"},"avg":{"description":"Durchschnittliche Kadenz (Schritte/min)","type":"number"},"values":{"description":"Array einzelner Kadenzwerte","type":"array","items":{"type":"number"}}}},"power":{"type":"object","properties":{"min":{"description":"Minimale Kraft (W)","type":"number"},"max":{"description":"Maximale Kraft (W)","type":"number"},"avg":{"description":"Durchschnittliche Kraft (W)","type":"number"},"values":{"description":"Array einzelner Kraftwerte","type":"array","items":{"type":"number"}}}},"normalized_power":{"type":"object","properties":{"min":{"description":"Minimale normalisierte Kraft (W/kg)","type":"number"},"max":{"description":"Maximale normalisierte Kraft (W/kg)","type":"number"},"avg":{"description":"Durchschnittliche normalisierte Kraft (W/kg)","type":"number"},"values":{"description":"Array einzelner normalisierter Kraftwerte","type":"array","items":{"type":"number"}}}}}},"running_mechanics":{"type":"object","properties":{"contact_time":{"type":"object","properties":{"min":{"description":"Minimale Kontaktzeit (s)","type":"number"},"max":{"description":"Maximale Kontaktzeit (s)","type":"number"},"avg":{"description":"Durchschnittliche Kontaktzeit (s)","type":"number"},"values":{"description":"Array von Kontaktzeitwerten","type":"array","items":{"type":"number"}}}},"flight_time":{"type":"object","properties":{"min":{"description":"Minimale Flugzeit (s)","type":"number"},"max":{"description":"Maximale Flugzeit (s)","type":"number"},"avg":{"description":"Durchschnittliche Flugzeit (s)","type":"number"},"values":{"description":"Array von Flugzeitwerten","type":"array","items":{"type":"number"}}}},"stride_time":{"type":"object","properties":{"min":{"description":"Minimale Schrittzeit (s)","type":"number"},"max":{"description":"Maximale Schrittzeit (s)","type":"number"},"avg":{"description":"Durchschnittliche Schrittzeit (s)","type":"number"},"values":{"description":"Array von Schrittzeitmessungen","type":"array","items":{"type":"number"}}}},"stride_length":{"type":"object","properties":{"min":{"description":"Minimale Schrittlänge (m)","type":"number"},"max":{"description":"Maximale Schrittlänge (m)","type":"number"},"avg":{"description":"Durchschnittliche Schrittlänge (m)","type":"number"},"values":{"description":"Array von Schrittlängenmessungen","type":"array","items":{"type":"number"}}}},"footstrike":{"description":"Der häufigste Fußaufsatztyp (z.B. 'Vorfuß')","type":"string"}}},"balance_and_posture":{"type":"object","properties":{"balance":{"type":"object","properties":{"min":{"description":"Minimaler Laufgleichgewichtswert","type":"number"},"max":{"description":"Maximaler Laufgleichgewichtswert","type":"number"},"avg":{"description":"Durchschnittlicher Laufgleichgewichtswert","type":"number"},"values":{"description":"Array von Laufgleichgewichtswerten","type":"array","items":{"type":"number"}}}},"contact_angle":{"type":"object","properties":{"min":{"description":"Minimaler Kontaktwinkel (Grad)","type":"number"},"max":{"description":"Maximaler Kontaktwinkel (Grad)","type":"number"},"avg":{"description":"Durchschnittlicher Kontaktwinkel (Grad)","type":"number"},"values":{"description":"Array von Kontaktwinkelwerten","type":"array","items":{"type":"number"}}}}}},"distance_and_duration":{"type":"object","properties":{"total_distance":{"description":"Zurückgelegte Gesamtstrecke (m)","type":"number"},"total_time":{"description":"Gesamtdauer der Sitzung (s)","type":"number"}}},"user_information":{"description":"Detaillierte Benutzerinformationen aus den Sitzungsdaten.","type":"object","properties":{"ycom":{"description":"YCOM-Wert des Benutzers","type":"number"},"weight":{"description":"Gewicht des Benutzers (kg)","type":"number"},"age":{"description":"Alter des Benutzers","type":"string"},"height":{"description":"Größe des Benutzers (cm)","type":"number"},"leg_length":{"description":"Beinlänge des Benutzers (m)","type":"number"},"shoeSize":{"description":"Schuhgröße des Benutzers","type":"number"},"gender":{"description":"Geschlecht des Benutzers","type":"string"},"user":{"description":"Eindeutige Benutzerkennung","type":"string"},"brand":{"description":"Bevorzugte Schuhmarke (falls verfügbar)","type":"string"},"shoeModel":{"description":"Schuhmodell (falls verfügbar)","type":"string"},"email":{"description":"E-Mail-Adresse des Benutzers","type":"string"},"display_name":{"description":"Anzeigename des Benutzers","type":"string"}}},"session_date":{"description":"Formatiertes Datum der Sitzung (z.B., '07/04/2025')","type":"string"}}}}}},"400":{"description":"Ungültige Anfrage - Ungültiges Token oder Parameter.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Eine detaillierte Fehlermeldung, die die ungültige Anfrage beschreibt.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Token ist ungültig oder abgelaufen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass das Token fehlt oder ungültig ist.","type":"string"}}}}}},"403":{"description":"Verboten - Admin-Zugriff erforderlich.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass Admin-Rechte erforderlich sind.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Sitzung nicht gefunden oder Benutzer hat keinen gültigen Zahlungsplan.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, die anzeigt, dass die Sitzung nicht gefunden wurde oder der Zahlungsplan ungültig ist.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Ein unerwarteter Fehler ist aufgetreten.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Eine detaillierte Fehlermeldung, die auf einen serverseitigen Fehler hinweist.","type":"string"}}}}}}},"tags":["running"]}}}}
```

## Generiert Zusammenfassung für eine Lauf-Sitzung

> Löst die Generierung von Zusammenfassungs-Threads für eine Lauf-Sitzung aus. Dieser Endpunkt erstellt separate Zusammenfassungs-Threads für jeden Zusammenfassungsblock basierend auf Sitzungsmetriken, einschließlich Leistungsmetriken, Laufmechanik, Gleichgewicht und Körperhaltung sowie Strecke/Dauer, sowie einer abschließenden Gesamt- zusammenfassung. Gibt ein JSON-Objekt mit Thread-IDs für jeden Zusammenfassungsblock zurück.

```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":"Geben Sie Ihren Bearer-Token (Firebase Auth) im Format ein: Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Geben Sie Ihren API-Schlüssel im Header ein: API-KEY: <api_key>"}}},"paths":{"/running/sessions/{session_id}/summary/":{"post":{"operationId":"running_sessions_summary_create","summary":"Generiert Zusammenfassung für eine Lauf-Sitzung","description":"Löst die Generierung von Zusammenfassungs-Threads für eine Lauf-Sitzung aus. Dieser Endpunkt erstellt separate Zusammenfassungs-Threads für jeden Zusammenfassungsblock basierend auf Sitzungsmetriken, einschließlich Leistungsmetriken, Laufmechanik, Gleichgewicht und Körperhaltung sowie Strecke/Dauer, sowie einer abschließenden Gesamt- zusammenfassung. Gibt ein JSON-Objekt mit Thread-IDs für jeden Zusammenfassungsblock zurück.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Die eindeutige Kennung der Sitzung","required":true},{"schema":{"type":"string","enum":["metric","imperial"]},"name":"measurement_system","in":"query","description":"Maßsystem: 'metric' oder 'imperial'","required":false}],"responses":{"201":{"description":"Zusammenfassungs-Threads erfolgreich generiert.","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"description":"Thread-ID entsprechend einem Zusammenfassungsblock","type":"string"}}}}},"400":{"description":"Ungültige Anfrage - Ungültiges Token oder Parameter.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Eine detaillierte Fehlermeldung, die die ungültige Anfrage beschreibt.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Token ist ungültig oder abgelaufen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass das Token fehlt oder ungültig ist.","type":"string"}}}}}},"403":{"description":"Verboten - Admin-Zugriff erforderlich.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehler, der anzeigt, dass Admin-Rechte erforderlich sind.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Sitzung nicht gefunden oder Benutzer hat keinen gültigen Zahlungsplan.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, die anzeigt, dass die Sitzung nicht gefunden wurde oder der Zahlungsplan ungültig ist.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Ein unerwarteter Fehler ist aufgetreten.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Eine detaillierte Fehlermeldung, die auf einen serverseitigen Fehler hinweist.","type":"string"}}}}}}},"tags":["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/de/api-documentation/developer-resources-and-api-reference/api-reference/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.
