Skip to content

Эндпоинты API

Обзорная карта публично описываемых endpoints SNABZHENETS+. Для точного контракта интеграции используйте актуальную спецификацию API, доступную в вашем подключении.

Базовые правила

  • API рабочего портала использует префикс /api/v1.
  • GET /health доступен без /api/v1.
  • Большинство endpoints рабочего портала требуют аутентификации.
  • Публичные endpoints поставщика находятся под /api/v1/public/v1 и используют одноразовую ссылку доступа.
  • Внешние интеграции используют стабильный фасад /api/v1/integration-api; внутренние auth/admin/support/deploy endpoints через него не доступны.

Integration API

МетодПутьОписание
GET/api/v1/integration-api/metaScopes, ресурсы, операции и события текущего API key
GET/api/v1/integration-api/:resourceСписок бизнес-сущностей фасада
POST/api/v1/integration-api/:resourceСоздать бизнес-сущность через фасад
GET/api/v1/integration-api/:resource/:idПолучить сущность
PATCH/api/v1/integration-api/:resource/:idОбновить сущность
DELETE/api/v1/integration-api/:resource/:idАрхивировать сущность, если поддерживается
POST/api/v1/integration-api/:resource/:id/operations/change-statusСменить статус
GET/api/v1/integration-api/linksНайти связь внешнего ID с внутренней сущностью
PUT/api/v1/integration-api/linksСоздать или обновить связь внешнего ID

Ресурсы v1: purchase-requisitions, catalog-items, counterparties, warehouses, price-lists, invoices. Legacy-ресурс procurements остаётся доступным как alias для purchase-requisitions.

Health и auth

МетодПутьОписание
GET/healthПроверка состояния API
POST/api/v1/auth/registerРегистрация портала и администратора с обязательным подтверждением email
POST/api/v1/auth/register/availabilityПроверка доступности данных регистрации
POST/api/v1/auth/email-verification/confirmПодтверждение email по одноразовой ссылке
POST/api/v1/auth/email-verification/resendПовторная отправка письма подтверждения
POST/api/v1/auth/loginВход
GET/api/v1/auth/meТекущая сессия
POST/api/v1/auth/change-passwordСмена временного или текущего пароля
POST/api/v1/auth/logoutВыход

Публичная регистрация принимает только реальный ИНН организации с контрольной суммой ФНС, российский телефон в формате +7 (999) 999-99-99 и рабочий email без placeholder-слов вроде test, demo, fake, example, temp, dummy, sample и временных доменов.

Запрос POST /api/v1/auth/register также требует явного принятия правовых документов:

json
{
  "workspaceName": "Компания",
  "portalName": "company",
  "companyInn": "245015768148",
  "phone": "79518452172",
  "fullName": "Администратор",
  "email": "admin@company.ru",
  "password": "strong-password",
  "acceptedOffer": true,
  "acceptedPersonalData": true,
  "acceptedMarketing": false
}

acceptedOffer и acceptedPersonalData обязательны и должны быть true. acceptedMarketing необязателен и фиксирует отдельное согласие на рекламные и информационные сообщения.

После успешного POST /api/v1/auth/register сессия не выдаётся сразу. Ответ содержит статус email_verification_required, email администратора, slug портала, срок действия ссылки и статус отправки письма. Вход в приложение доступен только после перехода по ссылке подтверждения. Если неподтверждённый пользователь пытается войти по паролю, POST /api/v1/auth/login возвращает 403 с кодом email_not_verified.

Рабочие процессы закупки

