Сервис управления пользователями
Общая информация
Сервис "Пользователь" (User), который отвечает за управление пользователями, включая их аутентификацию, получение информации, создание, обновление и удаление.
Пользователь (User)
GET /
Описание: Получение списка пользователей с пагинацией.
Теги: Пользователь
Summary: Возвращает массив пользователей с информацией о пагинации.
Предварительная проверка: Требуется аутентификация пользователя (admin role).
Параметры запроса (query):
page: (integer, optional, default: 1) - Номер страницы для пагинации (минимум 1).
Ответ:
- 200 OK:
{ "items": [ { "id": "some_id_uuid", "name": "John Doe", "phone": "79991234567", "email": "john.doe@example.com", "gender": "male", "birthday": "2024-03-15", "isActive": true, "balance": 100, "isCompanyEmployee": false, "PUSHNotifications": true, "receiveAdvertisingInformation": true, "createdAt": "2024-03-15T10:00:00.000Z", "updatedAt": "2024-03-15T10:00:00.000Z", "sum": 1200, "count": 12 } ], "pagination": { "currentPage": 1, "pageSize": 50, "totalPages": 1, "totalItems": 1 } } items: (array) - Массив пользователей.id: (string) - ID пользователя.name: (string) - Имя пользователя.phone: (string) - Номер телефона.email: (string) - Электронная почта.gender: (string) - Пол пользователя.birthday: (string, optional) - Дата рождения пользователя.isActive: (boolean) - Активен ли пользователь.balance: (integer) - Баланс пользователя.isCompanyEmployee: (boolean) - Является ли сотрудником компанииPUSHNotifications: (boolean) - Получает ли пользователь PUSH-уведомления.receiveAdvertisingInformation: (boolean) - Получает ли пользователь рекламную информацию.createdAt: (string) - Дата создания записи.updatedAt: (string) - Дата последнего обновления записи.sum: (number, optional) - Сумма заказов пользователяcount: (integer, optional) - Количество заказов пользователя
pagination: (object) - Информация о пагинации.currentPage: (integer) - Текущая страница.pageSize: (integer) - Количество элементов на странице.totalPages: (integer) - Общее количество страниц.totalItems: (integer) - Общее количество пользователей.
- 500 Internal Server Error:
{ "error": "Internal Server Error" }
GET /:phone
Описание: Получение информации о пользователе по номеру телефона.
Теги: Пользователь
Summary: Возвращает данные пользователя, если номер телефона совпадает с аутентифицированным.
Предварительная проверка: Требуется аутентификация пользователя (user role).
Параметры запроса (path):
phone: (string, required) - Номер телефона пользователя.
Ответ:
- 200 OK:
{ "id": "some_id_uuid", "name": "John Doe", "phone": "79991234567", "email": "john.doe@example.com", "gender": "male", "birthday": "2024-03-15", "isActive": true, "balance": 100, "isCompanyEmployee": false, "PUSHNotifications": true, "receiveAdvertisingInformation": true, "createdAt": "2024-03-15T10:00:00.000Z", "updatedAt": "2024-03-15T10:00:00.000Z" }id: (string) - ID пользователя.name: (string, optional) - Имя пользователя.phone: (string) - Номер телефона.email: (string, optional) - Электронная почта.gender: (string, optional) - Пол пользователя.birthday: (string, optional) - Дата рождения пользователя.isActive: (boolean) - Активен ли пользователь.balance: (integer, optional) - Баланс пользователя.isCompanyEmployee: (boolean, optional) - Является ли сотрудником компании.PUSHNotifications: (boolean) - Получает ли пользователь PUSH-уведомления.receiveAdvertisingInformation: (boolean) - Получает ли пользователь рекламную информацию.createdAt: (string) - Дата создания записи.updatedAt: (string) - Дата последнего обновления записи.
- 403 Forbidden:
{ "message": "Нет прав для получения информации о другом пользователе" } - 404 Not Found:
{ "message": "Пользователь не найден" } - 500 Internal Server Error:
{ "message": "Internal Server Error" }
GET /:phone/history
Описание: Получение истории доставки пользователя по номеру телефона.
Теги: Пользователь
Summary: Возвращает историю доставки пользователя, если номер телефона совпадает с аутентифицированным.
Предварительная проверка: Требуется аутентификация пользователя (user role).
Параметры запроса (path):
phone: (string, required) - Номер телефона пользователя.
Ответ:
- 200 OK:
[ { "orderId": "order_id_uuid", "createdAt": "2024-03-15T10:00:00.000Z", "total": 1200, "status": "NEW", "products": [ { "productId": "product_id_uuid", "name": "Product 1", "amount": 2, "price": 100, "isGift": false, "isAction": false }, { "productId": "product_id_uuid_2", "name": "Product 2", "amount": 1, "price": 200, "isGift": true, "isAction": false } ] } ]orderId: (string) - ID заказа.createdAt: (string, date-time) - Дата и время создания заказа.total: (number) - Общая сумма заказа.status: (string) - Статус заказа.products: (array) - Список продуктов в заказе.productId: (string) - ID продукта.name: (string) - Название продукта.amount: (integer) - Количество.price: (number) - Цена за единицу.isGift: (boolean) - ПодарокisAction: (boolean) - Акционный продукт
- 403 Forbidden:
{ "message": "Нет прав для получения информации о другом пользователе" } - 500 Internal Server Error:
{ "message": "Internal Server Error" }
POST /
Описание: Создание нового пользователя.
Теги: Пользователь
Summary: Создаёт нового пользователя и возвращает его данные.
Предварительная проверка: Требуется аутентификация пользователя (user role).
Тело запроса (body):
{
"phone": "79991234567",
"name": "John Doe",
"email": "john.doe@example.com",
"gender": "male",
"birthday": "2024-03-15",
"isActive": true,
"balance": 100,
"isCompanyEmployee": false,
"PUSHNotifications": true,
"receiveAdvertisingInformation": true
}
phone: (string, required) - Номер телефона пользователя.name: (string, optional) - Имя пользователя.email: (string, optional) - Электронная почта.gender: (string, optional) - Пол пользователя.birthday: (string, optional) - Дата рождения пользователя.isActive: (boolean, optional) - Активен ли пользователь.balance: (integer, optional) - Баланс пользователя.isCompanyEmployee: (boolean, optional) - Является ли сотрудником компании.PUSHNotifications: (boolean, optional) - Получает ли пользователь PUSH-уведомления.receiveAdvertisingInformation: (boolean, optional) - Получает ли пользователь рекламную информацию.
Ответ:
- 201 Created:
{ "id": "some_id_uuid", "name": "John Doe", "phone": "79991234567", "email": "john.doe@example.com", "gender": "male", "birthday": "2024-03-15", "isActive": true, "balance": 100, "isCompanyEmployee": false, "PUSHNotifications": true, "receiveAdvertisingInformation": true, "createdAt": "2024-03-15T10:00:00.000Z", "updatedAt": "2024-03-15T10:00:00.000Z" }id: (string) - ID пользователя.name: (string) - Имя пользователя.phone: (string) - Номер телефона.email: (string, optional) - Электронная почта.gender: (string, optional) - Пол пользователя.birthday: (string, optional) - Дата рождения пользователя.isActive: (boolean) - Активен ли пользователь.balance: (integer, optional) - Баланс пользователя.isCompanyEmployee: (boolean, optional) - Является ли сотрудником компании.PUSHNotifications: (boolean) - Получает ли пользователь PUSH-уведомления.receiveAdvertisingInformation: (boolean) - Получает ли пользователь рекламную информацию.createdAt: (string) - Дата создания записи.updatedAt: (string) - Дата последнего обновления записи.
- 400 Bad Request:
{ "message": "Некорректные данные для создания пользователя" } - 500 Internal Server Error:
{ "message": "Internal Server Error" }
DELETE /:phone
Описание: Удаление пользователя по номеру телефона.
Теги: Пользователь
Summary: Удаляет пользователя, если номер телефона совпадает с аутентифицированным.
Предварительная проверка: Требуется аутентификация пользователя (user role).
Параметры запроса (path):
phone: (string, required) - Номер телефона пользователя.
Ответ:
- 204 No Content: Успешное удаление пользователя.
- 403 Forbidden:
{ "message": "Нет прав для удаления другого пользователя" } - 404 Not Found:
{ "message": "Пользователь не найден" } - 500 Internal Server Error:
{ "message": "Internal Server Error" }
PATCH /:phone
Описание: Обновление данных пользователя по номеру телефона.
Теги: Пользователь
Summary: Обновляет данные пользователя.
Предварительная проверка: Требуется аутентификация пользователя (user role).
Параметры запроса (path):
phone: (string, required) - Номер телефона пользователя.
Тело запроса (body):
{
"name": "John Doe",
"email": "john.doe@example.com",
"gender": "male",
"birthday": "2024-03-15",
"isActive": true,
"balance": 100,
"isCompanyEmployee": false,
"PUSHNotifications": true,
"receiveAdvertisingInformation": true
}
name: (string, optional) - Имя пользователя.email: (string, optional) - Электронная почта.gender: (string, optional) - Пол пользователя.birthday: (string, optional) - Дата рождения пользователя.isActive: (boolean, optional) - Активен ли пользователь.balance: (integer, optional) - Баланс пользователя.isCompanyEmployee: (boolean, optional) - Является ли сотрудником компании.PUSHNotifications: (boolean, optional) - Получает ли пользователь PUSH-уведомления.receiveAdvertisingInformation: (boolean, optional) - Получает ли пользователь рекламную информацию.
Ответ:
- 200 OK:
{ "id": "some_id_uuid", "name": "John Doe", "phone": "79991234567", "email": "john.doe@example.com", "gender": "male", "birthday": "2024-03-15", "isActive": true, "balance": 100, "isCompanyEmployee": false, "PUSHNotifications": true, "receiveAdvertisingInformation": true, "createdAt": "2024-03-15T10:00:00.000Z", "updatedAt": "2024-03-15T10:00:00.000Z" }id: (string) - ID пользователя.name: (string) - Имя пользователя.phone: (string) - Номер телефона.email: (string, optional) - Электронная почта.gender: (string, optional) - Пол пользователя.birthday: (string, optional) - Дата рождения пользователя.isActive: (boolean, optional) - Активен ли пользователь.balance: (integer, optional) - Баланс пользователя.isCompanyEmployee: (boolean, optional) - Является ли сотрудником компании.PUSHNotifications: (boolean) - Получает ли пользователь PUSH-уведомления.receiveAdvertisingInformation: (boolean) - Получает ли пользователь рекламную информацию.createdAt: (string) - Дата создания записи.updatedAt: (string) - Дата последнего обновления записи.
- 403 Forbidden:
{ "message": "Нет прав для изменения данных другого пользователя" } - 422 Unprocessable Entity:
{
"message": "Некорректные данные для обновления пользователя"
}
- 404 Not Found:
{ "message": "Пользователь не найден" } - 500 Internal Server Error:
{ "message": "Internal Server Error" }
GET /:id/last-order
Описание: Получение последнего заказа пользователя по ID.
Теги: Пользователь
Summary: Возвращает последний заказ пользователя.
Предварительная проверка: Требуется аутентификация пользователя (user role).
Параметры запроса (path):
id: (string, required) - ID пользователя.
Ответ:
- 200 OK:
{ "createdAt": "2024-03-15T10:00:00.000Z", "products": [ { "productId": "product_id_uuid", "amount": 2, "isGift": 0, "name": "Product 1", "isAction": false, "mods": [ { "id": 1, "orderProductId": 1, "iikoId": "some_mod_id", "name": "Modifier 1", "code": "mod1", "price": 100, "amount": 1, "groupId": "some_group_mod_id", "groupName": "Group mod 1", "isGift": false, "createdAt": "2024-03-15T10:00:00.000Z", "updatedAt": "2024-03-15T10:00:00.000Z" } ] } ] }createdAt: (string, date-time) - Дата и время создания заказа.products: (array) - Массив товаров в заказе.productId: (string) - ID продукта.amount: (integer) - Количество.isGift: (integer) - Подарокname: (string) - Название продуктаisAction: (boolean) - Акционный продукт.mods: (array) - Массив модификаторов товара.id: (integer) - ID модификатора.orderProductId: (integer) - ID заказа продукта.iikoId: (string) - iiko ID модификатора.name: (string) - Название модификатора.code: (string) - Код модификатора.price: (integer) - Цена модификатора.amount: (integer) - Количество модификатора.groupId: (string) - ID группы модификаторов.groupName: (string) - Название группы модификаторов.isGift: (boolean) - Является ли модификатор подарком.createdAt: (string) - Дата создания модификатора.updatedAt: (string) - Дата последнего обновления модификатора.
- 404 Not Found:
{ "message": "Заказ не найден" } - 500 Internal Server Error:
{ "message": "Internal Server Error" }
GET /:id/like
Описание: Получение лайков пользователя по ID пользователя.
Теги: Пользователь
Summary: Возвращает список лайков пользователя.
Предварительная проверка: Требуется аутентификация пользователя (user role).
Параметры запроса (path):
id: (string, required) - ID пользователя.
Ответ:
- 200 OK:
[ { "id": 1, "productId": "some_product_id_uuid", "userId": "some_user_id_uuid" }, { "id": 2, "productId": "some_product_id_uuid_2", "userId": "some_user_id_uuid" } ] id: (integer) - ID лайка.productId: (string) - ID продукта.userId: (string) - ID пользователя.- 500 Internal Server Error:
{ "message": "Internal Server Error" }
Примечания:
- Все запросы, кроме
GET /требуют авторизации с рольюuserилиadmin. - Все запросы возвращают
500 Internal Server Errorв случае внутренней ошибки на сервере.