Аналитика
Методы для работы с аналитическими отчетами: товарный, финансовый по всем маркетплейсам. Лимит запросов: 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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=Московская область&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=®ions=Московская область&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=®ions=%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=®ions=%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=®ions=%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=®ions=%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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| costStructure > | GetFinanceStructureResult | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура GetFinanceStructureResult
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| profitStructure > | GetFinanceStructureResult | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура GetFinanceStructureResult
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| penaltyStructure > | Array of RowStructureForFinanceTable | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура RowStructureForFinanceTable
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| serviceStructure > | Array of RowStructureForFinanceTable | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура RowStructureForFinanceTable
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| financesReportByPeriod > | FindResponseFinanceReport | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура FindResponseFinanceReport
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| previousFinancesReportByPeriod > | FindResponseFinanceReport | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура FindResponseFinanceReport
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Тело ответа
✓ 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=®ions=%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=®ions=%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=®ions=%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
|
||||||||||||
⚠ 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=®ions=%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=®ions=%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=®ions=%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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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
|
||||||||||||
| 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
|
||||||||||||
| 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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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=®ions=%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=®ions=%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=®ions=%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=®ions=%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=®ions=%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=®ions=%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
|
||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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
|
||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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
|
||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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
|
|||||||||||||||||||||||||||||||||||||||||||||
| 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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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=®ions=%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=®ions=%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=®ions=%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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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¬Collected=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¬GroupByOrganization=%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¬GroupByService=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¬Collected=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¬GroupByOrganization=%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¬GroupByService=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¬Collected=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¬GroupByOrganization=%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¬GroupByService=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
|
||||||||||||
| 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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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=®ions=%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=®ions=%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=®ions=%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