# Gewichtheben

## 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\*\* \*(file, erforderlich)\*: Die zu verarbeitende Videodatei. - \*\*session\_name\*\* \*(string, optional)\*: Ein lesbarer Name/Titel für die Sitzung. - \*\*exercise\_name\*\* \*(string, erforderlich)\*: Der Name der Übung. \
> &#x20; Wählen Sie eine der folgenden Optionen: 'snatch', 'clean' oder 'clean\_and\_jerk'.\
> \- \*\*barbell\_mass\*\* \*(string, optional)\*: Die Masse der verwendeten Hantel (numerische Zeichenkette). \
> &#x20; Standardwert: 100 kg (oder 220 lb), falls nicht angegeben.\
> \- \*\*body\_joint\_angles\*\* \*(array\[string], optional)\*: Eine kommagetrennte Liste von Gelenknamen (z.B. 'elbow, knee, ankle'). \
> &#x20; Standardwert: \['all'], falls nicht angegeben.\
> \
> \### Antwortstruktur\
> Bei Erfolg (HTTP 200) ist die Antwort ein JSON-Objekt mit: - \*\*session\_id\*\* \*(string)\*: Eine eindeutige ID 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. Ein gültiger API-KEY-Token muss im \`Authorization\`-Header angegeben werden. 3. Der Aufrufer benötigt Administratorrechte, 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 'exercise\_name=clean' \\\
> &#x20;    -F 'barbell\_mass=30' \\\
> &#x20;    -F 'body\_joint\_angles=elbow, knee, ankle' \\\
> &#x20;    https\://\<backend-link>/weightlifting/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":{"/weightlifting/sessions/":{"post":{"operationId":"weightlifting_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** *(file, erforderlich)*: Die zu verarbeitende Videodatei. - **session_name** *(string, optional)*: Ein lesbarer Name/Titel für die Sitzung. - **exercise_name** *(string, erforderlich)*: Der Name der Übung. \n  Wählen Sie eine der folgenden Optionen: 'snatch', 'clean' oder 'clean_and_jerk'.\n- **barbell_mass** *(string, optional)*: Die Masse der verwendeten Hantel (numerische Zeichenkette). \n  Standardwert: 100 kg (oder 220 lb), falls nicht angegeben.\n- **body_joint_angles** *(array[string], optional)*: Eine kommagetrennte Liste von Gelenknamen (z.B. 'elbow, knee, ankle'). \n  Standardwert: ['all'], falls nicht angegeben.\n\n### Antwortstruktur\nBei Erfolg (HTTP 200) ist die Antwort ein JSON-Objekt mit: - **session_id** *(string)*: Eine eindeutige ID 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. Ein gültiger API-KEY-Token muss im `Authorization`-Header angegeben werden. 3. Der Aufrufer benötigt Administratorrechte, 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:\n```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 'exercise_name=clean' \\\n     -F 'barbell_mass=30' \\\n     -F 'body_joint_angles=elbow, knee, ankle' \\\n     https://<backend-link>/weightlifting/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 ID der erstellten Sitzung.","type":"string"},"title":{"description":"Der Sitzungstitel (Standardwert, falls nicht angegeben).","type":"string"}}}}}},"400":{"description":"Ungültige Anfrage - Möglicherweise fehlende `user_id`, fehlende `video` oder ungültige 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 Administratorberechtigung, 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":["weightlifting"],"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)."},"exercise_name":{"type":"string","description":"**Erforderlich.** Der Name der Übung. Wählen Sie eine der folgenden Optionen: \"snatch\", \"clean\" oder \"clean_and_jerk\"."},"barbell_mass":{"type":"string","description":"**Optional.** Die Masse der Hantel (numerische Zeichenkette). Standardwert: 100 kg (oder 220 lb), falls nicht angegeben."},"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","exercise_name"]}}}}}}}}
````

## Ruft Details einer Gewichtheben-Sitzung ab

