# Évaluation de la mobilité

## Générer un rapport de mobilité articulaire

> Génère un rapport résumé de mobilité articulaire pour un \`session\_id\` donné.\
> \### Paramètre de Chemin\
> \- \*\*session\_id\*\* \*(string, requis)\* : L'identifiant unique de la session de mobilité.\
> \### Réponse de Succès (HTTP 200)\
> Renvoie un objet JSON contenant :\
> \- \*\*title\*\* \*(string)\* : Le titre de la session. - \*\*angles\*\* \*(object)\* : Les clés sont des noms d'articulations, les valeurs sont :\
> &#x20; \- \*\*max\*\* \*(number|null)\*\
> &#x20; \- \*\*min\*\* \*(number|null)\*\
> &#x20; \- \*\*values\*\* \*(array\[number])\*\
> \- \*\*exercise\*\* \*(string)\* : Toujours \`Joint Angle Mobility\`. - \*\*user\_info\*\* \*(object)\* : Détails de l'utilisateur. - \*\*date\*\* \*(string)\* : Date formatée (JJ/MM/AAAA). - \*\*uploaded\_date\*\* \*(string, date-time)\* : Horodatage ISO brut. - \*\*shown\_angles\*\* \*(array\[string])\* : Quels angles afficher. - \*\*comments\*\* \*(object\[string → string])\* : Commentaires par angle.\
> \### Réponses d'Erreur\
> \- \*\*400 Requête incorrecte\*\* : Type de session ou paramètres invalides. - \*\*404 Non trouvé\*\* : Session non trouvée. - \*\*500 Erreur interne du serveur\*\* : Erreur serveur inattendue.\
> Requiert un token API-KEY valide dans l'en-tête \`Authorization\`.<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":{"/mobility-assessment/sessions/{session_id}/joint-mobility/":{"post":{"operationId":"mobility-assessment_sessions_joint-mobility_create","summary":"Générer un rapport de mobilité articulaire","description":"Génère un rapport résumé de mobilité articulaire pour un `session_id` donné.\n### Paramètre de Chemin\n- **session_id** *(string, requis)* : L'identifiant unique de la session de mobilité.\n### Réponse de Succès (HTTP 200)\nRenvoie un objet JSON contenant :\n- **title** *(string)* : Le titre de la session. - **angles** *(object)* : Les clés sont des noms d'articulations, les valeurs sont :\n  - **max** *(number|null)*\n  - **min** *(number|null)*\n  - **values** *(array[number])*\n- **exercise** *(string)* : Toujours `Joint Angle Mobility`. - **user_info** *(object)* : Détails de l'utilisateur. - **date** *(string)* : Date formatée (JJ/MM/AAAA). - **uploaded_date** *(string, date-time)* : Horodatage ISO brut. - **shown_angles** *(array[string])* : Quels angles afficher. - **comments** *(object[string → string])* : Commentaires par angle.\n### Réponses d'Erreur\n- **400 Requête incorrecte** : Type de session ou paramètres invalides. - **404 Non trouvé** : Session non trouvée. - **500 Erreur interne du serveur** : Erreur serveur inattendue.\nRequiert un token API-KEY valide dans l'en-tête `Authorization`.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant unique de la session de mobilité","required":true}],"responses":{"200":{"description":"Rapport de mobilité articulaire récupéré avec succès.","content":{"application/json":{"schema":{"required":["title","angles","exercise","user_info","date","uploaded_date"],"type":"object","properties":{"title":{"description":"Titre de la session","type":"string"},"angles":{"description":"Résumé des angles articulaires clé par nom d'articulation.","type":"object","additionalProperties":{"required":["max","min","values"],"type":"object","properties":{"max":{"description":"Angle maximum ou null","type":"number"},"min":{"description":"Angle minimum ou null","type":"number"},"values":{"description":"Valeurs d'angle originales","type":"array","items":{"type":"number"}}}}},"exercise":{"description":"Nom de l'exercice, 'Joint Angle Mobility'","type":"string"},"user_info":{"description":"Détails de l'utilisateur associé à la session","type":"object","additionalProperties":{"description":"Valeur du champ utilisateur","type":"string"}},"date":{"description":"Date de la session au format JJ/MM/AAAA","type":"string"},"uploaded_date":{"description":"Horodatage ISO brut du téléchargement","type":"string","format":"date-time"},"shown_angles":{"description":"Angles que l'utilisateur a choisi d'afficher","type":"array","items":{"type":"string"}},"comments":{"description":"Commentaires par angle","type":"object","additionalProperties":{"description":"Texte du commentaire","type":"string"}}}}}}},"400":{"description":"Requête incorrecte - Type d'exercice ou paramètres invalides.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant que la requête était malformée ou invalide.","type":"string"}}}}}},"403":{"description":"Interdit - Privilèges insuffisants pour récupérer les données de session.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant que l'utilisateur n'est pas autorisé à accéder à ces données.\n","type":"string"}}}}}},"404":{"description":"Non trouvé - Données de session non trouvées.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant que la session demandée n'a pas pu être trouvée.\n","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 indiquant une erreur serveur inattendue.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
```

## Récupérer une session d'évaluation de mobilité

