Аналитика

Методы для работы с аналитическими отчетами: товарный, финансовый по всем маркетплейсам. Лимит запросов: 1 запрос в минуту

Базовый URL: https://api.selsup.ru

🔗 Получить отчет по-товарный Рука на пульсе

Получение данных из по-товарного Рука на пульсе по фильтру
GET /api/stat/productHandOnPulse

Параметры запроса QUERY

Название Тип Обязательный Описание
page integer Нет Номер страницы
limit integer Нет Максимальное количество записей
offset integer Нет Смещение от начала
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировка по возрастанию
timeZone integer Нет Параметр timeZone
productId integer Нет Идентификатор товара
productIds integer Нет Параметр productIds
query string Нет Поисковый запрос. Может содержать штрих-код, часть названия товара, внешние идентификаторы товаров Wildberries или Ozon
dateFrom Date Нет Параметр dateFrom
dateTo Date Нет Параметр dateTo
service "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" Нет Параметр service
organizationId integer Нет Параметр organizationId
date Date Нет Параметр date
ungroupedDaysCount integer Нет Параметр ungroupedDaysCount

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of ProductHandOnPulseReport Строки с результатом поиска
Структура ProductHandOnPulseReport
Поле Тип Описание
id integer ID записи отчета
clientId integer ID клиента
productId integer ID товара
service string Сервис
organizationId integer ID организации
productViewId integer ID представления товара (product_view_id)
productModelId integer ID модели товара
date string Дата отчета
profitFact number Фактическая прибыль по товару
profitPlan number Плановая прибыль по товару
priceWithSpp number Цена с учетом СПП (скидки постоянного покупателя)
price number Цена без СПП
spp number СПП
campaignBudgetPlan number Плановый бюджет кампании
campaignBudgetFact number Фактический бюджет кампании
promotionBudget number Бюджет на продвижение (ручное продвижение)
autoPromotionBudget number Бюджет на авто-продвижение
campaignCtrPercent number CTR рекламной кампании, %
drrPercent number DRR (затраты/выручка) в процентах
skuProfit number Прибыль по SKU
skuCostPrice number Себестоимость SKU
marginPercent number Маржинальность в процентах
abcRevenueGroup string ABC-группа по выручке
abcGrossProfitGroup string ABC-группа по валовой прибыли
salesAmountFact number Фактическая сумма продаж
salesCountFact integer Фактическое количество продаж
salesCountPlan integer Плановое количество продаж
sizes string Размеры товара (если применимо)
turnover number Оборачиваемость товара
daysBeforeSeasonEnd integer Количество дней до конца сезона
sortPlan number План сортировки (обновления ассортимента)
fbsCount integer Количество продаж по схеме FBS
fboCount integer Количество продаж по схеме FBO
openCardCount integer Количество открытий карточки товара
addToCartCount integer Количество добавлений в корзину
addToCartPercent number Процент добавлений в корзину относительно просмотров
ordersCount integer Количество заказов
ordersPercent number Конверсия в заказы, %
buyoutsCount integer Количество выкупов
buyoutsPercent number Конверсия в выкуп, %
product Product Товар - уникальный с точки зрения подтребительских свойств товар.
Структура Product
Поле Тип Описание
id integer Идентификатор товара. Проставляется автоматически
productType string Тип товара
name string Наименование товара внутреннее
deleted boolean Признак удаления товара
printName string Название товара для внешних сервисов. Если не задано, проставляется равным наименованию товара
realSize string Российский размер товара для одежды или характеристики для других категорий
vendorSize string Размер производителя или характеристики производителя. Не обязательно заполнять
size string Размер для одежды или характеристики для внешних сервисов. Должен быть уникальным в рамках цвета
wildberriesImtId integer Используется для категорий, у которых не предусмотрен размер
wildberriesStockCount integer Остатки товара на Вайлдбериз
ozonId integer Идентификатор товара Озон на сайте. SKU в озон
ozonRealFbs boolean Признак использования RealFbs для товара
ozonProductId integer Идентификатор товара Озон в кабинете API
wildberriesSizeId integer Идентификатор размера на Вайлдбериз
simalandId integer Уникальный идентификатор товара для Simaland
ozonArticle string Уникальный артикул товара для озон. Offer ID в озон
externalArticle string Уникальный артикул товара для стороннего сервиса
ozonStockCount integer Остаток товара на складах Озон
ozonStockBetweenWarehouses integer Остаток товара в Озон, которые перемещаются между складами
removeFbsStock boolean Не выгружать остатки товара на маркетплейсы
purchaseCurrency string Валюта закупочной цены товара
purchasePriceInCurrency number Цена закупки в валюте
deliveryCostInCurrency number Цена на доставку в валюте
versionId integer Поле нужно передавать при изменении,для предотвращения одновременной перезаписи
createdDate string Дата создания товара на МП
created string Дата создания товара в SelSup
createdUser string Пользователь, который создал товар
sourceIncomeItemId integer Идентификатор товара из заказа поставщика по данным которого был создан товар
sourceProductId integer Идентификатор товара, который копировали
ozonRequiredStock integer Расчитанное количество товара, для поставки на склад Озон
wildberriesRequiredStock integer Расчитанное количество товара, для поставки на склад Wildberries
wildberriesProfit number Профит с продажи товара на Вайлдбериз по FBM
wildberriesProfitFbs number Профит с продажи товара на Вайлдбериз по FBS
wildberriesOrderQuantity integer Количество заказов по FBO товара на Вайлдбериз за 2 недели
wildberriesSupplyingQuantity integer Поставляемое количество товара на Вайлдбериз по FBM заказам
wildberriesQuantityInWayToClient integer Поставляемое количество товара на Вайлдбериз по FBM заказам к клиенту
wildberriesQuantityInWayFromClient integer Поставляемое количество товара на Вайлдбериз по FBM заказам от клиента
wildberriesSaleQuantity integer Продажи товара на Вайлдбериз по FBM за 2 недели
wildberriesQuantityInWay integer Количество товаров на Вайлдбериз в пути
wildberriesNoSale boolean Признак неликвидного товара на Вайлдбериз
lastStockChange string Дата последнего изменения стока на Вайлдбериз по FBM
ozonOrderQuantity integer Количество заказов товара по FBO на Озон по FBM и FBS за 2 недели
ozonSupplyingQuantity integer Поставляемое количество товара на Озон по FBM
ozonProfit integer Чистая маржа продажи товара на Озон по FBM
instockQuantity integer Остатки товара на складах клиента
calculatedInStockQuantity integer Рассчитанный остаток
ozonFbsSku integer Идентификатор товара в Озон по FBS
ozonFboSku integer Идентификатор товара в Озон по FBO
sellerSku string Идентификатор товара на Amazon
clientId integer Идентификатор клиента
organizationId integer Идентификатор организации
productViewId integer Идентификатор цвета
view ProductView Цвет товара
Структура ProductView
Поле Тип Описание
color string Артикул цвета
wbArticle string Артикул карточки Wildberries
id integer Идентификатор цвета. Проставляется автоматически
images Array of ProductImage Список изображений товара
Структура ProductImage
Поле Тип Описание
videos Array of ProductVideo Список видео товара
Структура ProductVideo
Поле Тип Описание
productModelId integer Идентификатор модели
model ProductModel Модель товара - объединяет товары, различающиеся цветом и некоторыми характеристиками (например размер в одежде)
actual boolean Актуальность цвета - нужно ли его показывать в заказах поставщикам
mainImage ProductImage Изображение товара
mainImageId integer
mainImageUrl string Ссылка на основное изображение на маркетплейсе
imageUrls string Ссылка на изображения
image360Urls string Ссылка на изображения 360
wildberriesId integer Числовой идентификатор номенклатуры Wildberries, nmId
createdDate string Дата создания цвета
createdUser string Пользователь, создавший цвет
versionId integer Поле нужно передавать при изменении,для предотвращения одновременной перезаписи
clientId integer Идентификатор клиента
deleted boolean Признак удаления цвета
keywords string Ключевые слова - сейчас не используется, перенесены в модель
wildberriesRating number Рейтинг карточки на Вайлдбериз
wildberriesFeedbacks integer Количество отзывов на карточке на Вайлдбериз
wildberriesCardDoesNotOpen boolean Признак, что карточка не открывается на Вайлдбериз
wildberriesHasPhoto boolean Признак наличия фото на Wildberries
organizationId integer Организация карточки
params string JSON со значениями параметров цвета
values Array of ParamValue Значения параметров карточки. Отдаются при запросе модели, если передать params=true
Структура ParamValue
Поле Тип Описание
viewSourceId integer Оригинал цвета по SKU
sizes Array of Product Список размеров для цвета
Структура Product
Поле Тип Описание
hasChanges boolean Признак изменения информации о цвете и необходимости его обновить
viewWbArticle ProductView Цвет товара
viewVersionId integer
suzId string GTIN товара
cisType string Тип в национальном каталоге
notChangedStock integer Количество дней, в течении которых не менялся остаток товара
nationalCatalogFeedId integer Идентификатор создания карточки в национальном каталоге
wildberriesStatus string Статус создания карточки товара в Вайлдбериз
wildberriesMessage string Ошибка создания карточки товара в Вайлдбериз
wildberriesMessageParams string JSON параметров ошибки создания карточки товара в Вайлдбериз
nationalCatalogStatus string Статус создания карточки товара в Национальном каталоге
nationalCatalogGoodId integer Идентификатор товара в национальном каталоге
nationalCatalogMessage string Ошибка создания карточки товара в Национальном каталоге
nationalCatalogMessageParams string Параметры ошибки создания карточки товара в Национальном каталоге
ozonStatus string Статус создания карточки товара в Озон
ozonMessage string Ошибка создания карточки товара в Озон
ozonMessageParams string JSON параметры ошибки создания карточки товара в Озон
ozonTaskId integer Идентификатор задания по обновления или созданию карточки в Озон
wildberriesFbsOrdersQuantity integer Кол-во заказанных товаров на данной карточке WB по FBS за 2 недели
ozonFbsOrdersQuantity integer Кол-во заказанных товаров на данной карточке на Ozon по FBS за 2 недели
ymarketFbsOrdersQuantity integer Кол-во заказанных товаров на данной карточке на Яндекс Маркете по FBS за 2 недели
totalSupplyingQuantity integer Кол-во заказанных товаров на данной карточке за 2 недели
skuId integer Идентификатор единицы хранения товара на складе. Проставляется автоматически
sku Sku Stock Keeping Unit - Единица хранения товара на складе. Может быть связана с несколькими карточками товаров Product.id. При первом создании товара SKU создается автоматически, далее можно привязать несколько товаров - имеющих разный бренд/организацию на маркетплейсах к одному SKU.
Структура Sku
Поле Тип Описание
id integer
product Product Товар - уникальный с точки зрения подтребительских свойств товар.
productId integer
barcodes Array of ProductBarcode Штрих-коды товара
Структура ProductBarcode
Поле Тип Описание
id integer
barcode string
organizationId integer Организация, если client.barcodeUniqForOrg = false, то проставляется 0. Поле включено в уникальный ключ
clientId integer
productId integer
useInWildberries boolean Применим ли данный штрих-код для Вайлдбериз
useInOzon boolean Применим ли данный штрих-код для Озон
useInYandexMarket boolean Применим ли данный штрих-код для Yandex.Market
useInAliexpress boolean Применим ли данный штрих-код для Aliexpress
useInSberMegamarket boolean Применим ли данный штрих-код для Sber.MegaMarket
format string
params string JSON значений параметров для данного размера/характеристик
values Array of ParamValue Значения параметров карточки. Отдаются при запросе модели, если передать params=true
Структура ParamValue
Поле Тип Описание
paramId Обязательный integer Идентификатор параметра
paramName string Название параметра, для тех, у кого нет ID
option Option Значение перечислимого параметра
doubleValue number Числовое значение параметра
longValue integer Целочисленное значение параметра
booleanValue boolean Булево значение параметра
stringValue string Строковое значение параметра
dateValue string Значение параметра даты
service string Сервис
unit Unit Единица измерения
auto boolean Автоматически проставленное значение параметра
created integer Дата заполнения параметра
user string Пользователь, который заполнил параметр
group object Группа карточек. Используется на списке товаров, чтобы объединить разные размеры в одну строку
duplicates Array of Product Дубликаты карточки по остаткам. Отдаются только на списке товаров, если включена галочка Объединять дубликаты
Структура Product
Поле Тип Описание
id integer Идентификатор товара. Проставляется автоматически
productType string Тип товара
name Обязательный string Наименование товара внутреннее
deleted boolean Признак удаления товара
printName string Название товара для внешних сервисов. Если не задано, проставляется равным наименованию товара
realSize string Российский размер товара для одежды или характеристики для других категорий
vendorSize string Размер производителя или характеристики производителя. Не обязательно заполнять
size string Размер для одежды или характеристики для внешних сервисов. Должен быть уникальным в рамках цвета
wildberriesImtId integer Используется для категорий, у которых не предусмотрен размер
wildberriesStockCount integer Остатки товара на Вайлдбериз
ozonId integer Идентификатор товара Озон на сайте. SKU в озон
ozonRealFbs boolean Признак использования RealFbs для товара
ozonProductId integer Идентификатор товара Озон в кабинете API
wildberriesSizeId integer Идентификатор размера на Вайлдбериз
simalandId integer Уникальный идентификатор товара для Simaland
ozonArticle string Уникальный артикул товара для озон. Offer ID в озон
externalArticle string Уникальный артикул товара для стороннего сервиса
ozonStockCount integer Остаток товара на складах Озон
ozonStockBetweenWarehouses integer Остаток товара в Озон, которые перемещаются между складами
removeFbsStock boolean Не выгружать остатки товара на маркетплейсы
purchaseCurrency string Валюта закупочной цены товара
purchasePriceInCurrency number Цена закупки в валюте
deliveryCostInCurrency number Цена на доставку в валюте
versionId integer Поле нужно передавать при изменении,для предотвращения одновременной перезаписи
createdDate string Дата создания товара на МП
created string Дата создания товара в SelSup
createdUser string Пользователь, который создал товар
sourceIncomeItemId integer Идентификатор товара из заказа поставщика по данным которого был создан товар
sourceProductId integer Идентификатор товара, который копировали
ozonRequiredStock integer Расчитанное количество товара, для поставки на склад Озон
wildberriesRequiredStock integer Расчитанное количество товара, для поставки на склад Wildberries
wildberriesProfit number Профит с продажи товара на Вайлдбериз по FBM
wildberriesProfitFbs number Профит с продажи товара на Вайлдбериз по FBS
wildberriesOrderQuantity integer Количество заказов по FBO товара на Вайлдбериз за 2 недели
wildberriesSupplyingQuantity integer Поставляемое количество товара на Вайлдбериз по FBM заказам
wildberriesQuantityInWayToClient integer Поставляемое количество товара на Вайлдбериз по FBM заказам к клиенту
wildberriesQuantityInWayFromClient integer Поставляемое количество товара на Вайлдбериз по FBM заказам от клиента
wildberriesSaleQuantity integer Продажи товара на Вайлдбериз по FBM за 2 недели
wildberriesQuantityInWay integer Количество товаров на Вайлдбериз в пути
wildberriesNoSale boolean Признак неликвидного товара на Вайлдбериз
lastStockChange string Дата последнего изменения стока на Вайлдбериз по FBM
ozonOrderQuantity integer Количество заказов товара по FBO на Озон по FBM и FBS за 2 недели
ozonSupplyingQuantity integer Поставляемое количество товара на Озон по FBM
ozonProfit integer Чистая маржа продажи товара на Озон по FBM
instockQuantity integer Остатки товара на складах клиента
calculatedInStockQuantity integer Рассчитанный остаток
ozonFbsSku integer Идентификатор товара в Озон по FBS
ozonFboSku integer Идентификатор товара в Озон по FBO
sellerSku string Идентификатор товара на Amazon
clientId integer Идентификатор клиента
organizationId Обязательный integer Идентификатор организации
productViewId integer Идентификатор цвета
view object Цвет товара
suzId string GTIN товара
cisType string Тип в национальном каталоге
notChangedStock integer Количество дней, в течении которых не менялся остаток товара
nationalCatalogFeedId integer Идентификатор создания карточки в национальном каталоге
wildberriesStatus string Статус создания карточки товара в Вайлдбериз
wildberriesMessage string Ошибка создания карточки товара в Вайлдбериз
wildberriesMessageParams string JSON параметров ошибки создания карточки товара в Вайлдбериз
nationalCatalogStatus string Статус создания карточки товара в Национальном каталоге
nationalCatalogGoodId integer Идентификатор товара в национальном каталоге
nationalCatalogMessage string Ошибка создания карточки товара в Национальном каталоге
nationalCatalogMessageParams string Параметры ошибки создания карточки товара в Национальном каталоге
ozonStatus string Статус создания карточки товара в Озон
ozonMessage string Ошибка создания карточки товара в Озон
ozonMessageParams string JSON параметры ошибки создания карточки товара в Озон
ozonTaskId integer Идентификатор задания по обновления или созданию карточки в Озон
wildberriesFbsOrdersQuantity integer Кол-во заказанных товаров на данной карточке WB по FBS за 2 недели
ozonFbsOrdersQuantity integer Кол-во заказанных товаров на данной карточке на Ozon по FBS за 2 недели
ymarketFbsOrdersQuantity integer Кол-во заказанных товаров на данной карточке на Яндекс Маркете по FBS за 2 недели
totalSupplyingQuantity integer Кол-во заказанных товаров на данной карточке за 2 недели
skuId integer Идентификатор единицы хранения товара на складе. Проставляется автоматически
sku object Stock Keeping Unit - Единица хранения товара на складе. Может быть связана с несколькими карточками товаров Product.id. При первом создании товара SKU создается автоматически, далее можно привязать несколько товаров - имеющих разный бренд/организацию на маркетплейсах к одному SKU.
barcodes Array of object Штрих-коды товара
Структура object
Поле Тип Описание
params string JSON значений параметров для данного размера/характеристик
values Array of object Значения параметров карточки. Отдаются при запросе модели, если передать params=true
Структура object
Поле Тип Описание
group object Группа карточек. Используется на списке товаров, чтобы объединить разные размеры в одну строку
duplicates Array of object Дубликаты карточки по остаткам. Отдаются только на списке товаров, если включена галочка Объединять дубликаты
Структура object
Поле Тип Описание
hasChanges boolean Признак наличия изменений в товаре и ее нужно обновить при сохранении
ignoreDuplicate boolean Признак игнорирования дубликатов при создании
yandexMarketSku integer Идентификатор карточки товара на Yandex.Market
yandexMarketStockCount integer Остаток товара на складах Yandex.Market
yandexMarketProductId integer Идентификатор карточки товара на Yandex.Market
yandexMarketShopSku string SKU товара на Yandex.Market
groupId integer ID групповой карточки
yandexMarketStatus string Статус создания карточки товара на яндекс маркет
yandexMarketMessage string Сообщение при ошибке создания карточки товара на яндекс маркет
yandexMarketMessageParams string Параметры сообщения при создании товара в Яндекс.Маркет
sberArticle string Артикул товара на СберМегаМаркет
siteArticle string артикул товара на сайте
siteId string айди товара на сайте
leroyMerlinArticle string Артикул товара на Леруа Мерлен
ebayArticle string Артикул товара на Ebay
lamodaArticle string Артикул товара на Lamoda
lamodaSku string SKU товара на Lamoda
leroyMerlinId string Номер карточки на Леруа Мерлен
duplicate boolean Признак, что карточка является дубликатом. Отдается не для всех методов
ozonHasPhoto boolean Признак наличия фото на Ozon
aliexpressSku string SKU на Aliexpress
aliexpressStatus string Статус создания товара на Aliexpress
aliexpressMessage string Сообщение при создании товара на Aliexpress
aliexpressMessageParams string Параметры сообщения при создании товара на Aliexpress
moySkladId string ID товара в сервисе Мой Склад
moySkladType string Тип товара в сервисе Мой Склад
avitoId integer ID товара в сервисе Avito
moySkladLinkId string ID для ссылки на Мой Склад
moySkladStatus string Статус создания карточки товара в МойСклад
avitoStatus string Статус обьявления на Авито
moySkladMessage string Ошибка создания карточки товара в МойСклад
moySkladMessageParams string Параметры ошибки создания карточки товара в МойСклад
oneCId string Идентификатор товара в 1С
removeFbsStockOzon boolean Не передавать остатки товара по FBS на озон
removeFbsStockWb boolean Не передавать остатки товара по FBS на Wildberries
removeFbsStockAli boolean Не передавать остатки товара по FBS на Aliepress
removeFbsStockYm boolean Не передавать остатки товара по FBS на Яндекс.Маркет
removeFbsStockSber boolean Не передавать остатки товара по FBS на СберМегаМаркет
quantity integer Количество товара в заказах. Возвращается только в методах income/getProductsFromOrders или wms/findStock
incomeQuantity integer Количество товара в закупке без разделения по маркетплейсам
orderMinDate string Минимальная дата заказа. Возвращается только в методах income/getProductsFromOrders
expiredDate string Cрок годности товара - возвращается только в методах, wms/findStock
productionDate string Дата производства
stock integer Остаток товара на определенном складе - возвращается только в методах, wms/fetchStock
stocks object Остатки товара на складах - возвращается только в методах, wms/fetchStock
cell object Ячейка хранения товара на складе, в которой может храниться один или несколько товаров
reserved integer Остаток товара на определенном складе - возвращается только в методах, wms/fetchStock
calculatedStock integer Остаток наборов на определенном складе - возвращается только в методах, wms/fetchStock, product/findProduct, supply/findProductForOrder
price number Розничная цена товара
updatedPrice number Новая общая цена товара со скидкой. Только для методов обновления цены
priceWithoutDiscount number Розничная цена товара без учета скидки
updatedPriceWithoutDiscount number Измененная розничная цена товара без учета скидки. Принимается только в методах обновления цены
updatedDeliveryCost number Измененные прочие расходы товара Принимается только в методах обновления цены
updatedPurchasePrice number Измененная закупочная цена товара Принимается только в методах обновления цены
purchasePrice number Закупочная цена товара в руб.
isPurchasePriceUpdated boolean Признак, была ли изменена закупочная цена
isDeliveryCostUpdated boolean Признак, изменения прочих расходов на товар.
wholesalePrice number Оптовая цена товара
deliveryCost number Дополнительные расходы на доставку товара в руб. Добавляются к закупочной цене
ozonAverageExpenses number Расходы по продаже товара на Ozon
wildberriesAverageExpenses number Расходы по продаже товара на Wildberries
yandexMarketAverageExpenses number Расходы по продаже товара на ЯМ
wildberriesPrice number Текущая цена товара на Вайлдбериз со скидкой
wildberriesUpdatedPrice number Новая цена товара на Вайлдбериз со скидкиой.Только для методов изменения цены
wildberriesPriceWithoutDiscount number Текущая цена товара на Вайлдбериз без скидки
wildberriesUpdatedPriceWithoutDiscount number Новая цена товара на Вайлдбериз без скидки.Только для методов изменения цены
wildberriesSale integer Скидка товара на Вайлдбериз
aliexpressPrice number Текущая цена на Aliexpress со скидкой
aliexpressPriceWithoutDiscount number Текущая цена на Aliexpress без скидки.
aliexpressUpdatedPrice number Новая цена со скидкой на Aliexpress. Только для методов обновления цены
aliexpressUpdatedPriceWithoutDiscount number Новая цена без скидки на Aliexpress. Только для методов обновления цены
minPrice number Минимальная цена товара. Ниже этой цены нельзя выставлять цену на товар.Используется для Ozon при участии товара в акциях
ozonPrice number Текущая цена товара на Озон со скидкой
ozonPromotionPrice number Текущая акционная цена товара на Озон
ozonUpdatedPrice number Новая цена товара на Озон со скидкой.Только для методов изменения цены
ozonPriceWithoutDiscount number Текущая цена товара на Озон без скидки.
ozonUpdatedPriceWithoutDiscount number Новая цена Озон без скидки.Только для методов изменения цены
ozonAcquiringPercent number Максимальная комиссия за эквайринг OZON
leroyMerlinPrice number Текущая цена товара на LeroyMerlin
leroyMerlinUpdatedPrice number Новая цена товара на LeroyMerlin.Только для методов изменения цены
avitoPrice number Текущая цена товара на Avito
avitoUpdatedPrice number Новая цена товара на Avito.Только для методов изменения цены
ozonComisson number Комиссия товара на Озон FBM
sberMegaMarketPrice number Текущая цена на СберМегаМаркет со скидкой
sberMegaMarketUpdatedPrice number Новая цена со скидкой на СберМегаМаркет. Только для методов изменения цены
sberMegaMarketSupplyingQuantity integer Поставляемое количество товара на СберМегаМаркет по FBM заказам
yandexMarketPrice number Текущая цена на Яндекс.Маркет со скидкой
yandexMarketPriceWithoutDiscount number Текущая цена на Яндекс.Маркет без скидки
yandexMarketUpdatedPrice number Новая цена со скидкой на Яндекс.Маркет. Только для методов изменения цены
yandexMarketUpdatedPriceWithoutDiscount number Новая цена без скидки на Яндекс.Маркет. Только для методов изменения цены
yandexMarketSupplyingQuantity integer Поставляемое количество товара на Яндекс.Маркет по FBM заказам
oneCArticle string Уникальный артикул товара для 1c
salesExpensesOnMpPercent number Расходы по продажам на маркетплейсе, %
taxeRate number Установленый процент налога на товар, %
desiredMarginalityPercent number Желаемый % маржинальности
desiredProfitRub number Желаемая прибыль, руб.
additionalCost number Доп. расходы на товар без записи в Финансовую аналитику, руб.
sberMegaMarketId integer Карточка СберМегаМаркет
packWidth integer Ширина в упаковке мм. Имеет больший приоритет, чем значение в модели или категории, отдается на маркетплейсы
packHeight integer Высота в упаковке мм. Имеет больший приоритет, чем значение в модели или категории, отдается на маркетплейсы
packDepth integer Длина/глубина в упаковке мм. Имеет больший приоритет, чем значение в модели или категории, отдается на маркетплейсы
packWeight integer Вес в упаковке гр. Имеет больший приоритет, чем значение в модели или категории, отдается на маркетплейсы
numOfPiecesInBox integer Количество штук в коробе
lastWildberriesSaleDate string Дата последней продажи на Wildberries
lastWildberriesOrderDate string Дата последнего заказа на Wildberries
lastOzonSaleDate string Дата последней продажи на OZON
lastOzonOrderDate string Дата последнего заказа на OZON
totalOrdersCount integer Кол-во заказанных товаров на данной карточке по МП OZON + WB
totalFbsOrdersCount integer Кол-во заказанных товаров на данной карточке по FBS за 2 недели
wildberriesTotalOrdersCount integer Кол-во заказанных товаров на данной карточке по МП WB
ignoreFbsWarehouses string Список идентификаторов складов маркетплейсов через запятую - на которые не отправлять остатки по FBS
fbsWarehouses string Список идентификаторов складов маркетплейсов через запятую - на которые не отправлять остатки по FBS
minFbsStock integer Минимальный остаток - если меньше, то ставим 0
maxFbsStock integer Максимальный остаток - если больше, то ставим его
wildberriesSaleLogistic number Логистика WB, руб.
wildberriesReturnLogistic number Обратная логистика WB, руб.
wildberriesWarehouseRatio number Коэффициент склада WB в %
wildberriesComission number Комиссия WB, %
ozonSaleLogistic number Логистика Ozon, руб.
ozonReturnLogistic number Обратная логистика Ozon, руб.
ozonCommission number Комиссия Ozon, %
maxDeliveryToPickupPoint number Максимальная стоимость доставки до места выдачи, руб.
ozonPurchasePercent number Процент выкупа Ozon, %
wildberriesPurchasePercent number Процент выкупа WB, %
minMarginality number Настройки репрайсера Min % маржинальности
maxMarginality number Настройки репрайсера Max % маржинальности
minProfit number Настройки репрайсера Min прибыль, руб.
maxProfit number Настройки репрайсера Max прибыль, руб.
minPriceWithDiscount number Настройки репрайсера Min цена со скидкой, руб.
maxPriceWithDiscount number Настройки репрайсера Max цена со скидкой, руб.
oldWildberriesPriceWithDiscount number При установки через репрайсер скидку, заполняется, после удаление скидки, возвращает как основная цена и значение затирается
oldWildberriesSale integer Скидка товара на Вайлдбериз до установки новой по репрайсеру, при возврате нужно проставлять null
wildberriesPromoProfit number Расчетный профит по акциям WB нужен для определения какая акция выгодная
wildberriesMarginality number Расчетная маржинальность по WB
wildberriesPromoId integer Идентификатор акции на ВБ
oldWildberriesPromoSalePercent number Расчетная маржинальность по WB
oldWildberriesPromoPriceWithDiscount number Расчетная маржинальность по WB
endWildberriesPriceWithSppConfig number Цена для пользователя конечная с СПП.
ozonFbsCommission number Комиссия ОЗОН ФБС
ozonFboCommission number Комиссия ОЗОН ФБО
wbTotalSalesCount integer Общее кол-во продажи - возвраты, начиная с подсчета процента выкупа по ВБ
ozonTotalSalesCount integer Общее кол-во продажи - возвраты, начиная с подсчета процента выкупа по OZON
sberTotalSalesCount integer Общее кол-во продажи - возвраты, начиная с подсчета процента выкупа по SBER
yandexTotalSalesCount integer Общее кол-во продажи - возвраты, начиная с подсчета процента выкупа по YANDEX
fboStockCount integer Остаток ФБО по выбранным складам/регионам
fbsStockCount integer Остаток ФБC для планирования поставок)
fboSupplyQuantity integer Количество поставляемого товара по выбранным складам/регионам
fboSales integer Кол-во продаж FBO по складам/регионам для планирования поставок
fbsSales integer Кол-во продаж FBS по складам/регионам для планирования поставок
fboOrders integer Кол-во заказов FBO по складам/регионам для планирования поставок
fbsOrders integer Кол-во заказов FBS по складам/регионам для планирования поставок
recommendPlan number Кол-во товара для добавления к заказу
planCorrectionFactor number Коэффициент коррекции для планирования поставок. На это значение умножается рассчитанное количество товара для поставки
orderBefore integer До какого времени должен быть сделан заказ от 1 до 24
daysBeforeSupply integer Кол-во дней до поставки. Через сколько дней с момента заказа ориентировочно будет поставка товаров
supplyPlanDays integer На сколько дней планировать остаток
warehouseIdForSupplyReport integer Id склада на который нужно поставить рассчитанные товары. Используется только в планировании поставок
warehouseNameForSupplyReport string Название склада на который нужно поставить рассчитанные товары. Используется только в планировании поставок
manager string Поле менеджера
cellId integer
percentForParticipationPromoOrAdvertising integer Закладываемый % для участия в акциях или рекламе
selsupLink string
tempId integer Временный id используется для быстрого импорта
category object Категория
walmartSku string SKU товара на Walmart
walmartId string Id товара на Walmart (WPID)
findirTips object Советы задачника (тип задачи - текст совета)
woocomSku string SKU товара на WooCommerce
woocomId integer Id товара на WooCommerce
commissions string JSON с комиссиями из разных маркетплейсов
anyArticle string
site string
anyLink string
emptyBarcodes boolean
calculatedInstockQuantity integer
hasChanges boolean Признак наличия изменений в товаре и ее нужно обновить при сохранении
ignoreDuplicate boolean Признак игнорирования дубликатов при создании
yandexMarketSku integer Идентификатор карточки товара на Yandex.Market
yandexMarketStockCount integer Остаток товара на складах Yandex.Market
yandexMarketProductId integer Идентификатор карточки товара на Yandex.Market
yandexMarketShopSku string SKU товара на Yandex.Market
groupId integer ID групповой карточки
yandexMarketStatus string Статус создания карточки товара на яндекс маркет
yandexMarketMessage string Сообщение при ошибке создания карточки товара на яндекс маркет
yandexMarketMessageParams string Параметры сообщения при создании товара в Яндекс.Маркет
sberArticle string Артикул товара на СберМегаМаркет
siteArticle string артикул товара на сайте
siteId string айди товара на сайте
leroyMerlinArticle string Артикул товара на Леруа Мерлен
ebayArticle string Артикул товара на Ebay
lamodaArticle string Артикул товара на Lamoda
lamodaSku string SKU товара на Lamoda
leroyMerlinId string Номер карточки на Леруа Мерлен
duplicate boolean Признак, что карточка является дубликатом. Отдается не для всех методов
ozonHasPhoto boolean Признак наличия фото на Ozon
aliexpressSku string SKU на Aliexpress
aliexpressStatus string Статус создания товара на Aliexpress
aliexpressMessage string Сообщение при создании товара на Aliexpress
aliexpressMessageParams string Параметры сообщения при создании товара на Aliexpress
moySkladId string ID товара в сервисе Мой Склад
moySkladType string Тип товара в сервисе Мой Склад
avitoId integer ID товара в сервисе Avito
moySkladLinkId string ID для ссылки на Мой Склад
moySkladStatus string Статус создания карточки товара в МойСклад
avitoStatus string Статус обьявления на Авито
moySkladMessage string Ошибка создания карточки товара в МойСклад
moySkladMessageParams string Параметры ошибки создания карточки товара в МойСклад
oneCId string Идентификатор товара в 1С
removeFbsStockOzon boolean Не передавать остатки товара по FBS на озон
removeFbsStockWb boolean Не передавать остатки товара по FBS на Wildberries
removeFbsStockAli boolean Не передавать остатки товара по FBS на Aliepress
removeFbsStockYm boolean Не передавать остатки товара по FBS на Яндекс.Маркет
removeFbsStockSber boolean Не передавать остатки товара по FBS на СберМегаМаркет
quantity integer Количество товара в заказах. Возвращается только в методах income/getProductsFromOrders или wms/findStock
incomeQuantity integer Количество товара в закупке без разделения по маркетплейсам
orderMinDate string Минимальная дата заказа. Возвращается только в методах income/getProductsFromOrders
expiredDate string Cрок годности товара - возвращается только в методах, wms/findStock
productionDate string Дата производства
stock integer Остаток товара на определенном складе - возвращается только в методах, wms/fetchStock
stocks object Остатки товара на складах - возвращается только в методах, wms/fetchStock
cell Cell Ячейка хранения товара на складе, в которой может храниться один или несколько товаров
Структура Cell
Поле Тип Описание
id integer Идентификатор ячейки
warehouseId integer Склад к которому относится ячейка
passageId integer Проход на складе, к которому относится ячейка. Может соджержать название этажа и пр
shelfId integer Полка стеллажа, к которой относится ячейка
rackId integer Стеллаж, к которому относится ячейка
name string Название ячейки. По умолчанию формируется автоматически
fullName string Полное название ячейки из названий прохода, стелажа, полки и ячейки
sortName string Название для сортировки ячейки из названий прохода, стелажа, полки и ячейки
barcode string Уникальный в рамках клиента штрих-код ячейки для идентификации ячейки с помощью сканера штрих-кода. Присваивается автоматически при создании ячейки
deleted boolean Признак того, что ячейка удалена
width integer Ширина ячейки для определения товаров, которые можно положить в нее
height integer Высота ячейки для определения товаров, которые можно положить в нее
depth integer Глубина ячейки для определения товаров, которые можно положить в нее
clientId integer Клиент которому принадлежит ячейка. Проставляется автоматически
lastInventoryId integer Идентификатор последней инвентаризации
type string Тип ячейки: NORMAL, NO_PLACE - не разложенные, REFUND - для возвратов
reserved integer Остаток товара на определенном складе - возвращается только в методах, wms/fetchStock
calculatedStock integer Остаток наборов на определенном складе - возвращается только в методах, wms/fetchStock, product/findProduct, supply/findProductForOrder
price number Розничная цена товара
updatedPrice number Новая общая цена товара со скидкой. Только для методов обновления цены
priceWithoutDiscount number Розничная цена товара без учета скидки
updatedPriceWithoutDiscount number Измененная розничная цена товара без учета скидки. Принимается только в методах обновления цены
updatedDeliveryCost number Измененные прочие расходы товара Принимается только в методах обновления цены
updatedPurchasePrice number Измененная закупочная цена товара Принимается только в методах обновления цены
purchasePrice number Закупочная цена товара в руб.
isPurchasePriceUpdated boolean Признак, была ли изменена закупочная цена
isDeliveryCostUpdated boolean Признак, изменения прочих расходов на товар.
wholesalePrice number Оптовая цена товара
deliveryCost number Дополнительные расходы на доставку товара в руб. Добавляются к закупочной цене
ozonAverageExpenses number Расходы по продаже товара на Ozon
wildberriesAverageExpenses number Расходы по продаже товара на Wildberries
yandexMarketAverageExpenses number Расходы по продаже товара на ЯМ
wildberriesPrice number Текущая цена товара на Вайлдбериз со скидкой
wildberriesUpdatedPrice number Новая цена товара на Вайлдбериз со скидкиой.Только для методов изменения цены
wildberriesPriceWithoutDiscount number Текущая цена товара на Вайлдбериз без скидки
wildberriesUpdatedPriceWithoutDiscount number Новая цена товара на Вайлдбериз без скидки.Только для методов изменения цены
wildberriesSale integer Скидка товара на Вайлдбериз
aliexpressPrice number Текущая цена на Aliexpress со скидкой
aliexpressPriceWithoutDiscount number Текущая цена на Aliexpress без скидки.
aliexpressUpdatedPrice number Новая цена со скидкой на Aliexpress. Только для методов обновления цены
aliexpressUpdatedPriceWithoutDiscount number Новая цена без скидки на Aliexpress. Только для методов обновления цены
minPrice number Минимальная цена товара. Ниже этой цены нельзя выставлять цену на товар.Используется для Ozon при участии товара в акциях
ozonPrice number Текущая цена товара на Озон со скидкой
ozonPromotionPrice number Текущая акционная цена товара на Озон
ozonUpdatedPrice number Новая цена товара на Озон со скидкой.Только для методов изменения цены
ozonPriceWithoutDiscount number Текущая цена товара на Озон без скидки.
ozonUpdatedPriceWithoutDiscount number Новая цена Озон без скидки.Только для методов изменения цены
ozonAcquiringPercent number Максимальная комиссия за эквайринг OZON
leroyMerlinPrice number Текущая цена товара на LeroyMerlin
leroyMerlinUpdatedPrice number Новая цена товара на LeroyMerlin.Только для методов изменения цены
avitoPrice number Текущая цена товара на Avito
avitoUpdatedPrice number Новая цена товара на Avito.Только для методов изменения цены
ozonComisson number Комиссия товара на Озон FBM
sberMegaMarketPrice number Текущая цена на СберМегаМаркет со скидкой
sberMegaMarketUpdatedPrice number Новая цена со скидкой на СберМегаМаркет. Только для методов изменения цены
sberMegaMarketSupplyingQuantity integer Поставляемое количество товара на СберМегаМаркет по FBM заказам
yandexMarketPrice number Текущая цена на Яндекс.Маркет со скидкой
yandexMarketPriceWithoutDiscount number Текущая цена на Яндекс.Маркет без скидки
yandexMarketUpdatedPrice number Новая цена со скидкой на Яндекс.Маркет. Только для методов изменения цены
yandexMarketUpdatedPriceWithoutDiscount number Новая цена без скидки на Яндекс.Маркет. Только для методов изменения цены
yandexMarketSupplyingQuantity integer Поставляемое количество товара на Яндекс.Маркет по FBM заказам
oneCArticle string Уникальный артикул товара для 1c
salesExpensesOnMpPercent number Расходы по продажам на маркетплейсе, %
taxeRate number Установленый процент налога на товар, %
desiredMarginalityPercent number Желаемый % маржинальности
desiredProfitRub number Желаемая прибыль, руб.
additionalCost number Доп. расходы на товар без записи в Финансовую аналитику, руб.
sberMegaMarketId integer Карточка СберМегаМаркет
packWidth integer Ширина в упаковке мм. Имеет больший приоритет, чем значение в модели или категории, отдается на маркетплейсы
packHeight integer Высота в упаковке мм. Имеет больший приоритет, чем значение в модели или категории, отдается на маркетплейсы
packDepth integer Длина/глубина в упаковке мм. Имеет больший приоритет, чем значение в модели или категории, отдается на маркетплейсы
packWeight integer Вес в упаковке гр. Имеет больший приоритет, чем значение в модели или категории, отдается на маркетплейсы
numOfPiecesInBox integer Количество штук в коробе
lastWildberriesSaleDate string Дата последней продажи на Wildberries
lastWildberriesOrderDate string Дата последнего заказа на Wildberries
lastOzonSaleDate string Дата последней продажи на OZON
lastOzonOrderDate string Дата последнего заказа на OZON
totalOrdersCount integer Кол-во заказанных товаров на данной карточке по МП OZON + WB
totalFbsOrdersCount integer Кол-во заказанных товаров на данной карточке по FBS за 2 недели
wildberriesTotalOrdersCount integer Кол-во заказанных товаров на данной карточке по МП WB
ignoreFbsWarehouses string Список идентификаторов складов маркетплейсов через запятую - на которые не отправлять остатки по FBS
fbsWarehouses string Список идентификаторов складов маркетплейсов через запятую - на которые не отправлять остатки по FBS
minFbsStock integer Минимальный остаток - если меньше, то ставим 0
maxFbsStock integer Максимальный остаток - если больше, то ставим его
wildberriesSaleLogistic number Логистика WB, руб.
wildberriesReturnLogistic number Обратная логистика WB, руб.
wildberriesWarehouseRatio number Коэффициент склада WB в %
wildberriesComission number Комиссия WB, %
ozonSaleLogistic number Логистика Ozon, руб.
ozonReturnLogistic number Обратная логистика Ozon, руб.
ozonCommission number Комиссия Ozon, %
maxDeliveryToPickupPoint number Максимальная стоимость доставки до места выдачи, руб.
ozonPurchasePercent number Процент выкупа Ozon, %
wildberriesPurchasePercent number Процент выкупа WB, %
minMarginality number Настройки репрайсера Min % маржинальности
maxMarginality number Настройки репрайсера Max % маржинальности
minProfit number Настройки репрайсера Min прибыль, руб.
maxProfit number Настройки репрайсера Max прибыль, руб.
minPriceWithDiscount number Настройки репрайсера Min цена со скидкой, руб.
maxPriceWithDiscount number Настройки репрайсера Max цена со скидкой, руб.
oldWildberriesPriceWithDiscount number При установки через репрайсер скидку, заполняется, после удаление скидки, возвращает как основная цена и значение затирается
oldWildberriesSale integer Скидка товара на Вайлдбериз до установки новой по репрайсеру, при возврате нужно проставлять null
wildberriesPromoProfit number Расчетный профит по акциям WB нужен для определения какая акция выгодная
wildberriesMarginality number Расчетная маржинальность по WB
wildberriesPromoId integer Идентификатор акции на ВБ
oldWildberriesPromoSalePercent number Расчетная маржинальность по WB
oldWildberriesPromoPriceWithDiscount number Расчетная маржинальность по WB
endWildberriesPriceWithSppConfig number Цена для пользователя конечная с СПП.
ozonFbsCommission number Комиссия ОЗОН ФБС
ozonFboCommission number Комиссия ОЗОН ФБО
wbTotalSalesCount integer Общее кол-во продажи - возвраты, начиная с подсчета процента выкупа по ВБ
ozonTotalSalesCount integer Общее кол-во продажи - возвраты, начиная с подсчета процента выкупа по OZON
sberTotalSalesCount integer Общее кол-во продажи - возвраты, начиная с подсчета процента выкупа по SBER
yandexTotalSalesCount integer Общее кол-во продажи - возвраты, начиная с подсчета процента выкупа по YANDEX
fboStockCount integer Остаток ФБО по выбранным складам/регионам
fbsStockCount integer Остаток ФБC для планирования поставок)
fboSupplyQuantity integer Количество поставляемого товара по выбранным складам/регионам
fboSales integer Кол-во продаж FBO по складам/регионам для планирования поставок
fbsSales integer Кол-во продаж FBS по складам/регионам для планирования поставок
fboOrders integer Кол-во заказов FBO по складам/регионам для планирования поставок
fbsOrders integer Кол-во заказов FBS по складам/регионам для планирования поставок
recommendPlan number Кол-во товара для добавления к заказу
planCorrectionFactor number Коэффициент коррекции для планирования поставок. На это значение умножается рассчитанное количество товара для поставки
orderBefore integer До какого времени должен быть сделан заказ от 1 до 24
daysBeforeSupply integer Кол-во дней до поставки. Через сколько дней с момента заказа ориентировочно будет поставка товаров
supplyPlanDays integer На сколько дней планировать остаток
warehouseIdForSupplyReport integer Id склада на который нужно поставить рассчитанные товары. Используется только в планировании поставок
warehouseNameForSupplyReport string Название склада на который нужно поставить рассчитанные товары. Используется только в планировании поставок
manager string Поле менеджера
cellId integer
percentForParticipationPromoOrAdvertising integer Закладываемый % для участия в акциях или рекламе
selsupLink string
tempId integer Временный id используется для быстрого импорта
category Category Категория
Структура Category
Поле Тип Описание
categoryId integer Идентификатор категории. Проставляется автоматически
name string Наименование категории
deleted boolean Признак удаленных категорий
parentId integer Идентификатор родительской категории
clientId integer Идентификатор клиента
marked boolean Маркируется ли категория
categoryClass string Группы категорий Честного знака
wildberriesType WildberriesType Предмет Вайлдбериз
wildberriesCategoryId integer Идентификатор категории Wildberries, совпадает с ID категории на самом Wildberries
wildberriesFbmCommission number Комиссия по тарифу FBM
wildberriesFbwCommission number Комиссия по тарифу FBW
wildberriesFbsCommission number Комиссия по тарифу FBS
wildberriesDbsCommission number Комиссия по тарифу DBS
wildberriesEdbsCommission number Комиссия по тарифу EDBS
wildberriesCAndCCommission number Комиссия по тарифу C&C
wildberriesBookingCommission number Комиссия за бронирование
ozonDescriptionCategoryId integer Идентификатор категории на Ozon. Строится из ID категории + ID типа на Ozon
yandexMarketCategoryId integer Идентификатор категории в Яндекс.Маркет. Совпадает с идентификатором категории на самом Яндекс.Маркет
yandexMarketCategory YandexMarketCategory Категория Яндекс.Маркета
ozonDescriptionCategory OzonDescriptionCategory Категория Озон
ozonCommission number Комиссия озона.
tnved Tnved Код ТНВЭД
tnvedId integer Идентификатор ТНВЭД
laundry string Правила ухода за вещами. Разделяются запятыми
params string JSON значений параметров для категории
namePattern string Шаблон названий категории
aliexpressCategory AliexpressCategory Категория Aliexpress
aliexpressCategoryId integer Идентификатор категории на самом Aliexpress
avitoCategory AvitoCategory Категория Авито
avitoCategoryId integer Идентификатор категории на самом Avito
packDepth integer Глубина упаковки в мм. Проставляется всем товарам в категории
packWidth integer Ширина упаковки в мм. Проставляется всем товарам в категории
packHeight integer Высота упаковки в мм. Проставляется всем товарам в категории
packWeight integer Вес упаковки в граммах. Проставляется всем товарам в категории
hasSize boolean Признак разделения товаров в категории по размеру. Меняет вид редактора карточки
hasColor boolean Признак разделения товаров в категории по цвету. Меняет вид редактора карточки
autoName boolean Автоматически формировать названия товаров в категории
removeFbsStock boolean Не передавать остатки товаров по FBS для товаров из этой категории
oneCId string Идентификатор категории в 1С
externalId string Идентификатор категории на сайте
moySkladId string Идентификатор категории в сервисе МойСклад
useClientParams boolean Показывать пользовательские параметры в категории
requiredExpirationDate boolean Является ли срок годности обязательным параметром
walmartSku string SKU товара на Walmart
walmartId string Id товара на Walmart (WPID)
findirTips object Советы задачника (тип задачи - текст совета)
woocomSku string SKU товара на WooCommerce
woocomId integer Id товара на WooCommerce
commissions string JSON с комиссиями из разных маркетплейсов
anyArticle string
site string
anyLink string
emptyBarcodes boolean
calculatedInstockQuantity integer
article string Артикул
warehouseStocks Array of WarehouseStock Остатки по складам
Структура WarehouseStock
Поле Тип Описание
warehouseId integer
warehouseName string
warehouseRegion string
stockCount integer
dateTruncated string Дата отчета для отображения на фронте
period string Тип отчета - дневной или месячный
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  page: '1',
  limit: '100',
  offset: '0',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  timeZone: '1',
  productId: '123',
  productIds: '',
  query: 'Пример query',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  service: 'NONE',
  organizationId: 'АО "Торговый дом"',
  date: '2024-01-15',
  ungroupedDaysCount: '42',
};

