Импорт

Запуск различных импортов данных в SelSup

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

🔗 Обновление файла с товарами для Яндекс.Маркета

Добавляет в файл колонки из товаров
POST /api/import/ymUpdateColumns

Тело запроса

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

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: 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/import/ymUpdateColumns', {
  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/import/ymUpdateColumns', {
  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/import/ymUpdateColumns',
    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/import/ymUpdateColumns", &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/import/ymUpdateColumns"))
            .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/import/ymUpdateColumns',
    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/import/ymUpdateColumns' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Обновление карточек Ozon

Позволяет массово запустить обновление статуса отправленных карточек
POST /api/import/updateTasks

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

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

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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 = {
  organizationId: 'АО "Торговый дом"',
};

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

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

interface QueryParams {
  organizationId?: number;
}

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

const response = await axios.post<any>('https://api.selsup.ru/api/import/updateTasks',
  {
    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 = {
    'organizationId': 'АО "Торговый дом"',
}

response = requests.post(
    'https://api.selsup.ru/api/import/updateTasks',
    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/import/updateTasks?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", 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/import/updateTasks?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"))
    .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 = [
    'organizationId' => 'АО "Торговый дом"',
];

$url = 'https://api.selsup.ru/api/import/updateTasks?' . 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/import/updateTasks?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' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Массово редактировать комплекты по excel файлу

Запускает массовое редактирование комплектов по excel файлу
POST /api/import/updateSetsByExcel

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

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

Тело запроса

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

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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/import/updateSetsByExcel?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', {
  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/import/updateSetsByExcel?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', {
  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 = {
    'organizationId': 'АО "Торговый дом"',
}

response = requests.post(
    'https://api.selsup.ru/api/import/updateSetsByExcel',
    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/import/updateSetsByExcel?organizationId=АО "Торговый дом"", &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/import/updateSetsByExcel?organizationId=АО "Торговый дом""))
            .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 = [
    'organizationId' => 'АО "Торговый дом"',
];
$url = 'https://api.selsup.ru/api/import/updateSetsByExcel?' . 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/import/updateSetsByExcel?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' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Сверка остатков с маркетплейсами

Запускает сверку остатков FBS с маркетплейсом. Работает только для маркетплейсов, которые отдают остатки по FBS
POST /api/import/runStockReconciliation

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

Название Тип Обязательный Описание
organizationId integer Да Параметр organizationId
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" Да Параметр service

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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 = {
  organizationId: 'АО "Торговый дом"',
  service: 'NONE',
};

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

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

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

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

const response = await axios.post<any>('https://api.selsup.ru/api/import/runStockReconciliation',
  {
    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 = {
    'organizationId': 'АО "Торговый дом"',
    'service': 'NONE',
}

response = requests.post(
    'https://api.selsup.ru/api/import/runStockReconciliation',
    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/import/runStockReconciliation?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", 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/import/runStockReconciliation?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"))
    .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 = [
    'organizationId' => 'АО "Торговый дом"',
    'service' => 'NONE',
];

$url = 'https://api.selsup.ru/api/import/runStockReconciliation?' . 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/import/runStockReconciliation?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' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Сверка остатков с маркетплейсами

Запускает сверку остатков FBO с маркетплейсом. Работает только для маркетплейсов, которые отдают остатки по FBO
POST /api/import/runFboStockReconciliation

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

Название Тип Обязательный Описание
organizationId integer Да Параметр organizationId
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" Да Параметр service

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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 = {
  organizationId: 'АО "Торговый дом"',
  service: 'NONE',
};

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

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

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

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

const response = await axios.post<any>('https://api.selsup.ru/api/import/runFboStockReconciliation',
  {
    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 = {
    'organizationId': 'АО "Торговый дом"',
    'service': 'NONE',
}

response = requests.post(
    'https://api.selsup.ru/api/import/runFboStockReconciliation',
    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/import/runFboStockReconciliation?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", 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/import/runFboStockReconciliation?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"))
    .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 = [
    'organizationId' => 'АО "Торговый дом"',
    'service' => 'NONE',
];

$url = 'https://api.selsup.ru/api/import/runFboStockReconciliation?' . 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/import/runFboStockReconciliation?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' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Объединение карточек

Позволяет массово объединить карточки с одинаковыми атрибутами
POST /api/import/mergeProducts

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

Content-Type: application/json
ПолеТипОписание
check boolean Только проверить объединение, подсчитав количество товаров
debug boolean Режим отладки, для записи в логи всей информации, что объединяем
ignoreDuplicate boolean Игнорировать дубликаты с одинаковым ключом объединения
fields object Для каждого маркетплейса поля по которым объединять карточки

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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/import/mergeProducts',
  {
    "check": true,
    "debug": true,
    "ignoreDuplicate": true,
    "fields": {}
  },
  {
    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/import/mergeProducts',
  {
    "check": true,
    "debug": true,
    "ignoreDuplicate": true,
    "fields": {}
  },
  {
    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/import/mergeProducts',
    headers=headers,
    json={
    'check': true,
    'debug': true,
    'ignoreDuplicate': true,
    'fields': {}
}
)

print(response.json())
package main

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

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

    payload := map[string]interface{}{
        `check`: true,
        `debug`: true,
        `ignoreDuplicate`: true,
        `fields`: {}
}
    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/import/mergeProducts", 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/import/mergeProducts"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .post(HttpRequest.BodyPublishers.ofString(
        "{\"check\":true,\"debug\":true,\"ignoreDuplicate\":true,\"fields\":{}}"
    ))
    .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/import/mergeProducts',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_POSTFIELDS => json_encode({
    'check': true,
    'debug': true,
    'ignoreDuplicate': true,
    'fields': {}
}),
    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/import/mergeProducts' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "check": true,
  "debug": true,
  "ignoreDuplicate": true,
  "fields": {}
}'

🔗 Импорт изображений с Wildberries

Сохраняет в карточку товара изображения с сайта Wildberries
POST /api/import/importWbImages

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

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

Тело ответа

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

Примеры кода

const axios = require('axios');

const params = {
  modelId: '123',
};

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

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

interface QueryParams {
  modelId?: number;
}

const params: QueryParams = {
  modelId: '123',
};

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

console.log(response.data);
import requests

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

