Доставка: API (1.0)

Download OpenAPI specification:Download

Support Team: admin@selsup.ru License: Apache 2.0

Общая информация

Введение

SelSup API — программный интерфейс для работы с сервисом SelSup. Он даёт возможность обмениваться информацией между системой продавца и SelSup.

Методы API позволяют использовать весь функционал сервиса SelSup для работы с маркетплейсами Ozon, Wildberries, Aliexpress, Яндекс.Маркет, СберМегаМаркет, Леруа Мерлен, кассами Эвотор и Авито. Работать со службами доставки.

SelSup позволяет создавать карточки на всех маркетплейсах, заполнять параметры, вести учет остатков товаров, принимать заказы по FBS с маркетплейсов и интернет-магазина, обновлять остатки на позиции, по которым пришел заказ. Вести аналитику продаж и учет финансов.

С помощью API вы можете подключить любые источники заказов к SelSup и вести быстрый учет остатков с маркетплейсов и сайта.

По умолчанию GET запросы используются для получения данных, все запросы на изменение данных отправляются методоми POST, DELETE, PUT, PATCH

Авторизация

Как передавать токен авторизации в запросах

curl "https://api.selsup.ru/api/product/findProduct" \
  -H "Authorization: token"

Проверьте, что у вас указан токен API вместо <token>. Он указан на странице добавления нового токена

Перейдите на страницу настройки API: https://selsup.ru/application/integration/api

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

Токен необходимо передавать в заголовке Authorization: токен

Webhooks

SelSup может отправлять запросы на внешние сервисы и так же получать информацию от внешних сервисов, в случае каких-то событий. Такими событиями могут быть:

  • получение заказа с маркетплейса или от покупателя, в этом случае передается полная информация о заказе
  • изменение остатка на товары, передается информация о товаре и новый остаток
  • изменение цены на товар

Вы можете настроить Webhook, который будет отправлять HTTP/HTTPS запрос на адрес, который будет указан в кабинете. Возможна отправка POST или GET запроса в нужном формате с необходимыми заголовками.

Так вы сможете настроить интеграцию с любой собственной системой или сайтом.

Примеры решений

Поиск товаров

Для поиска товаров используйте метод /api/product/find Он позволяет найти товары по фильтрам и поисковому запросу, либо просто получить все товары по порядку.

Для выбора всех товаров лучше передавать sortBy=ID, чтобы новые товары не изменяли порядок сортировки и отдавались в конце. Параметр count=true, позволяет отдать в ответе значение поля total - общего количества данных по запросу. Значение true необходимо передавать только в первом запросе или вообще не передавать, просто последовательно выбирать данные по страницам, пока количество товаров в ответе не будет меньше размера limit.

Метод не отдает полную информацию о товаре, только основные поля, которые отображаются на списке товаров. Чтобы получить полную информацию о карточке, необходимо запросить ее по ID модели из ответа rows[0].view.model.id и использовать метод /api/model/{modelId} для получения полной информации о карточке. Если вы хотите изменить товар, получив данные из ответа метода, можно использовать метод PATCH, который объединит данные с уже сохраненными, чтобы не затереть какие-то параметры.

Информация о карточке

Получает полную информацию о карточке модели со всеми полями. У модели есть список цветов colors и у каждого цвета есть список размеров: sizes.

В поиске product/find поиск производится только по наличию конечного размера, поэтому если вы добавите цвета или модель, но не укажите размеры, в поиске они находиться не будут.

Чтобы получить дополнительные параметры, передавайте параметр params=true и в ответе values будет отдаваться список значений для цвета, модели или товара.

Полный список полей

Позволяет получить всю информацию о карточке товара, включая все заполненные параметры для последующего изменения информации о товаре через метод POST/PUT model. В списке services передаются маркетплейсы или сервисы, в которые необходимо отправить карточку после сохранения.

Создание модели

Метод позволяет создать новый товар

Позволяет создавать карточку товара. Карточка состоит из нескольких цветов, у каждого цвета может быть несколько размеров. Если в вашей категории товаров нет разделения по цветам и размерам - то просто создается карточка с одним цветом и одним размером. Цвет указывать не обязательно, как и значения поля размера. Обязательно указывать только артикул у модели.

Штрих-коды если не указаны, будут автоматически сгенерированы SelSup, либо нужно указывать явно штрих-коды в карточке товара.

Редактирование модели

Полный список полей

