# Saut

## Créer une nouvelle session de traitement vidéo

> Ce point de terminaison permet à un \*\*administrateur\*\* (ou sous-admin) d'uploader un \*\*fichier vidéo\*\* pour traitement et de créer une nouvelle ressource "session" \*\*au nom d'un autre utilisateur\*\*.  Le serveur renverra un \`session\_id\` qui peut être utilisé pour interroger ou récupérer les détails/résultats de la session.\
> \### Corps de la requête (Multipart/Form-Data)\
> Vous devez fournir les champs suivants :\
> \- \*\*user\_id\*\* \*(string, obligatoire)\* : L'ID de l'utilisateur pour lequel cette session est créée. - \*\*video\*\* \*(file, obligatoire)\* : Le fichier vidéo brut à traiter. - \*\*session\_name\*\* \*(string, optionnel)\* : Un nom/lisible pour la session. - \*\*exercise\*\* \*(string, obligatoire)\* : Le nom de l'exercice. Choisissez parmi : 'Saut avec contre-mouvement' ou 'Saut en contrebas'. - \*\*body\_joint\_angles\*\* \*(array\[string], optionnel)\* : Une liste séparée par des virgules de noms d'articulations (ex. 'coude, genou, cheville'). Par défaut \['all'] si non fourni.\
> \### Structure de la réponse\
> En cas de succès (HTTP 200), la réponse est un objet JSON avec : - \*\*session\_id\*\* \*(string)\* : Un identifiant unique pour la session créée. - \*\*title\*\* \*(string)\* : Le titre de la session (par défaut une valeur de repli si \`session\_name\` n'est pas fourni).\
> \### Workflow\
> 1\. \*\*POST\*\* une requête multipart/form-data contenant les champs obligatoires \`user\_id\` et \`video\`, plus les champs optionnels. 2. Fournir un token API-KEY valide dans l'en-tête \`Authorization\`. 3. L'appelant doit avoir des privilèges admin pour créer une session pour un autre utilisateur. 4. Si réussi, le serveur répond avec \`session\_id\` et \`title\`. 5. En cas d'erreur (champs manquants, permissions insuffisantes), un objet JSON avec une clé \`error\` est retourné.\
> \#### Exemple cURL (authentification Firebase) :\
> \`\`\`bash curl -X POST \\\
> &#x20;    -H 'Content-Type: multipart/form-data' \\\
> &#x20;    -H 'Authorization: API-KEY \<VOTRE\_TOKEN\_ADMIN>' \\\
> &#x20;    -F 'user\_id=someUserId123' \\\
> &#x20;    -F 'video=@/chemin/vers/video.mp4' \\\
> &#x20;    -F 'session\_name=Session Personnalisée' \\\
> &#x20;    -F 'exercise=Saut avec contre-mouvement' \\\
> &#x20;    -F 'body\_joint\_angles=genou, cheville' \\\
> &#x20;    https\://\<backend-link>/jumping/management/sessions/\
> \`\`\`\
> \#### Exemple cURL (API KEY) :\
> \`\`\`bash curl -X POST \\\
> &#x20;    -H 'Content-Type: multipart/form-data' \\\
> &#x20;    -H 'API-KEY: \<VOTRE\_CLÉ\_API>' \\\
> &#x20;    -F 'user\_id=someUserId123' \\\
> &#x20;    -F 'video=@/chemin/vers/video.mp4' \\\
> &#x20;    -F 'session\_name=Course Matinale' \\\
> &#x20;    -F 'exercise=Saut avec contre-mouvement' \\\
> &#x20;    -F 'body\_joint\_angles=genou, cheville' \\\
> &#x20;    https\://\<backend-link>/jumping/management/sessions/\
> \`\`\`<br>

````json
{"openapi":"3.1.1","info":{"title":"API WEB AIKYNETIX","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Entrez votre token Bearer (authentification Firebase) au format : Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Entrez votre clé API dans l'en-tête : API-KEY: <api_key>"}}},"paths":{"/jumping/sessions/":{"post":{"operationId":"jumping_sessions_create","summary":"Créer une nouvelle session de traitement vidéo","description":"Ce point de terminaison permet à un **administrateur** (ou sous-admin) d'uploader un **fichier vidéo** pour traitement et de créer une nouvelle ressource \"session\" **au nom d'un autre utilisateur**.  Le serveur renverra un `session_id` qui peut être utilisé pour interroger ou récupérer les détails/résultats de la session.\n### Corps de la requête (Multipart/Form-Data)\nVous devez fournir les champs suivants :\n- **user_id** *(string, obligatoire)* : L'ID de l'utilisateur pour lequel cette session est créée. - **video** *(file, obligatoire)* : Le fichier vidéo brut à traiter. - **session_name** *(string, optionnel)* : Un nom/lisible pour la session. - **exercise** *(string, obligatoire)* : Le nom de l'exercice. Choisissez parmi : 'Saut avec contre-mouvement' ou 'Saut en contrebas'. - **body_joint_angles** *(array[string], optionnel)* : Une liste séparée par des virgules de noms d'articulations (ex. 'coude, genou, cheville'). Par défaut ['all'] si non fourni.\n### Structure de la réponse\nEn cas de succès (HTTP 200), la réponse est un objet JSON avec : - **session_id** *(string)* : Un identifiant unique pour la session créée. - **title** *(string)* : Le titre de la session (par défaut une valeur de repli si `session_name` n'est pas fourni).\n### Workflow\n1. **POST** une requête multipart/form-data contenant les champs obligatoires `user_id` et `video`, plus les champs optionnels. 2. Fournir un token API-KEY valide dans l'en-tête `Authorization`. 3. L'appelant doit avoir des privilèges admin pour créer une session pour un autre utilisateur. 4. Si réussi, le serveur répond avec `session_id` et `title`. 5. En cas d'erreur (champs manquants, permissions insuffisantes), un objet JSON avec une clé `error` est retourné.\n#### Exemple cURL (authentification Firebase) :\n```bash curl -X POST \\\n     -H 'Content-Type: multipart/form-data' \\\n     -H 'Authorization: API-KEY <VOTRE_TOKEN_ADMIN>' \\\n     -F 'user_id=someUserId123' \\\n     -F 'video=@/chemin/vers/video.mp4' \\\n     -F 'session_name=Session Personnalisée' \\\n     -F 'exercise=Saut avec contre-mouvement' \\\n     -F 'body_joint_angles=genou, cheville' \\\n     https://<backend-link>/jumping/management/sessions/\n```\n#### Exemple cURL (API KEY) :\n```bash curl -X POST \\\n     -H 'Content-Type: multipart/form-data' \\\n     -H 'API-KEY: <VOTRE_CLÉ_API>' \\\n     -F 'user_id=someUserId123' \\\n     -F 'video=@/chemin/vers/video.mp4' \\\n     -F 'session_name=Course Matinale' \\\n     -F 'exercise=Saut avec contre-mouvement' \\\n     -F 'body_joint_angles=genou, cheville' \\\n     https://<backend-link>/jumping/management/sessions/\n```\n","responses":{"200":{"description":"Session de traitement vidéo créée avec succès (HTTP 200).","content":{"application/json":{"schema":{"required":["session_id","title"],"type":"object","properties":{"session_id":{"description":"L'identifiant unique de la session créée.","type":"string"},"title":{"description":"Le titre de la session (valeur par défaut si non fourni).","type":"string"}}}}}},"400":{"description":"Requête incorrecte - Peut être dû à un `user_id` manquant, une `video` manquante ou des données de formulaire invalides.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur détaillé.","type":"string"}}}}}},"401":{"description":"Non autorisé - Token d'accès manquant ou invalide.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Erreur indiquant un token manquant ou invalide.","type":"string"}}}}}},"403":{"description":"Interdit - L'utilisateur n'a pas la permission admin pour créer des sessions pour d'autres.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Erreur indiquant des privilèges insuffisants.","type":"string"}}}}}},"404":{"description":"Non trouvé - Indique des problèmes de logique métier ou des limitations de ressources (ex. limite de sessions).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur décrivant le problème.","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Une erreur inattendue s'est produite.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur détaillé indiquant une erreur côté serveur.","type":"string"}}}}}}},"tags":["jumping"],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"user_id":{"type":"string","description":"**Obligatoire.** L'ID de l'utilisateur pour qui cette session est créée (champ texte)."},"video":{"type":"string","description":"**Obligatoire.** Le fichier vidéo brut à traiter (type de champ : fichier)."},"session_name":{"type":"string","description":"**Optionnel.** Un nom descriptif pour la session (champ texte)."},"exercise":{"type":"string","description":"**Obligatoire.** Le nom de l'exercice. Choisissez parmi : 'Saut avec contre-mouvement' ou 'Saut en contrebas'."},"body_joint_angles":{"type":"array","description":"**Optionnel.** Une liste séparée par des virgules de noms d'articulations. Valeurs disponibles : `'cheville'`, `'genou'`, `'coude'`, `'hanche'`, `'épaule'`. Exemple : `cheville,genou,hanche`"}},"required":["user_id","video","exercise"]}}}}}}}}
````

