UNPKG

wildberries-api

Version:

Typescript API для Wildberries, сгенерированное из Swagger. Без внешних зависимостей.

1,600 lines (1,535 loc) 116 kB
/* eslint-disable */ /* tslint:disable */ /* * --------------------------------------------------------------- * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## * ## ## * ## AUTHOR: acacode ## * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## * --------------------------------------------------------------- */ export interface ResponseWithReturn { /** Размер обновлённого бюджета */ total?: number; } export interface StatInterval { /** Запрошенный временной диапазон. */ interval?: { /** * Начало запрашиваемого периода * @format date */ begin?: string; /** * Конец запрашиваемого периода * @format date */ end?: string; }; /** Блок статистики */ stats?: StatsBlok1[]; } export interface StatDate { /** Даты, за которые необходимо выдать информацию. */ dates?: string[]; /** Блок статистики */ stats?: StatsBlok2[]; } export interface Stat { /** Блок статистики */ stats?: StatsBlok1[]; } export interface StatsBlok1 { /** ID баннера */ item_id?: number; /** Название бренда */ item_name?: string; /** Название категории */ category_name?: string; /** <dl> <dt>Тип медиакампании:</dt> <dd><code>1</code> - размещение по дням</dd> <dd><code>2</code> - размещение по просмотрам</dd> </dl> */ advert_type?: number; /** Место на странице */ place?: number; /** Количество просмотров */ views?: number; /** Количество кликов */ clicks?: number; /** CR(conversion rate) — это отношение количества заказов к общему количеству посещений медиакампании */ cr?: number; /** CTR (click-through rate) — показатель кликабельности, отношение числа кликов к количеству показов в рамках медиакампании */ ctr?: number; /** * Время начала размещения * @format date-time */ date_from?: string; /** * Время завершения размещения * @format date-time */ date_to?: string; /** Родительская категория предмета */ subject_name?: string; /** Количество добавлений товаров в корзину */ atbs?: number; /** Количество заказов */ orders?: number; /** Стоимость размещения */ price?: number; /** (cost per click) - цена клика по продвигаемому товару */ cpc?: number; /** Статус медиакампании */ status?: number; daily_stats?: DailyStats1; /** Стоимость размещения баннера */ expenses?: number; /** Отношение количества добавлений в корзину к количеству кликов */ cr1?: number; /** Отношение количества заказов к количеству добавлений в корзину */ cr2?: number; } export type DailyStats1 = { /** * Дата * @format date-time */ date?: string; /** Статистика по платформам */ app_type_stats?: { /** * <dl> * <dt>Тип платформы:</dt> * <dd><code>1</code> - сайт</dd> * <dd><code>32</code> - Android</dd> * <dd><code>64</code> - IOS</dd> * </dl> */ app_type?: number; stats?: Stats1; }[]; }[]; export type Stats1 = { /** Количество просмотров */ views?: number; /** Количество кликов */ clicks?: number; /** Количество добавлений товаров в корзину */ atbs?: number; /** CTR (click-through rate) — показатель кликабельности, отношение числа кликов к количеству показов в рамках медиакампании */ ctr?: number; }[]; export interface StatsBlok2 { /** ID баннера */ item_id?: number; /** Название бренда */ item_name?: string; /** Название категории */ category_name?: string; /** <dl> <dt>Тип медиакампании:</dt> <dd><code>1</code> - размещение по дням</dd> <dd><code>2</code> - размещение по просмотрам</dd> </dl> */ advert_type?: number; /** Место на странице */ place?: number; /** Количество просмотров */ views?: number; /** Количество кликов */ clicks?: number; /** CR(conversion rate) — это отношение количества заказов к общему количеству посещений медиакампании */ cr?: number; /** CTR (click-through rate) — показатель кликабельности, отношение числа кликов к количеству показов в рамках медиакампании */ ctr?: number; /** * Время начала размещения * @format date-time */ date_from?: string; /** * Время завершения размещения * @format date-time */ date_to?: string; /** Родительская категория предмета */ subject_name?: string; /** Количество добавлений товаров в корзину */ atbs?: number; /** Количество заказов */ orders?: number; /** Стоимость размещения */ price?: number; /** (cost per click) - цена клика по продвигаемому товару */ cpc?: number; /** Статус медиакампании */ status?: number; daily_stats?: DailyStats2; /** Стоимость размещения баннера */ expenses?: number; /** Отношение количества добавлений в корзину к количеству кликов */ cr1?: number; /** Отношение количества заказов к количеству добавлений в корзину */ cr2?: number; } export type DailyStats2 = { /** * Дата * @format date-time */ date?: string; /** Статистика по платформам */ app_type_stats?: { /** * <dl> * <dt>Тип платформы:</dt> * <dd><code>1</code> - сайт</dd> * <dd><code>32</code> - Android</dd> * <dd><code>64</code> - IOS</dd> * </dl> */ app_type?: number; stats?: Stats2; }[]; }[]; export type Stats2 = { /** Количество просмотров */ views?: number; /** Количество кликов */ clicks?: number; /** Количество добавлений товаров в корзину */ atbs?: number; /** Количество заказов */ orders?: number; /** CR(conversion rate) — отношение количества заказов к общему количеству посещений медиакампании */ cr?: number; /** CTR (click-through rate) — показатель кликабельности, отношение числа кликов к количеству показов в рамках медиакампании */ ctr?: number; }[]; /** * @maxItems 100 * @minItems 1 */ export type RequestWithDate = { /** ID кампании */ id?: number; /** Даты, за которые необходимо выдать информацию. */ dates?: string[]; }[]; /** * @maxItems 100 * @minItems 1 */ export type RequestWithCampaignID = { /** ID кампании */ id?: number; }[]; /** * @maxItems 100 * @minItems 1 */ export type RequestWithInterval = { /** ID кампании */ id?: number; /** Временной диапазон, за который необходимо выдать данные. */ interval?: { /** * Начало запрашиваемого периода * @format date */ begin?: string; /** * Конец запрашиваемого периода * @format date */ end?: string; }; }[]; /** Статистка по дням */ export type Days = { /** * Дата, за которую представлены данные * @format date-time */ date?: string; /** Количество просмотров */ views?: number; /** Количество кликов */ clicks?: number; /** Показатель кликабельности, отношение числа кликов к количеству показов, % */ ctr?: number; /** Средняя стоимость клика, ₽. */ cpc?: number; /** Затраты, ₽. */ sum?: number; /** Количество добавлений товаров в корзину */ atbs?: number; /** Количество заказов */ orders?: number; /** CR(conversion rate) — отношение количества заказов к общему количеству посещений кампании */ cr?: number; /** Количество заказанных товаров, шт. */ shks?: number; /** Заказов на сумму, ₽ */ sum_price?: number; /** Блок информации о платформе */ apps?: { /** Количество просмотров */ views?: number; /** Количество кликов */ clicks?: number; /** Показатель кликабельности, отношение числа кликов к количеству показов, % */ ctr?: number; /** Средняя стоимость клика, ₽. */ cpc?: number; /** Затраты, ₽. */ sum?: number; /** Количество добавлений товаров в корзину */ atbs?: number; /** Количество заказов */ orders?: number; /** CR(conversion rate) — это отношение количества заказов к общему количеству посещений кампании */ cr?: number; /** Количество заказанных товаров, шт. */ shks?: number; /** Заказов на сумму, ₽ */ sum_price?: number; /** Блок статистики по артикулам WB */ nm?: { /** Количество просмотров */ views?: number; /** Количество кликов */ clicks?: number; /** Показатель кликабельности, отношение числа кликов к количеству показов, % */ ctr?: number; /** Средняя стоимость клика, ₽. */ cpc?: number; /** Затраты, ₽. */ sum?: number; /** Количество добавлений товаров в корзину */ atbs?: number; /** Количество заказов */ orders?: number; /** CR(conversion rate) — отношение количества заказов к общему количеству посещений кампании */ cr?: number; /** Количество заказанных товаров, шт. */ shks?: number; /** Заказов на сумму, ₽ */ sum_price?: number; /** Название товара */ name?: string; /** ID артикула WB */ nmId?: number; }[]; /** Тип платформы (`1` - сайт, `32` - Android, `64` - IOS) */ appType?: number; }[]; }[]; /** Статистика по средней позиции товара на страницах поисковой выдачи и каталога (для автоматических кампаний). */ export type BoosterStats = { /** * Дата, за которую предоставлены данные. * @format date-time */ date?: string; /** Артикул WB */ nm?: number; /** Средняя позиция товара на страницах поисковой выдачи и каталога */ avg_position?: number; }[]; /** Ответ при запросе с interval */ export type ResponseWithInterval = { /** Запрошенный временной диапазон. */ interval?: { /** * Начало запрашиваемого периода * @format date */ begin?: string; /** * Конец запрашиваемого периода * @format date */ end?: string; }; /** * Количество просмотров. <br> * За все дни запрошенного диапазона, по всем артикулам WB и платформам. */ views?: number; /** * Количество кликов.<br> * За все дни запрошенного диапазона, по всем артикулам WB и платформам. */ clicks?: number; /** * Показатель кликабельности.<br> * Отношение числа кликов к количеству показов. Выражается в процентах.<br> * За все дни запрошенного диапазона, по всем артикулам WB и платформам.<br> */ ctr?: number; /** * Средняя стоимость клика, ₽.<br> * За все дни запрошенного диапазона, по всем артикулам WB и платформам. */ cpc?: number; /** * Затраты, ₽.<br> * За все дни запрошенного диапазона, по всем артикулам WB и платформам. */ sum?: number; /** * Количество добавлений товаров в корзину.<br> * За все дни запрошенного диапазона, по всем артикулам WB и платформам. */ atbs?: number; /** * Количество заказов.<br> * За все дни запрошенного диапазона, по всем артикулам WB и платформам. */ orders?: number; /** * CR(conversion rate) — это отношение количества заказов к общему количеству посещений кампании.<br> * За все дни запрошенного диапазона, по всем артикулам WB и платформам. */ cr?: number; /** * Количество заказанных товаров, шт.<br> * За все дни запрошенного диапазона, по всем артикулам WB и платформам. */ shks?: number; /** * Заказов на сумму, ₽<br> * За все дни запрошенного диапазона, по всем артикулам WB и платформам. */ sum_price?: number; /** Статистка по дням */ days?: Days; /** Статистика по средней позиции товара на страницах поисковой выдачи и каталога (для автоматических кампаний). */ boosterStats?: BoosterStats; /** ID кампании */ advertId?: number; }[]; /** Ответ при запросе с dates */ export type ResponseWithDate = { /** Даты, за которые необходимо выдать информацию. */ dates?: string[]; /** * Количество просмотров. <br> * За все дни, по всем артикулам WB и платформам. */ views?: number; /** * Количество кликов.<br> * За все дни, по всем артикулам WB и платформам. */ clicks?: number; /** * Показатель кликабельности.<br> * Отношение числа кликов к количеству показов. Выражается в процентах.<br> * За все дни, по всем артикулам WB и платформам.<br> */ ctr?: number; /** * Средняя стоимость клика, ₽.<br> * За все дни, по всем артикулам WB и платформам. */ cpc?: number; /** * Затраты, ₽.<br> * За все дни, по всем артикулам WB и платформам. */ sum?: number; /** * Количество добавлений товаров в корзину.<br> * За все дни, по всем артикулам WB и платформам. */ atbs?: number; /** * Количество заказов.<br> * За все дни, по всем артикулам WB и платформам. */ orders?: number; /** * CR(conversion rate) — это отношение количества заказов к общему количеству посещений кампании.<br> * За все дни, по всем артикулам WB и платформам. */ cr?: number; /** * Количество заказанных товаров, шт.<br> * За все дни, по всем артикулам WB и платформам. */ shks?: number; /** * Заказов на сумму, ₽<br> * За все дни, по всем артикулам WB и платформам. */ sum_price?: number; /** Статистка по дням */ days?: Days; /** Статистика по средней позиции товара на страницах поисковой выдачи и каталога (для автоматических кампаний). */ boosterStats?: BoosterStats; /** ID кампании */ advertId?: number; }[]; export interface ResponseInfoAdvert { /** Дата завершения кампании */ endTime?: string; /** * Время создания кампании * @example "2022-03-09T10:50:21.831623+03:00" */ createTime?: string; /** * Время последнего изменения кампании * @example "2022-12-22T18:24:19.808701+03:00" */ changeTime?: string; /** Дата последнего запуска кампании */ startTime?: string; /** Название кампании */ name?: string; /** Параметры кампании */ params?: { /** Название предметной группы (для кампаний в поиске и рекомендациях) */ subjectName?: string; /** Флаг активности предметной группы, <code>true</code> - активна, <code>false</code> - неактивна */ active?: boolean; /** Интервалы часов показа кампании */ intervals?: { /** Время начала показов */ Begin?: number; /** Время окончания показов */ End?: number; }[]; /** Текущая ставка */ price?: number; /** Идентификатор меню, где размещается кампания (для кампаний в каталоге) */ menuId?: number; /** Идентификатор предметной группы, для которой создана кампания (для кампаний в поиске и рекомендациях) */ subjectId?: number; /** Идентификатор сочетания предмета и пола (для кампаний в карточке товара) */ setId?: number; /** Сочетание предмета и пола (для кампаний в карточке товара) */ setName?: string; /** Название меню, где размещается кампания (для кампаний в каталоге) */ menuName?: string; /** Массив номенклатур кампании */ nms?: { /** Числовой идентификатор номенклатуры Wildberries (<code>nmId</code>) */ nm?: number; /** Состояние номенклатуры (<code>true</code> - активна или <code>false</code> - неактивна) */ active?: boolean; }[]; }[]; /** Дневной бюджет, если не установлен, то 0 */ dailyBudget?: number; /** * Идентификатор кампании * @example 1234 */ advertId?: number; /** * <dl> * <dt>Статус кампании:</dt> * <dd><code>-1</code> - кампания в процессе удаления </dd> * <dd><code>4</code> - готова к запуску </dd> * <dd><code>7</code> - Кампания завершена</dd> * <dd><code>8</code> - отказался</dd> * <dd><code>9</code> - идут показы</dd> * <dd><code>11</code> - Кампания на паузе</dd> * </dl> * Кампания в процессе удаления. Статус означает, что кампания была удалена, и через 3-10 минут она исчезнет из ответа метода. * * @example 9 */ status?: number; /** * <dl> * <dt>Тип кампании:</dt> * <dd><code>4</code> - кампания в каталоге (<strong>устаревший тип</strong>)</dd> * <dd><code>5</code> - кампания в карточке товара (<strong>устаревший тип</strong>)</dd> * <dd><code>6</code> - кампания в поиске (<strong>устаревший тип</strong>)</dd> * <dd><code>7</code> - кампания в рекомендациях на главной странице (<strong>устаревший тип</strong>)</dd> * </dl> * @example 4 */ type?: number; /** * Модель оплаты: * - `cpm` — за показы * - `cpo` — за заказы */ paymentType?: string; /** * Активность фиксированных фраз: * - `false` — не активны * - `true` — активны */ searchPluseState?: boolean; } export interface ResponseInfoAdvertType8 { /** * Дата завершения кампании * @format date-time */ endTime?: string; /** * Дата создания кампании * @format date-time */ createTime?: string; /** * Дата последнего изменения кампании * @format date-time */ changeTime?: string; /** * Дата последнего запуска кампании * @format date-time */ startTime?: string; autoParams?: { /** Продвигаемый предмет */ subject?: { /** ID предмета */ id?: number; /** Название предмета */ name?: string; }; /** Внутренняя (системная) сущность (пол + предмет) */ sets?: { /** Идентификатор set */ id?: number; /** Название set */ name?: string; }[]; menus?: { /** ID меню */ id?: number; /** Название меню */ name?: string; }[]; /** Зоны показов */ active?: { /** Карточка товара (`false` - отключены, `true` - включены) */ carousel?: boolean; /** Рекомендации на главной (`false` - отключены, `true` - включены) */ recom?: boolean; /** Поиск/Каталог (`false` - отключены, `true` - включены) */ booster?: boolean; }; /** Ставки номенклатур (артикулов WB) */ nmCPM?: { /** Артикул WB */ nm?: number; /** Ставка */ cpm?: number; }[]; /** Артикулы WB */ nms?: number[]; /** Ставка, указанная при создании кампании.<br> Поле актуально только для кампаний, созданных через API. */ cpm?: number; }; /** Название кампании */ name?: string; /** Не используется */ dailyBudget?: number; /** Идентификатор кампании */ advertId?: number; /** * <dl> <dt>Статус кампании:</dt> <dd><code>-1</code> - кампания * в процессе удаления </dd> <dd><code>4</code> * - готова к запуску </dd> <dd><code>7</code> - Кампания завершена</dd> * <dd><code>8</code> - отказался</dd> <dd><code>9</code> - идут показы</dd> * <dd><code>11</code> - Кампания на паузе</dd> </dl> Кампания в процессе * удаления. Статус означает, что кампания была удалена, и через 3-10 минут * она исчезнет из ответа метода. */ status?: number; /** * <dl> <dt>Тип кампании:</dt> <dd><code>8</code> - автоматическая * кампания </dd> </dl> */ type?: number; /** * Модель оплаты: * - `cpm` — за показы * - `cpo` — за заказы */ paymentType?: string; } /** @example {"endTime":"2100-01-01T00:00:00+03:00","createTime":"2023-07-09T10:56:02.150362+03:00","changeTime":"2023-07-11T02:48:44.767712+03:00","startTime":"2023-07-10T08:02:31.949155+03:00","searchPluseState":false,"name":"Противовирусные препараты","unitedParams":[{"subject":{"id":3038,"name":"Противовирусные препараты"},"menus":[{"id":-1,"name":""}],"nms":[38995344],"searchCPM":123,"catalogCPM":321}],"dailyBudget":0,"advertId":1234567,"status":11,"type":9,"paymentType":"cpm"} */ export interface ResponseInfoAdvertType9 { /** * Дата завершения кампании * @format date-time */ endTime?: string; /** * Дата создания кампании * @format date-time */ createTime?: string; /** * Дата последнего изменения кампании * @format date-time */ changeTime?: string; /** * Дата последнего запуска кампании * @format date-time */ startTime?: string; /** * Активность фиксированных фраз: * - `false` — не активны * - `true` — активны */ searchPluseState?: boolean; /** Название кампании */ name?: string; unitedParams?: { /** Продвигаемый предмет */ subject?: { /** ID предмета */ id?: number; /** Название предмета */ name?: string; }; menus?: { /** ID меню */ id?: number; /** Название меню */ name?: string; }[]; /** Артикулы WB */ nms?: number[]; /** Ставка в Поиске */ searchCPM?: number; /** Ставка в Каталоге, при наличии */ catalogCPM?: number; }[]; /** Не используется */ dailyBudget?: number; /** Идентификатор кампании */ advertId?: number; /** * <dl> <dt>Статус кампании:</dt> <dd><code>-1</code> - кампания * в процессе удаления </dd> <dd><code>4</code> * - готова к запуску </dd> <dd><code>7</code> - Кампания завершена</dd> * <dd><code>8</code> - отказался</dd> <dd><code>9</code> - идут показы</dd> * <dd><code>11</code> - Кампания на паузе</dd> </dl> Кампания в процессе * удаления. Статус означает, что кампания была удалена, и через 3-10 минут * она исчезнет из ответа метода. */ status?: number; /** * Модель оплаты: * - `cpm` — за показы * - `cpo` — за заказы */ paymentType?: string; /** * <dl> <dt>Тип кампании:</dt> <dd><code>9</code> - Аукцион * </dd> </dl> */ type?: number; } export interface ResponseAdvError1 { error?: string; } export interface V0KeywordsStatistic { /** Количество кликов */ clicks: number; /** CTR (Click-Through Rate) — показатель кликабельности */ ctr: number; /** Ключевая фраза */ keyword: string; /** Сумма затрат по ключевой фразе */ sum: number; /** Количество показов */ views: number; } export interface V0KeywordsStatistics { /** * Дата * @format date */ date: string; stats: V0KeywordsStatistic[]; } export interface V0KeywordsStatisticsResponse { keywords: V0KeywordsStatistics[]; } export interface ErrorResponse { type: string; message: 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 Продвижение * * Синхронизация данных из базы данных происходит раз в 3 минуты. <br>Изменение статуса происходит раз в 1 минуту. Внутри этого интервала будет сохранено последнее действие по изменению статуса. <br>Изменение ставки происходит раз в 30 секунд. Внутри этого интервала будет сохранено последнее действие по изменению ставки. */ export class Api<SecurityDataType extends unknown> extends HttpClient<SecurityDataType> { adv = { /** * @description Создают автоматическую кампанию.<br> Максимум 1 запрос в 20 секунд. * * @tags Продвижение * @name V1SaveAdCreate * @summary Создать автоматическую кампанию * @request POST:/adv/v1/save-ad * @secure */ v1SaveAdCreate: ( data: { /** * <dl> * <dt>Тип автоматической кампании:</dt> * <dd><code>8</code> * </dl> * @example 8 */ type?: number; /** * Название кампании (max. 128 символов) * @example "Парашюты" */ name?: string; /** * ID предмета, для которого создается кампания.<br> * Существующие у продавца идентификаторы можно получить методом из раздела "Контент / Просмотр" - "Список НМ", поле ответа - `subjectID`. * @example 270 */ subjectId?: number; /** * Сумма пополнения * @example 500 */ sum?: number; /** * <dl> * <dt>Tип списания.</dt> * <dd><code>0</code> - Счёт</dd> * <dd><code>1</code> - Баланс</dd> * <dd><code>3</code> - Бонусы</dd> * </dl> * @example 1 */ btype?: number; /** * <dl> * <dt>После создания кампания:</dt> * <dd> * <dl> * <dt><code>true</code> - будет на паузе.</dt> * <dd>Запуск кампании будет доступен через 3 минуты после создания кампании.</dd> * </dl> * </dd> * <dd><code>false</code> - будет сразу запущена</dd> * </dl> * @example true */ on_pause?: boolean; /** * Массив артикулов WB. <br> * Максимум 100 артикулов. */ nms?: number[]; /** * Ставка. <br> * Если будет указана ставка меньше допустимого размера, то автоматически установится ставка минимально допустимого размера. */ cpm?: number; }, params: RequestParams = {}, ) => this.request< string, { error?: string; } | void >({ path: `/adv/v1/save-ad`, method: "POST", body: data, secure: true, type: ContentType.Json, format: "json", ...params, }), /** * @description Создаёт кампанию Аукцион. <br> Максимум 5 запросов в минуту * * @tags Продвижение * @name V2SeacatSaveAdCreate * @summary Создать кампанию Аукцион * @request POST:/adv/v2/seacat/save-ad * @secure */ v2SeacatSaveAdCreate: ( data: { /** Название кампании */ campaignName?: string; /** Номенклатуры для кампании. Доступные номенклатуры можно получить с помощью метода [Номенклатуры для кампаний](./#tag/Slovari/paths/~1adv~1v2~1supplier~1nms/post). Максимум 50 товаров (`nm`) */ nms?: number[]; }, params: RequestParams = {}, ) => this.request<number, string | void>({ path: `/adv/v2/seacat/save-ad`, method: "POST", body: data, secure: true, type: ContentType.Json, format: "json", ...params, }), /** * @description Метод позволяет удалять кампании в статусе <b>4 - готова к запуску</b>. <br> <br> Допускается 5 запросов в секунду.<br> После удаления кампания некоторое время будет находиться в <b>-1</b> статусе.<br> Полное удаление кампании занимает от 3 до 10 минут. * * @tags Продвижение * @name V0DeleteList * @summary Удаление кампании * @request GET:/adv/v0/delete * @secure */ v0DeleteList: ( query: { /** ID кампании */ id: number; }, params: RequestParams = {}, ) => this.request<void, ResponseAdvError1 | void>({ path: `/adv/v0/delete`, method: "GET", query: query, secure: true, ...params, }), /** * @description Метод позволяет переименовать кампанию. <br>Допускается 5 запросов в секунду. * * @tags Продвижение * @name V0RenameCreate * @summary Переименование кампании * @request POST:/adv/v0/rename * @secure */ v0RenameCreate: ( data: { /** Идентификатор кампании, у которой меняется название */ advertId: number; /** Новое название (максимум 100 символов) */ name: string; }, params: RequestParams = {}, ) => this.request<void, string | void>({ path: `/adv/v0/rename`, method: "POST", body: data, secure: true, type: ContentType.Json, ...params, }), /** * @description Метод позволяет получать списки кампаний, сгруппированных по типу и статусу, с информацией о дате последнего изменения кампании. <br> Допускается 5 запросов в секунду. * * @tags Продвижение * @name V1PromotionCountList * @summary Списки кампаний * @request GET:/adv/v1/promotion/count * @secure */ v1PromotionCountList: (params: RequestParams = {}) => this.request< { /** Данные по кампаниям */ adverts?: | { /** Тип кампании */ type?: number; /** Статус кампании */ status?: number; /** Количество кампаний */ count?: number; /** Список кампаний */ advert_list?: { /** ID кампании */ advertId?: number; /** * Дата и время последнего изменения кампании * @format date-time */ changeTime?: string; }[]; }[] | null; /** Общее количество кампаний всех статусов и типов */ all?: number; }, void >({ path: `/adv/v1/promotion/count`, method: "GET", secure: true, format: "json", ...params, }), /** * @description Метод позволяет получать информацию о кампаниях по query параметрам, либо по списку ID кампаний. <br> Допускается 5 запросов в секунду. * * @tags Продвижение * @name V1PromotionAdvertsCreate * @summary Информация о кампаниях * @request POST:/adv/v1/promotion/adverts * @secure */ v1PromotionAdvertsCreate: ( data: number[], query?: { /** * <dl> * <dt>Статус кампании:</dt> * <dd><code>-1</code> - кампания в процессе удаления </dd> * <dd><code>4</code> - готова к запуску </dd> * <dd><code>7</code> - кампания завершена</dd> * <dd><code>8</code> - отказался</dd> * <dd><code>9</code> - идут показы</dd> * <dd><code>11</code> - кампания на паузе</dd> * </dl> * Кампания в процессе удаления. Статус означает, что кампания была удалена, и через 3-10 минут она исчезнет из ответа метода. */ status?: -1 | 4 | 7 | 8 | 9 | 11; /** * <dl> * <dt>Тип кампании:</dt> * <dd><code>4</code> - кампания в каталоге (<strong>устаревший тип</strong>)</dd> * <dd><code>5</code> - кампания в карточке товара (<strong>устаревший тип</strong>)</dd> * <dd><code>6</code> - кампания в поиске (<strong>устаревший тип</strong>)</dd> * <dd><code>7</code> - кампания в рекомендациях на главной странице (<strong>устаревший тип</strong>)</dd> * <dd><code>8</code> - автоматическая кампания </dd> * <dd><code>9</code> - Аукцион </dd> * </dl> */ type?: 4 | 5 | 6 | 7 | 8 | 9; /** * <dl> * <dt>Порядок:</dt> * <dd><code>create</code> (по времени создания кампании)</dd> * <dd><code>change</code> (по времени последнего изменения кампании)</dd> * <dd><code>id</code> (по идентификатору кампании)</dd> * </dl> */ order?: "create" | "change" | "id"; /** * <dl> * <dt>Направление:</dt> * <dd><code>desc</code> (от большего к меньшему)</dd> * <dd><code>asc</code> (от меньшего к большему)</dd> * </dl> * <br>Например: <code>/adv/v1/promotion/adverts?type=6&order=change&<b>direction=asc</b></code> */ direction?: "desc" | "asc"; }, params: RequestParams = {}, ) => this.request<(ResponseInfoAdvert | ResponseInfoAdvertType8 | ResponseInfoAdvertType9)[], string | void>({ path: `/adv/v1/promotion/adverts`, method: "POST", query: query, body: data, secure: true, type: ContentType.Json, format: "json", ...params, }), /** * @description Изменение ставки у кампании.<br> Измененная ставка отобразится в информации о кампании в течение трех минут.<br> Допускается 5 запросов в секунду.<br> <br> `Важно!` Если устанавливаемая ставка имеет размер меньше допустимого, то в ответ Вы получите статус-код 422 (Размер ставки не изменён).<br> Информация об изменении минимального размера ставки публикуется в разделе Новости, на портале продавцов.<br> <br> `Важно!` Принцип заполнения параметров `type`, `instrument`, `param` при изменении ставки для кампании с типом 9 (Аукцион): <br> Для `type` указывается значение 9 (всегда). <br> Для `instrument` указывается значение 6 (<strong>устаревший тип кампании</strong>). <br> Для `param` всегда указывается значение поля <b>id</b> из структуры <b>subject</b> ответа метода "Информация о кампании". * * @tags Продвижение * @name V0CpmCreate * @summary Изменение ставки у кампании * @request POST:/adv/v0/cpm * @secure */ v0CpmCreate: ( data: { /** * Идентификатор кампании, где меняется ставка * @example 789 */ advertId: number; /** * <dl> * <dt>кампании, где меняется ставка:</dt> * <dd><code>4</code> - кампания в каталоге (<strong>устаревший тип</strong>)</dd> * <dd><code>5</code> - кампания в карточке товара (<strong>устаревший тип</strong>)</dd> * <dd><code>6</code> - кампания в поиске (<strong>устаревший тип</strong>)</dd> * <dd><code>7</code> - кампания в рекомендациях на главной странице (<strong>устаревший тип</strong>)</dd> * <dd><code>8</code> - автоматическая кампания</dd> * <dd><code>9</code> - кампания Аукцион </dd> * </dl> */ type: 5 | 6 | 7 | 8 | 9; /** * Новое значение ставки * @example 456 */ cpm: number; /** * Параметр, для которого будет внесено изменение. Является значением `subjectId` (для кампании в поиске и рекомендациях), `setId` (для кампании в карточке товара) или `menuId` (для кампании в каталоге). * <br> Для автоматической кампании указывать этот параметр не требуется. * @example 23 */ param: number; /** * тип кампании для изменения ставки в 4 - каталог (<strong>устаревший тип</strong>), 6 - поиск (<strong>устаревший тип</strong>) * @example 4 */ instrument?: number; }, params: RequestParams = {}, ) => this.request<void, string | void>({ path: `/adv/v0/cpm`, method: "POST", body: data, secure: true, type: ContentType.Json, ...params, }), /** * @description Метод завершает медиакампанию - переводит её в статус `7`. <br> Допускается максимум 10 запросов в минуту. <dl> <dt>Статусы, в которых для медиакампании доступно завершение:</dt> <dd><code>1</code> - черновик</dd> <dd><code>3</code> - отклонено (с возможностью вернуть на модерацию)</dd> <dd><code>4</code> - одобрено</dd> <dd><code>5</code> - запланировано</dd> <dd><code>6</code> - на показах</dd> <dd><code>8</code> - отказался</dd> <dd><code>9</code> - приостановлена продавцом</dd> <dd><code>10</code> - пауза по дневному лимиту</dd> <dd><code>11</code> - пауза по расходу бюджета</dd> </dl> * * @tags Активность медиакампании * @name V1AdvertStopCreate * @summary Завершение медиакампании * @request POST:/adv/v1/advert/stop * @secure */ v1AdvertStopCreate: ( data: { /** ID медиакампании */ advert_id: number; /** Описание причины завершения */ reason?: string; }, params: RequestParams = {}, ) => this.request<void, string | void>({ path: `/adv/v1/advert/stop`, method: "POST", body: data, secure: true, type: ContentType.Json, ...params, }), /** * @description Метод позволяет приостанавливать медиакампании. <br> Переводит приостанавливаемую медиакампанию в статус `9`.<br> Допускается максимум 10 запросов в минуту. <br> `Важно:` приостановить медиакампанию можно не больше 10 раз в сутки. Сутки отсчитываются с полуночи по Московскому времени. <br> <dl> <dt>Статусы, в которых для медиакампании доступна приостановка:</dt> <dd><code>4</code> — одобрено</dd> <dd><code>5</code> — запланировано</dd> <dd><code>6</code> — на показах</dd> <dd><code>10</code> — пауза по дневному лимиту</dd> <dd><code>11</code> — пауза по расходу бюджета</dd> </dl> * * @tags Активность медиакампании * @name V1AdvertPauseCreate * @summary Приостановка медиакампании * @request POST:/adv/v1/advert/pause * @secure */ v1AdvertPauseCreate: ( data: { /** ID медиакампании */ advert_id: number; /** Описание причины приостановки */ reason?: string; }, params: RequestParams = {}, ) => this.request<void, void>({ path: `/adv/v1/advert/pause`, method: "POST", body: data, secure: true, type: ContentType.Json, ...params, }), /** * @description Метод позволяет запускать приостановленные медиакампании. <br> После запуска кампания в течение 2-5 минут будет находиться в статусе `4`, после чего статус будет изменён на актуальный, в зависимости от конфигурации медиакампании. <br> Допускается максимум 10 запросов в минуту. <dl> <dt>Статусы, в которых для медиакампании доступен запуск:</dt> <dd><code>9</code> - приостановлена продавцом</dd> <dd><code>11</code> - пауза по расходу бюджета</dd> </dl> * * @tags Активность медиакампании * @name V1AdvertStartCreate * @summary Запуск медиакампании * @request POST:/adv/v1/advert/start * @secure */ v1AdvertStartCreate: ( data: { /** ID медиакампании */ advert_id: number; /** Описание причины запуска */ reason?: string; }, params: RequestParams = {}, ) => this.request<void, string | void>({ path: `/adv/v1/advert/start`, method: "POST", body: data, secure: true, type: ContentType.Json, ...params, }), /** * @description Метод позволяет изменять ставку баннера в структуре <b>items</b>. <br> Изменение возможно только для кампаний в одном из статусов: 4, 5, 6, 9, 10, 11. <br> Допускается максимум 10 запросов в минуту. * * @tags Ставки медиакампании * @name V1ItemCpmChangeCreate * @summary Изменение ставки баннера * @request POST:/adv/v1/item/cpm/change * @secure */ v1ItemCpmChangeCreate: ( data: { /** ID медиакампании */ advert_id: number; /** ID баннера */ item_id: number; /** Новая ставка */ cpm: string; }, params: RequestParams = {}, ) => this.request<void, string | void>({ path: `/adv/v1/item/cpm/change`, method: "POST", body: data, secure: true, type: ContentType.Json, ...params, }), /** * @description Метод позволяет получить количество медиакампаний продавца * * @tags Медиа * @name V1CountList * @summary Получение медиакампаний * @request GET:/adv/v1/count * @secure */ v1CountList: (params: RequestParams = {}) => this.request< { /** Общее количество медиакампаний всех статусов и типов */ all?: number; adverts?: { /** * <dl> * <dt>Тип медиакампании:</dt> * <dd><code>1</code> - размещение по дням</dd> * <dd><code>2</code> - размещение по просмотрам</dd> * </dl> */ type?: number; /** * <dl> * <dt>Статус медиакампании:</dt> * <dd><code>1</code> - черновик</dd> * <dd><code>2</code> - модерация * <dd><code>3</code> - отклонено (с возможностью вернуть на модерацию)</dd> * <dd><code>4</code> - одобрено</dd> * <dd><code>5</code> - запланировано</dd> * <dd><code>6</code> - на показах</dd> * <dd><code>7</code> - завершено</dd> * <dd><code>8</code> - отказался</dd> * <dd><code>9</code> - приостановлена продавцом</dd> * <dd><code>10</code> - пауза по дневному лимиту</dd> * <dd><code>11</code> - пауза по расходу бюджета</dd> * </dl> */ status?: number; /** Количество медиакампаний */ count?: number; }; }, void >({ path: `/adv/v1/count`, method: "GET", secure: true, format: "json", ...params, }), /** * @description Метод позволяет получить список медиакампаний продавца * * @tags Медиа * @name V1AdvertsList * @summary Список медиакампаний * @request GET:/adv/v1/adverts * @secure */ v1AdvertsList: ( query?: { /** * <dl> * <dt>Статус медиакампании:</dt> * <dd><code>1</code> - черновик</dd> * <dd><code>2</code> - модерация * <dd><code>3</code> - отклонено (с возможностью вернуть на модерацию)</dd> * <dd><code>4</code> - одобрено</dd> * <dd><code>5</code> - запланировано</dd> * <dd><code>6</code> - на показах</dd> * <dd><code>7</code> - завершено</dd> * <dd><code>8</code> - отказался</dd> * <dd><code>9</code> - приостановлена продавцом</dd> * <dd><code>10</code> - пауза по дневному лимиту</dd> * <dd><code>11</code> - пауза по расходу бюджета</dd> * </dl> * @example 1 */ status?: number; /** * <dl> * <dt>Тип медиакампании:</dt> * <dd><code>1</code> - размещение по дням</dd> * <dd><code>2</code> - размещение по просмотрам</dd> * </dl> * @example 1 */ type?: number; /** * Количество кампаний в ответе * @example 1 */ limit?: number; /** * Смещение относительно первой медиакампании * @example 1 */ offset?: number; /** * <dl> * <dt>Порядок вывода ответа:</dt> * <dd><code>create</code> - по времени создания медиакампании</dd> * <dd><code>id</code> - по идентификатору медиакампании</dd> * </dl> * @example "id" */ order?: string; /** * <dl> * <dt>Порядок сортировки:</dt> * <dd><code>desc</code> - от большего к меньшему</dd> * <dd><code>asc</code> - от меньшего к большему</dd> * </dl> * @example "desc" */ direction?: string; }, params: RequestParams = {}, ) => this.request< { /** Идентификатор медиакампании */ advertId?: number; /** Название медиакампании */ name?: string; /** Название бренда */ brand?: string; /** * <dl> * <dt>Тип медиакампании:</dt> * <dd><code>1</code> - размещение по дням</dd> * <dd><code>2</code> - размещение по просмотрам</dd> * </dl> */ type?: number; /** * <dl> * <dt>Статус медиакампании:</dt> * <dd><code>1</code> - черновик</dd> * <dd><code>2</code> - модерация * <dd><code>3</code> - отклонено (с возможностью вернуть на модерацию)</dd> * <dd><code>4</code> - одобрено</dd> * <dd><code>5</code> - запланировано</dd> * <dd><code>6</code> - на показах</dd> * <dd><code>7</code>