МетодПутьОписание
GET/api/v1/purchase-requisitionsСписок заявок
POST/api/v1/purchase-requisitionsСоздать заявку
GET/api/v1/purchase-requisitions/status-flowСтатусная схема заявок
GET/api/v1/purchase-requisitions/:procurementIdКарточка заявки
PATCH/api/v1/purchase-requisitions/:procurementIdОбновить заявку
PATCH/api/v1/purchase-requisitions/:procurementId/statusСменить статус
PATCH/api/v1/purchase-requisitions/:procurementId/stageПеренести заявку на этап воронки
GET/api/v1/purchase-requisitions/:procurementId/suppliersПоставщики заявки
POST/api/v1/purchase-requisitions/:procurementId/suppliersДобавить поставщика
PATCH/api/v1/purchase-requisitions/:procurementId/suppliers/:procurementSupplierIdОбновить поставщика заявки
GET/api/v1/purchase-requisitions/:procurementId/quotesКП поставщиков
POST/api/v1/purchase-requisitions/:procurementId/quotesДобавить КП
PATCH/api/v1/purchase-requisitions/:procurementId/quotes/:quoteIdОбновить КП
PATCH/api/v1/purchase-requisitions/:procurementId/quote-line-decisionsСохранить выбранных поставщиков и количество по строкам заявки
POST/api/v1/purchase-requisitions/:procurementId/request-supplier-invoicesОтправить поставщикам запросы счетов по выбранным строкам заявки
POST/api/v1/purchase-requisitions/:procurementId/stock-receiptПринять позиции на склад
GET/api/v1/purchase-requisitions/:procurementId/exchange/templateСкачать шаблон позиций заявки
POST/api/v1/purchase-requisitions/:procurementId/exchange/importsСоздать предпросмотр импорта позиций заявки
POST/api/v1/purchase-requisitions/:procurementId/exchange/imports/from-mailСоздать предпросмотр импорта из текста письма или вложения; поддерживает строки заявки клиента и цены поставщика
PATCH/api/v1/purchase-requisitions/:procurementId/exchange/imports/:jobId/previewОбновить сопоставление колонок или режим импорта PR
POST/api/v1/purchase-requisitions/:procurementId/exchange/imports/:jobId/applyПрименить импорт позиций PR; тело может содержать { "selectedRowIds": ["..."] }
POST/api/v1/purchase-requisitions/:procurementId/exchange/exportЭкспортировать позиции PR

Каталог, склады, контрагенты

МетодПутьОписание
GET/api/v1/catalogСписок номенклатуры, включая текущую себестоимость и источник
POST/api/v1/catalogСоздать позицию; обязательно только название, артикул необязателен, можно передать плановую или ручную себестоимость и начальный остаток
POST/api/v1/catalog/categoriesСоздать категорию номенклатуры
GET/api/v1/catalog/:itemIdКарточка позиции с текущей себестоимостью, фактической историей закупочных цен и остатками
PATCH/api/v1/catalog/:itemIdОбновить позицию
POST/api/v1/catalog/:itemId/supplier-linksДобавить ручную связь товара с поставщиком: { supplierId | counterpartyId, manualPrice?, manualCurrency?, manualComment? }
DELETE/api/v1/catalog/:itemId/supplier-links/:counterpartyIdСнять ручную связь товара с поставщиком, не удаляя автоматическую историю
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=...Скачать шаблон импорта со служебным кодом позиции
POST/api/v1/catalog/exchange/importsЗагрузить файл и создать предпросмотр
PATCH/api/v1/catalog/exchange/imports/:jobId/previewПересчитать предпросмотр после сопоставления колонок, параметров и действий по строкам
POST/api/v1/catalog/exchange/imports/:jobId/applyПрименить импорт
POST/api/v1/catalog/exchange/exportЭкспорт текущего списка или выбранных строк
GET/api/v1/price-listsРеестр прайсов с фильтрами, счетчиками и контрагентами
POST/api/v1/price-listsСоздать прайс поставщика, покупателя или внутренний прайс
GET/api/v1/price-lists/:priceListIdКарточка прайса со строками, сравнением и историями версий
PATCH/api/v1/price-lists/:priceListIdОбновить шапку, статус, период, валюту и контрагента
POST/api/v1/price-lists/:priceListId/duplicateДублировать прайс вместе со строками номенклатуры
POST/api/v1/price-lists/:priceListId/archiveАрхивировать прайс
DELETE/api/v1/price-lists/:priceListIdУдалить прайс
GET/api/v1/price-lists/products/:productIdНайти прайсы, связанные с позицией номенклатуры
POST/api/v1/price-lists/:priceListId/itemsДобавить или обновить строки прайса по номенклатуре; прайс поставщика обновляет плановую себестоимость SKU
PATCH/api/v1/price-lists/:priceListId/items/:itemIdИзменить цену, партию, срок поставки или дату действия строки
DELETE/api/v1/price-lists/:priceListId/items/:itemIdУдалить строку прайса
POST/api/v1/price-lists/:priceListId/exportЭкспортировать конкретный прайс в CSV/TSV
GET/api/v1/warehousesСписок складов
POST/api/v1/warehousesСоздать склад
PATCH/api/v1/warehouses/:warehouseIdОбновить склад
GET/api/v1/settings/catalogПолучить настройки сохранения номенклатуры; по умолчанию SUPPLIER_QUOTES_ALL
PATCH/api/v1/settings/catalogОбновить политику номенклатуры: { "nomenclatureSavePolicy": "SUPPLIER_QUOTES_ALL" }
GET/api/v1/counterpartiesСписок контрагентов
POST/api/v1/counterpartiesСоздать контрагента
GET/api/v1/counterparties/:counterpartyIdКарточка контрагента
PATCH/api/v1/counterparties/:counterpartyIdОбновить контрагента
POST/api/v1/counterparties/:counterpartyId/assortment/categoriesДобавить ручную категорию ассортимента поставщика
DELETE/api/v1/counterparties/:counterpartyId/assortment/categories/:categoryIdСнять ручную категорию ассортимента
POST/api/v1/counterparties/:counterpartyId/assortment/productsДобавить ручной товар ассортимента поставщика: { catalogItemId, manualPrice?, manualCurrency?, manualComment? }
DELETE/api/v1/counterparties/:counterpartyId/assortment/products/:catalogItemIdСнять ручную связь товара с поставщиком
DELETE/api/v1/counterparties/:counterpartyIdУдалить контрагента