params = {
    'modelId': '123',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importWbImages',
    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/import/importWbImages?modelId=123", nil)
    req.Header.Set("Authorization", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

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

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

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.selsup.ru/api/import/importWbImages?modelId=123"))
    .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 = [
    'modelId' => '123',
];

$url = 'https://api.selsup.ru/api/import/importWbImages?' . 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/import/importWbImages?modelId=123' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Импорт статистики по рекламным кампаниям WB

⚠️ Этот метод устарел и будет удален в будущих версиях
Запускает импорт статистики по рекламным кампаниям из excel файла
POST /api/import/importWBStatCampaignsByExcel

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

Название Тип Обязательный Описание
productAnalyticField string Нет Агрегировать данные по сущности
query string Нет Поисковый запрос для фильтрации аналитики
withDuplicate string Нет Отдавать аналитику по дубликатам товаров
limit integer Нет Количество записей в ответе
page integer Нет Страница для навигации по страницам, начиная с 1
sortBy string Нет Поле сортировки
ascending boolean Нет Сортировать по возрастанию по полю sortBy
id integer Нет Уникальный идентификатор
isMarketPlaceStructure boolean Нет Идентификатор, получать данные только по маркетплейсу или по всем.
isDashboard boolean Нет Идентификатор, запрос с дашборда или нет.
analyticsField string Нет Агрегировать данные по model/product/view
planDayCount string Нет Кол-во дней для отчетов
groupByView string Нет Сгруппировать по цвету
warehouses string Нет Список идентификаторов складов
regions string Нет Список регионов
group string Нет Сгруппировать данные
calculationByOrders string Нет Делать расчет по заказанному количеству
sourceReport string Нет Операция по которой выводить данные
skipDayWithoutStocks string Нет Пропускать дни без остатков
isSaleStructure boolean Нет Идентификатор, что нужно получить структуру по продажам
isAveragePerOneUnit boolean Нет Идентификатор, получить среднее за 1 единицу
updateDate Date Нет Обновлять даты
period string Нет Период агрегации
dateFrom Date Нет Дата начала отчета
dateTo Date Нет Дата окончания отчета
services string Нет Список маркетплейсов для которых отдать данные
categories string Нет Фильтр категорий для которых отдать данные
brands string Нет Фильтр брендов для которых отдать данные
clientOrganizationId integer Нет Идентификатор организации, для которой отдать данные
organizations string Нет Идентификаторы организаций клиента
ids string Нет Список идентификаторов
timeZone string Нет Часовой пояс клиента по UTC
previousDateFrom Date Нет Дата начала периода для сравнения

Тело запроса

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

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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/import/importWBStatCampaignsByExcel?productAnalyticField=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20productAnalyticField&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20withDuplicate&limit=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20limit&page=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20page&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20ascending&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20isMarketPlaceStructure&isDashboard=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20isDashboard&analyticsField=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20analyticsField&planDayCount=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20planDayCount&groupByView=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20groupByView&warehouses=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20warehouses&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20group&calculationByOrders=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20calculationByOrders&sourceReport=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sourceReport&skipDayWithoutStocks=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20skipDayWithoutStocks&isSaleStructure=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20isSaleStructure&isAveragePerOneUnit=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20isAveragePerOneUnit&updateDate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20updateDate&period=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20period&dateFrom=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20dateFrom&dateTo=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20dateTo&services=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20services&categories=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20categories&brands=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20brands&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20ids&timeZone=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20timeZone&previousDateFrom=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20previousDateFrom', {
  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/import/importWBStatCampaignsByExcel?productAnalyticField=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20productAnalyticField&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20withDuplicate&limit=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20limit&page=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20page&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20ascending&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20isMarketPlaceStructure&isDashboard=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20isDashboard&analyticsField=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20analyticsField&planDayCount=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20planDayCount&groupByView=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20groupByView&warehouses=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20warehouses&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20group&calculationByOrders=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20calculationByOrders&sourceReport=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sourceReport&skipDayWithoutStocks=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20skipDayWithoutStocks&isSaleStructure=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20isSaleStructure&isAveragePerOneUnit=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20isAveragePerOneUnit&updateDate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20updateDate&period=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20period&dateFrom=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20dateFrom&dateTo=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20dateTo&services=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20services&categories=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20categories&brands=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20brands&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20ids&timeZone=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20timeZone&previousDateFrom=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20previousDateFrom', {
  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': 'Пример productAnalyticField',
    'query': 'Пример query',
    'withDuplicate': 'Пример withDuplicate',
    'limit': 'Пример limit',
    'page': 'Пример page',
    'sortBy': 'Пример sortBy',
    'ascending': 'Пример ascending',
    'id': 'Иванович',
    'isMarketPlaceStructure': 'Пример isMarketPlaceStructure',
    'isDashboard': 'Пример isDashboard',
    'analyticsField': 'Пример analyticsField',
    'planDayCount': 'Пример planDayCount',
    'groupByView': 'Пример groupByView',
    'warehouses': 'Пример warehouses',
    'regions': 'Московская область',
    'group': 'Пример group',
    'calculationByOrders': 'Пример calculationByOrders',
    'sourceReport': 'Пример sourceReport',
    'skipDayWithoutStocks': 'Пример skipDayWithoutStocks',
    'isSaleStructure': 'Пример isSaleStructure',
    'isAveragePerOneUnit': 'Пример isAveragePerOneUnit',
    'updateDate': 'Пример updateDate',
    'period': 'Пример period',
    'dateFrom': 'Пример dateFrom',
    'dateTo': 'Пример dateTo',
    'services': 'Пример services',
    'categories': 'Пример categories',
    'brands': 'Пример brands',
    'clientOrganizationId': 'АО "Торговый дом"',
    'organizations': 'АО "Торговый дом"',
    'ids': 'Пример ids',
    'timeZone': 'Пример timeZone',
    'previousDateFrom': 'Пример previousDateFrom',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importWBStatCampaignsByExcel',
    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/import/importWBStatCampaignsByExcel?productAnalyticField=Пример productAnalyticField&query=Пример query&withDuplicate=Пример withDuplicate&limit=Пример limit&page=Пример page&sortBy=Пример sortBy&ascending=Пример ascending&id=Иванович&isMarketPlaceStructure=Пример isMarketPlaceStructure&isDashboard=Пример isDashboard&analyticsField=Пример analyticsField&planDayCount=Пример planDayCount&groupByView=Пример groupByView&warehouses=Пример warehouses&regions=Московская область&group=Пример group&calculationByOrders=Пример calculationByOrders&sourceReport=Пример sourceReport&skipDayWithoutStocks=Пример skipDayWithoutStocks&isSaleStructure=Пример isSaleStructure&isAveragePerOneUnit=Пример isAveragePerOneUnit&updateDate=Пример updateDate&period=Пример period&dateFrom=Пример dateFrom&dateTo=Пример dateTo&services=Пример services&categories=Пример categories&brands=Пример brands&clientOrganizationId=АО "Торговый дом"&organizations=АО "Торговый дом"&ids=Пример ids&timeZone=Пример timeZone&previousDateFrom=Пример previousDateFrom", &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/import/importWBStatCampaignsByExcel?productAnalyticField=Пример productAnalyticField&query=Пример query&withDuplicate=Пример withDuplicate&limit=Пример limit&page=Пример page&sortBy=Пример sortBy&ascending=Пример ascending&id=Иванович&isMarketPlaceStructure=Пример isMarketPlaceStructure&isDashboard=Пример isDashboard&analyticsField=Пример analyticsField&planDayCount=Пример planDayCount&groupByView=Пример groupByView&warehouses=Пример warehouses&regions=Московская область&group=Пример group&calculationByOrders=Пример calculationByOrders&sourceReport=Пример sourceReport&skipDayWithoutStocks=Пример skipDayWithoutStocks&isSaleStructure=Пример isSaleStructure&isAveragePerOneUnit=Пример isAveragePerOneUnit&updateDate=Пример updateDate&period=Пример period&dateFrom=Пример dateFrom&dateTo=Пример dateTo&services=Пример services&categories=Пример categories&brands=Пример brands&clientOrganizationId=АО "Торговый дом"&organizations=АО "Торговый дом"&ids=Пример ids&timeZone=Пример timeZone&previousDateFrom=Пример previousDateFrom"))
            .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' => 'Пример productAnalyticField',
    'query' => 'Пример query',
    'withDuplicate' => 'Пример withDuplicate',
    'limit' => 'Пример limit',
    'page' => 'Пример page',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'Пример ascending',
    'id' => 'Иванович',
    'isMarketPlaceStructure' => 'Пример isMarketPlaceStructure',
    'isDashboard' => 'Пример isDashboard',
    'analyticsField' => 'Пример analyticsField',
    'planDayCount' => 'Пример planDayCount',
    'groupByView' => 'Пример groupByView',
    'warehouses' => 'Пример warehouses',
    'regions' => 'Московская область',
    'group' => 'Пример group',
    'calculationByOrders' => 'Пример calculationByOrders',
    'sourceReport' => 'Пример sourceReport',
    'skipDayWithoutStocks' => 'Пример skipDayWithoutStocks',
    'isSaleStructure' => 'Пример isSaleStructure',
    'isAveragePerOneUnit' => 'Пример isAveragePerOneUnit',
    'updateDate' => 'Пример updateDate',
    'period' => 'Пример period',
    'dateFrom' => 'Пример dateFrom',
    'dateTo' => 'Пример dateTo',
    'services' => 'Пример services',
    'categories' => 'Пример categories',
    'brands' => 'Пример brands',
    'clientOrganizationId' => 'АО "Торговый дом"',
    'organizations' => 'АО "Торговый дом"',
    'ids' => 'Пример ids',
    'timeZone' => 'Пример timeZone',
    'previousDateFrom' => 'Пример previousDateFrom',
];
$url = 'https://api.selsup.ru/api/import/importWBStatCampaignsByExcel?' . 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/import/importWBStatCampaignsByExcel?productAnalyticField=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20productAnalyticField&query=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20query&withDuplicate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20withDuplicate&limit=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20limit&page=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20page&sortBy=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sortBy&ascending=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20ascending&id=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&isMarketPlaceStructure=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20isMarketPlaceStructure&isDashboard=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20isDashboard&analyticsField=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20analyticsField&planDayCount=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20planDayCount&groupByView=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20groupByView&warehouses=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20warehouses&regions=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C&group=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20group&calculationByOrders=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20calculationByOrders&sourceReport=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20sourceReport&skipDayWithoutStocks=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20skipDayWithoutStocks&isSaleStructure=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20isSaleStructure&isAveragePerOneUnit=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20isAveragePerOneUnit&updateDate=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20updateDate&period=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20period&dateFrom=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20dateFrom&dateTo=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20dateTo&services=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20services&categories=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20categories&brands=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20brands&clientOrganizationId=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&organizations=%D0%90%D0%9E%20%22%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BC%22&ids=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20ids&timeZone=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20timeZone&previousDateFrom=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20previousDateFrom' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Импорт изображений с Wildberries

Сохраняет в карточку товара изображения с сайта Wildberries
POST /api/import/importViewWbImages

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

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

Тело ответа

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

Примеры кода

const axios = require('axios');

const params = {
  viewId: '123',
};

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

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

interface QueryParams {
  viewId?: number;
}

const params: QueryParams = {
  viewId: '123',
};