> Récupère les détails d'une session spécifique \*\*d'Évaluation de Mobilité\*\* identifiée par son \`session\_id\`.  Ce point de terminaison renvoie des informations telles que le nombre de segments, les URLs vidéo, les données d'angle, les horodatages et autres métadonnées de session.\
> \### Paramètre de Chemin\
> \- \*\*session\_id\*\* \*(string, requis)\* : Identifiant unique de la session d'Évaluation de Mobilité à récupérer.\
> \### Paramètre de Requête\
> \- \*\*demo\*\* \*(booléen, optionnel)\* : Définir à \`true\` pour récupérer la session de démonstration pré-générée au lieu d'une réelle.\
> \### Réponse de Succès (HTTP 200)\
> Un objet JSON contenant :\
> \- \*\*segments\*\* \*(entier)\* : Le nombre total de segments dans cette évaluation. - \*\*video\_url\*\* \*(string, URI)\* : URL de la vidéo originale téléchargée. - \*\*analyzed\_video\_url\*\* \*(string, URI, optionnel)\* : URL de la vidéo analysée (traitée). - \*\*activity\*\* \*(string)\* : Le type d'activité, ex. \`Évaluation de Mobilité\`. - \*\*title\*\* \*(string)\* : Titre ou nom de la session. - \*\*user\_name\*\* \*(string)\* : Nom de l'utilisateur associé à la session. - \*\*created\_at\*\* \*(object)\* : Un objet avec \`date\` et \`time\` pour la création de la session.\
> &#x20; \- \*\*date\*\* \*(string)\* : Format \`JJ/MM/AAAA\`.\
> &#x20; \- \*\*time\*\* \*(string)\* : Format \`HH:MM AM/PM\`.\
> \- \*\*exercise\*\* \*(string)\* : Le nom ou type d'exercice (ex. \`Overhead Squad\`). - \*\*angles\*\* \*(object)\* : Un objet contenant les données d'angle pertinentes pour l'évaluation.\
> &#x20; \- \*\*hip\_angle\*\* \*(array de nombres)\* : Exemple de tableau d'angles de hanche.\
> &#x20; \- \*\*ankle\_angle\*\* \*(array de nombres)\* : Exemple de tableau d'angles de cheville.\
> &#x20; \- ... (champs d'angle supplémentaires si nécessaire)\
> \- \*\*all\_timestamps\*\* \*(array de nombres)\* : Tableau d'horodatages correspondant aux données d'angle.\
> \### Réponses d'Erreur\
> \- \*\*400 Requête incorrecte\*\* : Paramètres invalides ou manquants. - \*\*401 Non autorisé\*\* : Token d'authentification manquant ou invalide. - \*\*403 Interdit\*\* : L'utilisateur n'a pas la permission de récupérer cette session. - \*\*404 Non trouvé\*\* : Session non trouvée. - \*\*500 Erreur interne du serveur\*\* : Une erreur inattendue s'est produite sur le serveur.\
> Un token API-KEY valide doit être fourni dans l'en-tête \`Authorization\`.<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":{"/mobility-assessment/sessions/{session_id}/":{"get":{"operationId":"mobility-assessment_sessions_read","summary":"Récupérer une session d'évaluation de mobilité","description":"Récupère les détails d'une session spécifique **d'Évaluation de Mobilité** identifiée par son `session_id`.  Ce point de terminaison renvoie des informations telles que le nombre de segments, les URLs vidéo, les données d'angle, les horodatages et autres métadonnées de session.\n### Paramètre de Chemin\n- **session_id** *(string, requis)* : Identifiant unique de la session d'Évaluation de Mobilité à récupérer.\n### Paramètre de Requête\n- **demo** *(booléen, optionnel)* : Définir à `true` pour récupérer la session de démonstration pré-générée au lieu d'une réelle.\n### Réponse de Succès (HTTP 200)\nUn objet JSON contenant :\n- **segments** *(entier)* : Le nombre total de segments dans cette évaluation. - **video_url** *(string, URI)* : URL de la vidéo originale téléchargée. - **analyzed_video_url** *(string, URI, optionnel)* : URL de la vidéo analysée (traitée). - **activity** *(string)* : Le type d'activité, ex. `Évaluation de Mobilité`. - **title** *(string)* : Titre ou nom de la session. - **user_name** *(string)* : Nom de l'utilisateur associé à la session. - **created_at** *(object)* : Un objet avec `date` et `time` pour la création de la session.\n  - **date** *(string)* : Format `JJ/MM/AAAA`.\n  - **time** *(string)* : Format `HH:MM AM/PM`.\n- **exercise** *(string)* : Le nom ou type d'exercice (ex. `Overhead Squad`). - **angles** *(object)* : Un objet contenant les données d'angle pertinentes pour l'évaluation.\n  - **hip_angle** *(array de nombres)* : Exemple de tableau d'angles de hanche.\n  - **ankle_angle** *(array de nombres)* : Exemple de tableau d'angles de cheville.\n  - ... (champs d'angle supplémentaires si nécessaire)\n- **all_timestamps** *(array de nombres)* : Tableau d'horodatages correspondant aux données d'angle.\n### Réponses d'Erreur\n- **400 Requête incorrecte** : Paramètres invalides ou manquants. - **401 Non autorisé** : Token d'authentification manquant ou invalide. - **403 Interdit** : L'utilisateur n'a pas la permission de récupérer cette session. - **404 Non trouvé** : Session non trouvée. - **500 Erreur interne du serveur** : Une erreur inattendue s'est produite sur le serveur.\nUn token API-KEY valide doit être fourni dans l'en-tête `Authorization`.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"L'identifiant unique de la session d'Évaluation de Mobilité à récupérer.\n","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Définir à `true` pour récupérer la session de démonstration pré-générée au lieu d'une réelle.\n","required":false}],"responses":{"200":{"description":"Données de session d'Évaluation de Mobilité récupérées avec succès.","content":{"application/json":{"schema":{"required":["segments","video_url","activity","title","user_name","created_at","exercise","angles","all_timestamps"],"type":"object","properties":{"segments":{"description":"Nombre de segments dans cette évaluation de mobilité.","type":"integer"},"video_url":{"description":"URL de la vidéo originale.","type":"string","format":"uri"},"analyzed_video_url":{"description":"URL optionnelle de la vidéo traitée.","type":"string","format":"uri"},"activity":{"description":"Type d'activité, ex. 'Évaluation de Mobilité'.","type":"string"},"title":{"description":"Un titre de session convivial.","type":"string"},"user_name":{"description":"Nom de l'utilisateur associé à cette session.","type":"string"},"created_at":{"description":"Un objet date/heure indiquant quand cette session a été créée.","type":"object","properties":{"date":{"description":"Date de création, format 'JJ/MM/AAAA'.","type":"string"},"time":{"description":"Heure de création, format 'HH:MM AM/PM'.","type":"string"}}},"exercise":{"description":"Le nom de l'exercice, ex. 'Overhead Squad'.","type":"string"},"angles":{"description":"Objet contenant des tableaux de données d'angle pertinentes pour l'évaluation.\n","type":"object","additionalProperties":{"description":"Un tableau de valeurs numériques pour une métrique d'angle spécifique.","type":"array","items":{"type":"number"}}},"all_timestamps":{"description":"Tableau d'horodatages numériques correspondant à chaque entrée de données d'angle.\n","type":"array","items":{"type":"number"}}}}}}},"400":{"description":"Requête incorrecte - Paramètres invalides ou manquants.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Un message d'erreur descriptif.","type":"string"}}}}}},"401":{"description":"Non autorisé - Token d'authentification manquant ou invalide.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Erreur indiquant que les informations d'identification du token sont manquantes ou invalides.\n","type":"string"}}}}}},"403":{"description":"Interdit - L'utilisateur n'a pas la permission de récupérer cette session.\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"L'utilisateur n'est pas autorisé à récupérer cette session.","type":"string"}}}}}},"404":{"description":"Non trouvé - La session n'a pas été trouvée ou n'existe pas.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant que la session n'a pas pu être localisée.","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Une erreur inattendue s'est produite sur le serveur.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Un message d'erreur détaillé décrivant la défaillance côté serveur.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
```

## Exporter les données de session (Évaluation de Mobilité)

> Exporte les données de points de repère et d'angle pour une session spécifique liée à la mobilité.  Ce point de terminaison renvoie des métadonnées minimales, incluant uniquement \`activity\`, \`angles\`, \`all\_timestamps\`, et \`keypoints\` avec divers tableaux de points de repère.\
> \### Paramètre de Chemin\
> \- \*\*session\_id\*\* \*(string, requis)\* : L'identifiant unique de la session dont les données sont exportées.\
> \### Paramètre de Requête\
> \- \*\*demo\*\* \*(booléen, optionnel)\* : Définir à \`true\` pour récupérer les données de session de démonstration au lieu d'une réelle.\
> \### Réponse de Succès (HTTP 200)\
> Un objet JSON contenant :\
> \- \*\*activity\*\* \*(string)\* : Le type d'activité (ex. 'Évaluation de Mobilité'). - \*\*angles\*\* \*(object)\* : Un objet contenant les données d'angle pertinentes pour l'évaluation.\
> &#x20; \- \*\*hip\_angle\*\* \*(array de nombres)\* : Exemple de tableau d'angles de hanche.\
> &#x20; \- \*\*ankle\_angle\*\* \*(array de nombres)\* : Exemple de tableau d'angles de cheville.\
> &#x20; \- ... (champs d'angle supplémentaires si nécessaire)\
> \- \*\*all\_timestamps\*\* \*(array de nombres)\* : Tableau d'horodatages correspondant à chaque point de données. - \*\*keypoints\*\* \*(object)\* : Contient des tableaux de points de repère. Exemples :\
> &#x20; \- \*\*lknev\*\* \*(array de nombres)\* : Tableau de points de repère du genou gauche.\
> &#x20; \- \*\*ltoev\*\* \*(array de nombres)\* : Tableau de points de repère de l'orteil gauche.\
> &#x20; \- \*\*relbv\*\* \*(array de nombres)\* : Tableau de points de repère du coude droit.\
> &#x20; \- \*\*rtoey\*\* \*(array de nombres)\* : Tableau de points de repère de l'orteil droit.\
> &#x20; \- \*\*headv\*\* \*(array de nombres)\* : Tableau de points de repère de la tête.\
> &#x20; \- \*\*rearv\*\* \*(array de nombres)\* : Tableau de points de repère de l'oreille droite.\
> &#x20; \- \*\*rshox\*\* \*(array de nombres)\* : Tableau de points de repère de l'épaule droite.\
> &#x20; \- \*\*etc\*\* \*(array de nombres)\* : Tableau de tous les autres points de repère.\
> \
> \### Réponses d'Erreur\
> \- \*\*400 Requête incorrecte\*\* : Paramètres invalides ou manquants. - \*\*401 Non autorisé\*\* : Token d'authentification manquant ou invalide. - \*\*403 Interdit\*\* : Privilèges insuffisants pour récupérer ces données. - \*\*404 Non trouvé\*\* : La session n'existe pas. - \*\*500 Erreur interne du serveur\*\* : Une erreur inattendue s'est produite.\
> Un token API-KEY valide doit être fourni dans l'en-tête \`Authorization\`.<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":{"/mobility-assessment/sessions/{session_id}/export/":{"get":{"operationId":"mobility-assessment_sessions_export_list","summary":"Exporter les données de session (Évaluation de Mobilité)","description":"Exporte les données de points de repère et d'angle pour une session spécifique liée à la mobilité.  Ce point de terminaison renvoie des métadonnées minimales, incluant uniquement `activity`, `angles`, `all_timestamps`, et `keypoints` avec divers tableaux de points de repère.\n### Paramètre de Chemin\n- **session_id** *(string, requis)* : L'identifiant unique de la session dont les données sont exportées.\n### Paramètre de Requête\n- **demo** *(booléen, optionnel)* : Définir à `true` pour récupérer les données de session de démonstration au lieu d'une réelle.\n### Réponse de Succès (HTTP 200)\nUn objet JSON contenant :\n- **activity** *(string)* : Le type d'activité (ex. 'Évaluation de Mobilité'). - **angles** *(object)* : Un objet contenant les données d'angle pertinentes pour l'évaluation.\n  - **hip_angle** *(array de nombres)* : Exemple de tableau d'angles de hanche.\n  - **ankle_angle** *(array de nombres)* : Exemple de tableau d'angles de cheville.\n  - ... (champs d'angle supplémentaires si nécessaire)\n- **all_timestamps** *(array de nombres)* : Tableau d'horodatages correspondant à chaque point de données. - **keypoints** *(object)* : Contient des tableaux de points de repère. Exemples :\n  - **lknev** *(array de nombres)* : Tableau de points de repère du genou gauche.\n  - **ltoev** *(array de nombres)* : Tableau de points de repère de l'orteil gauche.\n  - **relbv** *(array de nombres)* : Tableau de points de repère du coude droit.\n  - **rtoey** *(array de nombres)* : Tableau de points de repère de l'orteil droit.\n  - **headv** *(array de nombres)* : Tableau de points de repère de la tête.\n  - **rearv** *(array de nombres)* : Tableau de points de repère de l'oreille droite.\n  - **rshox** *(array de nombres)* : Tableau de points de repère de l'épaule droite.\n  - **etc** *(array de nombres)* : Tableau de tous les autres points de repère.\n\n### Réponses d'Erreur\n- **400 Requête incorrecte** : Paramètres invalides ou manquants. - **401 Non autorisé** : Token d'authentification manquant ou invalide. - **403 Interdit** : Privilèges insuffisants pour récupérer ces données. - **404 Non trouvé** : La session n'existe pas. - **500 Erreur interne du serveur** : Une erreur inattendue s'est produite.\nUn token API-KEY valide doit être fourni dans l'en-tête `Authorization`.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"L'identifiant unique de la session dont les données sont exportées.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Définir à `true` pour récupérer les données de session de démonstration au lieu d'une réelle.\n","required":false}],"responses":{"200":{"description":"Données de session exportées avec succès.","content":{"application/json":{"schema":{"required":["activity","angles","all_timestamps","keypoints"],"type":"object","properties":{"activity":{"description":"Type d'activité (ex., 'Évaluation de Mobilité').","type":"string"},"angles":{"description":"Paires clé-valeur pour les métriques d'angle. Chaque valeur est un tableau de nombres.\n","type":"object","additionalProperties":{"description":"Un tableau de valeurs d'angle numériques.","type":"array","items":{"type":"number"}}},"all_timestamps":{"description":"Tableau d'horodatages numériques correspondant à chaque point de données.","type":"array","items":{"type":"number"}},"keypoints":{"description":"Contient des tableaux de points de repère pour chaque partie du corps suivie.","type":"object","additionalProperties":{"description":"Un tableau de valeurs numériques pour la clé de repère spécifiée.","type":"array","items":{"type":"number"}}}}}}}},"400":{"description":"Requête incorrecte - Possiblement due à un session_id invalide ou manquant.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Un message d'erreur descriptif.","type":"string"}}}}}},"401":{"description":"Non autorisé - Token d'authentification manquant ou invalide.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant des informations d'identification de token manquantes ou invalides.","type":"string"}}}}}},"403":{"description":"Interdit - Privilèges insuffisants pour récupérer les données de session.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant que l'utilisateur n'est pas autorisé à accéder à ces données.\n","type":"string"}}}}}},"404":{"description":"Non trouvé - La session n'existe pas.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant que la session demandée n'a pas pu être trouvée.\n","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Erreur inattendue sur le serveur.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Un message d'erreur détaillé décrivant la défaillance côté serveur.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
```

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