Логистика

МетодПутьОписание
GET/api/v1/logisticsСводка по объектам, маршрутам, партиям и документам поставки
GET/api/v1/logistics/mapПлановая карта объектов и маршрутов; фильтры date, dateFrom, dateTo, region, status
GET/api/v1/logistics/vehicle-locationsИстория телематических точек ТС для интеграций
POST/api/v1/logistics/vehicles/:vehicleId/locationsДобавить телематическую точку ТС
PATCH/api/v1/logistics/vehicle-locations/:locationIdОбновить телематическую точку ТС
DELETE/api/v1/logistics/vehicle-locations/:locationIdУдалить телематическую точку ТС
GET/api/v1/logistics/objectsСписок объектов логистики
POST/api/v1/logistics/objectsСоздать объект логистики
PATCH/api/v1/logistics/objects/:objectIdОбновить объект логистики
DELETE/api/v1/logistics/objects/:objectIdУдалить объект или архивировать, если есть связи
GET/api/v1/logistics/driversСписок водителей
POST/api/v1/logistics/driversСоздать водителя
PATCH/api/v1/logistics/drivers/:driverIdОбновить водителя
DELETE/api/v1/logistics/drivers/:driverIdУдалить водителя или архивировать, если есть связи
GET/api/v1/logistics/vehiclesСписок ТС
POST/api/v1/logistics/vehiclesСоздать ТС
PATCH/api/v1/logistics/vehicles/:vehicleIdОбновить ТС
DELETE/api/v1/logistics/vehicles/:vehicleIdУдалить ТС или архивировать, если есть связи
GET/api/v1/logistics/routesСписок маршрутов доставки с упорядоченными пунктами
POST/api/v1/logistics/routesСоздать маршрут доставки с одним, двумя или несколькими пунктами
PATCH/api/v1/logistics/routes/:routeIdОбновить маршрут доставки и его пункты
DELETE/api/v1/logistics/routes/:routeIdУдалить маршрут или архивировать, если есть связи
GET/api/v1/logistics/batchesСписок партий поставки
POST/api/v1/logistics/batchesСоздать партию поставки со строками
PATCH/api/v1/logistics/batches/:batchIdОбновить партию поставки и её строки
DELETE/api/v1/logistics/batches/:batchIdУдалить партию или архивировать, если есть документы
GET/api/v1/logistics/documentsИстория документов поставки; фильтр procurementId
PATCH/api/v1/logistics/documents/:documentIdОбновить реквизиты документа поставки
DELETE/api/v1/logistics/documents/:documentIdАрхивировать документ поставки
GET/api/v1/logistics/documents/:documentId/export?format=pdfСкачать PDF документа поставки
POST/api/v1/logistics/documents/exportСкачать ZIP с PDF-документами: { format: "pdf_zip", documentIds?, procurementId? }
POST/api/v1/logistics/procurements/:procurementId/documentsСформировать документы поставки из заявки

