# Оценка мобильности

## Создать новую сессию обработки видео

> Этот эндпоинт позволяет \*\*администратору\*\* (или суб-администратору) загружать \*\*видеофайл\*\* для обработки и создавать новый ресурс "сессии" \*\*от имени другого пользователя\*\* (Оценка мобильности). Сервер вернет \`session\_id\`, который можно использовать для проверки статуса или получения деталей/результатов сессии.\
> \### Тело запроса (Multipart/Form-Data)\
> Необходимо указать следующие поля:\
> \- \*\*user\_id\*\* \*(строка, обязательно)\*: ID пользователя, от имени которого создается сессия. - \*\*video\*\* \*(файл, обязательно)\*: Исходный видеофайл для обработки. - \*\*session\_name\*\* \*(строка, опционально)\*: Человекочитаемое название сессии. - \*\*exercise\_name\*\* \*(строка, обязательно)\*: Название упражнения. Выберите одно из: - \*\*body\_joint\_angles\*\* \*(массив строк, опционально)\*: Список названий суставов (например, 'elbow, knee, ankle'). По умолчанию \['all'], если не указано.\
> \### Структура ответа\
> При успехе (HTTP 200) ответ содержит JSON-объект с: - \*\*session\_id\*\* \*(строка)\*: Уникальный идентификатор созданной сессии. - \*\*title\*\* \*(строка)\*: Название сессии (используется значение \`session\_name\` или стандартное).\
> \### Рабочий процесс\
> 1\. Отправьте \*\*POST\*\*-запрос с multipart/form-data, содержащий обязательные поля \`user\_id\` и \`video\`, а также опциональные поля. 2. Укажите действительный API-KEY токен в заголовке \`Authorization\`. 3. Вызывающий должен иметь права администратора для создания сессии от имени другого пользователя. 4. При успехе сервер вернет \`session\_id\` и \`title\`. 5. При ошибке (например, отсутствие полей, недостаток прав) вернется JSON-объект с ключом \`error\`.\
> \#### Пример cURL:\
> \`\`\`bash curl -X POST \\\
> &#x20;    -H 'Content-Type: multipart/form-data' \\\
> &#x20;    -H 'Authorization: API-KEY \<YOUR\_ADMIN\_TOKEN>' \\\
> &#x20;    -F 'user\_id=someUserId123' \\\
> &#x20;    -F 'video=@/path/to/video.mp4' \\\
> &#x20;    -F 'session\_name=Custom Session' \\\
> &#x20;    -F 'body\_joint\_angles=ankle, knee' \\\
> &#x20;    https\://\<backend-link>/mobility-assessment/management/sessions/\
> \`\`\`<br>

````json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Укажите ваш API-ключ в заголовке: API-KEY: <api_key>"}}},"paths":{"/mobility-assessment/sessions/":{"post":{"operationId":"mobility-assessment_sessions_create","summary":"Создать новую сессию обработки видео","description":"Этот эндпоинт позволяет **администратору** (или суб-администратору) загружать **видеофайл** для обработки и создавать новый ресурс \"сессии\" **от имени другого пользователя** (Оценка мобильности). Сервер вернет `session_id`, который можно использовать для проверки статуса или получения деталей/результатов сессии.\n### Тело запроса (Multipart/Form-Data)\nНеобходимо указать следующие поля:\n- **user_id** *(строка, обязательно)*: ID пользователя, от имени которого создается сессия. - **video** *(файл, обязательно)*: Исходный видеофайл для обработки. - **session_name** *(строка, опционально)*: Человекочитаемое название сессии. - **exercise_name** *(строка, обязательно)*: Название упражнения. Выберите одно из: - **body_joint_angles** *(массив строк, опционально)*: Список названий суставов (например, 'elbow, knee, ankle'). По умолчанию ['all'], если не указано.\n### Структура ответа\nПри успехе (HTTP 200) ответ содержит JSON-объект с: - **session_id** *(строка)*: Уникальный идентификатор созданной сессии. - **title** *(строка)*: Название сессии (используется значение `session_name` или стандартное).\n### Рабочий процесс\n1. Отправьте **POST**-запрос с multipart/form-data, содержащий обязательные поля `user_id` и `video`, а также опциональные поля. 2. Укажите действительный API-KEY токен в заголовке `Authorization`. 3. Вызывающий должен иметь права администратора для создания сессии от имени другого пользователя. 4. При успехе сервер вернет `session_id` и `title`. 5. При ошибке (например, отсутствие полей, недостаток прав) вернется JSON-объект с ключом `error`.\n#### Пример cURL:\n```bash curl -X POST \\\n     -H 'Content-Type: multipart/form-data' \\\n     -H 'Authorization: API-KEY <YOUR_ADMIN_TOKEN>' \\\n     -F 'user_id=someUserId123' \\\n     -F 'video=@/path/to/video.mp4' \\\n     -F 'session_name=Custom Session' \\\n     -F 'body_joint_angles=ankle, knee' \\\n     https://<backend-link>/mobility-assessment/management/sessions/\n```\n","responses":{"200":{"description":"Сессия обработки видео успешно создана (HTTP 200).","content":{"application/json":{"schema":{"required":["session_id","title"],"type":"object","properties":{"session_id":{"description":"Уникальный идентификатор созданной сессии.","type":"string"},"title":{"description":"Название сессии (стандартное, если не указано).","type":"string"}}}}}},"400":{"description":"Неверный запрос - возможно, отсутствует `user_id`, `video` или неверные данные формы.\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Подробное сообщение об ошибке.","type":"string"}}}}}},"401":{"description":"Не авторизован - отсутствует или неверный токен доступа.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Ошибка, указывающая на отсутствие или неверный токен.","type":"string"}}}}}},"403":{"description":"Запрещено - пользователь не имеет прав администратора для создания сессий от имени других.\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Ошибка, указывающая на недостаток прав.","type":"string"}}}}}},"404":{"description":"Не найдено - проблемы с бизнес-логикой или ограничения ресурсов (например, лимит сессий).\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, описывающее проблему.","type":"string"}}}}}},"500":{"description":"Внутренняя ошибка сервера - непредвиденная ошибка на сервере.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Подробное сообщение об ошибке, указывающее на сбой на стороне сервера.","type":"string"}}}}}}},"tags":["mobility-assessment"],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"user_id":{"type":"string","description":"**Обязательно.** ID пользователя, для которого создается сессия (текстовое поле)."},"video":{"type":"string","description":"**Обязательно.** Видеофайл для обработки (поле типа файл)."},"session_name":{"type":"string","description":"**Опционально.** Описательное название сессии (текстовое поле)."},"exercise":{"type":"string","description":"**Обязательно.** Название упражнения. Выберите одно из: 'Overhead Squat', 'Joint Angle Mobility'\n"},"body_joint_angles":{"type":"array","description":"**Опционально.** Список названий суставов через запятую. Доступные значения: `'ankle'`, `'knee'`, `'elbow'`, `'hip'`, `'shoulder'`. Пример: `ankle,knee,hip`\n"}},"required":["user_id","video","exercise"]}}}}}}}}
````

## Получить данные сессии оценки мобильности