const response = await axios.get('https://api.selsup.ru/api/stat/productHandOnPulse',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  page?: number;
  limit?: number;
  offset?: number;
  sortBy?: string;
  ascending?: string;
  timeZone?: number;
  productId?: number;
  productIds?: string;
  query?: string;
  dateFrom?: string;
  dateTo?: string;
  service?: string;
  organizationId?: number;
  date?: string;
  ungroupedDaysCount?: number;
}

const params: QueryParams = {
  page: '1',
  limit: '100',
  offset: '0',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  timeZone: '1',
  productId: '123',
  productIds: '',
  query: 'Пример query',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  service: 'NONE',
  organizationId: 'АО "Торговый дом"',
  date: '2024-01-15',
  ungroupedDaysCount: '42',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/productHandOnPulse',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'page': '1',
    'limit': '100',
    'offset': '0',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'timeZone': '1',
    'productId': '123',
    'productIds': '',
    'query': 'Пример query',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'service': 'NONE',
    'organizationId': 'АО "Торговый дом"',
    'date': '2024-01-15',
    'ungroupedDaysCount': '42',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/productHandOnPulse',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/productHandOnPulse?page=1&limit=100&offset=0&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&timeZone=1&productId=123&productIds=&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&service=NONE&organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&date=2024-01-15&ungroupedDaysCount=42", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/productHandOnPulse?page=1&limit=100&offset=0&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&timeZone=1&productId=123&productIds=&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&service=NONE&organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&date=2024-01-15&ungroupedDaysCount=42"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'page' => '1',
    'limit' => '100',
    'offset' => '0',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'timeZone' => '1',
    'productId' => '123',
    'productIds' => '',
    'query' => 'Пример query',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'service' => 'NONE',
    'organizationId' => 'АО "Торговый дом"',
    'date' => '2024-01-15',
    'ungroupedDaysCount' => '42',
];