> Ruft die Details einer Gewichtheben-Sitzung anhand ihrer \`session\_id\` ab. Die zurückgegebenen Daten umfassen URLs der originalen und analysierten Videos, Erstellungszeitpunkt der Sitzung, Übungstyp, Benutzerinformationen, Metriken, Winkel, Berichtsmetriken und Zeitstempel.\
> \### Pfadparameter - \*\*session\_id\*\* \*(string, erforderlich)\*: Die eindeutige ID der abzurufenden Sitzung.\
> \### Abfrageparameter (optional) - \*\*demo\*\* \*(boolean)\*: Auf \`true\` setzen, um eine vorgefertigte Demo-Sitzung abzurufen.\
> \### Antwortstruktur (HTTP 200) Bei Erfolg enthält die Antwort ein JSON-Objekt mit: - \*\*analyzed\_video\_url\*\*: Öffentliche URL des analysierten Videos. - \*\*video\_url\*\*: Öffentliche URL des Originalvideos. - \*\*created\_at\*\*: Erstellungszeitpunkt (Datum: \`DD/MM/YYYY\`, Zeit: \`HH:MM AM/PM\`). - \*\*exercise\*\*: Die ausgeführte Übung (z.B. 'snatch'). - \*\*user\_name\*\*: Der Name des zugeordneten Benutzers. - \*\*activity\*\*: Der Aktivitätstyp ('Weightlifting'). - \*\*title\*\*: Der Titel der Sitzung. - \*\*metrics\*\*: Numerische Metriken (z.B. Geschwindigkeit, Leistung). - \*\*angles\*\*: Winkelwerte (Arrays numerischer Werte). - \*\*report\_metrics\*\*: Berichtsmetriken (Arrays numerischer Werte). - \*\*all\_timestamps\*\*: Zeitstempel der Sitzungsdaten.\
> \### Fehlerbehandlung - \*\*400 Ungültige Anfrage\*\*: Ungültige Parameter. - \*\*401 Nicht autorisiert\*\*: Fehlender/ungültiger Token. - \*\*403 Verboten\*\*: Unzureichende Berechtigungen. - \*\*404 Nicht gefunden\*\*: Sitzung nicht gefunden oder Aktivität nicht 'Weightlifting'. - \*\*500 Interner Serverfehler\*\*: Unerwarteter 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":{"/weightlifting/sessions/{session_id}/":{"get":{"operationId":"weightlifting_sessions_read","summary":"Ruft Details einer Gewichtheben-Sitzung ab","description":"Ruft die Details einer Gewichtheben-Sitzung anhand ihrer `session_id` ab. Die zurückgegebenen Daten umfassen URLs der originalen und analysierten Videos, Erstellungszeitpunkt der Sitzung, Übungstyp, Benutzerinformationen, Metriken, Winkel, Berichtsmetriken und Zeitstempel.\n### Pfadparameter - **session_id** *(string, erforderlich)*: Die eindeutige ID der abzurufenden Sitzung.\n### Abfrageparameter (optional) - **demo** *(boolean)*: Auf `true` setzen, um eine vorgefertigte Demo-Sitzung abzurufen.\n### Antwortstruktur (HTTP 200) Bei Erfolg enthält die Antwort ein JSON-Objekt mit: - **analyzed_video_url**: Öffentliche URL des analysierten Videos. - **video_url**: Öffentliche URL des Originalvideos. - **created_at**: Erstellungszeitpunkt (Datum: `DD/MM/YYYY`, Zeit: `HH:MM AM/PM`). - **exercise**: Die ausgeführte Übung (z.B. 'snatch'). - **user_name**: Der Name des zugeordneten Benutzers. - **activity**: Der Aktivitätstyp ('Weightlifting'). - **title**: Der Titel der Sitzung. - **metrics**: Numerische Metriken (z.B. Geschwindigkeit, Leistung). - **angles**: Winkelwerte (Arrays numerischer Werte). - **report_metrics**: Berichtsmetriken (Arrays numerischer Werte). - **all_timestamps**: Zeitstempel der Sitzungsdaten.\n### Fehlerbehandlung - **400 Ungültige Anfrage**: Ungültige Parameter. - **401 Nicht autorisiert**: Fehlender/ungültiger Token. - **403 Verboten**: Unzureichende Berechtigungen. - **404 Nicht gefunden**: Sitzung nicht gefunden oder Aktivität nicht 'Weightlifting'. - **500 Interner Serverfehler**: Unerwarteter 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 ID der Gewichtheben-Sitzung.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Auf `true` setzen, um eine Demo-Sitzung abzurufen.","required":false}],"responses":{"200":{"description":"Details der Gewichtheben-Sitzung erfolgreich abgerufen.","content":{"application/json":{"schema":{"required":["analyzed_video_url","video_url","created_at","exercise","user_name","activity","title","metrics","angles","report_metrics","all_timestamps"],"type":"object","properties":{"analyzed_video_url":{"description":"Öffentliche URL des analysierten Videos.","type":"string","format":"uri"},"video_url":{"description":"Öffentliche URL des Originalvideos.","type":"string","format":"uri"},"created_at":{"description":"Erstellungszeitpunkt der Sitzung.","required":["date","time"],"type":"object","properties":{"date":{"description":"Datum im Format DD/MM/YYYY.","type":"string"},"time":{"description":"Uhrzeit im Format HH:MM AM/PM.","type":"string"}}},"exercise":{"description":"Die ausgeführte Übung (z.B. \"snatch\").","type":"string"},"user_name":{"description":"Name des zugeordneten Benutzers.","type":"string"},"activity":{"description":"Aktivitätstyp (erwartet: \"Weightlifting\").","type":"string"},"title":{"description":"Titel der Sitzung.","type":"string"},"metrics":{"description":"Numerische Metriken.","type":"object","additionalProperties":{"type":"number"}},"angles":{"description":"Winkelwerte (Arrays numerischer Werte).","type":"object","additionalProperties":{"type":"array","items":{"type":"number"}}},"report_metrics":{"description":"Berichtsmetriken (Arrays numerischer Werte).","type":"object","additionalProperties":{"type":"array","items":{"type":"number"}}},"all_timestamps":{"description":"Zeitstempel der Sitzungsdaten.","type":"array","items":{"type":"number"}}}}}}},"400":{"description":"Ungültige Anfrage - Ungültige Parameter oder Admin-UID.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Fehlender oder ungültiger Token.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung.","type":"string"}}}}}},"403":{"description":"Verboten - Unzureichende Berechtigungen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Sitzung nicht gefunden oder Aktivität nicht \"Weightlifting\".","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Unerwarteter Fehler.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung.","type":"string"}}}}}}},"tags":["weightlifting"]}}}}
```

