SelSup Developers

Публичный API · Справочник API

Вебхуки

Создание, просмотр и удаление подписок на уведомления об изменениях в SelSup.

Методы: 3/api/webhookСтабильныйСпецификация OpenAPI ↗
{ }

Подпишите свой сервер на нужные события. SelSup отправит POST-запрос на сохранённый адрес, когда изменится заказ или доступный остаток. Проверяйте подпись каждого уведомления перед обработкой.

/api/webhook

Примеры использования

Примеры использования

01

Передавать новые заказы во внешнюю систему

Настройте обработчик, подпишитесь на CREATE_ORDER и проверьте уведомление на тестовом заказе.

  1. Подготовьте публичный HTTPS-адрес, который принимает JSON через POST.
  2. Создайте подписку с url и types: ["CREATE_ORDER"], сохраните id и signingSecret.
  3. Проверьте подпись полученного запроса, сохраните уведомление и верните HTTP-ответ 2xx.
  4. Для отключения отправки удалите подписку по её id.

Модель данных

Поля подписки

Эти поля описывают настройки подписки. Формат самого уведомления зависит от выбранного события и приведён в руководстве по вебхукам.

Webhook7 полей
idinteger · int32

Идентификатор подписки, который SelSup присваивает после создания.

namestring

Название для различения подписок, например «Заказы для WMS».

urlstring

Публичный адрес вашего обработчика. На него SelSup отправляет POST-запросы.

typesstring[]

Массив типов событий: CREATE_ORDER, ORDER, ORDER_STATUS, CREATE_PRODUCT или STOCK.

clientIdinteger · int64

Идентификатор кабинета, которому принадлежит подписка. Определяется по авторизации.

organizationIdinteger · int64

Ограничение по организации для событий заказов. Без значения подписка принимает заказы разных организаций кабинета.

signingSecretstring

Секрет проверки подписи X-SelSup-Signature. Возвращается при создании и просмотре подписок; храните его на сервере.

read-only

Ошибки

Обработка ошибок

При ошибке API возвращает её код в поле error и сообщение на языке пользователя в localMessage. Проверяйте код error в программе, а localMessage показывайте пользователю.

error

Код ошибки для обработки в программе.

localMessage

Сообщение на языке пользователя, которому принадлежит токен.

params

Значения, которые сервер подставил в сообщение об ошибке.

文

Язык localMessage определяется полем lang пользователя, которому принадлежит API-токен. Язык страницы документации и заголовок Accept-Language его не переключают; если язык пользователя не указан, используется русский.

RUПользователь с локалью ru
{
  "error": "error_brand_already_exists",
  "localMessage": "Бренд Base уже существует",
  "params": {
    "name": "Base"
  }
}
ENПользователь с локалью en
{
  "error": "error_brand_already_exists",
  "localMessage": "Brand Base already exists",
  "params": {
    "name": "Base"
  }
}

Методы

Методы

GET

Получить список подписок

/api/webhook/
Токен с правами чтения

Возвращает подписки текущего кабинета вместе с секретами подписи. Доступен сотрудникам с правами ADMIN или API.

curl --request GET 'https://api.selsup.ru/api/webhook/' \
  --header 'Authorization: YOUR_API_TOKEN'

Успешный ответ

200
Структура элемента массива Webhook[]
ПолеТипОбязательноОписание
id integer · int32 Нет Идентификатор подписки, который SelSup присваивает после создания.
name string Нет Название для различения подписок, например «Заказы для WMS».
url string Нет Публичный адрес вашего обработчика. На него SelSup отправляет POST-запросы.
types string[] Нет Массив типов событий: CREATE_ORDER, ORDER, ORDER_STATUS, CREATE_PRODUCT или STOCK.
clientId integer · int64 Нет Идентификатор кабинета, которому принадлежит подписка. Определяется по авторизации.
organizationId integer · int64 Нет Ограничение по организации для событий заказов. Без значения подписка принимает заказы разных организаций кабинета.
signingSecret string Нет Секрет проверки подписи X-SelSup-Signature. Возвращается при создании и просмотре подписок; храните его на сервере.
[
  {
    "id": 1001,
    "name": "Orders for WMS",
    "url": "https://integration.example.com/selsup/orders",
    "types": [
      "CREATE_ORDER"
    ],
    "clientId": 1001,
    "signingSecret": "0000000000000000000000000000000000000000000000000000000000000000"
  }
]
Ошибки4

При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑

401auth_required
Требуется авторизация

Заголовок Authorization отсутствует, пуст или содержит недействительный токен.

400error_access_denied
Недостаточно прав

Токен существует, но его роль не позволяет выполнить операцию.

500error_unknown
Непредвиденная ошибка

Не удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.

400error_subscription_expired
У вас закончился срок действия тарифа. Оплатите тариф для продолжения использования сервиса.

