wildberries-api
Version:
Typescript API для Wildberries, сгенерированное из Swagger. Без внешних зависимостей.
1,483 lines (1,427 loc) • 82.5 kB
text/typescript
/* eslint-disable */
/* tslint:disable */
/*
* ---------------------------------------------------------------
* ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##
* ## ##
* ## AUTHOR: acacode ##
* ## SOURCE: https://github.com/acacode/swagger-typescript-api ##
* ---------------------------------------------------------------
*/
export interface ResponseCardCreate {
/** @example null */
data?: object | null;
/** Флаг ошибки */
error?: boolean;
/** Описание ошибки */
errorText?: string;
/** Дополнительные ошибки */
additionalErrors?:
| {
string?: string;
}
| string;
}
export interface RequestMoveNmsImtConn {
/**
* Существующий у продавца `imtID`, под которым необходимо объединить НМ
* @example 123
*/
targetIMT: number;
/**
* `nmID`, которые необходимо объединить (максимум 30)
* @example [837459235,828572090]
*/
nmIDs: number[];
}
export interface RequestMoveNmsImtDisconn {
/**
* `nmID`, которые необходимо разъединить (max 30)
* @example [837459235,828572090]
*/
nmIDs: number[];
}
export interface ResponseIncorrectDate {
error?: string;
}
export interface ResponseContentError1 {
/** @example null */
data?: object | null;
/** Флаг ошибки */
error?: boolean;
/** Описание ошибки */
errorText?: string;
/** Дополнительные ошибки */
additionalErrors?: {
error?: string;
};
}
/** @example {"data":null,"error":true,"errorText":"Текст ошибки","additionalErrors":{"MoveNmsToTrash":"Bad request"}} */
export interface ResponseBodyContentError400 {
data?: object | null;
/** Флаг ошибки */
error?: boolean;
/** Описание ошибки */
errorText?: string;
/** Дополнительные ошибки */
additionalErrors?: {
MoveNmsToTrash?: string;
};
}
/** @example {"data":null,"error":true,"errorText":"Доступ запрещен","additionalErrors":"Доступ запрещен"} */
export interface ResponseBodyContentError403 {
data?: object | null;
/** Флаг ошибки */
error?: boolean;
/** Описание ошибки */
errorText?: string;
/** Дополнительные ошибки */
additionalErrors?: string;
}
export interface ResponseContentError4 {
data?: object | null;
/** Флаг ошибки */
error?: boolean;
/** Описание ошибки */
errorText?: string;
/** Дополнительные ошибки */
additionalErrors?: {
description?: string;
};
}
export interface ResponseContentError5 {
data?: object | null;
/** Флаг ошибки */
error?: boolean;
/** Описание ошибки */
errorText?: string;
/** Дополнительные ошибки */
additionalErrors?: {
tagID?: string;
};
}
/** @example {"data":null,"error":false,"errorText":"","additionalErrors":null} */
export interface ResponseContentError6 {
data?: object | null;
/** Флаг ошибки */
error?: boolean;
/** Описание ошибки */
errorText?: string;
/** Дополнительные ошибки */
additionalErrors?: string | null;
}
/** @example {"additionalErrors":null,"data":null,"error":true,"errorText":"Текст ошибки"} */
export interface MediaErrors {
/** Дополнительные ошибки */
additionalErrors?: object;
data?: object;
/** Флаг ошибки */
error?: boolean;
/** Описание ошибки */
errorText?: string;
}
export type QueryParamsType = Record<string | number, any>;
export type ResponseFormat = keyof Omit<Body, "body" | "bodyUsed">;
export interface FullRequestParams extends Omit<RequestInit, "body"> {
/** set parameter to `true` for call `securityWorker` for this request */
secure?: boolean;
/** request path */
path: string;
/** content type of request body */
type?: ContentType;
/** query params */
query?: QueryParamsType;
/** format of response (i.e. response.json() -> format: "json") */
format?: ResponseFormat;
/** request body */
body?: unknown;
/** base url */
baseUrl?: string;
/** request cancellation token */
cancelToken?: CancelToken;
}
export type RequestParams = Omit<FullRequestParams, "body" | "method" | "query" | "path">;
export interface ApiConfig<SecurityDataType = unknown> {
baseUrl?: string;
baseApiParams?: Omit<RequestParams, "baseUrl" | "cancelToken" | "signal">;
securityWorker?: (securityData: SecurityDataType | null) => Promise<RequestParams | void> | RequestParams | void;
customFetch?: typeof fetch;
}
export interface HttpResponse<D extends unknown, E extends unknown = unknown> extends Response {
data: D;
error: E;
}
type CancelToken = Symbol | string | number;
export enum ContentType {
Json = "application/json",
FormData = "multipart/form-data",
UrlEncoded = "application/x-www-form-urlencoded",
Text = "text/plain",
}
export class HttpClient<SecurityDataType = unknown> {
public baseUrl: string = "";
private securityData: SecurityDataType | null = null;
private securityWorker?: ApiConfig<SecurityDataType>["securityWorker"];
private abortControllers = new Map<CancelToken, AbortController>();
private customFetch = (...fetchParams: Parameters<typeof fetch>) => fetch(...fetchParams);
private baseApiParams: RequestParams = {
credentials: "same-origin",
headers: {},
redirect: "follow",
referrerPolicy: "no-referrer",
};
constructor(apiConfig: ApiConfig<SecurityDataType> = {}) {
Object.assign(this, apiConfig);
}
public setSecurityData = (data: SecurityDataType | null) => {
this.securityData = data;
};
protected encodeQueryParam(key: string, value: any) {
const encodedKey = encodeURIComponent(key);
return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`;
}
protected addQueryParam(query: QueryParamsType, key: string) {
return this.encodeQueryParam(key, query[key]);
}
protected addArrayQueryParam(query: QueryParamsType, key: string) {
const value = query[key];
return value.map((v: any) => this.encodeQueryParam(key, v)).join("&");
}
protected toQueryString(rawQuery?: QueryParamsType): string {
const query = rawQuery || {};
const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]);
return keys
.map((key) => (Array.isArray(query[key]) ? this.addArrayQueryParam(query, key) : this.addQueryParam(query, key)))
.join("&");
}
protected addQueryParams(rawQuery?: QueryParamsType): string {
const queryString = this.toQueryString(rawQuery);
return queryString ? `?${queryString}` : "";
}
private contentFormatters: Record<ContentType, (input: any) => any> = {
[ContentType.Json]: (input: any) =>
input !== null && (typeof input === "object" || typeof input === "string") ? JSON.stringify(input) : input,
[ContentType.Text]: (input: any) => (input !== null && typeof input !== "string" ? JSON.stringify(input) : input),
[ContentType.FormData]: (input: any) =>
Object.keys(input || {}).reduce((formData, key) => {
const property = input[key];
formData.append(
key,
property instanceof Blob
? property
: typeof property === "object" && property !== null
? JSON.stringify(property)
: `${property}`,
);
return formData;
}, new FormData()),
[ContentType.UrlEncoded]: (input: any) => this.toQueryString(input),
};
protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams {
return {
...this.baseApiParams,
...params1,
...(params2 || {}),
headers: {
...(this.baseApiParams.headers || {}),
...(params1.headers || {}),
...((params2 && params2.headers) || {}),
},
};
}
protected createAbortSignal = (cancelToken: CancelToken): AbortSignal | undefined => {
if (this.abortControllers.has(cancelToken)) {
const abortController = this.abortControllers.get(cancelToken);
if (abortController) {
return abortController.signal;
}
return void 0;
}
const abortController = new AbortController();
this.abortControllers.set(cancelToken, abortController);
return abortController.signal;
};
public abortRequest = (cancelToken: CancelToken) => {
const abortController = this.abortControllers.get(cancelToken);
if (abortController) {
abortController.abort();
this.abortControllers.delete(cancelToken);
}
};
public request = async <T = any, E = any>({
body,
secure,
path,
type,
query,
format,
baseUrl,
cancelToken,
...params
}: FullRequestParams): Promise<HttpResponse<T, E>> => {
const secureParams =
((typeof secure === "boolean" ? secure : this.baseApiParams.secure) &&
this.securityWorker &&
(await this.securityWorker(this.securityData))) ||
{};
const requestParams = this.mergeRequestParams(params, secureParams);
const queryString = query && this.toQueryString(query);
const payloadFormatter = this.contentFormatters[type || ContentType.Json];
const responseFormat = format || requestParams.format;
return this.customFetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, {
...requestParams,
headers: {
...(requestParams.headers || {}),
...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}),
},
signal: (cancelToken ? this.createAbortSignal(cancelToken) : requestParams.signal) || null,
body: typeof body === "undefined" || body === null ? null : payloadFormatter(body),
}).then(async (response) => {
const r = response.clone() as HttpResponse<T, E>;
r.data = null as unknown as T;
r.error = null as unknown as E;
const data = !responseFormat
? r
: await response[responseFormat]()
.then((data) => {
if (r.ok) {
r.data = data;
} else {
r.error = data;
}
return r;
})
.catch((e) => {
r.error = e;
return r;
});
if (cancelToken) {
this.abortControllers.delete(cancelToken);
}
if (!response.ok) throw data;
return data;
});
};
}
/**
* @title Описание API Контента
*
*
* <dl>
* <dt>Словарь сокращений:</dt>
* <dd>КТ — карточка товара</dd>
* <dd>НМ — номенклатура</dd>
* </dl>
* Ограничения по количеству запросов:
* <dd>Допускается максимум 100 запросов в минуту на методы контента в целом.</dd>
*
* <br>
* Публичное API Контента создано для синхронизации данных между серверами Wildberries и серверами продавцов.
* <br>
* Вы загружаете данные на свои носители, работаете с ними на своих мощностях и синхронизируетесь с нашими серверами по мере необходимости.
* <br>
* <code>Не допускается использование API Контента в качестве внешней базы данных. При превышении лимитов на запросы доступ к API будет ограничен.</code>
*/
export class Api<SecurityDataType extends unknown> extends HttpClient<SecurityDataType> {
content = {
/**
* @description Создание карточки товара происходит асинхронно, при отправке запроса на создание карточки ваш запрос становится в очередь на создание. **Внимание**. Карточка считается созданной, если создалась хотя бы одна номенклатура в ней. Если во время обработки запроса в очереди выявляются ошибки, то номенклатура считается ошибочной. Как создать карточку: 1. Получите список всех категорий с помощью метода `Родительские категории товаров` 2. Получите список доступных предметов (подкатегорий) с помощью метода `Список предметов (подкатегорий)` 3. Получите характеристики, которые можно задавать в этом предмете (подкатегории), с помощью метода `Характеристики предмета (подкатегории)`. Для характеристик Цвет, Страна производства, Сезон, Ставка НДС, ТНВЭД используйте значения из раздела `Конфигуратор`. 4. Отправьте запрос. Если ответ Успешно (200), но какие-то карточки не создались, проверьте ошибки с помощью метода `Список несозданных номенклатур (НМ) с ошибками`. В одном запросе можно создать максимум 100 карточек (`imtID`) и по 30 номенклатур (`nmID`) в каждой. Максимальный размер запроса 10 Мб. Габариты товаров можно указать только в **сантиметрах**.
*
* @tags Загрузка
* @name V2CardsUploadCreate
* @summary Создание карточки товара
* @request POST:/content/v2/cards/upload
* @secure
*/
v2CardsUploadCreate: (
data: {
/** ID предмета */
subjectID: number;
/** Массив вариантов товара. В каждой КТ может быть не более 30 вариантов (НМ) */
variants: {
/** Бренд */
brand?: string;
/** Наименование товара */
title?: string;
/**
* Описание товара. Максимальное количество символов зависит от категории товара. Стандарт — 2000, минимум — 1000, максимум — 5000.<br>
* Подробно о правилах описания в **Правилах заполнения карточки товара** в разделе [Инструкции](https://seller.wildberries.ru/help-center/article/A-113#описание) на портале продавцов.
*/
description?: string;
/** Артикул продавца */
vendorCode: string;
/**
* Габариты упаковки товара. Указывать в **сантиметрах** для любого товара.
* <br>
* Если не указать структуру dimensions в запросе, то она сгенерируется системой автоматически с нулевыми значениями длины, ширины, высоты
*/
dimensions?: {
/** Длина, см */
length?: number;
/** Ширина, см */
width?: number;
/** Высота, см */
height?: number;
};
/**
* Массив с размерами. <br>
* Если для размерного товара (обувь, одежда и др.) не указать этот массив, то системой в карточке он будет сгенерирован автоматически с `techSize` = "A" и `wbSize` = "1" и баркодом.
*/
sizes?: {
/** Размер товара (XL, 45 и др.) */
techSize?: string;
/** Российский размер товара */
wbSize?: string;
/** Цена товара */
price?: number;
/** Баркод. Если не указать, сгенерируется системой автоматически. */
skus?: string[];
}[];
/** Массив характеристик товара */
characteristics?: {
/** Идентификатор характеристики */
id: number;
/** Значение характеристики. Тип значения зависит от типа характеристики */
value: any;
}[];
}[];
}[],
params: RequestParams = {},
) =>
this.request<
ResponseCardCreate,
| ResponseBodyContentError400
| void
| {
/** Заголовок ошибки */
title?: string;
/** Детали ошибки */
detail?: string;
/** Внутренний код ошибки */
code?: string;
/** Уникальный ID запроса */
requestId?: string;
/** ID внутреннего сервиса WB */
origin?: string;
/** HTTP статус-код */
status?: number;
/** Расшифровка HTTP статус-кода */
statusText?: string;
}
>({
path: `/content/v2/cards/upload`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
/**
* @description Обновляет карточку товара. Данные для обновления можно получить с помощью метода [Список номенклатур (НМ)](./#tag/Prosmotr/paths/~1content~1v2~1get~1cards~1list/post) Нельзя редактировать или удалить баркоды, но можно добавить баркод к существующему. Параметры `photos`, `video` и `tags` передавать не обязательно, их нельзя редактировать или удалять в этом методе. Если ответ Успешно (200), но какие-то карточки не изменились, проверьте ошибки с помощью метода `Список несозданных номенклатур (НМ) с ошибками`. В одном запросе можно отредактировать максимум 3000 номенклатур (`nmID`). Максимальный размер запроса 10 Мб. Габариты товаров можно указать только в **сантиметрах**.
*
* @tags Загрузка
* @name V2CardsUpdateCreate
* @summary Редактирование КТ
* @request POST:/content/v2/cards/update
* @secure
*/
v2CardsUpdateCreate: (
data: {
/** Артикул WB */
nmID: number;
/** Артикул продавца */
vendorCode: string;
/** Бренд */
brand?: string;
/** Наименование товара */
title?: string;
/**
* Описание товара. Максимальное количество символов зависит от категории товара. Стандарт — 2000, минимум — 1000, максимум — 5000.<br>
* Подробно о правилах описания в **Правилах заполнения карточки товара** в разделе [Инструкции](https://seller.wildberries.ru/help-center/article/A-113#описание) на портале продавцов.
*/
description?: string;
/** Габариты упаковки товара. Указывать в **сантиметрах** для любого товара. */
dimensions?: {
/** Длина, см */
length?: number;
/** Ширина, см */
width?: number;
/** Высота, см */
height?: number;
};
/** Характеристики товара */
characteristics?: {
/** ID характеристики */
id?: number;
/** Значение характеристики. Тип значения зависит от типа характеристики. */
value?: any;
}[];
/** Массив размеров артикула. <br> Для безразмерного товара все равно нужно передавать данный массив без параметров (wbSize и techSize), но с баркодом. */
sizes: {
/**
* Числовой идентификатор размера для данного артикула Wildberries
* Обязателен к заполнению для существующих размеров.
* Для добавляемых размеров не указывается.
*/
chrtID?: number;
/** Размер товара (XL, S, 45 и др.) */
techSize?: string;
/** Российский размер товара */
wbSize?: string;
/** Баркод */
skus?: string[];
}[];
}[],
params: RequestParams = {},
) =>
this.request<
ResponseCardCreate,
| ResponseBodyContentError400
| void
| ResponseBodyContentError403
| {
/** Заголовок ошибки */
title?: string;
/** Детали ошибки */
detail?: string;
/** Внутренний код ошибки */
code?: string;
/** Уникальный ID запроса */
requestId?: string;
/** ID внутреннего сервиса WB */
origin?: string;
/** HTTP статус-код */
status?: number;
/** Расшифровка HTTP статус-кода */
statusText?: string;
}
>({
path: `/content/v2/cards/update`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
/**
* @description Метод позволяет добавить к карточке товара новую номенклатуру. <br> Добавление НМ к КТ происходит асинхронно, после отправки запрос становится в очередь на обработку.<br> `Важно!` Если после успешной отправки запроса номенклатура не создалась, то необходимо проверить раздел "Список несозданных НМ с ошибками". <br> Для того чтобы убрать НМ из ошибочных, необходимо повторно сделать запрос с исправленными ошибками.<br> Максимальный размер запроса 10 Мб. Габариты товаров можно указать только в **сантиметрах**.
*
* @tags Загрузка
* @name V2CardsUploadAddCreate
* @summary Добавление НМ к КТ
* @request POST:/content/v2/cards/upload/add
* @secure
*/
v2CardsUploadAddCreate: (
data: {
/** imtID КТ, к которой добавляется НМ */
imtID?: number;
/** Структура добавляемой НМ */
cardsToAdd?: {
/** Бренд */
brand?: string;
/** Артикул продавца */
vendorCode: string;
/** Наименование товара */
title?: string;
/**
* Описание товара. Максимальное количество символов зависит от категории товара. Стандарт — 2000, минимум — 1000, максимум — 5000.<br>
* Подробно о правилах описания в **Правилах заполнения карточки товара** в разделе [Инструкции](https://seller.wildberries.ru/help-center/article/A-113#описание) на портале продавцов.
*/
description?: string;
/**
* Габариты упаковки товара. Указывать в **сантиметрах** для любого товара.
* <br>
* Если не указать структуру dimensions в запросе, то она сгенерируется системой автоматически с нулевыми значениями длины, ширины, высоты
*/
dimensions?: {
/** Длина, см */
length?: number;
/** Ширина, см */
width?: number;
/** Высота, см */
height?: number;
};
/** Характеристики товара */
characteristics?: {
/** ID характеристики */
id?: number;
/** Значение характеристики. Тип значения зависит от типа характеристики */
value?: any;
}[];
/**
* Массив с размерами. <br>
* Если для размерного товара (обувь, одежда и др.) не указать этот массив, то системой в карточке он будет сгенерирован автоматически с `techSize` = "A" и `wbSize` = "1" и баркодом.
*/
sizes?: {
/** Размер товара (XL, 42 и др.) */
techSize?: string;
/** Российский размер товара */
wbSize?: string;
/** Цена товара */
price?: number;
/** Баркод */
skus?: string[];
}[];
}[];
},
params: RequestParams = {},
) =>
this.request<
ResponseCardCreate,
| ResponseBodyContentError400
| void
| {
/** Заголовок ошибки */
title?: string;
/** Детали ошибки */
detail?: string;
/** Внутренний код ошибки */
code?: string;
/** Уникальный ID запроса */
requestId?: string;
/** ID внутреннего сервиса WB */
origin?: string;
/** HTTP статус-код */
status?: number;
/** Расшифровка HTTP статус-кода */
statusText?: string;
}
>({
path: `/content/v2/cards/upload/add`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
/**
* @description Метод позволяет объединять номенклатуры (`nmID`) под одним `imtID` и разъединять их.<br> Для объединения НМ необходимо отправить запрос со списком НМ с заполненным параметром `targetIMT` в теле запроса. При этом все НМ объединятся под `imtID` указанном в `targetIMT`. <br> <br> Чтобы отсоединить НМ от карточки, необходимо передать эту НМ без параметра `targetIMT` в теле запроса.<br> При этом для передаваемой НМ создается новый `imtID`. <br> Если в запросе на <b>разъединение</b> передается несколько НМ, то все они автоматически <b>объединятся</b> под <b>одним</b> новым `imtID`. <br> Чтобы присвоить каждой НМ уникальный `imtID` необходимо передавать по одной НМ за запрос. Для НМ, не участвующих в запросе, никаких изменений не происходит.<br> Максимальный размер запроса 10 Мб.<br> <br> `ВАЖНО:` Объединить можно только номенклатуры с одинаковыми предметами.<br> `ВАЖНО:` В одной КТ (под одним `imtID`) не может быть больше 30 номенклатур (`nmID`).
*
* @tags Загрузка
* @name V2CardsMoveNmCreate
* @summary Объединение / Разъединение НМ
* @request POST:/content/v2/cards/moveNm
* @secure
*/
v2CardsMoveNmCreate: (data: RequestMoveNmsImtConn | RequestMoveNmsImtDisconn, params: RequestParams = {}) =>
this.request<
ResponseCardCreate,
(ResponseContentError1 | ResponseCardCreate | ResponseIncorrectDate) | void | ResponseCardCreate | string
>({
path: `/content/v2/cards/moveNm`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
/**
* @description Метод позволяет сгенерировать массив уникальных баркодов для создания размера НМ в КТ.
*
* @tags Загрузка
* @name V2BarcodesCreate
* @summary Генерация баркодов
* @request POST:/content/v2/barcodes
* @secure
*/
v2BarcodesCreate: (
data: {
/**
* Кол-во баркодов которые надо сгенерировать, максимальное доступное количество баркодов для генерации - `5 000`
* @example 100
*/
count?: number;
},
params: RequestParams = {},
) =>
this.request<
{
/** Массив сгенерированных баркодов */
data?: string[];
/**
* Флаг ошибки
* @example false
*/
error?: boolean;
/**
* Описание ошибки
* @example ""
*/
errorText?: string;
/**
* Дополнительные ошибки
* @example ""
*/
additionalErrors?: string;
},
void | ResponseBodyContentError403
>({
path: `/content/v2/barcodes`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
/**
* @description Метод позволяет получить список созданных НМ с фильтрацией по разным параметрам, пагинацией и сортировкой. <br> *Важно*. Карточки, находящиеся в корзине, в ответе метода не выдаются. <br> Получить такие карточки можно только методом "Список НМ, находящихся в корзине".<br> <br>Порядок работы с `get/cards/list`: <br> Чтобы получить полный список номенклатур, <b>если их больше 100</b>, необходимо воспользоваться пагинацией. <ol> <li>Сделать первый запрос (все указанные ниже параметры обязательны): <br> <pre style="background-color: rgb(38 50 56 / 5%); color: #e53935"> { "settings": { "cursor": { "limit": 100 }, "filter": { "withPhoto": -1 } } }</pre> </li> <li>Пройти в конец полученного списка номенклатур, скопировать из <code>cursor</code> две строки: <ul> <li><code>"updatedAt": "***"</code>,</li> <li><code>"nmID": ***</code>,</li> </ul> <li>Вставить скопированные строки в <code>cursor</code> запроса, повторить вызов метода. </li> <li>Повторять пункты <b>2</b> и <b>3</b>, пока <code>total</code> в ответе не станет меньше чем <code>limit</code> в запросе. <br>Это будет означать, что Вы получили все карточки. </ol> <br> По желанию можно добавить поиск и сортировку. См описание в <b>Request Body schema</b> <br> В <b>Request samples</b> представлен пример запроса со всеми возможными параметрами.
*
* @tags Просмотр
* @name V2GetCardsListCreate
* @summary Список номенклатур (НМ)
* @request POST:/content/v2/get/cards/list
* @secure
*/
v2GetCardsListCreate: (
data: {
/** Настройки */
settings?: {
/** Параметр сортировки */
sort?: {
/** Сортировать по полю **updatedAt** (`false` - по убыванию, `true` - по возрастанию) */
ascending?: boolean;
};
/** Параметры фильтрации */
filter?: {
/**
* Фильтр по фото:
*
* * `0` — только карточки без фото
* * `1` — только карточки с фото
* * `-1` — все карточки товара
*/
withPhoto?: number;
/** Поиск по артикулу продавца, артикулу WB, баркоду */
textSearch?: string;
/** Поиск по ID тегов */
tagIDs?: number[];
/** Фильтр по категории. `true` - только разрешённые, `false` - все. Не используется в песочнице. */
allowedCategoriesOnly?: boolean;
/** Поиск по id предметов */
objectIDs?: number[];
/** Поиск по брендам */
brands?: string[];
/** Поиск по идентификатору КТ */
imtID?: number;
};
/** Курсор */
cursor?: {
/** Сколько КТ выдать в ответе. */
limit?: number;
};
};
},
query?: {
/**
* Язык для перевода полей ответа `name`, `value` и `object`: `ru` - русский, `en` - английский, `zh` - китайский.
*
* Не используется в песочнице.
* @example "ru"
*/
locale?: string;
},
params: RequestParams = {},
) =>
this.request<
{
/** Список КТ */
cards?: {
/** Артикул WB */
nmID?: number;
/** Идентификатор КТ. <br> Артикулы WB из одной КТ будут иметь одинаковый imtID */
imtID?: number;
/**
* Внутренний технический идентификатор товара
* @format uuid
*/
nmUUID?: string;
/** Идентификатор предмета */
subjectID?: number;
/** Артикул продавца */
vendorCode?: string;
/** Название предмета */
subjectName?: string;
/** Бренд */
brand?: string;
/** Наименование товара */
title?: string;
/** Массив фото */
photos?: {
/** URL фото `900х1200` */
big?: string;
/** URL фото `248х328` */
c246x328?: string;
/** URL фото `516х688` */
c516x688?: string;
/** URL фото `600х600` */
square?: string;
/** URL фото `75х100` */
tm?: string;
}[];
/** URL видео */
video?: string;
/** Габариты упаковки товара, см */
dimensions?: {
/** Длина, см */
length?: number;
/** Ширина, см */
width?: number;
/** Высота, см */
height?: number;
/**
* Потенциальная некорректность габаритов товара:
* - `true` — не выявлена. `"isValid":true` не гарантирует, что размеры указаны корректно. В отдельных случаях (например, при создании новой категории товаров) `"isValid":true` будет возвращаться при любых значениях, кроме нулевых.
* - `false` — указанные габариты значительно отличаются от средних по категории (предмету). Рекомендуется перепроверить, правильно ли указаны размеры товара в упаковке **в сантиметрах**. Функциональность карточки товара, в том числе начисление логистики и хранения, при этом ограничена не будет. Логистика и хранение продолжают начисляться — по текущим габаритам. Также `"isValid":false` возвращается при отсутствии значений или нулевом значении любой стороны.
*/
isValid?: boolean;
};
/** Характеристики */
characteristics?: {
/** Идентификатор характеристики */
id?: number;
/** Название характеристики */
name?: string;
/** Значение характеристики. Тип значения зависит от типа характеристики */
value?: any;
}[];
/** Размеры товара */
sizes?: {
/** Числовой идентификатор размера для данного артикула WB */
chrtID?: number;
/** Размер товара (А, XXL, 57 и др.) */
techSize?: string;
/** Российский размер товара */
wbSize?: string;
/** Баркод товара */
skus?: string[];
}[];
/** Теги */
tags?: {
/** Идентификатор тега */
id?: number;
/** Название тега */
name?: string;
/** Цвет тега. <dl> <dt>Доступные цвета:</dt> <dd><code>D1CFD7</code> - серый</dd> <dd><code>FEE0E0</code> - красный</dd> <dd><code>ECDAFF</code> - фиолетовый</dd> <dd><code>E4EAFF</code> - синий</dd> <dd><code>DEF1DD</code> - зеленый</dd> <dd><code>FFECC7</code> - желтый</dd> </dl> */
color?: string;
}[];
/** Дата создания */
createdAt?: string;
/** Дата изменения */
updatedAt?: string;
}[];
/** Пагинатор */
cursor?: {
/** Дата с которой надо запрашивать следующий список КТ */
updatedAt?: string;
/** Номер Артикула WB с которой надо запрашивать следующий список КТ */
nmID?: number;
/** Кол-во возвращенных КТ */
total?: number;
};
},
ResponseBodyContentError400 | void | ResponseBodyContentError403
>({
path: `/content/v2/get/cards/list`,
method: "POST",
query: query,
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
/**
* @description Метод позволяет получить список НМ и список ошибок которые произошли во время создания КТ. <br>`ВАЖНО`: Для того чтобы убрать НМ из ошибочных, надо повторно сделать запрос с исправленными ошибками на создание КТ.
*
* @tags Просмотр
* @name V2CardsErrorListList
* @summary Список несозданных номенклатур (НМ) с ошибками
* @request GET:/content/v2/cards/error/list
* @secure
*/
v2CardsErrorListList: (
query?: {
/**
*
* Параметр выбора языка значений полей ответа (для которых предусмотрена мультиязычность).
*
* Не используется в песочнице.
* @example "en"
*/
locale?: string;
},
params: RequestParams = {},
) =>
this.request<
{
data?: {
/**
* Категория для который создавалось КТ с данной НМ
* @example "Блузки"
*/
object?: string;
/**
* Артикул продавца
* @example "6000000001"
*/
vendorCode?: string;
/**
* Дата и время запроса на создание КТ с данным НМ
* @example "2022-06-15T14:37:13Z"
*/
updateAt?: string;
/** Список ошибок из-за которых не обработался запрос на создание КТ с данным НМ */
errors?: string[];
/**
* Идентификатор предмета
* @example 41
*/
objectID?: number;
}[];
/**
* Флаг ошибки.
* @example false
*/
error?: boolean;
/**
* Описание ошибки.
* @example ""
*/
errorText?: string;
/**
* Дополнительные ошибки.
* @example ""
*/
additionalErrors?: string;
},
ResponseBodyContentError400 | void | ResponseBodyContentError403
>({
path: `/content/v2/cards/error/list`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
/**
* @description Метод позволяет получить отдельно бесплатные и платные лимиты продавца на создание карточек товаров. <br> Формула для получения количества карточек, которые можно создать: (`freeLimits` + `paidLimits`) - Количество созданных карточек.<br> Созданными считаются все карточки, которые можно получить методами "Список НМ" и "Список НМ, находящихся в корзине".
*
* @tags Просмотр
* @name V2CardsLimitsList
* @summary Лимиты по КТ
* @request GET:/content/v2/cards/limits
* @secure
*/
v2CardsLimitsList: (params: RequestParams = {}) =>
this.request<
{
data?: {
/** Количество бесплатных лимитов */
freeLimits?: number;
/** Количество оплаченных лимитов */
paidLimits?: number;
};
/** Флаг ошибки */
error?: boolean;
/** Описание ошибки */
errorText?: string;
/** Дополнительные ошибки */
additionalErrors?: string | null;
},
void | ResponseBodyContentError403
>({
path: `/content/v2/cards/limits`,
method: "GET",
secure: true,
format: "json",
...params,
}),
/**
* @description С помощью данного метода можно получить список всех родительских категорий товаров.
*
* @tags Конфигуратор
* @name V2ObjectParentAllList
* @summary Родительские категории товаров
* @request GET:/content/v2/object/parent/all
* @secure
*/
v2ObjectParentAllList: (
query?: {
/**
* Параметр выбора языка (ru, en, zh) значений поля name. Не используется в песочнице
* @example "en"
*/
locale?: string;
},
params: RequestParams = {},
) =>
this.request<
{
data?: {
/**
* Название категории
* @example "Электроника"
*/
name?: string;
/**
* Идентификатор родительской категории
* @example 479
*/
id?: number;
/**
* Виден на сайте
* @example true
*/
isVisible?: boolean;
}[];
/**
* Флаг наличия ошибки
* @example false
*/
error?: boolean;
/**
* Описание ошибки
* @example ""
*/
errorText?: string;
/**
* Дополнительные ошибки
* @example ""
*/
additionalErrors?: string;
},
ResponseBodyContentError400 | void | ResponseBodyContentError403
>({
path: `/content/v2/object/parent/all`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
/**
* @description С помощью данного метода можно получить список всех доступных предметов, родительских категорий предметов, и их идентификаторов.
*
* @tags Конфигуратор
* @name V2ObjectAllList
* @summary Список предметов (подкатегорий)
* @request GET:/content/v2/object/all
* @secure
*/
v2ObjectAllList: (
query?: {
/**
* Поиск по наименованию предмета (Носки), поиск работает по подстроке, искать можно на любом из поддерживаемых языков.
* @example "Носки"
*/
name?: string;
/**
* Количество подкатегорий (предметов), максимум 1 000
* @example 1000
*/
limit?: number;
/**
* Язык полей ответа (ru, en, zh). Не используется в песочнице
* @example "en"
*/
locale?: string;
/**
* Номер позиции, с которой необходимо получить ответ
* @example 5000
*/
offset?: number;
/**
* Идентификатор родительской категории предмета
* @example 1000
*/
parentID?: number;
},
params: RequestParams = {},
) =>
this.request<
{
/** Подкатегории (предметы) */
data?: {
/** Идентификатор предмета */
subjectID?: number;
/** Идентификатор родительской категории */
parentID?: number;
/** Название предмета */
subjectName?: string;
/** Название родительской категории */
parentName?: string;
}[];
/** Флаг наличия ошибки */
error?: boolean;
/** Текст ошибки */
errorText?: string;
/** Дополнительные ошибки */
additionalErrors?: string;
},
void
>({
path: `/content/v2/object/all`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
/**
* @description Получение списка характеристик предмета по его ID.
*
* @tags Конфигуратор
* @name V2ObjectCharcsDetail
* @summary Характеристики предмета (подкатегории)
* @request GET:/content/v2/object/charcs/{subjectId}
* @secure
*/
v2ObjectCharcsDetail: (
subjectId: number,
query?: {
/**
* Параметр выбора языка (ru, en, zh) значений полей `subjectName`, `name`. Не используется в песочнице
* @example "en"
*/
locale?: string;
},
params: RequestParams = {},
) =>
this.request<
{
/** Данные */
data?: {
/** Идентификатор характеристики */
charcID?: number;
/** Название предмета */
subjectName?: string;
/** Идентификатор предмета */
subjectID?: number;
/** Название характеристики */
name?: string;
/** true - характеристику необходимо обязательно указать в КТ. false - характеристику не обязательно указывать */
required?: boolean;
/** Единица измерения */
unitName?: string;
/** Максимальное кол-во значений, которое можно присвоить данной характеристике. Если 0, то нет ограничения. */
maxCount?: number;
/** Характеристика популярна у пользователей (true - да, false - нет) */
popular?: boolean;
/** Тип характеристики (1 и 0 - строка или массив строк; 4 - число или массив чисел) */
charcType?: number;
}[];
/** Флаг наличия ошибки */
error?: boolean;
/** Текст ошибки */
errorText?: string;
/** Дополнительные ошибки */
additionalErrors?: string;
},
ResponseBodyContentError400 | void | ResponseBodyContentError403
>({
path: `/content/v2/object/charcs/${subjectId}`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
/**
* @description Получение значения характеристики цвет.
*
* @tags Конфигуратор
* @name V2DirectoryColorsList
* @summary Цвет
* @request GET:/content/v2/directory/colors
* @secure
*/
v2DirectoryColorsList: (
query?: {
/**
* Параметр выбора языка (ru, en, zh) значений полей `subjectName`, `name`. Не используется в песочнице
* @example "en"
*/
locale?: string;
},
params: RequestParams = {},
) =>
this.request<
{
data?: {
/**
* Наименование цвета
* @example "персиковый мелок"
*/
name?: string;
/**
* Наименование родительского цвета
* @example "оранжевый"
*/
parentName?: string;
}[];
/**
* Флаг ошибки
* @example false
*/
error?: boolean;
/**
* Описание ошибки
* @example ""
*/
errorText?: string;
/**
* Дополнительные ошибки
* @example ""
*/
additionalErrors?: string;
},
ResponseBodyContentError400 | void | ResponseBodyContentError403
>({
path: `/content/v2/directory/colors`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
/**
* @description Получение значения характеристики пол.
*
* @tags Конфигуратор
* @name V2DirectoryKindsList
* @summary Пол
* @request GET:/content/v2/directory/kinds
* @secure
*/
v2DirectoryKindsList: (
query?: {
/**
* Параметр выбора языка (ru, en, zh) значений полей `subjectName`, `name`. Не используется в песочнице
* @example "en"
*/
locale?: string;
},
params: RequestParams = {},
) =>
this.request<
{
/** Массив значений для хар-ки Пол */
data?: string[];
/**
* Флаг ошибки
* @example false
*/
error?: boolean;
/**
* Описание ошибки
* @example ""
*/
errorText?: string;
/**
* Дополнительные ошибки
* @example ""
*/
additionalErrors?: string;
},
ResponseBodyContentError400 | void | ResponseBodyContentError403
>({
path: `/content/v2/directory/kinds`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
/**
* @description Получение значения характеристики Страна Производства.
*
* @tags Конфигуратор
* @name V2DirectoryCountriesList
* @summary Страна Производства
* @request GET:/content/v2/directory/countries
* @secure
*/
v2DirectoryCountriesList: (
query?: {
/**
* Параметр выбора языка (ru, en, zh) значений полей `subjectName`, `name`. Не используется в песочнице
* @example "en"
*/
locale?: string;
},
params: RequestParams = {},
) =>
this.request<
{
data?: {
/**
* Значение характеристики Страны
* @example "Афганистан"
*/
name?: string;
/**
* Полное название страны
* @example "Исламский Эмират Афганистан"
*/
fullName?: string;
}[];
/**
* Флаг ошибки
* @example false
*/
error?: boolean;
/**
* Описание ошибки
* @example ""
*/
errorText?: string;
/**
* Дополнительные ошибки
* @example ""
*/
additionalErrors?: string;
},
ResponseBodyContentError400 | void | ResponseBodyContentError403
>({
path: `/content/v2/directory/countries`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
/**
* @description Получение значения характеристики Сезон.
*
* @tags Конфигуратор
* @name V2DirectorySeasonsList
* @summary Сезон
* @request GET:/content/v2/directory/seasons
* @secure
*/
v2DirectorySeasonsList: (
query?: {
/**
* Параметр выбора языка (ru, en, zh) значений полей `subjectName`, `name`. Не используется в песочнице
* @example "en"
*/
locale?: string;
},
params: RequestParams = {},
) =>
this.request<
{
/** Массив значений для хар-ки Сезон */
data?: string[];
/**
* Флаг ошибки
* @example false
*/
error?: boolean;
/**
* Описание ошибки
* @example ""
*/
errorText?: string;
/**
* Дополнительные ошибки
* @example ""
*/
additionalErrors?: string;
},
ResponseBodyContentError400 | void | ResponseBodyContentError403
>({
path: `/content/v2/directory/seasons`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
/**
* @description С помощью данного метода можно получить список ТНВЭД кодов по ID предмета и фильтру по ТНВЭД коду.
*
* @tags Конфигуратор
* @name V2DirectoryTnvedList
* @summary ТНВЭД код
* @request GET:/content/v2/directory/tnved
* @secure
*/
v2DirectoryTnvedList: (
query: {
/**
* Идентификатор предмета
* @example 105
*/
subjectID: number;
/**
* Поиск по ТНВЭД-коду. Работает только в паре с subjectID
* @example 6106903000
*/
search?: number;
/**
* Язык (`ru`, `en`, `zh`) для значений полей `subjectName`, `name`. Не используется в песочнице
* @example "en"
*/
locale?: string;
},
params: RequestParams = {},
) =>
this.request<
{
/** Данные */
data?: {
/** ТНВЭД-код */
tnved?: string;
/**
* - `true` - код маркировки требуется
* - `false` - код маркировки не требуется
*/
isKiz?: boolean;
}[];
/**
* Флаг наличия ошибки
* @example false
*/
error?: boolean;
/** Текст ошибки */
errorText?: string;
/** Дополнительные ошибки */
additionalErrors?: string;
},
ResponseBodyContentError400 | void | ResponseBodyContentError403
>({
path: `/content/v2/directory/tnved`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
/**
* @description С помощью данного метода можно получить список значений для характеристики **Ставка НДС**.
*
* @tags Конфигуратор
* @name V2DirectoryVatList
* @summary Ставка НДС
* @request GET:/content/v2/directory/vat
* @secure
*/
v2DirectoryVatList: (
query: {
/**
* Язык значения элементов `data` (`ru`, `en`, `zh`). Не используется в песочнице
* @example "ru"
*/
locale: string;
},
params: RequestParams = {},
) =>
this.request<
{