## Zusammenfassung einer Gewichtheber-Session abrufen

> Ruft eine detaillierte Zusammenfassung einer Gewichtheber-Session anhand ihrer eindeutigen \`session\_id\` ab. Die Zusammenfassung kombiniert quantitative Lift-Metriken mit optionalen GenAI-Kommentaren.\
> \*\*Anleitung:\*\*\
> 1\. Senden Sie eine \*\*GET\*\*-Anfrage mit der \`session\_id\` im Pfad.\
> 2\. Der Endpunkt antwortet mit einem strukturierten JSON-Objekt (siehe unten).\
> \### Abfrageparameter\
> \- \*\*demo\*\* \*(boolean, optional)\* – Auf \`true\` setzen, um eine vorgefertigte Demo-Zusammenfassung zu erhalten.\
> \*\*Antwort-Struktur:\*\*\
> \- \*\*summary\_text\*\* \*(object, optional)\* - GenAI-Kommentare. Schlüssel können sein:\
> &#x20;   \- \*\*velocity\*\* - Erkenntnisse zur Hantelgeschwindigkeit.\
> &#x20;   \- \*\*power\*\* - Beobachtungen zu Kraft & Leistungsausgabe.\
> &#x20;   \- \*\*stability\*\* - Anmerkungen zur Hantelpfad-Kontrolle.\
> &#x20;   \- \*\*final\_summary\*\* - Zusammenfassende Coaching-Bemerkungen.\
> \
> \- \*\*exercise\_type\*\* \*(string)\* - Art der ausgeführten Übung (z.B. \*Reißen\*).\
> \- \*\*velocity\*\* \*(object)\*:\
> &#x20;   \- \*\*bar\_velocity\*\* - \`{ min, max, values\[] }\` (m/s).\
> \
> \- \*\*power\*\* \*(object)\*:\
> &#x20;   \- \*\*ground\_reaction\_force\*\* - \`{ min, max, values\[] }\` (N).\
> &#x20;   \- \*\*power\*\* - \`{ min, max, values\[] }\` (W).\
> \
> \- \*\*stability\*\* \*(object)\*:\
> &#x20;   \- \*\*total\_time\*\* \*(number)\* - Dauer des Lifts (s).\
> &#x20;   \- \*\*bar\_height\*\* - \`{ max, values\[] }\` (m).\
> &#x20;   \- \*\*bar\_trajectory\*\* \*(object)\* - \`{ xAxis\[], yAxis\[] }\` (m).\
> \
> \- \*\*user\_information\*\* \*(object)\* - Dieselben Schlüssel wie bei Lauf-Zusammenfassungen (Gewicht, Größe etc.).\
> \- \*\*session\_date\*\* \*(string)\* - Formatierter Zeitstempel (z.B. \`07/04/2025\`).\
> \*\*Hinweis:\*\* \`summary\_text\` erscheint nur, nachdem GenAI-Feedback generiert wurde.

```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":{"/weightlifting/sessions/{session_id}/summary/":{"get":{"operationId":"weightlifting_sessions_summary_list","summary":"Zusammenfassung einer Gewichtheber-Session abrufen","description":"Ruft eine detaillierte Zusammenfassung einer Gewichtheber-Session anhand ihrer eindeutigen `session_id` ab. Die Zusammenfassung kombiniert quantitative Lift-Metriken mit optionalen GenAI-Kommentaren.\n**Anleitung:**\n1. Senden Sie eine **GET**-Anfrage mit der `session_id` im Pfad.\n2. Der Endpunkt antwortet mit einem strukturierten JSON-Objekt (siehe unten).\n### Abfrageparameter\n- **demo** *(boolean, optional)* – Auf `true` setzen, um eine vorgefertigte Demo-Zusammenfassung zu erhalten.\n**Antwort-Struktur:**\n- **summary_text** *(object, optional)* - GenAI-Kommentare. Schlüssel können sein:\n    - **velocity** - Erkenntnisse zur Hantelgeschwindigkeit.\n    - **power** - Beobachtungen zu Kraft & Leistungsausgabe.\n    - **stability** - Anmerkungen zur Hantelpfad-Kontrolle.\n    - **final_summary** - Zusammenfassende Coaching-Bemerkungen.\n\n- **exercise_type** *(string)* - Art der ausgeführten Übung (z.B. *Reißen*).\n- **velocity** *(object)*:\n    - **bar_velocity** - `{ min, max, values[] }` (m/s).\n\n- **power** *(object)*:\n    - **ground_reaction_force** - `{ min, max, values[] }` (N).\n    - **power** - `{ min, max, values[] }` (W).\n\n- **stability** *(object)*:\n    - **total_time** *(number)* - Dauer des Lifts (s).\n    - **bar_height** - `{ max, values[] }` (m).\n    - **bar_trajectory** *(object)* - `{ xAxis[], yAxis[] }` (m).\n\n- **user_information** *(object)* - Dieselben Schlüssel wie bei Lauf-Zusammenfassungen (Gewicht, Größe etc.).\n- **session_date** *(string)* - Formatierter Zeitstempel (z.B. `07/04/2025`).\n**Hinweis:** `summary_text` erscheint nur, nachdem GenAI-Feedback generiert wurde.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Eindeutiger Identifikator der Session","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Auf `true` setzen, um eine vorgefertigte Demo-Zusammenfassung für diese Gewichtheber-Session zu erhalten.","required":false}],"responses":{"200":{"description":"Zusammenfassung der Gewichtheber-Session erfolgreich abgerufen","content":{"application/json":{"schema":{"required":["exercise_type","velocity","power","stability","user_information","session_date"],"type":"object","properties":{"summary_text":{"description":"Optionale GenAI-Kommentare zum Lift.","type":"object","properties":{"velocity":{"description":"Bewertung der Hantelgeschwindigkeit.","type":"string"},"power":{"description":"Bewertung von Kraft & Leistungsproduktion.","type":"string"},"stability":{"description":"Bewertung der Hantelpfad-Stabilität & Kontrolle.","type":"string"},"final_summary":{"description":"Zusammenfassende Coaching-Bemerkungen.","type":"string"}}},"exercise_type":{"description":"Art der ausgeführten Übung.","type":"string"},"velocity":{"type":"object","properties":{"bar_velocity":{"type":"object","properties":{"min":{"description":"Minimale Hantelgeschwindigkeit (m/s).","type":"number"},"max":{"description":"Maximale Hantelgeschwindigkeit (m/s).","type":"number"},"values":{"description":"Array von Hantelgeschwindigkeits-Messwerten (m/s).","type":"array","items":{"type":"number"}}}}}},"power":{"type":"object","properties":{"ground_reaction_force":{"type":"object","properties":{"min":{"description":"Minimale Bodenreaktionskraft (N).","type":"number"},"max":{"description":"Maximale Bodenreaktionskraft (N).","type":"number"},"values":{"description":"Array von Kraft-Messwerten (N).","type":"array","items":{"type":"number"}}}},"power":{"type":"object","properties":{"min":{"description":"Minimale Leistungsausgabe (W).","type":"number"},"max":{"description":"Maximale Leistungsausgabe (W).","type":"number"},"values":{"description":"Array von momentanen Leistungs-Messwerten (W).","type":"array","items":{"type":"number"}}}}}},"stability":{"type":"object","properties":{"total_time":{"description":"Gesamtdauer des Lifts (s).","type":"number"},"bar_height":{"type":"object","properties":{"max":{"description":"Maximale Hantelhöhe (m).","type":"number"},"values":{"description":"Array von Hantelhöhen-Messwerten (m).","type":"array","items":{"type":"number"}}}},"bar_trajectory":{"type":"object","properties":{"xAxis":{"description":"Hantelpfad auf der x-Achse (m).","type":"array","items":{"type":"number"}},"yAxis":{"description":"Hantelpfad auf der y-Achse (m).","type":"array","items":{"type":"number"}}}}}},"user_information":{"description":"Detailliertes Nutzerprofil zum Zeitpunkt der Session.","type":"object","properties":{"weight":{"description":"Gewicht (kg)","type":"number"},"height":{"description":"Größe (cm)","type":"number"},"age":{"description":"Alter","type":"string"},"gender":{"description":"Geschlecht","type":"string"},"email":{"description":"E-Mail-Adresse","type":"string"},"display_name":{"description":"Anzeigename","type":"string"}}},"session_date":{"description":"Datum der Session (z.B. '07/04/2025').","type":"string"}}}}}},"400":{"description":"Ungültige Anfrage - Fehlerhafte Parameter.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Token fehlt oder abgelaufen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Authentifizierungs-Fehlermeldung.","type":"string"}}}}}},"403":{"description":"Verboten - Nutzer hat keinen gültigen Zahlungsplan.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung zum Zahlungsplan.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Session nicht vorhanden.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, dass Session nicht gefunden wurde.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Server-seitige Fehlermeldung.","type":"string"}}}}}}},"tags":["weightlifting"]}}}}
```

## Exportiert Daten einer Gewichtheben-Sitzung

> Ruft die Daten einer Gewichtheben-Sitzung aus Firestore ab, einschließlich Keypoints, Winkeln und Zeitstempeln. Die Aktivität der Sitzung muss "Weightlifting" sein.\
> \### Pfadparameter - \*\*session\_id\*\* \*(string, erforderlich)\*: Die eindeutige ID der Sitzung.\
> \### Abfrageparameter (optional) - \*\*demo\*\* \*(boolean)\*: Auf \`true\` setzen, um eine Demo-Sitzung abzurufen.\
> \### Antwortstruktur (HTTP 200) Bei Erfolg enthält die Antwort ein JSON-Objekt mit: - \*\*keypoints\*\*: Keypoint-Daten (Arrays numerischer Werte). - \*\*angles\*\*: Winkelwerte (Arrays numerischer Werte). - \*\*all\_timestamps\*\*: Zeitstempel der Sitzungsdaten. - \*\*metrics\*\*: Numerische Metriken. - \*\*activity\*\*: Aktivitätstyp ("Weightlifting").\
> \### Fehlerbehandlung - \*\*400 Ungültige Anfrage\*\*: Ungültige Parameter. - \*\*401 Nicht autorisiert\*\*: Fehlender/ungültiger Token. - \*\*403 Verboten\*\*: Unzureichende Berechtigungen. - \*\*404 Nicht gefunden\*\*: Sitzung nicht gefunden oder Aktivität nicht "Weightlifting". - \*\*500 Interner Serverfehler\*\*: Unerwarteter 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":{"/weightlifting/sessions/{session_id}/export/":{"get":{"operationId":"weightlifting_sessions_export_list","summary":"Exportiert Daten einer Gewichtheben-Sitzung","description":"Ruft die Daten einer Gewichtheben-Sitzung aus Firestore ab, einschließlich Keypoints, Winkeln und Zeitstempeln. Die Aktivität der Sitzung muss \"Weightlifting\" sein.\n### Pfadparameter - **session_id** *(string, erforderlich)*: Die eindeutige ID der Sitzung.\n### Abfrageparameter (optional) - **demo** *(boolean)*: Auf `true` setzen, um eine Demo-Sitzung abzurufen.\n### Antwortstruktur (HTTP 200) Bei Erfolg enthält die Antwort ein JSON-Objekt mit: - **keypoints**: Keypoint-Daten (Arrays numerischer Werte). - **angles**: Winkelwerte (Arrays numerischer Werte). - **all_timestamps**: Zeitstempel der Sitzungsdaten. - **metrics**: Numerische Metriken. - **activity**: Aktivitätstyp (\"Weightlifting\").\n### Fehlerbehandlung - **400 Ungültige Anfrage**: Ungültige Parameter. - **401 Nicht autorisiert**: Fehlender/ungültiger Token. - **403 Verboten**: Unzureichende Berechtigungen. - **404 Nicht gefunden**: Sitzung nicht gefunden oder Aktivität nicht \"Weightlifting\". - **500 Interner Serverfehler**: Unerwarteter 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 Sitzungs-ID für den Export.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Auf `true` setzen, um eine Demo-Sitzung abzurufen.","required":false}],"responses":{"200":{"description":"Daten der Gewichtheben-Sitzung erfolgreich abgerufen.","content":{"application/json":{"schema":{"required":["keypoints","angles","all_timestamps","metrics","activity"],"type":"object","properties":{"keypoints":{"description":"Keypoint-Daten (Arrays numerischer Werte).","type":"object","additionalProperties":{"type":"array","items":{"type":"number"}}},"angles":{"description":"Winkelwerte (Arrays numerischer Werte).","type":"object","additionalProperties":{"type":"array","items":{"type":"number"}}},"all_timestamps":{"description":"Zeitstempel der Sitzungsdaten.","type":"array","items":{"type":"number"}},"metrics":{"description":"Numerische Metriken.","type":"object","additionalProperties":{"type":"number"}},"activity":{"description":"Aktivitätstyp (\"Weightlifting\").","type":"string"}}}}}},"400":{"description":"Ungültige Anfrage - Ungültige Parameter oder Admin-UID.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Fehlender oder ungültiger Token.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung.","type":"string"}}}}}},"403":{"description":"Verboten - Unzureichende Berechtigungen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Sitzung nicht gefunden oder Aktivität nicht \"Weightlifting\".","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Unerwarteter Fehler.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung.","type":"string"}}}}}}},"tags":["weightlifting"]}}}}
```