## Obtenir les données d'une session de saut

> Récupère des informations détaillées sur une session de saut spécifique en utilisant son identifiant unique \`session\_id\`.\
> Optionnellement, définissez \`?demo=true\` pour récupérer la session de démonstration prédéfinie pour l'activité de saut.\
> \*\*Exemple d'utilisation :\*\* Envoyez une requête GET avec le \`session\_id\` comme paramètre de chemin pour obtenir les détails de la session.\
> \*\*Paramètres :\*\* - \`session\_id\` \*(string, obligatoire)\* : L'identifiant unique de la session dont les données sont demandées. - \`demo\` \*(booléen, optionnel)\* : Définissez à \`true\` pour retourner la session de démonstration pour le saut.\
> \*\*Type de données de réponse :\*\* - \*\*200 OK :\*\* Un objet JSON avec la structure suivante :\
> &#x20; \- \`angles\` \*(object)\* : Contient des tableaux de différentes mesures d'angles.\
> &#x20; \- \`whole\_report\_metrics\` \*(object)\* : Contient des tableaux de différentes métriques.\
> &#x20; \- \`all\_timestamps\` \*(array of numbers)\* : Tableau des horodatages pour chaque frame.\
> &#x20; \- \`analyzed\_video\_url\` \*(string, URI)\* : URL de la vidéo analysée.\
> &#x20; \- \`video\_url\` \*(string, URI)\* : URL de la vidéo originale.\
> &#x20; \- \`created\_at\` \*(object)\* : Contient la date et l'heure de création de la session.\
> &#x20; \- \`exercise\` \*(string)\* : Type d'exercice analysé dans la session.\
> &#x20; \- \`user\_name\` \*(string)\* : Nom de l'utilisateur associé à la session.\
> &#x20; \- \`activity\` \*(string)\* : Type d'activité analysée dans la session.\
> &#x20; \- \`title\` \*(string)\* : Titre de la session.\
> &#x20; \- \`end\_frames\` \*(array of integers)\* : Tableau des numéros de frame où chaque segment se termine.\
> &#x20; \- \`metrics\` \*(object)\* : Contient diverses métriques de performance comme des tableaux de nombres.

```json
{"openapi":"3.1.1","info":{"title":"API WEB AIKYNETIX","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Entrez votre token Bearer (authentification Firebase) au format : Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Entrez votre clé API dans l'en-tête : API-KEY: <api_key>"}}},"paths":{"/jumping/sessions/{session_id}/":{"get":{"operationId":"jumping_sessions_read","summary":"Obtenir les données d'une session de saut","description":"Récupère des informations détaillées sur une session de saut spécifique en utilisant son identifiant unique `session_id`.\nOptionnellement, définissez `?demo=true` pour récupérer la session de démonstration prédéfinie pour l'activité de saut.\n**Exemple d'utilisation :** Envoyez une requête GET avec le `session_id` comme paramètre de chemin pour obtenir les détails de la session.\n**Paramètres :** - `session_id` *(string, obligatoire)* : L'identifiant unique de la session dont les données sont demandées. - `demo` *(booléen, optionnel)* : Définissez à `true` pour retourner la session de démonstration pour le saut.\n**Type de données de réponse :** - **200 OK :** Un objet JSON avec la structure suivante :\n  - `angles` *(object)* : Contient des tableaux de différentes mesures d'angles.\n  - `whole_report_metrics` *(object)* : Contient des tableaux de différentes métriques.\n  - `all_timestamps` *(array of numbers)* : Tableau des horodatages pour chaque frame.\n  - `analyzed_video_url` *(string, URI)* : URL de la vidéo analysée.\n  - `video_url` *(string, URI)* : URL de la vidéo originale.\n  - `created_at` *(object)* : Contient la date et l'heure de création de la session.\n  - `exercise` *(string)* : Type d'exercice analysé dans la session.\n  - `user_name` *(string)* : Nom de l'utilisateur associé à la session.\n  - `activity` *(string)* : Type d'activité analysée dans la session.\n  - `title` *(string)* : Titre de la session.\n  - `end_frames` *(array of integers)* : Tableau des numéros de frame où chaque segment se termine.\n  - `metrics` *(object)* : Contient diverses métriques de performance comme des tableaux de nombres.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant unique de la session.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Définissez à `true` pour récupérer la session de démonstration au lieu de la réelle.","required":false}],"responses":{"200":{"description":"Données de session récupérées avec succès.","content":{"application/json":{"schema":{"required":["angles","whole_report_metrics","all_timestamps","analyzed_video_url","video_url","created_at","user_name","exercise","activity","title","end_frames","all_end_frames","metrics","all_metrics"],"type":"object","properties":{"angles":{"required":["hip_intersection_angle","ank_angle","rkne_angle","lkne_angle","kne_angle","rank_angle","lank_angle"],"type":"object","properties":{"hip_intersection_angle":{"description":"Tableau des angles d'intersection de la hanche.","type":"array","items":{"type":"number"}},"ank_angle":{"description":"Tableau des angles de la cheville.","type":"array","items":{"type":"number"}},"rkne_angle":{"description":"Tableau des angles du genou droit.","type":"array","items":{"type":"number"}},"lkne_angle":{"description":"Tableau des angles du genou gauche.","type":"array","items":{"type":"number"}},"kne_angle":{"description":"Tableau des angles des genoux.","type":"array","items":{"type":"number"}},"rank_angle":{"description":"Tableau des angles de la cheville droite.","type":"array","items":{"type":"number"}},"lank_angle":{"description":"Tableau des angles de la cheville gauche.","type":"array","items":{"type":"number"}}}},"whole_report_metrics":{"required":["hipy","grf","vhipy","toey","ahipy","vtoey"],"type":"object","properties":{"hipy":{"description":"Tableau des valeurs de hauteur de hanche.","type":"array","items":{"type":"number"}},"grf":{"description":"Tableau des forces de réaction au sol.","type":"array","items":{"type":"number"}},"vhipy":{"description":"Tableau des valeurs de vitesse de hanche.","type":"array","items":{"type":"number"}},"toey":{"description":"Tableau des positions de l'orteil sur l'axe Y.","type":"array","items":{"type":"number"}},"ahipy":{"description":"Tableau des positions moyennes de la hanche sur l'axe Y.","type":"array","items":{"type":"number"}},"vtoey":{"description":"Tableau des vitesses verticales de l'orteil.","type":"array","items":{"type":"number"}}}},"all_timestamps":{"description":"Tableau des horodatages pour chaque frame.","type":"array","items":{"type":"number"}},"analyzed_video_url":{"description":"URL de la vidéo analysée.","type":"string","format":"uri"},"video_url":{"description":"URL de la vidéo originale.","type":"string","format":"uri"},"created_at":{"description":"Objet contenant la date et l'heure de création de la session.","required":["date","time"],"type":"object","properties":{"date":{"description":"Date de création de la session au format 'AAAA-MM-JJ'.","type":"string","format":"date"},"time":{"description":"Heure de création de la session au format 'HH:MM AM/PM'.","type":"string","format":"time"}}},"exercise":{"description":"Type d'exercice analysé dans la session.","type":"string"},"user_name":{"description":"Nom de l'utilisateur associé à la session.","type":"string"},"activity":{"description":"Type d'activité analysée dans la session.","type":"string"},"title":{"description":"Titre de la session.","type":"string"},"end_frames":{"description":"Tableau des numéros de frame où chaque segment se termine.","type":"array","items":{"type":"integer"}},"all_end_frames":{"description":"Tableau de tous les numéros de frame où les segments se terminent.","type":"array","items":{"type":"integer"}},"metrics":{"description":"Objet contenant diverses métriques de performance.","type":"object","additionalProperties":{"description":"Tableau de valeurs numériques pour chaque métrique.","type":"array","items":{"type":"number"}}},"all_metrics":{"description":"Objet contenant toutes les métriques de performance.","type":"object","additionalProperties":{"description":"Tableau de valeurs numériques pour chaque métrique.","type":"array","items":{"type":"number"}}}}}}}},"400":{"description":"Requête incorrecte - `session_id` invalide fourni.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"401":{"description":"Non autorisé - Token d'accès manquant ou invalide.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"403":{"description":"Interdit - L'utilisateur manque des permissions nécessaires.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"404":{"description":"Non trouvé - Aucune donnée de session trouvée pour le `session_id` fourni.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Une erreur inattendue s'est produite.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}}},"tags":["jumping"]}}}}
```

## Exporter les données d'une session de saut

> Récupère des informations détaillées sur une session de saut spécifique en utilisant son identifiant unique \`session\_id\`.\
> Optionnellement, définissez \`?demo=true\` pour récupérer la session de démonstration prédéfinie pour l'activité de saut.\
> \*\*Note :\*\* Ce point de terminaison inclut les points de repère dans la réponse.\
> \*\*Structure de la réponse :\*\* - \*\*200 OK :\*\* Un objet JSON avec la structure suivante :\
> &#x20; \- \`keypoints\` \*(object)\* : Contient des tableaux de points de repère.\
> &#x20; \- \`angles\` \*(object)\* : Contient des tableaux de différentes mesures d'angles.\
> &#x20; \- \`all\_timestamps\` \*(array of numbers)\* : Tableau des horodatages pour chaque frame.\
> &#x20; \- \`analyzed\_video\_url\` \*(string, URI)\* : URL de la vidéo analysée.\
> &#x20; \- \`video\_url\` \*(string, URI)\* : URL de la vidéo originale.\
> &#x20; \- \`created\_at\` \*(object)\* : Contient la date et l'heure de création de la session.\
> &#x20; \- \`user\_name\` \*(string)\* : Nom de l'utilisateur associé à la session.\
> &#x20; \- \`activity\` \*(string)\* : Type d'activité analysée.\
> &#x20; \- \`title\` \*(string)\* : Titre de la session.\
> &#x20; \- \`end\_frames\` \*(array of integers)\* : Tableau des numéros de frame où chaque segment se termine.\
> &#x20; \- \`metrics\` \*(object)\* : Contient diverses métriques de performance comme des tableaux de nombres.

```json
{"openapi":"3.1.1","info":{"title":"API WEB AIKYNETIX","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Entrez votre token Bearer (authentification Firebase) au format : Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Entrez votre clé API dans l'en-tête : API-KEY: <api_key>"}}},"paths":{"/jumping/sessions/{session_id}/export/":{"get":{"operationId":"jumping_sessions_export_list","summary":"Exporter les données d'une session de saut","description":"Récupère des informations détaillées sur une session de saut spécifique en utilisant son identifiant unique `session_id`.\nOptionnellement, définissez `?demo=true` pour récupérer la session de démonstration prédéfinie pour l'activité de saut.\n**Note :** Ce point de terminaison inclut les points de repère dans la réponse.\n**Structure de la réponse :** - **200 OK :** Un objet JSON avec la structure suivante :\n  - `keypoints` *(object)* : Contient des tableaux de points de repère.\n  - `angles` *(object)* : Contient des tableaux de différentes mesures d'angles.\n  - `all_timestamps` *(array of numbers)* : Tableau des horodatages pour chaque frame.\n  - `analyzed_video_url` *(string, URI)* : URL de la vidéo analysée.\n  - `video_url` *(string, URI)* : URL de la vidéo originale.\n  - `created_at` *(object)* : Contient la date et l'heure de création de la session.\n  - `user_name` *(string)* : Nom de l'utilisateur associé à la session.\n  - `activity` *(string)* : Type d'activité analysée.\n  - `title` *(string)* : Titre de la session.\n  - `end_frames` *(array of integers)* : Tableau des numéros de frame où chaque segment se termine.\n  - `metrics` *(object)* : Contient diverses métriques de performance comme des tableaux de nombres.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant unique de la session.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Définissez à `true` pour récupérer la session de démonstration au lieu de la réelle.","required":false}],"responses":{"200":{"description":"Données de session récupérées avec succès.","content":{"application/json":{"schema":{"required":["keypoints","angles","all_timestamps","analyzed_video_url","video_url","created_at","user_name","activity","title","end_frames","metrics"],"type":"object","properties":{"keypoints":{"required":["lknev","ltoev","relbv","rtoey","headv","rearv","rshox","etc"],"type":"object","properties":{"lknev":{"description":"Tableau des points de repère du genou gauche.","type":"array","items":{"type":"number"}},"ltoev":{"description":"Tableau des points de repère de l'orteil gauche.","type":"array","items":{"type":"number"}},"relbv":{"description":"Tableau des points de repère du coude droit.","type":"array","items":{"type":"number"}},"rtoey":{"description":"Tableau des points de repère de l'orteil droit.","type":"array","items":{"type":"number"}},"headv":{"description":"Tableau des points de repère de la tête.","type":"array","items":{"type":"number"}},"rearv":{"description":"Tableau des points de repère de l'oreille droite.","type":"array","items":{"type":"number"}},"rshox":{"description":"Tableau des points de repère de l'épaule droite.","type":"array","items":{"type":"number"}},"etc":{"description":"Tous les autres points de repère.","type":"array","items":{"type":"number"}}}},"angles":{"required":["hip_intersection_angle","ank_angle","rkne_angle","lkne_angle","kne_angle","rank_angle","lank_angle"],"type":"object","properties":{"hip_intersection_angle":{"description":"Tableau des angles d'intersection de la hanche.","type":"array","items":{"type":"number"}},"ank_angle":{"description":"Tableau des angles de la cheville.","type":"array","items":{"type":"number"}},"rkne_angle":{"description":"Tableau des angles du genou droit.","type":"array","items":{"type":"number"}},"lkne_angle":{"description":"Tableau des angles du genou gauche.","type":"array","items":{"type":"number"}},"kne_angle":{"description":"Tableau des angles des genoux.","type":"array","items":{"type":"number"}},"rank_angle":{"description":"Tableau des angles de la cheville droite.","type":"array","items":{"type":"number"}},"lank_angle":{"description":"Tableau des angles de la cheville gauche.","type":"array","items":{"type":"number"}}}},"all_timestamps":{"description":"Tableau des horodatages pour chaque frame.","type":"array","items":{"type":"number"}},"analyzed_video_url":{"description":"URL de la vidéo analysée.","type":"string","format":"uri"},"video_url":{"description":"URL de la vidéo originale.","type":"string","format":"uri"},"created_at":{"description":"Objet contenant la date et l'heure de création de la session.","required":["date","time"],"type":"object","properties":{"date":{"description":"Date de création de la session au format 'AAAA-MM-JJ'.","type":"string","format":"date"},"time":{"description":"Heure de création de la session au format 'HH:MM AM/PM'.","type":"string","format":"time"}}},"user_name":{"description":"Nom de l'utilisateur associé à la session.","type":"string"},"activity":{"description":"Type d'activité analysée dans la session.","type":"string"},"title":{"description":"Titre de la session.","type":"string"},"end_frames":{"description":"Tableau des numéros de frame où chaque segment se termine.","type":"array","items":{"type":"integer"}},"metrics":{"description":"Objet contenant diverses métriques de performance.","type":"object","additionalProperties":{"description":"Tableau de valeurs numériques pour chaque métrique.","type":"array","items":{"type":"number"}}}}}}}},"400":{"description":"Requête incorrecte - `session_id` invalide fourni.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"401":{"description":"Non autorisé - Token d'accès manquant ou invalide.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"403":{"description":"Interdit - L'utilisateur manque des permissions nécessaires.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"404":{"description":"Non trouvé - Aucune donnée de session trouvée pour le `session_id` fourni.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Une erreur inattendue s'est produite.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}}},"tags":["jumping"]}}}}
```

## Obtenir le rapport d'analyse de saut

> \### Récupérer le rapport d'analyse de saut vertical\
> Ce point de terminaison permet aux utilisateurs de récupérer un rapport d'analyse complet pour une session de saut vertical spécifique. Le rapport inclut des données graphiques, des détails sur les phases, des informations sur l'utilisateur et des commentaires supplémentaires pour fournir une compréhension approfondie de la performance de l'utilisateur pendant la session.\
> \*\*Exemple d'utilisation :\*\* Envoyez une requête \`POST\` à \`/jumping/{session\_id}/jump-analysis/\` où \`{session\_id}\` est l'identifiant unique de la session.\
> \*\*Paramètres :\*\* - \`session\_id\` \*(string, obligatoire)\* : L'identifiant unique de la session pour laquelle le rapport est demandé. - \`demo\` \*(booléen, optionnel)\* : Définissez à \`true\` pour récupérer le rapport de démonstration prédéfini au lieu de la session réelle.\
> \*\*Structure de la réponse :\*\* Lors d'une requête réussie, le point de terminaison retourne un objet JSON contenant les sections suivantes : 1. \*\*Exercise\*\* : Le nom de l'exercice effectué pendant la session. 2. \*\*Graph Data\*\* : Représentations visuelles de diverses métriques collectées pendant la session. 3. \*\*Frame Information\*\* : Détails sur les frames vidéo impliquées dans la session. 4. \*\*Phase Data\*\* : Informations sur les différentes phases de l'activité de saut vertical. 5. \*\*User Information\*\* : Détails personnels de l'utilisateur. 6. \*\*Session Date\*\* : La date à laquelle la session a eu lieu. 7. \*\*Comments\*\* : Retours et commentaires basés sur la performance de la session.

```json
{"openapi":"3.1.1","info":{"title":"API WEB AIKYNETIX","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Entrez votre token Bearer (authentification Firebase) au format : Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Entrez votre clé API dans l'en-tête : API-KEY: <api_key>"}}},"paths":{"/jumping/sessions/{session_id}/jump-analysis/":{"post":{"operationId":"jumping_sessions_jump-analysis_create","summary":"Obtenir le rapport d'analyse de saut","description":"### Récupérer le rapport d'analyse de saut vertical\nCe point de terminaison permet aux utilisateurs de récupérer un rapport d'analyse complet pour une session de saut vertical spécifique. Le rapport inclut des données graphiques, des détails sur les phases, des informations sur l'utilisateur et des commentaires supplémentaires pour fournir une compréhension approfondie de la performance de l'utilisateur pendant la session.\n**Exemple d'utilisation :** Envoyez une requête `POST` à `/jumping/{session_id}/jump-analysis/` où `{session_id}` est l'identifiant unique de la session.\n**Paramètres :** - `session_id` *(string, obligatoire)* : L'identifiant unique de la session pour laquelle le rapport est demandé. - `demo` *(booléen, optionnel)* : Définissez à `true` pour récupérer le rapport de démonstration prédéfini au lieu de la session réelle.\n**Structure de la réponse :** Lors d'une requête réussie, le point de terminaison retourne un objet JSON contenant les sections suivantes : 1. **Exercise** : Le nom de l'exercice effectué pendant la session. 2. **Graph Data** : Représentations visuelles de diverses métriques collectées pendant la session. 3. **Frame Information** : Détails sur les frames vidéo impliquées dans la session. 4. **Phase Data** : Informations sur les différentes phases de l'activité de saut vertical. 5. **User Information** : Détails personnels de l'utilisateur. 6. **Session Date** : La date à laquelle la session a eu lieu. 7. **Comments** : Retours et commentaires basés sur la performance de la session.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant unique de la session.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Définissez à `true` pour récupérer le rapport de démonstration.","required":false}],"responses":{"200":{"description":"Rapport d'analyse de saut récupéré avec succès.","content":{"application/json":{"schema":{"required":["exercise","graph_data","min_frame","max_frame","phase_data","user_information","session_date","comments"],"type":"object","properties":{"exercise":{"description":"Quel exercice ce rapport concerne.","type":"string","enum":["Saut avec contre-mouvement","Saut en contrebas"]},"graph_data":{"description":"Séries temporelles de métriques pour chaque saut.","type":"object","properties":{"hip_height":{"description":"Déplacement vertical de la hanche au fil du temps.","type":"object","additionalProperties":{"required":["times","data"],"type":"object","properties":{"times":{"description":"Horodatages pour les points de données.","type":"array","items":{"type":"number"}},"data":{"description":"Valeurs des métriques à ces moments.","type":"array","items":{"type":"number"}}}}},"hip_speed":{"description":"Vitesse verticale de la hanche au fil du temps.","type":"object","additionalProperties":{"required":["times","data"],"type":"object","properties":{"times":{"description":"Horodatages pour les points de données.","type":"array","items":{"type":"number"}},"data":{"description":"Valeurs des métriques à ces moments.","type":"array","items":{"type":"number"}}}}},"hip_trajectory":{"description":"Trajectoire de la hanche sur plusieurs sauts en contrebas.","type":"object","additionalProperties":{"required":["times","data"],"type":"object","properties":{"times":{"description":"Horodatages pour les points de données.","type":"array","items":{"type":"number"}},"data":{"description":"Valeurs des métriques à ces moments.","type":"array","items":{"type":"number"}}}}},"hip_velocity":{"description":"Vitesse de la hanche sur plusieurs sauts en contrebas.","type":"object","additionalProperties":{"required":["times","data"],"type":"object","properties":{"times":{"description":"Horodatages pour les points de données.","type":"array","items":{"type":"number"}},"data":{"description":"Valeurs des métriques à ces moments.","type":"array","items":{"type":"number"}}}}},"toe_trajectory":{"description":"Trajectoire de l'orteil sur plusieurs sauts en contrebas.","type":"object","additionalProperties":{"required":["times","data"],"type":"object","properties":{"times":{"description":"Horodatages pour les points de données.","type":"array","items":{"type":"number"}},"data":{"description":"Valeurs des métriques à ces moments.","type":"array","items":{"type":"number"}}}}},"grf":{"description":"Données de force de réaction au sol.","type":"object","additionalProperties":{"required":["times","data"],"type":"object","properties":{"times":{"description":"Horodatages pour les points de données.","type":"array","items":{"type":"number"}},"data":{"description":"Valeurs des métriques à ces moments.","type":"array","items":{"type":"number"}}}}},"power":{"description":"Données de puissance.","type":"object","additionalProperties":{"required":["times","data"],"type":"object","properties":{"times":{"description":"Horodatages pour les points de données.","type":"array","items":{"type":"number"}},"data":{"description":"Valeurs des métriques à ces moments.","type":"array","items":{"type":"number"}}}}},"kne_angle":{"description":"Angle du genou au fil du temps.","type":"object","additionalProperties":{"required":["times","data"],"type":"object","properties":{"times":{"description":"Horodatages pour les points de données.","type":"array","items":{"type":"number"}},"data":{"description":"Valeurs des métriques à ces moments.","type":"array","items":{"type":"number"}}}}},"ank_angle":{"description":"Angle de la cheville au fil du temps.","type":"object","additionalProperties":{"required":["times","data"],"type":"object","properties":{"times":{"description":"Horodatages pour les points de données.","type":"array","items":{"type":"number"}},"data":{"description":"Valeurs des métriques à ces moments.","type":"array","items":{"type":"number"}}}}},"hip_angle":{"description":"Angle de la hanche au fil du temps.","type":"object","additionalProperties":{"required":["times","data"],"type":"object","properties":{"times":{"description":"Horodatages pour les points de données.","type":"array","items":{"type":"number"}},"data":{"description":"Valeurs des métriques à ces moments.","type":"array","items":{"type":"number"}}}}}},"additionalProperties":false},"min_frame":{"description":"Numéro de frame minimum dans la vidéo.","type":"integer"},"max_frame":{"description":"Numéro de frame maximum dans la vidéo.","type":"integer"},"phase_data":{"description":"Informations détaillées sur chaque phase de saut.","required":["start_of_preparation","braking","zero_velocity","takeoff","peak","landing","damping","recuperation"],"type":"object","properties":{"start_of_preparation":{"required":["video_frame","graph_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"braking":{"required":["video_frame","graph_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"zero_velocity":{"required":["video_frame","graph_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"takeoff":{"required":["video_frame","graph_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"peak":{"required":["video_frame","graph_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"landing":{"required":["video_frame","graph_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"damping":{"required":["video_frame","graph_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}},"recuperation":{"required":["video_frame","graph_phase","image_url"],"type":"object","properties":{"video_frame":{"type":"integer"},"graph_phase":{"type":"integer"},"image_url":{"type":"string","format":"uri"}}}}},"user_information":{"description":"Détails personnels de l'utilisateur.","required":["name","age","weight","height","gender"],"type":"object","properties":{"name":{"type":"string"},"age":{"type":"integer"},"weight":{"type":"number"},"height":{"type":"number"},"gender":{"type":"string"}}},"session_date":{"description":"Date de la session (JJ/MM/AAAA).","type":"string","format":"date"},"comments":{"description":"Commentaires de feedback basés sur les métriques de session.","type":"object","properties":{"power":{"type":"string"},"grf":{"type":"string"}}}}}}}},"400":{"description":"Requête incorrecte - `session_id` invalide fourni.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"401":{"description":"Non autorisé - Token d'accès manquant ou invalide.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"403":{"description":"Interdit - L'utilisateur manque des permissions nécessaires.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"404":{"description":"Non trouvé - Aucune donnée de session trouvée pour le `session_id` fourni.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Une erreur inattendue s'est produite.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}}},"tags":["jumping"]}}}}
```

## Créer des threads de recommandations

> \### Créer des threads de recommandations\
> Ce point de terminaison génère des threads de recommandations personnalisés basés sur le rapport d'analyse de saut vertical de l'utilisateur pour une session spécifique. Ces threads peuvent être utilisés pour fournir des conseils personnalisés, des suggestions d'entraînement ou des insights de performance à l'utilisateur.\
> \*\*Exemple d'utilisation :\*\* Envoyez une requête \`POST\` à \`/jumping/sessions/{session\_id}/recommendation/\` où \`{session\_id}\` est l'identifiant unique de la session.\
> \*\*Paramètres :\*\* - \`session\_id\` \*(string, obligatoire)\* : L'identifiant unique de la session pour laquelle les threads de recommandations doivent être créés.\
> \*\*Structure de la réponse :\*\* Lors d'une requête réussie, le point de terminaison retourne un objet JSON contenant les IDs de thread mappés à leurs métriques respectives.\
> \*\*Exemple de réponse pour Saut avec contre-mouvement :\*\* \`\`\`json {\
> &#x20;   "hip\_height": "thread\_ybIdbAtHLSnHM4BnH551X4fT",\
> &#x20;   "hip\_speed": "thread\_MLGE8nAmLYyW3adwIViKiVpL",\
> &#x20;   "grf": "thread\_rBIUL25oD3VLtBaPRDLunFsu",\
> &#x20;   "power": "thread\_UGCg6dZzsRI1YCpSgCf0dgT4",\
> &#x20;   "kne\_angle": "thread\_rEiSblZuq3bzPHRBNXd2etJ6",\
> &#x20;   "ank\_angle": "thread\_QLrCfbBuBBKpmPFFnBkJfcln",\
> &#x20;   "hip\_angle": "thread\_CMWV9HCt85XlpVSORSk4MmCG"\
> } \`\`\`\
> \*\*Exemple de réponse pour Saut en contrebas :\*\* \`\`\`json {\
> &#x20;   "hip\_trajectory": "thread\_ABC123",\
> &#x20;   "hip\_velocity": "thread\_DEF456",\
> &#x20;   "toe\_trajectory": "thread\_GHI789"\
> &#x20;   "grf": "thread\_JKL012",\
> &#x20;   "power": "thread\_MNO345",\
> &#x20;   "kne\_angle": "thread\_PQR678",\
> &#x20;   "ank\_angle": "thread\_STU901",\
> &#x20;   "hip\_angle": "thread\_VWX234"\
> } \`\`\`\
> \*\*Note :\*\* - Assurez-vous que le \`session\_id\` fourni est valide et correspond à une session existante dans le système. - L'utilisateur doit avoir un plan de paiement actif pour accéder à cette fonctionnalité.

````json
{"openapi":"3.1.1","info":{"title":"API WEB AIKYNETIX","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Entrez votre token Bearer (authentification Firebase) au format : Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Entrez votre clé API dans l'en-tête : API-KEY: <api_key>"}}},"paths":{"/jumping/sessions/{session_id}/recommendation/":{"post":{"operationId":"jumping_sessions_recommendation_create","summary":"Créer des threads de recommandations","description":"### Créer des threads de recommandations\nCe point de terminaison génère des threads de recommandations personnalisés basés sur le rapport d'analyse de saut vertical de l'utilisateur pour une session spécifique. Ces threads peuvent être utilisés pour fournir des conseils personnalisés, des suggestions d'entraînement ou des insights de performance à l'utilisateur.\n**Exemple d'utilisation :** Envoyez une requête `POST` à `/jumping/sessions/{session_id}/recommendation/` où `{session_id}` est l'identifiant unique de la session.\n**Paramètres :** - `session_id` *(string, obligatoire)* : L'identifiant unique de la session pour laquelle les threads de recommandations doivent être créés.\n**Structure de la réponse :** Lors d'une requête réussie, le point de terminaison retourne un objet JSON contenant les IDs de thread mappés à leurs métriques respectives.\n**Exemple de réponse pour Saut avec contre-mouvement :** ```json {\n    \"hip_height\": \"thread_ybIdbAtHLSnHM4BnH551X4fT\",\n    \"hip_speed\": \"thread_MLGE8nAmLYyW3adwIViKiVpL\",\n    \"grf\": \"thread_rBIUL25oD3VLtBaPRDLunFsu\",\n    \"power\": \"thread_UGCg6dZzsRI1YCpSgCf0dgT4\",\n    \"kne_angle\": \"thread_rEiSblZuq3bzPHRBNXd2etJ6\",\n    \"ank_angle\": \"thread_QLrCfbBuBBKpmPFFnBkJfcln\",\n    \"hip_angle\": \"thread_CMWV9HCt85XlpVSORSk4MmCG\"\n} ```\n**Exemple de réponse pour Saut en contrebas :** ```json {\n    \"hip_trajectory\": \"thread_ABC123\",\n    \"hip_velocity\": \"thread_DEF456\",\n    \"toe_trajectory\": \"thread_GHI789\"\n    \"grf\": \"thread_JKL012\",\n    \"power\": \"thread_MNO345\",\n    \"kne_angle\": \"thread_PQR678\",\n    \"ank_angle\": \"thread_STU901\",\n    \"hip_angle\": \"thread_VWX234\"\n} ```\n**Note :** - Assurez-vous que le `session_id` fourni est valide et correspond à une session existante dans le système. - L'utilisateur doit avoir un plan de paiement actif pour accéder à cette fonctionnalité.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant unique de la session.","required":true}],"responses":{"200":{"description":"Threads créés avec succès.","content":{"application/json":{"schema":{"description":"Mapping des noms de métriques aux IDs de thread de recommandation.","required":["grf","power","kne_angle","ank_angle","hip_angle"],"type":"object","properties":{"hip_height":{"description":"ID de thread pour les recommandations de hauteur de hanche.","type":"string"},"hip_speed":{"description":"ID de thread pour les recommandations de vitesse de hanche.","type":"string"},"hip_trajectory":{"description":"ID de thread pour les recommandations de trajectoire de hanche.","type":"string"},"hip_velocity":{"description":"ID de thread pour les recommandations de vitesse de hanche.","type":"string"},"toe_trajectory":{"description":"ID de thread pour les recommandations de trajectoire d'orteil.","type":"string"},"grf":{"description":"ID de thread pour les recommandations de force de réaction au sol (GRF).","type":"string"},"power":{"description":"ID de thread pour les recommandations de puissance.","type":"string"},"kne_angle":{"description":"ID de thread pour les recommandations d'angle de genou.","type":"string"},"ank_angle":{"description":"ID de thread pour les recommandations d'angle de cheville.","type":"string"},"hip_angle":{"description":"ID de thread pour les recommandations d'angle de hanche.","type":"string"}}}}}},"400":{"description":"Requête incorrecte - `session_id` invalide fourni.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"401":{"description":"Non autorisé - Token d'accès manquant ou invalide.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"403":{"description":"Interdit - L'utilisateur manque des permissions nécessaires.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"404":{"description":"Non trouvé - Aucune donnée de session trouvée pour le `session_id` fourni.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Une erreur inattendue s'est produite.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}}},"tags":["jumping"]}}}}
````

## Obtenir le résumé d'une session

> \### Récupérer le résumé d'une session\
> Ce point de terminaison fournit un résumé d'une session spécifique, incluant des métriques clés de performance, des données utilisateur et des détails de création de session.\
> \*\*Exemple d'utilisation :\*\* Envoyez une requête GET à \`/jumping/{session\_id}/summary/\` où \`{session\_id}\` est l'identifiant unique de la session.\
> \*\*Paramètres de requête :\*\* - \`demo\` \*(booléen, optionnel)\* : Définissez à \`true\` pour récupérer un résumé de démonstration pré-généré au lieu d'une session réelle.\
> \*\*Structure de la réponse :\*\* - \*\*exercise\*\* : Type d'exercice résumé. - \*\*metrics\*\* : Contient diverses mesures de la session. - \*\*summary\*\* : Aperçu descriptif de la performance. - \*\*user\_info\*\* : Informations basiques sur l'utilisateur. - \*\*session\_date\*\* : Date d'enregistrement de la session.\
> \*\*Note :\*\* Assurez-vous que le \`session\_id\` existe. Si \`demo=true\` est utilisé, le système retourne le résumé de session de démonstration pré-enregistré.

```json
{"openapi":"3.1.1","info":{"title":"API WEB AIKYNETIX","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Entrez votre token Bearer (authentification Firebase) au format : Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Entrez votre clé API dans l'en-tête : API-KEY: <api_key>"}}},"paths":{"/jumping/sessions/{session_id}/summary/":{"get":{"operationId":"jumping_sessions_summary_list","summary":"Obtenir le résumé d'une session","description":"### Récupérer le résumé d'une session\nCe point de terminaison fournit un résumé d'une session spécifique, incluant des métriques clés de performance, des données utilisateur et des détails de création de session.\n**Exemple d'utilisation :** Envoyez une requête GET à `/jumping/{session_id}/summary/` où `{session_id}` est l'identifiant unique de la session.\n**Paramètres de requête :** - `demo` *(booléen, optionnel)* : Définissez à `true` pour récupérer un résumé de démonstration pré-généré au lieu d'une session réelle.\n**Structure de la réponse :** - **exercise** : Type d'exercice résumé. - **metrics** : Contient diverses mesures de la session. - **summary** : Aperçu descriptif de la performance. - **user_info** : Informations basiques sur l'utilisateur. - **session_date** : Date d'enregistrement de la session.\n**Note :** Assurez-vous que le `session_id` existe. Si `demo=true` est utilisé, le système retourne le résumé de session de démonstration pré-enregistré.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant unique de la session.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Définissez à `true` pour récupérer le résumé de session de démonstration au lieu d'un réel.","required":false}],"responses":{"200":{"description":"Résumé de session récupéré avec succès.","content":{"application/json":{"schema":{"description":"Objet contenant les détails du résumé de session.","required":["metrics","summary","user_info","created_at"],"type":"object","properties":{"exercise":{"description":"Type d'exercice résumé.","type":"string"},"metrics":{"description":"Objet contenant diverses métriques de performance.","type":"object","additionalProperties":{"description":"Tableau de valeurs numériques pour chaque métrique.","type":"array","items":{"type":"number"}}},"summary":{"description":"Objet contenant les détails du résumé de la session.","type":"object","additionalProperties":{"description":"Information de résumé pour chaque clé.","type":"string"}},"user_info":{"description":"Objet contenant les informations utilisateur.","required":["name","age","weight","height","gender"],"type":"object","properties":{"name":{"description":"Nom complet de l'utilisateur.","type":"string"},"age":{"description":"Âge de l'utilisateur.","type":"integer"},"weight":{"description":"Poids de l'utilisateur en kilogrammes.","type":"number"},"height":{"description":"Taille de l'utilisateur en centimètres.","type":"number"},"gender":{"description":"Genre de l'utilisateur.","type":"string"}}},"created_at":{"description":"Objet contenant la date et l'heure de création de la session.","required":["date","time"],"type":"object","properties":{"date":{"description":"Date de création de la session au format 'AAAA-MM-JJ'.","type":"string","format":"date"},"time":{"description":"Heure de création de la session au format 'HH:MM AM/PM'.","type":"string","format":"time"}}}}}}}},"400":{"description":"Requête incorrecte - `session_id` invalide fourni.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"401":{"description":"Non autorisé - Token d'accès manquant ou invalide.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"403":{"description":"Interdit - L'utilisateur manque des permissions nécessaires.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"404":{"description":"Non trouvé - Aucune donnée de session trouvée pour le `session_id` fourni.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Une erreur inattendue s'est produite.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}}},"tags":["jumping"]}}}}
```

## Générer des threads de résumé pour une session

> \### Générer des threads de résumé\
> Ce point de terminaison génère des threads de résumé pour une session donnée basés sur des blocs de résumé prédéfinis et des métriques.\
> \*\*Exemple d'utilisation :\*\* Envoyez une requête \`POST\` à \`/jumping/sessions/{session\_id}/summary/\` où \`{session\_id}\` est l'identifiant unique de la session.\
> \*\*Paramètres :\*\* - \`session\_id\` \*(string, obligatoire)\* : L'identifiant unique de la session pour laquelle les threads de résumé doivent être générés. - \`measurement\_system\` \*(string, optionnel)\* : Système de mesure : 'metric' ou 'imperial'. Par défaut 'metric'.\
> \*\*Structure de la réponse :\*\* Lors d'une requête réussie, le point de terminaison retourne un objet JSON mappant chaque nom de bloc à son ID de thread correspondant.\
> \*\*Exemple de réponse pour Saut avec contre-mouvement :\*\* \`\`\`json {\
> &#x20;   "jump\_flight": "thread\_thread\_id",\
> &#x20;   "jump\_forces": "thread\_thread\_id",\
> &#x20;   "control\_and\_stability": "thread\_thread\_id",\
> &#x20;   "efficiency": "thread\_thread\_id",\
> &#x20;   "final\_summary": "thread\_thread\_id",\
> } \`\`\`\
> \*\*Exemple de réponse pour Saut en contrebas :\*\* \`\`\`json {\
> &#x20;   "contact\_and\_jump\_structure": "thread\_thread\_id",\
> &#x20;   "performance\_and\_efficiency": "thread\_thread\_id",\
> &#x20;   "force\_metrics": "thread\_thread\_id",\
> &#x20;   "final\_summary": "thread\_thread\_id",\
> } \`\`\`\
> \*\*Notes :\*\* - Assurez-vous que le \`session\_id\` fourni est valide et correspond à une session existante dans le système. - L'utilisateur doit avoir les permissions nécessaires pour générer des threads de résumé.

````json
{"openapi":"3.1.1","info":{"title":"API WEB AIKYNETIX","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Entrez votre token Bearer (authentification Firebase) au format : Bearer <token>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Entrez votre clé API dans l'en-tête : API-KEY: <api_key>"}}},"paths":{"/jumping/sessions/{session_id}/summary/":{"post":{"operationId":"jumping_sessions_summary_create","summary":"Générer des threads de résumé pour une session","description":"### Générer des threads de résumé\nCe point de terminaison génère des threads de résumé pour une session donnée basés sur des blocs de résumé prédéfinis et des métriques.\n**Exemple d'utilisation :** Envoyez une requête `POST` à `/jumping/sessions/{session_id}/summary/` où `{session_id}` est l'identifiant unique de la session.\n**Paramètres :** - `session_id` *(string, obligatoire)* : L'identifiant unique de la session pour laquelle les threads de résumé doivent être générés. - `measurement_system` *(string, optionnel)* : Système de mesure : 'metric' ou 'imperial'. Par défaut 'metric'.\n**Structure de la réponse :** Lors d'une requête réussie, le point de terminaison retourne un objet JSON mappant chaque nom de bloc à son ID de thread correspondant.\n**Exemple de réponse pour Saut avec contre-mouvement :** ```json {\n    \"jump_flight\": \"thread_thread_id\",\n    \"jump_forces\": \"thread_thread_id\",\n    \"control_and_stability\": \"thread_thread_id\",\n    \"efficiency\": \"thread_thread_id\",\n    \"final_summary\": \"thread_thread_id\",\n} ```\n**Exemple de réponse pour Saut en contrebas :** ```json {\n    \"contact_and_jump_structure\": \"thread_thread_id\",\n    \"performance_and_efficiency\": \"thread_thread_id\",\n    \"force_metrics\": \"thread_thread_id\",\n    \"final_summary\": \"thread_thread_id\",\n} ```\n**Notes :** - Assurez-vous que le `session_id` fourni est valide et correspond à une session existante dans le système. - L'utilisateur doit avoir les permissions nécessaires pour générer des threads de résumé.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant unique de la session.","required":true},{"schema":{"type":"string","enum":["metric","imperial"]},"name":"measurement_system","in":"query","description":"Système de mesure : 'metric' ou 'imperial'","required":false}],"responses":{"201":{"description":"Threads de résumé générés avec succès.","content":{"application/json":{"schema":{"description":"Dictionnaire mappant les noms de blocs à leurs IDs de thread correspondants, incluant un thread de résumé final.","type":"object","additionalProperties":{"description":"ID de thread correspondant au nom de bloc.","type":"string"}}}}},"400":{"description":"Requête incorrecte - `session_id` invalide fourni.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"401":{"description":"Non autorisé - Token d'accès manquant ou invalide.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"403":{"description":"Interdit - L'utilisateur manque des permissions nécessaires.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"404":{"description":"Non trouvé - Aucune donnée de session trouvée pour le `session_id` fourni.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Une erreur inattendue s'est produite.","content":{"application/json":{"schema":{"required":["error"],"type":"object","properties":{"error":{"description":"Message d'erreur.","type":"string"}}}}}}},"tags":["jumping"]}}}}
````


---

# 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/fr/api-documentation/developer-resources-and-api-reference/api-reference/jumping.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.