Payload генерации документов поставки принимает kind, scope, необязательный templateId, списки itemIds, supplierIds, logisticsObjectIds, routeIds, batchIds, дату документа и безопасные реквизиты перевозчика, водителя, ТС, доверенного лица, получателя и адреса доставки. Для grouped scope API возвращает список созданных документов.

Файлы

МетодПутьОписание
POST/api/v1/filesЗагрузить файл и привязать к сущности
GET/api/v1/files?entityType=:type&entityId=:idПолучить файлы, привязанные к документу или справочнику
GET/api/v1/files/:fileId/download-urlПолучить временную ссылку для скачивания файла
DELETE/api/v1/files/:fileIdУдалить файл из карточки сущности

Универсальные переменные

МетодПутьОписание
GET/api/v1/variablesКаталог переменных с фильтрами domain, entityType, search, includeCustom; работает через JWT или X-API-Key
POST/api/v1/variables/resolveПолучение значений переменных по запрошенным путям; для API key нужны variables.read и право чтения нужной области
GET/api/v1/api-keysСписок API keys портала и доступных scopes
POST/api/v1/api-keysСоздать API key; секрет возвращается только один раз
DELETE/api/v1/api-keys/:idАрхивировать API key

Документы и оплаты

МетодПутьОписание
GET/api/v1/invoicesВходящие счета
POST/api/v1/invoicesСоздать входящий счёт
GET/api/v1/invoices/:invoiceIdКарточка входящего счёта
PATCH/api/v1/invoices/:invoiceIdОбновить входящий счёт
POST/api/v1/invoices/:invoiceId/paymentsЗарегистрировать оплату входящего счёта
PATCH/api/v1/invoices/:invoiceId/payments/:paymentIdИзменить оплату входящего счёта
DELETE/api/v1/invoices/:invoiceId/payments/:paymentIdУдалить оплату входящего счёта
GET/api/v1/commercial-proposalsКоммерческие предложения
POST/api/v1/commercial-proposalsСоздать КП
GET/api/v1/commercial-proposals/:idКарточка КП
GET/api/v1/commercial-proposals/:id/export?format=docx&templateId=...Скачать КП в Word, templateId необязателен (commercial_proposals.export)
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Карточка исходящего счёта
GET/api/v1/sales-invoices/:id/export?format=xlsx|docx&templateId=...Скачать исходящий счёт, templateId используется только для Word (sales_invoices.export)
PATCH/api/v1/sales-invoices/:idОбновить исходящий счёт
DELETE/api/v1/sales-invoices/:idУдалить исходящий счёт
POST/api/v1/sales-invoices/:id/paymentsЗарегистрировать оплату; для ручной записи используйте source=manual, для банков/1С передавайте source, externalSource и externalPaymentId
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Отменить
GET/api/v1/contractsДоговоры
POST/api/v1/contractsСоздать договор
GET/api/v1/contracts/:idКарточка договора
GET/api/v1/contracts/:id/export?format=docx&templateId=...Скачать договор в Word, templateId необязателен (contracts.export)
PATCH/api/v1/contracts/:idОбновить договор
DELETE/api/v1/contracts/:idУдалить черновик договора
GET/api/v1/settings/seller-profilesКомпания / профили продавца (company_settings.read)
POST/api/v1/settings/seller-profilesДобавить профиль продавца
PATCH/api/v1/settings/seller-profiles/:idОбновить профиль продавца
DELETE/api/v1/settings/seller-profiles/:idАрхивировать профиль продавца
GET/api/v1/settings/regionalРегиональные настройки портала
PATCH/api/v1/settings/regionalОбновить региональные настройки
GET/api/v1/settings/document-templatesШаблоны документов
POST/api/v1/settings/document-templatesСоздать пользовательский макет документа
GET/api/v1/settings/document-templates/export-options/sales-invoicesМакеты для Word-экспорта исходящих счетов
GET/api/v1/settings/document-templates/export-options/commercial-proposalsМакеты для Word-экспорта КП
GET/api/v1/settings/document-templates/export-options/contractsМакеты для Word-экспорта договоров
GET/api/v1/settings/document-templates/export-options/logistics/:kindМакеты для Word-экспорта документов поставки
GET/api/v1/settings/document-templates/variables?kind=...Каталог переменных шаблонов
POST/api/v1/settings/document-templates/:id/preview?format=html|docx|pdfПредпросмотр шаблона
PATCH/api/v1/settings/document-templates/:idОбновить шаблон документа
GET/api/v1/settings/pipelineЭтапы закупочной воронки, поля товаров и палитра цветов
POST/api/v1/settings/pipeline/stagesДобавить пользовательский этап воронки
PATCH/api/v1/settings/pipeline/stages/:idОбновить название, короткое название, цвет или активность этапа
PATCH/api/v1/settings/pipeline/stages/orderИзменить порядок этапов
DELETE/api/v1/settings/pipeline/stages/:idАрхивировать пользовательский этап
POST/api/v1/settings/pipeline/product-fieldsДобавить пользовательское поле товара
PATCH/api/v1/settings/pipeline/product-fields/:idОбновить пользовательское поле товара
DELETE/api/v1/settings/pipeline/product-fields/:idАрхивировать пользовательское поле товара
GET/api/v1/settings/custom-fields?entityType=...Определения дополнительных полей портала
POST/api/v1/settings/custom-fieldsСоздать дополнительное поле и переменную custom.<key>
PATCH/api/v1/settings/custom-fields/:idОбновить определение дополнительного поля
DELETE/api/v1/settings/custom-fields/:idАрхивировать дополнительное поле
GET/api/v1/settings/custom-fields/values?entityType=...&entityId=...Значения дополнительных полей
PUT/api/v1/settings/custom-fields/:id/valuesЗаписать значение дополнительного поля

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/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/callbackOAuth callback
POST/api/v1/integrations/oauth/:slug/revokeОтозвать OAuth token
POST/api/v1/webhooks/inbound/:tokenПриём входящего webhook
GET/api/v1/integrations/wazzup/sidebar-statusСтатус Wazzup для меню
GET/api/v1/integrations/wazzup/overviewКаналы, webhook и последние события Wazzup
POST/api/v1/integrations/wazzup/iframeСоздать URL iframe Wazzup
POST/api/v1/integrations/wazzup/channels/syncСинхронизировать каналы
POST/api/v1/integrations/wazzup/users/syncСинхронизировать пользователей
POST/api/v1/integrations/wazzup/contacts/syncСинхронизировать контакты
POST/api/v1/integrations/wazzup/deals/syncСинхронизировать сделки
POST/api/v1/integrations/wazzup/webhook/registerЗарегистрировать webhook Wazzup
POST/api/v1/integrations/wazzup/messages/testОтправить тестовое сообщение
POST/api/v1/webhooks/wazzup/:tokenПриём webhook Wazzup
GET/api/v1/integrations/yougile/overviewЗадачи, проекты, доски и привязки YouGile
POST/api/v1/integrations/yougile/syncСинхронизировать YouGile
POST/api/v1/integrations/yougile/tasksСоздать задачу YouGile из S+
POST/api/v1/integrations/yougile/linksПривязать закупку к ID YouGile
DELETE/api/v1/integrations/yougile/links/:idУдалить привязку YouGile
POST/api/v1/integrations/yougile/webhook/registerЗарегистрировать webhook YouGile
POST/api/v1/webhooks/yougile/:tokenПриём webhook YouGile

Документация платформы SNABZHENETS+.