## Führt eine biomechanische Analyse einer Gewichtheben-Übung durch

> Führt eine vollständige biomechanische Analyse einer Gewichtheben-Sitzung durch (\`snatch\`, \`clean\`, etc.).\
> \### Pfadparameter - \*\*session\_id\*\* \*(string, erforderlich)\*: Die eindeutige ID der Sitzung.\
> \### Abfrageparameter (optional) - \*\*demo\*\* \*(boolean)\*: Auf \`true\` setzen, um eine Demo-Analyse abzurufen.\
> \### Antwortstruktur (HTTP 200) Die Antwort ist ein JSON-Bericht mit: - \*\*exercise\*\*: Die Übung (z.B. "snatch"). - \*\*key\_metrics\*\*: Schlüsselmetriken (Leistung, Bodenreaktionskraft, Hantelgeschwindigkeit). - \*\*body\_positioning\*\*: Körperpositionen (Hüftgeschwindigkeit, Schienbeinwinkel, etc.). - \*\*joint\_angles\*\*: Gelenkwinkel. - \*\*barbell\_positioning\*\*: Hantelpositionen. - \*\*phase\_data\*\*: Phasendaten (Bilder, Durchschnittszeiten). - \*\*chart\_data\*\*: Diagrammdaten (Start/Ende von Phasen). - \*\*user\_information\*\*: Benutzerinformationen. - \*\*session\_date\*\*: Sitzungsdatum. - \*\*comments\*\*: Kommentare.\
> \### Fehlerbehandlung - \*\*400 Ungültige Anfrage\*\*: Ungültige Parameter. - \*\*401 Nicht autorisiert\*\*: Fehlender/ungültiger Token. - \*\*403 Verboten\*\*: Kein gültiger Zahlungsplan. - \*\*404 Nicht gefunden\*\*: Sitzung nicht vorhanden. - \*\*500 Interner Serverfehler\*\*: Unerwarteter 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":{"/weightlifting/sessions/{session_id}/lift-analysis/":{"post":{"operationId":"weightlifting_sessions_lift-analysis_create","summary":"Führt eine biomechanische Analyse einer Gewichtheben-Übung durch","description":"Führt eine vollständige biomechanische Analyse einer Gewichtheben-Sitzung durch (`snatch`, `clean`, etc.).\n### Pfadparameter - **session_id** *(string, erforderlich)*: Die eindeutige ID der Sitzung.\n### Abfrageparameter (optional) - **demo** *(boolean)*: Auf `true` setzen, um eine Demo-Analyse abzurufen.\n### Antwortstruktur (HTTP 200) Die Antwort ist ein JSON-Bericht mit: - **exercise**: Die Übung (z.B. \"snatch\"). - **key_metrics**: Schlüsselmetriken (Leistung, Bodenreaktionskraft, Hantelgeschwindigkeit). - **body_positioning**: Körperpositionen (Hüftgeschwindigkeit, Schienbeinwinkel, etc.). - **joint_angles**: Gelenkwinkel. - **barbell_positioning**: Hantelpositionen. - **phase_data**: Phasendaten (Bilder, Durchschnittszeiten). - **chart_data**: Diagrammdaten (Start/Ende von Phasen). - **user_information**: Benutzerinformationen. - **session_date**: Sitzungsdatum. - **comments**: Kommentare.\n### Fehlerbehandlung - **400 Ungültige Anfrage**: Ungültige Parameter. - **401 Nicht autorisiert**: Fehlender/ungültiger Token. - **403 Verboten**: Kein gültiger Zahlungsplan. - **404 Nicht gefunden**: Sitzung nicht vorhanden. - **500 Interner Serverfehler**: Unerwarteter 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 Sitzungs-ID für die Analyse.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Auf `true` setzen, um eine Demo-Analyse abzurufen.","required":false}],"responses":{"200":{"description":"Lift-Analysebericht erfolgreich generiert.","content":{"application/json":{"schema":{"type":"object","properties":{"exercise":{"type":"string"},"key_metrics":{"type":"object","additionalProperties":{"type":"array","items":{"type":"number"}}},"body_positioning":{"type":"object","additionalProperties":{"type":"array","items":{"type":"number"}}},"joint_angles":{"type":"object","additionalProperties":{"type":"array","items":{"type":"number"}}},"barbell_positioning":{"type":"object","additionalProperties":{"type":"array","items":{"type":"number"}}},"phase_data":{"type":"object","additionalProperties":{"type":"object","properties":{"average_time_ms":{"type":"integer"}}}},"chart_data":{"type":"object","additionalProperties":{"type":"object","properties":{"start":{"type":"integer"},"end":{"type":"integer"}}}},"user_information":{"type":"object","additionalProperties":{"type":"string"}},"session_date":{"type":"string","format":"date"},"comments":{"type":"object"}}}}}},"400":{"description":"Ungültige Anfrage - Ungültige Sitzungsdaten.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Fehlender oder ungültiger Token.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung.","type":"string"}}}}}},"403":{"description":"Verboten - Administratorzugriff erforderlich.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Sitzung nicht gefunden oder kein gültiger Zahlungsplan.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Unerwarteter Fehler.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung.","type":"string"}}}}}}},"tags":["weightlifting"]}}}}
```

## Erzeuge Kommentar-Threads zur Lift-Analyse für eine Gewichtheber-Session

> \### Erzeuge Kommentar-Threads zur Lift-Analyse\
> Erstellt einen GenAI-Thread pro Lift-Analyse-Metrik (Leistung, Kraft, Hantelgeschwindigkeit, Gelenkwinkel etc.), damit der Assistent präzise Coaching-Kommentare für jede Metrik liefern kann.\
> \*\*Anwendungsbeispiel:\*\*\
> \`POST /weightlifting/sessions/{session\_id}/recommendation/\`\
> \*\*Parameter:\*\*\
> \- \`session\_id\` \*(string, erforderlich)\* – Identifikator der zu analysierenden Gewichtheber-Session.\
> \- \`measurement\_system\` \*(query, optional)\* – \`'metric'\` (Standard) oder \`'imperial'\`; bestimmt die in den Prompts verwendeten Einheiten.\
> \*\*Antwort-Struktur:\*\*\
> Ein JSON-Objekt, das jede angefragte Metrik der ID des dafür erstellten GenAI-Threads zuordnet.\
> \*\*Beispielantwort:\*\*\
> \`\`\`json {\
> &#x20; "power\_output":           "thread\_a12b34",\
> &#x20; "ground\_reaction\_force":  "thread\_c56d78",\
> &#x20; "barbell\_velocity":       "thread\_e90f12",\
> &#x20; "hip\_velocity":           "thread\_g34h56",\
> &#x20; "shin\_angle":             "thread\_i78j90",\
> &#x20; "hip\_height":             "thread\_k12l34",\
> &#x20; "torso\_angle":            "thread\_m56n78",\
> &#x20; "hip\_angle":              "thread\_o90p12",\
> &#x20; "knee\_angle":             "thread\_q34r56",\
> &#x20; "bar\_height":             "thread\_s78t90",\
> &#x20; "barbell\_trajectory":     "thread\_u12v34",\
> &#x20; "vertical\_shoulder\_height":"thread\_w56x78"\
> } \`\`\`\
> \*\*Hinweise:\*\*\
> \- \`session\_id\` muss auf eine existierende Gewichtheber-Session verweisen.\
> \- Der Aufrufer benötigt entsprechende Berechtigungen (gültiges Token & Zahlungsplan).\
> \- Verwenden Sie die zurückgegebenen Thread-IDs, um die generierten Kommentare später abzurufen.

````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":{"/weightlifting/sessions/{session_id}/recommendation/":{"post":{"operationId":"weightlifting_sessions_recommendation_create","summary":"Erzeuge Kommentar-Threads zur Lift-Analyse für eine Gewichtheber-Session","description":"### Erzeuge Kommentar-Threads zur Lift-Analyse\nErstellt einen GenAI-Thread pro Lift-Analyse-Metrik (Leistung, Kraft, Hantelgeschwindigkeit, Gelenkwinkel etc.), damit der Assistent präzise Coaching-Kommentare für jede Metrik liefern kann.\n**Anwendungsbeispiel:**\n`POST /weightlifting/sessions/{session_id}/recommendation/`\n**Parameter:**\n- `session_id` *(string, erforderlich)* – Identifikator der zu analysierenden Gewichtheber-Session.\n- `measurement_system` *(query, optional)* – `'metric'` (Standard) oder `'imperial'`; bestimmt die in den Prompts verwendeten Einheiten.\n**Antwort-Struktur:**\nEin JSON-Objekt, das jede angefragte Metrik der ID des dafür erstellten GenAI-Threads zuordnet.\n**Beispielantwort:**\n```json {\n  \"power_output\":           \"thread_a12b34\",\n  \"ground_reaction_force\":  \"thread_c56d78\",\n  \"barbell_velocity\":       \"thread_e90f12\",\n  \"hip_velocity\":           \"thread_g34h56\",\n  \"shin_angle\":             \"thread_i78j90\",\n  \"hip_height\":             \"thread_k12l34\",\n  \"torso_angle\":            \"thread_m56n78\",\n  \"hip_angle\":              \"thread_o90p12\",\n  \"knee_angle\":             \"thread_q34r56\",\n  \"bar_height\":             \"thread_s78t90\",\n  \"barbell_trajectory\":     \"thread_u12v34\",\n  \"vertical_shoulder_height\":\"thread_w56x78\"\n} ```\n**Hinweise:**\n- `session_id` muss auf eine existierende Gewichtheber-Session verweisen.\n- Der Aufrufer benötigt entsprechende Berechtigungen (gültiges Token & Zahlungsplan).\n- Verwenden Sie die zurückgegebenen Thread-IDs, um die generierten Kommentare später abzurufen.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Eindeutiger Identifikator der Session","required":true},{"schema":{"type":"string","enum":["metric","imperial"]},"name":"measurement_system","in":"query","description":"In den Prompts verwendetes Maßsystem","required":false}],"responses":{"201":{"description":"Threads erfolgreich erstellt.","content":{"application/json":{"schema":{"description":"Wörterbuch, das Lift-Metriken Thread-IDs zuordnet.","required":["power_output","ground_reaction_force","barbell_velocity","hip_velocity","shin_angle","hip_height","torso_angle","hip_angle","knee_angle","bar_height","barbell_trajectory","vertical_shoulder_height"],"type":"object","properties":{"power_output":{"description":"Thread-ID für Leistungsausgabe.","type":"string"},"ground_reaction_force":{"description":"Thread-ID für Bodenreaktionskraft.","type":"string"},"barbell_velocity":{"description":"Thread-ID für Hantelgeschwindigkeit.","type":"string"},"hip_velocity":{"description":"Thread-ID für Hüftgeschwindigkeit.","type":"string"},"shin_angle":{"description":"Thread-ID für Schienbeinwinkel.","type":"string"},"hip_height":{"description":"Thread-ID für Hüfthöhe.","type":"string"},"torso_angle":{"description":"Thread-ID für Rumpfwinkel.","type":"string"},"hip_angle":{"description":"Thread-ID für Hüftgelenkwinkel.","type":"string"},"knee_angle":{"description":"Thread-ID für Kniegelenkwinkel.","type":"string"},"bar_height":{"description":"Thread-ID für maximale Hantelhöhe.","type":"string"},"barbell_trajectory":{"description":"Thread-ID für Hantelpfad.","type":"string"},"vertical_shoulder_height":{"description":"Thread-ID für Schulterhöhe.","type":"string"}}}}}},"400":{"description":"Ungültige Anfrage - Fehlerhafte Parameter.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung zur ungültigen Anfrage.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Token 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 benötigt werden.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Session nicht vorhanden oder Nutzer hat keinen gültigen Zahlungsplan.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, die anzeigt, dass die Session nicht gefunden wurde oder der Zahlungsplan ungültig ist.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Unerwarteter Fehler aufgetreten.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung zu einem Server-seitigen Fehler.","type":"string"}}}}}}},"tags":["weightlifting"]}}}}
````

