Аналитика
Методы для работы с аналитическими отчетами: товарный, финансовый по всем маркетплейсам. Лимит запросов: 1 запрос в минуту
Базовый URL:
https://api.selsup.ru
🔗 Получить отчет по-товарный Рука на пульсе
Получение данных из по-товарного Рука на пульсе по фильтру
GET
/api/stat/productHandOnPulse
Параметры запроса QUERY
| Название | Тип | Обязательный | Описание |
|---|---|---|---|
| offset | integer | Нет |
Смещение от начала
|
| timeZone | integer | Нет |
Параметр timeZone
|
| productId | integer | Нет |
Идентификатор товара
|
| productIds | integer | Нет |
Параметр productIds
|
| allProductIds | integer | Нет |
Параметр allProductIds
|
| 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
|
| limit | integer | Нет |
Ограничение на количество записей. Максимальное значение - 500
|
| page | integer | Нет |
Номер страницы начиная с 1
|
| count | boolean | Нет |
Возвратить в ответе общее количество записей
|
| sortBy | string | Нет |
Поле сортировки записей. Работает только при получении списка.
|
| ascending | boolean | Нет |
Порядок сортировки - по возрастанию?. Работает только при получении списка.
|
Тело ответа
✓ 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 = {
offset: '0',
timeZone: '1',
productId: '123',
productIds: '',
allProductIds: '',
query: 'Пример query',
dateFrom: '2024-01-15T10:30:00Z',
dateTo: '2024-01-15T10:30:00Z',
service: 'NONE',
organizationId: 'АО "Торговый дом"',
date: '2024-01-15',
limit: '100',
page: '1',
count: 'Россия',
sortBy: 'Пример sortBy',
ascending: 'true',
};
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 {
offset?: number;
timeZone?: number;
productId?: number;
productIds?: string;
allProductIds?: string;
query?: string;
dateFrom?: string;
dateTo?: string;
service?: string;
organizationId?: number;
date?: string;
limit?: number;
page?: number;
count?: string;
sortBy?: string;
ascending?: string;
}
const params: QueryParams = {
offset: '0',
timeZone: '1',
productId: '123',
productIds: '',
allProductIds: '',
query: 'Пример query',
dateFrom: '2024-01-15T10:30:00Z',
dateTo: '2024-01-15T10:30:00Z',
service: 'NONE',
organizationId: 'АО "Торговый дом"',
date: '2024-01-15',
limit: '100',
page: '1',
count: 'Россия',
sortBy: 'Пример sortBy',
ascending: 'true',
};
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 = {
'offset': '0',
'timeZone': '1',
'productId': '123',
'productIds': '',
'allProductIds': '',
'query': 'Пример query',
'dateFrom': '2024-01-15T10:30:00Z',
'dateTo': '2024-01-15T10:30:00Z',
'service': 'NONE',
'organizationId': 'АО "Торговый дом"',
'date': '2024-01-15',
'limit': '100',
'page': '1',
'count': 'Россия',
'sortBy': 'Пример sortBy',
'ascending': 'true',
}
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?offset=0&timeZone=1&productId=123&productIds=&allProductIds=&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&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/productHandOnPulse?offset=0&timeZone=1&productId=123&productIds=&allProductIds=&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&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 = [
'offset' => '0',
'timeZone' => '1',
'productId' => '123',
'productIds' => '',
'allProductIds' => '',
'query' => 'Пример query',
'dateFrom' => '2024-01-15T10:30:00Z',
'dateTo' => '2024-01-15T10:30:00Z',
'service' => 'NONE',
'organizationId' => 'АО "Торговый дом"',
'date' => '2024-01-15',
'limit' => '100',
'page' => '1',
'count' => 'Россия',
'sortBy' => 'Пример sortBy',
'ascending' => 'true',
];
$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?offset=value&timeZone=1&productId=123&productIds=&allProductIds=&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&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'
🔗 Обновить по-товарный отчет Рука на пульсе
Обновление по-товарный отчет Рука на пульсе
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| skuCostPrice > | number | Себестоимость SKU | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| marginPercent > | number | Маржинальность в процентах | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| abcRevenueGroup > | string | ABC-группа по выручке | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| abcGrossProfitGroup > | string | ABC-группа по валовой прибыли | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| salesAmountFact > | number | Фактическая сумма продаж | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| salesCountFact > | integer | Фактическое количество продаж | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| salesCountPlan > | integer | Плановое количество продаж | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sizes > | string | Размеры товара (если применимо) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| turnover > | number | Оборачиваемость товара | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| daysBeforeSeasonEnd > | integer | Количество дней до конца сезона | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sortPlan > | number | План сортировки (обновления ассортимента) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fbsCount > | integer | Количество продаж по схеме FBS | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| openCardCount > | integer | Количество открытий карточки товара | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| addToCartCount > | integer | Количество добавлений в корзину | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| addToCartPercent > | number | Процент добавлений в корзину относительно просмотров | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ordersCount > | integer | Количество заказов | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ordersPercent > | number | Конверсия в заказы, % | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| buyoutsCount > | integer | Количество выкупов | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| buyoutsPercent > | number | Конверсия в выкуп, % | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| viewsCount > | integer | Показы карточки, шт | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| comment > | string | Комментарий | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| product > | Product | Товар - уникальный с точки зрения подтребительских свойств товар. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура Product
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| article > | string | Артикул | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| warehouseStocks > | Array of WarehouseStock | Остатки по складам | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура WarehouseStock
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| warehouseFboStocksJson > | string | Подготовленные остатки по складам JSON | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dateTruncated > | string | Дата отчета для отображения на фронте | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| period > | string | Тип отчета - дневной или месячный | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| serviceId > | integer | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Тело ответа
✓ 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 | |
| productId > | integer | |
| service > | string | Сервис |
| planCount > | integer | |
| planAmount > | number | |
| totalCount > | integer | |
| month > | string | |
| year > | integer | |
| week > | integer | |
| factCount > | integer | |
| factAmount > | number | |
| dateFrom > | string | Начало периода |
| dateTo > | string | Конец периода |
| timeZone > | integer | Тайм зона |
| period > | string | Период WEEK, Month |
| serviceId > | integer | |
| factAmountInPercent > | number | Выполнение плана в процентах |
Тело ответа
✓ 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 | Нет | |
| productId | integer | Нет | |
| service | string | Нет | Сервис |
| planCount | integer | Нет | |
| planAmount | number | Нет | |
| totalCount | integer | Нет | |
| month | string | Нет | |
| year | integer | Нет | |
| week | integer | Нет | |
| factCount | integer | Нет | |
| factAmount | number | Нет | |
| dateFrom | string | Нет | Начало периода |
| dateTo | string | Нет | Конец периода |
| timeZone | integer | Нет | Тайм зона |
| period | string | Нет | Период WEEK, Month |
| serviceId | integer | Нет | |
| factAmountInPercent | number | Нет | Выполнение плана в процентах |
⚠ 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 | |
| productId > | integer | |
| service > | string | Сервис |
| planCount > | integer | |
| planAmount > | number | |
| totalCount > | integer | |
| month > | string | |
| year > | integer | |
| week > | integer | |
| factCount > | integer | |
| factAmount > | number | |
| dateFrom > | string | Начало периода |
| dateTo > | string | Конец периода |
| timeZone > | integer | Тайм зона |
| period > | string | Период WEEK, Month |
| serviceId > | integer | |
| factAmountInPercent > | number | Выполнение плана в процентах |
Тело ответа
✓ 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 | Нет | |
| productId | integer | Нет | |
| service | string | Нет | Сервис |
| planCount | integer | Нет | |
| planAmount | number | Нет | |
| totalCount | integer | Нет | |
| month | string | Нет | |
| year | integer | Нет | |
| week | integer | Нет | |
| factCount | integer | Нет | |
| factAmount | number | Нет | |
| dateFrom | string | Нет | Начало периода |
| dateTo | string | Нет | Конец периода |
| timeZone | integer | Нет | Тайм зона |
| period | string | Нет | Период WEEK, Month |
| serviceId | integer | Нет | |
| factAmountInPercent | number | Нет | Выполнение плана в процентах |
⚠ 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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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 Обязательный > | byte[] |
Тело ответа
✓ 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&taxNds=20&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&taxNds=20&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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 Обязательный > | byte[] |
Тело ответа
✓ 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 Обязательный > | byte[] |
Тело ответа
✓ 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 Обязательный > | byte[] |
Тело ответа
✓ 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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Фильтр по маржинальности (до) | ||||
| totalSalesAmountFrom > | number | Фильтр по сумме продаж (от) | ||||
| totalSalesAmountTo > | number | Фильтр по сумме продаж (до) | ||||
| grossProfitFrom > | number | Фильтр по валовой прибыли (от) | ||||
| grossProfitTo > | number | Фильтр по валовой прибыли (до) | ||||
| taxNds > | integer | Налог ндс | ||||
| unmatch > | boolean | |||||
Тело ответа
✓ 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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Дата окончания периода
|
| pastDateFrom | Date | Нет |
Дата начала периода для сравнения. Если не указано - рассчитывается автоматически как предыдущий смежный период той же длины
|
| pastDateTo | 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 | Нет |
Поисковой запрос. Поиск идет по артикулу
|
| skipDeletedNm | boolean | Нет |
Скрыть удалённые карточки товаров
|
| 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',
pastDateFrom: '2024-02-01T00:00:00Z',
pastDateTo: '2024-02-29T23:59:59Z',
brandNames: 'Nike,Adidas',
objectIDs: '123,456',
tagIDs: '10,20,30',
nmIDs: '987654',
timezone: '1',
organizationId: 'АО "Торговый дом"',
service: 'NONE',
query: 'Пример query',
skipDeletedNm: 'false',
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;
pastDateFrom?: string;
pastDateTo?: string;
brandNames?: string;
objectIDs?: string;
tagIDs?: string;
nmIDs?: string;
timezone?: number;
organizationId?: number;
service?: string;
query?: string;
skipDeletedNm?: 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',
pastDateFrom: '2024-02-01T00:00:00Z',
pastDateTo: '2024-02-29T23:59:59Z',
brandNames: 'Nike,Adidas',
objectIDs: '123,456',
tagIDs: '10,20,30',
nmIDs: '987654',
timezone: '1',
organizationId: 'АО "Торговый дом"',
service: 'NONE',
query: 'Пример query',
skipDeletedNm: 'false',
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',
'pastDateFrom': '2024-02-01T00:00:00Z',
'pastDateTo': '2024-02-29T23:59:59Z',
'brandNames': 'Nike,Adidas',
'objectIDs': '123,456',
'tagIDs': '10,20,30',
'nmIDs': '987654',
'timezone': '1',
'organizationId': 'АО "Торговый дом"',
'service': 'NONE',
'query': 'Пример query',
'skipDeletedNm': 'false',
'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&pastDateFrom=2024-02-01T00%3A00%3A00Z&pastDateTo=2024-02-29T23%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&skipDeletedNm=false&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&pastDateFrom=2024-02-01T00%3A00%3A00Z&pastDateTo=2024-02-29T23%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&skipDeletedNm=false&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',
'pastDateFrom' => '2024-02-01T00:00:00Z',
'pastDateTo' => '2024-02-29T23:59:59Z',
'brandNames' => 'Nike,Adidas',
'objectIDs' => '123,456',
'tagIDs' => '10,20,30',
'nmIDs' => '987654',
'timezone' => '1',
'organizationId' => 'АО "Торговый дом"',
'service' => 'NONE',
'query' => 'Пример query',
'skipDeletedNm' => 'false',
'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&pastDateFrom=2024-02-01T00%3A00%3A00Z&pastDateTo=2024-02-29T23%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&skipDeletedNm=value&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 ед |
| totalSalesAmount | number | Нет | Разница между продажами и возвратами в руб. salesAmount - returnsAmount |
| orderAmount | number | Нет | Заказы в руб. |
| orderAmountWithoutCancel | number | Нет | Заказы в руб. без отмен |
| logistics | number | Нет | Логистика в руб. |
| averageLogistics | number | Нет | Средняя логистика в руб. |
| logisticsShare | number | Нет | Доля логистики в структуре выручки, % |
| commissions | number | Нет | Комиссия в руб. |
| averageCommissions | number | Нет | Средняя комиссия в руб. |
| penalty | number | Нет | Штрафы в руб. |
| additional | number | Нет | Доплаты в руб. |
| refundsAndCancellations | number | Нет | Возвраты и отмены в руб. |
| compensationAmount | number | Нет | Компенсации в руб. |
| additionalAndDeduction | number | Нет | Доплаты и удержания в руб. в файле финансах ячейка Доплаты |
| services | number | Нет | Услуги в руб. |
| drr | number | Нет | ДРР, % |
| totalToBePaid | number | Нет | Итого к оплате. totalSalesAmount - logistics - commission - penalties - additional - services + otherAmount - costStorage - campaignCost |
| averageToBePaid | number | Нет | Итого к оплате за 1 товар. |
| productCount | integer | Нет | Товарный остаток FBS + FBO на текущий момент. |
| salesAmountInPurchasePrice | number | Нет | Проданный товар в закупочных ценах, руб. |
| productAmount | number | Нет | Сумма по товарному остатку purchasePrice * productCount |
| averageSellingPrice | number | Нет | Средняя фактическая цена продажи |
| markUp | number | Нет | Фактическая наценка totalToBePaid / (purchasePrice * totalSalesCount) |
| margin | number | Нет | Маржинальность |
| grossProfit | number | Нет | Валовая прибыль totalToBePaid - totalSalesCount * purchasePrice - selPayAmount |
| averageGrossProfit | number | Нет | Валовая прибыль за 1 ед. |
| ratioInIncome | number | Нет | Доля в выручке |
| rationInGrossProfit | number | Нет | Доля в валовой прибыли в % grossProfit / SUM(grossProfit) |
| ratioInProductCount | number | Нет | Доля в товарном остатке в % productAmount / SUM(productAmount) |
| efficiencyForIncome | number | Нет | Эффективность по выручке ratioInIncome / ratioInProductCount |
| grossProfitEfficiency | number | Нет | Эффективность по валовой прибыли rationInGrossProfit / ratioInProductCount |
| averageExpenses | number | Нет | Средний расходов по продаже на МП на 1 ед товара, руб. все расходы в руб / продажи - возвраты в шт |
| otherAmount | number | Нет | Прочие начисления, руб. |
| percentRedemption | number | Нет | Процент выкупа. Продажи/(Продажи+Возвраты)*100 только для ВБ |
| orderCount | integer | Нет | Кол-во заказов в шт. |
| orderCountWithoutCancel | integer | Нет | Кол-во заказов в шт. без отмен |
| nonPurchasePriceCount | integer | Нет | Кол-во profitRepot где не указана закупочная цена, шт. |
| selfPayCount | integer | Нет | Кол-во самовыкупов, шт. |
| selfPayAmount | number | Нет | Сумма самовыкупов, руб. |
| costStorage | number | Нет | Сумма за хранения товара на МП, получаем только по ВБ через импорт файла. |
| campaignCost | number | Нет | Стоимость рекламы ВБ |
| wbSpp | number | Нет | Сумма скидки постоянного покупателя на ВБ |
| wbTotalSalesByPriceWithDisc | number | Нет | Сумма продажи ВБ, по цене со скидкой продажи - возвраты |
| otherDeductions | number | Нет | Прочие удержания WB |
| averageExpensesOnMP | number | Нет | Средний расход по продаже на МП на 1 ед товара(берутся все расходы на МП по товару) |
| compensationForLostItemOnWb | number | Нет | Компенсация за утерянный товар от WB |
| productAmountSum | number | Нет | |
| totalSalesAmountPositiveSum | number | Нет | |
| grossProfitPositiveSum | number | Нет | |
| acceptance | number | Нет | Платная приёмка |
| cancelsCount | integer | Нет | Количество отмен |
| id | integer | Нет | Идентификатор |
| orgName | string | Нет | Название организации |
| organizationId | integer | Нет | Идентификатор организации |
| reportNumber | string | Нет | Номер отчета |
| dateStart | string | Нет | Дата начала отчета по реализации |
| dateEnd | string | Нет | Дата конца отчета по реализации |
| logisticToClientAmount | number | Нет | Стоимость логистики к клиенту в руб. |
| logisticFromClientAmount | number | Нет | Стоимость логистики от клиента в руб. |
| salesCommission | number | Нет | Комиссия от продажи в руб. |
| returnsCommission | number | Нет | Возврат комиссии в руб. |
| profit | number | Нет | Прибыль в руб. grossProfit - fixedOutlay - taxes + selfPayAmount - storageAmount |
| bankPayment | number | Нет | Оплата по банку в руб. |
| costPrice | number | Нет | Себестоимость товара в руб. purchasePrice * salesCount |
| fixedOutlay | number | Нет | Постоянные расходы в руб.(Расходы за весь интервал / кол-во дней в месяце)*на выбранный интервал, если период захватывает больше одного месяца, будет вычисляться для каждого месяца, а после складываться, в случае нескольких отчетах для организации, то будет по каждому отчету браться по коэфициенту продаж |
| taxes | number | Нет | Налоги в руб. |
| sellingCosts | number | Нет | Затраты по продаже на МП. getLogistics() + getCommissions() + getPenalty() + getServices() - getAdditionalAndDeduction() - getOtherAmount() + getCostStorage() |
| rentability | number | Нет | Рентабельность. (profit / totalSalesAmount) * 100 |
| taxRate | number | Нет | Процентная ставка налога |
| taxType | string | Нет | Тип налогообложения |
| totalCampaignCost | number | Нет | Стоимость рекламы сумма |
| ozonCampaignCost | number | Нет | Реклама Озон |
| basicExpenses | number | Нет | Сумма основных расходов: комиссия + логистика + себестоимость |
| otherExpenses | number | Нет | Сумма прочих расходов: платная приемка + прочие удержания + прочие начисления + хранения + доплаты |
| additionalExpenses | number | Нет | Сумма дополнительных расходов: реклама + услуги + штрафы + сумма прочих расходов |
| ozonDeliveryReturn | number | Нет | Перечисление за доставку от покупателя, должно идти в прибыль |
| emptyPurchaseAmount | integer | Нет | Сумма продаж, для которых не указана закупочная цена |
| totalSalesAmountWithSpp | number | Нет | Сумма продаж, если учитывать СPP (до SPP) |
| sellingCostsWithSpp | number | Нет | Сумма расходов на МП если учитывать СPP (до SPP) |
| inputVat | number | Нет | Входящий НДС, руб. |
| outputVat | number | Нет | Исходящий НДС, руб. |
| finalVat | number | Нет | Итоговый НДС (исходящий - входящий), руб. |
| incomeTax | number | Нет | Налог на прибыль, руб. |
| totalTax | 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/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 | "SERVICES""ORGANIZATION""CREATEDDATE""DATEFROM""DATETO" | Нет |
Поле для сортировки
|
| 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: 'SERVICES',
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: 'SERVICES',
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': 'SERVICES',
'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=SERVICES&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=SERVICES&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' => 'SERVICES',
'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=SERVICES&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
Фильтр по валовой прибыли (до)
|
| taxNds | integer | Нет |
Налог ндс
|
| 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',
taxNds: '20',
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;
taxNds?: 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',
taxNds: '20',
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',
'taxNds': '20',
'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&taxNds=20&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&taxNds=20&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',
'taxNds' => '20',
'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&taxNds=20&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 | Нет |
ID Номера счета
|
| 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 |