# Управление пользователями

## Получить постраничный список пользователей

> \### Получить постраничный список пользователей\
> \
> Этот эндпоинт позволяет администратору получить постраничный список пользователей под его аккаунтом. Ответ включает детальную информацию о каждом пользователе, такую как персональные атрибуты, контактные данные и метаданные, связанные с их аккаунтом.\
> \
> \*\*Пример использования:\*\*\
> Отправьте \`GET\` запрос на \`client-management/clients/\` с соответствующим API-KEY токеном в заголовке Authorization.\
> \
> \*\*Структура ответа:\*\*\
> \- \*\*users\*\* \*(массив)\*: Список объектов пользователей, где каждый объект включает следующие поля:\
> &#x20; \- \*\*created\_at\*\* \*(строка, дата-время)\*: Временная метка создания пользователя.\
> &#x20; \- \*\*weight\*\* \*(число)\*: Вес пользователя.\
> &#x20; \- \*\*age\*\* \*(строка)\*: Возраст пользователя.\
> &#x20; \- \*\*ycom\*\* \*(число)\*: Значение YCOM пользователя.\
> &#x20; \- \*\*height\*\* \*(число)\*: Рост пользователя.\
> &#x20; \- \*\*phone\*\* \*(строка)\*: Номер телефона пользователя.\
> &#x20; \- \*\*leg\_length\*\* \*(число)\*: Длина ноги пользователя.\
> &#x20; \- \*\*display\_name\*\* \*(строка)\*: Отображаемое имя пользователя.\
> &#x20; \- \*\*shoeSize\*\* \*(строка)\*: Размер обуви пользователя.\
> &#x20; \- \*\*email\*\* \*(строка)\*: Адрес электронной почты пользователя.\
> &#x20; \- \*\*gender\*\* \*(строка)\*: Пол пользователя.\
> &#x20; \- \*\*brand\*\* \*(строка)\*: Бренд, связанный с пользователем.\
> &#x20; \- \*\*shoeModel\*\* \*(строка)\*: Модель обуви пользователя.\
> &#x20; \- \*\*user\_uid\*\* \*(строка)\*: Уникальный идентификатор пользователя.\
> \
> \*\*Примечания:\*\*\
> \- Для доступа к этому эндпоинту требуется действительный 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":{"/client-management/clients/":{"get":{"operationId":"client-management_clients_list","summary":"Получить постраничный список пользователей","description":"### Получить постраничный список пользователей\n\nЭтот эндпоинт позволяет администратору получить постраничный список пользователей под его аккаунтом. Ответ включает детальную информацию о каждом пользователе, такую как персональные атрибуты, контактные данные и метаданные, связанные с их аккаунтом.\n\n**Пример использования:**\nОтправьте `GET` запрос на `client-management/clients/` с соответствующим API-KEY токеном в заголовке Authorization.\n\n**Структура ответа:**\n- **users** *(массив)*: Список объектов пользователей, где каждый объект включает следующие поля:\n  - **created_at** *(строка, дата-время)*: Временная метка создания пользователя.\n  - **weight** *(число)*: Вес пользователя.\n  - **age** *(строка)*: Возраст пользователя.\n  - **ycom** *(число)*: Значение YCOM пользователя.\n  - **height** *(число)*: Рост пользователя.\n  - **phone** *(строка)*: Номер телефона пользователя.\n  - **leg_length** *(число)*: Длина ноги пользователя.\n  - **display_name** *(строка)*: Отображаемое имя пользователя.\n  - **shoeSize** *(строка)*: Размер обуви пользователя.\n  - **email** *(строка)*: Адрес электронной почты пользователя.\n  - **gender** *(строка)*: Пол пользователя.\n  - **brand** *(строка)*: Бренд, связанный с пользователем.\n  - **shoeModel** *(строка)*: Модель обуви пользователя.\n  - **user_uid** *(строка)*: Уникальный идентификатор пользователя.\n\n**Примечания:**\n- Для доступа к этому эндпоинту требуется действительный API-KEY токен.\n- Если пользователи не найдены или произошла ошибка, возвращается соответствующее сообщение об ошибке.","responses":{"200":{"description":"Список пользователей успешно получен.","content":{"application/json":{"schema":{"required":["users"],"type":"object","properties":{"users":{"description":"Массив объектов пользователей.","type":"array","items":{"required":["created_at","weight","age","ycom","height","phone","leg_length","display_name","shoeSize","email","gender","brand","shoeModel","user_uid"],"type":"object","properties":{"created_at":{"description":"Временная метка создания пользователя.","type":"string","format":"date-time"},"weight":{"description":"Вес пользователя.","type":"number"},"age":{"description":"Возраст пользователя.","type":"string"},"ycom":{"description":"Значение YCOM пользователя.","type":"number"},"height":{"description":"Рост пользователя.","type":"number"},"phone":{"description":"Номер телефона пользователя.","type":"string"},"leg_length":{"description":"Длина ноги пользователя.","type":"number"},"display_name":{"description":"Отображаемое имя пользователя.","type":"string"},"shoeSize":{"description":"Размер обуви пользователя.","type":"string"},"email":{"description":"Адрес электронной почты пользователя.","type":"string","format":"email"},"gender":{"description":"Пол пользователя.","type":"string"},"brand":{"description":"Бренд, связанный с пользователем.","type":"string"},"shoeModel":{"description":"Модель обуви пользователя.","type":"string"},"profile_photo":{"description":"Публичный URL фотографии профиля пользователя.","type":"string","format":"uri"},"user_uid":{"description":"Уникальный идентификатор пользователя.","type":"string"}}}}}}}}},"400":{"description":"Неверный запрос - Некорректные параметры запроса или отсутствуют обязательные данные.","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":"Сообщение об ошибке доступа.","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":["client-management"]}}}}
```