> Получает детали конкретной сессии \*\*Оценки мобильности\*\* по её \`session\_id\`. Эндпоинт возвращает информацию, такую как количество сегментов, URL видео, данные об углах, временные метки и другие метаданные сессии.\
> \### Параметр пути\
> \- \*\*session\_id\*\* \*(строка, обязательно)\*: Уникальный идентификатор сессии Оценки мобильности.\
> \### Параметр запроса\
> \- \*\*demo\*\* \*(логический, опционально)\*: Установите \`true\`, чтобы получить демо-сессию вместо реальной.\
> \### Успешный ответ (HTTP 200)\
> JSON-объект, содержащий:\
> \- \*\*segments\*\* \*(целое число)\*: Общее количество сегментов в оценке мобильности. - \*\*video\_url\*\* \*(строка, URI)\*: URL исходного загруженного видео. - \*\*analyzed\_video\_url\*\* \*(строка, URI, опционально)\*: URL обработанного видео. - \*\*activity\*\* \*(строка)\*: Тип активности, например, \`Mobility Assessment\`. - \*\*title\*\* \*(строка)\*: Название сессии. - \*\*user\_name\*\* \*(строка)\*: Имя пользователя, связанного с сессией. - \*\*created\_at\*\* \*(объект)\*: Объект с датой и временем создания сессии.\
> &#x20; \- \*\*date\*\* \*(строка)\*: Формат \`DD/MM/YYYY\`.\
> &#x20; \- \*\*time\*\* \*(строка)\*: Формат \`HH:MM AM/PM\`.\
> \- \*\*exercise\*\* \*(строка)\*: Название упражнения (например, \`Overhead Squad\`). - \*\*angles\*\* \*(объект)\*: Объект с данными об углах, релевантными для оценки мобильности.\
> &#x20; \- \*\*hip\_angle\*\* \*(массив чисел)\*: Пример массива углов бедра.\
> &#x20; \- \*\*ankle\_angle\*\* \*(массив чисел)\*: Пример массива углов лодыжки.\
> &#x20; \- ... (дополнительные поля углов по необходимости)\
> \- \*\*all\_timestamps\*\* \*(массив чисел)\*: Массив временных меток, соответствующих данным углов.\
> \### Ошибки\
> \- \*\*400 Неверный запрос\*\*: Неверные или отсутствующие параметры. - \*\*401 Не авторизован\*\*: Отсутствует или неверный токен аутентификации. - \*\*403 Запрещено\*\*: Недостаточно прав для получения этой сессии. - \*\*404 Не найдено\*\*: Сессия не найдена. - \*\*500 Внутренняя ошибка сервера\*\*: Непредвиденная ошибка на сервере.\
> В заголовке \`Authorization\` должен быть указан действительный API-KEY токен.<br>

```json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Укажите ваш API-ключ в заголовке: API-KEY: <api_key>"}}},"paths":{"/mobility-assessment/sessions/{session_id}/":{"get":{"operationId":"mobility-assessment_sessions_read","summary":"Получить данные сессии оценки мобильности","description":"Получает детали конкретной сессии **Оценки мобильности** по её `session_id`. Эндпоинт возвращает информацию, такую как количество сегментов, URL видео, данные об углах, временные метки и другие метаданные сессии.\n### Параметр пути\n- **session_id** *(строка, обязательно)*: Уникальный идентификатор сессии Оценки мобильности.\n### Параметр запроса\n- **demo** *(логический, опционально)*: Установите `true`, чтобы получить демо-сессию вместо реальной.\n### Успешный ответ (HTTP 200)\nJSON-объект, содержащий:\n- **segments** *(целое число)*: Общее количество сегментов в оценке мобильности. - **video_url** *(строка, URI)*: URL исходного загруженного видео. - **analyzed_video_url** *(строка, URI, опционально)*: URL обработанного видео. - **activity** *(строка)*: Тип активности, например, `Mobility Assessment`. - **title** *(строка)*: Название сессии. - **user_name** *(строка)*: Имя пользователя, связанного с сессией. - **created_at** *(объект)*: Объект с датой и временем создания сессии.\n  - **date** *(строка)*: Формат `DD/MM/YYYY`.\n  - **time** *(строка)*: Формат `HH:MM AM/PM`.\n- **exercise** *(строка)*: Название упражнения (например, `Overhead Squad`). - **angles** *(объект)*: Объект с данными об углах, релевантными для оценки мобильности.\n  - **hip_angle** *(массив чисел)*: Пример массива углов бедра.\n  - **ankle_angle** *(массив чисел)*: Пример массива углов лодыжки.\n  - ... (дополнительные поля углов по необходимости)\n- **all_timestamps** *(массив чисел)*: Массив временных меток, соответствующих данным углов.\n### Ошибки\n- **400 Неверный запрос**: Неверные или отсутствующие параметры. - **401 Не авторизован**: Отсутствует или неверный токен аутентификации. - **403 Запрещено**: Недостаточно прав для получения этой сессии. - **404 Не найдено**: Сессия не найдена. - **500 Внутренняя ошибка сервера**: Непредвиденная ошибка на сервере.\nВ заголовке `Authorization` должен быть указан действительный API-KEY токен.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Уникальный идентификатор сессии Оценки мобильности.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Установите `true`, чтобы получить демо-сессию вместо реальной.","required":false}],"responses":{"200":{"description":"Успешно получены данные сессии Оценки мобильности.","content":{"application/json":{"schema":{"required":["segments","video_url","activity","title","user_name","created_at","exercise","angles","all_timestamps"],"type":"object","properties":{"segments":{"description":"Количество сегментов в оценке мобильности.","type":"integer"},"video_url":{"description":"URL исходного видео.","type":"string","format":"uri"},"analyzed_video_url":{"description":"Опциональный URL обработанного видео.","type":"string","format":"uri"},"activity":{"description":"Тип активности, например, 'Mobility Assessment'.","type":"string"},"title":{"description":"Понятное название сессии.","type":"string"},"user_name":{"description":"Имя пользователя, связанного с сессией.","type":"string"},"created_at":{"description":"Объект с датой и временем создания сессии.","type":"object","properties":{"date":{"description":"Дата создания в формате 'DD/MM/YYYY'.","type":"string"},"time":{"description":"Время создания в формате 'HH:MM AM/PM'.","type":"string"}}},"exercise":{"description":"Название упражнения, например, 'Overhead Squad'.","type":"string"},"angles":{"description":"Объект с массивами данных об углах, релевантных для оценки мобильности.\n","type":"object","additionalProperties":{"description":"Массив числовых значений для конкретного угла.","type":"array","items":{"type":"number"}}},"all_timestamps":{"description":"Массив числовых временных меток, соответствующих каждому значению угла.\n","type":"array","items":{"type":"number"}}}}}}},"400":{"description":"Неверный запрос - неверные или отсутствующие параметры.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Описательное сообщение об ошибке.","type":"string"}}}}}},"401":{"description":"Не авторизован - отсутствует или неверный токен аутентификации.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Ошибка, указывающая на отсутствие или неверные учетные данные токена.\n","type":"string"}}}}}},"403":{"description":"Запрещено - пользователь не имеет прав для получения этой сессии.\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Пользователю запрещено получать эту сессию.","type":"string"}}}}}},"404":{"description":"Не найдено - сессия не найдена или не существует.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что сессию не удалось найти.","type":"string"}}}}}},"500":{"description":"Внутренняя ошибка сервера - непредвиденная ошибка на сервере.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Подробное сообщение об ошибке, описывающее сбой на стороне сервера.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
```

## Экспорт данных сессии (Оценка мобильности)

> Экспортирует данные о ключевых точках и углах для конкретной сессии, связанной с мобильностью. Эндпоинт возвращает минимальные метаданные, включая только \`activity\`, \`angles\`, \`all\_timestamps\` и \`keypoints\` с различными массивами точек ключевых точек.\
> \### Параметр пути\
> \- \*\*session\_id\*\* \*(строка, обязательно)\*: Уникальный идентификатор сессии для экспорта данных.\
> \### Параметр запроса\
> \- \*\*demo\*\* \*(логический, опционально)\*: Установите \`true\`, чтобы получить данные демо-сессии вместо реальной.\
> \### Успешный ответ (HTTP 200)\
> JSON-объект, содержащий:\
> \- \*\*activity\*\* \*(строка)\*: Тип активности (например, 'Mobility Assessment'). - \*\*angles\*\* \*(объект)\*: Объект с данными об углах, релевантными для оценки мобильности.\
> &#x20; \- \*\*hip\_angle\*\* \*(массив чисел)\*: Пример массива углов бедра.\
> &#x20; \- \*\*ankle\_angle\*\* \*(массив чисел)\*: Пример массива углов лодыжки.\
> &#x20; \- ... (дополнительные поля углов по необходимости)\
> \- \*\*all\_timestamps\*\* \*(массив чисел)\*: Массив временных меток, соответствующих каждой точке данных. - \*\*keypoints\*\* \*(объект)\*: Содержит массивы точек ключевых точек. Примеры:\
> &#x20; \- \*\*lknev\*\* \*(массив чисел)\*: Массив точек левого колена.\
> &#x20; \- \*\*ltoev\*\* \*(массив чисел)\*: Массив точек левой стопы.\
> &#x20; \- \*\*relbv\*\* \*(массив чисел)\*: Массив точек правого локтя.\
> &#x20; \- \*\*rtoey\*\* \*(массив чисел)\*: Массив точек правой стопы.\
> &#x20; \- \*\*headv\*\* \*(массив чисел)\*: Массив точек головы.\
> &#x20; \- \*\*rearv\*\* \*(массив чисел)\*: Массив точек правого уха.\
> &#x20; \- \*\*rshox\*\* \*(массив чисел)\*: Массив точек правого плеча.\
> &#x20; \- \*\*etc\*\* \*(массив чисел)\*: Массив всех остальных точек.\
> \
> \### Ошибки\
> \- \*\*400 Неверный запрос\*\*: Неверные или отсутствующие параметры. - \*\*401 Не авторизован\*\*: Отсутствует или неверный токен аутентификации. - \*\*403 Запрещено\*\*: Недостаточно прав для получения этих данных. - \*\*404 Не найдено\*\*: Сессия не существует. - \*\*500 Внутренняя ошибка сервера\*\*: Непредвиденная ошибка.\
> В заголовке \`Authorization\` должен быть указан действительный API-KEY токен.<br>

```json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Укажите ваш API-ключ в заголовке: API-KEY: <api_key>"}}},"paths":{"/mobility-assessment/sessions/{session_id}/export/":{"get":{"operationId":"mobility-assessment_sessions_export_list","summary":"Экспорт данных сессии (Оценка мобильности)","description":"Экспортирует данные о ключевых точках и углах для конкретной сессии, связанной с мобильностью. Эндпоинт возвращает минимальные метаданные, включая только `activity`, `angles`, `all_timestamps` и `keypoints` с различными массивами точек ключевых точек.\n### Параметр пути\n- **session_id** *(строка, обязательно)*: Уникальный идентификатор сессии для экспорта данных.\n### Параметр запроса\n- **demo** *(логический, опционально)*: Установите `true`, чтобы получить данные демо-сессии вместо реальной.\n### Успешный ответ (HTTP 200)\nJSON-объект, содержащий:\n- **activity** *(строка)*: Тип активности (например, 'Mobility Assessment'). - **angles** *(объект)*: Объект с данными об углах, релевантными для оценки мобильности.\n  - **hip_angle** *(массив чисел)*: Пример массива углов бедра.\n  - **ankle_angle** *(массив чисел)*: Пример массива углов лодыжки.\n  - ... (дополнительные поля углов по необходимости)\n- **all_timestamps** *(массив чисел)*: Массив временных меток, соответствующих каждой точке данных. - **keypoints** *(объект)*: Содержит массивы точек ключевых точек. Примеры:\n  - **lknev** *(массив чисел)*: Массив точек левого колена.\n  - **ltoev** *(массив чисел)*: Массив точек левой стопы.\n  - **relbv** *(массив чисел)*: Массив точек правого локтя.\n  - **rtoey** *(массив чисел)*: Массив точек правой стопы.\n  - **headv** *(массив чисел)*: Массив точек головы.\n  - **rearv** *(массив чисел)*: Массив точек правого уха.\n  - **rshox** *(массив чисел)*: Массив точек правого плеча.\n  - **etc** *(массив чисел)*: Массив всех остальных точек.\n\n### Ошибки\n- **400 Неверный запрос**: Неверные или отсутствующие параметры. - **401 Не авторизован**: Отсутствует или неверный токен аутентификации. - **403 Запрещено**: Недостаточно прав для получения этих данных. - **404 Не найдено**: Сессия не существует. - **500 Внутренняя ошибка сервера**: Непредвиденная ошибка.\nВ заголовке `Authorization` должен быть указан действительный API-KEY токен.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Уникальный идентификатор сессии для экспорта данных.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Установите `true`, чтобы получить данные демо-сессии вместо реальной.","required":false}],"responses":{"200":{"description":"Данные сессии успешно экспортированы.","content":{"application/json":{"schema":{"required":["activity","angles","all_timestamps","keypoints"],"type":"object","properties":{"activity":{"description":"Тип активности (например, 'Mobility Assessment').","type":"string"},"angles":{"description":"Пары ключ-значение для метрик углов. Каждое значение - массив чисел.\n","type":"object","additionalProperties":{"description":"Массив числовых значений углов.","type":"array","items":{"type":"number"}}},"all_timestamps":{"description":"Массив числовых временных меток, соответствующих каждой точке данных.","type":"array","items":{"type":"number"}},"keypoints":{"description":"Содержит массивы точек ключевых точек для каждой отслеживаемой части тела.","type":"object","additionalProperties":{"description":"Массив числовых значений для указанной ключевой точки.","type":"array","items":{"type":"number"}}}}}}}},"400":{"description":"Неверный запрос - возможно, неверный или отсутствующий session_id.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Описательное сообщение об ошибке.","type":"string"}}}}}},"401":{"description":"Не авторизован - отсутствует или неверный токен аутентификации.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее на отсутствие или неверные учетные данные токена.","type":"string"}}}}}},"403":{"description":"Запрещено - недостаточно прав для получения данных сессии.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что пользователю запрещен доступ к этим данным.\n","type":"string"}}}}}},"404":{"description":"Не найдено - сессия не существует.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что запрашиваемая сессия не найдена.\n","type":"string"}}}}}},"500":{"description":"Внутренняя ошибка сервера - непредвиденная ошибка на сервере.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Подробное сообщение об ошибке, описывающее сбой на стороне сервера.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
```

## Получить сохраненную конфигурацию отчета для сессии

> Возвращает текущие настройки отображения для указанной сессии Joint Angle mobility.\
> \- \*\*Параметр пути\*\*\
> &#x20; \- \`session\_id\` \*(строка, обязательно)\*: Идентификатор сессии для запроса.\
> \
> \*\*Ответы\*\*\
> \- \*\*200 OK\*\*: Конфигурация найдена и возвращена.\
> &#x20; \- \`shown\_angles\`: Массив ключей углов, выбранных пользователем.\
> &#x20; \- \`comments\`: Заметки в свободной форме, ключ - угол.\
> \- \*\*401 Unauthorized\*\*: Нет действительных учетных данных аутентификации. - \*\*403 Forbidden\*\*: У вас нет прав для просмотра настроек этой сессии. - \*\*404 Not Found\*\*: ID сессии не соответствует сохраненной конфигурации. - \*\*500 Internal Server Error\*\*: Непредвиденная ошибка на сервере.<br>

```json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Укажите ваш API-ключ в заголовке: API-KEY: <api_key>"}}},"paths":{"/mobility-assessment/sessions/{session_id}/joint-mobility-config/":{"get":{"operationId":"mobility-assessment_sessions_joint-mobility-config_list","summary":"Получить сохраненную конфигурацию отчета для сессии","description":"Возвращает текущие настройки отображения для указанной сессии Joint Angle mobility.\n- **Параметр пути**\n  - `session_id` *(строка, обязательно)*: Идентификатор сессии для запроса.\n\n**Ответы**\n- **200 OK**: Конфигурация найдена и возвращена.\n  - `shown_angles`: Массив ключей углов, выбранных пользователем.\n  - `comments`: Заметки в свободной форме, ключ - угол.\n- **401 Unauthorized**: Нет действительных учетных данных аутентификации. - **403 Forbidden**: У вас нет прав для просмотра настроек этой сессии. - **404 Not Found**: ID сессии не соответствует сохраненной конфигурации. - **500 Internal Server Error**: Непредвиденная ошибка на сервере.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Идентификатор сессии мобильности","required":true}],"responses":{"200":{"description":"Конфигурация успешно получена.","content":{"application/json":{"schema":{"required":["shown_angles","comments"],"type":"object","properties":{"shown_angles":{"description":"Выбранные ключи углов","type":"array","items":{"type":"string"}},"comments":{"description":"Опциональные заметки для каждого угла","type":"object","additionalProperties":{"type":"string"}}}}}}},"401":{"description":"Не авторизован - отсутствуют или неверны учетные данные аутентификации.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"403":{"description":"Запрещено - у вас нет прав для просмотра этой конфигурации.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"404":{"description":"Не найдено - нет конфигурации отчета для этой сессии.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"500":{"description":"Внутренняя ошибка сервера - что-то пошло не так на нашей стороне.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
```

## Создать или обновить конфигурацию отчета для сессии

> Сохраняет выбранные настройки отображения для указанной сессии Joint Angle mobility.\
> \- \*\*Параметр пути\*\*\
> &#x20; \- \`session\_id\` \*(строка, обязательно)\*: Идентификатор сессии.\
> \
> \- \*\*Тело запроса\*\*\
> &#x20; \- \`shown\_angles\` \*(массив строк, опционально)\*: Ключи углов, которые нужно отображать.\
> &#x20; \- \`comments\` \*(объект строка→строка, опционально)\*: Заметки по углам.\
> \
> \*\*Ответы\*\*\
> \- \*\*200 OK\*\*: Конфигурация успешно сохранена (возвращает сохраненные настройки). - \*\*400 Bad Request\*\*: Одно или несколько полей неверны — см. \`errors\` для деталей. - \*\*401 Unauthorized\*\*: Нет действительных учетных данных аутентификации. - \*\*403 Forbidden\*\*: У вас нет прав для изменения настроек этой сессии. - \*\*500 Internal Server Error\*\*: Непредвиденная ошибка при сохранении.<br>

```json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Укажите ваш API-ключ в заголовке: API-KEY: <api_key>"}}},"paths":{"/mobility-assessment/sessions/{session_id}/joint-mobility-config/":{"post":{"operationId":"mobility-assessment_sessions_joint-mobility-config_create","summary":"Создать или обновить конфигурацию отчета для сессии","description":"Сохраняет выбранные настройки отображения для указанной сессии Joint Angle mobility.\n- **Параметр пути**\n  - `session_id` *(строка, обязательно)*: Идентификатор сессии.\n\n- **Тело запроса**\n  - `shown_angles` *(массив строк, опционально)*: Ключи углов, которые нужно отображать.\n  - `comments` *(объект строка→строка, опционально)*: Заметки по углам.\n\n**Ответы**\n- **200 OK**: Конфигурация успешно сохранена (возвращает сохраненные настройки). - **400 Bad Request**: Одно или несколько полей неверны — см. `errors` для деталей. - **401 Unauthorized**: Нет действительных учетных данных аутентификации. - **403 Forbidden**: У вас нет прав для изменения настроек этой сессии. - **500 Internal Server Error**: Непредвиденная ошибка при сохранении.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Идентификатор сессии мобильности","required":true}],"responses":{"200":{"description":"Конфигурация сохранена и возвращена.","content":{"application/json":{"schema":{"required":["shown_angles","comments"],"type":"object","properties":{"shown_angles":{"description":"Обновленный список отображаемых углов","type":"array","items":{"type":"string"}},"comments":{"description":"Обновленные заметки по углам","type":"object","additionalProperties":{"type":"string"}}}}}}},"400":{"description":"Неверный запрос - ошибка валидации для одного или нескольких полей.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"description":"Соответствие имен полей сообщениям об ошибках","type":"object","additionalProperties":{"type":"string"}}}}}}},"401":{"description":"Не авторизован - отсутствуют или неверны учетные данные аутентификации.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"403":{"description":"Запрещено - у вас нет прав для изменения этой конфигурации.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"500":{"description":"Внутренняя ошибка сервера - что-то пошло не так при сохранении данных.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"tags":["mobility-assessment"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"shown_angles":{"description":"Углы для отображения","type":"array","items":{"type":"string"}},"comments":{"description":"Опциональные заметки, ключ - угол","type":"object","additionalProperties":{"type":"string"}}}}}},"required":true}}}}}
```

## Сгенерировать отчет Joint Angle Mobility

> Генерирует сводный отчет Joint Angle Mobility для указанного \`session\_id\`.\
> \### Параметр пути\
> \- \*\*session\_id\*\* \*(строка, обязательно)\*: Уникальный идентификатор сессии мобильности.\
> \### Успешный ответ (HTTP 200)\
> Возвращает JSON-объект, содержащий:\
> \- \*\*title\*\* \*(строка)\*: Название сессии. - \*\*angles\*\* \*(объект)\*: Ключи - названия суставов, значения:\
> &#x20; \- \*\*max\*\* \*(число|null)\*\
> &#x20; \- \*\*min\*\* \*(число|null)\*\
> &#x20; \- \*\*values\*\* \*(массив чисел)\*\
> \- \*\*exercise\*\* \*(строка)\*: Всегда \`Joint Angle Mobility\`. - \*\*user\_info\*\* \*(объект)\*: Данные пользователя. - \*\*date\*\* \*(строка)\*: Форматированная дата (DD/MM/YYYY). - \*\*uploaded\_date\*\* \*(строка, дата-время)\*: Сырая метка времени ISO. - \*\*shown\_angles\*\* \*(массив строк)\*: Какие углы показывать. - \*\*comments\*\* \*(объект строка → строка)\*: Заметки по углам.\
> \### Ошибки\
> \- \*\*400 Неверный запрос\*\*: Неверный тип сессии или параметры. - \*\*404 Не найдено\*\*: Сессия не найдена. - \*\*500 Внутренняя ошибка сервера\*\*: Непредвиденная ошибка сервера.\
> Требуется действительный API-KEY токен в заголовке \`Authorization\`.<br>

```json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Укажите ваш API-ключ в заголовке: API-KEY: <api_key>"}}},"paths":{"/mobility-assessment/sessions/{session_id}/joint-mobility/":{"post":{"operationId":"mobility-assessment_sessions_joint-mobility_create","summary":"Сгенерировать отчет Joint Angle Mobility","description":"Генерирует сводный отчет Joint Angle Mobility для указанного `session_id`.\n### Параметр пути\n- **session_id** *(строка, обязательно)*: Уникальный идентификатор сессии мобильности.\n### Успешный ответ (HTTP 200)\nВозвращает JSON-объект, содержащий:\n- **title** *(строка)*: Название сессии. - **angles** *(объект)*: Ключи - названия суставов, значения:\n  - **max** *(число|null)*\n  - **min** *(число|null)*\n  - **values** *(массив чисел)*\n- **exercise** *(строка)*: Всегда `Joint Angle Mobility`. - **user_info** *(объект)*: Данные пользователя. - **date** *(строка)*: Форматированная дата (DD/MM/YYYY). - **uploaded_date** *(строка, дата-время)*: Сырая метка времени ISO. - **shown_angles** *(массив строк)*: Какие углы показывать. - **comments** *(объект строка → строка)*: Заметки по углам.\n### Ошибки\n- **400 Неверный запрос**: Неверный тип сессии или параметры. - **404 Не найдено**: Сессия не найдена. - **500 Внутренняя ошибка сервера**: Непредвиденная ошибка сервера.\nТребуется действительный API-KEY токен в заголовке `Authorization`.\n","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Уникальный идентификатор сессии мобильности","required":true}],"responses":{"200":{"description":"Отчет Joint Angle Mobility успешно получен.","content":{"application/json":{"schema":{"required":["title","angles","exercise","user_info","date","uploaded_date"],"type":"object","properties":{"title":{"description":"Название сессии","type":"string"},"angles":{"description":"Сводка углов по названиям суставов.","type":"object","additionalProperties":{"required":["max","min","values"],"type":"object","properties":{"max":{"description":"Максимальный угол или null","type":"number"},"min":{"description":"Минимальный угол или null","type":"number"},"values":{"description":"Исходные значения углов","type":"array","items":{"type":"number"}}}}},"exercise":{"description":"Название упражнения, 'Joint Angle Mobility'","type":"string"},"user_info":{"description":"Данные пользователя, связанные с сессией","type":"object","additionalProperties":{"description":"Значение поля пользователя","type":"string"}},"date":{"description":"Дата сессии в формате DD/MM/YYYY","type":"string"},"uploaded_date":{"description":"Сырая метка времени ISO загрузки","type":"string","format":"date-time"},"shown_angles":{"description":"Углы, которые пользователь выбрал для отображения","type":"array","items":{"type":"string"}},"comments":{"description":"Заметки по углам","type":"object","additionalProperties":{"description":"Текст заметки","type":"string"}}}}}}},"400":{"description":"Неверный запрос - неверный тип упражнения или параметры.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее на неверный или некорректный запрос.","type":"string"}}}}}},"403":{"description":"Запрещено - недостаточно прав для получения данных сессии.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что пользователю запрещен доступ к этим данным.\n","type":"string"}}}}}},"404":{"description":"Не найдено - данные сессии не найдены.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что запрашиваемая сессия не найдена.\n","type":"string"}}}}}},"500":{"description":"Внутренняя ошибка сервера - непредвиденная ошибка.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее на непредвиденную ошибку сервера.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
```

## Создание рекомендаций

> \### Создание рекомендаций\
> \
> Этот эндпоинт генерирует персонализированные рекомендации на основе отчета Overhead Squat для конкретной сессии. Эти рекомендации могут быть использованы для предоставления индивидуальных советов, тренировочных рекомендаций или анализа производительности пользователя.\
> \
> \*\*Пример использования:\*\*\
> Отправьте \`POST\` запрос на \`/mobility-assessment/sessions/{session\_id}/recommendation/\`, где \`{session\_id}\` - уникальный идентификатор сессии.\
> \
> \*\*Параметры:\*\*\
> \
> \- \`session\_id\` \*(строка, обязательно)\*: Уникальный идентификатор сессии, для которой создаются рекомендации.\
> \
> \*\*Структура ответа:\*\*\
> При успешном запросе эндпоинт возвращает JSON-объект, содержащий идентификаторы рекомендаций, сопоставленные с соответствующими метриками из отчета Overhead Squat.\
> \
> \*\*Пример ответа:\*\*\
> \`\`\`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"\
> }\
> \`\`\`\
> \
> \*\*Примечание:\*\*\
> \- Убедитесь, что предоставленный \`session\_id\` действителен и соответствует существующей сессии в системе.\
> \- Пользователь должен иметь активный платежный план для доступа к этой функции.

````json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Укажите ваш API-ключ в заголовке: API-KEY: <api_key>"}}},"paths":{"/mobility-assessment/sessions/{session_id}/recommendation/":{"post":{"operationId":"mobility-assessment_sessions_recommendation_create","summary":"Создание рекомендаций","description":"### Создание рекомендаций\n\nЭтот эндпоинт генерирует персонализированные рекомендации на основе отчета Overhead Squat для конкретной сессии. Эти рекомендации могут быть использованы для предоставления индивидуальных советов, тренировочных рекомендаций или анализа производительности пользователя.\n\n**Пример использования:**\nОтправьте `POST` запрос на `/mobility-assessment/sessions/{session_id}/recommendation/`, где `{session_id}` - уникальный идентификатор сессии.\n\n**Параметры:**\n\n- `session_id` *(строка, обязательно)*: Уникальный идентификатор сессии, для которой создаются рекомендации.\n\n**Структура ответа:**\nПри успешном запросе эндпоинт возвращает JSON-объект, содержащий идентификаторы рекомендаций, сопоставленные с соответствующими метриками из отчета Overhead Squat.\n\n**Пример ответа:**\n```json\n{\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```\n\n**Примечание:**\n- Убедитесь, что предоставленный `session_id` действителен и соответствует существующей сессии в системе.\n- Пользователь должен иметь активный платежный план для доступа к этой функции.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Уникальный идентификатор сессии, для которой создаются рекомендации.","required":true}],"responses":{"200":{"description":"Рекомендации успешно созданы.","content":{"application/json":{"schema":{"description":"Словарь, сопоставляющий каждую метрику с соответствующим идентификатором рекомендации.","required":["ankle_dorsiflexion","hip_abduction","hip_flexion","knee_flexion","knee_movement","final_summary"],"type":"object","properties":{"ankle_dorsiflexion":{"description":"Уникальный идентификатор рекомендации для тыльного сгибания голеностопного сустава.","type":"string"},"hip_abduction":{"description":"Уникальный идентификатор рекомендации для отведения бедра.","type":"string"},"hip_flexion":{"description":"Уникальный идентификатор рекомендации для сгибания бедра.","type":"string"},"knee_flexion":{"description":"Уникальный идентификатор рекомендации для сгибания колена.","type":"string"},"knee_movement":{"description":"Уникальный идентификатор рекомендации для движения колена.","type":"string"},"final_summary":{"description":"Уникальный идентификатор итоговой рекомендации.","type":"string"}}}}}},"401":{"description":"Не авторизован - отсутствует или недействительный токен.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что учетные данные не предоставлены или недействительны.","type":"string"}}}}}},"403":{"description":"Запрещено - недействительный платежный план или недостаточно прав для создания рекомендаций.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что пользователь не может получить доступ к ресурсу.","type":"string"}}}}}},"404":{"description":"Не найдено - сессия не найдена или отсутствуют метрики.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что сессия не существует или отсутствуют данные.","type":"string"}}}}}},"500":{"description":"Внутренняя ошибка сервера - произошла непредвиденная ошибка.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Подробное сообщение об ошибке, описывающее сбой.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
````

## Генерация отчета Overhead Squat

> Генерирует или получает подробный отчет Overhead Squat для заданного \`session\_id\`. Этот эндпоинт объединяет метрики сессии, организует их в группы и включает метаданные пользователя и сессии.\
> \
> \### Параметр пути\
> \- \*\*session\_id\*\* \*(строка, обязательно)\*: Уникальный идентификатор сессии Overhead Squat.\
> \
> \### Параметр запроса\
> \- \*\*demo\*\* \*(логический, опционально)\*: Установите \`true\`, чтобы получить демонстрационный отчет Overhead Squat вместо реального.\
> \
> \### Успешный ответ (HTTP 200)\
> \
> Возвращает JSON-объект, содержащий:\
> \
> \- \*\*grouped\_data\*\* \*(объект)\*: Организован по группам метрик (например, \`hip\_flexion\`, \`knee\_flexion\`). Каждая группа содержит:\
> &#x20; \- \*\*metrics\*\* \*(объект)\*: Пары ключ-значение агрегированных результатов метрик.\
> &#x20; \- \*\*graph\_data\*\* \*(объект)\*: Массивы числовых данных для построения графиков.\
> \
> \- \*\*graph\_timestamps\*\* \*(массив\[число])\*: Список временных меток (в миллисекундах), соответствующих каждому графику.\
> \- \*\*knee\_movement\_phases\*\* \*(объект)\*: URL изображений визуализации, показывающих различные фазы движения колена.\
> &#x20; \- \*\*left\*\* \*(строка)\*: URL изображения левого вида.\
> &#x20; \- \*\*right\*\* \*(строка)\*: URL изображения правого вида.\
> &#x20; \- \*\*front\*\* \*(строка)\*: URL изображения фронтального вида.\
> \- \*\*user\_info\*\* \*(объект, опционально)\*: Основные данные пользователя, связанные с сессией.\
> \- \*\*exercise\*\* \*(строка)\*: Название/тип упражнения (например, \`Overhead Squat\`).\
> \- \*\*report\_comments\*\* \*(объект, опционально)\*: Подробные комментарии по различным аспектам движения.\
> \- \*\*output\_quality\*\* \*(объект, опционально)\*: Дополнительная информация о качестве или оценке.\
> \- \*\*date\*\* \*(строка, формат=ДД/ММ/ГГГГ)\*: Дата создания или обработки сессии.\
> \
> \### Пример успешного ответа\
> \
> \`\`\`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": "Для оптимального улучшения сгибания бедра сосредоточьтесь на динамической растяжке и упражнениях на мобильность.",\
> &#x20;   "ankle\_dorsiflexion": "Наталья, тыльное сгибание вашего левого голеностопного сустава составляет 9.0 градусов...",\
> &#x20;   "final\_summary": "Наталья, ваши метрики сгибания колена и бедра сильные...",\
> &#x20;   "hip\_abduction": "Для оптимальной производительности отведения бедра сосредоточьтесь на улучшении..."\
> &#x20; },\
> &#x20; "output\_quality": {\
> &#x20;   "mobility\_index": 46,\
> &#x20;   "quality\_index": 67\
> &#x20; },\
> &#x20; "date": "11/03/2025"\
> }\
> \`\`\`\
> \
> \*\*Обработка ошибок\*\*\
> \
> \- \*\*403 Forbidden\*\*: Возвращается, если платежный план пользователя не является Standard, Pro или Enterprise.\
> \- \*\*404 Not Found\*\*: Возвращается, если данные сессии не найдены или отсутствуют метрики.\
> \- \*\*500 Internal Server Error\*\*: Возвращается, если произошла непредвиденная ошибка на сервере.\
> \
> В заголовке \`Authorization\` должен быть предоставлен действительный API-KEY токен.

````json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Укажите ваш API-ключ в заголовке: API-KEY: <api_key>"}}},"paths":{"/mobility-assessment/sessions/{session_id}/report/":{"post":{"operationId":"mobility-assessment_sessions_report_create","summary":"Генерация отчета Overhead Squat","description":"Генерирует или получает подробный отчет Overhead Squat для заданного `session_id`. Этот эндпоинт объединяет метрики сессии, организует их в группы и включает метаданные пользователя и сессии.\n\n### Параметр пути\n- **session_id** *(строка, обязательно)*: Уникальный идентификатор сессии Overhead Squat.\n\n### Параметр запроса\n- **demo** *(логический, опционально)*: Установите `true`, чтобы получить демонстрационный отчет Overhead Squat вместо реального.\n\n### Успешный ответ (HTTP 200)\n\nВозвращает JSON-объект, содержащий:\n\n- **grouped_data** *(объект)*: Организован по группам метрик (например, `hip_flexion`, `knee_flexion`). Каждая группа содержит:\n  - **metrics** *(объект)*: Пары ключ-значение агрегированных результатов метрик.\n  - **graph_data** *(объект)*: Массивы числовых данных для построения графиков.\n\n- **graph_timestamps** *(массив[число])*: Список временных меток (в миллисекундах), соответствующих каждому графику.\n- **knee_movement_phases** *(объект)*: URL изображений визуализации, показывающих различные фазы движения колена.\n  - **left** *(строка)*: URL изображения левого вида.\n  - **right** *(строка)*: URL изображения правого вида.\n  - **front** *(строка)*: URL изображения фронтального вида.\n- **user_info** *(объект, опционально)*: Основные данные пользователя, связанные с сессией.\n- **exercise** *(строка)*: Название/тип упражнения (например, `Overhead Squat`).\n- **report_comments** *(объект, опционально)*: Подробные комментарии по различным аспектам движения.\n- **output_quality** *(объект, опционально)*: Дополнительная информация о качестве или оценке.\n- **date** *(строка, формат=ДД/ММ/ГГГГ)*: Дата создания или обработки сессии.\n\n### Пример успешного ответа\n\n```json\n{\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\": \"Для оптимального улучшения сгибания бедра сосредоточьтесь на динамической растяжке и упражнениях на мобильность.\",\n    \"ankle_dorsiflexion\": \"Наталья, тыльное сгибание вашего левого голеностопного сустава составляет 9.0 градусов...\",\n    \"final_summary\": \"Наталья, ваши метрики сгибания колена и бедра сильные...\",\n    \"hip_abduction\": \"Для оптимальной производительности отведения бедра сосредоточьтесь на улучшении...\"\n  },\n  \"output_quality\": {\n    \"mobility_index\": 46,\n    \"quality_index\": 67\n  },\n  \"date\": \"11/03/2025\"\n}\n```\n\n**Обработка ошибок**\n\n- **403 Forbidden**: Возвращается, если платежный план пользователя не является Standard, Pro или Enterprise.\n- **404 Not Found**: Возвращается, если данные сессии не найдены или отсутствуют метрики.\n- **500 Internal Server Error**: Возвращается, если произошла непредвиденная ошибка на сервере.\n\nВ заголовке `Authorization` должен быть предоставлен действительный API-KEY токен.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Уникальный идентификатор сессии Overhead Squat.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Установите `true`, чтобы получить демонстрационный отчет Overhead Squat вместо реального.","required":false}],"responses":{"200":{"description":"Отчет Overhead Squat успешно сгенерирован/получен.","content":{"application/json":{"schema":{"required":["grouped_data","graph_timestamps","knee_movement_phases","user_info","exercise","output_quality","date"],"type":"object","properties":{"grouped_data":{"description":"Группы метрик и данных графиков, связанных с выполнением Overhead Squat.","type":"object","additionalProperties":{"required":["metrics","graph_data"],"type":"object","properties":{"metrics":{"description":"Агрегированные результаты метрик (например, асимметрия лево/право).","type":"object","additionalProperties":{"description":"Числовое значение метрики.","type":"number"}},"graph_data":{"description":"Массивы числовых значений для построения графиков.","type":"object","additionalProperties":{"description":"Массив чисел для построения графика одной метрики.","type":"array","items":{"type":"number"}}}}}},"graph_timestamps":{"description":"Список временных меток (в миллисекундах), соответствующих каждому графику.","type":"array","items":{"type":"number"}},"knee_movement_phases":{"description":"URL изображений визуализации, показывающих различные фазы движения колена.","type":"object","properties":{"left":{"description":"URL изображения левого вида","type":"string"},"right":{"description":"URL изображения правого вида","type":"string"},"front":{"description":"URL изображения фронтального вида","type":"string"}}},"user_info":{"description":"Опциональные основные данные пользователя (например, вес, возраст, email).","type":"object","additionalProperties":{"description":"Пары ключ-значение данных пользователя.","type":"string"}},"exercise":{"description":"Название/тип упражнения (например, 'Overhead Squat').","type":"string"},"output_quality":{"description":"Опциональный объект, содержащий метрики оценки или индексы.","type":"object","additionalProperties":{"description":"Числовая оценка или индекс, связанный с качеством вывода.","type":"number"}},"report_comments":{"description":"Подробные комментарии по различным аспектам движения.","type":"object","properties":{"hip_flexion":{"description":"Рекомендации по улучшению сгибания бедра.","type":"string"},"ankle_dorsiflexion":{"description":"Оценка и рекомендации по тыльному сгибанию голеностопного сустава.","type":"string"},"final_summary":{"description":"Итоговый обзор сессии и рекомендации.","type":"string"},"hip_abduction":{"description":"Рекомендации по улучшению отведения бедра.","type":"string"}}},"date":{"description":"Строка, представляющая дату сессии в формате ДД/ММ/ГГГГ.","type":"string"}}}}}},"401":{"description":"Не авторизован - отсутствует или недействительный токен доступа.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Ошибка, указывающая на отсутствие или недействительность токена.","type":"string"}}}}}},"403":{"description":"Запрещено - Пользователь не имеет разрешения на создание сессий (только для администраторов).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Ошибка, указывающая на недостаточные привилегии.","type":"string"}}}}}},"404":{"description":"Не найдено - Данные сессии не найдены или отсутствуют метрики.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее на отсутствие сессии или метрик.","type":"string"}}}}}},"500":{"description":"Внутренняя ошибка сервера - произошла непредвиденная ошибка.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Подробное сообщение об ошибке, описывающее сбой на стороне сервера.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
````

## Получение сводки Overhead Squat

> Получает краткую сводку данных сессии Overhead Squat, идентифицируемой по \`session\_id\`. Этот эндпоинт возвращает сгруппированные метрики (например, hip\_flexion, knee\_flexion) без подробных данных графиков, а также опциональные метаданные пользователя и сессии.\
> \
> \### Параметр пути\
> \- \*\*session\_id\*\* \*(строка, обязательно)\*: Уникальный идентификатор сессии Overhead Squat.\
> \
> \### Параметр запроса\
> \- \*\*demo\*\* \*(логический, опционально)\*: Установите \`true\`, чтобы получить предварительно сгенерированную демонстрационную сводку Overhead Squat вместо реальной.\
> \
> \### Успешный ответ (HTTP 200)\
> \
> Возвращает JSON-объект, содержащий:\
> \
> \- \*\*grouped\_data\*\* \*(объект)\*: Высокоуровневые метрики, сгруппированные по категориям (например, hip\_flexion, knee\_flexion). Каждая группа содержит ключи метрик, каждое из которых сопоставлено с числовыми значениями.\
> \
> &#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\*\* \*(объект)\*: URL изображений визуализации, показывающих различные фазы движения колена.\
> &#x20; \- \*\*left\*\* \*(строка)\*: URL изображения левого вида.\
> &#x20; \- \*\*right\*\* \*(строка)\*: URL изображения правого вида.\
> &#x20; \- \*\*front\*\* \*(строка)\*: URL изображения фронтального вида.\
> \
> \- \*\*user\_info\*\* \*(объект, опционально)\*: Содержит данные, связанные с пользователем, например, вес, display\_name, email.\
> \- \*\*exercise\*\* \*(строка)\*: Название упражнения (например, \`Overhead Squat\`).\
> \- \*\*output\_quality\*\* \*(объект, опционально)\*: Содержит числовые значения или индексы (например, mobility\_index).\
> \- \*\*summary\*\* \*(объект, опционально)\*: Содержит подробные комментарии по различным аспектам движения.\
> \- \*\*date\*\* \*(строка, формат=ДД/ММ/ГГГГ)\*: Дата создания/обработки этой сессии.\
> \
> \### Пример успешного ответа\
> \
> \`\`\`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": "Наталья Алиот",\
> &#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": "Для оптимального улучшения сгибания бедра сосредоточьтесь на динамической растяжке и упражнениях на мобильность.",\
> &#x20;   "ankle\_dorsiflexion": "Наталья, тыльное сгибание вашего левого голеностопного сустава составляет 9.0 градусов...",\
> &#x20;   "final\_summary": "Наталья, ваши метрики сгибания колена и бедра сильные...",\
> &#x20;   "hip\_abduction": "Для оптимальной производительности отведения бедра сосредоточьтесь на улучшении..."\
> &#x20; },\
> &#x20; "date": "11/03/2025"\
> }\
> \`\`\`\
> \
> \*\*Обработка ошибок\*\*\
> \
> \- \*\*401 Unauthorized\*\*: Отсутствует или недействительный токен.\
> \- \*\*403 Forbidden\*\*: Платежный план недействителен (требуется Basic, Standard, Pro или Enterprise) или у пользователя недостаточно прав.\
> \- \*\*404 Not Found\*\*: Данные сессии не найдены или отсутствуют метрики.\
> \- \*\*500 Internal Server Error\*\*: Непредвиденная ошибка сервера.\
> \
> В заголовке \`Authorization\` должен быть предоставлен действительный API-KEY токен.

````json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Укажите ваш API-ключ в заголовке: API-KEY: <api_key>"}}},"paths":{"/mobility-assessment/sessions/{session_id}/summary/":{"get":{"operationId":"mobility-assessment_sessions_summary_list","summary":"Получение сводки Overhead Squat","description":"Получает краткую сводку данных сессии Overhead Squat, идентифицируемой по `session_id`. Этот эндпоинт возвращает сгруппированные метрики (например, hip_flexion, knee_flexion) без подробных данных графиков, а также опциональные метаданные пользователя и сессии.\n\n### Параметр пути\n- **session_id** *(строка, обязательно)*: Уникальный идентификатор сессии Overhead Squat.\n\n### Параметр запроса\n- **demo** *(логический, опционально)*: Установите `true`, чтобы получить предварительно сгенерированную демонстрационную сводку Overhead Squat вместо реальной.\n\n### Успешный ответ (HTTP 200)\n\nВозвращает JSON-объект, содержащий:\n\n- **grouped_data** *(объект)*: Высокоуровневые метрики, сгруппированные по категориям (например, hip_flexion, knee_flexion). Каждая группа содержит ключи метрик, каждое из которых сопоставлено с числовыми значениями.\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** *(объект)*: URL изображений визуализации, показывающих различные фазы движения колена.\n  - **left** *(строка)*: URL изображения левого вида.\n  - **right** *(строка)*: URL изображения правого вида.\n  - **front** *(строка)*: URL изображения фронтального вида.\n\n- **user_info** *(объект, опционально)*: Содержит данные, связанные с пользователем, например, вес, display_name, email.\n- **exercise** *(строка)*: Название упражнения (например, `Overhead Squat`).\n- **output_quality** *(объект, опционально)*: Содержит числовые значения или индексы (например, mobility_index).\n- **summary** *(объект, опционально)*: Содержит подробные комментарии по различным аспектам движения.\n- **date** *(строка, формат=ДД/ММ/ГГГГ)*: Дата создания/обработки этой сессии.\n\n### Пример успешного ответа\n\n```json\n{\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\": \"Наталья Алиот\",\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\": \"Для оптимального улучшения сгибания бедра сосредоточьтесь на динамической растяжке и упражнениях на мобильность.\",\n    \"ankle_dorsiflexion\": \"Наталья, тыльное сгибание вашего левого голеностопного сустава составляет 9.0 градусов...\",\n    \"final_summary\": \"Наталья, ваши метрики сгибания колена и бедра сильные...\",\n    \"hip_abduction\": \"Для оптимальной производительности отведения бедра сосредоточьтесь на улучшении...\"\n  },\n  \"date\": \"11/03/2025\"\n}\n```\n\n**Обработка ошибок**\n\n- **401 Unauthorized**: Отсутствует или недействительный токен.\n- **403 Forbidden**: Платежный план недействителен (требуется Basic, Standard, Pro или Enterprise) или у пользователя недостаточно прав.\n- **404 Not Found**: Данные сессии не найдены или отсутствуют метрики.\n- **500 Internal Server Error**: Непредвиденная ошибка сервера.\n\nВ заголовке `Authorization` должен быть предоставлен действительный API-KEY токен.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Уникальный идентификатор сессии Overhead Squat.","required":true},{"schema":{"type":"boolean"},"name":"demo","in":"query","description":"Установите `true`, чтобы получить предварительно сгенерированную демонстрационную сводку Overhead Squat вместо реальной.","required":false}],"responses":{"200":{"description":"Сводка Overhead Squat успешно получена.","content":{"application/json":{"schema":{"required":["grouped_data","knee_movement_phases","exercise","date"],"type":"object","properties":{"grouped_data":{"description":"Высокоуровневые метрики, сгруппированные по категориям (без данных графиков).","type":"object","additionalProperties":{"description":"Объект, где каждый ключ - это название метрики, а значение - числовое.","type":"object","additionalProperties":{"description":"Числовое значение метрики.","type":"number"}}},"knee_movement_phases":{"description":"URL изображений визуализации, показывающих различные фазы движения колена.","type":"object","properties":{"left":{"description":"URL изображения левого вида","type":"string"},"right":{"description":"URL изображения правого вида","type":"string"},"front":{"description":"URL изображения фронтального вида","type":"string"}}},"user_info":{"description":"Опциональная информация о пользователе (например, вес, email).","type":"object","additionalProperties":{"description":"Пара ключ-значение метаданных пользователя.","type":"string"}},"exercise":{"description":"Название/тип упражнения, например 'Overhead Squat'.","type":"string"},"output_quality":{"description":"Опциональный объект, содержащий числовые оценки или индексы качества.","type":"object","additionalProperties":{"description":"Числовая оценка или индекс, связанный с качеством вывода.","type":"number"}},"summary":{"description":"Подробные комментарии по различным аспектам движения.","type":"object","properties":{"hip_flexion":{"description":"Рекомендации по улучшению сгибания бедра.","type":"string"},"ankle_dorsiflexion":{"description":"Оценка и рекомендации по тыльному сгибанию голеностопного сустава.","type":"string"},"final_summary":{"description":"Итоговый обзор сессии и рекомендации.","type":"string"},"hip_abduction":{"description":"Рекомендации по улучшению отведения бедра.","type":"string"}}},"date":{"description":"Дата сессии в формате 'ДД/ММ/ГГГГ'.","type":"string"}}}}}},"401":{"description":"Не авторизован - отсутствует или недействительный токен.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что учетные данные не предоставлены или недействительны.","type":"string"}}}}}},"403":{"description":"Запрещено - Недействительный платежный план или недостаточно прав для получения сводки.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что пользователь не может получить доступ к ресурсу.","type":"string"}}}}}},"404":{"description":"Не найдено - Сессия не найдена или отсутствуют метрики.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что сессия не существует или отсутствуют данные.","type":"string"}}}}}},"500":{"description":"Внутренняя ошибка сервера - произошла непредвиденная ошибка.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Подробное сообщение об ошибке, описывающее сбой.","type":"string"}}}}}}},"tags":["mobility-assessment"]}}}}
````