## Zusammenfassung für eine Gewichtheber-Session generieren

> \### Zusammenfassungs-Threads generieren\
> Dieser Endpunkt generiert Zusammenfassungs-Threads für eine gegebene Session basierend auf vordefinierten Zusammenfassungsblöcken und Metriken.\
> \*\*Anwendungsbeispiel:\*\*\
> Senden Sie eine \`POST\`-Anfrage an \`/weightlifting/sessions/{session\_id}/summary/\` wobei \`{session\_id}\` der eindeutige Identifikator der Session ist.\
> \*\*Parameter:\*\*\
> \- \`session\_id\` \*(string, erforderlich)\*: Der eindeutige Identifikator der Session, für die Zusammenfassungs-Threads generiert werden sollen.\
> \*\*Antwort-Struktur:\*\*\
> Bei erfolgreicher Anfrage gibt der Endpunkt ein JSON-Objekt zurück, das jeden Blocknamen seiner entsprechenden Thread-ID zuordnet.\
> \*\*Beispielantwort:\*\*\
> \`\`\`json {\
> &#x20;   "velocity": "thread\_thread\_id",\
> &#x20;   "power": "thread\_thread\_id",\
> &#x20;   "stability": "thread\_thread\_id",\
> &#x20;   "final\_summary": "thread\_thread\_id",\
> } \`\`\`\
> \*\*Hinweise:\*\*\
> \- Stellen Sie sicher, dass die angegebene \`session\_id\` gültig ist und einer existierenden Session im System entspricht.\
> \- Der Nutzer muss die notwendigen Berechtigungen haben, um Zusammenfassungs-Threads zu generieren.

````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":{"/weightlifting/sessions/{session_id}/summary/":{"post":{"operationId":"weightlifting_sessions_summary_create","summary":"Zusammenfassung für eine Gewichtheber-Session generieren","description":"### Zusammenfassungs-Threads generieren\nDieser Endpunkt generiert Zusammenfassungs-Threads für eine gegebene Session basierend auf vordefinierten Zusammenfassungsblöcken und Metriken.\n**Anwendungsbeispiel:**\nSenden Sie eine `POST`-Anfrage an `/weightlifting/sessions/{session_id}/summary/` wobei `{session_id}` der eindeutige Identifikator der Session ist.\n**Parameter:**\n- `session_id` *(string, erforderlich)*: Der eindeutige Identifikator der Session, für die Zusammenfassungs-Threads generiert werden sollen.\n**Antwort-Struktur:**\nBei erfolgreicher Anfrage gibt der Endpunkt ein JSON-Objekt zurück, das jeden Blocknamen seiner entsprechenden Thread-ID zuordnet.\n**Beispielantwort:**\n```json {\n    \"velocity\": \"thread_thread_id\",\n    \"power\": \"thread_thread_id\",\n    \"stability\": \"thread_thread_id\",\n    \"final_summary\": \"thread_thread_id\",\n} ```\n**Hinweise:**\n- Stellen Sie sicher, dass die angegebene `session_id` gültig ist und einer existierenden Session im System entspricht.\n- Der Nutzer muss die notwendigen Berechtigungen haben, um Zusammenfassungs-Threads zu generieren.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Der eindeutige Identifikator der Session","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 - Fehlerhafte Parameter.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung zur ungültigen Anfrage.","type":"string"}}}}}},"401":{"description":"Nicht autorisiert - Token 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 benötigt werden.","type":"string"}}}}}},"404":{"description":"Nicht gefunden - Session nicht vorhanden oder Nutzer hat keinen gültigen Zahlungsplan.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Fehlermeldung, die anzeigt, dass die Session nicht gefunden wurde oder der Zahlungsplan ungültig ist.","type":"string"}}}}}},"500":{"description":"Interner Serverfehler - Unerwarteter Fehler aufgetreten.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Detaillierte Fehlermeldung zu einem Server-seitigen Fehler.","type":"string"}}}}}}},"tags":["weightlifting"]}}}}
````


---

# 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/weightlifting.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.