> Ce point de terminaison permet à un \*\*administrateur\*\* (ou sous-admin) de télécharger un \*\*fichier vidéo\*\* pour traitement et de créer une nouvelle ressource "session" \*\*au nom d'un autre utilisateur\*\* (Évaluation de Mobilité).  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, requis)\* : L'ID de l'utilisateur pour lequel cette session est créée. - \*\*video\*\* \*(fichier, requis)\* : Le fichier vidéo brut à traiter. - \*\*session\_name\*\* \*(string, optionnel)\* : Un nom/lisible pour la session. - \*\*exercise\_name\*\* \*(string, requis)\* : Le nom de l'exercice à effectuer. Choisissez parmi : - \*\*body\_joint\_angles\*\* \*(array\[string], optionnel)\* : Une liste de noms d'articulations séparés par des virgules (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 générique si \`session\_name\` n'est pas fourni).\
> \### Workflow\
> 1\. \*\*POST\*\* une requête multipart/form-data contenant les champs requis \`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 (ex. champs manquants, permissions insuffisantes), un objet JSON avec une clé \`error\` est retourné.\
> \#### Exemple cURL :\
> \`\`\`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 'body\_joint\_angles=cheville, genou' \\\
> &#x20;    https\://\<backend-link>/mobility-assessment/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":{"/mobility-assessment/sessions/":{"post":{"operationId":"mobility-assessment_sessions_create","summary":"Créer une nouvelle session de traitement vidéo","description":"Ce point de terminaison permet à un **administrateur** (ou sous-admin) de télécharger un **fichier vidéo** pour traitement et de créer une nouvelle ressource \"session\" **au nom d'un autre utilisateur** (Évaluation de Mobilité).  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, requis)* : L'ID de l'utilisateur pour lequel cette session est créée. - **video** *(fichier, requis)* : Le fichier vidéo brut à traiter. - **session_name** *(string, optionnel)* : Un nom/lisible pour la session. - **exercise_name** *(string, requis)* : Le nom de l'exercice à effectuer. Choisissez parmi : - **body_joint_angles** *(array[string], optionnel)* : Une liste de noms d'articulations séparés par des virgules (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 générique si `session_name` n'est pas fourni).\n### Workflow\n1. **POST** une requête multipart/form-data contenant les champs requis `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 (ex. champs manquants, permissions insuffisantes), un objet JSON avec une clé `error` est retourné.\n#### Exemple cURL :\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 'body_joint_angles=cheville, genou' \\\n     https://<backend-link>/mobility-assessment/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 (par défaut si non fourni).","type":"string"}}}}}},"400":{"description":"Requête incorrecte - Possiblement due à un `user_id` manquant, une `video` manquante, ou des données de formulaire invalides.\n","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.\n","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).\n","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 sur le serveur.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur détaillé indiquant une défaillance côté serveur.","type":"string"}}}}}}},"tags":["mobility-assessment"],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"user_id":{"type":"string","description":"**Requis.** L'ID de l'utilisateur pour lequel cette session est créée (champ de formulaire : texte).\n"},"video":{"type":"string","description":"**Requis.** Le fichier vidéo brut à traiter (type de champ de formulaire : fichier).\n"},"session_name":{"type":"string","description":"**Optionnel.** Un nom descriptif pour la session (champ de formulaire : texte)."},"exercise":{"type":"string","description":"**Requis.** Le nom de l'exercice. Choisissez parmi : 'Overhead Squat', 'Joint Angle Mobility'\n"},"body_joint_angles":{"type":"array","description":"**Optionnel.** Une liste de noms d'articulations séparés par des virgules. Valeurs disponibles : `'cheville'`, `'genou'`, `'coude'`, `'hanche'`, `'épaule'`. Exemple : `cheville,genou,hanche`\n"}},"required":["user_id","video","exercise"]}}}}}}}}
````

## Récupérer la configuration de rapport sauvegardée pour une session

