API Documentation
Заказ
POST /order/
Описание: Создание нового заказа.
Теги: Заказ
Summary: Создаёт новый заказ и возвращает его данные.
Предварительная проверка: Требуется аутентификация пользователя (user role).
Тело запроса (body):
{
"user": {
"id": "user_id_uuid",
"name": "Имя пользователя",
"phone": "+79991234567"
},
"coupon": "promocode",
"spendBonus": 100,
"order": {
"payment": "ONL",
"delivery": "delivery",
"deliveryDateTime": "2024-03-15T12:00:00.000Z",
"comment": "Комментарий к заказу",
"personsCount": 2,
"basket": [
{
"product": {
"id": "some_product_uuid",
"name": "Название продукта",
"code": "product_code",
"price": 100,
"isGift": true
},
"quantity": 1,
"mods": [
{
"id": "mod_id",
"name": "Название модификатора",
"code": "mod_code",
"price": 10,
"amount": 1,
"groupId": "some_group_id",
"groupName": "Название группы модификаторов"
}
]
}
],
"total": 1200,
"zoneId": "zone_uuid",
"isSelfService": true,
"addressId": 1
}
}
user: (object, required) - Информация о пользователе.id: (string, optional) - ID пользователя.name: (string, required) - Имя пользователя.phone: (string, required) - Номер телефона пользователя.
coupon: (string, optional) - Промокод пользователя.spendBonus: (integer, optional) - Количество бонусов, которые пользователь хочет потратить.order: (object, required) - Информация о заказе.payment: (string, required) - Тип оплаты (ONL,CASH,CARD).delivery: (string, required) - Способ доставки (self,delivery).deliveryDateTime: (string, date-time, required) - Дата и время доставки.comment: (string, optional) - Комментарий к заказу.personsCount: (integer, required) - Количество человек.basket: (array, required, minItems: 1) - Список продуктов в корзине.product(object, required) - Информация о продукте.id(string, required) - ID продуктаname: (string, required) - Название продукта.code: (string, required) - Код продукта.price: (integer, required) - Цена продукта.isGift: (boolean, required) - Является ли продукт подарком.
quantity: (integer, required) - Количество продукта в корзине.mods: (array, optional) - Модификаторы продукта.id(string, required) - ID модификатораname: (string, required) - Название модификатора.code: (string, required) - Код модификатора.price: (integer, required) - Цена модификатора.amount: (integer, required) - Количество модификатора.groupId: (string, required) - ID группы модификаторов.groupName: (string, required) - Название группы модификаторов.
total: (integer, required, minimum: 0) - Общая сумма заказа после скидок.zoneId: (string, required) - ID зоны доставки.isSelfService: (boolean, required) - Является ли заказ заказом на самовывоз.addressId: (integer, optional) - ID адреса доставки (необходим для доставки).
Ответ:
- 201 Created:
{ "isOrderCreated": true, "orderId": 123 }isOrderCreated: (boolean) - Флаг успешного создания заказа.orderId: (integer) - ID созданного заказа.
- 400 Bad Request:
{ "statusCode": 400, "error": "Bad Request", "message": "Некорректные данные для создания заказа" } - 403 Forbidden:
{ "statusCode": 403, "error": "Forbidden", "message": "Доставка по данному адресу временно недоступна" } - 422 Unprocessable Entity:
{ "statusCode": 422, "error": "Unprocessable Entity", "message": "Некорректные данные для создания заказа" } - 500 Internal Server Error:
{ "statusCode": 500, "error": "Internal Server Error", "message": "Внутренняя ошибка сервера" }
GET /order/
Описание: Получение списка заказов с пагинацией.
Теги: Заказ
Summary: Возвращает массив заказов с информацией о пагинации.
Предварительная проверка: Требуется аутентификация пользователя (admin role).
Параметры запроса (query):
page: (integer, optional, default: 1) - Номер страницы для пагинации (минимум 1).filter: (string, optional) - Фильтр в формате JSON.order: (string, optional) - Порядок сортировки в формате JSON.limit: (integer, optional, default: 50) - Количество элементов на странице (минимум 1).
Ответ:
- 200 OK:
{
"items": [
{
"id": 1,
"userId": "user_id_uuid",
"addressId": 1,
"zoneId": "zone_uuid",
"total": 1200,
"paymentType": "ONL",
"personsCount": 2,
"isSelfService": true,
"comment": "Комментарий к заказу",
"coupon": "SOME_COUPON",
"spendBonus": 100,
"status": "NEW",
"isIikoSend": false,
"isTelegramSend": false,
"deliveryDateTime": "2024-03-15T12:00:00.000Z",
"createdAt": "2024-03-15T10:00:00.000Z",
"updatedAt": "2024-03-15T10:00:00.000Z"
}
],
"pagination": {
"currentPage": 1,
"pageSize": 50,
"totalPages": 1,
"totalItems": 1
}
}
items: (array) - Массив заказов.id: (integer) - ID заказа.userId: (string) - ID пользователя.addressId: (integer) - ID адреса доставки.zoneId: (string) - ID зоны доставки.total: (number) - Общая сумма заказа.paymentType: (string) - Тип оплаты.personsCount: (integer) - Количество человек.isSelfService: (boolean) - Является ли заказ самообслуживанием.comment: (string) - Комментарий к заказу.coupon: (string, optional) - Купон.spendBonus: (integer, optional) - Потраченные бонусы.status: (string) - Статус заказа (NEW,WAIT_PAYMENT,PAYED,COMPLETED,ERROR_PAYMENT).isIikoSend: (boolean) - Отправлен ли заказ в iiko.isTelegramSend: (boolean) - Отправлен ли заказ в Telegram.deliveryDateTime: (string, date-time) - Дата и время доставки.createdAt: (string, date-time) - Дата и время создания заказа.updatedAt: (string, date-time) - Дата и время последнего обновления заказа.
pagination: (object) - Информация о пагинации.currentPage: (integer) - Текущая страница.pageSize: (integer) - Количество элементов на странице.totalPages: (integer) - Общее количество страниц.totalItems: (integer) - Общее количество элементов.
- 500 Internal Server Error:
{
"statusCode": 500,
"error": "Internal Server Error",
"message": "Внутренняя ошибка сервера"
}
GET /order/rest
Описание: Получение списка ресторанов для заказов.
Теги: Заказ
Summary: Возвращает список ресторанов для заказов.
Предварительная проверка: Требуется аутентификация пользователя (admin role).
Ответ:
- 200 OK:
[ { "id": "restaurant_id_uuid", "name": "Название ресторана", "address": "Адрес ресторана" }, { "id": "restaurant_id_uuid_2", "name": "Название ресторана 2", "address": "Адрес ресторана 2" } ]id: (string) - ID ресторана.name: (string) - Название ресторана.address: (string) - Адрес ресторана.
- 500 Internal Server Error:
{
"statusCode": 500,
"error": "Internal Server Error",
"message": "Внутренняя ошибка сервера"
}
POST /order/validate-cart-items
Описание: Проверка элементов корзины.
Теги: Заказ
Предварительная проверка: Требуется аутентификация пользователя (user role).
Тело запроса (body):
[
{
"product": {
"id": "product_id",
"price": 100
},
"quantity": 2,
"mods": [
{
"id": "mod_id",
"price": 10
}
]
},
{
"product": {
"id": "product_id_2",
"price": 100
},
"quantity": 1,
"mods": []
}
]
product: (object, required) - Информация о продукте.id(string, required) - ID продуктаprice: (integer, required) - Цена продукта.
quantity: (integer, required) - Количество продукта в корзине.mods: (array, required) - Модификаторы продукта.id(string, required) - ID модификатораprice: (integer, required) - Цена модификатора.
Ответ:
- 200 OK:
true
- В случае успеха вернет true
- 422 Unprocessable Entity:
{
"statusCode": 422,
"error": "Unprocessable Entity",
"message": "Ошибка корзины",
"code": "WRONG_CART"
}
* Некорректные данные в корзине
- 500 Internal Server Error:
{
"statusCode": 500,
"error": "Internal Server Error",
"message": "Внутренняя ошибка сервера"
}
* Внутренняя ошибка сервера.
Примечания:
- Все запросы требуют авторизации с ролью
userилиadmin. - Все запросы возвращают
500 Internal Server Errorв случае внутренней ошибки на сервере.