Для работы с подписками требуется действующий тариф. После оплаты повторите запрос.

POST

Создать подписку

/api/webhook/
Токен с правами записи

Принимает адрес обработчика и непустой массив типов событий. SelSup создаёт отдельный секрет подписи и возвращает сохранённую подписку. Для событий заказов можно ограничить отправку по organizationId.

Тело запроса

application/json
Поля объектаWebhook
ПолеТипОбязательноОписание
id integer · int32 Нет Идентификатор подписки, который SelSup присваивает после создания.
name string Нет Название для различения подписок, например «Заказы для WMS».
url string Нет Публичный адрес вашего обработчика. На него SelSup отправляет POST-запросы.
types string[] Нет Массив типов событий: CREATE_ORDER, ORDER, ORDER_STATUS, CREATE_PRODUCT или STOCK.
clientId integer · int64 Нет Идентификатор кабинета, которому принадлежит подписка. Определяется по авторизации.
organizationId integer · int64 Нет Ограничение по организации для событий заказов. Без значения подписка принимает заказы разных организаций кабинета.
signingSecret string Нет Секрет проверки подписи X-SelSup-Signature. Возвращается при создании и просмотре подписок; храните его на сервере.
curl --request POST 'https://api.selsup.ru/api/webhook/' \
  --header 'Authorization: YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Orders for WMS",
  "url": "https://integration.example.com/selsup/orders",
  "types": [
    "CREATE_ORDER"
  ]
}'

Успешный ответ

200
Поля объекта Webhook
ПолеТипОбязательноОписание
id integer · int32 Нет Идентификатор подписки, который SelSup присваивает после создания.
name string Нет Название для различения подписок, например «Заказы для WMS».
url string Нет Публичный адрес вашего обработчика. На него SelSup отправляет POST-запросы.
types string[] Нет Массив типов событий: CREATE_ORDER, ORDER, ORDER_STATUS, CREATE_PRODUCT или STOCK.
clientId integer · int64 Нет Идентификатор кабинета, которому принадлежит подписка. Определяется по авторизации.
organizationId integer · int64 Нет Ограничение по организации для событий заказов. Без значения подписка принимает заказы разных организаций кабинета.
signingSecret string Нет Секрет проверки подписи X-SelSup-Signature. Возвращается при создании и просмотре подписок; храните его на сервере.
{
  "id": 1001,
  "name": "Orders for WMS",
  "url": "https://integration.example.com/selsup/orders",
  "types": [
    "CREATE_ORDER"
  ],
  "clientId": 1001,
  "signingSecret": "0000000000000000000000000000000000000000000000000000000000000000"
}
Ошибки7

При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑

401auth_required
Требуется авторизация

Заголовок Authorization отсутствует, пуст или содержит недействительный токен.

400error_access_denied
Недостаточно прав

Токен существует, но его роль не позволяет выполнить операцию.

500error_unknown
Непредвиденная ошибка

Не удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.

400error_empty_type
Не указан тип

Массив types отсутствует, пуст или содержит null. Передайте хотя бы один поддерживаемый тип события.

400error_empty_url
Не указан адрес сайта

В поле url не указан адрес обработчика или переданы только пробелы.

400error_invalid_url
Некорректный адрес обработчика

Проверьте публичный адрес обработчика и его длину: допускается не более 200 символов. Локальные и запрещённые адреса не принимаются.

400error_subscription_expired
У вас закончился срок действия тарифа. Оплатите тариф для продолжения использования сервиса.

Для работы с подписками требуется действующий тариф. После оплаты повторите запрос.

DELETE

Удалить подписку

/api/webhook/{webhookId}
Токен с правами записи

Прекращает отправку уведомлений по этой подписке. Уже полученные сообщения в вашей системе остаются.

Параметры пути

ПолеТипОбязательноОписание
webhookId integer · int64 Да Идентификатор подписки из ответа создания или списка.
curl --request DELETE 'https://api.selsup.ru/api/webhook/1001' \
  --header 'Authorization: YOUR_API_TOKEN'

Успешный ответ

200

Тело ответа пустое.

Ошибки4

При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑

401auth_required
Требуется авторизация

Заголовок Authorization отсутствует, пуст или содержит недействительный токен.

400error_access_denied
Недостаточно прав

Токен существует, но его роль не позволяет выполнить операцию.

500error_unknown
Непредвиденная ошибка

Не удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.

400error_subscription_expired
У вас закончился срок действия тарифа. Оплатите тариф для продолжения использования сервиса.

Для работы с подписками требуется действующий тариф. После оплаты повторите запрос.

Authorization

Токен для тестовых запросов

Получить токен

Токен хранится только в localStorage этого браузера и отправляется исключительно в заголовке Authorization запросов к api.selsup.ru.

Попробовать

Параметры реального запроса

Реальный ответ API

Выполните запрос, чтобы увидеть ответ SelSup.