Позволяет изменить информацию у существующей модели, добавить цвета или размеры. Так же при редактировании модели можно выставлять свойство hasChanges=false, чтобы не изменять некоторые цвета или размеры.

Работа с параметрами карточки

У каждой структуры ProductModel, ProductView и Product, есть список значений параметров. У каждого параметра есть идентификатор, который зачастую уникален в рамках всех категорий маркетплейса. Один параметр может повторяться в разных категориях. Мы всегда пытаемся максимально сохранять идентификатор параметра при любых изменения на маркетплейсе.

Значения можно определять на разных уровнях, при этом Product имеет самый высший приоритет, потом идут по порядку значения со следующим приоритетом: ProductView, ProductModel, Category

В некоторых случаях, на маркетплейс не могут быть переданы значения, записанные у размера, например на Wildberries, тк карточка Wildberries соответствует ProductView. Уровень параметра, указанный в Param.level служит лишь для определения уровня по умолчанию, на котором должно быть определено значение параметра.

Если у параметра проставлено multiValueAllowed, то может быть несколько ParamValue с одинаковым paramId для передачи параметров, у которых может быть несколько значений

В зависимости от типа параметра Param.valueType, должны проставляться соответствующие поля в значении ParamValue.

Получить список параметров можно через специальный компонент, который ежедневно обновляет список параметров для каждого маркетплейса. Параметры динамические - они могут постоянно добавляться и удаляться из категории, когда их правит маркетплейс - тк это параметры маркетплейсов:

https://params.selsup.ru/knowledge/getParams?ozonCategoryId=91025609&wildberriesTypeId=105&avitoCategoryId=103

Поиск значений параметра

Список значений может отдаваться для параметров с Param.valueType: "ENUM" или "TEXT" В этом случае у них обязательно будет проставлен Param.displayType: "SUGGEST", который говорит о том, что список значений нужно получать из ответа метода:

https://options.selsup.ru/option/fetchOption?aliexpressCategoryId=201236503&paramId=60019&useCategoryOption=true&query=123&limit=10

Полученные значения необходимо подставлять в качестве option у ParamValue в карточке товара. У значения всегда есть name, а вот идентификатор может вообще отсутствовать или может соответствовать идентификаторам значений на маркетплейсах

Поиск категорий

Позволяет найти категории по запросу или фильтру. Категории SelSup могут связываться с категориями маркетплейсов, могут хранить параметры, которые автоматически проставляются в карточках при создании, если параметр не заполнен в модели. Идентификатор категории необходимо использовать для создания товара.

Поиск бренда

Позволяет найти бренды по запросу или фильтру. Идентификатор бренда необходимо использовать для создания товара.

Создание заказа с сайта

Вы можете передавать новые заказы в SelSup по API, например с вашего интернет-магазина. В запросе необходимо передавать информацию о заказе и список товаров в заказе. В качестве уникального ключа, для того, чтобы не создавать дубликаты заказов используйте externalOrderId - номер заказа на сайте интернет-магазина.

Поле organizationId нужно обязательно передавать, если у вас в аккаунте несколько организаций.

Для передачи товаров необходимо предварительно связать товары сайта, с товарами в SelSup, чтобы потом передавать productId - идентификатор товара в SelSup. Сделать это можно, импортировав все товары методом findProduct

В позиции заказа в товаре quantity обязательно нужно передавать, как и цену товара price.

Создание отгрузки на маркетплейс

Вы можете передавать новые заказы в SelSup по API, например с вашего интернет-магазина. В запросе необходимо передавать информацию о заказе и список товаров в заказе. В качестве уникального ключа, для того, чтобы не создавать дубликаты используется externalOrderId

Возможные ошибки

В результате отдается JSON заказа, с проставленным значение id

{
  "message": "error_empty_warehouse"
}

В случае ошибки отдается код ответа 400, а в теле отдается message - с кодом ошибки и messageParams - дополнительные параметры сообщения об ошибке. Любые коды, отличные от 200 - ошибка запроса

Сообщение Причина
error_empty_warehouse Не указан параметр warehouseId для заказа на маркетплейс type=FBM
error_no_organization Не указано поле organizationId, если в аккаунте несколько организаций
error_no_marketplace Не указан service, для type=FBS или type=FBM заказов
error_no_quantity_for_order_product Не указано количество товара у позиции заказа products[index].quantity
error_no_price_for_order_product Не указана цена у позиции заказа products[index].price

Получение списка заказов

