# Пользователи компании

# Список

Для получения списка групп используется запрос **user/list**:

```javascript
POST https://api.novaconnect.kz/api/user/list

{
  "page": <int>,
  "size": <int>,
}
```
##### Параметры
| Параметр | Тип | Описание | Обязательность |
|-------|----------|---------|---------|
| **page**     | int     | Номер страницы, нумерация с 0     |Да
| **size**    | int      | Размер страницы      |Да

#### Успешный ответ
```javascript
{
  "code": 200,
  "count": <int>,
  "all_count": <int>,
  "items": [
       //Массив объектов типа Пользователь
  ],
  "message": <string>
}
```

| Параметр | Тип | Описание |
|-------|----------|---------|
| **code**     | int     | Код ответа, для успеха - 200
| **message**    | string      | Сообщение ответа
| **count**    | int      | Количество данных в ответе
| **all_count**    | int      | Количество данных в БД
|  **items**    | array      | Массив элементов типа [Пользователь](https://kb.novaconnect.kz/books/rukovodstvo-razrabotcika/page/polzovatel)

# Создание

Для создания пользователя используется запрос **user/create**:

```javascript
POST https://api.novaconnect.kz/api/user/create

{
  "first_name": <string>,
  "last_name": <string>,
  "email": <string>,
  "phone": <string>,
  "password": <string>,
  "role": <string>,
  "send": <bool>
}
```
##### Параметры
| Параметр | Тип | Описание | Обязательность |
|-------|----------|---------|---------|
| **first_name**     | string     | Имя пользователя    |Да
| **last_name**     | string     | Фамилия     |Да
| **email**     | string     | Email-адрес     |Да
| **phone**     | string     | Номер телефона     |Да
| **password**     | string     | Пароль     |Нет
| **role**     | string     | Роль (список см. ниже)     |Нет
| **send**     | bool     | Отправить рег. данные     |Нет

#### Дополнительная информация
- Поле пароль **password** не является обязательным. Если его не указывать, то система автоматически сгенерирует пароль.
- Флаг **send** отвечает за отправку регистрационных данных на указанный в **email** адрес.
- Поле **role** также не является обязательным. Если его не передать, то будет создан пользователь с ролью **Пользователь**

#### Ограничения и доступы
Метод доступен пользователю с ролью **Администратор**

#### Успешный ответ
```javascript
{
  "code": 200,
  "message": <string>,
  "result": {
    "item": {
        //объект типа Пользователь
    }
  }
}
```

| Параметр | Тип | Описание |
|-------|----------|---------|
| **code**     | int     | Код ответа, для успеха - 200
| **message**    | string      | Сообщение ответа
| **result.item**    | object      | Объект типа [Пользователь](https://kb.novaconnect.kz/books/rukovodstvo-razrabotcika/page/polzovatel)

# Изменение

Для изменения пользователя используется запрос **user/edit**:

```javascript
POST https://api.novaconnect.kz/api/user/edit

{
  "id": <int>
  "first_name": <string>,
  "last_name": <string>,
  "email": <string>,
  "phone": <string>,
  "password": <string>,
  "role": <string>,
}
```
##### Параметры
| Параметр | Тип | Описание | Обязательность |
|-------|----------|---------|---------|
| **id**     | int     | ID пользователя    |Да
| **first_name**     | string     | Имя пользователя    |Нет
| **last_name**     | string     | Фамилия     |Нет
| **email**     | string     | Email-адрес     |Нет
| **phone**     | string     | Номер телефона     |Нет
| **password**     | string     | Пароль     |Нет
| **active**     | bool     | Активность     |Нет
| **role**     | string     | Роль (список см. ниже)     |Нет

#### Дополнительная информация
- Значения полей **password**, **active**, **role** возможно поменять только другим пользователям.

#### Ограничения и доступы
Метод доступен пользователю с любой ролью, однако только пользователь с ролью **Администратор** может изменять данные о других пользователях компании

#### Успешный ответ
```javascript
{
  "code": 200,
  "message": <string>,
  "result": {
    "item": {
      // Объект типа Пользователь
    }
  }
}
```

| Параметр | Тип | Описание |
|-------|----------|---------|
| **code**     | int     | Код ответа, для успеха - 200
| **message**    | string      | Сообщение ответа
| **result.item**    | object      | Объект типа [Пользователь](https://kb.novaconnect.kz/books/rukovodstvo-razrabotcika/page/polzovatel)

# Удаление

Для удаления пользователя используется запрос **user/remove**:

```javascript
POST https://api.novaconnect.kz/api/user/remove

{
  "id": <int>
}
```
##### Параметры
| Параметр | Тип | Описание | Обязательность |
|-------|----------|---------|---------|
| **id**     | int     | ID пользователя    |Да

#### Ограничения и доступы
Метод доступен только пользователю с ролью **Администратор**. С помощью этого метода невозможно удалить самого себя.

#### Успешный ответ
```javascript
{
  "code": 200,
  "message": <string>,
  "result": {
    "item": {
       //Объект типа Пользователь
    }
  }
}
```

| Параметр | Тип | Описание |
|-------|----------|---------|
| **code**     | int     | Код ответа, для успеха - 200
| **message**    | string      | Сообщение ответа
| **result.item**    | object      | Объект типа [Пользователь](https://kb.novaconnect.kz/books/rukovodstvo-razrabotcika/page/polzovatel)