## Создать нового пользователя

> \### Создать нового пользователя\
> \
> Этот эндпоинт позволяет аутентифицированному администратору создать нового пользователя под своим аккаунтом. Администратор должен указать email и отображаемое имя пользователя, а также может включить другие поля. \
> \
> \*\*Пример использования:\*\*\
> Отправьте \`POST\` запрос на \`/clients/\` с JSON-данными, содержащими обязательные поля. В заголовке Authorization должен быть указан действительный API-KEY токен.\
> \
> \### Параметры запроса\
> \- \*\*display\_name\*\* (строка)\
> \- \*\*email\*\* (строка, валидный email)\
> \- \*\*age\*\* (целое число)\
> \- \*\*gender\*\* (male | female)\
> \- \*\*shoeSize\*\* (число с плавающей точкой)\
> \- \*\*weight\*\* (число с плавающей точкой)\
> \- \*\*height\*\* (число с плавающей точкой)\
> \
> \*\*Структура ответа:\*\*\
> При успешном выполнении (HTTP 201), эндпоинт возвращает JSON-объект с полем \`userData\`, содержащим следующие ключи и типы данных:\
> \- \*\*user\_uid\*\* \*(строка)\*: Уникальный идентификатор нового пользователя.\
> \- \*\*display\_name\*\* (строка)\
> \- \*\*email\*\* (строка, валидный email)\
> \- \*\*age\*\* (целое число)\
> \- \*\*gender\*\* (male | female)\
> \- \*\*shoeSize\*\* (число с плавающей точкой)\
> \- \*\*weight\*\* (число с плавающей точкой)\
> \- \*\*height\*\* (число с плавающей точкой)\
> \
> \- \*\*profile\_photo\*\* \*(файл, JPEG/PNG)\* - необязательное изображение; доступно только с \`multipart/form-data\`.\
> \
> В случае ошибки (например, отсутствуют параметры, неавторизованный доступ или внутренняя ошибка), возвращается JSON-объект с полем \`error\` (строка).

```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":{"/client-management/clients/":{"post":{"operationId":"client-management_clients_create","summary":"Создать нового пользователя","description":"### Создать нового пользователя\n\nЭтот эндпоинт позволяет аутентифицированному администратору создать нового пользователя под своим аккаунтом. Администратор должен указать email и отображаемое имя пользователя, а также может включить другие поля. \n\n**Пример использования:**\nОтправьте `POST` запрос на `/clients/` с JSON-данными, содержащими обязательные поля. В заголовке Authorization должен быть указан действительный API-KEY токен.\n\n### Параметры запроса\n- **display_name** (строка)\n- **email** (строка, валидный email)\n- **age** (целое число)\n- **gender** (male | female)\n- **shoeSize** (число с плавающей точкой)\n- **weight** (число с плавающей точкой)\n- **height** (число с плавающей точкой)\n\n**Структура ответа:**\nПри успешном выполнении (HTTP 201), эндпоинт возвращает JSON-объект с полем `userData`, содержащим следующие ключи и типы данных:\n- **user_uid** *(строка)*: Уникальный идентификатор нового пользователя.\n- **display_name** (строка)\n- **email** (строка, валидный email)\n- **age** (целое число)\n- **gender** (male | female)\n- **shoeSize** (число с плавающей точкой)\n- **weight** (число с плавающей точкой)\n- **height** (число с плавающей точкой)\n\n- **profile_photo** *(файл, JPEG/PNG)* - необязательное изображение; доступно только с `multipart/form-data`.\n\nВ случае ошибки (например, отсутствуют параметры, неавторизованный доступ или внутренняя ошибка), возвращается JSON-объект с полем `error` (строка).","responses":{"201":{"description":"Пользователь успешно создан.","content":{"application/json":{"schema":{"type":"object","properties":{"userData":{"required":["user_uid","email","display_name"],"type":"object","properties":{"user_uid":{"type":"string"},"display_name":{"type":"string"},"email":{"type":"string"},"age":{"type":"integer"},"gender":{"type":"string"},"shoeSize":{"type":"number","format":"float"},"weight":{"type":"number","format":"float"},"height":{"type":"number","format":"float"},"profile_photo":{"description":"Публичный URL фотографии профиля пользователя.","type":"string","format":"uri"},"preferable_activities":{"description":"Список предпочитаемых активностей.","type":"array","items":{"type":"string"}}}}}}}}},"400":{"description":"Неверный запрос - Отсутствуют или некорректные параметры.","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":"Сообщение об ошибке, указывающее на недостаточные привилегии.","type":"string"}}}}}},"404":{"description":"Не найдено - Достигнут лимит создания пользователей для Pro плана.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Достигнут лимит создания пользователей для Pro плана","type":"string"}}}}}},"500":{"description":"Внутренняя ошибка сервера - Произошла непредвиденная ошибка.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Детальное сообщение об ошибке.","type":"string"}}}}}}},"tags":["client-management"],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"display_name":{"type":"string"},"email":{"type":"string"},"age":{"type":"integer"},"gender":{"type":"string"},"shoeSize":{"type":"number"},"weight":{"type":"number"},"height":{"type":"number"},"preferable_activities":{"type":"string","description":"Необязательный JSON-кодированный список предпочитаемых типов активности. Допустимые значения: 'Running', 'Vertical Jump', 'Weightlifting', 'Mobility Assessment'.\n\nПример: `[\"Running\", \"Weightlifting\"]`"},"profile_photo":{"type":"string","description":"Необязательное изображение JPEG/PNG."}},"required":["display_name","email","age","gender","shoeSize","weight","height"]}}}}}}}}
```

## Обновить информацию о пользователе

> \### Обновить информацию о пользователе\
> \
> Этот эндпоинт позволяет аутентифицированному администратору обновить \*\*выбранные поля\*\* существующего пользователя, используя \*\*параметры строки запроса\*\*.\
> \
> \*\*Обязательный параметр запроса\*\*\
> \- \*\*user\_uid\*\* \*(строка)\* - UID пользователя, которого нужно обновить.\
> \
> \*\*Необязательные параметры запроса\*\* - укажите один или несколько из следующих:\
> \- \*\*display\_name\*\* \*(строка)\* - новое отображаемое имя\
> \- \*\*email\*\* \*(строка, валидный email)\* - новый адрес электронной почты\
> \- \*\*age\*\* \*(целое число)\*\
> \- \*\*gender\*\* \*(строка, одно из \`male\`, \`female\`)\*\
> \- \*\*shoeSize\*\* \*(число с плавающей точкой)\*\
> \- \*\*weight\*\* \*(число с плавающей точкой)\*\
> \- \*\*height\*\* \*(число с плавающей точкой)\*\
> \
> \*\*Ответ (HTTP 200)\*\*\
> \`\`\`json\
> { "message": "Информация о пользователе успешно обновлена." }\
> \`\`\`\
> \
> Если проверка не пройдена или пользователь не найден, ответ содержит поле \*\*error\*\* с деталями.

````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":{"/client-management/clients/":{"put":{"operationId":"client-management_clients_update","summary":"Обновить информацию о пользователе","description":"### Обновить информацию о пользователе\n\nЭтот эндпоинт позволяет аутентифицированному администратору обновить **выбранные поля** существующего пользователя, используя **параметры строки запроса**.\n\n**Обязательный параметр запроса**\n- **user_uid** *(строка)* - UID пользователя, которого нужно обновить.\n\n**Необязательные параметры запроса** - укажите один или несколько из следующих:\n- **display_name** *(строка)* - новое отображаемое имя\n- **email** *(строка, валидный email)* - новый адрес электронной почты\n- **age** *(целое число)*\n- **gender** *(строка, одно из `male`, `female`)*\n- **shoeSize** *(число с плавающей точкой)*\n- **weight** *(число с плавающей точкой)*\n- **height** *(число с плавающей точкой)*\n\n**Ответ (HTTP 200)**\n```json\n{ \"message\": \"Информация о пользователе успешно обновлена.\" }\n```\n\nЕсли проверка не пройдена или пользователь не найден, ответ содержит поле **error** с деталями.","responses":{"200":{"description":"Информация о пользователе успешно обновлена.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"description":"Сообщение, подтверждающее успешное обновление.","type":"string"}}}}}},"400":{"description":"Неверный запрос - Отсутствуют обязательные поля или неверные данные.","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":"Сообщение об ошибке, указывающее на недостаточные привилегии.","type":"string"}}}}}},"500":{"description":"Внутренняя ошибка сервера - Произошла непредвиденная ошибка.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Детальное сообщение об ошибке.","type":"string"}}}}}}},"tags":["client-management"],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"user_uid":{"type":"string"},"display_name":{"type":"string"},"email":{"type":"string"},"age":{"type":"integer"},"gender":{"type":"string"},"shoeSize":{"type":"number"},"weight":{"type":"number"},"height":{"type":"number"},"preferable_activities":{"type":"string","description":"Необязательный JSON-кодированный список предпочитаемых типов активности. Допустимые значения: 'Running', 'Vertical Jump', 'Weightlifting', 'Mobility Assessment'.\n\nПример: `[\"Running\", \"Weightlifting\"]`"},"profile_photo":{"type":"string","description":"Необязательное изображение JPEG/PNG."}},"required":["user_uid"]}}}}}}}}
````

## Удалить пользователя

> \### Удалить пользователя\
> \
> Этот эндпоинт позволяет аутентифицированному администратору удалить пользователя из своего аккаунта. Администратор должен указать уникальный идентификатор пользователя, которого нужно удалить, в теле запроса.\
> \
> \*\*Тело запроса:\*\*\
> \- \*\*user\_uid\*\* \*(строка, обязательно)\*: Уникальный идентификатор пользователя, которого нужно удалить.\
> \
> \*\*Структура ответа:\*\*\
> При успешном выполнении (HTTP 200), эндпоинт возвращает JSON-объект с полем \*\*message\*\* типа string, подтверждающим удаление. В случае ошибки (например, если UID пользователя отсутствует, пользователь не найден или произошла внутренняя ошибка), возвращается JSON-объект с полем \*\*error\*\* (строка).

```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":{"/client-management/clients/":{"delete":{"operationId":"client-management_clients_delete","summary":"Удалить пользователя","description":"### Удалить пользователя\n\nЭтот эндпоинт позволяет аутентифицированному администратору удалить пользователя из своего аккаунта. Администратор должен указать уникальный идентификатор пользователя, которого нужно удалить, в теле запроса.\n\n**Тело запроса:**\n- **user_uid** *(строка, обязательно)*: Уникальный идентификатор пользователя, которого нужно удалить.\n\n**Структура ответа:**\nПри успешном выполнении (HTTP 200), эндпоинт возвращает JSON-объект с полем **message** типа string, подтверждающим удаление. В случае ошибки (например, если UID пользователя отсутствует, пользователь не найден или произошла внутренняя ошибка), возвращается JSON-объект с полем **error** (строка).","parameters":[{"schema":{"type":"string"},"name":"user_uid","in":"query","description":"UID пользователя для удаления","required":true}],"responses":{"200":{"description":"Пользователь успешно удален.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"description":"Сообщение, подтверждающее, что пользователь был удален.","type":"string"}}}}}},"400":{"description":"Неверный запрос - Отсутствует обязательный UID пользователя.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Детальное сообщение об ошибке, указывающее, что UID пользователя отсутствует.","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":["client-management"]}}}}
```

## Фильтрация и постраничное получение пользователей

> \### Фильтрация и постраничное получение пользователей\
> \
> Этот эндпоинт позволяет аутентифицированному администратору фильтровать и получать постранично пользователей под своим аккаунтом. Вы можете дополнительно указать параметры запроса для управления пагинацией:\
> \
> \- \*\*start\_after\_id\*\* \*(строка, необязательно)\*: UID, после которого начинается получение пользователей (для прямой пагинации).\
> \- \*\*limit\*\* \*(целое число, необязательно)\*: Максимальное количество пользователей для получения. По умолчанию 5, если не указано.\
> \
> Вы также можете фильтровать пользователей по различным критериям, таким как:\
> \
> \- \*\*admin\_uid\*\* \*(строка, необязательно)\*: UID администратора для фильтрации пользователей.\
> \- \*\*start\_date\*\* \*(строка, необязательно)\*: Нижняя граница (включительно) для последней сессии пользователя в формате \`YYYY-MM-DD\`.\
> \- \*\*end\_date\*\* \*(строка, необязательно)\*: Верхняя граница (включительно) для последней сессии пользователя в формате \`YYYY-MM-DD\`.\
> \- \*\*gender\*\* \*(строка, необязательно)\*: Фильтр по полу (\`male\` или \`female\`).\
> \- \*\*preferable\_activities\*\* \*(массив, необязательно)\*: Фильтр по предпочитаемым активностям пользователя.\
> \*\*Структура ответа (HTTP 200):\*\*\
> Ответ возвращает JSON-объект со следующими полями:\
> \
> \- \*\*query\_count\*\* \*(целое число)\*: Общее количество пользователей под администратором.\
> \- \*\*users\*\* \*(массив)\*: Массив объектов пользователей. Каждый объект пользователя содержит:\
> &#x20; \- \*\*created\_at\*\* \*(строка, дата-время)\*: Временная метка создания пользователя.\
> &#x20; \- \*\*weight\*\* \*(число)\*: Вес пользователя.\
> &#x20; \- \*\*age\*\* \*(строка)\*: Возраст пользователя.\
> &#x20; \- \*\*ycom\*\* \*(число)\*: Значение YCOM пользователя.\
> &#x20; \- \*\*height\*\* \*(число)\*: Рост пользователя.\
> &#x20; \- \*\*phone\*\* \*(строка)\*: Номер телефона пользователя.\
> &#x20; \- \*\*leg\_length\*\* \*(число)\*: Длина ноги пользователя.\
> &#x20; \- \*\*display\_name\*\* \*(строка)\*: Отображаемое имя пользователя.\
> &#x20; \- \*\*shoeSize\*\* \*(строка)\*: Размер обуви пользователя.\
> &#x20; \- \*\*email\*\* \*(строка)\*: Адрес электронной почты пользователя.\
> &#x20; \- \*\*gender\*\* \*(строка)\*: Пол пользователя.\
> &#x20; \- \*\*brand\*\* \*(строка)\*: Бренд, связанный с пользователем.\
> &#x20; \- \*\*shoeModel\*\* \*(строка)\*: Модель обуви пользователя.\
> &#x20; \- \*\*user\_uid\*\* \*(строка)\*: Уникальный идентификатор пользователя.\
> \
> \- \*\*first\_uid\*\* \*(строка)\*: UID первого пользователя на текущей странице.\
> \- \*\*last\_uid\*\* \*(строка)\*: UID последнего пользователя на текущей странице.\
> \
> \*\*Примечания:\*\*\
> \- Требуется действительный API-KEY токен.\
> \- Если пользователи не найдены, возвращается сообщение об ошибке с кодом состояния 404.

```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":{"/client-management/clients/filter/":{"get":{"operationId":"client-management_clients_filter_list","summary":"Фильтрация и постраничное получение пользователей","description":"### Фильтрация и постраничное получение пользователей\n\nЭтот эндпоинт позволяет аутентифицированному администратору фильтровать и получать постранично пользователей под своим аккаунтом. Вы можете дополнительно указать параметры запроса для управления пагинацией:\n\n- **start_after_id** *(строка, необязательно)*: UID, после которого начинается получение пользователей (для прямой пагинации).\n- **limit** *(целое число, необязательно)*: Максимальное количество пользователей для получения. По умолчанию 5, если не указано.\n\nВы также можете фильтровать пользователей по различным критериям, таким как:\n\n- **admin_uid** *(строка, необязательно)*: UID администратора для фильтрации пользователей.\n- **start_date** *(строка, необязательно)*: Нижняя граница (включительно) для последней сессии пользователя в формате `YYYY-MM-DD`.\n- **end_date** *(строка, необязательно)*: Верхняя граница (включительно) для последней сессии пользователя в формате `YYYY-MM-DD`.\n- **gender** *(строка, необязательно)*: Фильтр по полу (`male` или `female`).\n- **preferable_activities** *(массив, необязательно)*: Фильтр по предпочитаемым активностям пользователя.\n**Структура ответа (HTTP 200):**\nОтвет возвращает JSON-объект со следующими полями:\n\n- **query_count** *(целое число)*: Общее количество пользователей под администратором.\n- **users** *(массив)*: Массив объектов пользователей. Каждый объект пользователя содержит:\n  - **created_at** *(строка, дата-время)*: Временная метка создания пользователя.\n  - **weight** *(число)*: Вес пользователя.\n  - **age** *(строка)*: Возраст пользователя.\n  - **ycom** *(число)*: Значение YCOM пользователя.\n  - **height** *(число)*: Рост пользователя.\n  - **phone** *(строка)*: Номер телефона пользователя.\n  - **leg_length** *(число)*: Длина ноги пользователя.\n  - **display_name** *(строка)*: Отображаемое имя пользователя.\n  - **shoeSize** *(строка)*: Размер обуви пользователя.\n  - **email** *(строка)*: Адрес электронной почты пользователя.\n  - **gender** *(строка)*: Пол пользователя.\n  - **brand** *(строка)*: Бренд, связанный с пользователем.\n  - **shoeModel** *(строка)*: Модель обуви пользователя.\n  - **user_uid** *(строка)*: Уникальный идентификатор пользователя.\n\n- **first_uid** *(строка)*: UID первого пользователя на текущей странице.\n- **last_uid** *(строка)*: UID последнего пользователя на текущей странице.\n\n**Примечания:**\n- Требуется действительный API-KEY токен.\n- Если пользователи не найдены, возвращается сообщение об ошибке с кодом состояния 404.","parameters":[{"schema":{"type":"string"},"name":"admin_uid","in":"query","description":"UID администратора (который создал пользователя) для фильтрации пользователей.","required":false},{"schema":{"type":"string"},"name":"start_date","in":"query","description":"Нижняя граница (включительно) для *last_session* в формате `YYYY-MM-DD`.","required":false},{"schema":{"type":"string"},"name":"end_date","in":"query","description":"Верхняя граница (включительно) для *last_session* в формате `YYYY-MM-DD`.","required":false},{"schema":{"type":"string","enum":["male","female"]},"name":"gender","in":"query","description":"Фильтр по полу (`male` или `female`).","required":false},{"schema":{"type":"string"},"name":"preferable_activities","in":"query","description":"JSON-массив предпочитаемых активностей.","required":false},{"schema":{"type":"string"},"name":"start_after_id","in":"query","required":false},{"schema":{"type":"integer"},"name":"limit","in":"query","required":false}],"responses":{"200":{"description":"Успешно получен отфильтрованный список пользователей.","content":{"application/json":{"schema":{"required":["query_count","users","first_uid","last_uid"],"type":"object","properties":{"query_count":{"description":"Общее количество пользователей под администратором.","type":"integer"},"users":{"description":"Массив объектов пользователей.","type":"array","items":{"required":["created_at","weight","age","ycom","height","phone","leg_length","display_name","shoeSize","email","gender","brand","shoeModel","user_uid"],"type":"object","properties":{"created_at":{"description":"Временная метка создания пользователя.","type":"string","format":"date-time"},"weight":{"description":"Вес пользователя.","type":"number"},"age":{"description":"Возраст пользователя.","type":"string"},"ycom":{"description":"Значение YCOM пользователя.","type":"number"},"height":{"description":"Рост пользователя.","type":"number"},"phone":{"description":"Номер телефона пользователя.","type":"string"},"leg_length":{"description":"Длина ноги пользователя.","type":"number"},"display_name":{"description":"Отображаемое имя пользователя.","type":"string"},"shoeSize":{"description":"Размер обуви пользователя.","type":"string"},"email":{"description":"Адрес электронной почты пользователя.","type":"string","format":"email"},"gender":{"description":"Пол пользователя.","type":"string"},"brand":{"description":"Бренд, связанный с пользователем.","type":"string"},"shoeModel":{"description":"Модель обуви пользователя.","type":"string"},"profile_photo":{"description":"Публичный URL фотографии профиля пользователя.","type":"string","format":"uri"},"user_uid":{"description":"Уникальный идентификатор пользователя.","type":"string"}}}},"first_uid":{"description":"UID первого пользователя на текущей странице.","type":"string"},"last_uid":{"description":"UID последнего пользователя на текущей странице.","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":["client-management"]}}}}
```

## Установить / заменить заметку для клиента

> Сохраняет \*\*одну\*\* заметку на клиента. Если \*note\* опущен или пуст, предыдущая заметка очищается (сохраняется как \`null\`).\
> \
> Структура документа:\
> \`\`\`json\
> "notes": {\
> &#x20; "text": "Растяжение подколенного сухожилия - уменьшить скоростные нагрузки на 2 недели",  // или null\
> &#x20; "updated\_at": "2025-07-14T09:32:11.123Z"\
> }\
> \`\`\`

````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":{"/client-management/clients/save-notes/{user_uid}":{"post":{"operationId":"client-management_clients_save-notes_create","summary":"Установить / заменить заметку для клиента","description":"Сохраняет **одну** заметку на клиента. Если *note* опущен или пуст, предыдущая заметка очищается (сохраняется как `null`).\n\nСтруктура документа:\n```json\n\"notes\": {\n  \"text\": \"Растяжение подколенного сухожилия - уменьшить скоростные нагрузки на 2 недели\",  // или null\n  \"updated_at\": \"2025-07-14T09:32:11.123Z\"\n}\n```","parameters":[{"schema":{"type":"string"},"name":"user_uid","in":"path","description":"Уникальный идентификатор пользователя.","required":true}],"responses":{"200":{"description":"Заметка сохранена / заменена успешно.","content":{"application/json":{"schema":{"required":["message"],"type":"object","properties":{"message":{"type":"string"}}}}}},"400":{"description":"Неверный запрос - UID пользователя отсутствует или недействителен.","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":"Сообщение об ошибке, указывающее на недостаточные привилегии.","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":["client-management"],"requestBody":{"content":{"application/json":{"schema":{"required":["note"],"type":"object","properties":{"note":{"description":"Произвольный текст заметки (≤ 100 kB). Если опущен или пуст, заметка очищается.","type":"string"}}}}},"required":true}}}}}
````

## Получить детали для конкретного пользователя

> \### Получить детали пользователя\
> \
> Этот эндпоинт позволяет аутентифицированному администратору получить детальную информацию о конкретном пользователе под его аккаунтом. Пользователь идентифицируется уникальным \`user\_uid\`, указанным в URL.\
> \
> \*\*Параметр пути:\*\*\
> \- \*\*user\_uid\*\* \*(строка, обязательно)\*: Уникальный идентификатор пользователя.\
> \
> \*\*Структура ответа (HTTP 200):\*\*\
> Возвращает JSON-объект со следующими полями и типами данных:\
> \
> \- \*\*created\_at\*\* \*(строка, дата-время)\*: Временная метка создания пользователя.\
> \- \*\*weight\*\* \*(число)\*: Вес пользователя.\
> \- \*\*age\*\* \*(строка)\*: Возраст пользователя.\
> \- \*\*ycom\*\* \*(число)\*: Значение YCOM пользователя.\
> \- \*\*height\*\* \*(число)\*: Рост пользователя.\
> \- \*\*phone\*\* \*(строка)\*: Номер телефона пользователя.\
> \- \*\*leg\_length\*\* \*(число)\*: Длина ноги пользователя.\
> \- \*\*display\_name\*\* \*(строка)\*: Отображаемое имя пользователя.\
> \- \*\*shoeSize\*\* \*(строка)\*: Размер обуви пользователя.\
> \- \*\*email\*\* \*(строка)\*: Адрес электронной почты пользователя.\
> \- \*\*gender\*\* \*(строка)\*: Пол пользователя.\
> \- \*\*brand\*\* \*(строка)\*: Бренд, связанный с пользователем.\
> \- \*\*shoeModel\*\* \*(строка)\*: Модель обуви пользователя.\
> \- \*\*user\_uid\*\* \*(строка)\*: Уникальный идентификатор пользователя.\
> \
> \*\*Пример успешного ответа:\*\*\
> \`\`\`json\
> {\
> &#x20; "created\_at": "2024-12-02T19:17:30.371Z",\
> &#x20; "weight": 79,\
> &#x20; "age": "30",\
> &#x20; "ycom": 1.1,\
> &#x20; "height": 177,\
> &#x20; "phone": "92039023232",\
> &#x20; "leg\_length": 0.9,\
> &#x20; "display\_name": "User1",\
> &#x20; "shoeSize": "8",\
> &#x20; "email": "<user1@gmail.com>",\
> &#x20; "gender": "Male",\
> &#x20; "brand": "Nike",\
> &#x20; "shoeModel": "Peak-smart",\
> &#x20; "user\_uid": "hoEwsdv2fsFs2fav"\
> }\
> \`\`\`\
> \
> \*\*Примечания:\*\*\
> \- Требуется действительный API-KEY токен с правами администратора.\
> \- Если указанный пользователь не существует или не принадлежит администратору, возвращается ошибка 404.

````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":{"/client-management/clients/{user_uid}":{"get":{"operationId":"client-management_clients_read","summary":"Получить детали для конкретного пользователя","description":"### Получить детали пользователя\n\nЭтот эндпоинт позволяет аутентифицированному администратору получить детальную информацию о конкретном пользователе под его аккаунтом. Пользователь идентифицируется уникальным `user_uid`, указанным в URL.\n\n**Параметр пути:**\n- **user_uid** *(строка, обязательно)*: Уникальный идентификатор пользователя.\n\n**Структура ответа (HTTP 200):**\nВозвращает JSON-объект со следующими полями и типами данных:\n\n- **created_at** *(строка, дата-время)*: Временная метка создания пользователя.\n- **weight** *(число)*: Вес пользователя.\n- **age** *(строка)*: Возраст пользователя.\n- **ycom** *(число)*: Значение YCOM пользователя.\n- **height** *(число)*: Рост пользователя.\n- **phone** *(строка)*: Номер телефона пользователя.\n- **leg_length** *(число)*: Длина ноги пользователя.\n- **display_name** *(строка)*: Отображаемое имя пользователя.\n- **shoeSize** *(строка)*: Размер обуви пользователя.\n- **email** *(строка)*: Адрес электронной почты пользователя.\n- **gender** *(строка)*: Пол пользователя.\n- **brand** *(строка)*: Бренд, связанный с пользователем.\n- **shoeModel** *(строка)*: Модель обуви пользователя.\n- **user_uid** *(строка)*: Уникальный идентификатор пользователя.\n\n**Пример успешного ответа:**\n```json\n{\n  \"created_at\": \"2024-12-02T19:17:30.371Z\",\n  \"weight\": 79,\n  \"age\": \"30\",\n  \"ycom\": 1.1,\n  \"height\": 177,\n  \"phone\": \"92039023232\",\n  \"leg_length\": 0.9,\n  \"display_name\": \"User1\",\n  \"shoeSize\": \"8\",\n  \"email\": \"user1@gmail.com\",\n  \"gender\": \"Male\",\n  \"brand\": \"Nike\",\n  \"shoeModel\": \"Peak-smart\",\n  \"user_uid\": \"hoEwsdv2fsFs2fav\"\n}\n```\n\n**Примечания:**\n- Требуется действительный API-KEY токен с правами администратора.\n- Если указанный пользователь не существует или не принадлежит администратору, возвращается ошибка 404.","parameters":[{"schema":{"type":"string"},"name":"user_uid","in":"path","description":"Уникальный идентификатор пользователя.","required":true}],"responses":{"200":{"description":"Детали пользователя успешно получены.","content":{"application/json":{"schema":{"required":["created_at","weight","age","ycom","height","phone","leg_length","display_name","shoeSize","email","gender","brand","shoeModel","user_uid"],"type":"object","properties":{"created_at":{"description":"Временная метка создания пользователя.","type":"string","format":"date-time"},"weight":{"description":"Вес пользователя.","type":"number"},"age":{"description":"Возраст пользователя.","type":"string"},"ycom":{"description":"Значение YCOM пользователя.","type":"number"},"height":{"description":"Рост пользователя.","type":"number"},"phone":{"description":"Номер телефона пользователя.","type":"string"},"leg_length":{"description":"Длина ноги пользователя.","type":"number"},"display_name":{"description":"Отображаемое имя пользователя.","type":"string"},"shoeSize":{"description":"Размер обуви пользователя.","type":"string"},"email":{"description":"Адрес электронной почты пользователя.","type":"string","format":"email"},"gender":{"description":"Пол пользователя.","type":"string"},"brand":{"description":"Бренд, связанный с пользователем.","type":"string"},"shoeModel":{"description":"Модель обуви пользователя.","type":"string"},"profile_photo":{"description":"Публичный URL фотографии профиля.","type":"string","format":"uri"},"user_uid":{"description":"Уникальный идентификатор пользователя.","type":"string"}}}}}},"400":{"description":"Неверный запрос - UID пользователя отсутствует или недействителен.","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":"Сообщение об ошибке, указывающее на недостаточные привилегии.","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":["client-management"]}}}}
````


---

# 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/client-management.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.
