Appearance
Эндпоинты API
Обзорная карта публично описываемых endpoints SNABZHENETS+. Детальный контракт с DTO, схемами ответов и Swagger metadata доступен при запущенном API по http://localhost:3001/docs.
Базовые правила
- Tenant API использует prefix
/api/v1. GET /healthдоступен без/api/v1.- Большинство tenant endpoints требуют session auth.
- Hub endpoints находятся под
/api/v1/hub/apiи используются операторской админкой. - Public supplier endpoints находятся под
/api/v1/public/v1и используют token в path.
Health и auth
| Метод | Путь | Описание |
|---|---|---|
GET | /health | Проверка состояния API |
POST | /api/v1/auth/register | Регистрация портала и администратора |
POST | /api/v1/auth/register/availability | Проверка доступности данных регистрации |
POST | /api/v1/auth/login | Вход |
GET | /api/v1/auth/me | Текущая сессия |
POST | /api/v1/auth/change-password | Смена временного или текущего пароля |
POST | /api/v1/auth/logout | Выход |
POST | /api/v1/auth/impersonate | Имперсонация пользователя |
Рабочие процессы закупки
| Метод | Путь | Описание |
|---|---|---|
GET | /api/v1/procurement-requests | Список заявок на закупку |
POST | /api/v1/procurement-requests | Создать заявку |
GET | /api/v1/procurement-requests/:requestId | Карточка заявки |
POST | /api/v1/procurement-requests/from-procurement | Создать заявку из PO с выбором строк |
GET | /api/v1/procurements | Список закупок |
POST | /api/v1/procurements | Создать закупку |
GET | /api/v1/procurements/status-flow | Статусная схема закупок |
GET | /api/v1/procurements/:procurementId | Карточка закупки |
PATCH | /api/v1/procurements/:procurementId | Обновить закупку |
PATCH | /api/v1/procurements/:procurementId/status | Сменить статус |
GET | /api/v1/procurements/:procurementId/suppliers | Поставщики закупки |
POST | /api/v1/procurements/:procurementId/suppliers | Добавить поставщика |
PATCH | /api/v1/procurements/:procurementId/suppliers/:procurementSupplierId | Обновить поставщика закупки |
GET | /api/v1/procurements/:procurementId/quotes | КП поставщиков |
POST | /api/v1/procurements/:procurementId/quotes | Добавить КП |
PATCH | /api/v1/procurements/:procurementId/quotes/:quoteId | Обновить КП |
POST | /api/v1/procurements/:procurementId/winner | Выбрать победителя |
POST | /api/v1/procurements/:procurementId/stock-receipt | Принять позиции на склад |
GET | /api/v1/procurements/:procurementId/exchange/template | Скачать шаблон позиций PO |
POST | /api/v1/procurements/:procurementId/exchange/imports | Создать preview импорта позиций PO |
PATCH | /api/v1/procurements/:procurementId/exchange/imports/:jobId/preview | Обновить mapping или режим импорта PO |
POST | /api/v1/procurements/:procurementId/exchange/imports/:jobId/apply | Применить импорт позиций PO |
POST | /api/v1/procurements/:procurementId/exchange/export | Экспортировать позиции PO |
Каталог, склады, контрагенты
| Метод | Путь | Описание |
|---|---|---|
GET | /api/v1/catalog | Список номенклатуры |
POST | /api/v1/catalog | Создать позицию; обязательно только name, sku optional, можно передать initialPrice и initialStock |
GET | /api/v1/catalog/:itemId | Карточка позиции |
PATCH | /api/v1/catalog/:itemId | Обновить позицию |
GET | /api/v1/catalog/:itemId/stock | Остатки |
GET | /api/v1/catalog/:itemId/movements | Движения |
POST | /api/v1/catalog/:itemId/movements/adjustment | Ручная корректировка |
GET | /api/v1/catalog/exchange/template?format=... | Скачать шаблон импорта с колонкой ID |
POST | /api/v1/catalog/exchange/imports | Загрузить файл и создать preview |
PATCH | /api/v1/catalog/exchange/imports/:jobId/preview | Пересчитать preview после mapping/options/rowActions |
POST | /api/v1/catalog/exchange/imports/:jobId/apply | Применить импорт |
POST | /api/v1/catalog/exchange/export | Экспорт текущего списка или выбранных строк |
GET | /api/v1/warehouses | Список складов |
POST | /api/v1/warehouses | Создать склад |
PATCH | /api/v1/warehouses/:warehouseId | Обновить склад |
GET | /api/v1/counterparties | Список контрагентов |
POST | /api/v1/counterparties | Создать контрагента |
GET | /api/v1/counterparties/:counterpartyId | Карточка контрагента |
PATCH | /api/v1/counterparties/:counterpartyId | Обновить контрагента |
DELETE | /api/v1/counterparties/:counterpartyId | Удалить контрагента |
Файлы
| Метод | Путь | Описание |
|---|---|---|
POST | /api/v1/files | Загрузить файл и привязать к сущности |
Документы и оплаты
| Метод | Путь | Описание |
|---|---|---|
GET | /api/v1/invoices | Входящие счета |
POST | /api/v1/invoices | Создать входящий счёт |
GET | /api/v1/invoices/:invoiceId | Карточка входящего счёта |
PATCH | /api/v1/invoices/:invoiceId | Обновить входящий счёт |
GET | /api/v1/commercial-proposals | Коммерческие предложения |
POST | /api/v1/commercial-proposals | Создать КП |
GET | /api/v1/commercial-proposals/:id | Карточка КП |
PATCH | /api/v1/commercial-proposals/:id | Обновить КП |
DELETE | /api/v1/commercial-proposals/:id | Удалить КП |
POST | /api/v1/commercial-proposals/:id/submit-approval | Отправить на согласование |
POST | /api/v1/commercial-proposals/:id/approve | Согласовать |
POST | /api/v1/commercial-proposals/:id/reject | Отклонить |
POST | /api/v1/commercial-proposals/:id/send | Отправить клиенту |
POST | /api/v1/commercial-proposals/:id/convert-to-invoice | Конвертировать в счёт |
GET | /api/v1/sales-invoices | Исходящие счета |
POST | /api/v1/sales-invoices | Создать исходящий счёт |
GET | /api/v1/sales-invoices/:id | Карточка исходящего счёта |
PATCH | /api/v1/sales-invoices/:id | Обновить исходящий счёт |
DELETE | /api/v1/sales-invoices/:id | Удалить исходящий счёт |
POST | /api/v1/sales-invoices/:id/payments | Зарегистрировать оплату |
POST | /api/v1/sales-invoices/:id/submit-approval | Отправить на согласование |
POST | /api/v1/sales-invoices/:id/approve | Согласовать |
POST | /api/v1/sales-invoices/:id/issue | Выпустить |
POST | /api/v1/sales-invoices/:id/send | Отправить |
POST | /api/v1/sales-invoices/:id/void | Аннулировать |
POST | /api/v1/sales-invoices/:id/cancel | Отменить |
RFQ поставщикам
| Метод | Путь | Описание |
|---|---|---|
GET | /api/v1/supplier-rfqs | Список RFQ |
POST | /api/v1/supplier-rfqs | Создать RFQ |
GET | /api/v1/supplier-rfqs/:id | Карточка RFQ |
PATCH | /api/v1/supplier-rfqs/:id | Обновить RFQ |
DELETE | /api/v1/supplier-rfqs/:id | Удалить RFQ |
POST | /api/v1/supplier-rfqs/:id/send | Отправить поставщикам |
POST | /api/v1/supplier-rfqs/:id/remind | Напомнить поставщикам |
GET | /api/v1/supplier-rfqs/:id/history | История статусов |
POST | /api/v1/supplier-rfqs/:id/items | Добавить позицию |
PATCH | /api/v1/supplier-rfqs/:id/items/:itemId | Обновить позицию |
DELETE | /api/v1/supplier-rfqs/:id/items/:itemId | Удалить позицию |
POST | /api/v1/supplier-rfqs/:id/items/reorder | Изменить порядок позиций |
GET | /api/v1/supplier-quotes | Список ответов поставщиков |
POST | /api/v1/supplier-quotes | Создать ответ |
GET | /api/v1/supplier-quotes/:id | Карточка ответа |
PATCH | /api/v1/supplier-quotes/:id | Обновить ответ |
POST | /api/v1/supplier-quotes/:id/submit | Отправить ответ |
GET | /api/v1/supplier-quotes/:id/versions | Версии ответа |
GET | /api/v1/supplier-quotes/compare/list | Сравнение ответов |
GET | /api/v1/public/v1/supplier-rfqs/:token | Публичная карточка RFQ |
POST | /api/v1/public/v1/supplier-rfqs/:token/quote-draft | Черновик ответа поставщика |
POST | /api/v1/public/v1/supplier-rfqs/:token/quote-submit | Отправка ответа поставщика |
GET | /api/v1/public/v1/supplier-quotes/:token/status | Публичный статус ответа |
Администрирование, биллинг, аналитика
| Метод | Путь | Описание |
|---|---|---|
GET | /api/v1/users | Пользователи |
POST | /api/v1/users | Создать пользователя |
PATCH | /api/v1/users/:userId | Обновить пользователя |
DELETE | /api/v1/users/:userId | Удалить пользователя |
PUT | /api/v1/users/:userId/roles | Назначить роли |
POST | /api/v1/users/:userId/password-reset | Выдать новый временный пароль и отозвать сессии |
POST | /api/v1/users/:userId/sessions/revoke | Отозвать активные сессии без смены пароля |
GET | /api/v1/users/departments | Отделы сотрудников |
POST | /api/v1/users/departments | Создать отдел |
PATCH | /api/v1/users/departments/:departmentId | Обновить отдел |
DELETE | /api/v1/users/departments/:departmentId | Удалить пустой отдел |
GET | /api/v1/users/roles | Роли |
POST | /api/v1/users/roles | Создать кастомную роль |
PATCH | /api/v1/users/roles/:roleId | Обновить кастомную роль и матрицу прав |
DELETE | /api/v1/users/roles/:roleId | Удалить кастомную роль с переводом пользователей |
GET | /api/v1/users/permissions | Permissions |
GET | /api/v1/users/access-matrix | Матрица доступа |
GET | /api/v1/billing/plans | Тарифы |
GET | /api/v1/billing/subscription | Текущая подписка |
POST | /api/v1/billing/checkout | Checkout flow |
POST | /api/v1/billing/enterprise-request | Enterprise-запрос |
GET | /api/v1/billing/transactions | История транзакций |
GET | /api/v1/analytics/overview | Обзор аналитики |
GET | /api/v1/analytics/trends | Тренды |
GET | /api/v1/analytics/tables | Таблицы |
GET | /api/v1/audit-logs | Журнал аудита |
Platform и Hub
| Метод | Путь | Описание |
|---|---|---|
GET | /api/v1/platform/portals/domain-check | Проверка домена/slug |
GET | /api/v1/platform/portals | Список порталов, super_admin |
POST | /api/v1/platform/portals | Создание портала, super_admin |
POST | /api/v1/hub/api/auth/login | Hub login |
POST | /api/v1/hub/api/auth/logout | Hub logout |
GET | /api/v1/hub/api/auth/me | Hub session |
GET | /api/v1/hub/api/analytics/server | Server analytics |
GET | /api/v1/hub/api/portals | Порталы |
GET | /api/v1/hub/api/portals/:id | Карточка портала |
POST | /api/v1/hub/api/portals | Создать портал |
PATCH | /api/v1/hub/api/portals/:id | Обновить портал |
PATCH | /api/v1/hub/api/portals/:id/license | Управление лицензией |
PATCH | /api/v1/hub/api/portals/:id/subscription | Управление подпиской |
POST | /api/v1/hub/api/portals/:id/impersonate | Имперсонация |
GET | /api/v1/hub/api/partners | Партнёры |
POST | /api/v1/hub/api/partners | Создать партнёра |
GET | /api/v1/hub/api/partners/:id/rewards | Вознаграждения партнёра |
Интеграции
| Метод | Путь | Описание |
|---|---|---|
GET | /api/v1/integrations/marketplace/categories | Категории |
GET | /api/v1/integrations/marketplace | Каталог интеграций |
GET | /api/v1/integrations/marketplace/:slug | Карточка интеграции |
GET | /api/v1/integrations/installations | Установки |
POST | /api/v1/integrations/installations | Установить интеграцию |
GET | /api/v1/integrations/installations/:id | Карточка установки |
PATCH | /api/v1/integrations/installations/:id/config | Конфигурация |
POST | /api/v1/integrations/installations/:id/enable | Включить |
POST | /api/v1/integrations/installations/:id/disable | Выключить |
DELETE | /api/v1/integrations/installations/:id | Удалить |
POST | /api/v1/integrations/installations/:id/test | Проверить соединение |
POST | /api/v1/integrations/installations/:id/sync | Запустить синхронизацию |
GET | /api/v1/integrations/installations/:id/logs | Логи установки |
GET | /api/v1/integrations/installations/:id/webhook-endpoint | Входящий webhook endpoint |
POST | /api/v1/integrations/installations/:id/webhook-endpoint/regenerate | Перегенерировать endpoint |
GET | /api/v1/integrations/oauth/:slug/authorize | Начать OAuth |
GET | /api/v1/integrations/oauth/:slug/callback | OAuth callback |
POST | /api/v1/integrations/oauth/:slug/revoke | Отозвать OAuth token |
POST | /api/v1/webhooks/inbound/:token | Приём входящего webhook |