Тяжелая атлетика
Этот эндпоинт позволяет администратору (или суб-администратору) загрузить видеофайл для обработки и создать новый ресурс "сессии" от имени другого пользователя. Сервер вернет session_id, который можно использовать для проверки статуса или получения деталей/результатов сессии.
Тело запроса (Multipart/Form-Data)
Необходимо указать следующие поля:
user_id (строка, обязательно): ID пользователя, от имени которого создается сессия. - video (файл, обязательно): Исходный видеофайл для обработки. - session_name (строка, опционально): Человекочитаемое название сессии. - exercise_name (строка, обязательно): Название упражнения. Допустимые значения: 'snatch', 'clean', 'clean_and_jerk'. - barbell_mass (строка, опционально): Масса штанги (числовая строка). По умолчанию 100 кг (или 220 фунтов). - body_joint_angles (массив строк, опционально): Список названий суставов через запятую (например, 'elbow, knee, ankle'). По умолчанию ['all'].
Структура ответа
При успехе (HTTP 200) ответ содержит JSON-объект с: - session_id (строка): Уникальный идентификатор созданной сессии. - title (строка): Название сессии (используется значение session_name или значение по умолчанию).
Рабочий процесс
Отправить POST-запрос с multipart/form-data, содержащий обязательные поля
user_idиvideo, а также опциональные поля. 2. Указать валидный API-KEY токен в заголовкеAuthorization. 3. Вызывающий должен иметь права администратора для создания сессии от имени другого пользователя. 4. При успехе сервер вернетsession_idиtitle. 5. При ошибке (например, отсутствие полей, недостаток прав) вернется JSON-объект с ключомerror.
Пример cURL:
-H 'Content-Type: multipart/form-data' \
-H 'Authorization: API-KEY <YOUR_ADMIN_TOKEN>' \
-F 'user_id=someUserId123' \
-F 'video=@/path/to/video.mp4' \
-F 'session_name=Custom Session' \
-F 'exercise_name=clean' \
-F 'barbell_mass=30' \
-F 'body_joint_angles=elbow, knee, ankle' \
https://<backend-link>/weightlifting/management/sessions/Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>
Обязательно. ID пользователя, для которого создается сессия (текстовое поле формы).
Обязательно. Видеофайл для обработки (поле формы типа file).
Опционально. Описательное название сессии (текстовое поле формы).
Обязательно. Название упражнения. Допустимые значения: "snatch", "clean", "clean_and_jerk".
Опционально. Масса штанги (числовая строка). По умолчанию 100 кг (или 220 фунтов).
Опционально. Список названий суставов через запятую. Допустимые значения: ankle, knee, elbow, hip, shoulder. Пример: ankle,knee,hip
Сессия обработки видео успешно создана (HTTP 200).
Уникальный идентификатор созданной сессии.
Название сессии (значение по умолчанию, если не указано).
Неверный запрос - отсутствует user_id, video или неверные данные формы.
Не авторизован - отсутствует или неверный токен доступа.
Запрещено - у пользователя нет прав администратора для создания сессий от имени других.
Не найдено - проблемы с бизнес-логикой или ограничениями (например, лимит сессий).
Внутренняя ошибка сервера - непредвиденная ошибка на сервере.
POST /weightlifting/sessions/ HTTP/1.1
Host: api.aikynetix.app
Authorization: YOUR_API_KEY
Content-Type: application/x-www-form-urlencoded
Accept: */*
Content-Length: 123
"user_id='text'&video='text'&session_name='text'&exercise_name='text'&barbell_mass='text'&body_joint_angles=[]"{
"session_id": "text",
"title": "text"
}Возвращает детали сессии тяжелой атлетики по указанному session_id. Данные включают URL исходного и обработанного видео, время создания, тип упражнения, информацию о пользователе, метрики, углы, метрики отчета и временные метки.
Параметры пути
session_id (строка, обязательно): Уникальный идентификатор сессии.
Параметры запроса
demo (булево, опционально): Установите
trueдля получения демо-сессии вместо реальной.
Структура ответа (HTTP 200)
При успехе ответ содержит JSON-объект со следующими полями: - analyzed_video_url (строка, URI): Публичный URL обработанного видео. - video_url (строка, URI): Публичный URL исходного видео. - created_at (объект): Время создания: - date (строка): Дата в формате DD/MM/YYYY. - time (строка): Время в формате HH:MM AM/PM.
exercise (строка): Упражнение (например, 'snatch'). - user_name (строка): Имя пользователя, связанного с сессией. - activity (строка): Тип активности (должно быть 'Weightlifting'). - title (строка): Название сессии. - metrics (объект): Числовые метрики (например, скорость, мощность). - angles (объект): Углы, где каждый ключ соответствует массиву значений. - report_metrics (объект): Метрики отчета, где каждый ключ соответствует массиву значений. - all_timestamps (массив чисел): Временные метки данных сессии.
Обработка ошибок
400 Неверный запрос: Неверные параметры. - 401 Не авторизован: Отсутствует или неверный токен. - 403 Запрещено: Недостаточно прав. - 404 Не найдено: Сессия не найдена или активность не 'Weightlifting'. - 500 Ошибка сервера: Непредвиденная ошибка.
Безопасность
Требуется валидный API-KEY токен в заголовке Authorization.
Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>
Установите true для получения демо-сессии вместо реальной.
Детали сессии успешно получены.
Публичный URL обработанного видео.
Публичный URL исходного видео.
Упражнение (например, 'snatch').
Имя пользователя, связанного с сессией.
Тип активности (ожидается 'Weightlifting').
Название сессии.
Временные метки данных сессии.
Неверный запрос - неверные параметры или admin UID.
Не авторизован - отсутствует или неверный токен.
Запрещено - недостаточно прав.
Не найдено - сессия не найдена или неверная активность.
Внутренняя ошибка сервера - непредвиденная ошибка.
GET /weightlifting/sessions/{session_id}/ HTTP/1.1
Host: api.aikynetix.app
Authorization: YOUR_API_KEY
Accept: */*
{
"analyzed_video_url": "https://example.com",
"video_url": "https://example.com",
"created_at": {
"date": "text",
"time": "text"
},
"exercise": "text",
"user_name": "text",
"activity": "text",
"title": "text",
"metrics": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"angles": {
"ANY_ADDITIONAL_PROPERTY": [
1
]
},
"report_metrics": {
"ANY_ADDITIONAL_PROPERTY": [
1
]
},
"all_timestamps": [
1
]
}Генерация комментариев анализа
Создает отдельные GenAI-треды для каждой метрики анализа (мощность, сила, скорость штанги, углы суставов и т.д.) для получения лаконичных тренерских комментариев по каждой.
Пример использования: POST /weightlifting/sessions/{session_id}/recommendation/
Параметры:
session_id(строка, обязательный) – Идентификатор сессии для анализа.measurement_system(query, опциональный) –'metric'(по умолчанию) или'imperial'; определяет единицы измерения в запросе.
Структура ответа: JSON-объект, сопоставляющий каждую метрику с ID соответствующего GenAI-треда.
Пример ответа:
"power_output": "thread_a12b34",
"ground_reaction_force": "thread_c56d78",
"barbell_velocity": "thread_e90f12",
"hip_velocity": "thread_g34h56",
"shin_angle": "thread_i78j90",
"hip_height": "thread_k12l34",
"torso_angle": "thread_m56n78",
"hip_angle": "thread_o90p12",
"knee_angle": "thread_q34r56",
"bar_height": "thread_s78t90",
"barbell_trajectory": "thread_u12v34",
"vertical_shoulder_height":"thread_w56x78"
} ```
**Примечания:**
- `session_id` должен ссылаться на существующую сессию.
- У вызывающей стороны должны быть соответствующие права (действительный токен и тариф).
- Используйте возвращенные ID тредов для последующего получения комментариев.Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>
Система измерений, используемая в запросах
Треды успешно созданы.
Сопоставление метрик с ID тредов.
ID треда для мощности.
ID треда для силы реакции опоры.
ID треда для скорости штанги.
ID треда для скорости бедер.
ID треда для угла голени.
ID треда для высоты бедер.
ID треда для угла корпуса.
ID треда для угла тазобедренного сустава.
ID треда для угла коленного сустава.
ID треда для максимальной высоты штанги.
ID треда для траектории штанги.
ID треда для высоты плеч.
Неверный запрос - неверные параметры.
Не авторизован - недействительный токен.
Запрещено - требуются права администратора.
Не найдено - сессия не найдена или у пользователя нет действующего тарифа.
Внутренняя ошибка сервера.
POST /weightlifting/sessions/{session_id}/recommendation/ HTTP/1.1
Host: api.aikynetix.app
Authorization: YOUR_API_KEY
Accept: */*
{
"power_output": "text",
"ground_reaction_force": "text",
"barbell_velocity": "text",
"hip_velocity": "text",
"shin_angle": "text",
"hip_height": "text",
"torso_angle": "text",
"hip_angle": "text",
"knee_angle": "text",
"bar_height": "text",
"barbell_trajectory": "text",
"vertical_shoulder_height": "text"
}Возвращает данные сессии тяжелой атлетики из Firestore, включая ключевые точки, углы и временные метки. Активность сессии должна быть 'Weightlifting'.
Параметры пути
session_id (строка, обязательно): Уникальный идентификатор сессии.
Параметры запроса
demo (булево, опционально): Установите
trueдля получения демо-сессии.
Структура ответа (HTTP 200)
При успехе ответ содержит JSON-объект с: - keypoints (объект): Ключевые точки, где каждый ключ соответствует массиву чисел. - angles (объект): Углы, где каждый ключ соответствует массиву чисел. - all_timestamps (массив чисел): Временные метки. - metrics (объект): Числовые метрики. - activity (строка): Активность (ожидается 'Weightlifting').
Обработка ошибок
400 Неверный запрос: Неверные параметры. - 401 Не авторизован: Отсутствует или неверный токен. - 403 Запрещено: Недостаточно прав. - 404 Не найдено: Сессия не найдена или неверная активность. - 500 Ошибка сервера: Непредвиденная ошибка.
Безопасность
Требуется валидный API-KEY токен в заголовке Authorization.
Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>
Установите true для получения демо-сессии.
Данные сессии успешно получены.
Временные метки (в секундах).
Активность (ожидается 'Weightlifting').
Неверный запрос - неверные параметры или admin UID.
Не авторизован - отсутствует или неверный токен.
Запрещено - недостаточно прав.
Не найдено - сессия не найдена или неверная активность.
Внутренняя ошибка сервера - непредвиденная ошибка.
GET /weightlifting/sessions/{session_id}/export/ HTTP/1.1
Host: api.aikynetix.app
Authorization: YOUR_API_KEY
Accept: */*
{
"keypoints": {
"ANY_ADDITIONAL_PROPERTY": [
1
]
},
"angles": {
"ANY_ADDITIONAL_PROPERTY": [
1
]
},
"all_timestamps": [
1
],
"metrics": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"activity": "text"
}Выполняет полный биомеханический анализ сессии тяжелой атлетики (рывок, толчок и др.).
Параметр пути
session_id (строка, обязательный) – Уникальный ID сессии тяжелой атлетики.
Параметр запроса (опциональный)
demo (логический) – Установите
trueдля получения предварительно сгенерированного демо-анализа.
Структура ответа (HTTP 200)
Возвращает JSON-отчет с разделенными по кадрам метриками, временем фаз и информацией о пользователе.
"exercise": "рывок",
"key_metrics": {
"power_output": [ 2350, 2425, 2510, 2600, 2705 ],
"ground_reaction_force": [ 1120, 1180, 1215, 1260, 1300 ],
"barbell_velocity": [ 0.90, 1.05, 1.28, 1.55, 2.02 ]
},
"body_positioning": {
"hip_velocity": [ 0.45, 0.52, 0.60 ],
"shin_angle": [ 75.0, 72.5, 70.2 ],
"hip_height": [ 450, 455, 468 ],
"torso_angle": [ 40.0, 38.5, 36.8 ]
},
"joint_angles": {
"hip_angle": [ 165, 159, 152 ],
"knee_angle": [ 155, 147, 138 ]
},
"barbell_positioning": {
"bar_height": [ 120, 385, 610 ],
"barbell_trajectory": [ 0, -8, -2 ],
"vertical_shoulder_height":[ 1380, 1400, 1440 ]
},
"phase_data": {
"start_of_lifting": { "image_url": "https://storage.googleapis.com..." },
"first_pull_end": { "image_url": "https://storage.googleapis.com..." }
},
"chart_data": {
"setup": { "start": 0, "end": 536 },
"first_pull": { "start": 536, "end": 952 }
},
"user_information": {
"display_name": "Ахрор Жабборов",
"age": 28,
"weight": 75,
"height": 178
},
"session_date": "18/05/2025",
"comments": {}
} ```
### Коды ошибок
- **400 Bad Request** – Некорректные параметры.
- **401 Unauthorized** – Отсутствует/недействительный токен.
- **403 Forbidden** – У пользователя нет действующего платного тарифа.
- **404 Not Found** – Сессия не существует.
- **500 Internal Server Error** – Непредвиденная ошибка сервера.
### Безопасность
Требуется действительный токен API-KEY в заголовке `Authorization`.Укажите ваш Bearer-токен (Firebase auth) в формате: Bearer <токен>
Установите true для получения демо-анализа вместо реального.
Отчет анализа подъема успешно сгенерирован.
Неверный запрос - неверные параметры.
Не авторизован - недействительный токен.
Запрещено - требуются права администратора.
Не найдено - сессия не найдена или у пользователя нет действующего тарифа.
Внутренняя ошибка сервера.
POST /weightlifting/sessions/{session_id}/lift-analysis/ HTTP/1.1
Host: api.aikynetix.app
Authorization: YOUR_API_KEY
Accept: */*
{
"exercise": "text",
"key_metrics": {
"ANY_ADDITIONAL_PROPERTY": [
1
]
},
"body_positioning": {
"ANY_ADDITIONAL_PROPERTY": [
1
]
},
"joint_angles": {
"ANY_ADDITIONAL_PROPERTY": [
1
]
},
"barbell_positioning": {
"ANY_ADDITIONAL_PROPERTY": [
1
]
},
"phase_data": {
"ANY_ADDITIONAL_PROPERTY": {
"average_time_ms": 1
}
},
"chart_data": {
"ANY_ADDITIONAL_PROPERTY": {
"start": 1,
"end": 1
}
},
"user_information": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"session_date": "2026-01-01",
"comments": {}
}Last updated
Was this helpful?