$url = 'https://api.selsup.ru/api/stat/productHandOnPulse?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/productHandOnPulse?page=1&limit=100&offset=value&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&timeZone=1&productId=123&productIds=&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&service=NONE&organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&date=2024-01-15&ungroupedDaysCount=42' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Обновить по-товарный отчет Рука на пульсе

Обновление по-товарный отчет Рука на пульсе
PUT /api/stat/productHandOnPulse

Тело запроса *Обязательно

Content-Type: application/json
Тип данных: ProductHandOnPulseReport
Структура элемента:
ПолеТипОписание
id integer ID записи отчета
clientId integer ID клиента
productId integer ID товара
service string Сервис
organizationId integer ID организации
productViewId integer ID представления товара (product_view_id)
productModelId integer ID модели товара
date string Дата отчета
profitFact number Фактическая прибыль по товару
profitPlan number Плановая прибыль по товару
priceWithSpp number Цена с учетом СПП (скидки постоянного покупателя)
price number Цена без СПП
spp number СПП
campaignBudgetPlan number Плановый бюджет кампании
campaignBudgetFact number Фактический бюджет кампании
promotionBudget number Бюджет на продвижение (ручное продвижение)
autoPromotionBudget number Бюджет на авто-продвижение
campaignCtrPercent number CTR рекламной кампании, %
drrPercent number DRR (затраты/выручка) в процентах
skuProfit number Прибыль по SKU

Тело ответа