С помощью запроса вы можете получить список заказов:

Параметр count отвечает за подсчет общего количества заказов по указанному запросу. Лучше передавать значение false, если вам не нужно знать общее количество заказов, тк подсчет количества может занимать продолжительное время, особенно если по запросу выбирается большое количество заказов. Лучше запрашивать постоянно изменяя параметр page, чтобы выбрать все данные, пока количество равно лимиту, который вы передаете в запросе.

Получение изменений заказов

Вы можете выбирать заказы, которые изменились с последней даты получения заказов. При этом мог изменится состав заказа, параметры заказа или статус. В заказе отдается поле modifiedDate по которому вы можете выбирать заказы. В фильтрах есть поле modifiedDate в котором указывается дата и отдаются заказы которые изменились начиная с указанной даты

curl "https://api.selsup.ru/api/order/find?type=FBS&modifiedDate=2024-06-20T15:00:00Z" \
  -H "Authorization: <token>"

Остатки в SelSup

Остатки товаров в SelSup привязываются к SKU - единице хранения на складе. Каждому товару присваивается свой номер SKU и в дальнейшем можно указать одинаковый SKU для нескольких разных товаров в SelSup.

Вы можете использовать две схемы хранения остатков в SelSup: 1)Когда на каждую штуку товара клеится отдельный уникальный код, по которому можно отслеживать всю историю товара и вы всегда можете отделить каждую единицу товара друг от друга. Данный уникальный стикер позволяет вам клеить его в удобное для быстрого поиска место товара, что существенно ускоряет сборку товаров на складе и их идентификацию - особенно если вы работаете с кодами маркировки честного знака 2)Когда остаток хранится просто к привязки к ячейке по штрих-коду. В этом случае в остатке записывается количество - сколько лежит определенного товара в данной ячейке.

Изменение остатков

Полный список полей

curl -X POST "https://api.selsup.ru/api/wms/changeStock?skuId=123&stock=5&warehouseId=123" \
  -H "Authorization: <token>"

В результате отдается 200 код ответа или 400 в случае ошибки

Позволяет для SKU изменить остатки товаров на складе. Работает для всех схем хранения, как с уникальными кодами, так и без них

Добавление функций в магазин приложений

Вы можете разрабатывать расширения SelSup, которые добавляют различные возможности в SelSup. Существует несколько возможных вариантов встраивания функций в SelSup

React-расширения

Вы можете разрабатывать расширения для SelSup реализуя функциональные React компоненты, которые встраиваются в различные места кабинета SelSup и взаимодействуют с API SelSup или API внешних сервисов. Внешнему сервису необходимо разрешить принимать запросы с домена selsup.ru. При этом вы можете использовать все стандартные компоненты SelSup и добавлять свои собственные

Клонируйте репозиторий демо-компонента SelSup и начните разрабатывать React-расширение.

https://github.com/SelSup/component

Backend интеграции

Вы можете реализовать на Java один из вариантов интеграции: маркетплейс (интеграция по остаткам, заказам, товарам, ценам) или служба доставки, реализовав соответствующий интерфейс SelSup. Код компонента попадет в основную ветку SelSup и будет доступен для использования вашим платным или бесплатным расширением. Вы сможете обновлять функции вашего расширения и изменения будут регулярно попадать в новые релизы SelSup.

Доставка

Методы для работы с интеграциями со службами доставки

Обновление статуса из сервиса доставки

query Parameters
orderId
required
string

Идентификатор заказа

Responses

Сохранить пункт доставки со склада

Request Body schema: application/json
required
warehouseDeliveryId
integer <int64>
point
string
service
string
Enum: "CDEK" "OWN_DELIVERY" "POST" "BOXBERRY" "DPD" "YANDEX" "DOSTAVISTA"
warehouseId
integer <int64>
organizationId
integer <int64>
tariffPriority
string
object
priorityByMode
boolean
additionalServices
string
sendZeroPrice
boolean
fakeName
string
hideOrganization
boolean
sellerOrganizationId
integer <int64>
object (Organization)

Данные об организации

object (DeliveryTariff)

Responses

Request samples

Content type
application/json
{
  • "warehouseDeliveryId": 0,
  • "point": "string",
  • "service": "CDEK",
  • "warehouseId": 0,
  • "organizationId": 0,
  • "tariffPriority": "string",
  • "priorities": {
    },
  • "priorityByMode": true,
  • "additionalServices": "string",
  • "sendZeroPrice": true,
  • "fakeName": "string",
  • "hideOrganization": true,
  • "sellerOrganizationId": 0,
  • "organization": {
    },
  • "additionalServiceForTariff": {
    }
}

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

