API Документация
Полная справка по API цветочного менеджера «Чёрный Лотос»
Обзор
Base URL: https://api.xn--e1aigghajnh7b8b.xn--p1ai/api
API использует REST с JSON. Все ответы имеют формат:
{
"success": true,
"data": { ... },
"message": "optional"
}
41 модуль, 380+ эндпоинтов, полный охват бизнес-процессов цветочного магазина.
Авторизация
Тип: JWT Bearer Token
Заголовок: Authorization: Bearer <token>
Токен получается при POST /api/auth/login. Срок жизни — настраивается.
Роли пользователей:
admin— полный доступmanager— управление товарами, заказами, складомcashier— POS-терминал, продажиseller— ограниченный доступ к продажамemployee— базовый доступ
Middleware:
authenticateToken— проверка JWTrequireAdmin— только adminrequireRole(['admin','manager'])— указанные ролиrequireCashierOrAdmin— cashier, seller, adminrequireNotSeller— все кроме seller
Ошибки
{
"success": false,
"error": "Описание ошибки",
"code": "ERROR_CODE"
}
HTTP коды: 200 OK, 201 Created, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 500 Server Error
Пагинация
GET /api/admin/products?page=1&limit=20&search=роза&category=Розы
Ответ:
{
"success": true,
"data": [...],
"pagination": {
"total": 150,
"page": 1,
"limit": 20,
"totalPages": 8
}
}
Авторизация
POST
/api/auth/register
Регистрация нового пользователя
Публичный
Тело запроса
{ "name": "Иван", "email": "ivan@example.com", "password": "123456", "phone": "+79001234567" }
Ответ 201
{ "success": true, "data": { "user": { "id": 1, "name": "Иван", "role": "employee" }, "token": "eyJhbG..." } }
POST
/api/auth/login
Вход в систему
Публичный
Тело запроса
{ "email": "ivan@example.com", "password": "123456" }
Ответ 200
{ "success": true, "data": { "user": { "id": 1, "name": "Иван", "role": "admin" }, "token": "eyJhbG..." } }
POST
/api/auth/barcode
Вход по штрих-коду
Публичный
Тело запроса
{ "barcode": "2000000000017" }
GET
/api/auth/profile
Профиль текущего пользователя
Требует JWT
PUT
/api/auth/profile
Обновить профиль
Требует JWT
Тело запроса
{ "name": "Новое имя", "phone": "+79001234567" }
Админ-панель
GET
/api/admin/dashboard/stats
Статистика дашборда
JWT Admin
Ответ
{ "totalOrders": 1250, "totalRevenue": 2450000, "totalProducts": 340, "activeUsers": 12, "todayOrders": 15, "todayRevenue": 45000 }
GET
/api/admin/dashboard/revenue
Данные выручки для графика
JWT Admin
Параметры
?period=week|month|year
GET
/api/admin/orders
Список всех заказов
JWT Admin
Параметры
?page=1&limit=20&status=pending&search=Иван&dateFrom=2026-01-01&dateTo=2026-01-31
POST
/api/admin/orders
Создать заказ (админ)
JWT Admin
Тело запроса
{
"customerInfo": { "name": "Иван", "phone": "+79001234567" },
"items": [{ "productId": 1, "quantity": 2 }],
"payment": { "method": "cash", "prepayment": 0 },
"delivery": { "method": "courier", "address": "ул. Ленина 10", "fee": 500 },
"discount": 0,
"usePoints": 0,
"adminNotes": "Тестовый заказ"
}
PATCH
/api/admin/orders/:id/status
Обновить статус заказа
JWT Admin
Тело запроса
{ "status": "confirmed", "adminNotes": "Подтверждён" }
Статусы: pending → confirmed → preparing → on_way → delivered | cancelled | refunded | paid
GET
/api/admin/products
Список товаров (админ)
JWT Admin
Параметры
?page=1&limit=20&search=роза&category=Розы&isAvailable=true
POST
/api/admin/products
Создать товар
JWT Admin
Тело запроса (multipart/form-data)
name: "Роза красная" price: 350 stock: 100 category: "Розы" sku: "R-001" barcode: "2000000000017" fractionalSale: true partsPerUnit: 3 isAvailable: true posOnly: false images: [file1, file2]
PUT
/api/admin/products/:id
Обновить товар
JWT Admin
DELETE
/api/admin/products/:id
Удалить товар
JWT Admin
GET
/api/admin/users
Список пользователей
JWT Admin
POST
/api/admin/upload
Загрузить файл
JWT Admin
Формат: multipart/form-data
file: [binary]
Товары
GET
/api/products
Каталог товаров (публичный)
Публичный
Параметры
?page=1&limit=20&category=Розы&search=красная&sort=price_asc
GET
/api/products/:id
Детали товара
Публичный
Заказы
POST
/api/orders/create-from-cart
Создать заказ из корзины
JWT
Тело запроса
{
"customerInfo": { "name": "Иван", "phone": "+79001234567", "email": "ivan@example.com" },
"delivery": { "method": "courier", "address": "ул. Ленина 10, кв. 5", "date": "2026-09-01", "time": "14:00-16:00" },
"payment": { "method": "card" },
"promoCode": "SALE10"
}
POST
/api/orders/guest
Гостевой заказ (без регистрации)
Публичный
GET
/api/orders/my-orders
Мои заказы
JWT
PUT
/api/orders/:id
Обновить заказ
JWT
Тело запроса
{
"items": [{ "productId": 1, "quantity": 2 }],
"discount": 100,
"deliveryFee": 500,
"payment": { "method": "cash", "prepayment": 500 },
"adminNotes": "Примечание",
"customerInfo": { "name": "Иван", "phone": "+79001234567" }
}
POST
/api/orders/:id/items
Добавить позицию в заказ
JWT
Тело запроса
{ "productId": 1, "quantity": 2, "price": 350 }
DELETE
/api/orders/:id/items/:productId
Удалить позицию из заказа
JWT
POST
/api/orders/:id/pay
Оплатить заказ
JWT
Тело запроса
{ "method": "cash", "amount": 4500 }
POST
/api/orders/:id/cancel
Отменить заказ
JWT
Корзина
GET
/api/cart
Получить корзину
JWT
POST
/api/cart/add
Добавить в корзину
JWT
{ "productId": 1, "quantity": 2 }
PUT
/api/cart/update/:productId
Изменить количество
JWT
{ "quantity": 3 }
DELETE
/api/cart/remove/:productId
Удалить из корзины
JWT
Категории
GET
/api/categories
Дерево категорий
Публичный
?tree=true
POST
/api/categories
Создать категорию
JWT Admin
{ "name": "Розы", "slug": "rozy", "parentId": null, "image": "/uploads/roses.jpg", "priceTagTemplateId": 1 }
Букеты
GET
/api/bouquets
Список букетов
JWT
POST
/api/bouquets
Создать букет
JWT
{
"name": "Букет из роз",
"description": "Красивый букет",
"salePrice": 3500,
"sku": "BL-001",
"barcode": "2000000000017",
"warehouseId": 1,
"items": [
{ "productId": 1, "quantity": 5 },
{ "productId": 2, "quantity": 3 }
]
}
POST
/api/bouquets/:id/disassemble
Разобрать букет (вернуть компоненты на склад)
JWT
Бонусная программа
GET
/api/bonus/settings
Настройки бонусной программы
JWT
PUT
/api/bonus/settings
Обновить настройки бонусов
JWT
{
"earningRate": 5,
"spendingLimitPercent": 30,
"tiers": {
"bronze": { "minPoints": 0, "multiplier": 1 },
"silver": { "minPoints": 5000, "multiplier": 1.2 },
"gold": { "minPoints": 15000, "multiplier": 1.5 },
"platinum": { "minPoints": 50000, "multiplier": 2 }
}
}
POST
/api/bonus
Создать бонусную карту
JWT
{ "holderName": "Иван Иванов", "phone": "+79001234567" }
POST
/api/bonus/import
Импорт бонусных карт (CSV)
JWT
Формат: multipart/form-data
file: [CSV файл] Формат CSV: cardNumber,holderName,phone,balance
GET
/api/bonus/search-customer
Поиск клиентов по телефону/имени
JWT
?q=Иван&limit=20
POS-терминал
GET
/api/pos/products
Поиск товаров для POS
JWT Cashier+
?q=роза&limit=50
GET
/api/pos/bonus-card/:cardNumber
Поиск бонусной карты в POS
JWT Cashier+
Склады
GET
/api/warehouses
Список складов
JWT
POST
/api/warehouses
Создать склад
JWT Admin
{ "name": "Основной склад", "address": "ул. Складочная 1" }
POST
/api/warehouses/:id/transfer
Перемещение между складами
JWT Admin
{ "toWarehouseId": 2, "items": [{ "productId": 1, "quantity": 10 }] }
Доставка
GET
/api/delivery-methods
Список способов доставки
Публичный
POST
/api/delivery-methods/calculate/:id
Рассчитать стоимость доставки
Публичный
{ "address": "ул. Ленина 10", "totalAmount": 3500 }
Зарплата
GET
/api/salary
Расчёт зарплаты
JWT Admin
?month=2026-08&employeeId=1
POST
/api/salary/pay
Выплатить зарплату
JWT Admin
{ "employeeId": 1, "month": "2026-08", "amount": 45000, "method": "bank_transfer" }
Отчёты
GET
/api/reports/profit-loss
Отчёт P&L (прибыли и убытки)
JWT Admin
?dateFrom=2026-08-01&dateTo=2026-08-31
GET
/api/reports/sales-by-category
Продажи по категориям
JWT Admin
GET
/api/reports/sales-by-employee
Продажи по сотрудникам
JWT Admin
GET
/api/reports/sales-by-product
Топ товаров
JWT Admin
Интеграции
Telegram
POST
/api/integrations/telegram/setup
Настроить Telegram-бота
JWT Admin
{ "botToken": "123456:ABC-..." }
Ozon
POST
/api/integrations/ozon/settings
Настройки Ozon
JWT Admin
{ "clientId": "12345", "apiKey": "your-api-key" }
POST
/api/integrations/ozon/products/push-card
Выгрузить товар на Ozon
JWT Admin
{ "productId": 1 }
GET
/api/integrations/ozon/products
Товары на Ozon
JWT Admin
GET
/api/integrations/ozon/orders
Заказы Ozon
JWT Admin
Flowwow
POST
/api/integrations/flowwow/settings
Настройки Flowwow
JWT Admin
{ "shopId": 12345, "token": "your-token" }
POST
/api/integrations/flowwow/products/push-card
Выгрузить товар на Flowwow
JWT Admin
{ "productId": 1 }
VK Market
POST
/api/integrations/vk-market/settings
Настройки VK Market
JWT Admin
Честный ЗНАК
GET
/api/chestny-znak/status
Статус интеграции
JWT
POST
/api/chestny-znak/order
Заказать коды маркировки
JWT
{ "productId": 1, "quantity": 100 }
POST
/api/chestny-znak/codes/sell
Продать (ввести в оборот) коды
JWT
POST
/api/chestny-znak/codes/write-off
Списать коды
JWT Admin
POST
/api/chestny-znak/scan
Сканировать код
JWT
ЭДО
GET
/api/edo/connection-status
Статус подключения ЭДО
JWT
GET
/api/edo/documents
Список документов
JWT
?type=incoming|outgoing&status=pending
POST
/api/edo/documents/create
Создать документ
JWT
Платежи
ЮKassa
POST
/api/yookassa/create-payment
Создать платёж
JWT
{ "orderId": 123, "amount": 3500, "description": "Заказ #123" }
Т-Банк
POST
/api/tbank/init
Инициировать платёж Т-Банк
JWT
ЮMoney
POST
/api/yoomoney/create-payment
Создать QuickPay
JWT
ЯндексПэй
POST
/api/yandex-pay/create-payment
Создать платёж ЯндексПэй
JWT
Публичное API (сайт)
GET
/api/products
Каталог товаров
Публичный
GET
/api/categories
Категории
Публичный
POST
/api/orders/guest
Гостевой заказ
Публичный
GET
/api/orders/public/:token
Статус заказа по токену
Публичный
GET
/api/reviews/product/:productId
Отзывы на товар
Публичный
GET
/api/blog
Статьи блога
Публичный
POST
/api/contact
Форма обратной связи
Публичный
{ "name": "Иван", "email": "ivan@example.com", "phone": "+79001234567", "message": "Хочу купить розы" }
POST
/api/promotions/validate
Проверить промокод
Публичный
{ "code": "SALE10", "cartTotal": 3500 }
GET
/api/delivery-methods
Способы доставки
Публичный
GET
/api/pages/:slug
Статические страницы
Публичный