## Генерация сводных рекомендаций для сессии

> \### Генерация сводных рекомендаций\
> \
> Этот эндпоинт генерирует сводные рекомендации для заданной сессии на основе предопределенных блоков сводки и метрик.\
> \
> \*\*Пример использования:\*\*\
> Отправьте \`POST\` запрос на \`/mobility-assessment/sessions/{session\_id}/summary/\`, где \`{session\_id}\` - уникальный идентификатор сессии.\
> \
> \*\*Параметры:\*\*\
> \- \`session\_id\` \*(строка, обязательно)\*: Уникальный идентификатор сессии, для которой генерируются сводные рекомендации.\
> \
> \*\*Структура ответа:\*\*\
> При успешном запросе эндпоинт возвращает JSON-объект, сопоставляющий каждую метрику с соответствующим идентификатором рекомендации.\
> \
> \*\*Пример ответа:\*\*\
> \`\`\`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"\
> }\
> \`\`\`\
> \
> \*\*Примечания:\*\*\
> \- Убедитесь, что предоставленный \`session\_id\` действителен и соответствует существующей сессии в системе.\
> \- Пользователь должен иметь необходимые разрешения для генерации сводных рекомендаций.

````json
{"openapi":"3.1.1","info":{"title":"AIKYNETIX WEB API","version":"v2"},"servers":[{"url":"https://api.aikynetix.app"}],"security":[{"Bearer":[]},{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","name":"Authorization","in":"header","description":"Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>"},"ApiKeyAuth":{"type":"apiKey","name":"API-KEY","in":"header","description":"Укажите ваш API-ключ в заголовке: API-KEY: <api_key>"}}},"paths":{"/mobility-assessment/sessions/{session_id}/summary/":{"post":{"operationId":"mobility-assessment_sessions_summary_create","summary":"Генерация сводных рекомендаций для сессии","description":"### Генерация сводных рекомендаций\n\nЭтот эндпоинт генерирует сводные рекомендации для заданной сессии на основе предопределенных блоков сводки и метрик.\n\n**Пример использования:**\nОтправьте `POST` запрос на `/mobility-assessment/sessions/{session_id}/summary/`, где `{session_id}` - уникальный идентификатор сессии.\n\n**Параметры:**\n- `session_id` *(строка, обязательно)*: Уникальный идентификатор сессии, для которой генерируются сводные рекомендации.\n\n**Структура ответа:**\nПри успешном запросе эндпоинт возвращает JSON-объект, сопоставляющий каждую метрику с соответствующим идентификатором рекомендации.\n\n**Пример ответа:**\n```json\n{\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```\n\n**Примечания:**\n- Убедитесь, что предоставленный `session_id` действителен и соответствует существующей сессии в системе.\n- Пользователь должен иметь необходимые разрешения для генерации сводных рекомендаций.","parameters":[{"schema":{"type":"string"},"name":"session_id","in":"path","description":"Уникальный идентификатор сессии, для которой генерируются сводные рекомендации.","required":true},{"schema":{"type":"string","enum":["metric","imperial"]},"name":"measurement_system","in":"query","description":"Система измерений: 'metric' или 'imperial'","required":false}],"responses":{"201":{"description":"Сводные рекомендации успешно сгенерированы.","content":{"application/json":{"schema":{"description":"Словарь, сопоставляющий каждую метрику с соответствующим идентификатором рекомендации.","required":["hip_flexion","hip_abduction","knee_flexion","knee_movement","ankle_dorsiflexion","final_summary"],"type":"object","properties":{"hip_flexion":{"description":"Уникальный идентификатор сводной рекомендации для сгибания бедра.","type":"string"},"hip_abduction":{"description":"Уникальный идентификатор сводной рекомендации для отведения бедра.","type":"string"},"knee_flexion":{"description":"Уникальный идентификатор сводной рекомендации для сгибания колена.","type":"string"},"knee_movement":{"description":"Уникальный идентификатор сводной рекомендации для движения колена.","type":"string"},"ankle_dorsiflexion":{"description":"Уникальный идентификатор сводной рекомендации для тыльного сгибания голеностопного сустава.","type":"string"},"final_summary":{"description":"Уникальный идентификатор итоговой сводной рекомендации.","type":"string"}}}}}},"401":{"description":"Не авторизован - отсутствует или недействительный токен.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что учетные данные не предоставлены или недействительны.","type":"string"}}}}}},"403":{"description":"Запрещено - Недействительный платежный план или недостаточно прав для создания рекомендаций.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что пользователь не может получить доступ к ресурсу.","type":"string"}}}}}},"404":{"description":"Не найдено - Сессия не найдена или отсутствуют метрики.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Сообщение об ошибке, указывающее, что сессия не существует или отсутствуют данные.","type":"string"}}}}}},"500":{"description":"Внутренняя ошибка сервера - произошла непредвиденная ошибка.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Подробное сообщение об ошибке, описывающее сбой.","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/ru/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.