> Renvoie les paramètres d'affichage actuels pour la session spécifiée d'angle articulaire.\
> \- \*\*Paramètre de Chemin\*\*\
> &#x20; \- \`session\_id\` \*(string, requis)\* : Identifiant de la session à interroger.\
> \
> \*\*Réponses\*\*\
> \- \*\*200 OK\*\* : La configuration a été trouvée et renvoyée.\
> &#x20; \- \`shown\_angles\` : Tableau des clés d'angle articulaire sélectionnées par l'utilisateur.\
> &#x20; \- \`comments\` : Map de notes libres clé par angle.\
> \- \*\*401 Non autorisé\*\* : Aucune information d'identification d'authentification valide fournie. - \*\*403 Interdit\*\* : Vous n'êtes pas autorisé à voir les paramètres de cette session. - \*\*404 Non trouvé\*\* : L'ID de session ne correspond à aucune configuration stockée. - \*\*500 Erreur interne du serveur\*\* : Une erreur inattendue s'est produite sur le serveur.<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":{"/mobility-assessment/sessions/{session_id}/joint-mobility-config/":{"get":{"operationId":"mobility-assessment_sessions_joint-mobility-config_list","summary":"Récupérer la configuration de rapport sauvegardée pour une session","description":"Renvoie les paramètres d'affichage actuels pour la session spécifiée d'angle articulaire.\n- **Paramètre de Chemin**\n  - `session_id` *(string, requis)* : Identifiant de la session à interroger.\n\n**Réponses**\n- **200 OK** : La configuration a été trouvée et renvoyée.\n  - `shown_angles` : Tableau des clés d'angle articulaire sélectionnées par l'utilisateur.\n  - `comments` : Map de notes libres clé par angle.\n- **401 Non autorisé** : Aucune information d'identification d'authentification valide fournie. - **403 Interdit** : Vous n'êtes pas autorisé à voir les paramètres de cette session. - **404 Non trouvé** : L'ID de session ne correspond à aucune configuration stockée. - **500 Erreur interne du serveur** : Une erreur inattendue s'est produite sur le serveur.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant de session de mobilité","required":true}],"responses":{"200":{"description":"Configuration récupérée avec succès.","content":{"application/json":{"schema":{"required":["shown_angles","comments"],"type":"object","properties":{"shown_angles":{"description":"Clés d'angle articulaire sélectionnées","type":"array","items":{"type":"string"}},"comments":{"description":"Notes optionnelles pour chaque angle","type":"object","additionalProperties":{"type":"string"}}}}}}},"401":{"description":"Non autorisé – Les informations d'identification d'authentification étaient manquantes ou invalides.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"403":{"description":"Interdit – Vous n'avez pas la permission de voir cette configuration.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"404":{"description":"Non trouvé – Aucune configuration de rapport n'existe pour cette session.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"500":{"description":"Erreur interne du serveur – Quelque chose a mal tourné de notre côté.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
```

## Créer ou mettre à jour la configuration de rapport pour une session

> Sauvegarde vos paramètres d'affichage choisis pour la session spécifiée d'angle articulaire.\
> \- \*\*Paramètre de Chemin\*\*\
> &#x20; \- \`session\_id\` \*(string, requis)\* : Identifiant de session.\
> \
> \- \*\*Corps de la Requête\*\*\
> &#x20; \- \`shown\_angles\` \*(array\[string], optionnel)\* : Clés d'angle articulaire que vous souhaitez afficher.\
> &#x20; \- \`comments\` \*(object\[string→string], optionnel)\* : Toutes notes par angle.\
> \
> \*\*Réponses\*\*\
> \- \*\*200 OK\*\* : Configuration sauvegardée avec succès (renvoie les paramètres stockés). - \*\*400 Requête incorrecte\*\* : Un ou plusieurs champs étaient invalides — voir \`errors\` pour les détails. - \*\*401 Non autorisé\*\* : Aucune information d'identification d'authentification valide fournie. - \*\*403 Interdit\*\* : Vous n'êtes pas autorisé à modifier les paramètres de cette session. - \*\*500 Erreur interne du serveur\*\* : Une erreur inattendue s'est produite lors de la sauvegarde.<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":{"/mobility-assessment/sessions/{session_id}/joint-mobility-config/":{"post":{"operationId":"mobility-assessment_sessions_joint-mobility-config_create","summary":"Créer ou mettre à jour la configuration de rapport pour une session","description":"Sauvegarde vos paramètres d'affichage choisis pour la session spécifiée d'angle articulaire.\n- **Paramètre de Chemin**\n  - `session_id` *(string, requis)* : Identifiant de session.\n\n- **Corps de la Requête**\n  - `shown_angles` *(array[string], optionnel)* : Clés d'angle articulaire que vous souhaitez afficher.\n  - `comments` *(object[string→string], optionnel)* : Toutes notes par angle.\n\n**Réponses**\n- **200 OK** : Configuration sauvegardée avec succès (renvoie les paramètres stockés). - **400 Requête incorrecte** : Un ou plusieurs champs étaient invalides — voir `errors` pour les détails. - **401 Non autorisé** : Aucune information d'identification d'authentification valide fournie. - **403 Interdit** : Vous n'êtes pas autorisé à modifier les paramètres de cette session. - **500 Erreur interne du serveur** : Une erreur inattendue s'est produite lors de la sauvegarde.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant de session de mobilité","required":true}],"responses":{"200":{"description":"Configuration sauvegardée et renvoyée.","content":{"application/json":{"schema":{"required":["shown_angles","comments"],"type":"object","properties":{"shown_angles":{"description":"Liste mise à jour des angles affichés","type":"array","items":{"type":"string"}},"comments":{"description":"Notes mises à jour par angle","type":"object","additionalProperties":{"type":"string"}}}}}}},"400":{"description":"Requête incorrecte – La validation a échoué pour un ou plusieurs champs.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"description":"Mapping des noms de champs aux messages d'erreur","type":"object","additionalProperties":{"type":"string"}}}}}}},"401":{"description":"Non autorisé – Les informations d'identification d'authentification étaient manquantes ou invalides.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"403":{"description":"Interdit – Vous n'avez pas la permission de modifier cette configuration.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"500":{"description":"Erreur interne du serveur – Quelque chose a mal tourné lors de la sauvegarde de vos données.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"tags":["mobility-assessment"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"shown_angles":{"description":"Angles à afficher","type":"array","items":{"type":"string"}},"comments":{"description":"Commentaires optionnels clé par angle","type":"object","additionalProperties":{"type":"string"}}}}}},"required":true}}}}}
```

## Créer des fils de recommandations

> \### Créer des fils de recommandations\
> Ce point de terminaison génère des fils de recommandations personnalisés basés sur le rapport Overhead Squat de l'utilisateur pour une session spécifique. Ces fils 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\` à \`/mobility-assessment/sessions/{session\_id}/recommendation/\` où \`{session\_id}\` est l'identifiant unique de la session.\
> \*\*Paramètres :\*\*\
> \- \`session\_id\` \*(string, requis)\* : L'identifiant unique de la session pour laquelle les fils de recommandations doivent être créés.\
> \*\*Structure de la Réponse :\*\*\
> Lors d'une requête réussie, le point de terminaison renvoie un objet JSON contenant les IDs de fils mappés à leurs métriques respectives du rapport Overhead Squat.\
> \*\*Exemple de Réponse :\*\*\
> \`\`\`json {\
> &#x20;   "ankle\_dorsiflexion": "thread\_boQ0PSivWvPHIx4MQ02HqSEX",\
> &#x20;   "hip\_abduction": "thread\_eoTqfX3qWuT2IrEhZpGcem7L",\
> &#x20;   "hip\_flexion": "thread\_0pJjWIs5ybuo5gzRJd1ykgaB",\
> &#x20;   "knee\_flexion": "thread\_8gp2spSn8XasAOafDwwzw5QT",\
> &#x20;   "knee\_movement": "thread\_8gp2spSn8XasAOafDwwzw5QT",\
> &#x20;   "final\_summary": "thread\_P3MqG76m9s6qlYwINJrlNomB"\
> } \`\`\`\
> \*\*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é.<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":{"/mobility-assessment/sessions/{session_id}/recommendation/":{"post":{"operationId":"mobility-assessment_sessions_recommendation_create","summary":"Créer des fils de recommandations","description":"### Créer des fils de recommandations\nCe point de terminaison génère des fils de recommandations personnalisés basés sur le rapport Overhead Squat de l'utilisateur pour une session spécifique. Ces fils 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 :**\nEnvoyez une requête `POST` à `/mobility-assessment/sessions/{session_id}/recommendation/` où `{session_id}` est l'identifiant unique de la session.\n**Paramètres :**\n- `session_id` *(string, requis)* : L'identifiant unique de la session pour laquelle les fils de recommandations doivent être créés.\n**Structure de la Réponse :**\nLors d'une requête réussie, le point de terminaison renvoie un objet JSON contenant les IDs de fils mappés à leurs métriques respectives du rapport Overhead Squat.\n**Exemple de Réponse :**\n```json {\n    \"ankle_dorsiflexion\": \"thread_boQ0PSivWvPHIx4MQ02HqSEX\",\n    \"hip_abduction\": \"thread_eoTqfX3qWuT2IrEhZpGcem7L\",\n    \"hip_flexion\": \"thread_0pJjWIs5ybuo5gzRJd1ykgaB\",\n    \"knee_flexion\": \"thread_8gp2spSn8XasAOafDwwzw5QT\",\n    \"knee_movement\": \"thread_8gp2spSn8XasAOafDwwzw5QT\",\n    \"final_summary\": \"thread_P3MqG76m9s6qlYwINJrlNomB\"\n} ```\n**Note :**\n- 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é.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant unique de la session pour laquelle les fils de recommandations doivent être créés.\n","required":true}],"responses":{"200":{"description":"Fils créés avec succès.","content":{"application/json":{"schema":{"description":"Un dictionnaire mappant chaque métrique à son ID de fil correspondant.","required":["ankle_dorsiflexion","hip_abduction","hip_flexion","knee_flexion","knee_movement","final_summary"],"type":"object","properties":{"ankle_dorsiflexion":{"description":"Identifiant unique pour le fil de recommandation de dorsiflexion de cheville.\n","type":"string"},"hip_abduction":{"description":"Identifiant unique pour le fil de recommandation d'abduction de hanche.","type":"string"},"hip_flexion":{"description":"Identifiant unique pour le fil de recommandation de flexion de hanche.","type":"string"},"knee_flexion":{"description":"Identifiant unique pour le fil de recommandation de flexion de genou.","type":"string"},"knee_movement":{"description":"Identifiant unique pour le fil de recommandation de mouvement de genou.","type":"string"},"final_summary":{"description":"Identifiant unique pour le fil de recommandation de résumé final.","type":"string"}}}}}},"401":{"description":"Non autorisé - Token manquant ou invalide.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Un message d'erreur indiquant que les informations d'identification n'ont pas été fournies ou sont invalides.\n","type":"string"}}}}}},"403":{"description":"Interdit - Plan de paiement invalide ou privilèges insuffisants pour créer des fils de recommandations.\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant que l'utilisateur ne peut pas accéder à la ressource.","type":"string"}}}}}},"404":{"description":"Non trouvé - Session non trouvée ou métriques manquantes.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant que la session n'existe pas ou manque de données.\n","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Une erreur inattendue s'est produite.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Un message d'erreur détaillé décrivant l'échec.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
````

## Générer un rapport Overhead Squat

> Génère ou récupère un rapport détaillé Overhead Squat pour un \`session\_id\` donné. Ce point de terminaison consolide les métriques de session, les organise en groupes et intègre les métadonnées utilisateur et session.\
> \### Paramètre de Chemin\
> \- \*\*session\_id\*\* \*(string, requis)\* : L'identifiant unique de la session Overhead Squat.\
> \### Paramètre de Requête\
> \- \*\*demo\*\* \*(booléen, optionnel)\* : Définir à \`true\` pour récupérer le rapport de démonstration Overhead Squat au lieu d'un réel.\
> \### Réponse de Succès (HTTP 200)\
> Renvoie un objet JSON contenant :\
> \- \*\*grouped\_data\*\* \*(object)\* : Organisé par groupes de métriques (ex., \`hip\_flexion\`, \`knee\_flexion\`). Chaque groupe a :\
> &#x20; \- \*\*metrics\*\* \*(object)\* : Paires clé-valeur de résultats de métriques agrégées.\
> &#x20; \- \*\*graph\_data\*\* \*(object)\* : Tableaux de données numériques pour traçage de graphiques.\
> \- \*\*graph\_timestamps\*\* \*(array\[number])\* : Liste d'horodatages (en millisecondes) correspondant à chaque donnée de graphique. - \*\*knee\_movement\_phases\*\* \*(object)\* : URLs d'images de visualisation montrant différentes vues des phases de mouvement du genou.\
> &#x20; \- \*\*left\*\* \*(string)\* : URL pour l'image de vue gauche.\
> &#x20; \- \*\*right\*\* \*(string)\* : URL pour l'image de vue droite.\
> &#x20; \- \*\*front\*\* \*(string)\* : URL pour l'image de vue frontale.\
> \- \*\*user\_info\*\* \*(object, optionnel)\* : Détails de base de l'utilisateur associé à la session. - \*\*exercise\*\* \*(string)\* : Le nom/type d'exercice (ex., \`Overhead Squat\`). - \*\*report\_comments\*\* \*(object, optionnel)\* : Commentaires détaillés sur différents aspects du mouvement. - \*\*output\_quality\*\* \*(object, optionnel)\* : Toute information supplémentaire sur la qualité ou le score. - \*\*date\*\* \*(string, format=JJ/MM/AAAA)\* : La date de création ou de traitement de la session.\
> \### Exemple de Réponse de Succès\
> \`\`\`json {\
> &#x20; "grouped\_data": {\
> &#x20;   "hip\_flexion": {\
> &#x20;     "metrics": {\
> &#x20;       "left\_hip\_flexion": 12.5,\
> &#x20;       "right\_hip\_flexion": 15.3,\
> &#x20;       "hip\_flexion\_asymmetry": 2.8\
> &#x20;     },\
> &#x20;     "graph\_data": {\
> &#x20;       "lhip\_flexion": \[10, 20, 30],\
> &#x20;       "rhip\_flexion": \[15, 25, 35]\
> &#x20;     }\
> &#x20;   },\
> &#x20;   "ankle\_dorsiflexion": {\
> &#x20;     "metrics": {\
> &#x20;       "left\_ankle\_flexion": 9.8,\
> &#x20;       "right\_ankle\_flexion": 10.5,\
> &#x20;       "ankle\_flexion\_asymmetry": 0.7\
> &#x20;     },\
> &#x20;     "graph\_data": {\
> &#x20;       "lank\_flexion": \[6, 12, 18],\
> &#x20;       "rank\_flexion": \[7, 14, 21]\
> &#x20;     }\
> &#x20;   }\
> &#x20; },\
> &#x20; "graph\_timestamps": \[0, 5000, 10000],\
> &#x20; "knee\_movement\_phases": {\
> &#x20;   "left": "<https://storage.googleapis.com/aikonweb001.appspot.com/report-images/.../left.png",\\>
> &#x20;   "right": "<https://storage.googleapis.com/aikonweb001.appspot.com/report-images/.../right.png",\\>
> &#x20;   "front": "<https://storage.googleapis.com/aikonweb001.appspot.com/report-images/.../front.png"\\>
> &#x20; },\
> &#x20; "user\_info": {\
> &#x20;   "weight": 70,\
> &#x20;   "email": "<natalia3@gmail.com>",\
> &#x20;   ...\
> &#x20; },\
> &#x20; "exercise": "Overhead Squat",\
> &#x20; "report\_comments": {\
> &#x20;   "hip\_flexion": "Pour une amélioration optimale de la flexion de la hanche, concentrez-vous sur des étirements dynamiques et des exercices de mobilité.",\
> &#x20;   "ankle\_dorsiflexion": "Natalia, votre dorsiflexion de cheville gauche est à 9.0 degrés...",\
> &#x20;   "final\_summary": "Natalia, vos métriques de flexion du genou et de la hanche sont solides...",\
> &#x20;   "hip\_abduction": "Pour une performance optimale en abduction de hanche, concentrez-vous sur l'amélioration..."\
> &#x20; },\
> &#x20; "output\_quality": {\
> &#x20;   "mobility\_index": 46,\
> &#x20;   "quality\_index": 67\
> &#x20; },\
> &#x20; "date": "11/03/2025"\
> } \`\`\`\
> \*\*Gestion des Erreurs\*\*\
> \- \*\*403 Interdit\*\* : Renvoyé si le plan de paiement de l'utilisateur n'est pas Standard, Pro ou Enterprise. - \*\*404 Non trouvé\*\* : Renvoyé si les données de session ne peuvent pas être trouvées ou si aucune métrique n'est renvoyée. - \*\*500 Erreur interne du serveur\*\* : Renvoyé si une erreur inattendue se produit sur le serveur.\
> Un token API-KEY valide doit être fourni dans l'en-tête \`Authorization\`.<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":{"/mobility-assessment/sessions/{session_id}/report/":{"post":{"operationId":"mobility-assessment_sessions_report_create","summary":"Générer un rapport Overhead Squat","description":"Génère ou récupère un rapport détaillé Overhead Squat pour un `session_id` donné. Ce point de terminaison consolide les métriques de session, les organise en groupes et intègre les métadonnées utilisateur et session.\n### Paramètre de Chemin\n- **session_id** *(string, requis)* : L'identifiant unique de la session Overhead Squat.\n### Paramètre de Requête\n- **demo** *(booléen, optionnel)* : Définir à `true` pour récupérer le rapport de démonstration Overhead Squat au lieu d'un réel.\n### Réponse de Succès (HTTP 200)\nRenvoie un objet JSON contenant :\n- **grouped_data** *(object)* : Organisé par groupes de métriques (ex., `hip_flexion`, `knee_flexion`). Chaque groupe a :\n  - **metrics** *(object)* : Paires clé-valeur de résultats de métriques agrégées.\n  - **graph_data** *(object)* : Tableaux de données numériques pour traçage de graphiques.\n- **graph_timestamps** *(array[number])* : Liste d'horodatages (en millisecondes) correspondant à chaque donnée de graphique. - **knee_movement_phases** *(object)* : URLs d'images de visualisation montrant différentes vues des phases de mouvement du genou.\n  - **left** *(string)* : URL pour l'image de vue gauche.\n  - **right** *(string)* : URL pour l'image de vue droite.\n  - **front** *(string)* : URL pour l'image de vue frontale.\n- **user_info** *(object, optionnel)* : Détails de base de l'utilisateur associé à la session. - **exercise** *(string)* : Le nom/type d'exercice (ex., `Overhead Squat`). - **report_comments** *(object, optionnel)* : Commentaires détaillés sur différents aspects du mouvement. - **output_quality** *(object, optionnel)* : Toute information supplémentaire sur la qualité ou le score. - **date** *(string, format=JJ/MM/AAAA)* : La date de création ou de traitement de la session.\n### Exemple de Réponse de Succès\n```json {\n  \"grouped_data\": {\n    \"hip_flexion\": {\n      \"metrics\": {\n        \"left_hip_flexion\": 12.5,\n        \"right_hip_flexion\": 15.3,\n        \"hip_flexion_asymmetry\": 2.8\n      },\n      \"graph_data\": {\n        \"lhip_flexion\": [10, 20, 30],\n        \"rhip_flexion\": [15, 25, 35]\n      }\n    },\n    \"ankle_dorsiflexion\": {\n      \"metrics\": {\n        \"left_ankle_flexion\": 9.8,\n        \"right_ankle_flexion\": 10.5,\n        \"ankle_flexion_asymmetry\": 0.7\n      },\n      \"graph_data\": {\n        \"lank_flexion\": [6, 12, 18],\n        \"rank_flexion\": [7, 14, 21]\n      }\n    }\n  },\n  \"graph_timestamps\": [0, 5000, 10000],\n  \"knee_movement_phases\": {\n    \"left\": \"https://storage.googleapis.com/aikonweb001.appspot.com/report-images/.../left.png\",\n    \"right\": \"https://storage.googleapis.com/aikonweb001.appspot.com/report-images/.../right.png\",\n    \"front\": \"https://storage.googleapis.com/aikonweb001.appspot.com/report-images/.../front.png\"\n  },\n  \"user_info\": {\n    \"weight\": 70,\n    \"email\": \"natalia3@gmail.com\",\n    ...\n  },\n  \"exercise\": \"Overhead Squat\",\n  \"report_comments\": {\n    \"hip_flexion\": \"Pour une amélioration optimale de la flexion de la hanche, concentrez-vous sur des étirements dynamiques et des exercices de mobilité.\",\n    \"ankle_dorsiflexion\": \"Natalia, votre dorsiflexion de cheville gauche est à 9.0 degrés...\",\n    \"final_summary\": \"Natalia, vos métriques de flexion du genou et de la hanche sont solides...\",\n    \"hip_abduction\": \"Pour une performance optimale en abduction de hanche, concentrez-vous sur l'amélioration...\"\n  },\n  \"output_quality\": {\n    \"mobility_index\": 46,\n    \"quality_index\": 67\n  },\n  \"date\": \"11/03/2025\"\n} ```\n**Gestion des Erreurs**\n- **403 Interdit** : Renvoyé si le plan de paiement de l'utilisateur n'est pas Standard, Pro ou Enterprise. - **404 Non trouvé** : Renvoyé si les données de session ne peuvent pas être trouvées ou si aucune métrique n'est renvoyée. - **500 Erreur interne du serveur** : Renvoyé si une erreur inattendue se produit sur le serveur.\nUn token API-KEY valide doit être fourni dans l'en-tête `Authorization`.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant unique de la session Overhead Squat.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Définir à `true` pour récupérer le rapport de démonstration Overhead Squat au lieu d'un réel.\n","required":false}],"responses":{"200":{"description":"Rapport Overhead Squat généré/récupéré avec succès.","content":{"application/json":{"schema":{"required":["grouped_data","graph_timestamps","knee_movement_phases","user_info","exercise","output_quality","date"],"type":"object","properties":{"grouped_data":{"description":"Groupes de métriques et données de graphique liées à la performance Overhead Squat.\n","type":"object","additionalProperties":{"required":["metrics","graph_data"],"type":"object","properties":{"metrics":{"description":"Résultats de métriques agrégées (ex., asymétrie gauche/droite).","type":"object","additionalProperties":{"description":"Une valeur métrique numérique.","type":"number"}},"graph_data":{"description":"Tableaux de valeurs numériques pour tracer des graphiques.","type":"object","additionalProperties":{"description":"Un tableau de nombres pour tracer un graphique d'une métrique.","type":"array","items":{"type":"number"}}}}}},"graph_timestamps":{"description":"Une liste d'horodatages (en millisecondes) correspondant à chaque donnée de graphique.\n","type":"array","items":{"type":"number"}},"knee_movement_phases":{"description":"URLs d'images de visualisation montrant différentes vues des phases de mouvement du genou.\n","type":"object","properties":{"left":{"description":"URL de l'image de vue gauche","type":"string"},"right":{"description":"URL de l'image de vue droite","type":"string"},"front":{"description":"URL de l'image de vue frontale","type":"string"}}},"user_info":{"description":"Détails de base optionnels de l'utilisateur (ex., poids, âge, email).","type":"object","additionalProperties":{"description":"Paires clé-valeur de données utilisateur.","type":"string"}},"exercise":{"description":"Nom/type de l'exercice (ex., 'Overhead Squat').","type":"string"},"output_quality":{"description":"Objet optionnel contenant des métriques de score ou des indices.","type":"object","additionalProperties":{"description":"Un score ou indice numérique lié à la qualité de sortie.","type":"number"}},"report_comments":{"description":"Commentaires détaillés pour différents aspects du mouvement.","type":"object","properties":{"hip_flexion":{"description":"Recommandations pour améliorer la flexion de la hanche.","type":"string"},"ankle_dorsiflexion":{"description":"Évaluation et améliorations pour la dorsiflexion de cheville.","type":"string"},"final_summary":{"description":"Résumé global de la session et recommandations.","type":"string"},"hip_abduction":{"description":"Conseils pour améliorer l'abduction de hanche.","type":"string"}}},"date":{"description":"Une chaîne représentant la date de la session au format JJ/MM/AAAA.","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 de créer des sessions (admin uniquement).\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Erreur indiquant des privilèges insuffisants.","type":"string"}}}}}},"404":{"description":"Non trouvé - Les données de session ne peuvent pas être trouvées ou aucune métrique n'est renvoyée.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant une session ou des métriques manquantes.","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Une erreur inattendue s'est produite.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Un message d'erreur détaillé décrivant la défaillance côté serveur.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
````

## Récupérer un résumé Overhead Squat

> Récupère un résumé de haut niveau des données de session Overhead Squat identifiées par son \`session\_id\`.  Ce point de terminaison renvoie des métriques groupées (ex., hip\_flexion, knee\_flexion) sans données de graphique détaillées, ainsi que des métadonnées utilisateur et session optionnelles.\
> \### Paramètre de Chemin\
> \- \*\*session\_id\*\* \*(string, requis)\* : L'identifiant unique de la session Overhead Squat.\
> \### Paramètre de Requête\
> \- \*\*demo\*\* \*(booléen, optionnel)\* : Définir à \`true\` pour récupérer le résumé de démonstration pré-généré Overhead Squat au lieu d'un réel.\
> \### Réponse de Succès (HTTP 200)\
> Renvoie un objet JSON contenant :\
> \- \*\*grouped\_data\*\* \*(object)\* : Métriques de haut niveau groupées par catégorie (ex., hip\_flexion, knee\_flexion). Chaque groupe contient des clés de métriques, chacune mappée à des valeurs numériques.\
> \
> &#x20; \`\`\`json\
> &#x20; {\
> &#x20;   "hip\_flexion": {\
> &#x20;     "left\_hip\_flexion": 84.0,\
> &#x20;     "right\_hip\_flexion": 80.0,\
> &#x20;     "hip\_flexion\_asymmetry": 4.0\
> &#x20;   }\
> &#x20; }\
> &#x20; \`\`\`\
> \
> \- \*\*knee\_movement\_phases\*\* \*(object)\* : URLs d'images de visualisation montrant différentes vues des phases de mouvement du genou.\
> &#x20; \- \*\*left\*\* \*(string)\* : URL pour l'image de vue gauche.\
> &#x20; \- \*\*right\*\* \*(string)\* : URL pour l'image de vue droite.\
> &#x20; \- \*\*front\*\* \*(string)\* : URL pour l'image de vue frontale.\
> \
> \- \*\*user\_info\*\* \*(object, optionnel)\* : Contient des champs liés à l'utilisateur, ex., poids, display\_name, email. - \*\*exercise\*\* \*(string)\* : Le nom de l'exercice (ex., \`Overhead Squat\`). - \*\*output\_quality\*\* \*(object, optionnel)\* : Contient des valeurs ou indices numériques (ex., mobility\_index). - \*\*summary\*\* \*(object, optionnel)\* : Contient des commentaires détaillés sur différents aspects du mouvement. - \*\*date\*\* \*(string, format=JJ/MM/AAAA)\* : La date de création/traitement de cette session.\
> \### Exemple de Réponse de Succès\
> \`\`\`json {\
> &#x20; "grouped\_data": {\
> &#x20;   "hip\_flexion": {\
> &#x20;     "left\_hip\_flexion": 84.0,\
> &#x20;     "right\_hip\_flexion": 80.0,\
> &#x20;     "hip\_flexion\_asymmetry": 4.0\
> &#x20;   },\
> &#x20;   "hip\_adduction": {\
> &#x20;     "left\_hip\_abduction": 9.0,\
> &#x20;     "right\_hip\_abduction": 16.0,\
> &#x20;     "hip\_abduction\_asymmetry": 7.0\
> &#x20;   },\
> &#x20;   "knee\_flexion": {\
> &#x20;     "left\_knee\_flexion": 79.0,\
> &#x20;     "right\_knee\_flexion": 82.0,\
> &#x20;     "knee\_flexion\_asymmetry": 3.0\
> &#x20;   },\
> &#x20;   "ankle\_dorsiflexion": {\
> &#x20;     "left\_ankle\_flexion": 9.0,\
> &#x20;     "right\_ankle\_flexion": 15.0,\
> &#x20;     "ankle\_flexion\_asymmetry": 6.0\
> &#x20;   }\
> &#x20; },\
> &#x20; "knee\_movement\_phases": {\
> &#x20;   "left": "<https://storage.googleapis.com/aikonweb001.appspot.com/report-images/.../left.png",\\>
> &#x20;   "right": "<https://storage.googleapis.com/aikonweb001.appspot.com/report-images/.../right.png",\\>
> &#x20;   "front": "<https://storage.googleapis.com/aikonweb001.appspot.com/report-images/.../front.png"\\>
> &#x20; },\
> &#x20; "user\_info": {\
> &#x20;   "display\_name": "Natalia Alioth",\
> &#x20;   "weight": 70.0,\
> &#x20;   "email": "<natalia3@gmail.com>",\
> &#x20;   ...\
> &#x20; },\
> &#x20; "exercise": "Overhead Squat",\
> &#x20; "output\_quality": {\
> &#x20;   "mobility\_index": 46.0,\
> &#x20;   "quality\_index": 67.0\
> &#x20; },\
> &#x20; "summary": {\
> &#x20;   "hip\_flexion": "Pour une amélioration optimale de la flexion de la hanche, concentrez-vous sur des étirements dynamiques et des exercices de mobilité.",\
> &#x20;   "ankle\_dorsiflexion": "Natalia, votre dorsiflexion de cheville gauche est à 9.0 degrés...",\
> &#x20;   "final\_summary": "Natalia, vos métriques de flexion du genou et de la hanche sont solides...",\
> &#x20;   "hip\_abduction": "Pour une performance optimale en abduction de hanche, concentrez-vous sur l'amélioration..."\
> &#x20; },\
> &#x20; "date": "11/03/2025"\
> } \`\`\`\
> \*\*Gestion des Erreurs\*\*\
> \- \*\*401 Non autorisé\*\* : Token manquant ou invalide. - \*\*403 Interdit\*\* : Le plan de paiement n'est pas valide (Basic, Standard, Pro ou Enterprise requis) ou l'utilisateur manque de privilèges. - \*\*404 Non trouvé\*\* : Les données de session ne sont pas trouvées ou les métriques sont manquantes. - \*\*500 Erreur interne du serveur\*\* : Erreur serveur inattendue.\
> Un token API-KEY valide doit être fourni dans l'en-tête \`Authorization\`.<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":{"/mobility-assessment/sessions/{session_id}/summary/":{"get":{"operationId":"mobility-assessment_sessions_summary_list","summary":"Récupérer un résumé Overhead Squat","description":"Récupère un résumé de haut niveau des données de session Overhead Squat identifiées par son `session_id`.  Ce point de terminaison renvoie des métriques groupées (ex., hip_flexion, knee_flexion) sans données de graphique détaillées, ainsi que des métadonnées utilisateur et session optionnelles.\n### Paramètre de Chemin\n- **session_id** *(string, requis)* : L'identifiant unique de la session Overhead Squat.\n### Paramètre de Requête\n- **demo** *(booléen, optionnel)* : Définir à `true` pour récupérer le résumé de démonstration pré-généré Overhead Squat au lieu d'un réel.\n### Réponse de Succès (HTTP 200)\nRenvoie un objet JSON contenant :\n- **grouped_data** *(object)* : Métriques de haut niveau groupées par catégorie (ex., hip_flexion, knee_flexion). Chaque groupe contient des clés de métriques, chacune mappée à des valeurs numériques.\n\n  ```json\n  {\n    \"hip_flexion\": {\n      \"left_hip_flexion\": 84.0,\n      \"right_hip_flexion\": 80.0,\n      \"hip_flexion_asymmetry\": 4.0\n    }\n  }\n  ```\n\n- **knee_movement_phases** *(object)* : URLs d'images de visualisation montrant différentes vues des phases de mouvement du genou.\n  - **left** *(string)* : URL pour l'image de vue gauche.\n  - **right** *(string)* : URL pour l'image de vue droite.\n  - **front** *(string)* : URL pour l'image de vue frontale.\n\n- **user_info** *(object, optionnel)* : Contient des champs liés à l'utilisateur, ex., poids, display_name, email. - **exercise** *(string)* : Le nom de l'exercice (ex., `Overhead Squat`). - **output_quality** *(object, optionnel)* : Contient des valeurs ou indices numériques (ex., mobility_index). - **summary** *(object, optionnel)* : Contient des commentaires détaillés sur différents aspects du mouvement. - **date** *(string, format=JJ/MM/AAAA)* : La date de création/traitement de cette session.\n### Exemple de Réponse de Succès\n```json {\n  \"grouped_data\": {\n    \"hip_flexion\": {\n      \"left_hip_flexion\": 84.0,\n      \"right_hip_flexion\": 80.0,\n      \"hip_flexion_asymmetry\": 4.0\n    },\n    \"hip_adduction\": {\n      \"left_hip_abduction\": 9.0,\n      \"right_hip_abduction\": 16.0,\n      \"hip_abduction_asymmetry\": 7.0\n    },\n    \"knee_flexion\": {\n      \"left_knee_flexion\": 79.0,\n      \"right_knee_flexion\": 82.0,\n      \"knee_flexion_asymmetry\": 3.0\n    },\n    \"ankle_dorsiflexion\": {\n      \"left_ankle_flexion\": 9.0,\n      \"right_ankle_flexion\": 15.0,\n      \"ankle_flexion_asymmetry\": 6.0\n    }\n  },\n  \"knee_movement_phases\": {\n    \"left\": \"https://storage.googleapis.com/aikonweb001.appspot.com/report-images/.../left.png\",\n    \"right\": \"https://storage.googleapis.com/aikonweb001.appspot.com/report-images/.../right.png\",\n    \"front\": \"https://storage.googleapis.com/aikonweb001.appspot.com/report-images/.../front.png\"\n  },\n  \"user_info\": {\n    \"display_name\": \"Natalia Alioth\",\n    \"weight\": 70.0,\n    \"email\": \"natalia3@gmail.com\",\n    ...\n  },\n  \"exercise\": \"Overhead Squat\",\n  \"output_quality\": {\n    \"mobility_index\": 46.0,\n    \"quality_index\": 67.0\n  },\n  \"summary\": {\n    \"hip_flexion\": \"Pour une amélioration optimale de la flexion de la hanche, concentrez-vous sur des étirements dynamiques et des exercices de mobilité.\",\n    \"ankle_dorsiflexion\": \"Natalia, votre dorsiflexion de cheville gauche est à 9.0 degrés...\",\n    \"final_summary\": \"Natalia, vos métriques de flexion du genou et de la hanche sont solides...\",\n    \"hip_abduction\": \"Pour une performance optimale en abduction de hanche, concentrez-vous sur l'amélioration...\"\n  },\n  \"date\": \"11/03/2025\"\n} ```\n**Gestion des Erreurs**\n- **401 Non autorisé** : Token manquant ou invalide. - **403 Interdit** : Le plan de paiement n'est pas valide (Basic, Standard, Pro ou Enterprise requis) ou l'utilisateur manque de privilèges. - **404 Non trouvé** : Les données de session ne sont pas trouvées ou les métriques sont manquantes. - **500 Erreur interne du serveur** : Erreur serveur inattendue.\nUn token API-KEY valide doit être fourni dans l'en-tête `Authorization`.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant unique de la session Overhead Squat.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Définir à `true` pour récupérer le résumé de démonstration pré-généré Overhead Squat au lieu d'un réel.\n","required":false}],"responses":{"200":{"description":"Résumé Overhead Squat récupéré avec succès.","content":{"application/json":{"schema":{"required":["grouped_data","knee_movement_phases","exercise","date"],"type":"object","properties":{"grouped_data":{"description":"Métriques de haut niveau groupées par catégorie (pas de données de graphique).","type":"object","additionalProperties":{"description":"Un objet où chaque clé est un nom de métrique et la valeur est numérique.\n","type":"object","additionalProperties":{"description":"Valeur numérique pour la métrique.","type":"number"}}},"knee_movement_phases":{"description":"URLs d'images de visualisation montrant différentes vues des phases de mouvement du genou.\n","type":"object","properties":{"left":{"description":"URL de l'image de vue gauche","type":"string"},"right":{"description":"URL de l'image de vue droite","type":"string"},"front":{"description":"URL de l'image de vue frontale","type":"string"}}},"user_info":{"description":"Informations optionnelles sur l'utilisateur (ex., poids, email).","type":"object","additionalProperties":{"description":"Une paire clé-valeur de métadonnées utilisateur.","type":"string"}},"exercise":{"description":"Le nom/type de l'exercice, ex. 'Overhead Squat'.","type":"string"},"output_quality":{"description":"Objet optionnel contenant des scores numériques ou des indices de qualité.","type":"object","additionalProperties":{"description":"Un score ou indice numérique lié à la qualité de sortie.","type":"number"}},"summary":{"description":"Commentaires détaillés sur différents aspects du mouvement.","type":"object","properties":{"hip_flexion":{"description":"Recommandations pour améliorer la flexion de la hanche.","type":"string"},"ankle_dorsiflexion":{"description":"Évaluation et améliorations pour la dorsiflexion de cheville.","type":"string"},"final_summary":{"description":"Résumé global de la session et recommandations.","type":"string"},"hip_abduction":{"description":"Conseils pour améliorer l'abduction de hanche.","type":"string"}}},"date":{"description":"Date de la session au format 'JJ/MM/AAAA'.","type":"string"}}}}}},"401":{"description":"Non autorisé - Token manquant ou invalide.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Un message d'erreur indiquant que les informations d'identification n'ont pas été fournies ou sont invalides.\n","type":"string"}}}}}},"403":{"description":"Interdit - Plan de paiement invalide ou privilèges insuffisants pour récupérer le résumé.\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant que l'utilisateur ne peut pas accéder à la ressource.","type":"string"}}}}}},"404":{"description":"Non trouvé - Session non trouvée ou métriques manquantes.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant que la session n'existe pas ou manque de données.\n","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Une erreur inattendue s'est produite.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Un message d'erreur détaillé décrivant l'échec.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
````

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

> \### Générer des fils de résumé\
> Ce point de terminaison génère des fils 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\` à \`/mobility-assessment/sessions/{session\_id}/summary/\` où \`{session\_id}\` est l'identifiant unique de la session.\
> \*\*Paramètres :\*\*\
> \- \`session\_id\` \*(string, requis)\* : L'identifiant unique de la session pour laquelle les fils de résumé doivent être générés.\
> \*\*Structure de la Réponse :\*\*\
> Lors d'une requête réussie, le point de terminaison renvoie un objet JSON mappant chaque métrique à son ID de fil correspondant.\
> \*\*Exemple de Réponse :\*\*\
> \`\`\`json {\
> &#x20;   "hip\_flexion": "thread\_x7C4p5ancmeluBmEJgmFwXra",\
> &#x20;   "hip\_abduction": "thread\_lth8oxKfnktwne9ryGZefd6V",\
> &#x20;   "knee\_flexion": "thread\_cM4jY2RLfVNeFIImJXaIinMK",\
> &#x20;   "knee\_movement": "thread\_8gp2spSn8XasAOafDwwzw5QT",\
> &#x20;   "ankle\_dorsiflexion": "thread\_EIwgj822ZHtGCTMucHZDtatH",\
> &#x20;   "final\_summary": "thread\_2XwSNDNrclHgakiBFm4o9K65"\
> } \`\`\`\
> \*\*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 fils de résumé.<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":{"/mobility-assessment/sessions/{session_id}/summary/":{"post":{"operationId":"mobility-assessment_sessions_summary_create","summary":"Générer des fils de résumé pour une session","description":"### Générer des fils de résumé\nCe point de terminaison génère des fils 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 :**\nEnvoyez une requête `POST` à `/mobility-assessment/sessions/{session_id}/summary/` où `{session_id}` est l'identifiant unique de la session.\n**Paramètres :**\n- `session_id` *(string, requis)* : L'identifiant unique de la session pour laquelle les fils de résumé doivent être générés.\n**Structure de la Réponse :**\nLors d'une requête réussie, le point de terminaison renvoie un objet JSON mappant chaque métrique à son ID de fil correspondant.\n**Exemple de Réponse :**\n```json {\n    \"hip_flexion\": \"thread_x7C4p5ancmeluBmEJgmFwXra\",\n    \"hip_abduction\": \"thread_lth8oxKfnktwne9ryGZefd6V\",\n    \"knee_flexion\": \"thread_cM4jY2RLfVNeFIImJXaIinMK\",\n    \"knee_movement\": \"thread_8gp2spSn8XasAOafDwwzw5QT\",\n    \"ankle_dorsiflexion\": \"thread_EIwgj822ZHtGCTMucHZDtatH\",\n    \"final_summary\": \"thread_2XwSNDNrclHgakiBFm4o9K65\"\n} ```\n**Notes :**\n- 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 fils de résumé.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Identifiant unique de la session pour laquelle les fils de résumé doivent être générés.\n","required":true},{"schema":{"type":"string","enum":["metric","imperial"]},"name":"measurement_system","in":"query","description":"Système de mesure : 'métrique' ou 'impérial'","required":false}],"responses":{"201":{"description":"Fils de résumé générés avec succès.","content":{"application/json":{"schema":{"description":"Dictionnaire mappant chaque métrique à son ID de fil correspondant.","required":["hip_flexion","hip_abduction","knee_flexion","knee_movement","ankle_dorsiflexion","final_summary"],"type":"object","properties":{"hip_flexion":{"description":"Identifiant unique pour le fil de résumé de flexion de hanche.","type":"string"},"hip_abduction":{"description":"Identifiant unique pour le fil de résumé d'abduction de hanche.","type":"string"},"knee_flexion":{"description":"Identifiant unique pour le fil de résumé de flexion de genou.","type":"string"},"knee_movement":{"description":"Identifiant unique pour le fil de résumé de mouvement de genou.","type":"string"},"ankle_dorsiflexion":{"description":"Identifiant unique pour le fil de résumé de dorsiflexion de cheville.","type":"string"},"final_summary":{"description":"Identifiant unique pour le fil de résumé final.","type":"string"}}}}}},"401":{"description":"Non autorisé - Token manquant ou invalide.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Un message d'erreur indiquant que les informations d'identification n'ont pas été fournies ou sont invalides.\n","type":"string"}}}}}},"403":{"description":"Interdit - Plan de paiement invalide ou privilèges insuffisants pour créer des fils de recommandations.\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant que l'utilisateur ne peut pas accéder à la ressource.","type":"string"}}}}}},"404":{"description":"Non trouvé - Session non trouvée ou métriques manquantes.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Message d'erreur indiquant que la session n'existe pas ou manque de données.\n","type":"string"}}}}}},"500":{"description":"Erreur interne du serveur - Une erreur inattendue s'est produite.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Un message d'erreur détaillé décrivant l'échec.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
````


---

# 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/mobility-assessment.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.