Request Body schema: application/json
required
warehouseDeliveryId
integer <int64>
point
string
service
string
Enum: "CDEK" "OWN_DELIVERY" "POST" "BOXBERRY" "DPD" "YANDEX" "DOSTAVISTA"
warehouseId
integer <int64>
organizationId
integer <int64>
tariffPriority
string
object
priorityByMode
boolean
additionalServices
string
sendZeroPrice
boolean
fakeName
string
hideOrganization
boolean
sellerOrganizationId
integer <int64>
object (Organization)

Данные об организации

object (DeliveryTariff)

Responses

Request samples

Content type
application/json
{
  • "warehouseDeliveryId": 0,
  • "point": "string",
  • "service": "CDEK",
  • "warehouseId": 0,
  • "organizationId": 0,
  • "tariffPriority": "string",
  • "priorities": {
    },
  • "priorityByMode": true,
  • "additionalServices": "string",
  • "sendZeroPrice": true,
  • "fakeName": "string",
  • "hideOrganization": true,
  • "sellerOrganizationId": 0,
  • "organization": {
    },
  • "additionalServiceForTariff": {
    }
}

Создание заказа в сервисе доставки

Позволяет создать заказ в службе доставки из заказа SelSup. При этом в заказе должен быть проставлен пункт доставки

path Parameters
orderId
required
string

Идентификатор заказа

query Parameters
service
string

Сервис доставки

Request Body schema: application/json
string

Тариф для доставки

Responses

Request samples

Content type
application/json
"string"

Список доступных тарифов для заказа

query Parameters
service
required
string

Сервис доставки

orderId
required
string

Идентификатор заказа

Responses

Скачивает PDF файл со всеми накладными службы доставки

query Parameters
actual
string

Отображать только актуальные заказы - не закрытые

type
string

Тип заказа

organizations
Array of integers <int64> unique [ items <int64 > ]
query
string

Поисковый запрос для фильтрации заказов по номеру или названию

userId
integer <int32>
service
string

Фильтр заказа по маркетплейсу

status
string

Фильтр по статусу заказа

statuses
string

Фильтр по статусам заказа

withoutSupply
boolean
orderProductId
integer <int64>
productId
string

Фильтр по товару из заказа

hasCollectTask
boolean
organizationId
integer <int64>
updateInService
string

Заказы, которые стоят в очереди на изменение статуса на маркетплейсе

hasServiceError
string

Заказы с ошибкой обновления статуса на маркетплейсе

noLabel
string

Фильтрует заказы без этикетки

noMsOrder
string

Фильтрует по заказам не созданным в Моем складе

noMsDemand
string

Фильтрует по заказам с несозданными отгрузками в Моем складе

ids
string

Идентификаторы заказов для печати

supplyId
string

Поставка, в которой отгружается заказ

notCollected
string

Заказы, которые не собирались через SelSup

dbs
string

DBS заказы

express
string

Express заказы

fbs
string

FBS заказы

noWarehouse
string

Заказы без склада

closeDate
string

Фильтр по дате сборки заказа - конкретный день

modifiedDate
string

Фильтр по дате изменения заказа - статуса или любой информации о заказе

incomeId
string

id закупки из которого создан order

bindingOrderId
string

id заказа, которому делаем возврат

closeDateFrom
string

Фильтр по дате сборки заказа от - ISO

closeDateTo
string

Фильтр по дате сборки заказа до - ISO

orderDate
string
deliveryDate
string

Фильтр по дате доставки заказа

deliveryDateFrom
string

Фильтр по дате доставки заказа от

deliveryDateTo
string

Фильтр по дате доставки заказа до

forMoySklad
boolean
warehouseId
string

Фильтр по складу, с которого отгружается заказ

dateFrom
string

Фильтр по дате заказа - от

dateTo
string

Фильтр по дате заказа - до

markingStatus
string

Фильтр по статусу в честном знаке

deleted
string

Показать удаленные заказы

collectLabel
string

Только для печати в PDF. Признак необходимости распечатать сборочную этикетку для "умной ленты"

sortOrdersByDate
string

Только для печати в PDF. Признак необходимости распечатать сборочную этикетку для "умной ленты"

productLabel
string