const response = await axios.post<any>('https://api.selsup.ru/api/import/importViewWbImages',
  {
    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 = {
    'viewId': '123',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importViewWbImages',
    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/import/importViewWbImages?viewId=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/import/importViewWbImages?viewId=123"))
    .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 = [
    'viewId' => '123',
];

$url = 'https://api.selsup.ru/api/import/importViewWbImages?' . 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/import/importViewWbImages?viewId=123' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Импорт товаров

Создает новые товары по данным из Excel файла
POST /api/import/importProducts

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

Название Тип Обязательный Описание
organizationId integer Да Организация, для которой импортируются товары
services string Да Список сервисов, в которые отправить карточки, после импорта
debug boolean Да Отладка в дебаге
replaceEmptyValues boolean Да Замена пустых значений

Тело запроса

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

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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/import/importProducts?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&services=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20services&debug=true&replaceEmptyValues=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/import/importProducts?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&services=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20services&debug=true&replaceEmptyValues=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 = {
    'organizationId': 'АО "Торговый дом"',
    'services': 'Пример services',
    'debug': 'true',
    'replaceEmptyValues': 'true',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importProducts',
    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/import/importProducts?organizationId=АО "Торговый дом"&services=Пример services&debug=true&replaceEmptyValues=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/import/importProducts?organizationId=АО "Торговый дом"&services=Пример services&debug=true&replaceEmptyValues=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 = [
    'organizationId' => 'АО "Торговый дом"',
    'services' => 'Пример services',
    'debug' => 'true',
    'replaceEmptyValues' => 'true',
];
$url = 'https://api.selsup.ru/api/import/importProducts?' . 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/import/importProducts?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&services=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20services&debug=true&replaceEmptyValues=true' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Импорт товаров с различных сервисов

Запускает импорт товаров с различных сервисов и маркетплейсов. Отдает в ответе номер задачи, по которому можно проверять ее статус. Задача выполняется асинхронно. Статус можно получить через метод task/getTask?id=. После выполнения в ответе будет указан status: FINISHED и можно будет получить результат импорта в параметре messageParams
POST /api/import/importProductsFrom

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

Название Тип Обязательный Описание
organizationId integer Нет Параметр organizationId
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" Да Параметр service
onlyCreatedCards boolean Нет Параметр onlyCreatedCards
debug boolean Нет Параметр debug
wbUpdateCardArticles boolean Нет Параметр wbUpdateCardArticles
uniqCards boolean Нет Параметр uniqCards
fullUpdate boolean Нет Параметр fullUpdate
useWbName boolean Нет Параметр useWbName
useWbArticle boolean Нет Параметр useWbArticle
useOzonArticle boolean Нет Параметр useOzonArticle
useYmArticle boolean Нет Параметр useYmArticle
withStock boolean Нет Параметр withStock
warehouseExternalId integer Нет Параметр warehouseExternalId
amazonMarketplace string Нет Параметр amazonMarketplace

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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 = {
  organizationId: 'АО "Торговый дом"',
  service: 'NONE',
  onlyCreatedCards: 'true',
  debug: 'true',
  wbUpdateCardArticles: 'ART-001',
  uniqCards: 'true',
  fullUpdate: 'true',
  useWbName: 'true',
  useWbArticle: 'ART-001',
  useOzonArticle: 'ART-001',
  useYmArticle: 'ART-001',
  withStock: 'true',
  warehouseExternalId: '123',
  amazonMarketplace: 'Пример amazonMarketplace',
};

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

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

interface QueryParams {
  organizationId?: number;
  service?: string;
  onlyCreatedCards?: string;
  debug?: string;
  wbUpdateCardArticles?: string;
  uniqCards?: string;
  fullUpdate?: string;
  useWbName?: string;
  useWbArticle?: string;
  useOzonArticle?: string;
  useYmArticle?: string;
  withStock?: string;
  warehouseExternalId?: number;
  amazonMarketplace?: string;
}

const params: QueryParams = {
  organizationId: 'АО "Торговый дом"',
  service: 'NONE',
  onlyCreatedCards: 'true',
  debug: 'true',
  wbUpdateCardArticles: 'ART-001',
  uniqCards: 'true',
  fullUpdate: 'true',
  useWbName: 'true',
  useWbArticle: 'ART-001',
  useOzonArticle: 'ART-001',
  useYmArticle: 'ART-001',
  withStock: 'true',
  warehouseExternalId: '123',
  amazonMarketplace: 'Пример amazonMarketplace',
};

const response = await axios.post<any>('https://api.selsup.ru/api/import/importProductsFrom',
  {
    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 = {
    'organizationId': 'АО "Торговый дом"',
    'service': 'NONE',
    'onlyCreatedCards': 'true',
    'debug': 'true',
    'wbUpdateCardArticles': 'ART-001',
    'uniqCards': 'true',
    'fullUpdate': 'true',
    'useWbName': 'true',
    'useWbArticle': 'ART-001',
    'useOzonArticle': 'ART-001',
    'useYmArticle': 'ART-001',
    'withStock': 'true',
    'warehouseExternalId': '123',
    'amazonMarketplace': 'Пример amazonMarketplace',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importProductsFrom',
    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/import/importProductsFrom?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&onlyCreatedCards=true&debug=true&wbUpdateCardArticles=ART-001&uniqCards=true&fullUpdate=true&useWbName=true&useWbArticle=ART-001&useOzonArticle=ART-001&useYmArticle=ART-001&withStock=true&warehouseExternalId=123&amazonMarketplace=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20amazonMarketplace", 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/import/importProductsFrom?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&onlyCreatedCards=true&debug=true&wbUpdateCardArticles=ART-001&uniqCards=true&fullUpdate=true&useWbName=true&useWbArticle=ART-001&useOzonArticle=ART-001&useYmArticle=ART-001&withStock=true&warehouseExternalId=123&amazonMarketplace=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20amazonMarketplace"))
    .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 = [
    'organizationId' => 'АО "Торговый дом"',
    'service' => 'NONE',
    'onlyCreatedCards' => 'true',
    'debug' => 'true',
    'wbUpdateCardArticles' => 'ART-001',
    'uniqCards' => 'true',
    'fullUpdate' => 'true',
    'useWbName' => 'true',
    'useWbArticle' => 'ART-001',
    'useOzonArticle' => 'ART-001',
    'useYmArticle' => 'ART-001',
    'withStock' => 'true',
    'warehouseExternalId' => '123',
    'amazonMarketplace' => 'Пример amazonMarketplace',
];

$url = 'https://api.selsup.ru/api/import/importProductsFrom?' . 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/import/importProductsFrom?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&onlyCreatedCards=true&debug=true&wbUpdateCardArticles=ART-001&uniqCards=true&fullUpdate=true&useWbName=true&useWbArticle=ART-001&useOzonArticle=ART-001&useYmArticle=ART-001&withStock=true&warehouseExternalId=123&amazonMarketplace=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20amazonMarketplace' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Импорт товаров из YML

Создает новые товары по данным из YML файла
POST /api/import/importProductsFromYml

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

Название Тип Обязательный Описание
organizationId integer Да Организация, для которой импортируются товары
url string Нет Параметр url
login string Нет Параметр login
password string Нет Параметр password
importParams boolean Нет Параметр importParams
articleField "NAME""BRAND""ARTICLE""COLOR""SIZE""OZON_ARTICLE""YANDEX_MARKET_SKU""CATEGORY""MODEL_NAME""ALIEXPRESS_SKU""LEROY_MERLIN""SBER_MEGA_MARKET_ARTICLE""ONE_C""ONE_C_ID""WB_ARTICLE""EBAY_ARTICLE""PROMO_NAME""NONE""ANY_ARTICLE""SITE""EXTERNAL_ARTICLE" Нет Параметр articleField
articleName string Нет Параметр articleName

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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 = {
  organizationId: 'АО "Торговый дом"',
  url: 'https://example.com/resource',
  login: 'user123',
  password: 'SecurePass123!',
  importParams: 'true',
  articleField: 'ART-001',
  articleName: 'ART-001',
};

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

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

interface QueryParams {
  organizationId?: number;
  url?: string;
  login?: string;
  password?: string;
  importParams?: string;
  articleField?: string;
  articleName?: string;
}

const params: QueryParams = {
  organizationId: 'АО "Торговый дом"',
  url: 'https://example.com/resource',
  login: 'user123',
  password: 'SecurePass123!',
  importParams: 'true',
  articleField: 'ART-001',
  articleName: 'ART-001',
};

const response = await axios.post<any>('https://api.selsup.ru/api/import/importProductsFromYml',
  {
    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 = {
    'organizationId': 'АО "Торговый дом"',
    'url': 'https://example.com/resource',
    'login': 'user123',
    'password': 'SecurePass123!',
    'importParams': 'true',
    'articleField': 'ART-001',
    'articleName': 'ART-001',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importProductsFromYml',
    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/import/importProductsFromYml?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&url=https%3A%2F%2Fexample.com%2Fresource&login=user123&password=SecurePass123!&importParams=true&articleField=ART-001&articleName=ART-001", 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/import/importProductsFromYml?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&url=https%3A%2F%2Fexample.com%2Fresource&login=user123&password=SecurePass123!&importParams=true&articleField=ART-001&articleName=ART-001"))
    .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 = [
    'organizationId' => 'АО "Торговый дом"',
    'url' => 'https://example.com/resource',
    'login' => 'user123',
    'password' => 'SecurePass123!',
    'importParams' => 'true',
    'articleField' => 'ART-001',
    'articleName' => 'ART-001',
];

$url = 'https://api.selsup.ru/api/import/importProductsFromYml?' . 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/import/importProductsFromYml?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&url=https%3A%2F%2Fexample.com%2Fresource&login=user123&password=SecurePass123!&importParams=true&articleField=ART-001&articleName=ART-001' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Импорт товаров по excel шаблону Wildberries

Запускает импорт товаров по excel шаблону Wildberries
POST /api/import/importProductsFromWildberriesExcel

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

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

Тело запроса

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

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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/import/importProductsFromWildberriesExcel?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&importFromApi=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/import/importProductsFromWildberriesExcel?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&importFromApi=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 = {
    'organizationId': 'АО "Торговый дом"',
    'importFromApi': 'true',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importProductsFromWildberriesExcel',
    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/import/importProductsFromWildberriesExcel?organizationId=АО "Торговый дом"&importFromApi=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/import/importProductsFromWildberriesExcel?organizationId=АО "Торговый дом"&importFromApi=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 = [
    'organizationId' => 'АО "Торговый дом"',
    'importFromApi' => 'true',
];
$url = 'https://api.selsup.ru/api/import/importProductsFromWildberriesExcel?' . 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/import/importProductsFromWildberriesExcel?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&importFromApi=true' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Импорт товаров по excel шаблону SberMegaMarket

Запускает импорт товаров по excel шаблону MegaMarket в формате multipart
POST /api/import/importProductsFromSberMegaMarketExcel

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

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

Тело запроса

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

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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/import/importProductsFromSberMegaMarketExcel?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', {
  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/import/importProductsFromSberMegaMarketExcel?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', {
  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 = {
    'organizationId': 'АО "Торговый дом"',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importProductsFromSberMegaMarketExcel',
    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/import/importProductsFromSberMegaMarketExcel?organizationId=АО "Торговый дом"", &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/import/importProductsFromSberMegaMarketExcel?organizationId=АО "Торговый дом""))
            .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 = [
    'organizationId' => 'АО "Торговый дом"',
];
$url = 'https://api.selsup.ru/api/import/importProductsFromSberMegaMarketExcel?' . 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/import/importProductsFromSberMegaMarketExcel?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' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Импорт товаров по excel шаблону SberMegaMarket

Запускает импорт товаров по excel шаблону SberMegaMarket
POST /api/import/importProductsFromMegaMarketExcelBody

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

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

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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 = {
  organizationId: 'АО "Торговый дом"',
};

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

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

interface QueryParams {
  organizationId?: number;
}

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

const response = await axios.post<any>('https://api.selsup.ru/api/import/importProductsFromMegaMarketExcelBody',
  {
    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 = {
    'organizationId': 'АО "Торговый дом"',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importProductsFromMegaMarketExcelBody',
    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/import/importProductsFromMegaMarketExcelBody?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", 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/import/importProductsFromMegaMarketExcelBody?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"))
    .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 = [
    'organizationId' => 'АО "Торговый дом"',
];

$url = 'https://api.selsup.ru/api/import/importProductsFromMegaMarketExcelBody?' . 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/import/importProductsFromMegaMarketExcelBody?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' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Импорт товаров по excel шаблону Avito

Запускает импорт товаров по excel шаблону Avito
POST /api/import/importProductsFromAvitoExcel

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

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

Тело запроса

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

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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/import/importProductsFromAvitoExcel?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', {
  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/import/importProductsFromAvitoExcel?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', {
  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 = {
    'organizationId': 'АО "Торговый дом"',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importProductsFromAvitoExcel',
    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/import/importProductsFromAvitoExcel?organizationId=АО "Торговый дом"", &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/import/importProductsFromAvitoExcel?organizationId=АО "Торговый дом""))
            .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 = [
    'organizationId' => 'АО "Торговый дом"',
];
$url = 'https://api.selsup.ru/api/import/importProductsFromAvitoExcel?' . 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/import/importProductsFromAvitoExcel?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' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Импорт товаров с ресурса с различных API

Импортирует товары с указанного API
POST /api/import/importProductsFromApi

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

Название Тип Обязательный Описание
organizationId integer Нет Параметр organizationId
services string Нет Параметр services
url string Нет Параметр url
apiKey string Нет Параметр apiKey
articleField "NAME""BRAND""ARTICLE""COLOR""SIZE""OZON_ARTICLE""YANDEX_MARKET_SKU""CATEGORY""MODEL_NAME""ALIEXPRESS_SKU""LEROY_MERLIN""SBER_MEGA_MARKET_ARTICLE""ONE_C""ONE_C_ID""WB_ARTICLE""EBAY_ARTICLE""PROMO_NAME""NONE""ANY_ARTICLE""SITE""EXTERNAL_ARTICLE" Нет Параметр articleField
articleName string Нет Параметр articleName
addSelsupImages boolean Нет Параметр addSelsupImages
updateProducts boolean Нет Параметр updateProducts
apiType "PRESTA_SHOP" Нет Параметр apiType
warehouseId integer Нет Параметр warehouseId

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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 = {
  organizationId: 'АО "Торговый дом"',
  services: 'Пример services',
  url: 'https://example.com/resource',
  apiKey: 'key_0w8987ncl',
  articleField: 'ART-001',
  articleName: 'ART-001',
  addSelsupImages: 'https://example.com/image.jpg',
  updateProducts: 'true',
  apiType: 'standard',
  warehouseId: '123',
};

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

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

interface QueryParams {
  organizationId?: number;
  services?: string;
  url?: string;
  apiKey?: string;
  articleField?: string;
  articleName?: string;
  addSelsupImages?: string;
  updateProducts?: string;
  apiType?: string;
  warehouseId?: number;
}

const params: QueryParams = {
  organizationId: 'АО "Торговый дом"',
  services: 'Пример services',
  url: 'https://example.com/resource',
  apiKey: 'key_0w8987ncl',
  articleField: 'ART-001',
  articleName: 'ART-001',
  addSelsupImages: 'https://example.com/image.jpg',
  updateProducts: 'true',
  apiType: 'standard',
  warehouseId: '123',
};

const response = await axios.post<any>('https://api.selsup.ru/api/import/importProductsFromApi',
  {
    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 = {
    'organizationId': 'АО "Торговый дом"',
    'services': 'Пример services',
    'url': 'https://example.com/resource',
    'apiKey': 'key_0w8987ncl',
    'articleField': 'ART-001',
    'articleName': 'ART-001',
    'addSelsupImages': 'https://example.com/image.jpg',
    'updateProducts': 'true',
    'apiType': 'standard',
    'warehouseId': '123',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importProductsFromApi',
    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/import/importProductsFromApi?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&services=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20services&url=https%3A%2F%2Fexample.com%2Fresource&apiKey=key_0w8987ncl&articleField=ART-001&articleName=ART-001&addSelsupImages=https%3A%2F%2Fexample.com%2Fimage.jpg&updateProducts=true&apiType=standard&warehouseId=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/import/importProductsFromApi?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&services=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20services&url=https%3A%2F%2Fexample.com%2Fresource&apiKey=key_0w8987ncl&articleField=ART-001&articleName=ART-001&addSelsupImages=https%3A%2F%2Fexample.com%2Fimage.jpg&updateProducts=true&apiType=standard&warehouseId=123"))
    .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 = [
    'organizationId' => 'АО "Торговый дом"',
    'services' => 'Пример services',
    'url' => 'https://example.com/resource',
    'apiKey' => 'key_0w8987ncl',
    'articleField' => 'ART-001',
    'articleName' => 'ART-001',
    'addSelsupImages' => 'https://example.com/image.jpg',
    'updateProducts' => 'true',
    'apiType' => 'standard',
    'warehouseId' => '123',
];

$url = 'https://api.selsup.ru/api/import/importProductsFromApi?' . 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/import/importProductsFromApi?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&services=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20services&url=https%3A%2F%2Fexample.com%2Fresource&apiKey=key_0w8987ncl&articleField=ART-001&articleName=ART-001&addSelsupImages=https%3A%2F%2Fexample.com%2Fimage.jpg&updateProducts=true&apiType=standard&warehouseId=123' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Импорт фотографий из архива

Сохраняет фотографии из архива в карточки товара. Названия папок внутри архива должэны быть штрих-коды
POST /api/import/importImages

Тело запроса

Content-Type: multipart/form-data
ПолеТипОписание
file Обязательный string Содержимое файла ZIP-архива

Тело ответа

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

Примеры кода

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

fetch('https://api.selsup.ru/api/import/importImages', {
  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/import/importImages', {
  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/import/importImages',
    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/import/importImages", &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/import/importImages"))
            .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/import/importImages',
    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/import/importImages' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Импорт остатков с маркетплейса

Запускает импорт остатков с маркетплейса
POST /api/import/importFbsStocks

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

Название Тип Обязательный Описание
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" Да Маркетплейс

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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 = {
  organizationId: 'АО "Торговый дом"',
  service: 'NONE',
};

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

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

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

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

const response = await axios.post<any>('https://api.selsup.ru/api/import/importFbsStocks',
  {
    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 = {
    'organizationId': 'АО "Торговый дом"',
    'service': 'NONE',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importFbsStocks',
    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/import/importFbsStocks?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", 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/import/importFbsStocks?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"))
    .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 = [
    'organizationId' => 'АО "Торговый дом"',
    'service' => 'NONE',
];

$url = 'https://api.selsup.ru/api/import/importFbsStocks?' . 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/import/importFbsStocks?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' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Импорт FBO остатков с маркетплейса

Запускает импорт FBO остатков с маркетплейса по API
POST /api/import/importFboStocks

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

Название Тип Обязательный Описание
organizationId integer Да Идентификатор организации
service string Да Маркетплейс, с которого импортировать остатки по FBO

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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 = {
  organizationId: 'АО "Торговый дом"',
  service: 'Пример service',
};

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

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

interface QueryParams {
  organizationId?: string;
  service?: string;
}

const params: QueryParams = {
  organizationId: 'АО "Торговый дом"',
  service: 'Пример service',
};

const response = await axios.post<any>('https://api.selsup.ru/api/import/importFboStocks',
  {
    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 = {
    'organizationId': 'АО "Торговый дом"',
    'service': 'Пример service',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importFboStocks',
    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/import/importFboStocks?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=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20service", 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/import/importFboStocks?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=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20service"))
    .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 = [
    'organizationId' => 'АО "Торговый дом"',
    'service' => 'Пример service',
];

$url = 'https://api.selsup.ru/api/import/importFboStocks?' . 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/import/importFboStocks?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=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20service' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Импорт FBO остатков файлом

Запускает импорт FBO остатков с маркетплейса из файла
POST /api/import/importFboStocksByFile

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

Название Тип Обязательный Описание
organizationId integer Да Параметр organizationId
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" Да Параметр service

Тело запроса

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

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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/import/importFboStocksByFile?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', {
  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/import/importFboStocksByFile?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', {
  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 = {
    'organizationId': 'АО "Торговый дом"',
    'service': 'NONE',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importFboStocksByFile',
    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/import/importFboStocksByFile?organizationId=АО "Торговый дом"&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/import/importFboStocksByFile?organizationId=АО "Торговый дом"&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 = [
    'organizationId' => 'АО "Торговый дом"',
    'service' => 'NONE',
];
$url = 'https://api.selsup.ru/api/import/importFboStocksByFile?' . 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/import/importFboStocksByFile?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' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Импорт категорий

Создает и обновляет категории и по данным из Excel файла
POST /api/import/importCategories

Тело запроса

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

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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/import/importCategories', {
  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/import/importCategories', {
  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/import/importCategories',
    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/import/importCategories", &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/import/importCategories"))
            .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/import/importCategories',
    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/import/importCategories' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Импорт карточки из Wildberries

Импортирует одну единственную карточку из Wildberries обновляя ее в SelSup
POST /api/import/importCard

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

Название Тип Обязательный Описание
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" Да Маркетплейс с которого обновить данные
modelId integer Да Идентификатор модели
updateAll boolean Нет Обновить название, описание и пр
debug boolean Нет Режим отладки, при котором записывается дополнительная информация в логи

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
article string Уникальный артикул модели
organizationId integer Организация для товара
category Category Категория
Структура Category
Поле Тип Описание
categoryId integer Идентификатор категории. Проставляется автоматически
name string Наименование категории
deleted boolean Признак удаленных категорий
parentId integer Идентификатор родительской категории
clientId integer Идентификатор клиента
marked boolean Маркируется ли категория
categoryClass string Группы категорий Честного знака
wildberriesType WildberriesType Предмет Вайлдбериз
Структура WildberriesType
Поле Тип Описание
id integer
name string Название
published boolean Опубликованность предмета Вайлдбериз
hasSize boolean Атрибут, указывающий наличие размера
monoBoxMinQuantity integer
monoType string
monoMinPrice integer
hasParent boolean
parentId integer
wildberriesId integer Идентификатор предмета на Вайлдбериз
lastSyncDate string Дата последней синхронизации предмета с Вайлдбериз
notChangedDays integer Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
commission number Комиссия для товаров данного предмета в Вайлдбериз по FBM
fbsCommission number Комиссия для товаров данного предмета в Вайлдбериз по FBS
logisticPrice integer Стоимость доставки товара к клиенту на Вайлдбериз
storagePrice number Стоимость хранения товара на складе Вайлдбериз за штуку в день
acceptancePrice number Стоимость приемки товара на складе Вайлдбериз за штуку
needDimensions boolean Атрибут обязательности габаритов товара, тк стоимость хранения рассчитывается на основе габаритов
wildberriesTypeId integer
ozonCategory OzonCategory Категория Озон
Структура OzonCategory
Поле Тип Описание
id integer Идентификатор категории. Совпадает с идентификатором категории на самом озон
name string Название категории
published boolean Опубликована категория?
parentId integer Родительская категория
isLeaf boolean Признак листовой категории, в которой могут находиться товары
lastSyncDate string Дата последней синхронизации категории с Озон
types string Типы товаров для данной категории для поиска
notChangedDays integer Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
fboCommission number Комиссия FBO
fbsCommission number Комиссия FBS, rFBS
wildberriesCategoryId integer
ozonDescriptionCategoryId integer
yandexMarketCategoryId integer
yandexMarketCategory YandexMarketCategory Категория Яндекс.Маркета
Структура YandexMarketCategory
Поле Тип Описание
id integer
name string Название категории
published boolean
parentId integer
isLeaf boolean Признак листовой категории, в которой могут находиться товары
lastSyncDate string Дата последней синхронизации категории с Озон
notChangedDays integer Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
ozonDescriptionCategory OzonDescriptionCategory Категория Озон
Структура OzonDescriptionCategory
Поле Тип Описание
id integer
name string Название категории
published boolean
parentId integer
isLeaf boolean Признак листовой категории, в которой могут находиться товары
lastSyncDate string Дата последней синхронизации категории с Озон
notChangedDays integer Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
isError boolean
errorDate string
types string
typeId integer
ozonCommission number Комиссия озона.
ozonCategoryId integer Идентификатор категория Озон
tnved Tnved Код ТНВЭД
Структура Tnved
Поле Тип Описание
id integer Идентификатор кода ТНВЭД без нулей в начале
name string Название кода ТНВЭД
deleted boolean
type string Уровень кода ТНВЭД
categoryClass string Группы категорий Честного знака
parentId integer Родительский ТНВЭД
keywords string Ключевые слова для кода ТНВЭД
description string Описание кода ТНВЭД
paramsTnvedId integer Определяет категорию (или ТНВЭД) национального каталога с помощью которого брать параметры. Несколько ТНВЭД могут ссылаться на одну и ту же категорию национального каталога
isInParam boolean Означает что ТНВЭД есть в параметре Вайлдбериз - их нужно выбирать в приоритете
certification string Необходимость сертификации товаров с этим ТНВЭД
parentCode string
code string
tnvedId integer Идентификатор ТНВЭД
laundry string Правила ухода за вещами
params string JSON значений параметров для категории
namePattern string Шаблон названий категории
aliexpressCategory AliexpressCategory Категория Aliexpress
Структура AliexpressCategory
Поле Тип Описание
id integer
name string
published boolean
parentId integer
aliexpressId integer
lastSyncDate string Дата последней синхронизации категории
notChangedDays integer Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
isLeaf boolean Категория является листовой. Карточки можно добавлять только в листовые
aliexpressCategoryId integer
avitoCategory AvitoCategory Категория Авито
Структура AvitoCategory
Поле Тип Описание
id integer Идентификатор категории на Авито.Совпадает с идентификатором Авито
name string Полное название категории (включает в себя названия родительских категорий)
shortName string Краткое название категории
published boolean Опубликована категория
parentId integer id родительской категории Авито. Используется при импорте обьявлений с Авито
lastSyncDate string Дата последней синхронизации категории
isLeaf boolean Категория является листовой. Карточки можно добавлять только в листовые
goodsType string Тег GoodsType в фиде
category string Тег Category в фиде
avitoCategoryId integer
packDepth integer Глубина упаковки в мм. Проставляется всем товарам в категории
packWidth integer Ширина упаковки в мм. Проставляется всем товарам в категории
packHeight integer Высота упаковки в мм. Проставляется всем товарам в категории
packWeight integer Вес упаковки в граммах. Проставляется всем товарам в категории
hasSize boolean Признак разделения товаров в категории по размеру. Меняет вид редактора карточки
hasColor boolean Признак разделения товаров в категории по цвету. Меняет вид редактора карточки
autoName boolean Автоматически формировать названия товаров в категории
removeFbsStock boolean Не передавать остатки товаров по FBS для товаров из этой категории
oneCId string Идентификатор категории в 1С
externalId string Идентификатор категории на сайте
moySkladId string Идентификатор категории в сервисе Мой склад
useClientParams boolean Показывать пользовательские параметры в категории
manufacturer Manufacturer Производитель товара
Структура Manufacturer
Поле Тип Описание
manufacturerId integer
title string
name string
address string
organizationId integer
clientId integer
countryId integer
countryName string
inn string
deleted boolean
brand Brand Бренд
Структура Brand
Поле Тип Описание
type string
brandId integer Идентификатор бренда
name string Название бренда
clientId integer Идентификатор клиента
logo string Ссылка на логотип бренда в /files/
logoSize integer Размер логотипа в байтах
logoWidth integer Ширина логотипа в пикселях
logoHeight integer Высота логотипа в пикселях
deleted boolean Бренд удален?
ozonName string
ozonId integer
id integer Идентификатор модели. Проставляется автоматически
name string Название модели внутренее
promoName string Название модели для продвижения товара. Используется в качестве названия на Wildberries
title string Название модели для печати и автоматического формирования названий товаров
wildberriesImtId integer Идентификатор карточки товара Wildberries
description string Описание товара
gender string Пол
packWidth integer Ширина упаковки товара в мм
packHeight integer Высота упаковки товара в мм
packDepth integer Глубина упаковки товара в мм
packWeight integer Вес упаковки товара в гр
season string Сезон товара. Используется для фильтрации товара в заказах поставщикам
materials string Состав товара, нужен для одежды и обуви
laundry string Правила ухода за вещами для одежды и обуви. Через запятую необходимо перечислить возможные значения
versionId integer Поле нужно передавать при изменении,для предотвращения одновременной перезаписи
clientId integer Идентификатор клиента
deleted boolean Признак удаления модели
vat string НДС
createdDate string Дата создания модели
createdUser string Пользователь, создавший модель
countryId integer Страна производства товара. По умолчанию проставляется из производителя
countryName string Название страны производства
keywords string Ключевые слова для поиска
favourite boolean Пометка товара избранным для фильтрации
params string JSON со списком значений параметров для модели
values Array of ParamValue Значения параметров карточки. Отдаются при запросе модели, если передать params=true
Структура ParamValue
Поле Тип Описание
paramId Обязательный integer Идентификатор параметра
paramName string Название параметра, для тех, у кого нет ID
option Option Значение перечислимого параметра
Структура Option
Поле Тип Описание
id integer Идентификатор значения, может отсутствовать
name string Название значения, лучше всегда передавать
paramId integer Идентификатор значения параметра Param.id
ozonId integer Идентификатор значения параметра на Ozon
wildberriesId integer Признак того, что значение параметра WB
ymId integer Признак того, что значение параметра YM
aliexpressId integer Идентификатор значения параметра на Aliexpress
clientId integer
deleted boolean
oneCId string Идентификатор значения параметра в 1С
dictionary boolean
optionId Option Значение перечислимого параметра
Структура Option
Поле Тип Описание
id integer Идентификатор значения, может отсутствовать
name string Название значения, лучше всегда передавать
paramId integer Идентификатор значения параметра Param.id
ozonId integer Идентификатор значения параметра на Ozon
wildberriesId integer Признак того, что значение параметра WB
ymId integer Признак того, что значение параметра YM
aliexpressId integer Идентификатор значения параметра на Aliexpress
clientId integer
deleted boolean
oneCId string Идентификатор значения параметра в 1С
dictionary boolean
optionId object Значение перечислимого параметра
doubleValue number Числовое значение параметра
longValue integer Целочисленное значение параметра
booleanValue boolean Булево значение параметра
stringValue string Строковое значение параметра
dateValue string Значение параметра даты
service string Сервис
unit Unit Единица измерения
Структура Unit
Поле Тип Описание
name string Название единицы измерения
measureId integer Мера параметра
id integer
auto boolean Автоматически проставленное значение параметра
created integer Дата заполнения параметра
user string Пользователь, который заполнил параметр
sourceModelId integer Модель из которой была создана данная модель как дубликат карточки
additionalInfo string Дополнительная информация о товаре
createIndex integer Индекс создания карточки - для ограничения бесплатного тарифа
bulk boolean Признак сборки товара по штрих-кодам, безуникальных кодов
oneCId string Идентификатор товара в 1С
site string Адрес сайта
shelfLife integer Срок годности в единице измерения
shelfLifeUnit string Срок годности в единице измерения
shelfLifeComment string Комментарий срока годности
lifeTime integer Срок службы в единице измерения
lifeTimeUnit string Срок службы в единице измерения
lifeTimeComment string Комментарий срока службы
modelGuarantee integer Гарантийный срок в единице измерения
modelGuaranteeUnit string Единица гарантийного срока
modelGuaranteeComment 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 = {
  service: 'NONE',
  modelId: '123',
  updateAll: 'true',
  debug: 'true',
};

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

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

interface QueryParams {
  service?: string;
  modelId?: number;
  updateAll?: string;
  debug?: string;
}

const params: QueryParams = {
  service: 'NONE',
  modelId: '123',
  updateAll: 'true',
  debug: 'true',
};

const response = await axios.post<any>('https://api.selsup.ru/api/import/importCard',
  {
    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 = {
    'service': 'NONE',
    'modelId': '123',
    'updateAll': 'true',
    'debug': 'true',
}

response = requests.post(
    'https://api.selsup.ru/api/import/importCard',
    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/import/importCard?service=NONE&modelId=123&updateAll=true&debug=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/import/importCard?service=NONE&modelId=123&updateAll=true&debug=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 = [
    'service' => 'NONE',
    'modelId' => '123',
    'updateAll' => 'true',
    'debug' => 'true',
];

$url = 'https://api.selsup.ru/api/import/importCard?' . 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/import/importCard?service=NONE&modelId=123&updateAll=true&debug=true' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Импорт брендов

Создает новые бренды по данным из Excel файла
POST /api/import/importBrands

Тело запроса

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

Тело ответа

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

Примеры кода

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

fetch('https://api.selsup.ru/api/import/importBrands', {
  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/import/importBrands', {
  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/import/importBrands',
    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/import/importBrands", &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/import/importBrands"))
            .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/import/importBrands',
    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/import/importBrands' \
  -H 'Authorization: YOUR_API_KEY' \
  -F 'file=@/path/to/file.pdf'

🔗 Шаблоны доставки Aliexpress

Возвращает информацию о файлах импорта
POST /api/import/getAliexpressTemplates

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

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

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: DeliveryMethod
Элементы массива
Поле Тип Описание
delivery_method_id integer Нет Идентификатор способа доставки.
delivery_method_name string Нет Название способа доставки.
tpl_provider string Нет Служба доставки.
tpl_provider_id integer Нет Идентификатор службы доставки.
warehouse_name string Нет Название склада.
warehouse_id integer Нет Идентификатор склада
has_entrusted_acceptance boolean Нет
⚠ 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 = {
  organizationId: 'АО "Торговый дом"',
};

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

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

interface QueryParams {
  organizationId?: number;
}

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

const response = await axios.post<any>('https://api.selsup.ru/api/import/getAliexpressTemplates',
  {
    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 = {
    'organizationId': 'АО "Торговый дом"',
}

response = requests.post(
    'https://api.selsup.ru/api/import/getAliexpressTemplates',
    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/import/getAliexpressTemplates?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", 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/import/getAliexpressTemplates?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"))
    .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 = [
    'organizationId' => 'АО "Торговый дом"',
];

$url = 'https://api.selsup.ru/api/import/getAliexpressTemplates?' . 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/import/getAliexpressTemplates?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' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Поиск карточки по артикулу и связывание с маркетплейсом

Пытаемся найти карточку и связать
POST /api/import/findCard

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

Название Тип Обязательный Описание
modelId integer Да Параметр modelId
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" Да Параметр service

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
article string Уникальный артикул модели
organizationId integer Организация для товара
category Category Категория
Структура Category
Поле Тип Описание
categoryId integer Идентификатор категории. Проставляется автоматически
name string Наименование категории
deleted boolean Признак удаленных категорий
parentId integer Идентификатор родительской категории
clientId integer Идентификатор клиента
marked boolean Маркируется ли категория
categoryClass string Группы категорий Честного знака
wildberriesType WildberriesType Предмет Вайлдбериз
Структура WildberriesType
Поле Тип Описание
id integer
name string Название
published boolean Опубликованность предмета Вайлдбериз
hasSize boolean Атрибут, указывающий наличие размера
monoBoxMinQuantity integer
monoType string
monoMinPrice integer
hasParent boolean
parentId integer
wildberriesId integer Идентификатор предмета на Вайлдбериз
lastSyncDate string Дата последней синхронизации предмета с Вайлдбериз
notChangedDays integer Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
commission number Комиссия для товаров данного предмета в Вайлдбериз по FBM
fbsCommission number Комиссия для товаров данного предмета в Вайлдбериз по FBS
logisticPrice integer Стоимость доставки товара к клиенту на Вайлдбериз
storagePrice number Стоимость хранения товара на складе Вайлдбериз за штуку в день
acceptancePrice number Стоимость приемки товара на складе Вайлдбериз за штуку
needDimensions boolean Атрибут обязательности габаритов товара, тк стоимость хранения рассчитывается на основе габаритов
wildberriesTypeId integer
ozonCategory OzonCategory Категория Озон
Структура OzonCategory
Поле Тип Описание
id integer Идентификатор категории. Совпадает с идентификатором категории на самом озон
name string Название категории
published boolean Опубликована категория?
parentId integer Родительская категория
isLeaf boolean Признак листовой категории, в которой могут находиться товары
lastSyncDate string Дата последней синхронизации категории с Озон
types string Типы товаров для данной категории для поиска
notChangedDays integer Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
fboCommission number Комиссия FBO
fbsCommission number Комиссия FBS, rFBS
wildberriesCategoryId integer
ozonDescriptionCategoryId integer
yandexMarketCategoryId integer
yandexMarketCategory YandexMarketCategory Категория Яндекс.Маркета
Структура YandexMarketCategory
Поле Тип Описание
id integer
name string Название категории
published boolean
parentId integer
isLeaf boolean Признак листовой категории, в которой могут находиться товары
lastSyncDate string Дата последней синхронизации категории с Озон
notChangedDays integer Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
ozonDescriptionCategory OzonDescriptionCategory Категория Озон
Структура OzonDescriptionCategory
Поле Тип Описание
id integer
name string Название категории
published boolean
parentId integer
isLeaf boolean Признак листовой категории, в которой могут находиться товары
lastSyncDate string Дата последней синхронизации категории с Озон
notChangedDays integer Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
isError boolean
errorDate string
types string
typeId integer
ozonCommission number Комиссия озона.
ozonCategoryId integer Идентификатор категория Озон
tnved Tnved Код ТНВЭД
Структура Tnved
Поле Тип Описание
id integer Идентификатор кода ТНВЭД без нулей в начале
name string Название кода ТНВЭД
deleted boolean
type string Уровень кода ТНВЭД
categoryClass string Группы категорий Честного знака
parentId integer Родительский ТНВЭД
keywords string Ключевые слова для кода ТНВЭД
description string Описание кода ТНВЭД
paramsTnvedId integer Определяет категорию (или ТНВЭД) национального каталога с помощью которого брать параметры. Несколько ТНВЭД могут ссылаться на одну и ту же категорию национального каталога
isInParam boolean Означает что ТНВЭД есть в параметре Вайлдбериз - их нужно выбирать в приоритете
certification string Необходимость сертификации товаров с этим ТНВЭД
parentCode string
code string
tnvedId integer Идентификатор ТНВЭД
laundry string Правила ухода за вещами
params string JSON значений параметров для категории
namePattern string Шаблон названий категории
aliexpressCategory AliexpressCategory Категория Aliexpress
Структура AliexpressCategory
Поле Тип Описание
id integer
name string
published boolean
parentId integer
aliexpressId integer
lastSyncDate string Дата последней синхронизации категории
notChangedDays integer Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
isLeaf boolean Категория является листовой. Карточки можно добавлять только в листовые
aliexpressCategoryId integer
avitoCategory AvitoCategory Категория Авито
Структура AvitoCategory
Поле Тип Описание
id integer Идентификатор категории на Авито.Совпадает с идентификатором Авито
name string Полное название категории (включает в себя названия родительских категорий)
shortName string Краткое название категории
published boolean Опубликована категория
parentId integer id родительской категории Авито. Используется при импорте обьявлений с Авито
lastSyncDate string Дата последней синхронизации категории
isLeaf boolean Категория является листовой. Карточки можно добавлять только в листовые
goodsType string Тег GoodsType в фиде
category string Тег Category в фиде
avitoCategoryId integer
packDepth integer Глубина упаковки в мм. Проставляется всем товарам в категории
packWidth integer Ширина упаковки в мм. Проставляется всем товарам в категории
packHeight integer Высота упаковки в мм. Проставляется всем товарам в категории
packWeight integer Вес упаковки в граммах. Проставляется всем товарам в категории
hasSize boolean Признак разделения товаров в категории по размеру. Меняет вид редактора карточки
hasColor boolean Признак разделения товаров в категории по цвету. Меняет вид редактора карточки
autoName boolean Автоматически формировать названия товаров в категории
removeFbsStock boolean Не передавать остатки товаров по FBS для товаров из этой категории
oneCId string Идентификатор категории в 1С
externalId string Идентификатор категории на сайте
moySkladId string Идентификатор категории в сервисе Мой склад
useClientParams boolean Показывать пользовательские параметры в категории
manufacturer Manufacturer Производитель товара
Структура Manufacturer
Поле Тип Описание
manufacturerId integer
title string
name string
address string
organizationId integer
clientId integer
countryId integer
countryName string
inn string
deleted boolean
brand Brand Бренд
Структура Brand
Поле Тип Описание
type string
brandId integer Идентификатор бренда
name string Название бренда
clientId integer Идентификатор клиента
logo string Ссылка на логотип бренда в /files/
logoSize integer Размер логотипа в байтах
logoWidth integer Ширина логотипа в пикселях
logoHeight integer Высота логотипа в пикселях
deleted boolean Бренд удален?
ozonName string
ozonId integer
id integer Идентификатор модели. Проставляется автоматически
name string Название модели внутренее
promoName string Название модели для продвижения товара. Используется в качестве названия на Wildberries
title string Название модели для печати и автоматического формирования названий товаров
wildberriesImtId integer Идентификатор карточки товара Wildberries
description string Описание товара
gender string Пол
packWidth integer Ширина упаковки товара в мм
packHeight integer Высота упаковки товара в мм
packDepth integer Глубина упаковки товара в мм
packWeight integer Вес упаковки товара в гр
season string Сезон товара. Используется для фильтрации товара в заказах поставщикам
materials string Состав товара, нужен для одежды и обуви
laundry string Правила ухода за вещами для одежды и обуви. Через запятую необходимо перечислить возможные значения
versionId integer Поле нужно передавать при изменении,для предотвращения одновременной перезаписи
clientId integer Идентификатор клиента
deleted boolean Признак удаления модели
vat string НДС
createdDate string Дата создания модели
createdUser string Пользователь, создавший модель
countryId integer Страна производства товара. По умолчанию проставляется из производителя
countryName string Название страны производства
keywords string Ключевые слова для поиска
favourite boolean Пометка товара избранным для фильтрации
params string JSON со списком значений параметров для модели
values Array of ParamValue Значения параметров карточки. Отдаются при запросе модели, если передать params=true
Структура ParamValue
Поле Тип Описание
paramId Обязательный integer Идентификатор параметра
paramName string Название параметра, для тех, у кого нет ID
option Option Значение перечислимого параметра
Структура Option
Поле Тип Описание
id integer Идентификатор значения, может отсутствовать
name string Название значения, лучше всегда передавать
paramId integer Идентификатор значения параметра Param.id
ozonId integer Идентификатор значения параметра на Ozon
wildberriesId integer Признак того, что значение параметра WB
ymId integer Признак того, что значение параметра YM
aliexpressId integer Идентификатор значения параметра на Aliexpress
clientId integer
deleted boolean
oneCId string Идентификатор значения параметра в 1С
dictionary boolean
optionId Option Значение перечислимого параметра
Структура Option
Поле Тип Описание
id integer Идентификатор значения, может отсутствовать
name string Название значения, лучше всегда передавать
paramId integer Идентификатор значения параметра Param.id
ozonId integer Идентификатор значения параметра на Ozon
wildberriesId integer Признак того, что значение параметра WB
ymId integer Признак того, что значение параметра YM
aliexpressId integer Идентификатор значения параметра на Aliexpress
clientId integer
deleted boolean
oneCId string Идентификатор значения параметра в 1С
dictionary boolean
optionId object Значение перечислимого параметра
doubleValue number Числовое значение параметра
longValue integer Целочисленное значение параметра
booleanValue boolean Булево значение параметра
stringValue string Строковое значение параметра
dateValue string Значение параметра даты
service string Сервис
unit Unit Единица измерения
Структура Unit
Поле Тип Описание
name string Название единицы измерения
measureId integer Мера параметра
id integer
auto boolean Автоматически проставленное значение параметра
created integer Дата заполнения параметра
user string Пользователь, который заполнил параметр
sourceModelId integer Модель из которой была создана данная модель как дубликат карточки
additionalInfo string Дополнительная информация о товаре
createIndex integer Индекс создания карточки - для ограничения бесплатного тарифа
bulk boolean Признак сборки товара по штрих-кодам, безуникальных кодов
oneCId string Идентификатор товара в 1С
site string Адрес сайта
shelfLife integer Срок годности в единице измерения
shelfLifeUnit string Срок годности в единице измерения
shelfLifeComment string Комментарий срока годности
lifeTime integer Срок службы в единице измерения
lifeTimeUnit string Срок службы в единице измерения
lifeTimeComment string Комментарий срока службы
modelGuarantee integer Гарантийный срок в единице измерения
modelGuaranteeUnit string Единица гарантийного срока
modelGuaranteeComment 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 = {
  modelId: '123',
  service: 'NONE',
};

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

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

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

const params: QueryParams = {
  modelId: '123',
  service: 'NONE',
};

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

console.log(response.data);
import requests

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

params = {
    'modelId': '123',
    'service': 'NONE',
}

response = requests.post(
    'https://api.selsup.ru/api/import/findCard',
    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/import/findCard?modelId=123&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/import/findCard?modelId=123&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 = [
    'modelId' => '123',
    'service' => 'NONE',
];

$url = 'https://api.selsup.ru/api/import/findCard?' . 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/import/findCard?modelId=123&service=NONE' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Проверке карточки по TaskId

Пытаемся получить статус создания карточки
POST /api/import/checkCardTasks

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

Название Тип Обязательный Описание
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" Да Параметр service

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

Content-Type: application/json
Тип данных: integer

Тело ответа

✓ 200 OK
Content-Type: application/json
Тип ответа: Product Товар - уникальный с точки зрения подтребительских свойств товар.
Элементы массива
Поле Тип Описание
id integer Нет Идентификатор товара. Проставляется автоматически
productType string Нет Тип товара
name string Нет Наименование товара внутренее
deleted boolean Нет Признак удаления товара
printName string Нет Название товара для внешних сервисов. Если не задано, проставляется равным наименованию товара
realSize string Нет Российский размер товара для одежды или характеристики для других категорий
vendorSize string Нет Размер производителя или характеристики производителя. Не обязательно заполнять
size string Нет Размер для одежды или характеристики для внешних сервисов. Должен быть уникальным в рамках цвета
wildberriesImtId integer Нет Используется для категорий, у которых не предусмотрен размер
wildberriesStockCount integer Нет Остатки товара на Вайлдбериз
ozonId integer Нет Идентификатор товара Озон на сайте
ozonRealFbs boolean Нет Признак использования RealFbs для товара
ozonProductId integer Нет Идентификатор товара Озон в кабинете API
wildberriesSizeId integer Нет Идентификатор размера на Вайлдбериз
ozonArticle string Нет Уникальный артикул товара для озон
externalArticle string Нет Уникальный артикул товара для стороннего сервиса
ozonStockCount integer Нет Остаток товара на складах Озон
ozonStockBetweenWarehouses integer Нет Остаток товара в Озон, которые перемещаются между складами
removeFbsStock boolean Нет Не выгружать остатки товара на маркетплейсы
purchaseCurrency 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 = {
  service: 'NONE',
};

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

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

interface QueryParams {
  service?: string;
}

const params: QueryParams = {
  service: 'NONE',
};

const response = await axios.post<any>('https://api.selsup.ru/api/import/checkCardTasks',
  [
    1
  ],
  {
    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 = {
    'service': 'NONE',
}

response = requests.post(
    'https://api.selsup.ru/api/import/checkCardTasks',
    headers=headers,
    params=params,
    json=[
    1
]
)

print(response.json())
package main

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

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

    payload := map[string]interface{}[
        1
]
    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/import/checkCardTasks?service=NONE", 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/import/checkCardTasks?service=NONE"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .post(HttpRequest.BodyPublishers.ofString(
        "[1]"
    ))
    .build();

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

$params = [
    'service' => 'NONE',
];

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

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_POSTFIELDS => json_encode([
    1
]),
    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/import/checkCardTasks?service=NONE' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '[
  1
]'

🔗 Проверке карточки по TaskId

Пытаемся получить статус создания карточки. Сейчас поддерживается только OZON
POST /api/import/checkCardTask

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

Название Тип Обязательный Описание
productId 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" Да Параметр service

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор товара. Проставляется автоматически
productType string Тип товара
name string Наименование товара внутренее
deleted boolean Признак удаления товара
printName string Название товара для внешних сервисов. Если не задано, проставляется равным наименованию товара
realSize string Российский размер товара для одежды или характеристики для других категорий
vendorSize string Размер производителя или характеристики производителя. Не обязательно заполнять
size string Размер для одежды или характеристики для внешних сервисов. Должен быть уникальным в рамках цвета
wildberriesImtId integer Используется для категорий, у которых не предусмотрен размер
wildberriesStockCount integer Остатки товара на Вайлдбериз
ozonId integer Идентификатор товара Озон на сайте
ozonRealFbs boolean Признак использования RealFbs для товара
ozonProductId integer Идентификатор товара Озон в кабинете API
wildberriesSizeId integer Идентификатор размера на Вайлдбериз
ozonArticle string Уникальный артикул товара для озон
externalArticle string Уникальный артикул товара для стороннего сервиса
ozonStockCount integer Остаток товара на складах Озон
ozonStockBetweenWarehouses integer Остаток товара в Озон, которые перемещаются между складами
removeFbsStock boolean Не выгружать остатки товара на маркетплейсы
purchaseCurrency string Валюта закупочной цены товара
purchasePriceInCurrency number Цена закупки в валюте
deliveryCostInCurrency number Цена на доставку в валюте
versionId integer Поле нужно передавать при изменении,для предотвращения одновременной перезаписи
createdDate string Дата создания товара на МП
created string Дата создания товара в SelSup
createdUser string Пользователь, который создал товар
sourceIncomeItemId integer Идентификатор товара из заказа поставщика по данным которого был создан товар
ozonRequiredStock integer Расчитанное количество товара, для поставки на склад Озон
wildberriesRequiredStock integer Расчитанное количество товара, для поставки на склад Wildberries
wildberriesProfit number Профит с продажи товара на Вайлдбериз по FBM
wildberriesProfitFbs number Профит с продажи товара на Вайлдбериз по FBS
wildberriesOrderQuantity integer Количество заказов по FBO товара на Вайлдбериз за 2 недели
wildberriesSupplyingQuantity integer Поставляемое количество товара на Вайлдбериз по FBM заказам
wildberriesSaleQuantity integer Продажи товара на Вайлдбериз по FBM за 2 недели
wildberriesQuantityInWay integer Количество товаров на Вайлдбериз в пути
wildberriesNoSale boolean Признак неликвидного товара на Вайлдбериз
lastStockChange string Дата последнего изменения стока на Вайлдбериз по FBM
ozonOrderQuantity integer Количество заказов товара по FBO на Озон по FBM и FBS за 2 недели
ozonSupplyingQuantity integer Поставляемое количество товара на Озон по FBM
ozonProfit integer Чистая маржа продажи товара на Озон по FBM
instockQuantity integer Остатки товара на складах клиента
ozonFbsSku integer Идентификатор товара в Озон по FBS
ozonFboSku integer Идентификатор товара в Озон по FBO
sellerSku string Идентификатор товара на Amazon
clientId integer Идентификатор клиента
organizationId integer Идентификатор организации
productViewId integer Идентификатор цвета
suzId string GTIN товара
cisType 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 = {
  productId: '123',
  service: 'NONE',
};

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

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

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

const params: QueryParams = {
  productId: '123',
  service: 'NONE',
};

const response = await axios.post<any>('https://api.selsup.ru/api/import/checkCardTask',
  {
    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 = {
    'productId': '123',
    'service': 'NONE',
}

response = requests.post(
    'https://api.selsup.ru/api/import/checkCardTask',
    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/import/checkCardTask?productId=123&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/import/checkCardTask?productId=123&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 = [
    'productId' => '123',
    'service' => 'NONE',
];

$url = 'https://api.selsup.ru/api/import/checkCardTask?' . 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/import/checkCardTask?productId=123&service=NONE' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

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

Запускает изменение остатков по FBS в SelSup или маркетплейсе
POST /api/import/applyStockReconciliation

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

Content-Type: application/json
ПолеТипОписание
limit integer Ограничение на количество записей. Максимальное значение - 500
page integer Номер страницы начиная с 1
count boolean Возвратить в ответе общее количество записей
sortBy string Поле сортировки записей. Работает только при получении списка.
ascending boolean Порядок сортировки - по возрастанию?. Работает только при получении списка.
query string Запрос для фильтрации
service string Сервис
organizationId integer Организация
hasProduct boolean Фильтр по результатам сверки остатков, в которых был найден товар в SelSup
ourLess boolean Остаток в SelSup меньше, чем на сервисе
ourGreater boolean Остаток в SelSup больше, чем на сервисе
error string
noProduct boolean Фильтр по результатам сверки остатков, в которых не был найден товар в SelSup

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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/import/applyStockReconciliation',
  {
    "limit": 100,
    "page": 1,
    "count": "Россия",
    "sortBy": "PRODUCTID",
    "ascending": true,
    "query": "Пример query",
    "service": "NONE",
    "organizationId": "АО \"Торговый дом\"",
    "hasProduct": true,
    "ourLess": "https://example.com/resource"
  },
  {
    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/import/applyStockReconciliation',
  {
    "limit": 100,
    "page": 1,
    "count": "Россия",
    "sortBy": "PRODUCTID",
    "ascending": true,
    "query": "Пример query",
    "service": "NONE",
    "organizationId": "АО \"Торговый дом\"",
    "hasProduct": true,
    "ourLess": "https://example.com/resource"
  },
  {
    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/import/applyStockReconciliation',
    headers=headers,
    json={
    'limit': 100,
    'page': 1,
    'count': 'Россия',
    'sortBy': 'PRODUCTID',
    'ascending': true,
    'query': 'Пример query',
    'service': 'NONE',
    'organizationId': 'АО \'Торговый дом\'',
    'hasProduct': true,
    'ourLess': 'https://example.com/resource'
}
)

print(response.json())
package main

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

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

    payload := map[string]interface{}{
        `limit`: 100,
        `page`: 1,
        `count`: `Россия`,
        `sortBy`: `PRODUCTID`,
        `ascending`: true,
        `query`: `Пример query`,
        `service`: `NONE`,
        `organizationId`: `АО \`Торговый дом\``,
        `hasProduct`: true,
        `ourLess`: `https://example.com/resource`
}
    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/import/applyStockReconciliation", 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/import/applyStockReconciliation"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .post(HttpRequest.BodyPublishers.ofString(
        "{\"limit\":100,\"page\":1,\"count\":\"Россия\",\"sortBy\":\"PRODUCTID\",\"ascending\":true,\"query\":\"Пример query\",\"service\":\"NONE\",\"organizationId\":\"АО \\"Торговый дом\\"\",\"hasProduct\":true,\"ourLess\":\"https://example.com/resource\"}"
    ))
    .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/import/applyStockReconciliation',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_POSTFIELDS => json_encode({
    'limit': 100,
    'page': 1,
    'count': 'Россия',
    'sortBy': 'PRODUCTID',
    'ascending': true,
    'query': 'Пример query',
    'service': 'NONE',
    'organizationId': 'АО \'Торговый дом\'',
    'hasProduct': true,
    'ourLess': 'https://example.com/resource'
}),
    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/import/applyStockReconciliation' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "limit": 100,
  "page": 1,
  "count": "Россия",
  "sortBy": "PRODUCTID",
  "ascending": true,
  "query": "Пример query",
  "service": "NONE",
  "organizationId": "АО \"Торговый дом\"",
  "hasProduct": true,
  "ourLess": "https://example.com/resource"
}'

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

Запускает изменение остатков по FBO в SelSup или маркетплейсе
POST /api/import/applyFboStockReconciliation

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

Content-Type: application/json
ПолеТипОписание
limit integer Ограничение на количество записей. Максимальное значение - 500
page integer Номер страницы начиная с 1
count boolean Возвратить в ответе общее количество записей
sortBy string Поле сортировки записей. Работает только при получении списка.
ascending boolean Порядок сортировки - по возрастанию?. Работает только при получении списка.
query string Запрос для фильтрации
service string Сервис
organizationId integer Организация
hasProduct boolean Фильтр по результатам сверки остатков, в которых был найден товар в SelSup
ourLess boolean Остаток в SelSup меньше, чем на сервисе
ourGreater boolean Остаток в SelSup больше, чем на сервисе
error string
noProduct boolean Фильтр по результатам сверки остатков, в которых не был найден товар в SelSup

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
id integer Идентификатор задачи
status string Текущий статус задачи
type string Тип задачи
name string Данные задачи в json - могут быть пустыми
clientId integer
entityId integer Сущность, к которой относится задача
progress integer Прогресс выполнения задачи в процентах
organizationId integer Организация задачи, может быть 0, если не зависит от организации
priority integer Приоритет задачи - чем выше тем быстрее задача запустится
properties string Параметры задачи
rand integer Используется для контроля уникальности задач в очереди. Не проставлять
message string Сообщение с результатом выполнения задачи
messageParams string Параметры сообщения с результатом выполнения задачи
createdDate string Дата добавления задачи в очередь
startDate string Дата запуска задачи
finishDate string Дата завершения задачи
file string Путь к результирующему файлу для скачивания. Путь строится к /files/file?path=...
url string Ссылка на скачивание файла с результатом задачи
inputFilePath string Пусть к файлу, не отдается по умолчанию
inputFileUrl string Ссылка на загруженный файл
retryNumber integer Счётчик перезапуска задачи.
userId integer Пользователь запустивший задачу
retryDate string Запланировання дата перезапуска
debug boolean Запуск задачи в режиме отладки с большим логированием
forcedStart boolean Ручной запуск задачи
⚠ 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/import/applyFboStockReconciliation',
  {
    "limit": 100,
    "page": 1,
    "count": "Россия",
    "sortBy": "PRODUCTID",
    "ascending": true,
    "query": "Пример query",
    "service": "NONE",
    "organizationId": "АО \"Торговый дом\"",
    "hasProduct": true,
    "ourLess": "https://example.com/resource"
  },
  {
    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/import/applyFboStockReconciliation',
  {
    "limit": 100,
    "page": 1,
    "count": "Россия",
    "sortBy": "PRODUCTID",
    "ascending": true,
    "query": "Пример query",
    "service": "NONE",
    "organizationId": "АО \"Торговый дом\"",
    "hasProduct": true,
    "ourLess": "https://example.com/resource"
  },
  {
    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/import/applyFboStockReconciliation',
    headers=headers,
    json={
    'limit': 100,
    'page': 1,
    'count': 'Россия',
    'sortBy': 'PRODUCTID',
    'ascending': true,
    'query': 'Пример query',
    'service': 'NONE',
    'organizationId': 'АО \'Торговый дом\'',
    'hasProduct': true,
    'ourLess': 'https://example.com/resource'
}
)

print(response.json())
package main

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

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

    payload := map[string]interface{}{
        `limit`: 100,
        `page`: 1,
        `count`: `Россия`,
        `sortBy`: `PRODUCTID`,
        `ascending`: true,
        `query`: `Пример query`,
        `service`: `NONE`,
        `organizationId`: `АО \`Торговый дом\``,
        `hasProduct`: true,
        `ourLess`: `https://example.com/resource`
}
    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("post", "https://api.selsup.ru/api/import/applyFboStockReconciliation", 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/import/applyFboStockReconciliation"))
    .header("Authorization", "YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .post(HttpRequest.BodyPublishers.ofString(
        "{\"limit\":100,\"page\":1,\"count\":\"Россия\",\"sortBy\":\"PRODUCTID\",\"ascending\":true,\"query\":\"Пример query\",\"service\":\"NONE\",\"organizationId\":\"АО \\"Торговый дом\\"\",\"hasProduct\":true,\"ourLess\":\"https://example.com/resource\"}"
    ))
    .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/import/applyFboStockReconciliation',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'post',
    CURLOPT_POSTFIELDS => json_encode({
    'limit': 100,
    'page': 1,
    'count': 'Россия',
    'sortBy': 'PRODUCTID',
    'ascending': true,
    'query': 'Пример query',
    'service': 'NONE',
    'organizationId': 'АО \'Торговый дом\'',
    'hasProduct': true,
    'ourLess': 'https://example.com/resource'
}),
    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/import/applyFboStockReconciliation' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "limit": 100,
  "page": 1,
  "count": "Россия",
  "sortBy": "PRODUCTID",
  "ascending": true,
  "query": "Пример query",
  "service": "NONE",
  "organizationId": "АО \"Торговый дом\"",
  "hasProduct": true,
  "ourLess": "https://example.com/resource"
}'

🔗 Импорт изображений с Wildberries

Сохраняет в карточку товара изображения с сайта Wildberries
GET /api/import/importWildberriesImages

Тело ответа

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

Примеры кода

const axios = require('axios');

const response = await axios.get('https://api.selsup.ru/api/import/importWildberriesImages',
  {
    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/import/importWildberriesImages',
  {
    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/import/importWildberriesImages',
    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/import/importWildberriesImages", 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/import/importWildberriesImages"))
    .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/import/importWildberriesImages',
    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/import/importWildberriesImages' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'

🔗 Поиск файлов импорта

Возвращает информацию о файлах импорта
GET /api/import/findImportFile

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

Название Тип Обязательный Описание
organizationId integer Нет Параметр organizationId
status "CREATED""READY""PROCESSING""SUCCESS""ERROR" Нет Параметр status
limit integer Нет Ограничение на количество записей. Максимальное значение - 500
page integer Нет Номер страницы начиная с 1
count boolean Нет Возвратить в ответе общее количество записей
sortBy string Нет Поле сортировки записей. Работает только при получении списка.
ascending boolean Нет Порядок сортировки - по возрастанию?. Работает только при получении списка.

Тело ответа

✓ 200 OK
Content-Type: application/json
Поле Тип Описание
rows Array of ImportFile Строки с результатом поиска
Структура ImportFile
Поле Тип Описание
id integer
status string
path string
createdDate string
filename string
type string
sid string
organizationId integer
clientId integer
message string
messageParams string
input object
localPath string
total integer Общее количество найденных записей. Возвращается только, когда count = true
page 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 = {
  organizationId: 'АО "Торговый дом"',
  status: 'active',
  limit: 'Пример limit',
  page: 'Пример page',
  count: 'Россия',
  sortBy: 'Пример sortBy',
  ascending: 'Пример ascending',
};

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

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

interface QueryParams {
  organizationId?: number;
  status?: string;
  limit?: string;
  page?: string;
  count?: string;
  sortBy?: string;
  ascending?: string;
}

const params: QueryParams = {
  organizationId: 'АО "Торговый дом"',
  status: 'active',
  limit: 'Пример limit',
  page: 'Пример page',
  count: 'Россия',
  sortBy: 'Пример sortBy',
  ascending: 'Пример ascending',
};

const response = await axios.get<any>('https://api.selsup.ru/api/import/findImportFile',
  {
    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 = {
    'organizationId': 'АО "Торговый дом"',
    'status': 'active',
    'limit': 'Пример limit',
    'page': 'Пример page',
    'count': 'Россия',
    'sortBy': 'Пример sortBy',
    'ascending': 'Пример ascending',
}

response = requests.get(
    'https://api.selsup.ru/api/import/findImportFile',
    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/import/findImportFile?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&status=active&limit=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20limit&page=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20page&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=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20ascending", 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/import/findImportFile?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&status=active&limit=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20limit&page=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20page&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=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20ascending"))
    .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 = [
    'organizationId' => 'АО "Торговый дом"',
    'status' => 'active',
    'limit' => 'Пример limit',
    'page' => 'Пример page',
    'count' => 'Россия',
    'sortBy' => 'Пример sortBy',
    'ascending' => 'Пример ascending',
];

$url = 'https://api.selsup.ru/api/import/findImportFile?' . 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/import/findImportFile?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&status=active&limit=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20limit&page=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20page&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=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%20ascending' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json'