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

### <mark style="color:purple;">Создание нового пользователя</mark>

Администраторы могут создать нового пользователя, отправив минимальный JSON-пакет. Обязательные поля включают email и отображаемое имя пользователя, номер телефона является необязательным.

```
POST /user-management/users/
```

#### Пример тела запроса

```
{
  "email": "user@gmail.com",
  "display_name": "User",
  "phone": "932323232"
}
```

#### Ответ

При успешном выполнении возвращается JSON-объект, содержащий данные вновь созданного пользователя:

```
{
  "userData": {
    "user_uid": "MYmC7MzsPBNU6uSQBnJ0",
    "email": "user@gmail.com",
    "display_name": "User",
    "phone": "932323232"
  }
}
```

***

### <mark style="color:orange;">Обновление данных пользователя</mark>

Обновите профиль существующего пользователя, отправив JSON-пакет с уникальным идентификатором пользователя вместе с любыми новыми или обновленными полями. Могут быть включены дополнительные атрибуты профиля, такие как физические метрики и предпочтения.

#### Конечная точка

```
PUT /user-management/users/
```

#### Пример тела запроса

```
curl -L \
  --request PUT \
  --url 'https://aikpy-nsz2.onrender.com/user-management/users/' \
  --header 'Authorization: API-KEY YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "user_uid": "DSdmk3mKd9Dmsmsd",
    "display_name": "User1",
    "email": "User1@example.com",
    "height": 175,
    "weight": 68,
    "age": "23",
    "ycom": 0.95,
    "leg_length": 0.91,
    "shoeSize": "7",
    "brand": "Adidas",
    "shoeModel": "UltraBoost",
    "gender": "Female"
  }'
```

#### Ответ

Успешное обновление возвращает подтверждающее сообщение:

```
{
  "message": "User information updated successfully."
}
```

***

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

Администраторы могут получить список всех пользователей, связанных с их учетной записью. API поддерживает как простое, так и фильтрованное получение данных, включая пагинацию для больших баз пользователей.

#### Список всех пользователей

**Конечная точка:**

```
GET /user-management/users/
```

**Пример ответа:**

```
{
  "users": [
    {
      "user_uid": "MYmC7MzsPBNU6uSQBnJ0",
      "email": "user@gmail.com",
      "display_name": "User",
      "phone": "932323232",
      "created_at": "2024-12-02T19:17:30.371Z",
      "age": "30",
      "weight": 79.8,
      "height": 177.8,
      "ycom": 1.01,
      "leg_length": 0.96,
      "shoeSize": "8",
      "brand": "Nike",
      "shoeModel": "Peak-smart"
    },
    {
      "user_uid": "CMQe1HuAg4uMXqHE6dVO",
      "email": "user1@example.com",
      "display_name": "User1",
      "phone": "8328889011",
      "created_at": "2024-08-16T00:29:21.349Z",
      "age": "22",
      "weight": 70,
      "height": 174,
      "ycom": 0.96,
      "leg_length": 0.91,
      "shoeSize": "6",
      "brand": "Fabletics",
      "shoeModel": "The Everyday Sneaker II"
    }
  ]
}
```

***

### Фильтрация и пагинация

Используйте параметры запроса для фильтрации списка пользователей или пагинации результатов:

* **start\_after\_id**: UID, после которого начинается список.
* **end\_before\_id**: UID, перед которым заканчивается список.
* **limit**: Максимальное количество возвращаемых пользователей (по умолчанию 5).

**Конечная точка:**

```
GET /user-management/users/filter/
```

**Пример запроса:**

```
GET /user-management/users/filter/?limit=10&activity=Running
```

**Ответ включает:**

* `query_count`: Общее количество соответствующих пользователей.
* `users`: Массив объектов пользователей.
* `first_uid` и `last_uid`: UID для пагинации.

***

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

Получите подробную информацию о конкретном пользователе, указав его уникальный UID.

**Конечная точка**

```
GET /user-management/users/{user_uid}
```

**Пример запроса**

```
GET /user-management/users/CMQe1HuAg4uMXqHE6dVO
```

**Пример ответа**

```
{
  "user_uid": "CMQe1HuAg4uMXqHE6dVO",
  "email": "user1@example.com",
  "display_name": "User1",
  "phone": "8328889011",
  "created_at": "2024-08-16T00:29:21.349Z",
  "age": "22",
  "weight": 70,
  "height": 174,
  "ycom": 0.96,
  "leg_length": 0.91,
  "shoeSize": "6",
  "brand": "Fabletics",
  "shoeModel": "The Everyday Sneaker II",
  "gender": "Female"
}
```

***

### <mark style="color:red;">Удаление пользователя</mark>

Администраторы могут удалить пользователя из своей учетной записи, указав уникальный UID пользователя в теле запроса.

**Конечная точка**

```
DELETE /user-management/users/
```

**Пример тела запроса**

```
{
  "user_uid": "MYmC7MzsPBNU6uSQBnJ0"
}
```

**Ответ**

Успешное удаление возвращает подтверждающее сообщение:

```
{
  "message": "User with UID MYmC7MzsPBNU6uSQBnJ0 deleted from admin."
}
```

***

### Управление приглашениями и назначениями субадминистраторов

Администраторы могут приглашать пользователей стать субадминистраторами и управлять назначениями субадминистраторов.

**Список приглашений**

**Конечная точка:**

```
GET /admin-management/invitation/
```

Получите список ожидающих приглашений. Каждое приглашение включает данные, такие как информация о приглашающем, email приглашенного и статус приглашения.

**Создание приглашения**

**Конечная точка:**

```
POST /admin-management/invitation/
```

Отправьте JSON-пакет с email приглашенного (и, при желании, ссылкой на платформу):

```
{
  "user_email": "invitee@example.com",
  "platform_link": "https://yourplatform.com/welcome"
}
```

**Удаление приглашения**

**Конечная точка:**

```
DELETE /admin-management/invitation/
```

Укажите `invite_token` в теле запроса для удаления приглашения.

**Управление субадминистраторами**

Администраторы также могут получать, добавлять или удалять субадминистраторов с помощью следующих конечных точек:

* **Получение, добавление и удаление субадминистраторов:**

```
GET /admin-management/sub-admins/
POST /admin-management/sub-admins/
DELETE /admin-management/sub-admins/
```

***

### Получение статуса организации

Администраторы и субадминистраторы могут получить данные о статусе организации, включая количество сессий, UID пользователя, роль, тип оплаты и связанные активности.

**Конечная точка**

```
GET /user-management/organization-status/
```

**Пример ответа**

```
{
  "session_number": 50,
  "uid": "aB3xYz1PqW8LmTnK4R9VfJ0gHsCd",
  "role": "admin",
  "payment_type": "Enterprise",
  "activity": ["Running", "Weightlifting", "VerticalJump"],
  "companyName": "Apple",
  "name": "Username"
}
```


---

# 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/user-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.
