{
"error": "error_brand_already_exists",
"localMessage": "Бренд Base уже существует",
"params": {
"name": "Base"
}
}Публичный API · Справочник API
Сертификаты качества
Сертификаты качества: загрузка, поиск и проверка в государственном реестре.
Методы для работы с сертификатами качества, декларациями, отказными письмами на товар.
/api/qualityDocument
Модель данных
Структуры данных
Поля объектов, которые используются в запросах и ответах этого раздела.
QualityDocumentImage5 полей
idinteger · int64Поле id.
urlstringПоле url.
positioninteger · int32Поле position.
documentIdinteger · int64Поле documentId.
clientIdinteger · int64Поле clientId.
AliexpressCategory8 полей
idinteger · int64Поле id.
namestringПоле name.
publishedbooleanПоле published.
parentIdinteger · int64Поле parentId.
aliexpressIdinteger · int64Поле aliexpressId.
lastSyncDatestring · date-timeДата последней синхронизации категории
notChangedDaysinteger · int32Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
isLeafbooleanКатегория является листовой. Карточки можно добавлять только в листовые
AvitoCategory9 полей
idinteger · int64Идентификатор категории на Авито.Совпадает с идентификатором Авито
ОбязательноnamestringПолное название категории (включает в себя названия родительских категорий)
ОбязательноshortNamestringКраткое название категории
publishedbooleanОпубликована категория
parentIdinteger · int64id родительской категории Авито. Используется при импорте обьявлений с Авито
lastSyncDatestring · date-timeДата последней синхронизации категории
isLeafbooleanКатегория является листовой. Карточки можно добавлять только в листовые
goodsTypestringТег GoodsType в фиде
categorystringТег Category в фиде
Brand11 полей
brandIdinteger · int32Идентификатор бренда
read-onlynamestringНазвание бренда
ОбязательноclientIdinteger · int64Идентификатор клиента
read-onlylogoUrlstringСсылка логотипа бренда
read-onlylogoSizeinteger · int32Размер логотипа в байтах
read-onlylogoWidthinteger · int32Ширина логотипа в пикселях
read-onlylogoHeightinteger · int32Высота логотипа в пикселях
read-onlydeletedbooleanБренд удален?
ozonNamestringНазвание бренда на Ozon
ozonIdinteger · int64ID бренда на Ozon
oneCIdstringИдентификатор 1С
Category47 полей
categoryIdinteger · int32Идентификатор категории. Проставляется автоматически
read-onlynamestringНаименование категории
ОбязательноdeletedbooleanПризнак удаленных категорий
read-onlyparentIdinteger · int32Идентификатор родительской категории
clientIdinteger · int64Идентификатор клиента
read-onlymarkedbooleanМаркируется ли категория
categoryClassstringТип категории для Честного знака. По умолчанию ставится OTHER
wildberriesTypeWildberriesTypeПредмет Вайлдбериз. Можно устанавливать либо объект,либо только идентификатор
wildberriesCategoryIdinteger · int64Идентификатор категории Wildberries, совпадает с ID категории на самом Wildberries
wildberriesFbmCommissionnumber · doubleКомиссия по тарифу FBM
read-onlywildberriesFbwCommissionnumber · doubleКомиссия по тарифу FBW
read-onlywildberriesFbsCommissionnumber · doubleКомиссия по тарифу FBS
read-onlywildberriesDbsCommissionnumber · doubleКомиссия по тарифу DBS
read-onlywildberriesEdbsCommissionnumber · doubleКомиссия по тарифу EDBS
read-onlywildberriesCAndCCommissionnumber · doubleКомиссия по тарифу C&C
read-onlywildberriesBookingCommissionnumber · doubleКомиссия за бронирование
read-onlyozonDescriptionCategoryIdinteger · int64Идентификатор категории на Ozon. Строится из ID категории + ID типа на Ozon
yandexMarketCategoryIdinteger · int64Идентификатор категории в Яндекс.Маркет. Совпадает с идентификатором категории на самом Яндекс.Маркет
yandexMarketCategoryYandexMarketCategoryКатегория Яндекс.Маркета. Можно проставлять либо объект, либо только идентификатор
ozonDescriptionCategoryOzonDescriptionCategoryКатегория Озон
ozonCommissionnumber · doubleКомиссия озона.
read-onlytnvedTnvedТНВЭД. Можно проставлять либо объект, либо идентификатор ТНВЭД
tnvedIdinteger · int64Идентификатор ТНВЭД
laundrystringПравила ухода за вещами. Разделяются запятыми
paramsstringJSON значений параметров для категории
namePatternstringШаблон названий категории
aliexpressCategoryAliexpressCategoryКатегория Aliexpress
aliexpressCategoryIdinteger · int64Идентификатор категории на самом Aliexpress
avitoCategoryAvitoCategoryКатегория Avito
lamodaCategoryLamodaCategoryКатегория Lamoda
lamodaCategoryIdinteger · int64Идентификатор категории на Lamoda
avitoCategoryIdinteger · int64Идентификатор категории на Avito
packDepthinteger · int32Глубина упаковки в мм. Проставляется всем товарам в категории
packWidthinteger · int32Ширина упаковки в мм. Проставляется всем товарам в категории
packHeightinteger · int32Высота упаковки в мм. Проставляется всем товарам в категории
packWeightinteger · int32Вес упаковки в граммах. Проставляется всем товарам в категории
hasSizebooleanПризнак разделения товаров в категории по размеру. Меняет вид редактора карточки
hasColorbooleanПризнак разделения товаров в категории по цвету. Меняет вид редактора карточки
autoNamebooleanАвтоматически формировать названия товаров в категории
removeFbsStockbooleanНе передавать остатки товаров по FBS для товаров из этой категории
oneCIdstringИдентификатор категории в 1С
externalIdstringИдентификатор категории на сайте
moySkladIdstringИдентификатор категории в сервисе МойСклад
useClientParamsbooleanПоказывать пользовательские параметры в категории
requiredExpirationDatebooleanЯвляется ли срок годности обязательным параметром
serviceCategoryMappingsobjectУниверсальные привязки категории к категориям внешних сервисов
productCountinteger · int32Количество товаров в категории. Отдается только при withProductCount=true
LamodaCategory8 полей
idinteger · int64Поле id.
namestringНазвание
shortNamestringКраткое название категории
publishedbooleanОпубликованность категории
isLeafbooleanЛистовая категория
parentIdinteger · int64Поле parentId.
lastSyncDatestring · date-timeДата последней синхронизации
notChangedDaysinteger · int32Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
OzonDescriptionCategory21 полей
idinteger · int64Идентификатор категории на Ozon. Состоит из двух идентификаторов Категории + ID типа на самом Ozon
namestringНазвание категории
ОбязательноpublishedbooleanПоле published.
parentIdinteger · int64Поле parentId.
isLeafbooleanПризнак листовой категории, в которой могут находиться товары
lastSyncDatestring · date-timeДата последней синхронизации категории с Озон
notChangedDaysinteger · int32Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
isErrorbooleanПоле isError.
errorDatestring · dateПоле errorDate.
typesstringПоле types.
typeIdinteger · int64Идентификатор типа на Ozon
purchasePercentAvgnumber · doubleСреднее значение процента выкупа. Используется в AI Финдире
purchasePercentMinnumber · doubleМинимально допустимое значение процента выкупа. Используется в AI Финдире
photoAvginteger · int32Среднее кол-во фотографий. Используется в AI Финдире
photoMininteger · int32Минимально допустимое кол-во фотографий. Используется в AI Финдире
drrAvgnumber · doubleСреднее значение ДРР. Используется в AI Финдире
drrMinnumber · doubleМинимально допустимое значение ДРР. Используется в AI Финдире
marginAvgnumber · doubleСреднее значение маржинальности. Используется в AI Финдире
marginMinnumber · doubleМинимально допустимое значение маржинальности. Используется в AI Финдире
promotionCtrAvgnumber · doubleСреднее значение CTR рекламной кампании. Используется в AI Финдире
promotionCtrMinnumber · doubleМинимально допустимое значение CTR рекламной кампании. Используется в AI Финдире
QualityDocument13 полей
idinteger · int64Поле id.
namestringПоле name.
typestringТип документа
numberstringНомер сертификата
numberNormalizedstringНормализованный номер сертификата, используется для поиска дублей
clientIdinteger · int64Поле clientId.
versionIdinteger · int64Поле versionId.
createdUserstringПоле createdUser.
startDatestring · dateДата начала действия сертификата
expireDatestring · dateДата окончания срока действия сертификата
indefinitebooleanПоле indefinite.
dataQualityDocumentData[]Связи сертификата с брендом и категорией
imagesQualityDocumentImage[]Изображения сертификата
QualityDocumentData8 полей
idinteger · int64Поле id.
documentIdinteger · int64Сертификат
productModelIdinteger · int64Связь сертификата с продуктом
brandBrandСвязь сертификата с брендом
brandIdinteger · int32Поле brandId.
categoryCategoryСвязь категории с сертификатом
categoryIdinteger · int32Поле categoryId.
clientIdinteger · int64Поле clientId.
ServiceCategoryMapping3 полей
servicestringСервис
externalIdstringПоле externalId.
namestringПоле name.
Tnved14 полей
idinteger · int64Идентификатор кода ТНВЭД без нулей в начале
namestringНазвание кода ТНВЭД
deletedbooleanПоле deleted.
typestringТип
categoryClassstringИнформационное поле, чтобы автоматически заполнять значение в категории,при выборе ТНВЭД, но никогда не используется в документах
parentIdinteger · int64Родительский ТНВЭД
keywordsstringКлючевые слова для кода ТНВЭД
descriptionstringОписание кода ТНВЭД
paramsTnvedIdinteger · int64Идентификатор категории национального каталога (cat_id)
isInParambooleanОзначает что ТНВЭД есть в параметре Вайлдбериз - их нужно выбирать в приоритете
certificationstringНеобходимость сертификации товаров с этим ТНВЭД
codestringПоле code.
parentCodestringПоле parentCode.
certificationRequiredbooleanПоле certificationRequired.
WildberriesType32 полей
idinteger · int64Поле id.
namestringНазвание
publishedbooleanОпубликованность предмета Вайлдбериз
hasSizebooleanАтрибут, указывающий наличие размера
monoBoxMinQuantityinteger · int32Поле monoBoxMinQuantity.
monoTypestringПоле monoType.
monoMinPriceinteger · int32Поле monoMinPrice.
hasParentbooleanПоле hasParent.
parentIdinteger · int64Поле parentId.
wildberriesIdinteger · int64Идентификатор предмета на Вайлдбериз
lastSyncDatestring · date-timeДата последней синхронизации предмета с Вайлдбериз
notChangedDaysinteger · int32Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
commissionnumber · doubleКомиссия для товаров данного предмета в Вайлдбериз по FBM
fbsCommissionnumber · doubleКомиссия для товаров данного предмета в Вайлдбериз по FBS
fbwCommissionnumber · doubleКомиссия по тарифу FBW
dbsCommissionnumber · doubleКомиссия по тарифу DBS
edbsCommissionnumber · doubleКомиссия по тарифу EDBS
cAndCCommissionnumber · doubleКомиссия по тарифу C&C
bookingCommissionnumber · doubleКомиссия за бронирование
logisticPriceinteger · int32Стоимость доставки товара к клиенту на Вайлдбериз
storagePricenumber · doubleСтоимость хранения товара на складе Вайлдбериз за штуку в день
acceptancePricenumber · doubleСтоимость приемки товара на складе Вайлдбериз за штуку
needDimensionsbooleanАтрибут обязательности габаритов товара, тк стоимость хранения рассчитывается на основе габаритов
purchasePercentAvgnumber · doubleСреднее значение процента выкупа. Используется в AI Финдире
purchasePercentMinnumber · doubleМинимально допустимое значение процента выкупа. Используется в AI Финдире
photoAvginteger · int32Среднее кол-во фотографий. Используется в AI Финдире
photoMininteger · int32Минимально допустимое кол-во фотографий. Используется в AI Финдире
drrAvgnumber · doubleСреднее значение ДРР. Используется в AI Финдире
drrMinnumber · doubleМинимально допустимое значение ДПП. Используется в AI Финдире
marginAvgnumber · doubleСреднее значение маржинальности. Используется в AI Финдире
marginMinnumber · doubleМинимально допустимое значение маржинальности. Используется в AI Финдире
candCCommissionnumber · doubleПоле candCCommission.
YandexMarketCategory7 полей
idinteger · int64Поле id.
namestringНазвание категории
ОбязательноpublishedbooleanПоле published.
parentIdinteger · int64Поле parentId.
isLeafbooleanПризнак листовой категории, в которой могут находиться товары
lastSyncDatestring · date-timeДата последней синхронизации категории с Озон
notChangedDaysinteger · int32Количество дней, в течение которых данные категории не менялась. Используется для того, чтобы сократить обновление категорий, которые не меняются
TmsTask25 полей
idinteger · int64Идентификатор задачи
read-onlystatusstringТекущий статус задачи
read-onlytypestringТип задачи
read-onlynamestringДанные задачи в json - могут быть пустыми
clientIdinteger · int64Поле clientId.
entityIdinteger · int64Сущность, к которой относится задача
progressinteger · int32Прогресс выполнения задачи в процентах
processedQuantityinteger · int32Количество обработанных записей задачи
organizationIdinteger · int64Организация задачи, может быть 0, если не зависит от организации
priorityinteger · int32Приоритет задачи - чем выше тем быстрее задача запустится
propertiesstringПараметры задачи
messagestringСообщение с результатом выполнения задачи
messageParamsstringПараметры сообщения с результатом выполнения задачи
createdDatestring · date-timeДата добавления задачи в очередь
startDatestring · date-timeДата запуска задачи
finishDatestring · date-timeДата завершения задачи
urlstringСсылка на скачивание файла с результатом задачи
inputFileUrlstringСсылка на загруженный файл
retryNumberinteger · int32Счётчик перезапуска задачи.
userIdinteger · int32Пользователь запустивший задачу
retryDatestring · date-timeЗапланированная дата перезапуска
debugbooleanЗапуск задачи в режиме отладки с большим логированием
forcedStartbooleanРучной запуск задачи
servicestringСервис в рамках которого выполняется задача
langstringЯзык на котором сейчас запущена таска
QualityDocumentRegistryCheck4 полей
statusstringПоле status.
startDatestring · dateПоле startDate.
expireDatestring · dateПоле expireDate.
datesAppliedbooleanПоле datesApplied.
FindResponseQualityDocument1 полей
rowsQualityDocument[]Строки с результатом поиска
Ошибки
Обработка ошибок
При ошибке API возвращает её код в поле error и сообщение на языке пользователя в localMessage. Проверяйте код error в программе, а localMessage показывайте пользователю.
errorКод ошибки для обработки в программе.
localMessageСообщение на языке пользователя, которому принадлежит токен.
paramsЗначения, которые сервер подставил в сообщение об ошибке.
Язык localMessage определяется полем lang пользователя, которому принадлежит API-токен. Язык страницы документации и заголовок Accept-Language его не переключают; если язык пользователя не указан, используется русский.
{
"error": "error_brand_already_exists",
"localMessage": "Brand Base already exists",
"params": {
"name": "Base"
}
}Методы
Методы
Загрузка изображения сертификата качества
/api/qualityDocument/uploadQualityDocumentImageПозволяет загрузить изображение и связать его с сертификатом
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
documentId |
integer · int64 | Да | Поле documentId. |
Тело запроса
multipart/form-data| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
file |
string · binary | Да | Поле file. |
curl --request POST 'https://api.selsup.ru/api/qualityDocument/uploadQualityDocumentImage?documentId=1001' \
--header 'Authorization: YOUR_API_TOKEN' \
--form 'file=@./file.bin'
const form = new FormData();
form.append('file', fileInput.files[0]);
const response = await fetch('https://api.selsup.ru/api/qualityDocument/uploadQualityDocumentImage?documentId=1001', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
body: form,
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const result = await response.json();
const form: FormData = new FormData();
form.append('file', fileInput.files![0]);
const response: Response = await fetch('https://api.selsup.ru/api/qualityDocument/uploadQualityDocumentImage?documentId=1001', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
body: form,
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
const result: unknown = await response.json();
import os
import requests
response = requests.post(
'https://api.selsup.ru/api/qualityDocument/uploadQualityDocumentImage?documentId=1001',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
files={'file': open('./logo.png', 'rb')},
)
response.raise_for_status()
result = response.json()
<?php
$payload = ['file' => new CURLFile('./logo.png')];
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/qualityDocument/uploadQualityDocumentImage?documentId=1001',
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"bytes"
"fmt"
"io"
"mime/multipart"
"net/http"
"os"
"path/filepath"
)
func main() {
var body bytes.Buffer
writer := multipart.NewWriter(&body)
file, err := os.Open("./logo.png")
if err != nil { panic(err) }
defer file.Close()
part, err := writer.CreateFormFile("file", filepath.Base(file.Name()))
if err != nil { panic(err) }
if _, err = io.Copy(part, file); err != nil { panic(err) }
writer.Close()
req, err := http.NewRequest("POST", "https://api.selsup.ru/api/qualityDocument/uploadQualityDocumentImage?documentId=1001", &body)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
req.Header.Set("Content-Type", writer.FormDataContentType())
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
public class SelSupExample {
public static void main(String[] args) throws Exception {
String boundary = "SelSupBoundary" + System.currentTimeMillis();
byte[] file = Files.readAllBytes(Path.of("./logo.png"));
byte[] head = ("--" + boundary + "\r\n" +
"Content-Disposition: form-data; name=\"file\"; filename=\"logo.png\"\r\n" +
"Content-Type: image/png\r\n\r\n").getBytes(StandardCharsets.UTF_8);
byte[] tail = ("\r\n--" + boundary + "--\r\n").getBytes(StandardCharsets.UTF_8);
byte[] payload = new byte[head.length + file.length + tail.length];
System.arraycopy(head, 0, payload, 0, head.length);
System.arraycopy(file, 0, payload, head.length, file.length);
System.arraycopy(tail, 0, payload, head.length + file.length, tail.length);
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/qualityDocument/uploadQualityDocumentImage?documentId=1001"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.method("POST", HttpRequest.BodyPublishers.ofByteArray(payload))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200
Поля объекта
QualityDocumentImage
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | Поле id. |
url |
string | Нет | Поле url. |
position |
integer · int32 | Нет | Поле position. |
documentId |
integer · int64 | Нет | Поле documentId. |
clientId |
integer · int64 | Нет | Поле clientId. |
{
"id": 1001,
"url": "https://example.com",
"position": 1,
"documentId": 1001,
"clientId": 1001
}Ошибки9
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
error_cant_extract_tariffsПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_cant_extract_tariffs; localMessage содержит приведённый выше перевод.
error_max_upload_size_exceededПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_max_upload_size_exceeded; localMessage содержит приведённый выше перевод.
error_no_clientПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_no_client; localMessage содержит приведённый выше перевод.
error_quality_document_not_foundПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_quality_document_not_found; localMessage содержит приведённый выше перевод.
error_storage_size_exceededПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_storage_size_exceeded; localMessage содержит приведённый выше перевод.
error_wrong_image_formatПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_wrong_image_format; localMessage содержит приведённый выше перевод.
Обновить сертификат качества
/api/qualityDocument/updateQualityDocumentОбновляет данные сертификата качества
Тело запроса
application/jsonПоля объектаQualityDocument
| Поле | Тип | Обязательно | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id |
integer · int64 | Нет | Поле id. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name |
string | Нет | Поле name. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type |
stringDECLARATION, CERTIFICATE, REFUSAL, REGISTRATION | Нет | Тип документа | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
number |
string | Нет | Номер сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
numberNormalized |
string | Нет | Нормализованный номер сертификата, используется для поиска дублей | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
clientId |
integer · int64 | Нет | Поле clientId. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
versionId |
integer · int64 | Нет | Поле versionId. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdUser |
string | Нет | Поле createdUser. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startDate |
string · date | Нет | Дата начала действия сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
expireDate |
string · date | Нет | Дата окончания срока действия сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
indefinite |
boolean | Нет | Поле indefinite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
data |
QualityDocumentData[] | Нет | Связи сертификата с брендом и категорией | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура элемента массива
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Поле | Тип | Обязательно | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id |
integer · int64 | Нет | Поле id. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
documentId |
integer · int64 | Нет | Сертификат | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
productModelId |
integer · int64 | Нет | Связь сертификата с продуктом | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
brand |
Brand | Нет | Связь сертификата с брендом | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Поля объекта
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
brandId |
integer · int32 | Нет | Идентификатор бренда |
name |
string | Да | Название бренда |
clientId |
integer · int64 | Нет | Идентификатор клиента |
logoUrl |
string | Нет | Ссылка логотипа бренда |
logoSize |
integer · int32 | Нет | Размер логотипа в байтах |
logoWidth |
integer · int32 | Нет | Ширина логотипа в пикселях |
logoHeight |
integer · int32 | Нет | Высота логотипа в пикселях |
deleted |
boolean | Нет | Бренд удален? |
ozonName |
string | Нет | Название бренда на Ozon |
ozonId |
integer · int64 | Нет | ID бренда на Ozon |
oneCId |
string | Нет | Идентификатор 1С |
brandIdcategory
Поля объекта
Category
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
categoryId |
integer · int32 | Нет | Идентификатор категории. Проставляется автоматически |
name |
string | Да | Наименование категории |
deleted |
boolean | Нет | Признак удаленных категорий |
parentId |
integer · int32 | Нет | Идентификатор родительской категории |
clientId |
integer · int64 | Нет | Идентификатор клиента |
marked |
boolean | Нет | Маркируется ли категория |
categoryClass |
stringSHOES, LIGHT, DRUGS, CAMERA, TYRES, MILK, WATER, TOBACCO, FURS, BEER, BICYCLES, PERFUMES, ELECTRONIC, OTHER, NONE, FOOD, WHEELCHAIRS, OTP, NCP, BIO, ANTISEPTIC, NABEER, SOFTDRINKS, PETFOOD, SEAFOOD, MEAT, TOYS, TITAN, RADIO, OPTIC_FIBER, VEGETABLE_OIL, CONSERVE, VETPHARMA, CHEMISTRY, AUTOFLUIDS, GROCERY, BOOKS, CONSTRUCTION, FIRE, HEATER, CABLERAW, POLYMER, SWEETS, CARPARTS, NATURAL_FUR, NICOTINDEV, GADGETS, FROZEN, FERTILIZERS, HOMEWARE, VETBIO, INDUSTRIAL, PYROTECHNICS | Нет | Тип категории для Честного знака. По умолчанию ставится OTHER |
wildberriesType |
WildberriesType | Нет | Предмет Вайлдбериз. Можно устанавливать либо объект,либо только идентификатор |
wildberriesCategoryId |
integer · int64 | Нет | Идентификатор категории Wildberries, совпадает с ID категории на самом Wildberries |
wildberriesFbmCommission |
number · double | Нет | Комиссия по тарифу FBM |
wildberriesFbwCommission |
number · double | Нет | Комиссия по тарифу FBW |
wildberriesFbsCommission |
number · double | Нет | Комиссия по тарифу FBS |
wildberriesDbsCommission |
number · double | Нет | Комиссия по тарифу DBS |
wildberriesEdbsCommission |
number · double | Нет | Комиссия по тарифу EDBS |
wildberriesCAndCCommission |
number · double | Нет | Комиссия по тарифу C&C |
wildberriesBookingCommission |
number · double | Нет | Комиссия за бронирование |
ozonDescriptionCategoryId |
integer · int64 | Нет | Идентификатор категории на Ozon. Строится из ID категории + ID типа на Ozon |
yandexMarketCategoryId |
integer · int64 | Нет | Идентификатор категории в Яндекс.Маркет. Совпадает с идентификатором категории на самом Яндекс.Маркет |
yandexMarketCategory |
YandexMarketCategory | Нет | Категория Яндекс.Маркета. Можно проставлять либо объект, либо только идентификатор |
ozonDescriptionCategory |
OzonDescriptionCategory | Нет | Категория Озон |
ozonCommission |
number · double | Нет | Комиссия озона. |
tnved |
Tnved | Нет | ТНВЭД. Можно проставлять либо объект, либо идентификатор ТНВЭД |
tnvedId |
integer · int64 | Нет | Идентификатор ТНВЭД |
laundry |
string | Нет | Правила ухода за вещами. Разделяются запятыми |
params |
string | Нет | JSON значений параметров для категории |
namePattern |
string | Нет | Шаблон названий категории |
aliexpressCategory |
AliexpressCategory | Нет | Категория Aliexpress |
aliexpressCategoryId |
integer · int64 | Нет | Идентификатор категории на самом Aliexpress |
avitoCategory |
AvitoCategory | Нет | Категория Avito |
lamodaCategory |
LamodaCategory | Нет | Категория Lamoda |
lamodaCategoryId |
integer · int64 | Нет | Идентификатор категории на Lamoda |
avitoCategoryId |
integer · int64 | Нет | Идентификатор категории на Avito |
packDepth |
integer · int32 | Нет | Глубина упаковки в мм. Проставляется всем товарам в категории |
packWidth |
integer · int32 | Нет | Ширина упаковки в мм. Проставляется всем товарам в категории |
packHeight |
integer · int32 | Нет | Высота упаковки в мм. Проставляется всем товарам в категории |
packWeight |
integer · int32 | Нет | Вес упаковки в граммах. Проставляется всем товарам в категории |
hasSize |
boolean | Нет | Признак разделения товаров в категории по размеру. Меняет вид редактора карточки |
hasColor |
boolean | Нет | Признак разделения товаров в категории по цвету. Меняет вид редактора карточки |
autoName |
boolean | Нет | Автоматически формировать названия товаров в категории |
removeFbsStock |
boolean | Нет | Не передавать остатки товаров по FBS для товаров из этой категории |
oneCId |
string | Нет | Идентификатор категории в 1С |
externalId |
string | Нет | Идентификатор категории на сайте |
moySkladId |
string | Нет | Идентификатор категории в сервисе МойСклад |
useClientParams |
boolean | Нет | Показывать пользовательские параметры в категории |
requiredExpirationDate |
boolean | Нет | Является ли срок годности обязательным параметром |
serviceCategoryMappings |
object | Нет | Универсальные привязки категории к категориям внешних сервисов |
productCount |
integer · int32 | Нет | Количество товаров в категории. Отдается только при withProductCount=true |
categoryIdclientIdimages
Структура элемента массива
QualityDocumentImage
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | Поле id. |
url |
string | Нет | Поле url. |
position |
integer · int32 | Нет | Поле position. |
documentId |
integer · int64 | Нет | Поле documentId. |
clientId |
integer · int64 | Нет | Поле clientId. |
curl --request POST 'https://api.selsup.ru/api/qualityDocument/updateQualityDocument' \
--header 'Authorization: YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}'
const response = await fetch('https://api.selsup.ru/api/qualityDocument/updateQualityDocument', {
method: 'POST',
headers: {
Authorization: process.env.SELSUP_API_TOKEN,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const result = await response.json();
const response: Response = await fetch('https://api.selsup.ru/api/qualityDocument/updateQualityDocument', {
method: 'POST',
headers: {
Authorization: process.env.SELSUP_API_TOKEN!,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}),
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
const result: unknown = await response.json();
import os
import requests
response = requests.post(
'https://api.selsup.ru/api/qualityDocument/updateQualityDocument',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
json={
'id': 1001,
'name': 'Example',
'type': 'DECLARATION',
'number': 'string',
'numberNormalized': 'string',
'clientId': 1001
},
)
response.raise_for_status()
result = response.json()
<?php
$payload = <<<'JSON'
{
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}
JSON;
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/qualityDocument/updateQualityDocument',
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN'), 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
req, err := http.NewRequest("POST", "https://api.selsup.ru/api/qualityDocument/updateQualityDocument", strings.NewReader(`{
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}`))
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
req.Header.Set("Content-Type", "application/json")
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/qualityDocument/updateQualityDocument"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}
"""))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200
Поля объекта
QualityDocument
| Поле | Тип | Обязательно | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id |
integer · int64 | Нет | Поле id. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name |
string | Нет | Поле name. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type |
stringDECLARATION, CERTIFICATE, REFUSAL, REGISTRATION | Нет | Тип документа | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
number |
string | Нет | Номер сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
numberNormalized |
string | Нет | Нормализованный номер сертификата, используется для поиска дублей | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
clientId |
integer · int64 | Нет | Поле clientId. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
versionId |
integer · int64 | Нет | Поле versionId. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdUser |
string | Нет | Поле createdUser. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startDate |
string · date | Нет | Дата начала действия сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
expireDate |
string · date | Нет | Дата окончания срока действия сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
indefinite |
boolean | Нет | Поле indefinite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
data |
QualityDocumentData[] | Нет | Связи сертификата с брендом и категорией | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура элемента массива
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Поле | Тип | Обязательно | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id |
integer · int64 | Нет | Поле id. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
documentId |
integer · int64 | Нет | Сертификат | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
productModelId |
integer · int64 | Нет | Связь сертификата с продуктом | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
brand |
Brand | Нет | Связь сертификата с брендом | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Поля объекта
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
brandId |
integer · int32 | Нет | Идентификатор бренда |
name |
string | Да | Название бренда |
clientId |
integer · int64 | Нет | Идентификатор клиента |
logoUrl |
string | Нет | Ссылка логотипа бренда |
logoSize |
integer · int32 | Нет | Размер логотипа в байтах |
logoWidth |
integer · int32 | Нет | Ширина логотипа в пикселях |
logoHeight |
integer · int32 | Нет | Высота логотипа в пикселях |
deleted |
boolean | Нет | Бренд удален? |
ozonName |
string | Нет | Название бренда на Ozon |
ozonId |
integer · int64 | Нет | ID бренда на Ozon |
oneCId |
string | Нет | Идентификатор 1С |
brandIdcategory
Поля объекта
Category
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
categoryId |
integer · int32 | Нет | Идентификатор категории. Проставляется автоматически |
name |
string | Да | Наименование категории |
deleted |
boolean | Нет | Признак удаленных категорий |
parentId |
integer · int32 | Нет | Идентификатор родительской категории |
clientId |
integer · int64 | Нет | Идентификатор клиента |
marked |
boolean | Нет | Маркируется ли категория |
categoryClass |
stringSHOES, LIGHT, DRUGS, CAMERA, TYRES, MILK, WATER, TOBACCO, FURS, BEER, BICYCLES, PERFUMES, ELECTRONIC, OTHER, NONE, FOOD, WHEELCHAIRS, OTP, NCP, BIO, ANTISEPTIC, NABEER, SOFTDRINKS, PETFOOD, SEAFOOD, MEAT, TOYS, TITAN, RADIO, OPTIC_FIBER, VEGETABLE_OIL, CONSERVE, VETPHARMA, CHEMISTRY, AUTOFLUIDS, GROCERY, BOOKS, CONSTRUCTION, FIRE, HEATER, CABLERAW, POLYMER, SWEETS, CARPARTS, NATURAL_FUR, NICOTINDEV, GADGETS, FROZEN, FERTILIZERS, HOMEWARE, VETBIO, INDUSTRIAL, PYROTECHNICS | Нет | Тип категории для Честного знака. По умолчанию ставится OTHER |
wildberriesType |
WildberriesType | Нет | Предмет Вайлдбериз. Можно устанавливать либо объект,либо только идентификатор |
wildberriesCategoryId |
integer · int64 | Нет | Идентификатор категории Wildberries, совпадает с ID категории на самом Wildberries |
wildberriesFbmCommission |
number · double | Нет | Комиссия по тарифу FBM |
wildberriesFbwCommission |
number · double | Нет | Комиссия по тарифу FBW |
wildberriesFbsCommission |
number · double | Нет | Комиссия по тарифу FBS |
wildberriesDbsCommission |
number · double | Нет | Комиссия по тарифу DBS |
wildberriesEdbsCommission |
number · double | Нет | Комиссия по тарифу EDBS |
wildberriesCAndCCommission |
number · double | Нет | Комиссия по тарифу C&C |
wildberriesBookingCommission |
number · double | Нет | Комиссия за бронирование |
ozonDescriptionCategoryId |
integer · int64 | Нет | Идентификатор категории на Ozon. Строится из ID категории + ID типа на Ozon |
yandexMarketCategoryId |
integer · int64 | Нет | Идентификатор категории в Яндекс.Маркет. Совпадает с идентификатором категории на самом Яндекс.Маркет |
yandexMarketCategory |
YandexMarketCategory | Нет | Категория Яндекс.Маркета. Можно проставлять либо объект, либо только идентификатор |
ozonDescriptionCategory |
OzonDescriptionCategory | Нет | Категория Озон |
ozonCommission |
number · double | Нет | Комиссия озона. |
tnved |
Tnved | Нет | ТНВЭД. Можно проставлять либо объект, либо идентификатор ТНВЭД |
tnvedId |
integer · int64 | Нет | Идентификатор ТНВЭД |
laundry |
string | Нет | Правила ухода за вещами. Разделяются запятыми |
params |
string | Нет | JSON значений параметров для категории |
namePattern |
string | Нет | Шаблон названий категории |
aliexpressCategory |
AliexpressCategory | Нет | Категория Aliexpress |
aliexpressCategoryId |
integer · int64 | Нет | Идентификатор категории на самом Aliexpress |
avitoCategory |
AvitoCategory | Нет | Категория Avito |
lamodaCategory |
LamodaCategory | Нет | Категория Lamoda |
lamodaCategoryId |
integer · int64 | Нет | Идентификатор категории на Lamoda |
avitoCategoryId |
integer · int64 | Нет | Идентификатор категории на Avito |
packDepth |
integer · int32 | Нет | Глубина упаковки в мм. Проставляется всем товарам в категории |
packWidth |
integer · int32 | Нет | Ширина упаковки в мм. Проставляется всем товарам в категории |
packHeight |
integer · int32 | Нет | Высота упаковки в мм. Проставляется всем товарам в категории |
packWeight |
integer · int32 | Нет | Вес упаковки в граммах. Проставляется всем товарам в категории |
hasSize |
boolean | Нет | Признак разделения товаров в категории по размеру. Меняет вид редактора карточки |
hasColor |
boolean | Нет | Признак разделения товаров в категории по цвету. Меняет вид редактора карточки |
autoName |
boolean | Нет | Автоматически формировать названия товаров в категории |
removeFbsStock |
boolean | Нет | Не передавать остатки товаров по FBS для товаров из этой категории |
oneCId |
string | Нет | Идентификатор категории в 1С |
externalId |
string | Нет | Идентификатор категории на сайте |
moySkladId |
string | Нет | Идентификатор категории в сервисе МойСклад |
useClientParams |
boolean | Нет | Показывать пользовательские параметры в категории |
requiredExpirationDate |
boolean | Нет | Является ли срок годности обязательным параметром |
serviceCategoryMappings |
object | Нет | Универсальные привязки категории к категориям внешних сервисов |
productCount |
integer · int32 | Нет | Количество товаров в категории. Отдается только при withProductCount=true |
categoryIdclientIdimages
Структура элемента массива
QualityDocumentImage
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | Поле id. |
url |
string | Нет | Поле url. |
position |
integer · int32 | Нет | Поле position. |
documentId |
integer · int64 | Нет | Поле documentId. |
clientId |
integer · int64 | Нет | Поле clientId. |
{
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}Ошибки7
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
error_cant_extract_tariffsПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_cant_extract_tariffs; localMessage содержит приведённый выше перевод.
error_document_already_existПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_document_already_exist; localMessage содержит приведённый выше перевод.
error_no_clientПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_no_client; localMessage содержит приведённый выше перевод.
error_quality_document_version_conflictПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_quality_document_version_conflict; localMessage содержит приведённый выше перевод.
Удалить сертификат качества
/api/qualityDocument/removeQualityDocumentУдаляет сертификат качества по идентификатору
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
documentId |
integer · int64 | Да | Поле documentId. |
curl --request POST 'https://api.selsup.ru/api/qualityDocument/removeQualityDocument?documentId=1001' \
--header 'Authorization: YOUR_API_TOKEN'
const response = await fetch('https://api.selsup.ru/api/qualityDocument/removeQualityDocument?documentId=1001', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const response: Response = await fetch('https://api.selsup.ru/api/qualityDocument/removeQualityDocument?documentId=1001', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
import os
import requests
response = requests.post(
'https://api.selsup.ru/api/qualityDocument/removeQualityDocument?documentId=1001',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
)
response.raise_for_status()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/qualityDocument/removeQualityDocument?documentId=1001',
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("POST", "https://api.selsup.ru/api/qualityDocument/removeQualityDocument?documentId=1001", nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/qualityDocument/removeQualityDocument?documentId=1001"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200Тело ответа пустое.
Ошибки5
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
error_cant_extract_tariffsПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_cant_extract_tariffs; localMessage содержит приведённый выше перевод.
error_no_clientПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_no_client; localMessage содержит приведённый выше перевод.
Массовый импорт сертификатов из Excel
/api/qualityDocument/importCertificatesСоздаёт задачу импорта сертификатов и связей с товарами из Excel-файла. Строки с одинаковым типом и номером документа объединяются в один сертификат
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
replaceConnects |
boolean | Нет | Поле replaceConnects. |
Тело запроса
multipart/form-data| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
file |
string · binary | Да | Excel-файл с сертификатами |
curl --request POST 'https://api.selsup.ru/api/qualityDocument/importCertificates' \
--header 'Authorization: YOUR_API_TOKEN' \
--form 'file=@./file.bin'
const form = new FormData();
form.append('file', fileInput.files[0]);
const response = await fetch('https://api.selsup.ru/api/qualityDocument/importCertificates', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
body: form,
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const result = await response.json();
const form: FormData = new FormData();
form.append('file', fileInput.files![0]);
const response: Response = await fetch('https://api.selsup.ru/api/qualityDocument/importCertificates', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
body: form,
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
const result: unknown = await response.json();
import os
import requests
response = requests.post(
'https://api.selsup.ru/api/qualityDocument/importCertificates',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
files={'file': open('./logo.png', 'rb')},
)
response.raise_for_status()
result = response.json()
<?php
$payload = ['file' => new CURLFile('./logo.png')];
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/qualityDocument/importCertificates',
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"bytes"
"fmt"
"io"
"mime/multipart"
"net/http"
"os"
"path/filepath"
)
func main() {
var body bytes.Buffer
writer := multipart.NewWriter(&body)
file, err := os.Open("./logo.png")
if err != nil { panic(err) }
defer file.Close()
part, err := writer.CreateFormFile("file", filepath.Base(file.Name()))
if err != nil { panic(err) }
if _, err = io.Copy(part, file); err != nil { panic(err) }
writer.Close()
req, err := http.NewRequest("POST", "https://api.selsup.ru/api/qualityDocument/importCertificates", &body)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
req.Header.Set("Content-Type", writer.FormDataContentType())
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
public class SelSupExample {
public static void main(String[] args) throws Exception {
String boundary = "SelSupBoundary" + System.currentTimeMillis();
byte[] file = Files.readAllBytes(Path.of("./logo.png"));
byte[] head = ("--" + boundary + "\r\n" +
"Content-Disposition: form-data; name=\"file\"; filename=\"logo.png\"\r\n" +
"Content-Type: image/png\r\n\r\n").getBytes(StandardCharsets.UTF_8);
byte[] tail = ("\r\n--" + boundary + "--\r\n").getBytes(StandardCharsets.UTF_8);
byte[] payload = new byte[head.length + file.length + tail.length];
System.arraycopy(head, 0, payload, 0, head.length);
System.arraycopy(file, 0, payload, head.length, file.length);
System.arraycopy(tail, 0, payload, head.length + file.length, tail.length);
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/qualityDocument/importCertificates"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.method("POST", HttpRequest.BodyPublishers.ofByteArray(payload))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200
Поля объекта
TmsTask
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | Идентификатор задачи |
status |
stringCREATED, RUNNING, FINISHED, ERROR, RESTARTING, INTERRUPTING, INTERRUPTED, STOPPED, EXCEPTION | Нет | Текущий статус задачи |
type |
stringWILDBERRIES_CREATE_CARD, NATIONAL_CATALOG_CREATE_CARD, OZON_CREATE_CARD, OZON_CARDS_IMPORT, IMPORT_FBS_ORDERS, UPLOAD_PHOTOGRAPHY, WILDBERRIES_UPDATE_PRICE, WILDBERRIES_CARD_IMPORT, WILDBERRIES_CARD_UPDATE, SELSUP_STOCKS, REFRESH_PHOTOGRAPHY, SUPPLYING_QUANTITY_TASK, EXPORT_PRICE, OZON_UPDATE_PRICE, WILDBERRIES_FILE_TASK, YANDEX_MARKET_CARD_CREATE, OZON_CARD_UPDATE_TASK, OZON_IMPORT_STAT_TASK, WILDBERRIES_PROFIT_STAT_TASK, ALIEXPRESS_CREATE_CARD_TASK, ALIEXPRESS_UPDATE_CARD_TASK, PRICES_IMPORT_TASK, WILDBERRIES_PRICES_TASK, YANDEX_MARKET_CARD_IMPORT, STOCKS_UPDATE, WILDBERRIES_STOCKS_IMPORT_TASK, WILDBERRIES_ORDERS_AND_SALES_TASK, WILDBERRIES_INCOMES_IMPORT_TASK, OZON_STOCKS_IMPORT_TASK, TURNOVER_DOCUMENTS_TASK, INTRODUCE_WMS_ITEMS_TASK, PRODUCTS_FILE_TASK, MODELS_FILE_TASK, UPDATE_PRODUCT_CODES_TASK, INTRODUCE_CODES_TASK, PRODUCTS_IMPORT_TASK, PRICES_FILE_TASK, YANDEX_MARKET_UPDATE_PRICE_TASK, IMPORT_STOCKS_TASK, MOY_SKLAD_EXPORT_ORDERS, MERGE_PRODUCTS_TASK, PRODUCTS_WILDBERRIES_EXCEL_IMPORT_TASK, MOY_SKLAD_CREATE_CARD, IMPORT_FBO_STOCKS_FROM_FILE, CREATE_WMS_ITEMS, MOY_SKLAD_CARDS_IMPORT, PROMOTION_FILE, UNUSED_1, UNUSED, PRODUCT_ANALYTICS_FILE_TASK, PROMOTION_RESET_FILE, MOY_SKLAD_IMPORT_ORDERS, FINANCE_REPORT_FILE_TASK, YML_FILE_EXPORT, PRODUCT_BALANCE_REPORT_FILE_TASK, CURRENT_PRODUCT_BALANCE_FILE_TASK, IMPORT_TRANSACTIONS, MATCH_UNREGISTERED_PROFIT_REPORT_TASK, UPDATE_AVERAGE_SERVICE_EXPENSES_TASK, YANDEX_MARKET_ORDER_IMPORT_STAT_TASK, ABC_REPORT_FILE_TASK, MODEL_CONTRACTORS_IMPORT, MODEL_CONTRACTORS_EXPORT, BANK_TRANSACTION_IMPORT_FILE_TASK, YML_IMPORT_TASK, SALES_DYNAMIC_REPORT_FILE_TASK, UPDATE_FBS_ORDERS, EXPORT_TRANSACTION_IN_EXCEL_FILE_TASK, IMPORT_TRANSACTION_FROM_EXCEL_FILE_TASK, EXPORT_PROFIT_REPORT_FILE_TASK, IMPORT_PROFIT_REPORT_FROM_EXCEL_FILE_TASK, IMPORT_REALIZATION_REPORT_TASK, STOCK_RECONCILIATION, ORDER_REPORT_FILE_TASK, GET_WB_FBO_ORDER_FROM_PROFIT_REPORT_TASK, TO_QUANTITY_STORAGE_METHOD, APPLY_RECONCILIATION, OZON_IMPORT_FBO_ORDERS_TASK, UPDATE_PURCHASE_PRICE_IN_PROFIT_REPORT_TASK, FBS_LABELS, MERGE_PRODUCT_STOCKS, CREATE_ORDER_FROM_FILE, ALIEXPRESS_CARD_IMPORT, PRICE_LIST_IMPORT, WB_STOCK_REPORT_FILE, CONTRACTORS_REPORT_FILE, PRODUCTS_SBER_MEGA_MARKET_EXCEL_IMPORT_TASK, EXPORT_PROBLEMATIC_PRODUCT_REPORT, PLAN_SUPPLY_REPORT_TASK, PLAN_FACT_SALES_REPORT_FILE, IMPORT_PLAN_SALES_FROM_EXCEL_FILE_TASK, EXPORT_PLAN_SALES_EXCEL_FILE_TASK, ORDERS_TO_BUY_FILE_TASK, MERGE_PRICE_ON_OTHER_MP_TASK, MATCH_PRODUCT_LAST_OPERATION_DATE_TASK, PROBLEMATIC_PRODUCT_PRICE_FILE_TASK, CATEGORIES_IMPORT_EXCEL_TASK, AVITO_CARD_IMPORT, UPDATE_OLD_WB_ORDER_STATUSES_TASK, PRESTA_SHOP_IMPORT_TASK, PRODUCTS_AVITO_EXCEL_IMPORT_TASK, FBO_STOCK_RECONCILIATION_TASK, APPLY_FBO_RECONCILIATION_TASK, EXPORT_REPRICE_PRODUCT_CONFIG_TASK, IMPORT_REPRICE_PRODUCT_CONFIG_TASK, OZON_CASH_FLOW_STATEMENT_IMPORT_TASK, IMPORT_PROMOTION_STRATEGY_FILE_TASK, UPDATE_ORDER_DELIVERY_INFO_TASK, BILLING_OPERATION_TASK, SET_PURCHASE_PERCENT_TASK, REMOVE_PRODUCT_IMAGES_TASK, STRUCTURE_TURNOVER_TASK, OZON_NEW_UPDATE_PRICE, REPLACE_PRODUCT_IMAGE_TASK, UPDATE_OZON_PROMOTION_DATA_TASK, WILDBERRIES_IMPORT_CAMPAIGN_TASK, WILDBERRIES_STORAGE_REPORT_TASK, WEBASYST_LINK_ARTICLE_TASK, DELIVERY_SERVICE_LABELS, HAND_ON_PULSE_FILE_TASK, ITEMS_INCOME_EXCEL_TASK, UPDATE_SETS_EXCEL_TASK, DELETE_PROFIT_REPORTS_BY_FILE_HISTORY_IDS_TASK, EXPORT_PRODUCT_SETS_TASK, AMAZON_CARD_IMPORT, IMPORT_ACCEPTED_PRODUCTS_TASK, ADD_ORDER_PRODUCT_FROM_FILE_TASK, EXPORT_ITEM_HISTORY_FILE_TASK, WILDBERRIES_IMPORT_CAMPAIGN_BY_EXCEL_TASK, REMOVE_CLIENT_ORGANIZATION, EBAY_CARD_IMPORT_TASK, PRODUCTS_IMPORT_FROM_ORGANIZATION_TASK, IMPORT_FBO_ORDERS, LAMODA_CARD_IMPORT, UPDATE_WB_PROMOTION_DATA_TASK, IMPORT_RETURNS_REPORT_TASK, UPDATE_PROMOTION_DATA_TASK, RESTORE_CLIENT_ORGANIZATION, LEROY_MERLIN_CARD_IMPORT, YANDEX_MARKET_STOCKS_IMPORT_TASK, WILDBERRIES_IMPORT_NM_REPORT_TASK, ORDER_ANALYTICS_FILE_TASK, CLIENT_DATABASE_MOVE_TASK, FAST_CARD_IMPORT, EXPORT_PRODUCT_CODE, INSALES_CARD_IMPORT_TASK, REMOVE_PRODUCT_VIDEOS_TASK, UPDATE_CARDS_TASK, FIND_UNPROFITABLE_PRODUCTS_TASK, FIND_UNPURCHASED_PRODUCTS_TASK, WALMART_CARD_IMPORT, PRODUCT_GROUPS_TASK, CONTRACTOR_ARTICLE_EXPORT_TASK, CONTRACTOR_ARTICLE_IMPORT_TASK, CURRENCY_CONVERSION_TASK, UPDATE_SUPPLY_PLAN_REPORT_TASK, EXPORT_SUPPLY_PLAN_REPORT_FILE_TASK, CHECK_STOCK_ORDER, PHOTOGRAPHY_EXCEL, PREPARE_FINDIR_DATA_TASK, CARD_SPLITTING_TASK, EXPORT_IMAGE_UPDATES_TEMPLATE_TASK, IMPORT_IMAGE_UPDATES_TASK, PREPARE_PRODUCT_HAND_ON_PULSE_TASK, UPDATE_OZON_AVERAGE_DELIVERY_TIME, UPDATE_COMMISSIONS_TASK, WOOCOMMERCE_CARD_IMPORT, UPDATE_FBS_STOCKS_HISTORY, RETURNS_FILE_TASK, FAST_PRODUCTS_IMPORT_TASK, ANALYZE_PRODUCT_CARDS_TASK, DETMIR_CARD_IMPORT, MATCH_OZON_REALIZATION_REPORT_TASK, MAGNIT_IMPORT_PRODUCTS_TASK, UPDATE_PURCHASE_PRICE_FROM_STOCKS_IN_PROFIT_REPORT_TASK, MOY_SKLAD_FBO_MP_DATES_FIX, PRICE_HISTORY_FILE_TASK, FBM_ORDERS_IMPORT_TASK, UZUM_IMPORT_PRODUCTS_TASK, OPENCART_CARD_IMPORT, CARDS_IMPORT, OZON_CROSSDOCK_TRANSIT_ROUTES_TASK, UNUSED_2, OZON_IMPORT_SALES_FUNNEL_REPORT_TASK, WRITE_OFF_PRODUCTS_FILE_TASK, CLIENT_DATABASE_CREATE_TASK, UPDATE_FBS_LABELS_TASK, REBUILD_PROFIT_REPORT_HOURLY_AGGREGATE_TASK, OZON_IMPORT_CAMPAIGN_TASK, EXPORT_SUPPLY_PLAN_FILE_TASK, IMPORT_SUPPLY_PLAN_FILE_TASK, CREATE_SERVICE_CARDS, WAREHOUSE_ECONOMICS_FILE_TASK, UPDATE_WILDBERRIES_ACQUIRING_RATE_TASK, PRODUCT_SALES_FORECAST_TASK, UPDATE_PRODUCT_CODES_STATUSES_TASK, MARKETPLACE_UPDATE_PRICE_TASK, UZUM_IMPORT_STAT_TASK, CAMPAIGN_STATS_FILE_TASK, OZON_FBO_WORKFLOW_TASK, EXPORT_CERTIFICATE_TEMPLATE_TASK, IMPORT_CERTIFICATES_TASK, REBUILD_LOCAL_ORDER_PROFIT_REPORT_TASK, SHOPIFY_CARD_IMPORT, EXPORT_PURCHASE_PLAN_FILE_TASK, RETAIL_ORDER_PRODUCTS_FILE_TASK, FULFILLMENT_BILLING_REGISTRY_FILE_TASK, SUPPLY_PLANNING_REPORT_FILE_TASK, REBUILD_TAX_BASE_HOURLY_AGGREGATE_TASK, PACK_ORDERS_TASK, IMPORT_ORDER_MARKING_CODES_TASK, PRODUCTION_ANALYTICS_FILE_TASK, CARD_REQUIREMENT_AI_TASK, CARD_REQUIREMENT_SCAN_TASK, SUPPLY_LABELS_FILE_TASK, TRANSFER_PRODUCTS_BETWEEN_SERVICES_TASK, RETIRE_SOLD_OUT_CARDS_TASK, WILDBERRIES_CARDS_JOIN_TASK | Нет | Тип задачи |
name |
string | Нет | Данные задачи в json - могут быть пустыми |
clientId |
integer · int64 | Нет | Поле clientId. |
entityId |
integer · int64 | Нет | Сущность, к которой относится задача |
progress |
integer · int32 | Нет | Прогресс выполнения задачи в процентах |
processedQuantity |
integer · int32 | Нет | Количество обработанных записей задачи |
organizationId |
integer · int64 | Нет | Организация задачи, может быть 0, если не зависит от организации |
priority |
integer · int32 | Нет | Приоритет задачи - чем выше тем быстрее задача запустится |
properties |
string | Нет | Параметры задачи |
message |
string | Нет | Сообщение с результатом выполнения задачи |
messageParams |
string | Нет | Параметры сообщения с результатом выполнения задачи |
createdDate |
string · date-time | Нет | Дата добавления задачи в очередь |
startDate |
string · date-time | Нет | Дата запуска задачи |
finishDate |
string · date-time | Нет | Дата завершения задачи |
url |
string | Нет | Ссылка на скачивание файла с результатом задачи |
inputFileUrl |
string | Нет | Ссылка на загруженный файл |
retryNumber |
integer · int32 | Нет | Счётчик перезапуска задачи. |
userId |
integer · int32 | Нет | Пользователь запустивший задачу |
retryDate |
string · date-time | Нет | Запланированная дата перезапуска |
debug |
boolean | Нет | Запуск задачи в режиме отладки с большим логированием |
forcedStart |
boolean | Нет | Ручной запуск задачи |
service |
stringNONE, WILDBERRIES, OZON, YANDEX_MARKET, FAMILIYA, NATIONAL_CATALOG, ALIEXPRESS, OTHER, MOY_SKLAD, SBER_MEGA_MARKET, CISLINK, ONE_C, AVITO, LEROY_MERLIN, DETMIR, KAZAN_EXPRESS, EVOTOR, WEBASYST, AMAZON, EBAY, SIMALAND, INSALES, LAMODA, OZON_PERFORMANCE, WALMART, GOOGLE, YANDEX_DISC, EMAIL, WOOCOMMERCE, MAGNIT, OPENCART, M_VIDEO, TAKEALOT, UZUM, SHOPIFY, MAKRO, YANDEX_KIT, BOB_SHOP, KASPI, DIADOC, TEKSHER, KONTUR_LOGISTICS, KONTUR_EDI, VSE_INSTRUMENTI, ELECTRONIC_SIGN | Нет | Сервис в рамках которого выполняется задача |
lang |
string | Нет | Язык на котором сейчас запущена таска |
{
"id": 1001,
"status": "CREATED",
"type": "WILDBERRIES_CREATE_CARD",
"name": "Example",
"clientId": 1001,
"entityId": 1001
}Ошибки4
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
error_max_upload_size_exceededПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_max_upload_size_exceeded; localMessage содержит приведённый выше перевод.
Шаблон файла импорта сертификатов
/api/qualityDocument/exportCertificateTemplateСоздаёт задачу формирования Excel-шаблона для массового импорта сертификатов
curl --request POST 'https://api.selsup.ru/api/qualityDocument/exportCertificateTemplate' \
--header 'Authorization: YOUR_API_TOKEN'
const response = await fetch('https://api.selsup.ru/api/qualityDocument/exportCertificateTemplate', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const result = await response.json();
const response: Response = await fetch('https://api.selsup.ru/api/qualityDocument/exportCertificateTemplate', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
const result: unknown = await response.json();
import os
import requests
response = requests.post(
'https://api.selsup.ru/api/qualityDocument/exportCertificateTemplate',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
)
response.raise_for_status()
result = response.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/qualityDocument/exportCertificateTemplate',
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("POST", "https://api.selsup.ru/api/qualityDocument/exportCertificateTemplate", nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/qualityDocument/exportCertificateTemplate"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200
Поля объекта
TmsTask
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | Идентификатор задачи |
status |
stringCREATED, RUNNING, FINISHED, ERROR, RESTARTING, INTERRUPTING, INTERRUPTED, STOPPED, EXCEPTION | Нет | Текущий статус задачи |
type |
stringWILDBERRIES_CREATE_CARD, NATIONAL_CATALOG_CREATE_CARD, OZON_CREATE_CARD, OZON_CARDS_IMPORT, IMPORT_FBS_ORDERS, UPLOAD_PHOTOGRAPHY, WILDBERRIES_UPDATE_PRICE, WILDBERRIES_CARD_IMPORT, WILDBERRIES_CARD_UPDATE, SELSUP_STOCKS, REFRESH_PHOTOGRAPHY, SUPPLYING_QUANTITY_TASK, EXPORT_PRICE, OZON_UPDATE_PRICE, WILDBERRIES_FILE_TASK, YANDEX_MARKET_CARD_CREATE, OZON_CARD_UPDATE_TASK, OZON_IMPORT_STAT_TASK, WILDBERRIES_PROFIT_STAT_TASK, ALIEXPRESS_CREATE_CARD_TASK, ALIEXPRESS_UPDATE_CARD_TASK, PRICES_IMPORT_TASK, WILDBERRIES_PRICES_TASK, YANDEX_MARKET_CARD_IMPORT, STOCKS_UPDATE, WILDBERRIES_STOCKS_IMPORT_TASK, WILDBERRIES_ORDERS_AND_SALES_TASK, WILDBERRIES_INCOMES_IMPORT_TASK, OZON_STOCKS_IMPORT_TASK, TURNOVER_DOCUMENTS_TASK, INTRODUCE_WMS_ITEMS_TASK, PRODUCTS_FILE_TASK, MODELS_FILE_TASK, UPDATE_PRODUCT_CODES_TASK, INTRODUCE_CODES_TASK, PRODUCTS_IMPORT_TASK, PRICES_FILE_TASK, YANDEX_MARKET_UPDATE_PRICE_TASK, IMPORT_STOCKS_TASK, MOY_SKLAD_EXPORT_ORDERS, MERGE_PRODUCTS_TASK, PRODUCTS_WILDBERRIES_EXCEL_IMPORT_TASK, MOY_SKLAD_CREATE_CARD, IMPORT_FBO_STOCKS_FROM_FILE, CREATE_WMS_ITEMS, MOY_SKLAD_CARDS_IMPORT, PROMOTION_FILE, UNUSED_1, UNUSED, PRODUCT_ANALYTICS_FILE_TASK, PROMOTION_RESET_FILE, MOY_SKLAD_IMPORT_ORDERS, FINANCE_REPORT_FILE_TASK, YML_FILE_EXPORT, PRODUCT_BALANCE_REPORT_FILE_TASK, CURRENT_PRODUCT_BALANCE_FILE_TASK, IMPORT_TRANSACTIONS, MATCH_UNREGISTERED_PROFIT_REPORT_TASK, UPDATE_AVERAGE_SERVICE_EXPENSES_TASK, YANDEX_MARKET_ORDER_IMPORT_STAT_TASK, ABC_REPORT_FILE_TASK, MODEL_CONTRACTORS_IMPORT, MODEL_CONTRACTORS_EXPORT, BANK_TRANSACTION_IMPORT_FILE_TASK, YML_IMPORT_TASK, SALES_DYNAMIC_REPORT_FILE_TASK, UPDATE_FBS_ORDERS, EXPORT_TRANSACTION_IN_EXCEL_FILE_TASK, IMPORT_TRANSACTION_FROM_EXCEL_FILE_TASK, EXPORT_PROFIT_REPORT_FILE_TASK, IMPORT_PROFIT_REPORT_FROM_EXCEL_FILE_TASK, IMPORT_REALIZATION_REPORT_TASK, STOCK_RECONCILIATION, ORDER_REPORT_FILE_TASK, GET_WB_FBO_ORDER_FROM_PROFIT_REPORT_TASK, TO_QUANTITY_STORAGE_METHOD, APPLY_RECONCILIATION, OZON_IMPORT_FBO_ORDERS_TASK, UPDATE_PURCHASE_PRICE_IN_PROFIT_REPORT_TASK, FBS_LABELS, MERGE_PRODUCT_STOCKS, CREATE_ORDER_FROM_FILE, ALIEXPRESS_CARD_IMPORT, PRICE_LIST_IMPORT, WB_STOCK_REPORT_FILE, CONTRACTORS_REPORT_FILE, PRODUCTS_SBER_MEGA_MARKET_EXCEL_IMPORT_TASK, EXPORT_PROBLEMATIC_PRODUCT_REPORT, PLAN_SUPPLY_REPORT_TASK, PLAN_FACT_SALES_REPORT_FILE, IMPORT_PLAN_SALES_FROM_EXCEL_FILE_TASK, EXPORT_PLAN_SALES_EXCEL_FILE_TASK, ORDERS_TO_BUY_FILE_TASK, MERGE_PRICE_ON_OTHER_MP_TASK, MATCH_PRODUCT_LAST_OPERATION_DATE_TASK, PROBLEMATIC_PRODUCT_PRICE_FILE_TASK, CATEGORIES_IMPORT_EXCEL_TASK, AVITO_CARD_IMPORT, UPDATE_OLD_WB_ORDER_STATUSES_TASK, PRESTA_SHOP_IMPORT_TASK, PRODUCTS_AVITO_EXCEL_IMPORT_TASK, FBO_STOCK_RECONCILIATION_TASK, APPLY_FBO_RECONCILIATION_TASK, EXPORT_REPRICE_PRODUCT_CONFIG_TASK, IMPORT_REPRICE_PRODUCT_CONFIG_TASK, OZON_CASH_FLOW_STATEMENT_IMPORT_TASK, IMPORT_PROMOTION_STRATEGY_FILE_TASK, UPDATE_ORDER_DELIVERY_INFO_TASK, BILLING_OPERATION_TASK, SET_PURCHASE_PERCENT_TASK, REMOVE_PRODUCT_IMAGES_TASK, STRUCTURE_TURNOVER_TASK, OZON_NEW_UPDATE_PRICE, REPLACE_PRODUCT_IMAGE_TASK, UPDATE_OZON_PROMOTION_DATA_TASK, WILDBERRIES_IMPORT_CAMPAIGN_TASK, WILDBERRIES_STORAGE_REPORT_TASK, WEBASYST_LINK_ARTICLE_TASK, DELIVERY_SERVICE_LABELS, HAND_ON_PULSE_FILE_TASK, ITEMS_INCOME_EXCEL_TASK, UPDATE_SETS_EXCEL_TASK, DELETE_PROFIT_REPORTS_BY_FILE_HISTORY_IDS_TASK, EXPORT_PRODUCT_SETS_TASK, AMAZON_CARD_IMPORT, IMPORT_ACCEPTED_PRODUCTS_TASK, ADD_ORDER_PRODUCT_FROM_FILE_TASK, EXPORT_ITEM_HISTORY_FILE_TASK, WILDBERRIES_IMPORT_CAMPAIGN_BY_EXCEL_TASK, REMOVE_CLIENT_ORGANIZATION, EBAY_CARD_IMPORT_TASK, PRODUCTS_IMPORT_FROM_ORGANIZATION_TASK, IMPORT_FBO_ORDERS, LAMODA_CARD_IMPORT, UPDATE_WB_PROMOTION_DATA_TASK, IMPORT_RETURNS_REPORT_TASK, UPDATE_PROMOTION_DATA_TASK, RESTORE_CLIENT_ORGANIZATION, LEROY_MERLIN_CARD_IMPORT, YANDEX_MARKET_STOCKS_IMPORT_TASK, WILDBERRIES_IMPORT_NM_REPORT_TASK, ORDER_ANALYTICS_FILE_TASK, CLIENT_DATABASE_MOVE_TASK, FAST_CARD_IMPORT, EXPORT_PRODUCT_CODE, INSALES_CARD_IMPORT_TASK, REMOVE_PRODUCT_VIDEOS_TASK, UPDATE_CARDS_TASK, FIND_UNPROFITABLE_PRODUCTS_TASK, FIND_UNPURCHASED_PRODUCTS_TASK, WALMART_CARD_IMPORT, PRODUCT_GROUPS_TASK, CONTRACTOR_ARTICLE_EXPORT_TASK, CONTRACTOR_ARTICLE_IMPORT_TASK, CURRENCY_CONVERSION_TASK, UPDATE_SUPPLY_PLAN_REPORT_TASK, EXPORT_SUPPLY_PLAN_REPORT_FILE_TASK, CHECK_STOCK_ORDER, PHOTOGRAPHY_EXCEL, PREPARE_FINDIR_DATA_TASK, CARD_SPLITTING_TASK, EXPORT_IMAGE_UPDATES_TEMPLATE_TASK, IMPORT_IMAGE_UPDATES_TASK, PREPARE_PRODUCT_HAND_ON_PULSE_TASK, UPDATE_OZON_AVERAGE_DELIVERY_TIME, UPDATE_COMMISSIONS_TASK, WOOCOMMERCE_CARD_IMPORT, UPDATE_FBS_STOCKS_HISTORY, RETURNS_FILE_TASK, FAST_PRODUCTS_IMPORT_TASK, ANALYZE_PRODUCT_CARDS_TASK, DETMIR_CARD_IMPORT, MATCH_OZON_REALIZATION_REPORT_TASK, MAGNIT_IMPORT_PRODUCTS_TASK, UPDATE_PURCHASE_PRICE_FROM_STOCKS_IN_PROFIT_REPORT_TASK, MOY_SKLAD_FBO_MP_DATES_FIX, PRICE_HISTORY_FILE_TASK, FBM_ORDERS_IMPORT_TASK, UZUM_IMPORT_PRODUCTS_TASK, OPENCART_CARD_IMPORT, CARDS_IMPORT, OZON_CROSSDOCK_TRANSIT_ROUTES_TASK, UNUSED_2, OZON_IMPORT_SALES_FUNNEL_REPORT_TASK, WRITE_OFF_PRODUCTS_FILE_TASK, CLIENT_DATABASE_CREATE_TASK, UPDATE_FBS_LABELS_TASK, REBUILD_PROFIT_REPORT_HOURLY_AGGREGATE_TASK, OZON_IMPORT_CAMPAIGN_TASK, EXPORT_SUPPLY_PLAN_FILE_TASK, IMPORT_SUPPLY_PLAN_FILE_TASK, CREATE_SERVICE_CARDS, WAREHOUSE_ECONOMICS_FILE_TASK, UPDATE_WILDBERRIES_ACQUIRING_RATE_TASK, PRODUCT_SALES_FORECAST_TASK, UPDATE_PRODUCT_CODES_STATUSES_TASK, MARKETPLACE_UPDATE_PRICE_TASK, UZUM_IMPORT_STAT_TASK, CAMPAIGN_STATS_FILE_TASK, OZON_FBO_WORKFLOW_TASK, EXPORT_CERTIFICATE_TEMPLATE_TASK, IMPORT_CERTIFICATES_TASK, REBUILD_LOCAL_ORDER_PROFIT_REPORT_TASK, SHOPIFY_CARD_IMPORT, EXPORT_PURCHASE_PLAN_FILE_TASK, RETAIL_ORDER_PRODUCTS_FILE_TASK, FULFILLMENT_BILLING_REGISTRY_FILE_TASK, SUPPLY_PLANNING_REPORT_FILE_TASK, REBUILD_TAX_BASE_HOURLY_AGGREGATE_TASK, PACK_ORDERS_TASK, IMPORT_ORDER_MARKING_CODES_TASK, PRODUCTION_ANALYTICS_FILE_TASK, CARD_REQUIREMENT_AI_TASK, CARD_REQUIREMENT_SCAN_TASK, SUPPLY_LABELS_FILE_TASK, TRANSFER_PRODUCTS_BETWEEN_SERVICES_TASK, RETIRE_SOLD_OUT_CARDS_TASK, WILDBERRIES_CARDS_JOIN_TASK | Нет | Тип задачи |
name |
string | Нет | Данные задачи в json - могут быть пустыми |
clientId |
integer · int64 | Нет | Поле clientId. |
entityId |
integer · int64 | Нет | Сущность, к которой относится задача |
progress |
integer · int32 | Нет | Прогресс выполнения задачи в процентах |
processedQuantity |
integer · int32 | Нет | Количество обработанных записей задачи |
organizationId |
integer · int64 | Нет | Организация задачи, может быть 0, если не зависит от организации |
priority |
integer · int32 | Нет | Приоритет задачи - чем выше тем быстрее задача запустится |
properties |
string | Нет | Параметры задачи |
message |
string | Нет | Сообщение с результатом выполнения задачи |
messageParams |
string | Нет | Параметры сообщения с результатом выполнения задачи |
createdDate |
string · date-time | Нет | Дата добавления задачи в очередь |
startDate |
string · date-time | Нет | Дата запуска задачи |
finishDate |
string · date-time | Нет | Дата завершения задачи |
url |
string | Нет | Ссылка на скачивание файла с результатом задачи |
inputFileUrl |
string | Нет | Ссылка на загруженный файл |
retryNumber |
integer · int32 | Нет | Счётчик перезапуска задачи. |
userId |
integer · int32 | Нет | Пользователь запустивший задачу |
retryDate |
string · date-time | Нет | Запланированная дата перезапуска |
debug |
boolean | Нет | Запуск задачи в режиме отладки с большим логированием |
forcedStart |
boolean | Нет | Ручной запуск задачи |
service |
stringNONE, WILDBERRIES, OZON, YANDEX_MARKET, FAMILIYA, NATIONAL_CATALOG, ALIEXPRESS, OTHER, MOY_SKLAD, SBER_MEGA_MARKET, CISLINK, ONE_C, AVITO, LEROY_MERLIN, DETMIR, KAZAN_EXPRESS, EVOTOR, WEBASYST, AMAZON, EBAY, SIMALAND, INSALES, LAMODA, OZON_PERFORMANCE, WALMART, GOOGLE, YANDEX_DISC, EMAIL, WOOCOMMERCE, MAGNIT, OPENCART, M_VIDEO, TAKEALOT, UZUM, SHOPIFY, MAKRO, YANDEX_KIT, BOB_SHOP, KASPI, DIADOC, TEKSHER, KONTUR_LOGISTICS, KONTUR_EDI, VSE_INSTRUMENTI, ELECTRONIC_SIGN | Нет | Сервис в рамках которого выполняется задача |
lang |
string | Нет | Язык на котором сейчас запущена таска |
{
"id": 1001,
"status": "CREATED",
"type": "WILDBERRIES_CREATE_CARD",
"name": "Example",
"clientId": 1001,
"entityId": 1001
}Ошибки3
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
Удалить изображение сертификата
/api/qualityDocument/deleteQualityDocumentImageУдаляет изображение сертификата качества
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
imageId |
integer · int64 | Да | Поле imageId. |
curl --request POST 'https://api.selsup.ru/api/qualityDocument/deleteQualityDocumentImage?imageId=1001' \
--header 'Authorization: YOUR_API_TOKEN'
const response = await fetch('https://api.selsup.ru/api/qualityDocument/deleteQualityDocumentImage?imageId=1001', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const response: Response = await fetch('https://api.selsup.ru/api/qualityDocument/deleteQualityDocumentImage?imageId=1001', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
import os
import requests
response = requests.post(
'https://api.selsup.ru/api/qualityDocument/deleteQualityDocumentImage?imageId=1001',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
)
response.raise_for_status()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/qualityDocument/deleteQualityDocumentImage?imageId=1001',
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("POST", "https://api.selsup.ru/api/qualityDocument/deleteQualityDocumentImage?imageId=1001", nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/qualityDocument/deleteQualityDocumentImage?imageId=1001"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200Тело ответа пустое.
Ошибки5
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
error_cant_extract_tariffsПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_cant_extract_tariffs; localMessage содержит приведённый выше перевод.
error_no_clientПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_no_client; localMessage содержит приведённый выше перевод.
Добавить сертификат качества
/api/qualityDocument/createQualityDocumentСоздает новый сертификат качества
Тело запроса
application/jsonПоля объектаQualityDocument
| Поле | Тип | Обязательно | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id |
integer · int64 | Нет | Поле id. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name |
string | Нет | Поле name. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type |
stringDECLARATION, CERTIFICATE, REFUSAL, REGISTRATION | Нет | Тип документа | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
number |
string | Нет | Номер сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
numberNormalized |
string | Нет | Нормализованный номер сертификата, используется для поиска дублей | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
clientId |
integer · int64 | Нет | Поле clientId. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
versionId |
integer · int64 | Нет | Поле versionId. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdUser |
string | Нет | Поле createdUser. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startDate |
string · date | Нет | Дата начала действия сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
expireDate |
string · date | Нет | Дата окончания срока действия сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
indefinite |
boolean | Нет | Поле indefinite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
data |
QualityDocumentData[] | Нет | Связи сертификата с брендом и категорией | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура элемента массива
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Поле | Тип | Обязательно | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id |
integer · int64 | Нет | Поле id. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
documentId |
integer · int64 | Нет | Сертификат | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
productModelId |
integer · int64 | Нет | Связь сертификата с продуктом | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
brand |
Brand | Нет | Связь сертификата с брендом | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Поля объекта
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
brandId |
integer · int32 | Нет | Идентификатор бренда |
name |
string | Да | Название бренда |
clientId |
integer · int64 | Нет | Идентификатор клиента |
logoUrl |
string | Нет | Ссылка логотипа бренда |
logoSize |
integer · int32 | Нет | Размер логотипа в байтах |
logoWidth |
integer · int32 | Нет | Ширина логотипа в пикселях |
logoHeight |
integer · int32 | Нет | Высота логотипа в пикселях |
deleted |
boolean | Нет | Бренд удален? |
ozonName |
string | Нет | Название бренда на Ozon |
ozonId |
integer · int64 | Нет | ID бренда на Ozon |
oneCId |
string | Нет | Идентификатор 1С |
brandIdcategory
Поля объекта
Category
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
categoryId |
integer · int32 | Нет | Идентификатор категории. Проставляется автоматически |
name |
string | Да | Наименование категории |
deleted |
boolean | Нет | Признак удаленных категорий |
parentId |
integer · int32 | Нет | Идентификатор родительской категории |
clientId |
integer · int64 | Нет | Идентификатор клиента |
marked |
boolean | Нет | Маркируется ли категория |
categoryClass |
stringSHOES, LIGHT, DRUGS, CAMERA, TYRES, MILK, WATER, TOBACCO, FURS, BEER, BICYCLES, PERFUMES, ELECTRONIC, OTHER, NONE, FOOD, WHEELCHAIRS, OTP, NCP, BIO, ANTISEPTIC, NABEER, SOFTDRINKS, PETFOOD, SEAFOOD, MEAT, TOYS, TITAN, RADIO, OPTIC_FIBER, VEGETABLE_OIL, CONSERVE, VETPHARMA, CHEMISTRY, AUTOFLUIDS, GROCERY, BOOKS, CONSTRUCTION, FIRE, HEATER, CABLERAW, POLYMER, SWEETS, CARPARTS, NATURAL_FUR, NICOTINDEV, GADGETS, FROZEN, FERTILIZERS, HOMEWARE, VETBIO, INDUSTRIAL, PYROTECHNICS | Нет | Тип категории для Честного знака. По умолчанию ставится OTHER |
wildberriesType |
WildberriesType | Нет | Предмет Вайлдбериз. Можно устанавливать либо объект,либо только идентификатор |
wildberriesCategoryId |
integer · int64 | Нет | Идентификатор категории Wildberries, совпадает с ID категории на самом Wildberries |
wildberriesFbmCommission |
number · double | Нет | Комиссия по тарифу FBM |
wildberriesFbwCommission |
number · double | Нет | Комиссия по тарифу FBW |
wildberriesFbsCommission |
number · double | Нет | Комиссия по тарифу FBS |
wildberriesDbsCommission |
number · double | Нет | Комиссия по тарифу DBS |
wildberriesEdbsCommission |
number · double | Нет | Комиссия по тарифу EDBS |
wildberriesCAndCCommission |
number · double | Нет | Комиссия по тарифу C&C |
wildberriesBookingCommission |
number · double | Нет | Комиссия за бронирование |
ozonDescriptionCategoryId |
integer · int64 | Нет | Идентификатор категории на Ozon. Строится из ID категории + ID типа на Ozon |
yandexMarketCategoryId |
integer · int64 | Нет | Идентификатор категории в Яндекс.Маркет. Совпадает с идентификатором категории на самом Яндекс.Маркет |
yandexMarketCategory |
YandexMarketCategory | Нет | Категория Яндекс.Маркета. Можно проставлять либо объект, либо только идентификатор |
ozonDescriptionCategory |
OzonDescriptionCategory | Нет | Категория Озон |
ozonCommission |
number · double | Нет | Комиссия озона. |
tnved |
Tnved | Нет | ТНВЭД. Можно проставлять либо объект, либо идентификатор ТНВЭД |
tnvedId |
integer · int64 | Нет | Идентификатор ТНВЭД |
laundry |
string | Нет | Правила ухода за вещами. Разделяются запятыми |
params |
string | Нет | JSON значений параметров для категории |
namePattern |
string | Нет | Шаблон названий категории |
aliexpressCategory |
AliexpressCategory | Нет | Категория Aliexpress |
aliexpressCategoryId |
integer · int64 | Нет | Идентификатор категории на самом Aliexpress |
avitoCategory |
AvitoCategory | Нет | Категория Avito |
lamodaCategory |
LamodaCategory | Нет | Категория Lamoda |
lamodaCategoryId |
integer · int64 | Нет | Идентификатор категории на Lamoda |
avitoCategoryId |
integer · int64 | Нет | Идентификатор категории на Avito |
packDepth |
integer · int32 | Нет | Глубина упаковки в мм. Проставляется всем товарам в категории |
packWidth |
integer · int32 | Нет | Ширина упаковки в мм. Проставляется всем товарам в категории |
packHeight |
integer · int32 | Нет | Высота упаковки в мм. Проставляется всем товарам в категории |
packWeight |
integer · int32 | Нет | Вес упаковки в граммах. Проставляется всем товарам в категории |
hasSize |
boolean | Нет | Признак разделения товаров в категории по размеру. Меняет вид редактора карточки |
hasColor |
boolean | Нет | Признак разделения товаров в категории по цвету. Меняет вид редактора карточки |
autoName |
boolean | Нет | Автоматически формировать названия товаров в категории |
removeFbsStock |
boolean | Нет | Не передавать остатки товаров по FBS для товаров из этой категории |
oneCId |
string | Нет | Идентификатор категории в 1С |
externalId |
string | Нет | Идентификатор категории на сайте |
moySkladId |
string | Нет | Идентификатор категории в сервисе МойСклад |
useClientParams |
boolean | Нет | Показывать пользовательские параметры в категории |
requiredExpirationDate |
boolean | Нет | Является ли срок годности обязательным параметром |
serviceCategoryMappings |
object | Нет | Универсальные привязки категории к категориям внешних сервисов |
productCount |
integer · int32 | Нет | Количество товаров в категории. Отдается только при withProductCount=true |
categoryIdclientIdimages
Структура элемента массива
QualityDocumentImage
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | Поле id. |
url |
string | Нет | Поле url. |
position |
integer · int32 | Нет | Поле position. |
documentId |
integer · int64 | Нет | Поле documentId. |
clientId |
integer · int64 | Нет | Поле clientId. |
curl --request POST 'https://api.selsup.ru/api/qualityDocument/createQualityDocument' \
--header 'Authorization: YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}'
const response = await fetch('https://api.selsup.ru/api/qualityDocument/createQualityDocument', {
method: 'POST',
headers: {
Authorization: process.env.SELSUP_API_TOKEN,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const result = await response.json();
const response: Response = await fetch('https://api.selsup.ru/api/qualityDocument/createQualityDocument', {
method: 'POST',
headers: {
Authorization: process.env.SELSUP_API_TOKEN!,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}),
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
const result: unknown = await response.json();
import os
import requests
response = requests.post(
'https://api.selsup.ru/api/qualityDocument/createQualityDocument',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
json={
'id': 1001,
'name': 'Example',
'type': 'DECLARATION',
'number': 'string',
'numberNormalized': 'string',
'clientId': 1001
},
)
response.raise_for_status()
result = response.json()
<?php
$payload = <<<'JSON'
{
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}
JSON;
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/qualityDocument/createQualityDocument',
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN'), 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
req, err := http.NewRequest("POST", "https://api.selsup.ru/api/qualityDocument/createQualityDocument", strings.NewReader(`{
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}`))
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
req.Header.Set("Content-Type", "application/json")
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/qualityDocument/createQualityDocument"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}
"""))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200
Поля объекта
QualityDocument
| Поле | Тип | Обязательно | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id |
integer · int64 | Нет | Поле id. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name |
string | Нет | Поле name. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type |
stringDECLARATION, CERTIFICATE, REFUSAL, REGISTRATION | Нет | Тип документа | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
number |
string | Нет | Номер сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
numberNormalized |
string | Нет | Нормализованный номер сертификата, используется для поиска дублей | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
clientId |
integer · int64 | Нет | Поле clientId. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
versionId |
integer · int64 | Нет | Поле versionId. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdUser |
string | Нет | Поле createdUser. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startDate |
string · date | Нет | Дата начала действия сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
expireDate |
string · date | Нет | Дата окончания срока действия сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
indefinite |
boolean | Нет | Поле indefinite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
data |
QualityDocumentData[] | Нет | Связи сертификата с брендом и категорией | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура элемента массива
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Поле | Тип | Обязательно | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id |
integer · int64 | Нет | Поле id. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
documentId |
integer · int64 | Нет | Сертификат | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
productModelId |
integer · int64 | Нет | Связь сертификата с продуктом | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
brand |
Brand | Нет | Связь сертификата с брендом | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Поля объекта
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
brandId |
integer · int32 | Нет | Идентификатор бренда |
name |
string | Да | Название бренда |
clientId |
integer · int64 | Нет | Идентификатор клиента |
logoUrl |
string | Нет | Ссылка логотипа бренда |
logoSize |
integer · int32 | Нет | Размер логотипа в байтах |
logoWidth |
integer · int32 | Нет | Ширина логотипа в пикселях |
logoHeight |
integer · int32 | Нет | Высота логотипа в пикселях |
deleted |
boolean | Нет | Бренд удален? |
ozonName |
string | Нет | Название бренда на Ozon |
ozonId |
integer · int64 | Нет | ID бренда на Ozon |
oneCId |
string | Нет | Идентификатор 1С |
brandIdcategory
Поля объекта
Category
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
categoryId |
integer · int32 | Нет | Идентификатор категории. Проставляется автоматически |
name |
string | Да | Наименование категории |
deleted |
boolean | Нет | Признак удаленных категорий |
parentId |
integer · int32 | Нет | Идентификатор родительской категории |
clientId |
integer · int64 | Нет | Идентификатор клиента |
marked |
boolean | Нет | Маркируется ли категория |
categoryClass |
stringSHOES, LIGHT, DRUGS, CAMERA, TYRES, MILK, WATER, TOBACCO, FURS, BEER, BICYCLES, PERFUMES, ELECTRONIC, OTHER, NONE, FOOD, WHEELCHAIRS, OTP, NCP, BIO, ANTISEPTIC, NABEER, SOFTDRINKS, PETFOOD, SEAFOOD, MEAT, TOYS, TITAN, RADIO, OPTIC_FIBER, VEGETABLE_OIL, CONSERVE, VETPHARMA, CHEMISTRY, AUTOFLUIDS, GROCERY, BOOKS, CONSTRUCTION, FIRE, HEATER, CABLERAW, POLYMER, SWEETS, CARPARTS, NATURAL_FUR, NICOTINDEV, GADGETS, FROZEN, FERTILIZERS, HOMEWARE, VETBIO, INDUSTRIAL, PYROTECHNICS | Нет | Тип категории для Честного знака. По умолчанию ставится OTHER |
wildberriesType |
WildberriesType | Нет | Предмет Вайлдбериз. Можно устанавливать либо объект,либо только идентификатор |
wildberriesCategoryId |
integer · int64 | Нет | Идентификатор категории Wildberries, совпадает с ID категории на самом Wildberries |
wildberriesFbmCommission |
number · double | Нет | Комиссия по тарифу FBM |
wildberriesFbwCommission |
number · double | Нет | Комиссия по тарифу FBW |
wildberriesFbsCommission |
number · double | Нет | Комиссия по тарифу FBS |
wildberriesDbsCommission |
number · double | Нет | Комиссия по тарифу DBS |
wildberriesEdbsCommission |
number · double | Нет | Комиссия по тарифу EDBS |
wildberriesCAndCCommission |
number · double | Нет | Комиссия по тарифу C&C |
wildberriesBookingCommission |
number · double | Нет | Комиссия за бронирование |
ozonDescriptionCategoryId |
integer · int64 | Нет | Идентификатор категории на Ozon. Строится из ID категории + ID типа на Ozon |
yandexMarketCategoryId |
integer · int64 | Нет | Идентификатор категории в Яндекс.Маркет. Совпадает с идентификатором категории на самом Яндекс.Маркет |
yandexMarketCategory |
YandexMarketCategory | Нет | Категория Яндекс.Маркета. Можно проставлять либо объект, либо только идентификатор |
ozonDescriptionCategory |
OzonDescriptionCategory | Нет | Категория Озон |
ozonCommission |
number · double | Нет | Комиссия озона. |
tnved |
Tnved | Нет | ТНВЭД. Можно проставлять либо объект, либо идентификатор ТНВЭД |
tnvedId |
integer · int64 | Нет | Идентификатор ТНВЭД |
laundry |
string | Нет | Правила ухода за вещами. Разделяются запятыми |
params |
string | Нет | JSON значений параметров для категории |
namePattern |
string | Нет | Шаблон названий категории |
aliexpressCategory |
AliexpressCategory | Нет | Категория Aliexpress |
aliexpressCategoryId |
integer · int64 | Нет | Идентификатор категории на самом Aliexpress |
avitoCategory |
AvitoCategory | Нет | Категория Avito |
lamodaCategory |
LamodaCategory | Нет | Категория Lamoda |
lamodaCategoryId |
integer · int64 | Нет | Идентификатор категории на Lamoda |
avitoCategoryId |
integer · int64 | Нет | Идентификатор категории на Avito |
packDepth |
integer · int32 | Нет | Глубина упаковки в мм. Проставляется всем товарам в категории |
packWidth |
integer · int32 | Нет | Ширина упаковки в мм. Проставляется всем товарам в категории |
packHeight |
integer · int32 | Нет | Высота упаковки в мм. Проставляется всем товарам в категории |
packWeight |
integer · int32 | Нет | Вес упаковки в граммах. Проставляется всем товарам в категории |
hasSize |
boolean | Нет | Признак разделения товаров в категории по размеру. Меняет вид редактора карточки |
hasColor |
boolean | Нет | Признак разделения товаров в категории по цвету. Меняет вид редактора карточки |
autoName |
boolean | Нет | Автоматически формировать названия товаров в категории |
removeFbsStock |
boolean | Нет | Не передавать остатки товаров по FBS для товаров из этой категории |
oneCId |
string | Нет | Идентификатор категории в 1С |
externalId |
string | Нет | Идентификатор категории на сайте |
moySkladId |
string | Нет | Идентификатор категории в сервисе МойСклад |
useClientParams |
boolean | Нет | Показывать пользовательские параметры в категории |
requiredExpirationDate |
boolean | Нет | Является ли срок годности обязательным параметром |
serviceCategoryMappings |
object | Нет | Универсальные привязки категории к категориям внешних сервисов |
productCount |
integer · int32 | Нет | Количество товаров в категории. Отдается только при withProductCount=true |
categoryIdclientIdimages
Структура элемента массива
QualityDocumentImage
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | Поле id. |
url |
string | Нет | Поле url. |
position |
integer · int32 | Нет | Поле position. |
documentId |
integer · int64 | Нет | Поле documentId. |
clientId |
integer · int64 | Нет | Поле clientId. |
{
"id": 1001,
"name": "Example",
"type": "DECLARATION",
"number": "string",
"numberNormalized": "string",
"clientId": 1001
}Ошибки7
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
error_cant_extract_tariffsПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_cant_extract_tariffs; localMessage содержит приведённый выше перевод.
error_create_quality_documentПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_create_quality_document; localMessage содержит приведённый выше перевод.
error_document_already_existПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_document_already_exist; localMessage содержит приведённый выше перевод.
error_no_clientПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_no_client; localMessage содержит приведённый выше перевод.
Проверить сертификат в государственном реестре
/api/qualityDocument/check-registryПроверяет сертификат или декларацию в реестре Росаккредитации и при необходимости обновляет даты действия документа
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
documentId |
integer · int64 | Да | Поле documentId. |
applyDates |
boolean | Нет | Поле applyDates. |
curl --request POST 'https://api.selsup.ru/api/qualityDocument/check-registry?documentId=1001' \
--header 'Authorization: YOUR_API_TOKEN'
const response = await fetch('https://api.selsup.ru/api/qualityDocument/check-registry?documentId=1001', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const result = await response.json();
const response: Response = await fetch('https://api.selsup.ru/api/qualityDocument/check-registry?documentId=1001', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
const result: unknown = await response.json();
import os
import requests
response = requests.post(
'https://api.selsup.ru/api/qualityDocument/check-registry?documentId=1001',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
)
response.raise_for_status()
result = response.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/qualityDocument/check-registry?documentId=1001',
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("POST", "https://api.selsup.ru/api/qualityDocument/check-registry?documentId=1001", nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/qualityDocument/check-registry?documentId=1001"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200
Поля объекта
QualityDocumentRegistryCheck
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
status |
stringVERIFIED, EXPIRED, INACTIVE, NOT_FOUND | Нет | Поле status. |
startDate |
string · date | Нет | Поле startDate. |
expireDate |
string · date | Нет | Поле expireDate. |
datesApplied |
boolean | Нет | Поле datesApplied. |
{
"status": "VERIFIED",
"startDate": "2026-01-15",
"expireDate": "2026-01-15",
"datesApplied": false
}Ошибки3
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
Список сертификатов продукта
/api/qualityDocument/getQualityDocumentByModelПозволяет получить сертификаты качества продукта
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
modelId |
integer · int64 | Да | Поле modelId. |
curl --request GET 'https://api.selsup.ru/api/qualityDocument/getQualityDocumentByModel?modelId=1001' \
--header 'Authorization: YOUR_API_TOKEN'
const response = await fetch('https://api.selsup.ru/api/qualityDocument/getQualityDocumentByModel?modelId=1001', {
method: 'GET',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const result = await response.json();
const response: Response = await fetch('https://api.selsup.ru/api/qualityDocument/getQualityDocumentByModel?modelId=1001', {
method: 'GET',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
const result: unknown = await response.json();
import os
import requests
response = requests.get(
'https://api.selsup.ru/api/qualityDocument/getQualityDocumentByModel?modelId=1001',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
)
response.raise_for_status()
result = response.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/qualityDocument/getQualityDocumentByModel?modelId=1001',
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.selsup.ru/api/qualityDocument/getQualityDocumentByModel?modelId=1001", nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/qualityDocument/getQualityDocumentByModel?modelId=1001"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200
Структура элемента массива
QualityDocument[]
| Поле | Тип | Обязательно | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id |
integer · int64 | Нет | Поле id. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name |
string | Нет | Поле name. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type |
stringDECLARATION, CERTIFICATE, REFUSAL, REGISTRATION | Нет | Тип документа | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
number |
string | Нет | Номер сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
numberNormalized |
string | Нет | Нормализованный номер сертификата, используется для поиска дублей | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
clientId |
integer · int64 | Нет | Поле clientId. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
versionId |
integer · int64 | Нет | Поле versionId. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdUser |
string | Нет | Поле createdUser. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startDate |
string · date | Нет | Дата начала действия сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
expireDate |
string · date | Нет | Дата окончания срока действия сертификата | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
indefinite |
boolean | Нет | Поле indefinite. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
data |
QualityDocumentData[] | Нет | Связи сертификата с брендом и категорией | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура элемента массива
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Поле | Тип | Обязательно | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id |
integer · int64 | Нет | Поле id. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
documentId |
integer · int64 | Нет | Сертификат | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
productModelId |
integer · int64 | Нет | Связь сертификата с продуктом | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
brand |
Brand | Нет | Связь сертификата с брендом | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Поля объекта
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
brandId |
integer · int32 | Нет | Идентификатор бренда |
name |
string | Да | Название бренда |
clientId |
integer · int64 | Нет | Идентификатор клиента |
logoUrl |
string | Нет | Ссылка логотипа бренда |
logoSize |
integer · int32 | Нет | Размер логотипа в байтах |
logoWidth |
integer · int32 | Нет | Ширина логотипа в пикселях |
logoHeight |
integer · int32 | Нет | Высота логотипа в пикселях |
deleted |
boolean | Нет | Бренд удален? |
ozonName |
string | Нет | Название бренда на Ozon |
ozonId |
integer · int64 | Нет | ID бренда на Ozon |
oneCId |
string | Нет | Идентификатор 1С |
brandIdcategory
Поля объекта
Category
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
categoryId |
integer · int32 | Нет | Идентификатор категории. Проставляется автоматически |
name |
string | Да | Наименование категории |
deleted |
boolean | Нет | Признак удаленных категорий |
parentId |
integer · int32 | Нет | Идентификатор родительской категории |
clientId |
integer · int64 | Нет | Идентификатор клиента |
marked |
boolean | Нет | Маркируется ли категория |
categoryClass |
stringSHOES, LIGHT, DRUGS, CAMERA, TYRES, MILK, WATER, TOBACCO, FURS, BEER, BICYCLES, PERFUMES, ELECTRONIC, OTHER, NONE, FOOD, WHEELCHAIRS, OTP, NCP, BIO, ANTISEPTIC, NABEER, SOFTDRINKS, PETFOOD, SEAFOOD, MEAT, TOYS, TITAN, RADIO, OPTIC_FIBER, VEGETABLE_OIL, CONSERVE, VETPHARMA, CHEMISTRY, AUTOFLUIDS, GROCERY, BOOKS, CONSTRUCTION, FIRE, HEATER, CABLERAW, POLYMER, SWEETS, CARPARTS, NATURAL_FUR, NICOTINDEV, GADGETS, FROZEN, FERTILIZERS, HOMEWARE, VETBIO, INDUSTRIAL, PYROTECHNICS | Нет | Тип категории для Честного знака. По умолчанию ставится OTHER |
wildberriesType |
WildberriesType | Нет | Предмет Вайлдбериз. Можно устанавливать либо объект,либо только идентификатор |
wildberriesCategoryId |
integer · int64 | Нет | Идентификатор категории Wildberries, совпадает с ID категории на самом Wildberries |
wildberriesFbmCommission |
number · double | Нет | Комиссия по тарифу FBM |
wildberriesFbwCommission |
number · double | Нет | Комиссия по тарифу FBW |
wildberriesFbsCommission |
number · double | Нет | Комиссия по тарифу FBS |
wildberriesDbsCommission |
number · double | Нет | Комиссия по тарифу DBS |
wildberriesEdbsCommission |
number · double | Нет | Комиссия по тарифу EDBS |
wildberriesCAndCCommission |
number · double | Нет | Комиссия по тарифу C&C |
wildberriesBookingCommission |
number · double | Нет | Комиссия за бронирование |
ozonDescriptionCategoryId |
integer · int64 | Нет | Идентификатор категории на Ozon. Строится из ID категории + ID типа на Ozon |
yandexMarketCategoryId |
integer · int64 | Нет | Идентификатор категории в Яндекс.Маркет. Совпадает с идентификатором категории на самом Яндекс.Маркет |
yandexMarketCategory |
YandexMarketCategory | Нет | Категория Яндекс.Маркета. Можно проставлять либо объект, либо только идентификатор |
ozonDescriptionCategory |
OzonDescriptionCategory | Нет | Категория Озон |
ozonCommission |
number · double | Нет | Комиссия озона. |
tnved |
Tnved | Нет | ТНВЭД. Можно проставлять либо объект, либо идентификатор ТНВЭД |
tnvedId |
integer · int64 | Нет | Идентификатор ТНВЭД |
laundry |
string | Нет | Правила ухода за вещами. Разделяются запятыми |
params |
string | Нет | JSON значений параметров для категории |
namePattern |
string | Нет | Шаблон названий категории |
aliexpressCategory |
AliexpressCategory | Нет | Категория Aliexpress |
aliexpressCategoryId |
integer · int64 | Нет | Идентификатор категории на самом Aliexpress |
avitoCategory |
AvitoCategory | Нет | Категория Avito |
lamodaCategory |
LamodaCategory | Нет | Категория Lamoda |
lamodaCategoryId |
integer · int64 | Нет | Идентификатор категории на Lamoda |
avitoCategoryId |
integer · int64 | Нет | Идентификатор категории на Avito |
packDepth |
integer · int32 | Нет | Глубина упаковки в мм. Проставляется всем товарам в категории |
packWidth |
integer · int32 | Нет | Ширина упаковки в мм. Проставляется всем товарам в категории |
packHeight |
integer · int32 | Нет | Высота упаковки в мм. Проставляется всем товарам в категории |
packWeight |
integer · int32 | Нет | Вес упаковки в граммах. Проставляется всем товарам в категории |
hasSize |
boolean | Нет | Признак разделения товаров в категории по размеру. Меняет вид редактора карточки |
hasColor |
boolean | Нет | Признак разделения товаров в категории по цвету. Меняет вид редактора карточки |
autoName |
boolean | Нет | Автоматически формировать названия товаров в категории |
removeFbsStock |
boolean | Нет | Не передавать остатки товаров по FBS для товаров из этой категории |
oneCId |
string | Нет | Идентификатор категории в 1С |
externalId |
string | Нет | Идентификатор категории на сайте |
moySkladId |
string | Нет | Идентификатор категории в сервисе МойСклад |
useClientParams |
boolean | Нет | Показывать пользовательские параметры в категории |
requiredExpirationDate |
boolean | Нет | Является ли срок годности обязательным параметром |
serviceCategoryMappings |
object | Нет | Универсальные привязки категории к категориям внешних сервисов |
productCount |
integer · int32 | Нет | Количество товаров в категории. Отдается только при withProductCount=true |
categoryIdclientIdimages
Структура элемента массива
QualityDocumentImage
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | Поле id. |
url |
string | Нет | Поле url. |
position |
integer · int32 | Нет | Поле position. |
documentId |
integer · int64 | Нет | Поле documentId. |
clientId |
integer · int64 | Нет | Поле clientId. |
[
"string"
]Ошибки5
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
error_cant_extract_tariffsПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_cant_extract_tariffs; localMessage содержит приведённый выше перевод.
error_no_clientПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_no_client; localMessage содержит приведённый выше перевод.
Получить список сертификатов по фильтру
/api/qualityDocument/findQualityDocumentПозволяет получить сертификаты по фильтрам: бренд, категория и запрос, который может содержать часть названия или номера
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
brandId |
integer · int32 | Нет | Поиск по id бренда |
categoryId |
integer · int32 | Нет | Поиск по id категории |
query |
string | Нет | Поисковый запрос, может содержать часть названия или номера сертификата |
limit |
integer · int32 | Нет | Ограничение на количество записей. Максимальное значение - 500 |
page |
integer · int32 | Нет | Номер страницы начиная с 1 |
count |
boolean | Нет | Возвратить в ответе общее количество записей |
sortBy |
stringDOCUMENT_ID, NAME, TYPE, NUMBER, START_DATE, EXPIRE_DATE | Нет | Поле для сортировки |
ascending |
boolean | Нет | Порядок сортировки - по возрастанию?. Работает только при получении списка. |
curl --request GET 'https://api.selsup.ru/api/qualityDocument/findQualityDocument?limit=50&page=1' \
--header 'Authorization: YOUR_API_TOKEN'
const response = await fetch('https://api.selsup.ru/api/qualityDocument/findQualityDocument?limit=50&page=1', {
method: 'GET',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const result = await response.json();
const response: Response = await fetch('https://api.selsup.ru/api/qualityDocument/findQualityDocument?limit=50&page=1', {
method: 'GET',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
const result: unknown = await response.json();
import os
import requests
response = requests.get(
'https://api.selsup.ru/api/qualityDocument/findQualityDocument?limit=50&page=1',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
)
response.raise_for_status()
result = response.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/qualityDocument/findQualityDocument?limit=50&page=1',
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.selsup.ru/api/qualityDocument/findQualityDocument?limit=50&page=1", nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/qualityDocument/findQualityDocument?limit=50&page=1"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200
Поля объекта
FindResponseQualityDocument
| Поле | Тип | Обязательно | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
rows |
QualityDocument[] | Нет | Строки с результатом поиска | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура элемента массива
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Поле | Тип | Обязательно | Описание | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id |
integer · int64 | Нет | Поле id. | ||||||||||||||||||||||||||||||||||||
name |
string | Нет | Поле name. | ||||||||||||||||||||||||||||||||||||
type |
stringDECLARATION, CERTIFICATE, REFUSAL, REGISTRATION | Нет | Тип документа | ||||||||||||||||||||||||||||||||||||
number |
string | Нет | Номер сертификата | ||||||||||||||||||||||||||||||||||||
numberNormalized |
string | Нет | Нормализованный номер сертификата, используется для поиска дублей | ||||||||||||||||||||||||||||||||||||
clientId |
integer · int64 | Нет | Поле clientId. | ||||||||||||||||||||||||||||||||||||
versionId |
integer · int64 | Нет | Поле versionId. | ||||||||||||||||||||||||||||||||||||
createdUser |
string | Нет | Поле createdUser. | ||||||||||||||||||||||||||||||||||||
startDate |
string · date | Нет | Дата начала действия сертификата | ||||||||||||||||||||||||||||||||||||
expireDate |
string · date | Нет | Дата окончания срока действия сертификата | ||||||||||||||||||||||||||||||||||||
indefinite |
boolean | Нет | Поле indefinite. | ||||||||||||||||||||||||||||||||||||
data |
QualityDocumentData[] | Нет | Связи сертификата с брендом и категорией | ||||||||||||||||||||||||||||||||||||
Структура элемента массива
|
|||||||||||||||||||||||||||||||||||||||
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | Поле id. |
documentId |
integer · int64 | Нет | Сертификат |
productModelId |
integer · int64 | Нет | Связь сертификата с продуктом |
brand |
Brand | Нет | Связь сертификата с брендом |
brandId |
integer · int32 | Нет | Поле brandId. |
category |
Category | Нет | Связь категории с сертификатом |
categoryId |
integer · int32 | Нет | Поле categoryId. |
clientId |
integer · int64 | Нет | Поле clientId. |
images
Структура элемента массива
QualityDocumentImage
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | Поле id. |
url |
string | Нет | Поле url. |
position |
integer · int32 | Нет | Поле position. |
documentId |
integer · int64 | Нет | Поле documentId. |
clientId |
integer · int64 | Нет | Поле clientId. |
{
"rows": "string"
}Ошибки5
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
error_cant_extract_tariffsПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_cant_extract_tariffs; localMessage содержит приведённый выше перевод.
error_no_clientПерсональная ошибка этого метода. Для программной логики используйте стабильный код error_no_client; localMessage содержит приведённый выше перевод.
Получить сертификат качества
/api/quality/document/{documentId}Возвращает сертификат качества по идентификатору
Параметры пути
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
documentId |
integer · int64 | Да | Поле documentId. |
curl --request GET 'https://api.selsup.ru/api/quality/document/1001' \
--header 'Authorization: YOUR_API_TOKEN'
const response = await fetch('https://api.selsup.ru/api/quality/document/1001', {
method: 'GET',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const response: Response = await fetch('https://api.selsup.ru/api/quality/document/1001', {
method: 'GET',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
import os
import requests
response = requests.get(
'https://api.selsup.ru/api/quality/document/1001',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
)
response.raise_for_status()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/quality/document/1001',
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.selsup.ru/api/quality/document/1001", nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/quality/document/1001"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200Тело ответа пустое.
Ошибки3
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.