✓ 200 OK
Тип: object
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const response = await axios.put('https://api.selsup.ru/api/stat/productHandOnPulse',
  [
    {
      "id": "Иванович",
      "clientId": 123,
      "productId": 123,
      "service": "NONE",
      "organizationId": "АО \"Торговый дом\"",
      "productViewId": 123,
      "productModelId": 123,
      "date": "2024-01-15",
      "profitFact": 1,
      "profitPlan": 1
    }
  ],
  {
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

const response = await axios.put<any>('https://api.selsup.ru/api/stat/productHandOnPulse',
  [
    {
      "id": "Иванович",
      "clientId": 123,
      "productId": 123,
      "service": "NONE",
      "organizationId": "АО \"Торговый дом\"",
      "productViewId": 123,
      "productModelId": 123,
      "date": "2024-01-15",
      "profitFact": 1,
      "profitPlan": 1
    }
  ],
  {
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

response = requests.put(
    'https://api.selsup.ru/api/stat/productHandOnPulse',
    headers=headers,
    json=[
    {
        'id': 'Иванович',
        'clientId': 123,
        'productId': 123,
        'service': 'NONE',
        'organizationId': 'АО \'Торговый дом\'',
        'productViewId': 123,
        'productModelId': 123,
        'date': '2024-01-15',
        'profitFact': 1,
        'profitPlan': 1
    }
]
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    payload := map[string]interface{}[
        {
                `id`: `Иванович`,
                `clientId`: 123,
                `productId`: 123,
                `service`: `NONE`,
                `organizationId`: `АО \`Торговый дом\``,
                `productViewId`: 123,
                `productModelId`: 123,
                `date`: `2024-01-15`,
                `profitFact`: 1,
                `profitPlan`: 1
        }
]
    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("put", "https://api.selsup.ru/api/stat/productHandOnPulse", bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/productHandOnPulse"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .put(HttpRequest.BodyPublishers.ofString(
        "[{\"id\":\"Иванович\",\"clientId\":123,\"productId\":123,\"service\":\"NONE\",\"organizationId\":\"АО \\"Торговый дом\\"\",\"productViewId\":123,\"productModelId\":123,\"date\":\"2024-01-15\",\"profitFact\":1,\"profitPlan\":1}]"
    ))
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.selsup.ru/api/stat/productHandOnPulse',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'put',
    CURLOPT_POSTFIELDS => json_encode([
    {
        'id': 'Иванович',
        'clientId': 123,
        'productId': 123,
        'service': 'NONE',
        'organizationId': 'АО \'Торговый дом\'',
        'productViewId': 123,
        'productModelId': 123,
        'date': '2024-01-15',
        'profitFact': 1,
        'profitPlan': 1
    }
]),
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X put \
  'https://api.selsup.ru/api/stat/productHandOnPulse' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '[
  {
    "id": "Иванович",
    "clientId": 123,
    "productId": 123,
    "service": "NONE",
    "organizationId": "АО \"Торговый дом\"",
    "productViewId": 123,
    "productModelId": 123,
    "date": "2024-01-15",
    "profitFact": 1,
    "profitPlan": 1
  }
]'

🔗 Сохранить план продаж

Метод сохраняет план продаж
POST /api/stat/updateSalePlanReport

Тело запроса *Обязательно

Content-Type: application/json
Тип данных: PlanSales
Структура элемента:
ПолеТипОписание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
id integer
clientId integer
organizationId integer
date string
categoryId integer
viewId integer

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: PlanSales
Элементы массива
Поле Тип Описание
shortName string Нет Сокращенное название организации.
categoryName string Нет Название категории.
brandName string Нет Название бренда.
name string Нет Название товара
viewWildberriesId integer Нет Карточка Wildberries
article string Нет Артикул
serviceArticle string Нет Артикул на маркетплейсе
color string Нет Цвет товара.
size string Нет Размер товара.
barcode string Нет Шк товара.
purchasePrice number Нет Закупочная цена.
createdDate string Нет Дата создания карточки.
isDuplicate boolean Нет Признак дубликата карточки.
dateKey string Нет Ключ по дате.
id integer Нет
clientId integer Нет
organizationId integer Нет
date string Нет
categoryId integer Нет
viewId integer Нет
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const response = await axios.post('https://api.selsup.ru/api/stat/updateSalePlanReport',
  [
    {
      "shortName": "Название shortName",
      "categoryName": "Электроника",
      "brandName": "Бренд А",
      "name": "Иван",
      "viewWildberriesId": 123,
      "article": "ART-001",
      "serviceArticle": "ART-001",
      "color": "Пример color",
      "size": "Пример size",
      "barcode": "4600123456789"
    }
  ],
  {
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

const response = await axios.post<any>('https://api.selsup.ru/api/stat/updateSalePlanReport',
  [
    {
      "shortName": "Название shortName",
      "categoryName": "Электроника",
      "brandName": "Бренд А",
      "name": "Иван",
      "viewWildberriesId": 123,
      "article": "ART-001",
      "serviceArticle": "ART-001",
      "color": "Пример color",
      "size": "Пример size",
      "barcode": "4600123456789"
    }
  ],
  {
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

response = requests.post(
    'https://api.selsup.ru/api/stat/updateSalePlanReport',
    headers=headers,
    json=[
    {
        'shortName': 'Название shortName',
        'categoryName': 'Электроника',
        'brandName': 'Бренд А',
        'name': 'Иван',
        'viewWildberriesId': 123,
        'article': 'ART-001',
        'serviceArticle': 'ART-001',
        'color': 'Пример color',
        'size': 'Пример size',
        'barcode': '4600123456789'
    }
]
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    payload := map[string]interface{}[
        {
                `shortName`: `Название shortName`,
                `categoryName`: `Электроника`,
                `brandName`: `Бренд А`,
                `name`: `Иван`,
                `viewWildberriesId`: 123,
                `article`: `ART-001`,
                `serviceArticle`: `ART-001`,
                `color`: `Пример color`,
                `size`: `Пример size`,
                `barcode`: `4600123456789`
        }
]
    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/stat/updateSalePlanReport", bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/updateSalePlanReport"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .post(HttpRequest.BodyPublishers.ofString(
        "[{\"shortName\":\"Название shortName\",\"categoryName\":\"Электроника\",\"brandName\":\"Бренд А\",\"name\":\"Иван\",\"viewWildberriesId\":123,\"article\":\"ART-001\",\"serviceArticle\":\"ART-001\",\"color\":\"Пример color\",\"size\":\"Пример size\",\"barcode\":\"4600123456789\"}]"
    ))
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.selsup.ru/api/stat/updateSalePlanReport',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_POSTFIELDS => json_encode([
    {
        'shortName': 'Название shortName',
        'categoryName': 'Электроника',
        'brandName': 'Бренд А',
        'name': 'Иван',
        'viewWildberriesId': 123,
        'article': 'ART-001',
        'serviceArticle': 'ART-001',
        'color': 'Пример color',
        'size': 'Пример size',
        'barcode': '4600123456789'
    }
]),
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X post \
  'https://api.selsup.ru/api/stat/updateSalePlanReport' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '[
  {
    "shortName": "Название shortName",
    "categoryName": "Электроника",
    "brandName": "Бренд А",
    "name": "Иван",
    "viewWildberriesId": 123,
    "article": "ART-001",
    "serviceArticle": "ART-001",
    "color": "Пример color",
    "size": "Пример size",
    "barcode": "4600123456789"
  }
]'

🔗 Сохранить план продаж

Метод сохраняет план продаж
POST /api/stat/saveSalePlanReport

Тело запроса *Обязательно

Content-Type: application/json
Тип данных: PlanSales
Структура элемента:
ПолеТипОписание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
id integer
clientId integer
organizationId integer
date string
categoryId integer
viewId integer

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: PlanSales
Элементы массива
Поле Тип Описание
shortName string Нет Сокращенное название организации.
categoryName string Нет Название категории.
brandName string Нет Название бренда.
name string Нет Название товара
viewWildberriesId integer Нет Карточка Wildberries
article string Нет Артикул
serviceArticle string Нет Артикул на маркетплейсе
color string Нет Цвет товара.
size string Нет Размер товара.
barcode string Нет Шк товара.
purchasePrice number Нет Закупочная цена.
createdDate string Нет Дата создания карточки.
isDuplicate boolean Нет Признак дубликата карточки.
dateKey string Нет Ключ по дате.
id integer Нет
clientId integer Нет
organizationId integer Нет
date string Нет
categoryId integer Нет
viewId integer Нет
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const response = await axios.post('https://api.selsup.ru/api/stat/saveSalePlanReport',
  [
    {
      "shortName": "Название shortName",
      "categoryName": "Электроника",
      "brandName": "Бренд А",
      "name": "Иван",
      "viewWildberriesId": 123,
      "article": "ART-001",
      "serviceArticle": "ART-001",
      "color": "Пример color",
      "size": "Пример size",
      "barcode": "4600123456789"
    }
  ],
  {
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

const response = await axios.post<any>('https://api.selsup.ru/api/stat/saveSalePlanReport',
  [
    {
      "shortName": "Название shortName",
      "categoryName": "Электроника",
      "brandName": "Бренд А",
      "name": "Иван",
      "viewWildberriesId": 123,
      "article": "ART-001",
      "serviceArticle": "ART-001",
      "color": "Пример color",
      "size": "Пример size",
      "barcode": "4600123456789"
    }
  ],
  {
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

response = requests.post(
    'https://api.selsup.ru/api/stat/saveSalePlanReport',
    headers=headers,
    json=[
    {
        'shortName': 'Название shortName',
        'categoryName': 'Электроника',
        'brandName': 'Бренд А',
        'name': 'Иван',
        'viewWildberriesId': 123,
        'article': 'ART-001',
        'serviceArticle': 'ART-001',
        'color': 'Пример color',
        'size': 'Пример size',
        'barcode': '4600123456789'
    }
]
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    payload := map[string]interface{}[
        {
                `shortName`: `Название shortName`,
                `categoryName`: `Электроника`,
                `brandName`: `Бренд А`,
                `name`: `Иван`,
                `viewWildberriesId`: 123,
                `article`: `ART-001`,
                `serviceArticle`: `ART-001`,
                `color`: `Пример color`,
                `size`: `Пример size`,
                `barcode`: `4600123456789`
        }
]
    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/stat/saveSalePlanReport", bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/saveSalePlanReport"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .post(HttpRequest.BodyPublishers.ofString(
        "[{\"shortName\":\"Название shortName\",\"categoryName\":\"Электроника\",\"brandName\":\"Бренд А\",\"name\":\"Иван\",\"viewWildberriesId\":123,\"article\":\"ART-001\",\"serviceArticle\":\"ART-001\",\"color\":\"Пример color\",\"size\":\"Пример size\",\"barcode\":\"4600123456789\"}]"
    ))
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.selsup.ru/api/stat/saveSalePlanReport',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_POSTFIELDS => json_encode([
    {
        'shortName': 'Название shortName',
        'categoryName': 'Электроника',
        'brandName': 'Бренд А',
        'name': 'Иван',
        'viewWildberriesId': 123,
        'article': 'ART-001',
        'serviceArticle': 'ART-001',
        'color': 'Пример color',
        'size': 'Пример size',
        'barcode': '4600123456789'
    }
]),
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X post \
  'https://api.selsup.ru/api/stat/saveSalePlanReport' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '[
  {
    "shortName": "Название shortName",
    "categoryName": "Электроника",
    "brandName": "Бренд А",
    "name": "Иван",
    "viewWildberriesId": 123,
    "article": "ART-001",
    "serviceArticle": "ART-001",
    "color": "Пример color",
    "size": "Пример size",
    "barcode": "4600123456789"
  }
]'

🔗 Перерасчет отчета по-товарный Рука на пульсе

POST /api/stat/productHandOnPulse/reload

Параметры запроса QUERY

Название Тип Обязательный Описание
fullReload boolean Нет Параметр fullReload

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  fullReload: 'true',
};

const response = await axios.post('https://api.selsup.ru/api/stat/productHandOnPulse/reload',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  fullReload?: string;
}

const params: QueryParams = {
  fullReload: 'true',
};

const response = await axios.post<any>('https://api.selsup.ru/api/stat/productHandOnPulse/reload',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'fullReload': 'true',
}

response = requests.post(
    'https://api.selsup.ru/api/stat/productHandOnPulse/reload',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/stat/productHandOnPulse/reload?fullReload=true", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/productHandOnPulse/reload?fullReload=true"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .post(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'fullReload' => 'true',
];

$url = 'https://api.selsup.ru/api/stat/productHandOnPulse/reload?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X post \
  'https://api.selsup.ru/api/stat/productHandOnPulse/reload?fullReload=true' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Импорт отчета о реализации (multipart)

Метод принимает файл в формате multipart/form-data и создает задачу по импорту данных из файлов WB и OZON и SberMarket по реализации
POST /api/stat/import

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения
service "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" Нет Параметр service

Тело запроса

Content-Type: multipart/form-data
ПолеТипОписание
file Обязательный string

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const formData = new FormData();
formData.append('file', fileInput.files[0]); // File input element

fetch('https://api.selsup.ru/api/stat/import?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&service=NONE', {
  method: 'post',
  headers: {
    'Authorization': 'YOUR_API_KEY'
  },
  body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
const formData = new FormData();
const fileInput = document.getElementById('file-input') as HTMLInputElement;
if (fileInput.files?.[0]) {
  formData.append('file', fileInput.files[0]);
}

interface ResponseData {
  // Define your response type here
}

const response = await fetch('https://api.selsup.ru/api/stat/import?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&service=NONE', {
  method: 'post',
  headers: {
    'Authorization': 'YOUR_API_KEY'
  },
  body: formData
});

const data: ResponseData = await response.json();
console.log(data);
import requests

files = {
    'file': ('file.pdf', open('/path/to/file.pdf', 'rb'), 'application/pdf'),
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
    'service': 'NONE',
}

response = requests.post(
    'https://api.selsup.ru/api/stat/import',
    headers={'Authorization': 'YOUR_API_KEY'},
    files=files,
    params=params,
)

print(response.json())
package main

import (
    "bytes"
    "fmt"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

func main() {
    var b bytes.Buffer
    w := multipart.NewWriter(&b)

    // Add file
    file, err := os.Open("/path/to/file.pdf")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    fw, err := w.CreateFormFile("file", "file.pdf")
    if err != nil {
        panic(err)
    }
    _, err = io.Copy(fw, file)
    if err != nil {
        panic(err)
    }

    w.Close()

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/stat/import?productAnalyticField=BARCODE&query=Пример query&withDuplicate=true&limit=100&page=1&sortBy=Пример sortBy&ascending=true&id=Иванович&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=Московская область&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10:30:00Z&dateTo=2024-01-15T10:30:00Z&services=&categories=&brands=&clientOrganizationId=АО "Торговый дом"&organizations=АО "Торговый дом"&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10:30:00Z&service=NONE", &b)
    req.Header.Set("Content-Type", w.FormDataContentType())
    req.Header.Set("Authorization", "YOUR_API_KEY")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    fmt.Println("Response Status:", resp.Status)
}
import java.io.*;
import java.net.http.*;
import java.nio.file.*;

public class MultipartExample {
    public static void main(String[] args) throws Exception {
        String boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
        HttpClient client = HttpClient.newHttpClient();

        // Build multipart body
        StringBuilder body = new StringBuilder();
        body.append("--").append(boundary).append("\r\n");
        body.append("Content-Disposition: form-data; name=\"file\"; filename=\"file.pdf\"\r\n");
        body.append("Content-Type: application/octet-stream\r\n\r\n");
        // Read file bytes here
        body.append("\r\n");
        body.append("--").append(boundary).append("--\r\n");

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.selsup.ru/api/stat/import?productAnalyticField=BARCODE&query=Пример query&withDuplicate=true&limit=100&page=1&sortBy=Пример sortBy&ascending=true&id=Иванович&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=Московская область&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10:30:00Z&dateTo=2024-01-15T10:30:00Z&services=&categories=&brands=&clientOrganizationId=АО "Торговый дом"&organizations=АО "Торговый дом"&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10:30:00Z&service=NONE"))
            .header("Content-Type", "multipart/form-data; boundary=" + boundary)
            .header("Authorization", "YOUR_API_KEY")
            .POST(HttpRequest.BodyPublishers.ofString(body.toString()))
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
    'service' => 'NONE',
];
$url = 'https://api.selsup.ru/api/stat/import?' . http_build_query($params);

$postData = [
    'file' => new CURLFile('/path/to/file.pdf'),
];

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_POSTFIELDS => $postData,
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X post \
  'https://api.selsup.ru/api/stat/import?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&service=NONE' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Импорт Excel профит репорт

Создает задачу импорта Excel файла с данными реализации по МП.
POST /api/stat/importProfitReportFromExcelFile

Тело запроса

Content-Type: multipart/form-data
ПолеТипОписание
file Обязательный string

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const formData = new FormData();
formData.append('file', fileInput.files[0]); // File input element

fetch('https://api.selsup.ru/api/stat/importProfitReportFromExcelFile', {
  method: 'post',
  headers: {
    'Authorization': 'YOUR_API_KEY'
  },
  body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
const formData = new FormData();
const fileInput = document.getElementById('file-input') as HTMLInputElement;
if (fileInput.files?.[0]) {
  formData.append('file', fileInput.files[0]);
}

interface ResponseData {
  // Define your response type here
}

const response = await fetch('https://api.selsup.ru/api/stat/importProfitReportFromExcelFile', {
  method: 'post',
  headers: {
    'Authorization': 'YOUR_API_KEY'
  },
  body: formData
});

const data: ResponseData = await response.json();
console.log(data);
import requests

files = {
    'file': ('file.pdf', open('/path/to/file.pdf', 'rb'), 'application/pdf'),
}

response = requests.post(
    'https://api.selsup.ru/api/stat/importProfitReportFromExcelFile',
    headers={'Authorization': 'YOUR_API_KEY'},
    files=files,
)

print(response.json())
package main

import (
    "bytes"
    "fmt"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

func main() {
    var b bytes.Buffer
    w := multipart.NewWriter(&b)

    // Add file
    file, err := os.Open("/path/to/file.pdf")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    fw, err := w.CreateFormFile("file", "file.pdf")
    if err != nil {
        panic(err)
    }
    _, err = io.Copy(fw, file)
    if err != nil {
        panic(err)
    }

    w.Close()

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/stat/importProfitReportFromExcelFile", &b)
    req.Header.Set("Content-Type", w.FormDataContentType())
    req.Header.Set("Authorization", "YOUR_API_KEY")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    fmt.Println("Response Status:", resp.Status)
}
import java.io.*;
import java.net.http.*;
import java.nio.file.*;

public class MultipartExample {
    public static void main(String[] args) throws Exception {
        String boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
        HttpClient client = HttpClient.newHttpClient();

        // Build multipart body
        StringBuilder body = new StringBuilder();
        body.append("--").append(boundary).append("\r\n");
        body.append("Content-Disposition: form-data; name=\"file\"; filename=\"file.pdf\"\r\n");
        body.append("Content-Type: application/octet-stream\r\n\r\n");
        // Read file bytes here
        body.append("\r\n");
        body.append("--").append(boundary).append("--\r\n");

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.selsup.ru/api/stat/importProfitReportFromExcelFile"))
            .header("Content-Type", "multipart/form-data; boundary=" + boundary)
            .header("Authorization", "YOUR_API_KEY")
            .POST(HttpRequest.BodyPublishers.ofString(body.toString()))
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
<?php
$curl = curl_init();

$postData = [
    'file' => new CURLFile('/path/to/file.pdf'),
];

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.selsup.ru/api/stat/importProfitReportFromExcelFile',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_POSTFIELDS => $postData,
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X post \
  'https://api.selsup.ru/api/stat/importProfitReportFromExcelFile' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Импорт Excel плана продаж

Создает задачу импорта Excel файла с понедельным планом продаж
POST /api/stat/importPlanSalesFromExcelFile

Тело запроса

Content-Type: multipart/form-data
ПолеТипОписание
file Обязательный string

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const formData = new FormData();
formData.append('file', fileInput.files[0]); // File input element

fetch('https://api.selsup.ru/api/stat/importPlanSalesFromExcelFile', {
  method: 'post',
  headers: {
    'Authorization': 'YOUR_API_KEY'
  },
  body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
const formData = new FormData();
const fileInput = document.getElementById('file-input') as HTMLInputElement;
if (fileInput.files?.[0]) {
  formData.append('file', fileInput.files[0]);
}

interface ResponseData {
  // Define your response type here
}

const response = await fetch('https://api.selsup.ru/api/stat/importPlanSalesFromExcelFile', {
  method: 'post',
  headers: {
    'Authorization': 'YOUR_API_KEY'
  },
  body: formData
});

const data: ResponseData = await response.json();
console.log(data);
import requests

files = {
    'file': ('file.pdf', open('/path/to/file.pdf', 'rb'), 'application/pdf'),
}

response = requests.post(
    'https://api.selsup.ru/api/stat/importPlanSalesFromExcelFile',
    headers={'Authorization': 'YOUR_API_KEY'},
    files=files,
)

print(response.json())
package main

import (
    "bytes"
    "fmt"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

func main() {
    var b bytes.Buffer
    w := multipart.NewWriter(&b)

    // Add file
    file, err := os.Open("/path/to/file.pdf")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    fw, err := w.CreateFormFile("file", "file.pdf")
    if err != nil {
        panic(err)
    }
    _, err = io.Copy(fw, file)
    if err != nil {
        panic(err)
    }

    w.Close()

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/stat/importPlanSalesFromExcelFile", &b)
    req.Header.Set("Content-Type", w.FormDataContentType())
    req.Header.Set("Authorization", "YOUR_API_KEY")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    fmt.Println("Response Status:", resp.Status)
}
import java.io.*;
import java.net.http.*;
import java.nio.file.*;

public class MultipartExample {
    public static void main(String[] args) throws Exception {
        String boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
        HttpClient client = HttpClient.newHttpClient();

        // Build multipart body
        StringBuilder body = new StringBuilder();
        body.append("--").append(boundary).append("\r\n");
        body.append("Content-Disposition: form-data; name=\"file\"; filename=\"file.pdf\"\r\n");
        body.append("Content-Type: application/octet-stream\r\n\r\n");
        // Read file bytes here
        body.append("\r\n");
        body.append("--").append(boundary).append("--\r\n");

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.selsup.ru/api/stat/importPlanSalesFromExcelFile"))
            .header("Content-Type", "multipart/form-data; boundary=" + boundary)
            .header("Authorization", "YOUR_API_KEY")
            .POST(HttpRequest.BodyPublishers.ofString(body.toString()))
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
<?php
$curl = curl_init();

$postData = [
    'file' => new CURLFile('/path/to/file.pdf'),
];

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.selsup.ru/api/stat/importPlanSalesFromExcelFile',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_POSTFIELDS => $postData,
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X post \
  'https://api.selsup.ru/api/stat/importPlanSalesFromExcelFile' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Импорт заказов FBO

Метод добавляет задачу в очередь на импорт заказов FBO
POST /api/stat/importFboOrders

Параметры запроса QUERY

Название Тип Обязательный Описание
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
organizationId integer Нет Идентификатор организации
service "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" Нет Маркетплейс
updateDate Date Нет Обновлять даты
filterOrders Array of string Нет Параметр filterOrders

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  organizationId: 'АО "Торговый дом"',
  service: 'NONE',
  updateDate: 'true',
  filterOrders: '',
};

const response = await axios.post('https://api.selsup.ru/api/stat/importFboOrders',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  dateFrom?: string;
  dateTo?: string;
  organizationId?: number;
  service?: string;
  updateDate?: string;
  filterOrders?: string;
}

const params: QueryParams = {
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  organizationId: 'АО "Торговый дом"',
  service: 'NONE',
  updateDate: 'true',
  filterOrders: '',
};

const response = await axios.post<any>('https://api.selsup.ru/api/stat/importFboOrders',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'organizationId': 'АО "Торговый дом"',
    'service': 'NONE',
    'updateDate': 'true',
    'filterOrders': '',
}

response = requests.post(
    'https://api.selsup.ru/api/stat/importFboOrders',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/stat/importFboOrders?dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&service=NONE&updateDate=true&filterOrders=", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/importFboOrders?dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&service=NONE&updateDate=true&filterOrders="))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .post(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'organizationId' => 'АО "Торговый дом"',
    'service' => 'NONE',
    'updateDate' => 'true',
    'filterOrders' => '',
];

$url = 'https://api.selsup.ru/api/stat/importFboOrders?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X post \
  'https://api.selsup.ru/api/stat/importFboOrders?dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&service=NONE&updateDate=true&filterOrders=' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Импорт выписки из банка

Метод принимает файл в формате multipart/form-data из банковской выписки операции с МП. Выписка из банка выгружается в формате 1C.
POST /api/stat/importBankTransactionFromFile

Параметры запроса QUERY

Название Тип Обязательный Описание
clientOrganizationId integer Нет Параметр clientOrganizationId
saveAll boolean Нет Параметр saveAll

Тело запроса

Content-Type: multipart/form-data
ПолеТипОписание
file Обязательный string

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const formData = new FormData();
formData.append('file', fileInput.files[0]); // File input element

fetch('https://api.selsup.ru/api/stat/importBankTransactionFromFile?clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&saveAll=true', {
  method: 'post',
  headers: {
    'Authorization': 'YOUR_API_KEY'
  },
  body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
const formData = new FormData();
const fileInput = document.getElementById('file-input') as HTMLInputElement;
if (fileInput.files?.[0]) {
  formData.append('file', fileInput.files[0]);
}

interface ResponseData {
  // Define your response type here
}

const response = await fetch('https://api.selsup.ru/api/stat/importBankTransactionFromFile?clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&saveAll=true', {
  method: 'post',
  headers: {
    'Authorization': 'YOUR_API_KEY'
  },
  body: formData
});

const data: ResponseData = await response.json();
console.log(data);
import requests

files = {
    'file': ('file.pdf', open('/path/to/file.pdf', 'rb'), 'application/pdf'),
}

params = {
    'clientOrganizationId': 'АО "Торговый дом"',
    'saveAll': 'true',
}

response = requests.post(
    'https://api.selsup.ru/api/stat/importBankTransactionFromFile',
    headers={'Authorization': 'YOUR_API_KEY'},
    files=files,
    params=params,
)

print(response.json())
package main

import (
    "bytes"
    "fmt"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

func main() {
    var b bytes.Buffer
    w := multipart.NewWriter(&b)

    // Add file
    file, err := os.Open("/path/to/file.pdf")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    fw, err := w.CreateFormFile("file", "file.pdf")
    if err != nil {
        panic(err)
    }
    _, err = io.Copy(fw, file)
    if err != nil {
        panic(err)
    }

    w.Close()

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/stat/importBankTransactionFromFile?clientOrganizationId=АО "Торговый дом"&saveAll=true", &b)
    req.Header.Set("Content-Type", w.FormDataContentType())
    req.Header.Set("Authorization", "YOUR_API_KEY")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    fmt.Println("Response Status:", resp.Status)
}
import java.io.*;
import java.net.http.*;
import java.nio.file.*;

public class MultipartExample {
    public static void main(String[] args) throws Exception {
        String boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
        HttpClient client = HttpClient.newHttpClient();

        // Build multipart body
        StringBuilder body = new StringBuilder();
        body.append("--").append(boundary).append("\r\n");
        body.append("Content-Disposition: form-data; name=\"file\"; filename=\"file.pdf\"\r\n");
        body.append("Content-Type: application/octet-stream\r\n\r\n");
        // Read file bytes here
        body.append("\r\n");
        body.append("--").append(boundary).append("--\r\n");

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.selsup.ru/api/stat/importBankTransactionFromFile?clientOrganizationId=АО "Торговый дом"&saveAll=true"))
            .header("Content-Type", "multipart/form-data; boundary=" + boundary)
            .header("Authorization", "YOUR_API_KEY")
            .POST(HttpRequest.BodyPublishers.ofString(body.toString()))
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
<?php
$curl = curl_init();

$params = [
    'clientOrganizationId' => 'АО "Торговый дом"',
    'saveAll' => 'true',
];
$url = 'https://api.selsup.ru/api/stat/importBankTransactionFromFile?' . http_build_query($params);

$postData = [
    'file' => new CURLFile('/path/to/file.pdf'),
];

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_POSTFIELDS => $postData,
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X post \
  'https://api.selsup.ru/api/stat/importBankTransactionFromFile?clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&saveAll=true' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Импорт отчета о реализации

Метод принимает файл в формате multipart/form-data и создает задачу по импорту данных из файлов WB и OZON и SberMarket по реализации
POST /api/stat/import/binary

Параметры запроса QUERY

Название Тип Обязательный Описание
name string Да Название файла
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения
service "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" Нет Параметр service

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  name: 'Иван',
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
  service: 'NONE',
};

const response = await axios.post('https://api.selsup.ru/api/stat/import/binary',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  name?: string;
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
  service?: string;
}

const params: QueryParams = {
  name: 'Иван',
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
  service: 'NONE',
};

const response = await axios.post<any>('https://api.selsup.ru/api/stat/import/binary',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'name': 'Иван',
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
    'service': 'NONE',
}

response = requests.post(
    'https://api.selsup.ru/api/stat/import/binary',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/stat/import/binary?name=%D0%98%D0%B2%D0%B0%D0%BD&productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&service=NONE", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/import/binary?name=%D0%98%D0%B2%D0%B0%D0%BD&productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&service=NONE"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .post(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'name' => 'Иван',
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
    'service' => 'NONE',
];

$url = 'https://api.selsup.ru/api/stat/import/binary?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X post \
  'https://api.selsup.ru/api/stat/import/binary?name=%D0%98%D0%B2%D0%B0%D0%BD&productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&service=NONE' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Удалить план продаж

Метод удаляет план продаж
POST /api/stat/deleteSalePlanById

Параметры запроса QUERY

Название Тип Обязательный Описание
id integer Да Уникальный идентификатор

Тело ответа

✓ 200 OK
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  id: 'Иванович',
};

const response = await axios.post('https://api.selsup.ru/api/stat/deleteSalePlanById',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  id?: number;
}

const params: QueryParams = {
  id: 'Иванович',
};

const response = await axios.post<any>('https://api.selsup.ru/api/stat/deleteSalePlanById',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'id': 'Иванович',
}

response = requests.post(
    'https://api.selsup.ru/api/stat/deleteSalePlanById',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/stat/deleteSalePlanById?id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/deleteSalePlanById?id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .post(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'id' => 'Иванович',
];

$url = 'https://api.selsup.ru/api/stat/deleteSalePlanById?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X post \
  'https://api.selsup.ru/api/stat/deleteSalePlanById?id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Умный анализ финансов

Метод для возврата данных для отображения в блоке умного анализа финансов, сгенерированные с помощью AI. В теле запроса передается объект полученный из GET fullFinanceReport, чтобы не пересчитывать
POST /api/stat/ai/tips

Тело запроса *Обязательно

Content-Type: application/json
ПолеТипОписание
salesExpensesOnMarketplaces FindResponseRowStructureForFinanceTable
Структура FindResponseRowStructureForFinanceTable
Поле Тип Описание
rows Array of RowStructureForFinanceTable Строки с результатом поиска
Структура RowStructureForFinanceTable
Поле Тип Описание
id integer
name string
cost number
totalSales number
percent number
absPercent number
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
costStructure GetFinanceStructureResult
Структура GetFinanceStructureResult
Поле Тип Описание
rows Array of RowStructureForFinanceTable Строки с результатом поиска
Структура RowStructureForFinanceTable
Поле Тип Описание
id integer
name string
cost number
totalSales number
percent number
absPercent number
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
profitStructure GetFinanceStructureResult
Структура GetFinanceStructureResult
Поле Тип Описание
rows Array of RowStructureForFinanceTable Строки с результатом поиска
Структура RowStructureForFinanceTable
Поле Тип Описание
id integer
name string
cost number
totalSales number
percent number
absPercent number
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
penaltyStructure Array of RowStructureForFinanceTable
Структура RowStructureForFinanceTable
Поле Тип Описание
id integer
name string
cost number
totalSales number
percent number
absPercent number
serviceStructure Array of RowStructureForFinanceTable
Структура RowStructureForFinanceTable
Поле Тип Описание
id integer
name string
cost number
totalSales number
percent number
absPercent number
financesReportByPeriod FindResponseFinanceReport
Структура FindResponseFinanceReport
Поле Тип Описание
rows Array of FinanceReport Строки с результатом поиска
Структура FinanceReport
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Стоимость рекламы ВБ
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
orgName string Название организации
organizationId integer Идентификатор организации
reportNumber string Номер отчета
dateStart string Дата начала отчета по реализации
dateEnd string Дата конца отчета по реализации
logisticToClientAmount number Стоимость логистики к клиенту в руб.
logisticFromClientAmount number Стоимость логистики от клиента в руб.
salesCommission number Комиссия от продажи в руб.
returnsCommission number Возврат комиссии в руб.
profit number Прибыль в руб. grossProfit - fixedOutlay - taxes + selfPayAmount - storageAmount
bankPayment number Оплата по банку в руб.
costPrice number Себестоимость товара в руб. purchasePrice * salesCount
fixedOutlay number Постоянные расходы в руб.(Расходы за весь интервал / кол-во дней в месяце)*на выбранный интервал, если период захватывает больше одного месяца, будет вычисляться для каждого месяца, а после складываться, в случае нескольких отчетах для организации, то будет по каждому отчету браться по коэфициенту продаж
taxes number Налоги в руб.
sellingCosts number Затраты по продаже на МП. getLogistics() + getCommissions() + getPenalty() + getServices() - getAdditionalAndDeduction() - getOtherAmount() + getCostStorage()
rentability number Рентабельность. (profit / totalSalesAmount) * 100
taxRate number Процентная ставка налога
taxType string Тип налогообложения
totalCampaignCost number Стоимость рекламы сумма
ozonCampaignCost number Реклама Озон
basicExpenses number Сумма основных расходов: комиссия + логистика + себестоимость
otherExpenses number Сумма прочих расходов: платная приемка + прочие удержания + прочие начисления + хранения + доплаты
additionalExpenses number Сумма дополнительных расходов: реклама + услуги + штрафы + сумма прочих расходов
ozonDeliveryReturn number Перечисление за доставку от покупателя, должно идти в прибыль
emptyPurchaseAmount integer Сумма продаж, для которых не указана закупочная цена
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
previousFinancesReportByPeriod FindResponseFinanceReport
Структура FindResponseFinanceReport
Поле Тип Описание
rows Array of FinanceReport Строки с результатом поиска
Структура FinanceReport
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Стоимость рекламы ВБ
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
orgName string Название организации
organizationId integer Идентификатор организации
reportNumber string Номер отчета
dateStart string Дата начала отчета по реализации
dateEnd string Дата конца отчета по реализации
logisticToClientAmount number Стоимость логистики к клиенту в руб.
logisticFromClientAmount number Стоимость логистики от клиента в руб.
salesCommission number Комиссия от продажи в руб.
returnsCommission number Возврат комиссии в руб.
profit number Прибыль в руб. grossProfit - fixedOutlay - taxes + selfPayAmount - storageAmount
bankPayment number Оплата по банку в руб.
costPrice number Себестоимость товара в руб. purchasePrice * salesCount
fixedOutlay number Постоянные расходы в руб.(Расходы за весь интервал / кол-во дней в месяце)*на выбранный интервал, если период захватывает больше одного месяца, будет вычисляться для каждого месяца, а после складываться, в случае нескольких отчетах для организации, то будет по каждому отчету браться по коэфициенту продаж
taxes number Налоги в руб.
sellingCosts number Затраты по продаже на МП. getLogistics() + getCommissions() + getPenalty() + getServices() - getAdditionalAndDeduction() - getOtherAmount() + getCostStorage()
rentability number Рентабельность. (profit / totalSalesAmount) * 100
taxRate number Процентная ставка налога
taxType string Тип налогообложения
totalCampaignCost number Стоимость рекламы сумма
ozonCampaignCost number Реклама Озон
basicExpenses number Сумма основных расходов: комиссия + логистика + себестоимость
otherExpenses number Сумма прочих расходов: платная приемка + прочие удержания + прочие начисления + хранения + доплаты
additionalExpenses number Сумма дополнительных расходов: реклама + услуги + штрафы + сумма прочих расходов
ozonDeliveryReturn number Перечисление за доставку от покупателя, должно идти в прибыль
emptyPurchaseAmount integer Сумма продаж, для которых не указана закупочная цена
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: Tip
Элементы массива
Поле Тип Описание
type string Нет
title string Нет
description string Нет
value number Нет
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const response = await axios.post('https://api.selsup.ru/api/stat/ai/tips',
  {
    "salesExpensesOnMarketplaces": {},
    "costStructure": 1500,
    "profitStructure": {},
    "penaltyStructure": [
      {}
    ],
    "serviceStructure": [
      {}
    ],
    "financesReportByPeriod": {},
    "previousFinancesReportByPeriod": {}
  },
  {
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

const response = await axios.post<any>('https://api.selsup.ru/api/stat/ai/tips',
  {
    "salesExpensesOnMarketplaces": {},
    "costStructure": 1500,
    "profitStructure": {},
    "penaltyStructure": [
      {}
    ],
    "serviceStructure": [
      {}
    ],
    "financesReportByPeriod": {},
    "previousFinancesReportByPeriod": {}
  },
  {
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

response = requests.post(
    'https://api.selsup.ru/api/stat/ai/tips',
    headers=headers,
    json={
    'salesExpensesOnMarketplaces': {},
    'costStructure': 1500,
    'profitStructure': {},
    'penaltyStructure': [
        {}
    ],
    'serviceStructure': [
        {}
    ],
    'financesReportByPeriod': {},
    'previousFinancesReportByPeriod': {}
}
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    payload := map[string]interface{}{
        `salesExpensesOnMarketplaces`: {},
        `costStructure`: 1500,
        `profitStructure`: {},
        `penaltyStructure`: [
                {}
        ],
        `serviceStructure`: [
                {}
        ],
        `financesReportByPeriod`: {},
        `previousFinancesReportByPeriod`: {}
}
    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/stat/ai/tips", bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/ai/tips"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .post(HttpRequest.BodyPublishers.ofString(
        "{\"salesExpensesOnMarketplaces\":{},\"costStructure\":1500,\"profitStructure\":{},\"penaltyStructure\":[{}],\"serviceStructure\":[{}],\"financesReportByPeriod\":{},\"previousFinancesReportByPeriod\":{}}"
    ))
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.selsup.ru/api/stat/ai/tips',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_POSTFIELDS => json_encode({
    'salesExpensesOnMarketplaces': {},
    'costStructure': 1500,
    'profitStructure': {},
    'penaltyStructure': [
        {}
    ],
    'serviceStructure': [
        {}
    ],
    'financesReportByPeriod': {},
    'previousFinancesReportByPeriod': {}
}),
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X post \
  'https://api.selsup.ru/api/stat/ai/tips' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "salesExpensesOnMarketplaces": {},
  "costStructure": 1500,
  "profitStructure": {},
  "penaltyStructure": [
    {}
  ],
  "serviceStructure": [
    {}
  ],
  "financesReportByPeriod": {},
  "previousFinancesReportByPeriod": {}
}'

🔗 Excel рука на пульсе

Создает задачу на скачивание Excel файла с данными по товарной аналитике.Обязательно нужно передать в запросе dateTo, dateFrom.Не обязательные поля clientOrganizationId, serviceIds.Поле - period и productAnalyticField не используются.Добавлена возможность отсортировать список по полю sortBy и по порядку ascending.
POST /api/stat/addDownloadHandOnPulseTask

Тело запроса *Обязательно

Content-Type: application/json
ПолеТипОписание
period string Период агрегации
dateFrom string Дата начала отчета
dateTo string Дата окончания отчета
services Array of object Список маркетплейсов для которых отдать данные
Структура object
Поле Тип Описание
categories Array of object Фильтр категорий для которых отдать данные
Структура object
Поле Тип Описание
brands Array of object Фильтр брендов для которых отдать данные
Структура object
Поле Тип Описание
clientOrganizationId integer Идентификатор организации, для которой отдать данные
organizations Array of object Идентификаторы организаций клиента
Структура object
Поле Тип Описание
ids Array of object Список идентификаторов
Структура object
Поле Тип Описание
type string Тип заказа
types Array of object Типы заказа
Структура object
Поле Тип Описание
status string Статус заказа
timeZone integer Часовой пояс клиента по UTC
previousDateFrom string Дата начала периода для сравнения
productAnalyticField string Агрегировать данные по сущности
query string Поисковый запрос для фильтрации аналитики
withDuplicate boolean Отдавать аналитику по дубликатам товаров
limit integer Количество записей в ответе
page integer Страница для навигации по страницам, начиная с 1
sortBy string Поле сортировки
ascending boolean Сортировать по возрастанию по полю sortBy
id integer
isMarketPlaceStructure boolean Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Идентификатор, запрос с дашборда или нет.
analyticsField string Агрегировать данные по model/product/view
planDayCount integer Кол-во дней для отчетов
groupByView boolean Сгруппировать по цвету
warehouses Array of object Список идентификаторов складов
Структура object
Поле Тип Описание
regions Array of object Список регионов
Структура object
Поле Тип Описание
group boolean Сгруппировать данные
calculationByOrders boolean Делать расчет по заказанному количеству
sourceReport string Операция по которой выводить данные
skipDayWithoutStocks boolean Пропускать дни без остатков
isSaleStructure boolean Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Идентификатор, получить среднее за 1 единицу
updateDate boolean Обновлять даты
useWeightedGroup boolean Использовать группы по весу
isFindirRequest boolean Является ли запрос - запросом для Задачника
brandIds Array of object Фильтр по идентификаторам брендов (список)
Структура object
Поле Тип Описание
categoryIds Array of object Фильтр по идентификаторам категорий (список)
Структура object
Поле Тип Описание
articles Array of object Фильтр по артикулу (список)
Структура object
Поле Тип Описание
colors Array of object Фильтр по цвету (список)
Структура object
Поле Тип Описание
sizes Array of object Фильтр по размеру (список)
Структура object
Поле Тип Описание
barcodes Array of object Фильтр по штрих-коду (список)
Структура object
Поле Тип Описание
penaltyFrom number Фильтр по штрафам (от)
penaltyTo number Фильтр по штрафам (до)
logisticsFrom number Фильтр по логистике (от)
logisticsTo number Фильтр по логистике (до)
marginFrom number Фильтр по маржинальности (от)
marginTo number Фильтр по маржинальности (до)

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const response = await axios.post('https://api.selsup.ru/api/stat/addDownloadHandOnPulseTask',
  {
    "period": "DAY",
    "dateFrom": "2024-01-15T10:30:00Z",
    "dateTo": "2024-01-15T10:30:00Z",
    "services": [
      "NONE"
    ],
    "categories": [
      1
    ],
    "brands": [
      1
    ],
    "clientOrganizationId": "АО \"Торговый дом\"",
    "organizations": [
      "АО \"Торговый дом\""
    ],
    "ids": [
      123
    ],
    "type": "standard"
  },
  {
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

const response = await axios.post<any>('https://api.selsup.ru/api/stat/addDownloadHandOnPulseTask',
  {
    "period": "DAY",
    "dateFrom": "2024-01-15T10:30:00Z",
    "dateTo": "2024-01-15T10:30:00Z",
    "services": [
      "NONE"
    ],
    "categories": [
      1
    ],
    "brands": [
      1
    ],
    "clientOrganizationId": "АО \"Торговый дом\"",
    "organizations": [
      "АО \"Торговый дом\""
    ],
    "ids": [
      123
    ],
    "type": "standard"
  },
  {
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

response = requests.post(
    'https://api.selsup.ru/api/stat/addDownloadHandOnPulseTask',
    headers=headers,
    json={
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': [
        'NONE'
    ],
    'categories': [
        1
    ],
    'brands': [
        1
    ],
    'clientOrganizationId': 'АО \'Торговый дом\'',
    'organizations': [
        'АО \'Торговый дом\''
    ],
    'ids': [
        123
    ],
    'type': 'standard'
}
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    payload := map[string]interface{}{
        `period`: `DAY`,
        `dateFrom`: `2024-01-15T10:30:00Z`,
        `dateTo`: `2024-01-15T10:30:00Z`,
        `services`: [
                `NONE`
        ],
        `categories`: [
                1
        ],
        `brands`: [
                1
        ],
        `clientOrganizationId`: `АО \`Торговый дом\``,
        `organizations`: [
                `АО \`Торговый дом\``
        ],
        `ids`: [
                123
        ],
        `type`: `standard`
}
    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/stat/addDownloadHandOnPulseTask", bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/addDownloadHandOnPulseTask"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .post(HttpRequest.BodyPublishers.ofString(
        "{\"period\":\"DAY\",\"dateFrom\":\"2024-01-15T10:30:00Z\",\"dateTo\":\"2024-01-15T10:30:00Z\",\"services\":[\"NONE\"],\"categories\":[1],\"brands\":[1],\"clientOrganizationId\":\"АО \\"Торговый дом\\"\",\"organizations\":[\"АО \\"Торговый дом\\"\"],\"ids\":[123],\"type\":\"standard\"}"
    ))
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.selsup.ru/api/stat/addDownloadHandOnPulseTask',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_POSTFIELDS => json_encode({
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': [
        'NONE'
    ],
    'categories': [
        1
    ],
    'brands': [
        1
    ],
    'clientOrganizationId': 'АО \'Торговый дом\'',
    'organizations': [
        'АО \'Торговый дом\''
    ],
    'ids': [
        123
    ],
    'type': 'standard'
}),
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X post \
  'https://api.selsup.ru/api/stat/addDownloadHandOnPulseTask' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "period": "DAY",
  "dateFrom": "2024-01-15T10:30:00Z",
  "dateTo": "2024-01-15T10:30:00Z",
  "services": [
    "NONE"
  ],
  "categories": [
    1
  ],
  "brands": [
    1
  ],
  "clientOrganizationId": "АО \"Торговый дом\"",
  "organizations": [
    "АО \"Торговый дом\""
  ],
  "ids": [
    123
  ],
  "type": "standard"
}'

🔗 Обновление закупочных цен в аналитике

Метод ставит в очередь задачу по обновлению закупочных цен и прочих расходов в аналитике по данным из товаров
GET /api/stat/updatePurchasePriceTask

Параметры запроса QUERY

Название Тип Обязательный Описание
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/updatePurchasePriceTask',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/updatePurchasePriceTask',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/updatePurchasePriceTask',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/updatePurchasePriceTask?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/updatePurchasePriceTask?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/updatePurchasePriceTask?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/updatePurchasePriceTask?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Предрасчитанный Excel план поставок товаров

Создает задачу на скачивание Excel файла по предрасчитанному плану поставок товаров
GET /api/stat/supplyPlanReport/download

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/supplyPlanReport/download',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/supplyPlanReport/download',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/supplyPlanReport/download',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/supplyPlanReport/download?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/supplyPlanReport/download?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/supplyPlanReport/download?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/supplyPlanReport/download?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Обновление остатков с маркетплейса

Метод ставит в очередь задачу по получению данных о продажах c ozon или wildberries по организации и запись их в отчет по операциям
GET /api/stat/runImportStatTaskByClientOrganizationId

Параметры запроса QUERY

Название Тип Обязательный Описание
clientOrganizationId integer Да Идентификатор организации
service "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" Да Маркетплейс с которого обновить данные

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  clientOrganizationId: 'АО "Торговый дом"',
  service: 'NONE',
};

const response = await axios.get('https://api.selsup.ru/api/stat/runImportStatTaskByClientOrganizationId',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  clientOrganizationId?: number;
  service?: string;
}

const params: QueryParams = {
  clientOrganizationId: 'АО "Торговый дом"',
  service: 'NONE',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/runImportStatTaskByClientOrganizationId',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'clientOrganizationId': 'АО "Торговый дом"',
    'service': 'NONE',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/runImportStatTaskByClientOrganizationId',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/runImportStatTaskByClientOrganizationId?clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&service=NONE", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/runImportStatTaskByClientOrganizationId?clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&service=NONE"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'clientOrganizationId' => 'АО "Торговый дом"',
    'service' => 'NONE',
];

$url = 'https://api.selsup.ru/api/stat/runImportStatTaskByClientOrganizationId?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/runImportStatTaskByClientOrganizationId?clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&service=NONE' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Отчет повторные продажи

Получение данных о повторных продажах по фильтру
GET /api/stat/repeat-sales

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
uniqueCustomers integer Количество уникальных покупателей
repeatCustomers integer Количество повторных покупателей (2 и более заказов
orderFrequencyPoints Array of OrderFrequencyPoint Покупок на покупателя
Структура OrderFrequencyPoint
Поле Тип Описание
orders integer Число покупок
percent number Процент покупателей
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/repeat-sales',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/repeat-sales',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/repeat-sales',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/repeat-sales?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/repeat-sales?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/repeat-sales?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/repeat-sales?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Задача на перезакачку аналитики

Создает задачу на перезакачку аналитике по маркетплейсам.
GET /api/stat/reDownloadAnalytics

Параметры запроса QUERY

Название Тип Обязательный Описание
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/reDownloadAnalytics',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/reDownloadAnalytics',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/reDownloadAnalytics',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/reDownloadAnalytics?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/reDownloadAnalytics?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/reDownloadAnalytics?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/reDownloadAnalytics?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Статистика по количеству созданных карточек

Метод для возврата статистики по количеству созданных карточек на маркетплейсах и в SelSup
GET /api/stat/products

Тело ответа

✓ 200 OK
Тип: object
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const response = await axios.get('https://api.selsup.ru/api/stat/products',
  {
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

const response = await axios.get<any>('https://api.selsup.ru/api/stat/products',
  {
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

response = requests.get(
    'https://api.selsup.ru/api/stat/products',
    headers=headers
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/products", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/products"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.selsup.ru/api/stat/products',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/products' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Товарная аналитика

Метод получает данные по товарной аналитике. Обязательно нужно передать в запросе dateTo, dateFrom, productAnalyticField.Не обязательные поля clientOrganizationId, serviceIds.Поле - period не используется.
GET /api/stat/productAnalytics

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of ProductAnalytics Строки с результатом поиска
Структура ProductAnalytics
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Затраты на рекламу, получаем только по ВБиз импорта статистики по рекламным кампаниям
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
productId integer Идентификатор товара
productViewId integer Идентификатор цвета товара
productModelId integer Идентификатор модели товара
brandId integer Идентификатор бренда товара
categoryId integer Идентификатор категории товара
deleted boolean Товар удален?
totalCount integer Всего найдено строк для отчетов
instockQuantity integer Кол-во остатков на складе FBS
fboQuantity integer Количество остатков на складах FBO
ozonStockCount integer Количество остатков на складах Ozon
wildberriesStockCount integer Количество остатков на складах Wildberries
yandexMarketStockCount integer Количество остатков на складах Yandex.Market
ozonArticle string Уникальный артикул товара для озон
wbArticle string Название на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
lastWildberriesSaleDate string Дата последней продажи WB
lastWildberriesOrderDate string Дата последнего заказа на WB
lastOzonSaleDate string Дата последней продажи Ozon
lastOzonOrderDate string Дата последнего заказа на Ozon
service string Сервис
orgTaxRate number Процентная ставка налога организации
prodTaxRate number Процентная ставка налога товара
taxType string Тип налогообложения
netProfitRub number Чистая прибыль
netProfitRubPerUnit number Чистая прибыль за 1ед.
otherExpenses number Дополнительныеы расходы на проданный товар, руб.
managerWb string Менеджер WB
managerYandex string Менеджер Yandex
managerOzon string Менеджер Ozon
managerMain string Менеджер Основной
organizationId integer Идентификатор организации
mainImageUrl string Ссылка на основное изображение товара
serviceId ProductAnalytics DTO для передачи данных по товарной аналитике
Структура ProductAnalytics
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Затраты на рекламу, получаем только по ВБиз импорта статистики по рекламным кампаниям
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
productId integer Идентификатор товара
productViewId integer Идентификатор цвета товара
productModelId integer Идентификатор модели товара
brandId integer Идентификатор бренда товара
categoryId integer Идентификатор категории товара
deleted boolean Товар удален?
totalCount integer Всего найдено строк для отчетов
instockQuantity integer Кол-во остатков на складе FBS
fboQuantity integer Количество остатков на складах FBO
ozonStockCount integer Количество остатков на складах Ozon
wildberriesStockCount integer Количество остатков на складах Wildberries
yandexMarketStockCount integer Количество остатков на складах Yandex.Market
ozonArticle string Уникальный артикул товара для озон
wbArticle string Название на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
lastWildberriesSaleDate string Дата последней продажи WB
lastWildberriesOrderDate string Дата последнего заказа на WB
lastOzonSaleDate string Дата последней продажи Ozon
lastOzonOrderDate string Дата последнего заказа на Ozon
service string Сервис
orgTaxRate number Процентная ставка налога организации
prodTaxRate number Процентная ставка налога товара
taxType string Тип налогообложения
netProfitRub number Чистая прибыль
netProfitRubPerUnit number Чистая прибыль за 1ед.
otherExpenses number Дополнительныеы расходы на проданный товар, руб.
managerWb string Менеджер WB
managerYandex string Менеджер Yandex
managerOzon string Менеджер Ozon
managerMain string Менеджер Основной
organizationId integer Идентификатор организации
mainImageUrl string Ссылка на основное изображение товара
serviceId object DTO для передачи данных по товарной аналитике
Структура object
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Затраты на рекламу, получаем только по ВБиз импорта статистики по рекламным кампаниям
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
productId integer Идентификатор товара
productViewId integer Идентификатор цвета товара
productModelId integer Идентификатор модели товара
brandId integer Идентификатор бренда товара
categoryId integer Идентификатор категории товара
deleted boolean Товар удален?
totalCount integer Всего найдено строк для отчетов
instockQuantity integer Кол-во остатков на складе FBS
fboQuantity integer Количество остатков на складах FBO
ozonStockCount integer Количество остатков на складах Ozon
wildberriesStockCount integer Количество остатков на складах Wildberries
yandexMarketStockCount integer Количество остатков на складах Yandex.Market
ozonArticle string Уникальный артикул товара для озон
wbArticle string Название на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
lastWildberriesSaleDate string Дата последней продажи WB
lastWildberriesOrderDate string Дата последнего заказа на WB
lastOzonSaleDate string Дата последней продажи Ozon
lastOzonOrderDate string Дата последнего заказа на Ozon
service string Сервис
orgTaxRate number Процентная ставка налога организации
prodTaxRate number Процентная ставка налога товара
taxType string Тип налогообложения
netProfitRub number Чистая прибыль
netProfitRubPerUnit number Чистая прибыль за 1ед.
otherExpenses number Дополнительныеы расходы на проданный товар, руб.
managerWb string Менеджер WB
managerYandex string Менеджер Yandex
managerOzon string Менеджер Ozon
managerMain string Менеджер Основной
organizationId integer Идентификатор организации
mainImageUrl string Ссылка на основное изображение товара
serviceId object DTO для передачи данных по товарной аналитике
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/productAnalytics',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/productAnalytics',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/productAnalytics',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/productAnalytics?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/productAnalytics?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/productAnalytics?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/productAnalytics?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Получить отчет Воронка продаж

Получение данных из воронки продаж по фильтру
GET /api/stat/nmReport

Параметры запроса QUERY

Название Тип Обязательный Описание
dateFrom Date Нет Дата начала периода
dateTo Date Нет Дата окончания периода
brandNames Array of string Нет Список названий брендов
objectIDs integer Нет Список ID предметов
tagIDs integer Нет Список ID ярлыков
nmIDs Array of integer Нет Список артикулов Wildberries, они же wildberriesId у view
timezone integer Нет Временная зона. По умолчанию Europe/Moscow
organizationId integer Нет Идентификатор организации
service "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" Нет Сервис для которого получить данные
query string Нет Поисковой запрос. Поиск идет по артикулу
limit integer Нет Ограничение на количество записей. Максимальное значение - 500
page integer Нет Номер страницы начиная с 1
count boolean Нет Возвратить в ответе общее количество записей
sortBy string Нет Поле сортировки записей. Работает только при получении списка.
ascending boolean Нет Порядок сортировки - по возрастанию?. Работает только при получении списка.

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of NmReport Строки с результатом поиска
Структура NmReport
Поле Тип Описание
id integer
nmId integer Артикул Wildberries, он же wildberriesId у view
clientId integer
organizationId integer
serviceId integer
vendorCode string
brandName string
objectId integer
objectName string
stocksMp integer
stocksWb integer
periodBegin string
periodEnd string
openCardCount integer
addToCartCount integer
ordersCount integer
ordersSumRub number
buyoutsCount integer
buyoutsSumRub number
cancelCount integer
cancelSumRub number
avgPriceRub number
avgOrdersCountPerDay number
addToCartPercent number
cartToOrderPercent number
buyoutsPercent number
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  dateFrom: '2024-03-01T00:00:00Z',
  dateTo: '2024-03-31T23:59:59Z',
  brandNames: 'Nike,Adidas',
  objectIDs: '123,456',
  tagIDs: '10,20,30',
  nmIDs: '987654',
  timezone: '1',
  organizationId: 'АО "Торговый дом"',
  service: 'NONE',
  query: 'Пример query',
  limit: '100',
  page: '1',
  count: 'Россия',
  sortBy: 'Пример sortBy',
  ascending: 'true',
};

const response = await axios.get('https://api.selsup.ru/api/stat/nmReport',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  dateFrom?: string;
  dateTo?: string;
  brandNames?: string;
  objectIDs?: string;
  tagIDs?: string;
  nmIDs?: string;
  timezone?: number;
  organizationId?: number;
  service?: string;
  query?: string;
  limit?: number;
  page?: number;
  count?: string;
  sortBy?: string;
  ascending?: string;
}

const params: QueryParams = {
  dateFrom: '2024-03-01T00:00:00Z',
  dateTo: '2024-03-31T23:59:59Z',
  brandNames: 'Nike,Adidas',
  objectIDs: '123,456',
  tagIDs: '10,20,30',
  nmIDs: '987654',
  timezone: '1',
  organizationId: 'АО "Торговый дом"',
  service: 'NONE',
  query: 'Пример query',
  limit: '100',
  page: '1',
  count: 'Россия',
  sortBy: 'Пример sortBy',
  ascending: 'true',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/nmReport',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'dateFrom': '2024-03-01T00:00:00Z',
    'dateTo': '2024-03-31T23:59:59Z',
    'brandNames': 'Nike,Adidas',
    'objectIDs': '123,456',
    'tagIDs': '10,20,30',
    'nmIDs': '987654',
    'timezone': '1',
    'organizationId': 'АО "Торговый дом"',
    'service': 'NONE',
    'query': 'Пример query',
    'limit': '100',
    'page': '1',
    'count': 'Россия',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/nmReport',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/nmReport?dateFrom=2024-03-01T00%3A00%3A00Z&dateTo=2024-03-31T23%3A59%3A59Z&brandNames=Nike%2CAdidas&objectIDs=123%2C456&tagIDs=10%2C20%2C30&nmIDs=987654&timezone=1&organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&service=NONE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/nmReport?dateFrom=2024-03-01T00%3A00%3A00Z&dateTo=2024-03-31T23%3A59%3A59Z&brandNames=Nike%2CAdidas&objectIDs=123%2C456&tagIDs=10%2C20%2C30&nmIDs=987654&timezone=1&organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&service=NONE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'dateFrom' => '2024-03-01T00:00:00Z',
    'dateTo' => '2024-03-31T23:59:59Z',
    'brandNames' => 'Nike,Adidas',
    'objectIDs' => '123,456',
    'tagIDs' => '10,20,30',
    'nmIDs' => '987654',
    'timezone' => '1',
    'organizationId' => 'АО "Торговый дом"',
    'service' => 'NONE',
    'query' => 'Пример query',
    'limit' => '100',
    'page' => '1',
    'count' => 'Россия',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
];

$url = 'https://api.selsup.ru/api/stat/nmReport?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/nmReport?dateFrom=2024-03-01T00%3A00%3A00Z&dateTo=2024-03-31T23%3A59%3A59Z&brandNames=Nike%2CAdidas&objectIDs=123%2C456&tagIDs=10%2C20%2C30&nmIDs=987654&timezone=1&organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&service=NONE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Создать FBO заказы из профит репортов

Создает задачу для создания новых FBO заказов из таблички профит репорта по МП Wildberries.
GET /api/stat/mergeOrderFromProfitReports

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
processedQuantity integer Количество обработанных записей задачи
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
url string Ссылка на скачивание файла с результатом задачи
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланированная дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
service string Сервис
lang string Язык на котором сейчас запущена таска
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/mergeOrderFromProfitReports',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/mergeOrderFromProfitReports',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/mergeOrderFromProfitReports',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/mergeOrderFromProfitReports?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/mergeOrderFromProfitReports?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/mergeOrderFromProfitReports?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/mergeOrderFromProfitReports?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Данные о раскладке товаров операторами

Возвращает информацию о раскладке за период
GET /api/stat/getUsersStats

Параметры запроса QUERY

Название Тип Обязательный Описание
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
users Array of UserInfo
Структура UserInfo
Поле Тип Описание
name string
key string
data Array of object
Структура object
Поле Тип Описание
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getUsersStats',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getUsersStats',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getUsersStats',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getUsersStats?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getUsersStats?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getUsersStats?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getUsersStats?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Данные о выполненных работах

Возвращает информацию о количестве созданных карточек и добавленных в поставку товаров
GET /api/stat/getUsersJobStats

Параметры запроса QUERY

Название Тип Обязательный Описание
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения
jobId integer Да Параметр jobId

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
users Array of UserInfo
Структура UserInfo
Поле Тип Описание
name string
key string
data Array of object
Структура object
Поле Тип Описание
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
  jobId: '123',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getUsersJobStats',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
  jobId?: number;
}

const params: QueryParams = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
  jobId: '123',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getUsersJobStats',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
    'jobId': '123',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getUsersJobStats',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getUsersJobStats?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&jobId=123", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getUsersJobStats?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&jobId=123"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
    'jobId' => '123',
];

$url = 'https://api.selsup.ru/api/stat/getUsersJobStats?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getUsersJobStats?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&jobId=123' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Взаиморасчеты с поставщиками.

Метод получает данные оборота за период с контрагентом и сальдо.
GET /api/stat/getTurnoverByContractorId

Параметры запроса QUERY

Название Тип Обязательный Описание
request object Да Параметр request

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: Turnover DTO - для передачи данных по взаиморасчетам с поставщиками.
Элементы массива
Поле Тип Описание
id integer Нет Идентификатор позиции.
title string Нет Название позиции
debit number Нет Сумма Дебет(Нам должны)
credit number Нет Сумма Кредит(Мы должны)
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  request: '[object Object]',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getTurnoverByContractorId',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  request?: string;
}

const params: QueryParams = {
  request: '[object Object]',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getTurnoverByContractorId',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'request': '[object Object]',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getTurnoverByContractorId',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getTurnoverByContractorId?request=%5Bobject%20Object%5D", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getTurnoverByContractorId?request=%5Bobject%20Object%5D"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'request' => '[object Object]',
];

$url = 'https://api.selsup.ru/api/stat/getTurnoverByContractorId?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getTurnoverByContractorId?request=%5Bobject%20Object%5D' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Получить весь план продаж

Метод возвращает общие данные по плану продаж
GET /api/stat/getTotalSalePlanReport

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticFields Array of string Нет Параметр productAnalyticFields
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of PlanSales Строки с результатом поиска
Структура PlanSales
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
id integer
clientId integer
organizationId integer
date string
categoryId integer
viewId integer
productId integer
service string Сервис
planCount integer
planAmount number
totalCount integer
month string
year integer
week integer
factCount integer
factAmount number
dateFrom string Начало периода
dateTo string Конец периода
timeZone integer Тайм зона
period string Период WEEK, Month
serviceId integer
factAmountInPercent number Выполнение плана в процентах
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticFields: '',
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getTotalSalePlanReport',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticFields?: string;
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticFields: '',
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getTotalSalePlanReport',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticFields': '',
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getTotalSalePlanReport',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getTotalSalePlanReport?productAnalyticFields=&productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getTotalSalePlanReport?productAnalyticFields=&productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticFields' => '',
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getTotalSalePlanReport?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getTotalSalePlanReport?productAnalyticFields=&productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Налоги

Метод возвращает данные о предполагаемом налоге с продаж.
GET /api/stat/getTaxes

Параметры запроса QUERY

Название Тип Обязательный Описание
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: Taxes DTO для передачи данных по налогу
Элементы массива
Поле Тип Описание
id integer Нет Идентификатор записи
taxesAmount number Нет Сумма налога
salesAmount number Нет Сумма продаж(продажи - возвраты)
years integer Нет Год
quarter integer Нет Квартал
title string Нет Описание
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getTaxes',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getTaxes',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getTaxes',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getTaxes?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getTaxes?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getTaxes?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getTaxes?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Структура расчетов с поставщиками.

Метод получает структуру оплат за период с контрагентом.
GET /api/stat/getStructureTurnoverByContractorId

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of PaymentStructure Строки с результатом поиска
Структура PaymentStructure
Поле Тип Описание
id integer Идентификатор
documentNumber integer Номер поступления(ID)
operationType string Тип операции
contractor Contractor Контрагенты
Структура Contractor
Поле Тип Описание
id integer Идентификатор контрагента. Проставляется автоматически
name string Наименование контрагента
versionId integer Поле нужно передавать при изменении,для предотвращения одновременной перезаписи
clientId integer Идентификатор клиента
createdUser string Логин пользователя, который создал контрагента
lastIncomeDate string Дата последнего поступления для этого контрагента для сортировки
deleted boolean Признак удаления контрагента
organizationId integer Организация для реквизитов контрагента
phoneNumber string Номер телефона
email string Адрес электронной почты
contactName string Имя контакта
moySkladId string Идентификатор в сервисе МойСклад
url string Ссылка на сайт
organization Organization Данные об организации
Структура Organization
Поле Тип Описание
id integer Идентификатор организации. Проставляется автоматически
name string Полное наименование организации
shortName string
taxType string Система налогооблажения
taxRate integer Ставка налога, если она отличается от стандартной
taxNds integer Ставка налога, если она отличается от стандартной
inn string ИНН
kpp string КПП. Проставляется только для ООО
bank string Название банка
bik string БИК счета организации
corrBill string Номер корреспондентского счета
billNumber string Номер счета организации
stampPath string Ссылка на изображение печати организации
stampUrl string Ссылка на изображение печати организации
stampSize integer Размер в байтах изображения печати организации
stampWidth integer Ширина изображения печати организации
stampHeight integer Высота изображения печати организации
signaturePath string Фото подписи директора организации
signatureUrl string Фото подписи директора организации
signatureSize integer Размер файла в байтах подписи директора организации
signatureWidth integer Ширина изображения подписи директора
signatureHeight integer Высота изображения подписи директора
ipPerson Person Сотрудник
form string Форма собственности организации
ip boolean
clientId integer Идентификатор клиента
address Address Адресс организации
phoneNumber string Номер телефона
addressFull string Полный адрес
debit number Дебит
credit number Кредит
date string Дата операции
incomeId integer Номер закупки
transactionId integer Идентификатор транзакции
comment string Назначение платежа
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getStructureTurnoverByContractorId',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getStructureTurnoverByContractorId',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getStructureTurnoverByContractorId',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getStructureTurnoverByContractorId?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getStructureTurnoverByContractorId?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getStructureTurnoverByContractorId?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getStructureTurnoverByContractorId?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Статистика по заказам и выручке

Возвращает статистику по заказам и выручку по фильтру
GET /api/stat/getStatOrderAndSales

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
data Array of object
Структура object
Поле Тип Описание
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getStatOrderAndSales',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getStatOrderAndSales',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getStatOrderAndSales',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getStatOrderAndSales?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getStatOrderAndSales?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getStatOrderAndSales?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getStatOrderAndSales?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Структура услуг

Метод получает данные по структуре услуг.Обязательно нужно передать в запросе dateTo, dateFromНе обязательные поля clientOrganizationId, serviceIds
GET /api/stat/getServiceStructure

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: RowStructureForFinanceTable
Элементы массива
Поле Тип Описание
id integer Нет
name string Нет
cost number Нет
totalSales number Нет
percent number Нет
absPercent number Нет
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getServiceStructure',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getServiceStructure',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getServiceStructure',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getServiceStructure?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getServiceStructure?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getServiceStructure?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getServiceStructure?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 График по продажам

Метод возвращает данные о продажах и возвратах и группирует их по сервисам.Обязательно передать dateFrom, dateToне обязательные поля clientOrganizationId, services
GET /api/stat/getSalesReportForGraphic

Параметры запроса QUERY

Название Тип Обязательный Описание
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: SalesReportForGraphic DTO для передачи данных по продажам и возвратам по сервису.
Элементы массива
Поле Тип Описание
serviceName string Нет
salesAmount number Нет
returnsAmount number Нет
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getSalesReportForGraphic',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getSalesReportForGraphic',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getSalesReportForGraphic',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getSalesReportForGraphic?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getSalesReportForGraphic?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getSalesReportForGraphic?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getSalesReportForGraphic?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Расходы по продажам на маркетплейсах

Метод получает расходы по продажам на маркетплейсах.
GET /api/stat/getSalesExpensesOnMarketplaces

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of RowStructureForFinanceTable Строки с результатом поиска
Структура RowStructureForFinanceTable
Поле Тип Описание
id integer
name string
cost number
totalSales number
percent number
absPercent number
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getSalesExpensesOnMarketplaces',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getSalesExpensesOnMarketplaces',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getSalesExpensesOnMarketplaces',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getSalesExpensesOnMarketplaces?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getSalesExpensesOnMarketplaces?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getSalesExpensesOnMarketplaces?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getSalesExpensesOnMarketplaces?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Структура продаж

Метод получает данные по структуре продаж на ВБ.
GET /api/stat/getSaleOrReturnStructure

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of RowStructureForFinanceTable Строки с результатом поиска
Структура RowStructureForFinanceTable
Поле Тип Описание
id integer
name string
cost number
totalSales number
percent number
absPercent number
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getSaleOrReturnStructure',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getSaleOrReturnStructure',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getSaleOrReturnStructure',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getSaleOrReturnStructure?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getSaleOrReturnStructure?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getSaleOrReturnStructure?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getSaleOrReturnStructure?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Структура выручки

Метод получает данные по структуре дохода.Обязательно нужно передать в запросе dateTo, dateFrom, periodНе обязательные поля clientOrganizationId, serviceIds
GET /api/stat/getProfitStructure

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of RowStructureForFinanceTable Строки с результатом поиска
Структура RowStructureForFinanceTable
Поле Тип Описание
id integer
name string
cost number
totalSales number
percent number
absPercent number
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getProfitStructure',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getProfitStructure',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getProfitStructure',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getProfitStructure?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getProfitStructure?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getProfitStructure?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getProfitStructure?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Данные по продажам

Метод возвращает данные по продажам за период.
GET /api/stat/getProfitStat

Параметры запроса QUERY

Название Тип Обязательный Описание
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения
id integer Да Уникальный идентификатор
field "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Да Параметр field
service "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" Нет Параметр service

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
data Array of object
Структура object
Поле Тип Описание
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
  id: 'Иванович',
  field: 'PRODUCT',
  service: 'NONE',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getProfitStat',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
  id?: number;
  field?: string;
  service?: string;
}

const params: QueryParams = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
  id: 'Иванович',
  field: 'PRODUCT',
  service: 'NONE',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getProfitStat',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
    'id': 'Иванович',
    'field': 'PRODUCT',
    'service': 'NONE',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getProfitStat',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getProfitStat?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&field=PRODUCT&service=NONE", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getProfitStat?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&field=PRODUCT&service=NONE"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
    'id' => 'Иванович',
    'field' => 'PRODUCT',
    'service' => 'NONE',
];

$url = 'https://api.selsup.ru/api/stat/getProfitStat?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getProfitStat?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&field=PRODUCT&service=NONE' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Дашборд аналитики

Метод возвращает данные за текущий период и такой же предыдущий.
GET /api/stat/getProfitStatDifferenceToDashBoard

Параметры запроса QUERY

Название Тип Обязательный Описание
request object Да Параметр request

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: FinanceReport DTO для передачи данных по финансовой аналитике
Элементы массива
Поле Тип Описание
shortName string Нет Сокращенное название организации.
categoryName string Нет Название категории.
brandName string Нет Название бренда.
name string Нет Название товара
viewWildberriesId integer Нет Карточка Wildberries
article string Нет Артикул
serviceArticle string Нет Артикул на маркетплейсе
color string Нет Цвет товара.
size string Нет Размер товара.
barcode string Нет Шк товара.
purchasePrice number Нет Закупочная цена.
createdDate string Нет Дата создания карточки.
isDuplicate boolean Нет Признак дубликата карточки.
dateKey string Нет Ключ по дате.
salesCount integer Нет Продажи в шт.
returnsCount integer Нет Возвраты в шт.
totalSalesCount integer Нет Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Нет Продажи в руб.
returnsAmount number Нет Возвраты в руб.
averageReturnsAmount number Нет Возвраты в руб. за 1 ед
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  request: '[object Object]',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getProfitStatDifferenceToDashBoard',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  request?: string;
}

const params: QueryParams = {
  request: '[object Object]',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getProfitStatDifferenceToDashBoard',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'request': '[object Object]',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getProfitStatDifferenceToDashBoard',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getProfitStatDifferenceToDashBoard?request=%5Bobject%20Object%5D", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getProfitStatDifferenceToDashBoard?request=%5Bobject%20Object%5D"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'request' => '[object Object]',
];

$url = 'https://api.selsup.ru/api/stat/getProfitStatDifferenceToDashBoard?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getProfitStatDifferenceToDashBoard?request=%5Bobject%20Object%5D' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Данные по продажам

Метод возвращает данные по продажам за период.
GET /api/stat/getProfitStatByPeriodToDashBoard

Параметры запроса QUERY

Название Тип Обязательный Описание
request object Да Параметр request

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of FinanceReport Строки с результатом поиска
Структура FinanceReport
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Стоимость рекламы ВБ
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
orgName string Название организации
organizationId integer Идентификатор организации
reportNumber string Номер отчета
dateStart string Дата начала отчета по реализации
dateEnd string Дата конца отчета по реализации
logisticToClientAmount number Стоимость логистики к клиенту в руб.
logisticFromClientAmount number Стоимость логистики от клиента в руб.
salesCommission number Комиссия от продажи в руб.
returnsCommission number Возврат комиссии в руб.
profit number Прибыль в руб. grossProfit - fixedOutlay - taxes + selfPayAmount - storageAmount
bankPayment number Оплата по банку в руб.
costPrice number Себестоимость товара в руб. purchasePrice * salesCount
fixedOutlay number Постоянные расходы в руб.(Расходы за весь интервал / кол-во дней в месяце)*на выбранный интервал, если период захватывает больше одного месяца, будет вычисляться для каждого месяца, а после складываться, в случае нескольких отчетах для организации, то будет по каждому отчету браться по коэфициенту продаж
taxes number Налоги в руб.
sellingCosts number Затраты по продаже на МП. getLogistics() + getCommissions() + getPenalty() + getServices() - getAdditionalAndDeduction() - getOtherAmount() + getCostStorage()
rentability number Рентабельность. (profit / totalSalesAmount) * 100
taxRate number Процентная ставка налога
taxType string Тип налогообложения
totalCampaignCost number Стоимость рекламы сумма
ozonCampaignCost number Реклама Озон
basicExpenses number Сумма основных расходов: комиссия + логистика + себестоимость
otherExpenses number Сумма прочих расходов: платная приемка + прочие удержания + прочие начисления + хранения + доплаты
additionalExpenses number Сумма дополнительных расходов: реклама + услуги + штрафы + сумма прочих расходов
ozonDeliveryReturn number Перечисление за доставку от покупателя, должно идти в прибыль
emptyPurchaseAmount integer Сумма продаж, для которых не указана закупочная цена
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  request: '[object Object]',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getProfitStatByPeriodToDashBoard',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  request?: string;
}

const params: QueryParams = {
  request: '[object Object]',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getProfitStatByPeriodToDashBoard',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'request': '[object Object]',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getProfitStatByPeriodToDashBoard',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getProfitStatByPeriodToDashBoard?request=%5Bobject%20Object%5D", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getProfitStatByPeriodToDashBoard?request=%5Bobject%20Object%5D"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'request' => '[object Object]',
];

$url = 'https://api.selsup.ru/api/stat/getProfitStatByPeriodToDashBoard?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getProfitStatByPeriodToDashBoard?request=%5Bobject%20Object%5D' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Получить истори загрузки реализации

Метод получает историю загрузок файлов реализации по МП и фильтрует их
GET /api/stat/getProfitReportFileHistory

Параметры запроса QUERY

Название Тип Обязательный Описание
dateFrom Date Нет Фильтр по дате операции - от
dateTo Date Нет Фильтр по дате операции - до
clientOrganizationId integer Нет Параметр clientOrganizationId
services Array of string Нет Список маркетплейсов
limit integer Нет Ограничение на количество записей. Максимальное значение - 500
page integer Нет Номер страницы начиная с 1
count boolean Нет Возвратить в ответе общее количество записей
sortBy string Нет Поле сортировки записей. Работает только при получении списка.
ascending boolean Нет Порядок сортировки - по возрастанию?. Работает только при получении списка.

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of ProfitReportFileHistory Строки с результатом поиска
Структура ProfitReportFileHistory
Поле Тип Описание
id integer Идентификатор в коллекции при выборке, для фронта
fileHistoryId integer Идентификатор истории загрузки профит репортов из файла
serviceId integer Идентификатор маркетплейса
organizationId integer Идентификатор организации
clientId integer Идентификатор клиента
createdDate string Дата записи
dateFrom string Дата начало отчета
dateTo string Дата окончания отчета
fileName string Название загружаемого файла
userName string Кто загружал
rowCount integer Кол-во строк загруженных
taskId integer Идентификатор таски
service string Сервис
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  clientOrganizationId: 'АО "Торговый дом"',
  services: '',
  limit: '100',
  page: '1',
  count: 'Россия',
  sortBy: 'Пример sortBy',
  ascending: 'true',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getProfitReportFileHistory',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  dateFrom?: string;
  dateTo?: string;
  clientOrganizationId?: number;
  services?: string;
  limit?: number;
  page?: number;
  count?: string;
  sortBy?: string;
  ascending?: string;
}

const params: QueryParams = {
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  clientOrganizationId: 'АО "Торговый дом"',
  services: '',
  limit: '100',
  page: '1',
  count: 'Россия',
  sortBy: 'Пример sortBy',
  ascending: 'true',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getProfitReportFileHistory',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'clientOrganizationId': 'АО "Торговый дом"',
    'services': '',
    'limit': '100',
    'page': '1',
    'count': 'Россия',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getProfitReportFileHistory',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getProfitReportFileHistory?dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&services=&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getProfitReportFileHistory?dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&services=&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'services' => '',
    'limit' => '100',
    'page' => '1',
    'count' => 'Россия',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
];

$url = 'https://api.selsup.ru/api/stat/getProfitReportFileHistory?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getProfitReportFileHistory?dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&services=&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Дашборд аналитики

Метод возвращает данные за текущий период и такой же предыдущий.
GET /api/stat/getProfitDifferenceForPeriod

Параметры запроса QUERY

Название Тип Обязательный Описание
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения
id integer Да Уникальный идентификатор
field "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Да Параметр field
service "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" Да Параметр service

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: ProductStats
Элементы массива
Поле Тип Описание
data Array of object Нет
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
  id: 'Иванович',
  field: 'PRODUCT',
  service: 'NONE',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getProfitDifferenceForPeriod',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
  id?: number;
  field?: string;
  service?: string;
}

const params: QueryParams = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
  id: 'Иванович',
  field: 'PRODUCT',
  service: 'NONE',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getProfitDifferenceForPeriod',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
    'id': 'Иванович',
    'field': 'PRODUCT',
    'service': 'NONE',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getProfitDifferenceForPeriod',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getProfitDifferenceForPeriod?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&field=PRODUCT&service=NONE", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getProfitDifferenceForPeriod?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&field=PRODUCT&service=NONE"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
    'id' => 'Иванович',
    'field' => 'PRODUCT',
    'service' => 'NONE',
];

$url = 'https://api.selsup.ru/api/stat/getProfitDifferenceForPeriod?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getProfitDifferenceForPeriod?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&field=PRODUCT&service=NONE' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Отчет по остаткам

Метод получает данные по остаткам на текущий момент и подсчитывает на какой период еще хватит товара. Обязательно нужно передать в запросе dateTo, dateFromНе обязательные поля clientOrganizationId, serviceIds
GET /api/stat/getProductBalanceResult

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of ProductBalance Строки с результатом поиска
Структура ProductBalance
Поле Тип Описание
id integer Идентификатор
organizationName string Название организации
shortName string Сокращенное название организации
categoryName string Название категории
brandName string Название бренда
article string Артикул
color string Цвет
size string Размер
barcode string Штрих-код
purchasePrice number Закупочная цена
fbsStockCount integer Остаток на складе
fbsStockAmount number Сумма цены товаров на складе
fbsAdditionalAmount number Дополнительные услуги
wildberriesStockCount integer Остаток на складе ВБ
wildberriesStockAmount number Сумма цены товаров на складе ВБ
wildberriesQuantityInWayFromClient integer От клиента, шт
wildberriesQuantityInWayToClient integer К клиенту, шт
wildberriesFinalStockCount integer Итого остаток FBS ВБ, шт
ozonStockCount integer Остаток на складе ОЗОН
ozonStockAmount number Сумма цены товаров на складе ОЗОН
ozonBetweenWarehousesCount integer между складами, шт
ozonFinalStockCount integer Итого остаток FBS ОЗОН, шт
totalBalance integer Всего на балансе
calculatedInstockQuantity integer Рассчитанный остаток
totalBalanceAmount number Сумма цены по товарам на балансе
salesCount integer Кол-во продаж
forecast integer На сколько хватит остатка, дн.
isDuplicate boolean Дубликат?
createdDate string Дата создания карточки
viewWildberriesId integer
mainImageId integer
mainImageUrl string URL обложки товара
productName string Название продукта
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getProductBalanceResult',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getProductBalanceResult',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getProductBalanceResult',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getProductBalanceResult?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getProductBalanceResult?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getProductBalanceResult?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getProductBalanceResult?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Товарная аналитика

Метод получает данные по товарной аналитике. Обязательно нужно передать в запросе dateTo, dateFrom, productAnalyticField.Не обязательные поля clientOrganizationId, serviceIds.Поле - period не используется.
GET /api/stat/getProductAnalyticsByField

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of ProductAnalytics Строки с результатом поиска
Структура ProductAnalytics
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Затраты на рекламу, получаем только по ВБиз импорта статистики по рекламным кампаниям
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
productId integer Идентификатор товара
productViewId integer Идентификатор цвета товара
productModelId integer Идентификатор модели товара
brandId integer Идентификатор бренда товара
categoryId integer Идентификатор категории товара
deleted boolean Товар удален?
totalCount integer Всего найдено строк для отчетов
instockQuantity integer Кол-во остатков на складе FBS
fboQuantity integer Количество остатков на складах FBO
ozonStockCount integer Количество остатков на складах Ozon
wildberriesStockCount integer Количество остатков на складах Wildberries
yandexMarketStockCount integer Количество остатков на складах Yandex.Market
ozonArticle string Уникальный артикул товара для озон
wbArticle string Название на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
lastWildberriesSaleDate string Дата последней продажи WB
lastWildberriesOrderDate string Дата последнего заказа на WB
lastOzonSaleDate string Дата последней продажи Ozon
lastOzonOrderDate string Дата последнего заказа на Ozon
service string Сервис
orgTaxRate number Процентная ставка налога организации
prodTaxRate number Процентная ставка налога товара
taxType string Тип налогообложения
netProfitRub number Чистая прибыль
netProfitRubPerUnit number Чистая прибыль за 1ед.
otherExpenses number Дополнительныеы расходы на проданный товар, руб.
managerWb string Менеджер WB
managerYandex string Менеджер Yandex
managerOzon string Менеджер Ozon
managerMain string Менеджер Основной
organizationId integer Идентификатор организации
mainImageUrl string Ссылка на основное изображение товара
serviceId ProductAnalytics DTO для передачи данных по товарной аналитике
Структура ProductAnalytics
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Затраты на рекламу, получаем только по ВБиз импорта статистики по рекламным кампаниям
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
productId integer Идентификатор товара
productViewId integer Идентификатор цвета товара
productModelId integer Идентификатор модели товара
brandId integer Идентификатор бренда товара
categoryId integer Идентификатор категории товара
deleted boolean Товар удален?
totalCount integer Всего найдено строк для отчетов
instockQuantity integer Кол-во остатков на складе FBS
fboQuantity integer Количество остатков на складах FBO
ozonStockCount integer Количество остатков на складах Ozon
wildberriesStockCount integer Количество остатков на складах Wildberries
yandexMarketStockCount integer Количество остатков на складах Yandex.Market
ozonArticle string Уникальный артикул товара для озон
wbArticle string Название на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
lastWildberriesSaleDate string Дата последней продажи WB
lastWildberriesOrderDate string Дата последнего заказа на WB
lastOzonSaleDate string Дата последней продажи Ozon
lastOzonOrderDate string Дата последнего заказа на Ozon
service string Сервис
orgTaxRate number Процентная ставка налога организации
prodTaxRate number Процентная ставка налога товара
taxType string Тип налогообложения
netProfitRub number Чистая прибыль
netProfitRubPerUnit number Чистая прибыль за 1ед.
otherExpenses number Дополнительныеы расходы на проданный товар, руб.
managerWb string Менеджер WB
managerYandex string Менеджер Yandex
managerOzon string Менеджер Ozon
managerMain string Менеджер Основной
organizationId integer Идентификатор организации
mainImageUrl string Ссылка на основное изображение товара
serviceId object DTO для передачи данных по товарной аналитике
Структура object
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Затраты на рекламу, получаем только по ВБиз импорта статистики по рекламным кампаниям
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
productId integer Идентификатор товара
productViewId integer Идентификатор цвета товара
productModelId integer Идентификатор модели товара
brandId integer Идентификатор бренда товара
categoryId integer Идентификатор категории товара
deleted boolean Товар удален?
totalCount integer Всего найдено строк для отчетов
instockQuantity integer Кол-во остатков на складе FBS
fboQuantity integer Количество остатков на складах FBO
ozonStockCount integer Количество остатков на складах Ozon
wildberriesStockCount integer Количество остатков на складах Wildberries
yandexMarketStockCount integer Количество остатков на складах Yandex.Market
ozonArticle string Уникальный артикул товара для озон
wbArticle string Название на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
lastWildberriesSaleDate string Дата последней продажи WB
lastWildberriesOrderDate string Дата последнего заказа на WB
lastOzonSaleDate string Дата последней продажи Ozon
lastOzonOrderDate string Дата последнего заказа на Ozon
service string Сервис
orgTaxRate number Процентная ставка налога организации
prodTaxRate number Процентная ставка налога товара
taxType string Тип налогообложения
netProfitRub number Чистая прибыль
netProfitRubPerUnit number Чистая прибыль за 1ед.
otherExpenses number Дополнительныеы расходы на проданный товар, руб.
managerWb string Менеджер WB
managerYandex string Менеджер Yandex
managerOzon string Менеджер Ozon
managerMain string Менеджер Основной
organizationId integer Идентификатор организации
mainImageUrl string Ссылка на основное изображение товара
serviceId object DTO для передачи данных по товарной аналитике
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getProductAnalyticsByField',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getProductAnalyticsByField',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getProductAnalyticsByField',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getProductAnalyticsByField?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getProductAnalyticsByField?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getProductAnalyticsByField?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getProductAnalyticsByField?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Отчет по проблемным товарам

Метод получает данные по проблемным товарам.
GET /api/stat/getProblematicProductStats

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of ProductAnalytics Строки с результатом поиска
Структура ProductAnalytics
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Затраты на рекламу, получаем только по ВБиз импорта статистики по рекламным кампаниям
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
productId integer Идентификатор товара
productViewId integer Идентификатор цвета товара
productModelId integer Идентификатор модели товара
brandId integer Идентификатор бренда товара
categoryId integer Идентификатор категории товара
deleted boolean Товар удален?
totalCount integer Всего найдено строк для отчетов
instockQuantity integer Кол-во остатков на складе FBS
fboQuantity integer Количество остатков на складах FBO
ozonStockCount integer Количество остатков на складах Ozon
wildberriesStockCount integer Количество остатков на складах Wildberries
yandexMarketStockCount integer Количество остатков на складах Yandex.Market
ozonArticle string Уникальный артикул товара для озон
wbArticle string Название на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
lastWildberriesSaleDate string Дата последней продажи WB
lastWildberriesOrderDate string Дата последнего заказа на WB
lastOzonSaleDate string Дата последней продажи Ozon
lastOzonOrderDate string Дата последнего заказа на Ozon
service string Сервис
orgTaxRate number Процентная ставка налога организации
prodTaxRate number Процентная ставка налога товара
taxType string Тип налогообложения
netProfitRub number Чистая прибыль
netProfitRubPerUnit number Чистая прибыль за 1ед.
otherExpenses number Дополнительныеы расходы на проданный товар, руб.
managerWb string Менеджер WB
managerYandex string Менеджер Yandex
managerOzon string Менеджер Ozon
managerMain string Менеджер Основной
organizationId integer Идентификатор организации
mainImageUrl string Ссылка на основное изображение товара
serviceId ProductAnalytics DTO для передачи данных по товарной аналитике
Структура ProductAnalytics
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Затраты на рекламу, получаем только по ВБиз импорта статистики по рекламным кампаниям
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
productId integer Идентификатор товара
productViewId integer Идентификатор цвета товара
productModelId integer Идентификатор модели товара
brandId integer Идентификатор бренда товара
categoryId integer Идентификатор категории товара
deleted boolean Товар удален?
totalCount integer Всего найдено строк для отчетов
instockQuantity integer Кол-во остатков на складе FBS
fboQuantity integer Количество остатков на складах FBO
ozonStockCount integer Количество остатков на складах Ozon
wildberriesStockCount integer Количество остатков на складах Wildberries
yandexMarketStockCount integer Количество остатков на складах Yandex.Market
ozonArticle string Уникальный артикул товара для озон
wbArticle string Название на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
lastWildberriesSaleDate string Дата последней продажи WB
lastWildberriesOrderDate string Дата последнего заказа на WB
lastOzonSaleDate string Дата последней продажи Ozon
lastOzonOrderDate string Дата последнего заказа на Ozon
service string Сервис
orgTaxRate number Процентная ставка налога организации
prodTaxRate number Процентная ставка налога товара
taxType string Тип налогообложения
netProfitRub number Чистая прибыль
netProfitRubPerUnit number Чистая прибыль за 1ед.
otherExpenses number Дополнительныеы расходы на проданный товар, руб.
managerWb string Менеджер WB
managerYandex string Менеджер Yandex
managerOzon string Менеджер Ozon
managerMain string Менеджер Основной
organizationId integer Идентификатор организации
mainImageUrl string Ссылка на основное изображение товара
serviceId object DTO для передачи данных по товарной аналитике
Структура object
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Затраты на рекламу, получаем только по ВБиз импорта статистики по рекламным кампаниям
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
productId integer Идентификатор товара
productViewId integer Идентификатор цвета товара
productModelId integer Идентификатор модели товара
brandId integer Идентификатор бренда товара
categoryId integer Идентификатор категории товара
deleted boolean Товар удален?
totalCount integer Всего найдено строк для отчетов
instockQuantity integer Кол-во остатков на складе FBS
fboQuantity integer Количество остатков на складах FBO
ozonStockCount integer Количество остатков на складах Ozon
wildberriesStockCount integer Количество остатков на складах Wildberries
yandexMarketStockCount integer Количество остатков на складах Yandex.Market
ozonArticle string Уникальный артикул товара для озон
wbArticle string Название на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
lastWildberriesSaleDate string Дата последней продажи WB
lastWildberriesOrderDate string Дата последнего заказа на WB
lastOzonSaleDate string Дата последней продажи Ozon
lastOzonOrderDate string Дата последнего заказа на Ozon
service string Сервис
orgTaxRate number Процентная ставка налога организации
prodTaxRate number Процентная ставка налога товара
taxType string Тип налогообложения
netProfitRub number Чистая прибыль
netProfitRubPerUnit number Чистая прибыль за 1ед.
otherExpenses number Дополнительныеы расходы на проданный товар, руб.
managerWb string Менеджер WB
managerYandex string Менеджер Yandex
managerOzon string Менеджер Ozon
managerMain string Менеджер Основной
organizationId integer Идентификатор организации
mainImageUrl string Ссылка на основное изображение товара
serviceId object DTO для передачи данных по товарной аналитике
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getProblematicProductStats',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getProblematicProductStats',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getProblematicProductStats',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getProblematicProductStats?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getProblematicProductStats?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getProblematicProductStats?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getProblematicProductStats?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Получить план продаж по типу

Метод возвращает данные по плану продаж по типу
GET /api/stat/getPlanSalesByField

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticFields Array of string Нет Параметр productAnalyticFields
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of PlanSales Строки с результатом поиска
Структура PlanSales
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
id integer
clientId integer
organizationId integer
date string
categoryId integer
viewId integer
productId integer
service string Сервис
planCount integer
planAmount number
totalCount integer
month string
year integer
week integer
factCount integer
factAmount number
dateFrom string Начало периода
dateTo string Конец периода
timeZone integer Тайм зона
period string Период WEEK, Month
serviceId integer
factAmountInPercent number Выполнение плана в процентах
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticFields: '',
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getPlanSalesByField',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticFields?: string;
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticFields: '',
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getPlanSalesByField',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticFields': '',
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getPlanSalesByField',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getPlanSalesByField?productAnalyticFields=&productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getPlanSalesByField?productAnalyticFields=&productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticFields' => '',
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getPlanSalesByField?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getPlanSalesByField?productAnalyticFields=&productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Структура расходов

Метод получает данные по структуре штрафов.Обязательно нужно передать в запросе dateTo, dateFrom, periodНе обязательные поля clientOrganizationId, serviceIds
GET /api/stat/getPenaltyStructure

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: RowStructureForFinanceTable
Элементы массива
Поле Тип Описание
id integer Нет
name string Нет
cost number Нет
totalSales number Нет
percent number Нет
absPercent number Нет
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getPenaltyStructure',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getPenaltyStructure',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getPenaltyStructure',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getPenaltyStructure?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getPenaltyStructure?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getPenaltyStructure?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getPenaltyStructure?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Заказы

Метод возвращает данные о заказах за период
GET /api/stat/getOrderSaleStat

Параметры запроса QUERY

Название Тип Обязательный Описание
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения
id integer Да Уникальный идентификатор
service "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" Нет Параметр service
field "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Да Параметр field

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
data Array of object
Структура object
Поле Тип Описание
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
  id: 'Иванович',
  service: 'NONE',
  field: 'PRODUCT',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getOrderSaleStat',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
  id?: number;
  service?: string;
  field?: string;
}

const params: QueryParams = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
  id: 'Иванович',
  service: 'NONE',
  field: 'PRODUCT',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getOrderSaleStat',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
    'id': 'Иванович',
    'service': 'NONE',
    'field': 'PRODUCT',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getOrderSaleStat',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getOrderSaleStat?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&service=NONE&field=PRODUCT", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getOrderSaleStat?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&service=NONE&field=PRODUCT"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
    'id' => 'Иванович',
    'service' => 'NONE',
    'field' => 'PRODUCT',
];

$url = 'https://api.selsup.ru/api/stat/getOrderSaleStat?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getOrderSaleStat?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&service=NONE&field=PRODUCT' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Отчет по по заказам

Метод получает данные по заказам с группировкой по заказу и товару (для одного заказа с 3 разными товарами в отчете будет 3 строки).
GET /api/stat/getOrderReport

Параметры запроса QUERY

Название Тип Обязательный Описание
actual boolean Нет Отображать только актуальные заказы - не закрытые
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
serviceWarehouseId integer Нет Внешний номер склада
externalOrderId integer Нет Внешний номер заказа
invoiceNumber integer Нет Номер счета
article string Нет Фильтр по артикулу модели товара в заказе
product string Нет Фильтр по названию товара в заказе
organizations integer Нет Фильтр по ID организации. Можно передавать несколько значений organizations=123&organizations=345
query string Нет Поисковый запрос для фильтрации заказов по номеру или названию
userId integer Нет ID пользователя который брал на сборку заказ
service "NONE""WILDBERRIES""OZON""YANDEX_MARKET""FAMILIYA""NATIONAL_CATALOG""ALIEXPRESS""OTHER""MOY_SKLAD""SBER_MEGA_MARKET""CISLINK""ONE_C""AVITO""LEROY_MERLIN""DETMIR""KAZAN_EXPRESS""EVOTOR""WEBASYST""AMAZON""EBAY""SIMALAND""INSALES""LAMODA""OZON_PERFORMANCE""WALMART""GOOGLE""YANDEX_DISC""EMAIL""WOOCOMMERCE" Нет Фильтр заказа по маркетплейсу
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
statuses Array of string Нет Фильтр по статусам заказа. Можно передавать несколько значений statuses=CREATED&statuses=PACKING
withoutSupply boolean Нет Фильтр по заказам не прикрепленным к поставке?
orderProductId integer Нет Фильтр по ID позиции в заказе
productId integer Нет Фильтр по ID товара из заказа
hasCollectTask boolean Нет Фильтр по наличию у заказа сборочного задания?
organizationId integer Нет Фильтр по ID организации заказа
updateInService boolean Нет Заказы, которые стоят в очереди на изменение статуса на маркетплейсе?
hasServiceError boolean Нет Заказы с ошибкой обновления статуса на маркетплейсе?
noLabel boolean Нет Фильтрует заказы без этикетки?
noMsOrder boolean Нет Фильтрует по заказам не созданным в Моем складе?
noMsDemand boolean Нет Фильтрует по заказам с несозданными отгрузками в Моем складе?
ids integer Нет ID заказов. Можно передавать несколько значений ids=123&ids=345
supplyId integer Нет ID поставки, в которой отгружается заказ
notCollected boolean Нет Заказы, которые не собирались через SelSup?
dbs boolean Нет DBS заказы?
express boolean Нет Express заказы?
fbs boolean Нет FBS заказы?
noWarehouse boolean Нет Заказы без склада?
closeDate Date Нет Фильтр по дате сборки заказа - конкретный день
modifiedDate Date Нет Фильтр по дате изменения заказа - статуса или любой информации о заказе начиная с этой даты
modifiedDateTo Date Нет Фильтр по дате изменения заказа - статуса или любой информации о заказе до этой даты
incomeId integer Нет ID закупки из которого создан заказ
bindingOrderId integer Нет ID заказа, которому делаем возврат
closeDateFrom Date Нет Фильтр по дате сборки заказа от - ISO
closeDateTo Date Нет Фильтр по дате сборки заказа до - ISO
orderDate Date Нет Фильтр по дате заказа
deliveryDate Date Нет Фильтр по дате доставки заказа
deliveryDateFrom Date Нет Фильтр по дате доставки заказа от
deliveryDateTo Date Нет Фильтр по дате доставки заказа до
forMoySklad boolean Нет Для создания в МойСклад?
warehouseId integer Нет Фильтр по ID склада, с которого отгружается заказ
warehouseIds integer Нет Фильтр по ID складам, с которого отгружается заказ. Можно передавать несколько значений warehouseIds=123&warehouseIds=345
dateFrom Date Нет Фильтр по дате заказа - от
dateTo Date Нет Фильтр по дате заказа - до
timeZone integer Нет ID часового пояса клиента по UTC в часах, например 3
markingStatus "UNKNOWN""CARDS_SEND""CARDS_CREATED""SUZ_ORDERS_CREATED""MARKS_RECEIVED""CARDS_SIGNED""DOCUMENT_CREATED""SUCCESS""NO_NEED_MARKING" Нет Фильтр по статусу в честном знаке
deleted boolean Нет Показать удаленные заказы?
collectLabel boolean Нет Только для печати в PDF. Признак необходимости распечатать сборочную этикетку для "умной ленты"?
sortOrdersByDate Date Нет Только для печати в PDF. Признак необходимости распечатать сборочную этикетку для "умной ленты"?
sortBySku boolean Нет Только для печати в PDF. Признак необходимости использовать в сортировке данные о товарах объединенных по SKU?
notGroupByOrganization boolean Нет Только для печати в PDF. Признак того, что все организации сортируются одним списком?
notGroupByService boolean Нет Только для печати в PDF. Признак того, что все маркетплейсы сортируются одним списком?
productLabel boolean Нет Только для печати в PDF. Признак необходимости распечатать этикетку товара в ленте?
servicesForLabel Array of string Нет Сервисы для которых нужна печать в PDF
infoLabel boolean Нет Только для печати в PDF. Признак необходимости распечатать информационную этикетку для ленты заказов?
grouped boolean Нет Отдает сгруппированные позиции из заказов. Только для выгрузки в Excel?
replaceSetByComponent boolean Нет Заменяет в заказах комплекты на компоненты?
replaceSetsByComponentsIncome boolean Нет Заменяет в заказах комплекты на компоненты в файле закупки?
collectDeliveryLabel boolean Нет Только для печати в PDF. Признак необходимости распечатать накладную службы доставки для "умной ленты"?
shippingServicesForLabel Array of string Нет Сервисы доставки для которых нужна печать накладной в PDF
orderId integer Нет ID заказа
hasVideoFixation boolean Нет Идентификатор была ли видео фиксация?
withProducts boolean Нет Признак, что заказы необходимо отдать c товарами?
passageIds integer Нет Фильтр по ID проходов. Можно передавать несколько значений passageIds=123&passageIds=345
withContractor boolean Нет Включить информацию о поставщиках в выгрузку?
limit integer Нет Ограничение на количество записей. Максимальное значение - 500
page integer Нет Номер страницы начиная с 1
count boolean Нет Возвратить в ответе общее количество записей
sortBy "ID""CREATEDDATE""ORDERCREATED""CREATED""CREATEDUSER""STATUS""SERVICE""TYPE""BOXTYPE""NAME""ORGANIZATIONID""WAREHOUSE""INVOICENUMBER""EXTERNALORDERID""QUEUE""SUPPLYID""CLOSEDATE""STARTCOLLECTDATE""CLOSEUSERID""USERID""PRICE""PRODUCT""COLLECTORDERTASKID""DELIVERYDATE""MARKINGSTATUS""QUANTITY""DATE""SERVICEWAREHOUSEID" Нет Поле для сортировки
ascending boolean Нет Порядок сортировки - по возрастанию?. Работает только при получении списка.

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of OrderReport Строки с результатом поиска
Структура OrderReport
Поле Тип Описание
id integer Идентификатор
orderId integer Идентификатор заказа
shortOrgName string Сокращенное название организации.
service string Сервис
mainImageUrl string Ссылка на основное изображение товара на маркетплейсе
orderType string Тип заказа.
brandName string Бренд.
categoryName string Категория Selsup.
productName string Название товара.
orderStatus string Статус заказа
orderDate string Дата заказа.
orderCollectedDate string Дата сборки заказа.
orderStartCollectDate string Дата начала сборки заказа.
saleDate string Дата покупки.
countDaysInRoad integer Дней в пути.
orderRegion string Регион заказа.
salesAmount number Цена продажи.
costPrice number Себестоимость.
commission number Комиссия в руб.
logistics number Логистика.
totalSellingExpenses number Итого расходы по продаже на МП.
grossProfit number Валовая прибыль.
orderNumber string Номер заказа.
sticker string Стикер.
deliveryNumber string Номер поставки.
ozonId string Идентификатор товара на озоне.
wildberriesId string Идентификатор товара на WB.
productLink string Ссылка на карточку товара на маркетплейсе.
article string Артикул.
color string Цвет товара.
size string Размер товара.
barcode string Штрихкод.
ozonArticle string Уникальный артикул товара для озон
wbArticle string Артикул на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
externalArticle string Внешний артикул
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
siteArticle string Артикул на сайте
serviceWarehouse string Склад отгрузки
quantity integer Количество данного товара в заказе
ozonPostingNumber string Номер поставки OZON
wildberriesRid string Номер заказа WB
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  actual: 'true',
  type: 'standard',
  serviceWarehouseId: 'Пример serviceWarehouseId',
  externalOrderId: 'Пример externalOrderId',
  invoiceNumber: '1',
  article: 'ART-001',
  product: 'Товар №1',
  organizations: 'АО "Торговый дом"',
  query: 'Пример query',
  userId: '123',
  service: 'NONE',
  status: 'active',
  statuses: 'active',
  withoutSupply: 'true',
  orderProductId: '123',
  productId: '123',
  hasCollectTask: 'true',
  organizationId: 'АО "Торговый дом"',
  updateInService: 'true',
  hasServiceError: 'true',
  noLabel: 'true',
  noMsOrder: 'true',
  noMsDemand: 'true',
  ids: '',
  supplyId: '123',
  notCollected: 'true',
  dbs: 'true',
  express: 'true',
  fbs: 'true',
  noWarehouse: 'true',
  closeDate: 'Пример closeDate',
  modifiedDate: '2024-01-15T10:30:00Z',
  modifiedDateTo: '2024-01-15T10:30:00Z',
  incomeId: '123',
  bindingOrderId: '123',
  closeDateFrom: '2024-01-15T10:30:00Z',
  closeDateTo: '2024-01-15T10:30:00Z',
  orderDate: 'Пример orderDate',
  deliveryDate: 'Пример deliveryDate',
  deliveryDateFrom: 'Пример deliveryDateFrom',
  deliveryDateTo: 'Пример deliveryDateTo',
  forMoySklad: 'true',
  warehouseId: '123',
  warehouseIds: '',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  timeZone: '1',
  markingStatus: 'active',
  deleted: 'false',
  collectLabel: 'true',
  sortOrdersByDate: 'true',
  sortBySku: 'SKU-12345',
  notGroupByOrganization: 'АО "Торговый дом"',
  notGroupByService: 'true',
  productLabel: 'true',
  servicesForLabel: '',
  infoLabel: 'true',
  grouped: 'true',
  replaceSetByComponent: 'true',
  replaceSetsByComponentsIncome: 'true',
  collectDeliveryLabel: 'true',
  shippingServicesForLabel: '',
  orderId: '123',
  hasVideoFixation: 'true',
  withProducts: 'true',
  passageIds: '',
  withContractor: 'true',
  limit: '100',
  page: '1',
  count: 'Россия',
  sortBy: 'ID',
  ascending: 'true',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getOrderReport',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  actual?: string;
  type?: string;
  serviceWarehouseId?: string;
  externalOrderId?: string;
  invoiceNumber?: number;
  article?: string;
  product?: string;
  organizations?: string;
  query?: string;
  userId?: number;
  service?: string;
  status?: string;
  statuses?: string;
  withoutSupply?: string;
  orderProductId?: number;
  productId?: number;
  hasCollectTask?: string;
  organizationId?: number;
  updateInService?: string;
  hasServiceError?: string;
  noLabel?: string;
  noMsOrder?: string;
  noMsDemand?: string;
  ids?: string;
  supplyId?: number;
  notCollected?: string;
  dbs?: string;
  express?: string;
  fbs?: string;
  noWarehouse?: string;
  closeDate?: string;
  modifiedDate?: string;
  modifiedDateTo?: string;
  incomeId?: number;
  bindingOrderId?: number;
  closeDateFrom?: string;
  closeDateTo?: string;
  orderDate?: string;
  deliveryDate?: string;
  deliveryDateFrom?: string;
  deliveryDateTo?: string;
  forMoySklad?: string;
  warehouseId?: number;
  warehouseIds?: string;
  dateFrom?: string;
  dateTo?: string;
  timeZone?: number;
  markingStatus?: string;
  deleted?: string;
  collectLabel?: string;
  sortOrdersByDate?: string;
  sortBySku?: string;
  notGroupByOrganization?: string;
  notGroupByService?: string;
  productLabel?: string;
  servicesForLabel?: string;
  infoLabel?: string;
  grouped?: string;
  replaceSetByComponent?: string;
  replaceSetsByComponentsIncome?: string;
  collectDeliveryLabel?: string;
  shippingServicesForLabel?: string;
  orderId?: number;
  hasVideoFixation?: string;
  withProducts?: string;
  passageIds?: string;
  withContractor?: string;
  limit?: number;
  page?: number;
  count?: string;
  sortBy?: string;
  ascending?: string;
}

const params: QueryParams = {
  actual: 'true',
  type: 'standard',
  serviceWarehouseId: 'Пример serviceWarehouseId',
  externalOrderId: 'Пример externalOrderId',
  invoiceNumber: '1',
  article: 'ART-001',
  product: 'Товар №1',
  organizations: 'АО "Торговый дом"',
  query: 'Пример query',
  userId: '123',
  service: 'NONE',
  status: 'active',
  statuses: 'active',
  withoutSupply: 'true',
  orderProductId: '123',
  productId: '123',
  hasCollectTask: 'true',
  organizationId: 'АО "Торговый дом"',
  updateInService: 'true',
  hasServiceError: 'true',
  noLabel: 'true',
  noMsOrder: 'true',
  noMsDemand: 'true',
  ids: '',
  supplyId: '123',
  notCollected: 'true',
  dbs: 'true',
  express: 'true',
  fbs: 'true',
  noWarehouse: 'true',
  closeDate: 'Пример closeDate',
  modifiedDate: '2024-01-15T10:30:00Z',
  modifiedDateTo: '2024-01-15T10:30:00Z',
  incomeId: '123',
  bindingOrderId: '123',
  closeDateFrom: '2024-01-15T10:30:00Z',
  closeDateTo: '2024-01-15T10:30:00Z',
  orderDate: 'Пример orderDate',
  deliveryDate: 'Пример deliveryDate',
  deliveryDateFrom: 'Пример deliveryDateFrom',
  deliveryDateTo: 'Пример deliveryDateTo',
  forMoySklad: 'true',
  warehouseId: '123',
  warehouseIds: '',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  timeZone: '1',
  markingStatus: 'active',
  deleted: 'false',
  collectLabel: 'true',
  sortOrdersByDate: 'true',
  sortBySku: 'SKU-12345',
  notGroupByOrganization: 'АО "Торговый дом"',
  notGroupByService: 'true',
  productLabel: 'true',
  servicesForLabel: '',
  infoLabel: 'true',
  grouped: 'true',
  replaceSetByComponent: 'true',
  replaceSetsByComponentsIncome: 'true',
  collectDeliveryLabel: 'true',
  shippingServicesForLabel: '',
  orderId: '123',
  hasVideoFixation: 'true',
  withProducts: 'true',
  passageIds: '',
  withContractor: 'true',
  limit: '100',
  page: '1',
  count: 'Россия',
  sortBy: 'ID',
  ascending: 'true',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getOrderReport',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'actual': 'true',
    'type': 'standard',
    'serviceWarehouseId': 'Пример serviceWarehouseId',
    'externalOrderId': 'Пример externalOrderId',
    'invoiceNumber': '1',
    'article': 'ART-001',
    'product': 'Товар №1',
    'organizations': 'АО "Торговый дом"',
    'query': 'Пример query',
    'userId': '123',
    'service': 'NONE',
    'status': 'active',
    'statuses': 'active',
    'withoutSupply': 'true',
    'orderProductId': '123',
    'productId': '123',
    'hasCollectTask': 'true',
    'organizationId': 'АО "Торговый дом"',
    'updateInService': 'true',
    'hasServiceError': 'true',
    'noLabel': 'true',
    'noMsOrder': 'true',
    'noMsDemand': 'true',
    'ids': '',
    'supplyId': '123',
    'notCollected': 'true',
    'dbs': 'true',
    'express': 'true',
    'fbs': 'true',
    'noWarehouse': 'true',
    'closeDate': 'Пример closeDate',
    'modifiedDate': '2024-01-15T10:30:00Z',
    'modifiedDateTo': '2024-01-15T10:30:00Z',
    'incomeId': '123',
    'bindingOrderId': '123',
    'closeDateFrom': '2024-01-15T10:30:00Z',
    'closeDateTo': '2024-01-15T10:30:00Z',
    'orderDate': 'Пример orderDate',
    'deliveryDate': 'Пример deliveryDate',
    'deliveryDateFrom': 'Пример deliveryDateFrom',
    'deliveryDateTo': 'Пример deliveryDateTo',
    'forMoySklad': 'true',
    'warehouseId': '123',
    'warehouseIds': '',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'timeZone': '1',
    'markingStatus': 'active',
    'deleted': 'false',
    'collectLabel': 'true',
    'sortOrdersByDate': 'true',
    'sortBySku': 'SKU-12345',
    'notGroupByOrganization': 'АО "Торговый дом"',
    'notGroupByService': 'true',
    'productLabel': 'true',
    'servicesForLabel': '',
    'infoLabel': 'true',
    'grouped': 'true',
    'replaceSetByComponent': 'true',
    'replaceSetsByComponentsIncome': 'true',
    'collectDeliveryLabel': 'true',
    'shippingServicesForLabel': '',
    'orderId': '123',
    'hasVideoFixation': 'true',
    'withProducts': 'true',
    'passageIds': '',
    'withContractor': 'true',
    'limit': '100',
    'page': '1',
    'count': 'Россия',
    'sortBy': 'ID',
    'ascending': 'true',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getOrderReport',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getOrderReport?actual=true&type=standard&serviceWarehouseId=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20serviceWarehouseId&externalOrderId=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20externalOrderId&invoiceNumber=1&article=ART-001&product=%D0%A2%D0%BE%D0%B2%D0%B0%D1%80%20%E2%84%961&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&userId=123&service=NONE&status=active&statuses=active&withoutSupply=true&orderProductId=123&productId=123&hasCollectTask=true&organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&updateInService=true&hasServiceError=true&noLabel=true&noMsOrder=true&noMsDemand=true&ids=&supplyId=123&notCollected=true&dbs=true&express=true&fbs=true&noWarehouse=true&closeDate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20closeDate&modifiedDate=2024-01-15T10%3A30%3A00Z&modifiedDateTo=2024-01-15T10%3A30%3A00Z&incomeId=123&bindingOrderId=123&closeDateFrom=2024-01-15T10%3A30%3A00Z&closeDateTo=2024-01-15T10%3A30%3A00Z&orderDate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20orderDate&deliveryDate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20deliveryDate&deliveryDateFrom=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20deliveryDateFrom&deliveryDateTo=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20deliveryDateTo&forMoySklad=true&warehouseId=123&warehouseIds=&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&timeZone=1&markingStatus=active&deleted=false&collectLabel=true&sortOrdersByDate=true&sortBySku=SKU-12345&notGroupByOrganization=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&notGroupByService=true&productLabel=true&servicesForLabel=&infoLabel=true&grouped=true&replaceSetByComponent=true&replaceSetsByComponentsIncome=true&collectDeliveryLabel=true&shippingServicesForLabel=&orderId=123&hasVideoFixation=true&withProducts=true&passageIds=&withContractor=true&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=ID&ascending=true", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getOrderReport?actual=true&type=standard&serviceWarehouseId=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20serviceWarehouseId&externalOrderId=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20externalOrderId&invoiceNumber=1&article=ART-001&product=%D0%A2%D0%BE%D0%B2%D0%B0%D1%80%20%E2%84%961&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&userId=123&service=NONE&status=active&statuses=active&withoutSupply=true&orderProductId=123&productId=123&hasCollectTask=true&organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&updateInService=true&hasServiceError=true&noLabel=true&noMsOrder=true&noMsDemand=true&ids=&supplyId=123&notCollected=true&dbs=true&express=true&fbs=true&noWarehouse=true&closeDate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20closeDate&modifiedDate=2024-01-15T10%3A30%3A00Z&modifiedDateTo=2024-01-15T10%3A30%3A00Z&incomeId=123&bindingOrderId=123&closeDateFrom=2024-01-15T10%3A30%3A00Z&closeDateTo=2024-01-15T10%3A30%3A00Z&orderDate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20orderDate&deliveryDate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20deliveryDate&deliveryDateFrom=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20deliveryDateFrom&deliveryDateTo=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20deliveryDateTo&forMoySklad=true&warehouseId=123&warehouseIds=&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&timeZone=1&markingStatus=active&deleted=false&collectLabel=true&sortOrdersByDate=true&sortBySku=SKU-12345&notGroupByOrganization=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&notGroupByService=true&productLabel=true&servicesForLabel=&infoLabel=true&grouped=true&replaceSetByComponent=true&replaceSetsByComponentsIncome=true&collectDeliveryLabel=true&shippingServicesForLabel=&orderId=123&hasVideoFixation=true&withProducts=true&passageIds=&withContractor=true&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=ID&ascending=true"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'actual' => 'true',
    'type' => 'standard',
    'serviceWarehouseId' => 'Пример serviceWarehouseId',
    'externalOrderId' => 'Пример externalOrderId',
    'invoiceNumber' => '1',
    'article' => 'ART-001',
    'product' => 'Товар №1',
    'organizations' => 'АО "Торговый дом"',
    'query' => 'Пример query',
    'userId' => '123',
    'service' => 'NONE',
    'status' => 'active',
    'statuses' => 'active',
    'withoutSupply' => 'true',
    'orderProductId' => '123',
    'productId' => '123',
    'hasCollectTask' => 'true',
    'organizationId' => 'АО "Торговый дом"',
    'updateInService' => 'true',
    'hasServiceError' => 'true',
    'noLabel' => 'true',
    'noMsOrder' => 'true',
    'noMsDemand' => 'true',
    'ids' => '',
    'supplyId' => '123',
    'notCollected' => 'true',
    'dbs' => 'true',
    'express' => 'true',
    'fbs' => 'true',
    'noWarehouse' => 'true',
    'closeDate' => 'Пример closeDate',
    'modifiedDate' => '2024-01-15T10:30:00Z',
    'modifiedDateTo' => '2024-01-15T10:30:00Z',
    'incomeId' => '123',
    'bindingOrderId' => '123',
    'closeDateFrom' => '2024-01-15T10:30:00Z',
    'closeDateTo' => '2024-01-15T10:30:00Z',
    'orderDate' => 'Пример orderDate',
    'deliveryDate' => 'Пример deliveryDate',
    'deliveryDateFrom' => 'Пример deliveryDateFrom',
    'deliveryDateTo' => 'Пример deliveryDateTo',
    'forMoySklad' => 'true',
    'warehouseId' => '123',
    'warehouseIds' => '',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'timeZone' => '1',
    'markingStatus' => 'active',
    'deleted' => 'false',
    'collectLabel' => 'true',
    'sortOrdersByDate' => 'true',
    'sortBySku' => 'SKU-12345',
    'notGroupByOrganization' => 'АО "Торговый дом"',
    'notGroupByService' => 'true',
    'productLabel' => 'true',
    'servicesForLabel' => '',
    'infoLabel' => 'true',
    'grouped' => 'true',
    'replaceSetByComponent' => 'true',
    'replaceSetsByComponentsIncome' => 'true',
    'collectDeliveryLabel' => 'true',
    'shippingServicesForLabel' => '',
    'orderId' => '123',
    'hasVideoFixation' => 'true',
    'withProducts' => 'true',
    'passageIds' => '',
    'withContractor' => 'true',
    'limit' => '100',
    'page' => '1',
    'count' => 'Россия',
    'sortBy' => 'ID',
    'ascending' => 'true',
];

$url = 'https://api.selsup.ru/api/stat/getOrderReport?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getOrderReport?actual=true&type=standard&serviceWarehouseId=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20serviceWarehouseId&externalOrderId=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20externalOrderId&invoiceNumber=1&article=ART-001&product=%D0%A2%D0%BE%D0%B2%D0%B0%D1%80%20%E2%84%961&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&userId=123&service=NONE&status=active&statuses=active&withoutSupply=true&orderProductId=123&productId=123&hasCollectTask=true&organizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&updateInService=true&hasServiceError=true&noLabel=true&noMsOrder=true&noMsDemand=true&ids=&supplyId=123&notCollected=true&dbs=true&express=true&fbs=true&noWarehouse=true&closeDate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20closeDate&modifiedDate=2024-01-15T10%3A30%3A00Z&modifiedDateTo=2024-01-15T10%3A30%3A00Z&incomeId=123&bindingOrderId=123&closeDateFrom=2024-01-15T10%3A30%3A00Z&closeDateTo=2024-01-15T10%3A30%3A00Z&orderDate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20orderDate&deliveryDate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20deliveryDate&deliveryDateFrom=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20deliveryDateFrom&deliveryDateTo=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20deliveryDateTo&forMoySklad=true&warehouseId=123&warehouseIds=&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&timeZone=1&markingStatus=active&deleted=value&collectLabel=true&sortOrdersByDate=true&sortBySku=SKU-12345&notGroupByOrganization=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&notGroupByService=true&productLabel=true&servicesForLabel=&infoLabel=true&grouped=true&replaceSetByComponent=true&replaceSetsByComponentsIncome=true&collectDeliveryLabel=true&shippingServicesForLabel=&orderId=123&hasVideoFixation=true&withProducts=true&passageIds=&withContractor=true&limit=100&page=1&count=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&sortBy=ID&ascending=true' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Данные о выполненных задания

Возвращает информацию о выполненных заданиях сотрудников за период
GET /api/stat/getOperatorJobStats

Параметры запроса QUERY

Название Тип Обязательный Описание
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
users Array of UserInfo
Структура UserInfo
Поле Тип Описание
name string
key string
data Array of object
Структура object
Поле Тип Описание
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getOperatorJobStats',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getOperatorJobStats',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getOperatorJobStats',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getOperatorJobStats?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getOperatorJobStats?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getOperatorJobStats?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getOperatorJobStats?period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Данные о заказах поставщикам

Возвращает информацию о заказах поставщикам для расчетов с контрагентами
GET /api/stat/getIncomePriceStats

Параметры запроса QUERY

Название Тип Обязательный Описание
modelId integer Да Параметр modelId

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
data Array of object
Структура object
Поле Тип Описание
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  modelId: '123',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getIncomePriceStats',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  modelId?: number;
}

const params: QueryParams = {
  modelId: '123',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getIncomePriceStats',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'modelId': '123',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getIncomePriceStats',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getIncomePriceStats?modelId=123", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getIncomePriceStats?modelId=123"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'modelId' => '123',
];

$url = 'https://api.selsup.ru/api/stat/getIncomePriceStats?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getIncomePriceStats?modelId=123' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Возвращает отчет рука на пульсе

Метод возвращает данные по отчету рука на пульсе Wildberries
GET /api/stat/getHandOnPulseReport

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of HandOnPulseReport Строки с результатом поиска
Структура HandOnPulseReport
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Затраты на рекламу, получаем только по ВБиз импорта статистики по рекламным кампаниям
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
productId integer Идентификатор товара
productViewId integer Идентификатор цвета товара
productModelId integer Идентификатор модели товара
brandId integer Идентификатор бренда товара
categoryId integer Идентификатор категории товара
deleted boolean Товар удален?
totalCount integer Всего найдено строк для отчетов
instockQuantity integer Кол-во остатков на складе FBS
fboQuantity integer Количество остатков на складах FBO
ozonStockCount integer Количество остатков на складах Ozon
wildberriesStockCount integer Количество остатков на складах Wildberries
yandexMarketStockCount integer Количество остатков на складах Yandex.Market
ozonArticle string Уникальный артикул товара для озон
wbArticle string Название на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
lastWildberriesSaleDate string Дата последней продажи WB
lastWildberriesOrderDate string Дата последнего заказа на WB
lastOzonSaleDate string Дата последней продажи Ozon
lastOzonOrderDate string Дата последнего заказа на Ozon
service string Сервис
orgTaxRate number Процентная ставка налога организации
prodTaxRate number Процентная ставка налога товара
taxType string Тип налогообложения
netProfitRub number Чистая прибыль
netProfitRubPerUnit number Чистая прибыль за 1ед.
otherExpenses number Дополнительныеы расходы на проданный товар, руб.
managerWb string Менеджер WB
managerYandex string Менеджер Yandex
managerOzon string Менеджер Ozon
managerMain string Менеджер Основной
organizationId integer Идентификатор организации
mainImageUrl string Ссылка на основное изображение товара
planSalesCount integer План продаж в шт(Продажи - возвраты)
articles string Все артикулы МП которые есть у клиента по товару
averageProfit number Средняя прибыль за 1 единицу товара рублесы
totalExpensesAmount number Общий расход за период
periodDateReport string Период
expenses number Сумма за рекламу
campaignOrderAmount number Сумма заказов
quantityAddCart integer Добавлений в корзину
clicks integer Кол-во кликов
views integer Кол-во показов
planSales Array of PlanSales Список плана продаж
Структура PlanSales
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
id integer
clientId integer
organizationId integer
date string
categoryId integer
viewId integer
productId integer
service string Сервис
planCount integer
planAmount number
totalCount integer
month string
year integer
week integer
factCount integer
factAmount number
dateFrom string Начало периода
dateTo string Конец периода
timeZone integer Тайм зона
period string Период WEEK, Month
serviceId integer
factAmountInPercent number Выполнение плана в процентах
purchasePercent number Средний процент выкупа по всем МП
averageCostCampaignOnOneClick number Средняя стоимость клика
quantityProductOrdersInCampaign integer Количество заказанных товаров в рекламной кампании, шт.
serviceId ProductAnalytics DTO для передачи данных по товарной аналитике
Структура ProductAnalytics
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Затраты на рекламу, получаем только по ВБиз импорта статистики по рекламным кампаниям
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
productId integer Идентификатор товара
productViewId integer Идентификатор цвета товара
productModelId integer Идентификатор модели товара
brandId integer Идентификатор бренда товара
categoryId integer Идентификатор категории товара
deleted boolean Товар удален?
totalCount integer Всего найдено строк для отчетов
instockQuantity integer Кол-во остатков на складе FBS
fboQuantity integer Количество остатков на складах FBO
ozonStockCount integer Количество остатков на складах Ozon
wildberriesStockCount integer Количество остатков на складах Wildberries
yandexMarketStockCount integer Количество остатков на складах Yandex.Market
ozonArticle string Уникальный артикул товара для озон
wbArticle string Название на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
lastWildberriesSaleDate string Дата последней продажи WB
lastWildberriesOrderDate string Дата последнего заказа на WB
lastOzonSaleDate string Дата последней продажи Ozon
lastOzonOrderDate string Дата последнего заказа на Ozon
service string Сервис
orgTaxRate number Процентная ставка налога организации
prodTaxRate number Процентная ставка налога товара
taxType string Тип налогообложения
netProfitRub number Чистая прибыль
netProfitRubPerUnit number Чистая прибыль за 1ед.
otherExpenses number Дополнительныеы расходы на проданный товар, руб.
managerWb string Менеджер WB
managerYandex string Менеджер Yandex
managerOzon string Менеджер Ozon
managerMain string Менеджер Основной
organizationId integer Идентификатор организации
mainImageUrl string Ссылка на основное изображение товара
serviceId ProductAnalytics DTO для передачи данных по товарной аналитике
Структура ProductAnalytics
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Затраты на рекламу, получаем только по ВБиз импорта статистики по рекламным кампаниям
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
productId integer Идентификатор товара
productViewId integer Идентификатор цвета товара
productModelId integer Идентификатор модели товара
brandId integer Идентификатор бренда товара
categoryId integer Идентификатор категории товара
deleted boolean Товар удален?
totalCount integer Всего найдено строк для отчетов
instockQuantity integer Кол-во остатков на складе FBS
fboQuantity integer Количество остатков на складах FBO
ozonStockCount integer Количество остатков на складах Ozon
wildberriesStockCount integer Количество остатков на складах Wildberries
yandexMarketStockCount integer Количество остатков на складах Yandex.Market
ozonArticle string Уникальный артикул товара для озон
wbArticle string Название на Wildberries
yandexMarketShopSku string SKU товара на Yandex.Market
aliexpressSku string SKU на Aliexpress
sberArticle string Артикул товара на СберМегаМаркет
oneCArticle string Уникальный артикул товара для 1c
lastWildberriesSaleDate string Дата последней продажи WB
lastWildberriesOrderDate string Дата последнего заказа на WB
lastOzonSaleDate string Дата последней продажи Ozon
lastOzonOrderDate string Дата последнего заказа на Ozon
service string Сервис
orgTaxRate number Процентная ставка налога организации
prodTaxRate number Процентная ставка налога товара
taxType string Тип налогообложения
netProfitRub number Чистая прибыль
netProfitRubPerUnit number Чистая прибыль за 1ед.
otherExpenses number Дополнительныеы расходы на проданный товар, руб.
managerWb string Менеджер WB
managerYandex string Менеджер Yandex
managerOzon string Менеджер Ozon
managerMain string Менеджер Основной
organizationId integer Идентификатор организации
mainImageUrl string Ссылка на основное изображение товара
serviceId object DTO для передачи данных по товарной аналитике
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getHandOnPulseReport',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getHandOnPulseReport',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getHandOnPulseReport',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getHandOnPulseReport?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getHandOnPulseReport?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getHandOnPulseReport?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getHandOnPulseReport?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Дата начала аналитика

Возвращает первую дату записанной аналитики по клиенту
GET /api/stat/getFirstAnalyticDay

Параметры запроса QUERY

Название Тип Обязательный Описание
clientOrganizationId integer Нет Параметр clientOrganizationId
services Array of string Нет Параметр services

Тело ответа

✓ 200 OK
Тип: string
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  clientOrganizationId: 'АО "Торговый дом"',
  services: '',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getFirstAnalyticDay',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  clientOrganizationId?: number;
  services?: string;
}

const params: QueryParams = {
  clientOrganizationId: 'АО "Торговый дом"',
  services: '',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getFirstAnalyticDay',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'clientOrganizationId': 'АО "Торговый дом"',
    'services': '',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getFirstAnalyticDay',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getFirstAnalyticDay?clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&services=", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getFirstAnalyticDay?clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&services="))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'clientOrganizationId' => 'АО "Торговый дом"',
    'services' => '',
];

$url = 'https://api.selsup.ru/api/stat/getFirstAnalyticDay?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getFirstAnalyticDay?clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&services=' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Финансовый отчет

Метод получает данные по финансовой аналитике. Обязательно нужно передать в запросе dateTo, dateFrom, periodНе обязательные поля clientOrganizationId, serviceIds
GET /api/stat/getFinancesReportByPeriod

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of FinanceReport Строки с результатом поиска
Структура FinanceReport
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
salesCount integer Продажи в шт.
returnsCount integer Возвраты в шт.
totalSalesCount integer Разница между продажами и возвратами в шт. salesCount - returnsCount
salesAmount number Продажи в руб.
returnsAmount number Возвраты в руб.
averageReturnsAmount number Возвраты в руб. за 1 ед
totalSalesAmount number Разница между продажами и возвратами в руб. salesAmount - returnsAmount
orderAmount number Заказы в руб.
orderAmountWithoutCancel number Заказы в руб. без отмен
logistics number Логистика в руб.
averageLogistics number Средняя логистика в руб.
logisticsShare number Доля логистики в структуре выручки, %
commissions number Комиссия в руб.
averageCommissions number Средняя комиссия в руб.
penalty number Штрафы в руб.
additional number Доплаты в руб.
refundsAndCancellations number Возвраты и отмены в руб.
compensationAmount number Компенсации в руб.
additionalAndDeduction number Доплаты и удержания в руб. в файле финансах ячейка Доплаты
services number Услуги в руб.
drr number ДРР, %
totalToBePaid number Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost
averageToBePaid number Итого к оплате за 1 товар.
productCount integer Товарный остаток FBS + FBO на текущий момент.
salesAmountInPurchasePrice number Проданный товар в закупочных ценах, руб.
productAmount number Сумма по товарному остатку purchasePrice * productCount
averageSellingPrice number Средняя фактическая цена продажи
markUp number Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount)
margin number Маржинальность
grossProfit number Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount
averageGrossProfit number Валовая прибыль за 1 ед.
ratioInIncome number Доля в выручке
rationInGrossProfit number Доля в валовой прибыли в % grossProfit / SUM(grossProfit)
ratioInProductCount number Доля в товарном остатке в % productAmount / SUM(productAmount)
efficiencyForIncome number Эффективность по выручке ratioInIncome / ratioInProductCount
grossProfitEfficiency number Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount
averageExpenses number Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт
otherAmount number Прочие начисления, руб.
percentRedemption number Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ
orderCount integer Кол-во заказов в шт.
orderCountWithoutCancel integer Кол-во заказов в шт. без отмен
nonPurchasePriceCount integer Кол-во profitRepot где не указана закупочная цена, шт.
selfPayCount integer Кол-во самовыкупов, шт.
selfPayAmount number Сумма самовыкупов, руб.
costStorage number Сумма за хранения товара на МП, получаем только по ВБ через импорт файла.
campaignCost number Стоимость рекламы ВБ
wbSpp number Сумма скидки постоянного покупателя на ВБ
wbTotalSalesByPriceWithDisc number Сумма продажи ВБ, по цене со скидкой продажи - возвраты
otherDeductions number Прочие удержания WB
averageExpensesOnMP number Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару)
compensationForLostItemOnWb number Компенсация за утерянный товар от WB
productAmountSum number
totalSalesAmountPositiveSum number
grossProfitPositiveSum number
acceptance number Платная приёмка
cancelsCount integer Количество отмен
id integer Идентификатор
orgName string Название организации
organizationId integer Идентификатор организации
reportNumber string Номер отчета
dateStart string Дата начала отчета по реализации
dateEnd string Дата конца отчета по реализации
logisticToClientAmount number Стоимость логистики к клиенту в руб.
logisticFromClientAmount number Стоимость логистики от клиента в руб.
salesCommission number Комиссия от продажи в руб.
returnsCommission number Возврат комиссии в руб.
profit number Прибыль в руб. grossProfit - fixedOutlay - taxes + selfPayAmount - storageAmount
bankPayment number Оплата по банку в руб.
costPrice number Себестоимость товара в руб. purchasePrice * salesCount
fixedOutlay number Постоянные расходы в руб.(Расходы за весь интервал / кол-во дней в месяце)*на выбранный интервал, если период захватывает больше одного месяца, будет вычисляться для каждого месяца, а после складываться, в случае нескольких отчетах для организации, то будет по каждому отчету браться по коэфициенту продаж
taxes number Налоги в руб.
sellingCosts number Затраты по продаже на МП. getLogistics() + getCommissions() + getPenalty() + getServices() - getAdditionalAndDeduction() - getOtherAmount() + getCostStorage()
rentability number Рентабельность. (profit / totalSalesAmount) * 100
taxRate number Процентная ставка налога
taxType string Тип налогообложения
totalCampaignCost number Стоимость рекламы сумма
ozonCampaignCost number Реклама Озон
basicExpenses number Сумма основных расходов: комиссия + логистика + себестоимость
otherExpenses number Сумма прочих расходов: платная приемка + прочие удержания + прочие начисления + хранения + доплаты
additionalExpenses number Сумма дополнительных расходов: реклама + услуги + штрафы + сумма прочих расходов
ozonDeliveryReturn number Перечисление за доставку от покупателя, должно идти в прибыль
emptyPurchaseAmount integer Сумма продаж, для которых не указана закупочная цена
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getFinancesReportByPeriod',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getFinancesReportByPeriod',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getFinancesReportByPeriod',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getFinancesReportByPeriod?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getFinancesReportByPeriod?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getFinancesReportByPeriod?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getFinancesReportByPeriod?productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Получить факт продаж

Метод возвращает данные по факту продаж
GET /api/stat/getFactSalePlanReport

Параметры запроса QUERY

Название Тип Обязательный Описание
productAnalyticFields Array of string Нет Параметр productAnalyticFields
productAnalyticField "BARCODE""COLOR""ARTICLE""BRAND""CATEGORY" Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate boolean Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Агрегировать данные по model/product/view
planDayCount integer Нет Кол-во дней для отчетов
groupByView boolean Нет Сгруппировать по цвету
warehouses Array of integer Нет Список идентификаторов складов
regions Array of string Нет Список регионов
group boolean Нет Сгруппировать данные
calculationByOrders boolean Нет Делать расчет по заказанному количеству
sourceReport "DEFAULT""ORDER""SALES""PROFIT""OZON""YANDEX_MARKET""WB_REALIZATION_FILE""WB_DETAILED_REPORT_FILE""OZON_REALIZATION_FILE""OZON_REALIZATION_FILE_NEW""OZON_COMPENSATIONS_FILE""OZON_SERVICES_FILE""OZON_CASH_FLOW_STATEMENT""WB_CAMPAIGN""SBER_MEGA_MARKET_FILES""YANDEX_MARKET_FILE_DETAILS""WB_RETURNS_REPORT""OWN_DELIVERY""OZON_CAMPAIGN_SKU_REPORT""WB_PAID_STORAGE" Нет Операция по которой выводить данные
skipDayWithoutStocks boolean Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
useWeightedGroup boolean Нет Использовать группы по весу
isFindirRequest boolean Нет Является ли запрос - запросом для Задачника
brandIds integer Нет Фильтр по идентификаторам брендов (список)
categoryIds integer Нет Фильтр по идентификаторам категорий (список)
articles Array of string Нет Фильтр по артикулу (список)
colors Array of string Нет Фильтр по цвету (список)
sizes Array of string Нет Фильтр по размеру (список)
barcodes Array of string Нет Фильтр по штрих-коду (список)
penaltyFrom number Нет Фильтр по штрафам (от)
penaltyTo number Нет Фильтр по штрафам (до)
logisticsFrom number Нет Фильтр по логистике (от)
logisticsTo number Нет Фильтр по логистике (до)
marginFrom number Нет Фильтр по маржинальности (от)
marginTo number Нет Фильтр по маржинальности (до)
totalSalesAmountFrom number Нет Фильтр по сумме продаж (от)
totalSalesAmountTo number Нет Фильтр по сумме продаж (до)
grossProfitFrom number Нет Фильтр по валовой прибыли (от)
grossProfitTo number Нет Фильтр по валовой прибыли (до)
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of PlanFactSalesReport Строки с результатом поиска
Структура PlanFactSalesReport
Поле Тип Описание
shortName string Сокращенное название организации.
categoryName string Название категории.
brandName string Название бренда.
name string Название товара
viewWildberriesId integer Карточка Wildberries
article string Артикул
serviceArticle string Артикул на маркетплейсе
color string Цвет товара.
size string Размер товара.
barcode string Шк товара.
purchasePrice number Закупочная цена.
createdDate string Дата создания карточки.
isDuplicate boolean Признак дубликата карточки.
dateKey string Ключ по дате.
organizationId integer id организации
totalStocksCount integer Остаток FBS + FBO.
totalFBOStocksCount integer Остаток FBO
planSalesCount integer План продаж в шт(Продажи - возвраты)
planSalesAmount number План продаж в руб(Продажи - возвраты)
salesCount integer Кол-во продаж в шт(Продажи - возвраты)
salesAmount number Сумма продаж в руб(Продажи - возвраты)
date string Дата
lastDate string Последняя дата с заполненным планом либо фактической продажей
totalCount integer
id integer
month string Месяц
year integer Год
week integer Неделя
dateFrom string Начало периода
dateTo string Конец периода
total integer Общее количество найденных записей. Возвращается только, когда count = true
page integer Номер запрошенной страницы
hasNextPage boolean Есть ли следующая страница
emptyPurchase integer Показатель пустой закупочной цены
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
message string Описание ошибки
system string Системная ошибки парсинга данных запроса
Укажите ключ API в правом верхнем углу, чтобы попробовать использовать метод

Примеры кода

const axios = require('axios');

const params = {
  productAnalyticFields: '',
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get('https://api.selsup.ru/api/stat/getFactSalePlanReport',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import axios from 'axios';

interface QueryParams {
  productAnalyticFields?: string;
  productAnalyticField?: string;
  query?: string;
  withDuplicate?: string;
  limit?: number;
  page?: number;
  sortBy?: string;
  ascending?: string;
  id?: number;
  isMarketPlaceStructure?: string;
  isDashboard?: string;
  analyticsField?: string;
  planDayCount?: number;
  groupByView?: string;
  warehouses?: string;
  regions?: string;
  group?: string;
  calculationByOrders?: string;
  sourceReport?: string;
  skipDayWithoutStocks?: string;
  isSaleStructure?: string;
  isAveragePerOneUnit?: string;
  updateDate?: string;
  useWeightedGroup?: string;
  isFindirRequest?: string;
  brandIds?: string;
  categoryIds?: string;
  articles?: string;
  colors?: string;
  sizes?: string;
  barcodes?: string;
  penaltyFrom?: number;
  penaltyTo?: number;
  logisticsFrom?: number;
  logisticsTo?: number;
  marginFrom?: number;
  marginTo?: number;
  totalSalesAmountFrom?: number;
  totalSalesAmountTo?: number;
  grossProfitFrom?: number;
  grossProfitTo?: number;
  period?: string;
  dateFrom?: string;
  dateTo?: string;
  services?: string;
  categories?: string;
  brands?: string;
  clientOrganizationId?: number;
  organizations?: string;
  ids?: string;
  type?: string;
  types?: string;
  status?: string;
  timeZone?: number;
  previousDateFrom?: string;
}

const params: QueryParams = {
  productAnalyticFields: '',
  productAnalyticField: 'BARCODE',
  query: 'Пример query',
  withDuplicate: 'true',
  limit: '100',
  page: '1',
  sortBy: 'Пример sortBy',
  ascending: 'true',
  id: 'Иванович',
  isMarketPlaceStructure: 'true',
  isDashboard: 'true',
  analyticsField: 'PRODUCT',
  planDayCount: '42',
  groupByView: 'true',
  warehouses: '',
  regions: 'Московская область',
  group: 'true',
  calculationByOrders: 'true',
  sourceReport: 'DEFAULT',
  skipDayWithoutStocks: 'true',
  isSaleStructure: 'true',
  isAveragePerOneUnit: 'true',
  updateDate: 'true',
  useWeightedGroup: 'true',
  isFindirRequest: 'true',
  brandIds: '',
  categoryIds: '',
  articles: 'ART-001',
  colors: '',
  sizes: '',
  barcodes: '4600123456789',
  penaltyFrom: '1',
  penaltyTo: '1',
  logisticsFrom: '1',
  logisticsTo: '1',
  marginFrom: '1',
  marginTo: '1',
  totalSalesAmountFrom: '2500',
  totalSalesAmountTo: '2500',
  grossProfitFrom: '1',
  grossProfitTo: '1',
  period: 'DAY',
  dateFrom: '2024-01-15T10:30:00Z',
  dateTo: '2024-01-15T10:30:00Z',
  services: '',
  categories: '',
  brands: '',
  clientOrganizationId: 'АО "Торговый дом"',
  organizations: 'АО "Торговый дом"',
  ids: '',
  type: 'standard',
  types: 'standard',
  status: 'active',
  timeZone: '1',
  previousDateFrom: '2024-01-15T10:30:00Z',
};

const response = await axios.get<any>('https://api.selsup.ru/api/stat/getFactSalePlanReport',
  {
    params,
    headers: {
      'Authorization': 'YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);

console.log(response.data);
import requests

headers = {
    'Authorization': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}

params = {
    'productAnalyticFields': '',
    'productAnalyticField': 'BARCODE',
    'query': 'Пример query',
    'withDuplicate': 'true',
    'limit': '100',
    'page': '1',
    'sortBy': 'Пример sortBy',
    'ascending': 'true',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'true',
    'isDashboard': 'true',
    'analyticsField': 'PRODUCT',
    'planDayCount': '42',
    'groupByView': 'true',
    'warehouses': '',
    'regions': 'Московская область',
    'group': 'true',
    'calculationByOrders': 'true',
    'sourceReport': 'DEFAULT',
    'skipDayWithoutStocks': 'true',
    'isSaleStructure': 'true',
    'isAveragePerOneUnit': 'true',
    'updateDate': 'true',
    'useWeightedGroup': 'true',
    'isFindirRequest': 'true',
    'brandIds': '',
    'categoryIds': '',
    'articles': 'ART-001',
    'colors': '',
    'sizes': '',
    'barcodes': '4600123456789',
    'penaltyFrom': '1',
    'penaltyTo': '1',
    'logisticsFrom': '1',
    'logisticsTo': '1',
    'marginFrom': '1',
    'marginTo': '1',
    'totalSalesAmountFrom': '2500',
    'totalSalesAmountTo': '2500',
    'grossProfitFrom': '1',
    'grossProfitTo': '1',
    'period': 'DAY',
    'dateFrom': '2024-01-15T10:30:00Z',
    'dateTo': '2024-01-15T10:30:00Z',
    'services': '',
    'categories': '',
    'brands': '',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': '',
    'type': 'standard',
    'types': 'standard',
    'status': 'active',
    'timeZone': '1',
    'previousDateFrom': '2024-01-15T10:30:00Z',
}

response = requests.get(
    'https://api.selsup.ru/api/stat/getFactSalePlanReport',
    headers=headers,
    params=params
)

print(response.json())
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{}

    req, _ := http.NewRequest("get", "https://api.selsup.ru/api/stat/getFactSalePlanReport?productAnalyticFields=&productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/stat/getFactSalePlanReport?productAnalyticFields=&productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .get(HttpRequest.BodyPublishers.noBody())
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
<?php
$curl = curl_init();

$params = [
    'productAnalyticFields' => '',
    'productAnalyticField' => 'BARCODE',
    'query' => 'Пример query',
    'withDuplicate' => 'true',
    'limit' => '100',
    'page' => '1',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'true',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'true',
    'isDashboard' => 'true',
    'analyticsField' => 'PRODUCT',
    'planDayCount' => '42',
    'groupByView' => 'true',
    'warehouses' => '',
    'regions' => 'Московская область',
    'group' => 'true',
    'calculationByOrders' => 'true',
    'sourceReport' => 'DEFAULT',
    'skipDayWithoutStocks' => 'true',
    'isSaleStructure' => 'true',
    'isAveragePerOneUnit' => 'true',
    'updateDate' => 'true',
    'useWeightedGroup' => 'true',
    'isFindirRequest' => 'true',
    'brandIds' => '',
    'categoryIds' => '',
    'articles' => 'ART-001',
    'colors' => '',
    'sizes' => '',
    'barcodes' => '4600123456789',
    'penaltyFrom' => '1',
    'penaltyTo' => '1',
    'logisticsFrom' => '1',
    'logisticsTo' => '1',
    'marginFrom' => '1',
    'marginTo' => '1',
    'totalSalesAmountFrom' => '2500',
    'totalSalesAmountTo' => '2500',
    'grossProfitFrom' => '1',
    'grossProfitTo' => '1',
    'period' => 'DAY',
    'dateFrom' => '2024-01-15T10:30:00Z',
    'dateTo' => '2024-01-15T10:30:00Z',
    'services' => '',
    'categories' => '',
    'brands' => '',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => '',
    'type' => 'standard',
    'types' => 'standard',
    'status' => 'active',
    'timeZone' => '1',
    'previousDateFrom' => '2024-01-15T10:30:00Z',
];

$url = 'https://api.selsup.ru/api/stat/getFactSalePlanReport?' . http_build_query($params);

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'get',
    CURLOPT_HTTPHEADER => [
        'Authorization: YOUR_API_KEY',
        'Content-Type: application/json'
    ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>
curl -X get \
  'https://api.selsup.ru/api/stat/getFactSalePlanReport?productAnalyticFields=&productAnalyticField=BARCODE&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=true&limit=100&page=1&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=true&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=true&isDashboard=true&analyticsField=PRODUCT&planDayCount=42&groupByView=true&warehouses=&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=true&calculationByOrders=true&sourceReport=DEFAULT&skipDayWithoutStocks=true&isSaleStructure=true&isAveragePerOneUnit=true&updateDate=true&useWeightedGroup=true&isFindirRequest=true&brandIds=&categoryIds=&articles=ART-001&colors=&sizes=&barcodes=4600123456789&penaltyFrom=1&penaltyTo=1&logisticsFrom=1&logisticsTo=1&marginFrom=1&marginTo=1&totalSalesAmountFrom=2500&totalSalesAmountTo=2500&grossProfitFrom=1&grossProfitTo=1&period=DAY&dateFrom=2024-01-15T10%3A30%3A00Z&dateTo=2024-01-15T10%3A30%3A00Z&services=&categories=&brands=&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=&type=standard&types=standard&status=active&timeZone=1&previousDateFrom=2024-01-15T10%3A30%3A00Z' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Остатки на дашборде FBO/FBS

Получить кол-во и сумму остатков по FBS и FBO
GET /api/stat/getCountFbsFbo

Параметры запроса QUERY

Название Тип Обязательный Описание
period "DAY""WEEK""MONTH""QUARTER""YEAR""MONTH_3""MONTH_6""END_OF_TARIFF""MONTH_7""MONTH_14""YEAR_2" Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services Array of string Нет Список маркетплейсов для которых отдать данные
categories Array of integer Нет Фильтр категорий для которых отдать данные
brands Array of integer Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations Array of integer Нет Идентификаторы организаций клиента
ids Array of integer Нет Список идентификаторов
type "FBM""FBS""INCOME""RETAIL""WHOLESALE""FBO""MOVEMENT""WRITE_OFF""PRODUCTION" Нет Тип заказа
types Array of string Нет Типы заказа
status "CREATED""REVOKING""REVOKED""ORDER_CREATED""CARDS_CREATED""BOX_BARCODES""IMAGES_UPLOADED""INVOICE_UPLOADED""READY_TO_SUPPLY""SUPPLIED""FINISHED""COLLECTED""SEND""DELIVERY""REFUND""COLLECTING""PACKING""PAYMENT_REQUIRED""CANCELED""CONTROVERSIAL""OVERDUE""READY_FOR_PICKUP""WAITING_SUPPLY""PICK_UP_REFUND""REFUND_RECEIVED""DELETED""RESTORE""PRODUCTION_CONFIRMED" Нет Фильтр по статусу заказа
timeZone integer Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения
service Array of string Нет Параметр service
fieldId integer Нет Параметр fieldId
field "PRODUCT""MODEL""GROUP""ORGANIZATION""CLIENT""CATEGORY""PRODUCT_VIEW""BRAND""REGION""WAREHOUSE" Нет Параметр field

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
fbsCount integer
fbsAmount number
fboCount integer
fboAmount number
⚠ 400 Ошибка с данными запроса
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
localMessage Обязательный string Текст ошибки на языке пользователя
params object Дополнительные параметры ошибки
⚠ 403 Доступ запрещен
Content-Type: application/json
Поле Тип Описание
error Обязательный string Код ошибки
✗ 500 Внутренняя ошибка сервера
Content-Type: application/json