Только для печати в PDF. Признак необходимости распечатать этикетку товара в ленте

servicesForLabel
string

Сервисы для которых нужна печать в PDF

infoLabel
string

Только для печати в PDF. Признак необходимости распечатать информационную этикетку для ленты заказов

grouped
string

Отдает сгруппированные позиции из заказов. Только для выгрузки в Excel

replaceSetByComponent
string

Заменяет в заказах комплекты на компоненты

collectDeliveryLabel
string

Только для печати в PDF. Признак необходимости распечатать накладную службы доставки для "умной ленты"

shippingServicesForLabel
string

Сервисы доставки для которых нужна печать накладной в PDF

orderId
string

Идентификатор заказа

hasVideoFixation
string

Идентификатор была ли видео фиксация

limit
string

Ограничение на количество записей. Максимальное значение - 500

page
string

Номер страницы начиная с 1

count
string

Возвратить в ответе общее количество записей

sortBy
string

Поле сортировки записей. Работает только при получении списка.

ascending
string

Порядок сортировки - по возрастанию?. Работает только при получении списка.

Responses

Отмена заказа в сервисе доставки

query Parameters
orderId
required
string

Идентификатор заказа

Responses

Расчет стоимости конкретного тарифа для указанных данных заказа с дополнительными услугами

query Parameters
tariffCode
required
string

Код тарифа для доставки

service
required
string

Сервис доставки

orderId
required
string

Идентификатор заказа

Responses

Добавить интеграцию с сервисом доставки

Позволяет добавить новую интеграцию с сервисом доставки

query Parameters
service
required
string

Сервис доставки

serviceClientId
required
string

Клиентский идентификатор

serviceSecret
string

Пароль/секрет

token
string

Токен авторизации

organizationId
required
string

Организация

Responses

Получить интеграцию с сервисом доставки

path Parameters
service
required
string

Сервис доставки

organizationId
required
string

Организация

Responses

Выбрать пункты доставки со складов

query Parameters
organizationId
required
integer <int64>
service
required
string
Enum: "CDEK" "OWN_DELIVERY" "POST" "BOXBERRY" "DPD" "YANDEX" "DOSTAVISTA"

Responses

Выбрать регионы доставки

query Parameters
query
required
string

Поисковый запрос для фильтрации регионов

service
required
string
Enum: "CDEK" "OWN_DELIVERY" "POST" "BOXBERRY" "DPD" "YANDEX" "DOSTAVISTA"
organizationId
required
integer <int64>

Responses

Выбрать пункты доставки

Позволяет получить пункты доставки для заказа по фильтру. Выбранный пункт необходимо после сохранить в заказ

query Parameters
postCode
string
country
string
region
string
city
string
query
string
forSupply
boolean
service
required
string
Enum: "CDEK" "OWN_DELIVERY" "POST" "BOXBERRY" "DPD" "YANDEX" "DOSTAVISTA"
organizationId
required
integer <int64>

Responses

Получить все возможные тарифы для выбранного сервиса доставки

query Parameters
service
required
string
Enum: "CDEK" "OWN_DELIVERY" "POST" "BOXBERRY" "DPD" "YANDEX" "DOSTAVISTA"
query
required
string

Responses

Выбрать город доставки

Метод используется для саджеста списка городов, для выбранной службы доставки. Можно пофильтровать города по региону

query Parameters
query
required
string

Поисковый запрос для фильтрации городов

region
required
string

Фильтр по региону - передается код региона из саджеста для выбранной службы доставки

service
required
string

Служба доставки

organizationId
required
string

Организация

Responses

Выбрать адрес получателя

Позволяет найти адрес получателя для заказа по фильтру. Выбранный пункт необходимо после сохранить в заказ

query Parameters
postCode
string
country
string
region
string
city
string
query
string
forSupply
boolean

Responses

Дополнительные услуги сервиса доставки

query Parameters
service
required
string

Сервис доставки

tariffCode
string

Код тарифа

Responses

Товары

Модели

Категории

Бренды

Производители

Фотосессии

Знания

Ключевые слова

Параметры

Цены

Акции

Реклама

Заказы

Заказы со своего склада (FBS)

Поставки

Возвраты

Сервис Мой склад

Покупатели

Закупки

Поставщики

Остатки

Склады

Аналитика

Гипотезы

Маркировка Честный знак

Документы

Экспорт

Импорт

Задачи

Настройки

Клиент

Билинг