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. Срок жизни — настраивается.

Роли пользователей:

Middleware:

Ошибки

{
  "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 Статические страницы
Публичный