/**
* Auto-generated TypeScript types for promotion module
* Generated from: wildberries_api_doc/08-promotion.yaml
*
* DO NOT EDIT MANUALLY - Changes will be overwritten on next generation
*
* Generated: 2025-12-25T16:51:03.204Z
*/
export interface Response400 {
error?: string;
}
/**
* Места размещения (перечисление WB `PlacementType`):
* - `search` — поиск
* - `recommendation` — рекомендации
* - `combined` — поиск и рекомендации
*
* Примечание: единственное число `recommendation` соответствует компоненту `PlacementType`
* в WB OpenAPI etalon (08-promotion.yaml:4536-4541). Не путать с полем `placement` ответа
* `updateBids`, которое использует множественное число `recommendations`.
*/
export type PlacementType = 'combined' | 'search' | 'recommendation';
export interface StandardizedBatchError {
/** Детали ошибки */
detail: string;
/** ID внутреннего сервиса WB */
origin: string;
/** Уникальный ID запроса */
request_id: string;
/** HTTP статус-код */
status: number;
/** Заголовок ошибки */
title: string;
}
/**
* @example
```json
{
"id": 760,
"name": "Автомобильные товары",
"cpm_min": 112
}
```
*/
export interface V0GetConfigCategoriesResponse {
/** ID категории товара */
id: number;
/** Название категории товара */
name: string;
/** Минимально допустимая ставка */
cpm_min: number;
}
export interface V0AdvertMultiBidItem {
/** Артикул WB */
nm: number;
/** Ставка. Минимально допустимые ставки вы можете получить в ответе метода [получения минимальных ставок для карточек товаров](./promotion#tag/Sozdanie-kampanij/paths/~1adv~1v0~1bids~1min/post) */
bid: number;
}
export interface V0AdvertMultibid {
/** ID кампании */
advert_id: number;
/** Артикулы WB и ставки для них */
nm_bids: V0AdvertMultiBidItem[];
}
export interface ResponseWithReturn {
/** Размер обновлённого бюджета */
total?: number;
/**
* Валюта [кабинета продавца](https://cmp.wildberries.ru/campaigns/finances) (ISO 4217, напр. 'RUB').
*/
currency?: string;
}
export interface ResponseInfoAdvert {
/** Дата завершения кампании */
endTime?: string;
/** Время создания кампании */
createTime?: string;
/** Время последнего изменения кампании */
changeTime?: string;
/** Дата последнего запуска кампании */
startTime?: string;
/** Название кампании */
name?: string;
/** Параметры кампании */
params?: {
/** Название предметной группы. Для кампаний в поиске и рекомендациях (**устаревшие типы кампаний**) */
subjectName?: string;
/** Флаг активности предметной группы: - `true` — активна - `false` — неактивна */
active?: boolean;
/** Временные интервалы показа кампании */
intervals?: {
/** Время начала показов */
begin?: number;
/** Время окончания показов */
end?: number;
}[];
/** Текущая ставка */
price?: number;
/** ID меню, где размещается кампания. Для кампаний в каталоге (**устаревший тип кампании**) */
menuId?: number;
/** ID предметной группы, для которой создана кампания. Для кампаний в поиске и рекомендациях (**устаревшие типы кампаний** */
subjectId?: number;
/** ID сочетания предмета и пола. Для кампаний в карточке товара (**устаревший тип кампании**) */
setId?: number;
/** Сочетание предмета и пола. Для кампаний в карточке товара (**устаревший тип кампании**) */
setName?: string;
/** Название меню, где размещается кампания. Для кампаний в каталоге (**устаревший тип кампании**) */
menuName?: string;
/** Массив карточек товаров кампании */
nms?: {
/** Артикул WB */
nm?: number;
/** Состояние карточки товара: - `true` — активна - `false` — неактивна */
active?: boolean;
}[];
}[];
/** Дневной бюджет. Если не установлен, то `0` */
dailyBudget?: number;
/** ID кампании */
advertId?: number;
/** Статус кампании: - `-1` — удалена, процесс удаления будет завершён в течение 10 минут - `4` — готова к запуску - `7` — завершена - `8` — отменена - `9` — активна - `11` — на паузе */
status?: number;
/** Тип кампании: - `4` — кампания в каталоге (**устаревший тип**) - `5` — кампания в карточке товара (**устаревший тип**) - `6` — кампания в поиске (**устаревший тип**) - `7` — кампания в рекомендациях на главной странице (**устаревший тип**) */
type?: number;
/** Модель оплаты: - `cpm` — за показы */
paymentType?: string;
/** Активность фиксированных фраз: - `false` — не активны - `true` — активны */
searchPluseState?: boolean;
}
export interface ResponseInfoAdvertType8 {
/** Дата завершения кампании */
endTime?: string;
/** Дата создания кампании */
createTime?: string;
/** Дата последнего изменения кампании */
changeTime?: string;
/** Дата последнего запуска кампании */
startTime?: string;
autoParams?: {
/** Продвигаемый предмет */
subject?: {
/** ID предмета */
id?: number;
/** Название предмета */
name?: string;
};
/** Внутренняя (системная) сущность (пол + предмет) */
sets?: {
/** ID 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;
};
/** Ставки карточек товаров */
nmCPM?: {
/** Артикул WB */
nm?: number;
/** Ставка */
cpm?: number;
}[];
/** Артикулы WB */
nms?: number[];
/** Ставка, указанная при создании кампании.
Поле актуально только для кампаний, созданных через API. */
cpm?: number;
};
/** Название кампании */
name?: string;
/** Не используется */
dailyBudget?: number;
/** ID кампании */
advertId?: number;
/** Статус кампании: - `-1` — удалена, процесс удаления будет завершён в течение 10 минут - `4` — готова к запуску - `7` — завершена - `8` — отменена - `9` — активна - `11` — на паузе */
status?: number;
/** Тип кампании: - `8` — единая ставка */
type?: number;
/** Модель оплаты: - `cpm` — за показы */
paymentType?: string;
}
export interface ResponseInfoAdvertType9 {
/** Дата завершения кампании */
endTime?: string;
/** Дата создания кампании */
createTime?: string;
/** Дата последнего изменения кампании */
changeTime?: string;
/** Дата последнего запуска кампании */
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;
/** ID кампании */
advertId?: number;
/** Статус кампании: - `-1` — удалена, процесс удаления будет завершён в течение 10 минут - `4` — готова к запуску - `7` — завершена - `8` — отменена - `9` — активна - `11` — на паузе */
status?: number;
/** Тип кампании: - `9` — Ручная ставка */
type?: number;
/** Модель оплаты: - `cpm` — за показы */
paymentType?: string;
/** Ставки артикулов WB */
auction_multibids?: {
/** Артикул WB */
nm?: number;
/** Ставка */
bid?: number;
}[];
}
export interface ResponseAdvError1 {
error?: string;
}
export interface PromotionsGoodsList {
/** Артикул WB */
id?: number;
/** Участвует в акции: - `true` — да - `false` — нет */
inAction?: boolean;
/** Текущая розничная цена */
price?: number;
/** Валюта в формате ISO 4217 */
currencyCode?: string;
/** Плановая цена (цена во время акции) */
planPrice?: number;
/** Текущая скидка */
discount?: number;
/** Рекомендуемая скидка для участия в акции */
planDiscount?: number;
}
export interface GetAuctionAdverts {
/** Кампании */
adverts: {
/** ID кампании */
id: number;
/** Настройки товаров */
nm_settings: AuctionAdvertNMsSettings[];
settings: AuctionAdvertSettings;
/** Статус кампании: - `-1` — удалена, процесс удаления будет завершён в течение 10 минут - `4` — готова к запуску - `7` — завершена - `8` — отменена - `9` — активна - `11` — на паузе */
status: -1 | 4 | 7 | 8 | 9 | 11;
timestamps: Timestamps;
/** Тип ставки: `unified` — единая ставка (Type 8, управляет WB), `manual` — ручная ставка (Type 9) */
bid_type: BidType;
};
}
export interface AuctionAdvertNMsSettings {
bids: AuctionAdvertBids;
subject: AuctionAdvertSubject;
/** Артикул WB */
nm_id: number;
}
/**
* Предмет
*/
export interface AuctionAdvertSubject {
/** ID предмета */
id: number;
/** Название предмета */
name: string;
}
/**
* Ставки
*/
export interface AuctionAdvertBids {
/** Ставка в поиске */
search: number;
/** Ставка в рекомендациях */
recommendations: number;
}
/**
* Настройки кампании
*/
export interface AuctionAdvertSettings {
/** Тип оплаты: - `cpm` — за показы - `cpc` — за клик */
payment_type: 'cpm' | 'cpc';
/** Имя кампании */
name: string;
/** Места размещения */
placements: {
/** Размещение в поиске: - `false` — да - `true` — нет */
search: boolean;
/** Размещение в рекомендациях: - `false` — отключено - `true` — включено */
recommendations: boolean;
};
}
/**
* Временные отметки
*/
export interface Timestamps {
/** Время создания кампании */
created: string;
/** Время последнего изменения кампании */
updated: string;
/** Время последнего запуска кампании (`null`, если кампания ещё не запускалась) */
started: string | null;
/** Время удаления кампании. Если кампания не удалена, время указывается в будущем */
deleted: string;
}
export interface Response400 {
/** Детали ошибки */
detail: string;
/** ID внутреннего сервиса WB */
origin: string;
/** Уникальный ID запроса */
request_id: string;
/** HTTP статус-код */
status: number;
/** Заголовок ошибки */
title: string;
}
export interface StatInterval {
/** Период */
interval: {
/** Начало периода */
begin?: string;
/** Конец периода */
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;
/** Тип медиакампании: - `1` — размещение по дням - `2` — размещение по просмотрам */
advert_type?: number;
/** Место на странице */
place?: number;
/** Количество просмотров */
views?: number;
/** Количество кликов */
clicks?: number;
/** CR(conversion rate) — это отношение количества заказов к общему количеству посещений медиакампании */
cr?: number;
/** CTR (click-through rate) — показатель кликабельности, отношение числа кликов к количеству показов в рамках медиакампании */
ctr?: number;
/** Время начала размещения */
date_from?: string;
/** Время завершения размещения */
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 = {
/** Дата */
date?: string;
/** Статистика по платформам */
app_type_stats?: {
/** Тип платформы: - `1` — сайт - `32` — Android - `64` — IOS */
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;
/** Тип медиакампании: - `1` — размещение по дням - `2` — размещение по просмотрам */
advert_type?: number;
/** Место на странице */
place?: number;
/** Количество просмотров */
views?: number;
/** Количество кликов */
clicks?: number;
/** CR(conversion rate) — это отношение количества заказов к общему количеству посещений медиакампании */
cr?: number;
/** CTR (click-through rate) — показатель кликабельности, отношение числа кликов к количеству показов в рамках медиакампании */
ctr?: number;
/** Время начала размещения */
date_from?: string;
/** Время завершения размещения */
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 = {
/** Дата */
date?: string;
/** Статистика по платформам */
app_type_stats?: {
/** Тип платформы: - `1` — сайт - `32` — Android - `64` — IOS */
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;
}[];
export interface RequestWithDate {
/** ID кампании */
id: number;
/** Даты, за которые нужно получить информацию */
dates: string[];
}
export interface RequestWithCampaignID {
/** ID кампании */
id: number;
}
export interface RequestWithInterval {
/** ID кампании */
id: number;
/** Временной диапазон, за который необходимо выдать данные */
interval: {
/** Начало запрашиваемого периода */
begin?: string;
/** Конец запрашиваемого периода */
end?: string;
};
}
/**
* Статистка по дням
*/
export type Days = {
/** Дата, за которую представлены данные */
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 = {
/** Дата, за которую предоставлены данные */
date?: string;
/** Артикул WB */
nm?: number;
/** Средняя позиция товара на страницах поисковой выдачи и каталога */
avg_position?: number;
}[];
/**
* Ответ при запросе с interval
*/
export type ResponseWithInterval = {
/** Период */
interval?: {
/** Начало периода */
begin?: string;
/** Конец периода */
end?: string;
};
/** Количество просмотров.
За все дни запрошенного диапазона, по всем артикулам WB и платформам */
views?: number;
/** Количество кликов.
За все дни запрошенного диапазона, по всем артикулам WB и платформам */
clicks?: number;
/** Показатель кликабельности.
Отношение числа кликов к количеству показов. Выражается в процентах.
За все дни запрошенного диапазона, по всем артикулам WB и платформам */
ctr?: number;
/** Средняя стоимость клика, ₽.
За все дни запрошенного диапазона, по всем артикулам WB и платформам */
cpc?: number;
/** Затраты, ₽.
За все дни запрошенного диапазона, по всем артикулам WB и платформам */
sum?: number;
/** Количество добавлений товаров в корзину.
За все дни запрошенного диапазона, по всем артикулам WB и платформам */
atbs?: number;
/** Количество заказов.
За все дни запрошенного диапазона, по всем артикулам WB и платформам */
orders?: number;
/** CR(conversion rate) — это отношение количества заказов к общему количеству посещений кампании.
За все дни запрошенного диапазона, по всем артикулам WB и платформам */
cr?: number;
/** Количество заказанных товаров, шт.
За все дни запрошенного диапазона, по всем артикулам WB и платформам */
shks?: number;
/** Заказов на сумму, ₽
За все дни запрошенного диапазона, по всем артикулам WB и платформам */
sum_price?: number;
days?: Days;
boosterStats?: BoosterStats;
/** ID кампании */
advertId?: number;
}[];
/**
* Ответ при запросе с dates
*/
export type ResponseWithDate = {
/** Даты, за которые нужно получить информацию */
dates?: string[];
/** Количество просмотров.
За все дни, по всем артикулам WB и платформам */
views?: number;
/** Количество кликов.
За все дни, по всем артикулам WB и платформам */
clicks?: number;
/** Показатель кликабельности.
Отношение числа кликов к количеству показов. Выражается в процентах
За все дни, по всем артикулам WB и платформам
*/
ctr?: number;
/** Средняя стоимость клика, ₽.
За все дни, по всем артикулам WB и платформам */
cpc?: number;
/** Затраты, ₽.
За все дни, по всем артикулам WB и платформам */
sum?: number;
/** Количество добавлений товаров в корзину.
За все дни, по всем артикулам WB и платформам */
atbs?: number;
/** Количество заказов.
За все дни, по всем артикулам WB и платформам */
orders?: number;
/** CR(conversion rate) — это отношение количества заказов к общему количеству посещений кампании.
За все дни, по всем артикулам WB и платформам */
cr?: number;
/** Количество заказанных товаров, шт.
За все дни, по всем артикулам WB и платформам */
shks?: number;
/** Заказов на сумму, ₽.
За все дни, по всем артикулам WB и платформам */
sum_price?: number;
days?: Days;
boosterStats?: BoosterStats;
/** ID кампании */
advertId?: number;
}[];
export interface ErrorResponse {
type: string;
message: string;
}
/**
* Статистика по кампаниям за период, указанный в запросе. По всем артикулам WB и платформам
*/
export type ResponseFullStats = FullStatsItem[];
/**
* Статистика по одной кампании за период, указанный в запросе. По всем артикулам WB и платформам
*/
export interface FullStatsItem {
/** ID кампании */
advertId: number;
/** Количество добавлений товаров в корзину */
atbs: number;
/** Статистика по бустеру */
boosterStats?: BoosterStatsV3;
/** Отмены, шт. */
canceled: number;
/** Количество кликов */
clicks: number;
/** Средняя стоимость клика, ₽ */
cpc: number;
/** CR (conversion rate) — отношение количества заказов к общему количеству кликов */
cr: number;
/** CTR (click-through rate) — отношение числа кликов к количеству показов в процентах */
ctr: number;
/** Статистика с разбивкой по дням */
days: DaysV3;
/** Количество заказов */
orders: number;
/** Количество заказанных товаров, шт. */
shks: number;
/** Затраты, ₽ */
sum: number;
/** Сумма заказов, ₽ */
sum_price: number;
/** Количество просмотров */
views: number;
/**
* Валюта [кабинета продавца](https://cmp.wildberries.ru/campaigns/finances) (ISO 4217, напр. 'RUB').
* @since task-170
*/
currency?: string;
}
/**
* Статистка по дням (V3)
*/
export type DaysV3 = DaysV3Item[];
/**
* Элемент статистики по дням (V3)
*/
export interface DaysV3Item {
/** Дата, за которую представлены данные */
date: string;
/** Количество просмотров */
views: number;
/** Количество кликов */
clicks: number;
/** CTR (click-through rate) — отношение числа кликов к количеству показов в процентах */
ctr: number;
/** Средняя стоимость клика, ₽ */
cpc: number;
/** Затраты, ₽ */
sum: number;
/** Количество добавлений товаров в корзину */
atbs: number;
/** Количество заказов */
orders: number;
/** CR (conversion rate) — отношение количества заказов к общему количеству посещений кампании */
cr: number;
/** Количество заказанных товаров, шт. */
shks: number;
/** Заказов на сумму, ₽ */
sum_price: number;
/** Отмены, шт. */
canceled: number;
/** Блок информации о платформе */
apps: DaysV3AppItem[];
}
/**
* Элемент статистики по платформе (V3)
*/
export interface DaysV3AppItem {
/** Тип платформы: 1 — сайт, 32 — Android, 64 — IOS */
appType: 1 | 32 | 64;
/** Количество просмотров */
views: number;
/** Количество кликов */
clicks: number;
/** CTR (click-through rate) — отношение числа кликов к количеству показов в процентах */
ctr: number;
/** Средняя стоимость клика, ₽ */
cpc: number;
/** Затраты, ₽ */
sum: number;
/** Количество добавлений товаров в корзину */
atbs: number;
/** Количество заказов */
orders: number;
/** CR (conversion rate) — отношение количества заказов к общему количеству кликов */
cr: number;
/** Количество заказанных товаров, шт. */
shks: number;
/** Заказов на сумму, ₽ */
sum_price: number;
/** Отмены, шт. */
canceled: number;
/** Блок статистики по артикулам WB */
nms: DaysV3NmItem[];
}
/**
* Элемент статистики по артикулу WB (V3)
*/
export interface DaysV3NmItem {
/** Артикул WB */
nmId: number;
/** Название товара */
name: string;
/** Количество просмотров */
views: number;
/** Количество кликов */
clicks: number;
/** CTR (click-through rate) — отношение числа кликов к количеству показов в процентах */
ctr: number;
/** Средняя стоимость клика, ₽ */
cpc: number;
/** Затраты, ₽ */
sum: number;
/** Количество добавлений товаров в корзину */
atbs: number;
/** Количество заказов */
orders: number;
/** CR (conversion rate) — отношение количества заказов к общему количеству кликов */
cr: number;
/** Количество заказанных товаров, шт. */
shks: number;
/** Заказов на сумму, ₽ */
sum_price: number;
/** Отмены, шт. */
canceled: number;
}
/**
* Статистика по средней позиции товара (для кампаний с единой ставкой) (V3)
*/
export type BoosterStatsV3 = BoosterStatsV3Item[];
/**
* Элемент статистики по средней позиции товара (V3)
*/
export interface BoosterStatsV3Item {
/** Дата, за которую предоставлены данные */
date: string;
/** Артикул WB */
nm: number;
/** Средняя позиция товара */
avg_position: number;
}
/**
* Запрос статистики по поисковым кластерам
*/
export interface V0GetNormQueryStatsRequest {
/** Дата начала периода */
from: string;
/** Дата окончания периода */
to: string;
/** Массив элементов запроса (макс. 100) */
items: V0GetNormQueryStatsRequestItem[];
}
/**
* Элемент запроса статистики по поисковым кластерам
*/
export interface V0GetNormQueryStatsRequestItem {
/** ID кампании */
advert_id: number;
/** Артикул WB */
nm_id: number;
}
/**
* Статистика по поисковым кластерам
*/
export interface V0GetNormQueryStatsResponse {
/** Статистика */
stats: V0GetNormQueryStatsItem[];
}
/**
* Элемент статистики по поисковым кластерам
*/
export interface V0GetNormQueryStatsItem {
/** ID кампании */
advert_id: number;
/** Артикул WB */
nm_id: number;
/** Статистика по поисковым кластерам */
stats?: V0GetNormQueryStatsItemStat[];
}
/**
* Статистика по конкретному поисковому кластеру
*/
export interface V0GetNormQueryStatsItemStat {
/** Поисковый кластер */
norm_query?: string;
/** Количество просмотров (отсутствует для cpc-кампаний) */
views?: number;
/** Количество кликов */
clicks?: number;
/** Количество добавлений товаров в корзину */
atbs?: number;
/** Количество заказов */
orders?: number;
/** Кликабельность — отношение числа кликов к количеству показов, % (отсутствует для cpc-кампаний) */
ctr?: number;
/** Стоимость одного клика, ₽ */
cpc?: number;
/** Средняя стоимость за тысячу показов, ₽ (отсутствует для cpc-кампаний) */
cpm?: number;
/** Средняя позиция товара на страницах поисковой выдачи */
avg_pos?: number;
/** Количество заказанных товаров, шт. */
shks?: number;
/** Затраты на продвижение товара в конкретном поисковом кластере кампании */
spend?: number;
/**
* Валюта [кабинета продавца](https://cmp.wildberries.ru/campaigns/finances) (ISO 4217, напр. 'RUB').
* @since task-170
*/
currency?: string;
}
/**
* Запрос списка активных и неактивных поисковых кластеров (v0)
*
* POST /adv/v0/normquery/list — возвращает списки активных и неактивных
* поисковых кластеров с количеством просмотров от 100.
*/
export interface V0GetNormQueryListRequest {
/** Массив элементов запроса (макс. 100) */
items: V0GetNormQueryListRequestItem[];
}
/**
* Элемент запроса списка поисковых кластеров
*/
export interface V0GetNormQueryListRequestItem {
/** ID кампании */
advertId: number;
/** Артикул WB */
nmId: number;
}
/**
* Ответ со списком активных и неактивных поисковых кластеров (v0)
*/
export interface V0GetNormQueryListResponse {
/** Список поисковых кластеров по кампаниям и артикулам (может быть null) */
items?: (V0GetNormQueryListResponseItem | null)[] | null;
}
/**
* Элемент ответа со списком поисковых кластеров
*/
export interface V0GetNormQueryListResponseItem {
/** ID кампании */
advertId?: number;
/** Артикул WB */
nmId?: number;
/** Поисковые кластеры (активные и исключённые) */
normQueries?: V0GetNormQueryListResponseItemNormQueries;
}
/**
* Активные и исключённые поисковые кластеры
*/
export interface V0GetNormQueryListResponseItemNormQueries {
/** Активные поисковые кластеры (может быть null) */
active?: string[] | null;
/** Неактивные поисковые кластеры (может быть null) */
excluded?: string[] | null;
}
/**
* Запрос ежедневной статистики по поисковым кластерам (v1)
*
* POST /adv/v1/normquery/stats — возвращает статистику (просмотры, клики,
* добавления в корзину, заказы, CTR, CPC, CPM и т.д.) по поисковым кластерам
* за указанный период с детализацией по дням. Применимо для кампаний с моделью
* оплаты `cpm` (за показы) и `cpc` (за клики).
*
* V1-преемник метода {@link V0GetNormQueryStatsRequest} (`/adv/v0/normquery/stats`).
*/
export interface V1GetNormQueryStatsRequest {
/** Дата начала периода (YYYY-MM-DD) */
from: string;
/** Дата окончания периода (YYYY-MM-DD) */
to: string;
/** Массив элементов запроса (макс. 100) */
items: V1GetNormQueryStatsRequestItem[];
}
/**
* Элемент запроса ежедневной статистики по поисковым кластерам
*/
export interface V1GetNormQueryStatsRequestItem {
/** ID кампании */
advertId: number;
/** Артикул WB */
nmId: number;
}
/**
* Ответ с ежедневной статистикой по поисковым кластерам (v1)
*/
export interface V1GetNormQueryStatsResponse {
/** Статистика по кампаниям и артикулам */
items: V1GetNormQueryStatsResponseItem[];
}
/**
* Элемент ответа с ежедневной статистикой
*/
export interface V1GetNormQueryStatsResponseItem {
/** ID кампании */
advertId: number;
/** Артикул WB */
nmId: number;
/** Детализация статистики по дням */
dailyStats: V1GetNormQueryStatsResponseItemDailyStat[];
}
/**
* Статистика за конкретный день
*/
export interface V1GetNormQueryStatsResponseItemDailyStat {
/** Дата */
date: string;
/** Статистика по поисковому кластеру */
stat: V1GetNormQueryStatsResponseItemStat;
}
/**
* Статистика по конкретному поисковому кластеру (v1)
*/
export interface V1GetNormQueryStatsResponseItemStat {
/** Поисковый кластер */
normQuery?: string;
/** Количество добавлений товаров в корзину */
atbs?: number;
/** Средняя позиция товара на страницах поисковой выдачи */
avgPos?: number;
/** Количество кликов */
clicks?: number;
/** Стоимость одного клика, в базовых единицах валюты кабинета продавца */
cpc?: number;
/** Средняя стоимость за тысячу показов, в базовых единицах валюты кабинета продавца (null для cpc-кампаний) */
cpm?: number;
/** Кликабельность — отношение числа кликов к количеству показов, % (null для cpc-кампаний) */
ctr?: number;
/** Количество заказов */
orders?: number;
/** Количество заказанных товаров, шт. */
shks?: number;
/** Затраты на продвижение товара в конкретном поисковом кластере кампании */
spend?: number;
/** Количество просмотров (null для cpc-кампаний) */
views?: number;
}
/**
* Запрос на установку ставок для поисковых кластеров
*/
export interface V0SetNormQueryBidsRequest {
/** Массив ставок (макс. 100) */
bids: V0SetNormQueryBidsRequestItem[];
}
/**
* Элемент запроса на установку ставки
*/
export interface V0SetNormQueryBidsRequestItem {
/** ID кампании */
advert_id: number;
/** Артикул WB */
nm_id: number;
/** Поисковый кластер */
norm_query: string;
/** Ставка за тысячу показов, ₽ */
bid: number;
}
/**
* Запрос на получение ставок поисковых кластеров
*/
export interface V0GetNormQueryBidsRequest {
/** Массив элементов запроса (макс. 100) */
items: V0GetNormQueryBidsRequestItem[];
}
/**
* Элемент запроса на получение ставок
*/
export interface V0GetNormQueryBidsRequestItem {
/** ID кампании */
advert_id: number;
/** Артикул WB */
nm_id: number;
}
/**
* Ответ со списком ставок поисковых кластеров
*/
export interface V0GetNormQueryBidsResponse {
/** Массив ставок */
bids: V0GetNormQueryBidsItem[];
}
/**
* Элемент ставки поискового кластера
*/
export interface V0GetNormQueryBidsItem {
/** ID кампании */
advert_id: number;
/** Артикул WB */
nm_id: number;
/** Поисковый кластер */
norm_query: string;
/** Текущая ставка за тысячу показов, ₽ */
bid: number;
/**
* Текущая ставка в минорных единцах валюты — 0.01 базовой единицы
* [валюты кабинета продавца](https://cmp.wildberries.ru/campaigns/finances) за тысячу показов.
* @since task-170
*/
bid_kopecks?: number;
/**
* Идентификатор ставки в минорных единицах валюты (0.01 базовой единицы за тысячу показов).
* Отличается от `bid_kopecks` — это отдельное поле идентификатора ставки.
* @since task-170
*/
id_kopecks?: number;
/**
* Валюта [кабинета продавца](https://cmp.wildberries.ru/campaigns/finances) (ISO 4217, напр. 'RUB').
* @since task-170
*/
currency?: string;
}
/**
* Запрос на установку/удаление минус-фраз
*/
export interface V0SetMinusNormQueryRequest {
/** ID кампании */
advert_id: number;
/** Артикул WB */
nm_id: number;
/** Поисковые кластеры (минус-фразы, макс. 1000). Пустой массив удаляет все минус-фразы */
norm_queries: string[];
}
/**
* Запрос на получение минус-фраз
*/
export interface V0GetNormQueryMinusRequest {
/** Массив элементов запроса (макс. 100) */
items: V0GetNormQueryMinusRequestItem[];
}
/**
* Элемент запроса на получение минус-фраз
*/
export interface V0GetNormQueryMinusRequestItem {
/** ID кампании */
advert_id: number;
/** Артикул WB */
nm_id: number;
}
/**
* Ответ со списком минус-фраз
*/
export interface V0GetNormQueryMinusResponse {
/** Массив элементов */
items: V0GetNormQueryMinusResponseItem[];
}
/**
* Элемент ответа со списком минус-фраз
*/
export interface V0GetNormQueryMinusResponseItem {
/** ID кампании */
advert_id: number;
/** Артикул WB */
nm_id: number;
/** Список минус-фраз */
norm_queries?: string[];
}
/**
* Ставки в копейках для поиска и рекомендаций.
* Ставка в копейках (например, 250 = 2.50 RUB)
*/
export interface BidsKopecks {
/**
* Ставка для поиска в копейках.
* Например, 1100 = 11.00 RUB
*/
search: number;
/**
* Ставка для рекомендаций в копейках.
* Например, 2500 = 25.00 RUB
*/
recommendations: number;
}
/**
* Предмет/категория товара
*/
export interface Subject {
/** ID предмета */
id: number;
/** Название предмета */
name: string;
}
/**
* Настройки артикула для V2 API.
* Использует ставки в копейках (bids_kopecks) вместо устаревшего bid.
*/
export interface NmSettingV2 {
/**
* Ставки в копейках.
* Ставка в копейках (например, 250 = 2.50 RUB)
*/
bids_kopecks: BidsKopecks;
/** Артикул WB */
nm_id: number;
/** Предмет/категория */
subject: Subject;
}
/**
* Временные метки кампании
*/
export interface AdvertTimestamps {
/** Время создания кампании */
created: string;
/** Время последнего изменения кампании */
updated: string;
/** Время последнего запуска кампании (null если не запускалась) */
started: string | null;
/** Время удаления кампании. Если кампания не удалена, время указывается в будущем */
deleted: string;
}
/**
* Настройки кампании
*/
export interface AdvertSettings {
/** Тип оплаты: cpm — за показы, cpc — за клик */
payment_type: 'cpm' | 'cpc';
/** Название кампании */
name: string;
/** Места размещения */
placements: AdvertPlacements;
}
/**
* Места размещения кампании
*/
export interface AdvertPlacements {
/** Размещение в поиске */
search: boolean;
/** Размещение в рекомендациях */
recommendations: boolean;
}
/**
* Информация о кампании из V2 API.
* Использует bid_type: 'unified' | 'manual' и ставки в копейках.
*/
export interface AdvertV2 {
/**
* Тип ставки:
* - `unified` — единая ставка (Type 8; ставкой управляет WB)
* - `manual` — ручная ставка (Type 9)
*/
bid_type: BidType;
/** ID кампании */
id: number;
/** Настройки артикулов (с ставками в копейках) */
nm_settings: NmSettingV2[];
/** Настройки кампании */
settings: AdvertSettings;
/**
* Статус кампании:
* - `-1` — удалена
* - `4` — готова к запуску
* - `7` — завершена
* - `8` — отменена
* - `9` — активна
* - `11` — на паузе
*/
status: -1 | 4 | 7 | 8 | 9 | 11;
/** Временные метки */
timestamps: AdvertTimestamps;
/**
* Валюта [кабинета продавца](https://cmp.wildberries.ru/campaigns/finances) (ISO 4217, напр. 'RUB').
* @since task-170
*/
currency?: string;
}
/**
* Ответ метода getAdvertsV2 (GET /adv/v2/adverts).
* Содержит список кампаний с типизированным bid_type и ставками в копейках.
*/
export interface GetAdvertsV2Response {
/** Список кампаний */
adverts: AdvertV2[];
}
/**
* Данные ответа списка акций
*/
export interface PromotionsListResponseData {
/** Список акций */
promotions: PromotionItem[];
}
/**
* Элемент акции
*/
export interface PromotionItem {
/** ID акции */
id: number;
/** Название акции */
name: string;
/** Начало акции */
startDateTime: string;
/** Конец акции */
endDateTime: string;
/** Тип акции: regular — акция, auto — автоакция */
type: 'regular' | 'auto';
}
/**
* Детальная информация об акции
*/
export interface PromotionDetailItem {
/** ID акции */
id: number;
/** Название акции */
name: string;
/** Описание акции */
description?: string;
/** Преимущества акции */
advantages?: string[];
/** Начало акции */
startDateTime: string;
/** Конец акции */
endDateTime: string;
/** Количество товаров с остатками, участвующих в акции */
inPromoActionLeftovers?: number;
/** Общее количество товаров, участвующих в акции */
inPromoActionTotal?: number;
/** Количество товаров с остатками, не участвующих в акции */
notInPromoActionLeftovers?: number;
/** Общее количество товаров, не участвующих в акции */
notInPromoActionTotal?: number;
/** Уже участвующие в акции товары, % */
participationPercentage?: number;
/** Тип акции: regular — акция, auto — автоакция */
type: 'regular' | 'auto';
/** Количество товаров, исключенных из автоакции до её старта */
exceptionProductsCount?: number;
/** Ранжирование (если подключено) */
ranging?: PromotionRangingItem[];
}
/**
* Элемент ранжирования
*/
export interface PromotionRangingItem {
/** Тип ранжирования */
condition: 'productsInPromotion' | 'calculateProducts' | 'allProducts';
/** Количество товаров продавца для перехода на следующий уровень ранжирования, % */
participationRate: number;
/** Текущий уровень поднятия в поиске, % */
boost: number;
}
/**
* Запрос на добавление товаров в акцию
*/
export interface PromotionSupplierTaskRequestData {
/** ID акции */
promotionID: number;
/** Установить скидку: true — сейчас, false — в момент старта акции */
uploadNow: boolean;
/** Артикулы WB, которые можно добавить в акцию (макс. 1000) */
nomenclatures: number[];
}
/**
* Ответ на запрос добавления товаров в акцию
*/
export interface PromotionUploadResponseData {
/** Загрузка с такими данными уже существует */
alreadyExists: boolean;
/** ID загрузки */
uploadID: number;
}
/**
* Ответ статистики по кластерам фраз для кампании с единой ставкой
*/
export interface AutoStatWordsResponse {
/** Исключения (минус-фразы) для товаров из кампании */
excluded?: string[];
/** Кластеры ключевых фраз */
clusters?: AutoStatWordsCluster[];
}
/**
* Кластер ключевых фраз
*/
export interface AutoStatWordsCluster {
/** Кластер — набор похожих ключевых фраз */
cluster: string;
/** Сколько раз товары показывались по всем фразам из кластера */
count: number;
/** Ключевые фразы из кластера, по которым товары показывались хотя бы один раз */
keywords: string[];
}
/**
* Ответ статистики по ключевым фразам для кампании с ручной ставкой
*/
export interface ManualStatWordsResponse {
/** Блок информации по ключевым фразам */
words?: ManualStatWordsInfo;
/** Массив информации по статистике */
stat?: ManualStatWordsStatItem[];
}
/**
* Информация по ключевым фразам
*/
export interface ManualStatWordsInfo {
/** Фразовое соответствие (минус фразы) */
phrase?: string[];
/** Точное соответствие (минус фразы) */
strong?: string[];
/** Минус фразы из поиска */
excluded?: string[];
/** Фиксированные фразы */
pluse?: string[];
/** Блок со статистикой по ключевым фразам */
keywords?: ManualStatWordsKeyword[];
/** Фиксированные ключевые фразы включены */
fixed?: boolean;
}
/**
* Статистика по ключевой фразе
*/
export interface ManualStatWordsKeyword {
/** Ключевая фраза */
keyword: string;
/** Количество просмотров по ключевой фразе */
count: number;
}
/**
* Элемент статистики
*/
export interface ManualStatWordsStatItem {
/** ID кампании в системе WB */
advertId?: number;
/** Ключевая фраза */
keyword?: string;
/** Поле перманентно отключено */
advertName?: string;
/** Название кампании */
campaignName?: string;
/** Дата запуска кампании */
begin?: string;
/** Дата завершения кампании */
end?: string;
/** Количество просмотров */
views?: number;
/** Количество кликов */
clicks?: number;
/** Частота — отношение количества просмотров к количеству уникальных пользователей */
frq?: number;
/** Кликабельность — отношение числа кликов к количеству показов, % */
ctr?: number;
/** Стоимость клика, ₽ */
cpc?: number;
/** Длительность кампании, в секундах */
duration?: number;
/** Затраты, ₽ */
sum?: number;
}
/**
* Ошибка
*/
export interface FullStatsError {
/** Детали ошибки */
detail: string;
/** ID внутреннего сервиса WB */
origin: string;
/** ID запроса */
request_id: string;
/** HTTP статус-код */
status: number;
/** Заголовок ошибки */
title: string;
}
/**
* Campaign list item in count response
*/
export interface CampaignListItem {
/** Campaign ID */
advertId: number;
/** Last change date/time */
changeTime: string;
}
/**
* Campaign group by type/status in count response
*/
export interface CampaignGroup {
/** Campaign type: 8 - unified bid (deprecated), 9 - manual/unified bid */
type: 8 | 9;
/** Campaign status: -1, 4, 7, 8, 9, 11 */
status: -1 | 4 | 7 | 8 | 9 | 11;
/** Number of campaigns in this group */
count: number;
/** List of campaigns */
advert_list: CampaignListItem[];
}
/**
* Response from campaign count endpoint
*/
export interface GetCampaignCountResponse {
/** Campaign groups by type/status */
adverts: CampaignGroup[] | null;
/** Total number of campaigns */
all: number;
}
/**
* Bid type for campaign (per WB OpenAPI etalon `08-promotion.yaml` enum).
* - `unified` — единая ставка (Type 8; ставкой управляет WB).
* - `manual` — ручная ставка (Type 9; ставку задаёт продавец).
*
* NOTE: an earlier SDK version used `'auto'` for the unified/Type-8 value — that
* was incorrect. WB's spec and the live API use `'unified'` (and never `'auto'`):
* a prod probe returned 118 `unified` + 154 `manual` campaigns, 0 `auto`.
*
* {@link PromotionModule.updateBids} применяется к кампаниям `unified` (единая) и
* `manual` (ручная).
*/
export type BidType = 'manual' | 'unified';
/**
* Campaign placement types (per WB OpenAPI etalon `PlacementType` enum).
* - `combined` — search and recommendation
* - `search` — search only
* - `recommendation` — recommendation only (singular)
*
* Note: this is distinct from the bid `placement` field
* (`UpdateBidsArticle.placement` = `'search' | 'recommendations' | 'combined'`,
* plural `'recommendations'`), which is used by `updateBids`.
*/
export type CampaignPlacementType = 'combined' | 'search' | 'recommendation';
/**
* Request to create a campaign
*/
export interface CreateCampaignRequest {
/** Campaign name */
name: string;
/** WB article IDs (nmId), max 50 */
nms: number[];
/** Bid type: manual or unified */
bid_type?: BidType;
/** Payment type: cpm or cpc */
payment_type?: 'cpm' | 'cpc';
/** Placement types (only for manual bid campaigns) */
placement_types?: CampaignPlacementType[];
}
/**
* Subject item for campaigns
*/
export interface SupplierSubject {
/** Subject ID */
id: number;
/** Subject name */
name: string;
/** Number of WB articles (nmId) with this subject */
count: number;
}
/**
* Parameters for getting supplier subjects
*/
export interface GetSupplierSubjectsParams {
/** Payment type: cpm or cpc */
payment_type?: 'cpm' | 'cpc';
}
/**
* Product card item for campaigns
*/
export interface SupplierNmItem {
/** Product title */
title: string;
/** WB article (nmId) */
nm: number;
/** Subject ID */
subjectId: number;
}
/**
* Error response for campaign control operations
*/
export interface CampaignControlError {
/** Error message */
error?: string;
}
/**
* Campaign 400 error response
*/
export interface Campaign400Response {
/** Error details */
detail?: string;
/** Internal service name */
origin?: string;
/** Request ID */
request_id?: string;
/** HTTP status code */
status?: number;
/** Error title */
title?: string;
}
/**
* Request for updating bids in campaigns (V1 API)
*
Description: Uses bid_kopecks instead of bid for ставки в копейках.
* Max 50 campaigns, max 50 articles per campaign.
*/
export interface UpdateBidsRequest {
/**
* Bids in campaigns
* Max items: 50
*/
bids: UpdateBidsCampaign[];
}
/**
* Campaign bid configuration
*/
export interface UpdateBidsCampaign {
/** Campaign ID */
advert_id: number;
/**
* Article bids in kopecks
* Max items: 50
*/
nm_bids: UpdateBidsArticle[];
}
/**
* Article bid configuration in kopecks
*/
export interface UpdateBidsArticle {
/** WB Article ID (nm_id) */
nm_id: number;
/**
* Bid amount in KOPECKS (not rubles!)
*
* Ставка в копейках. Пример: 250 = 2.50 RUB
*
* Conversion examples:
* - 1.00 RUB = 100 kopecks
* - 2.50 RUB = 250 kopecks
* - 15.00 RUB = 1500 kopecks
*/
bid_kopecks: number;
/**
* Placement type:
* - "search" - for search placement (manual bidding campaigns)
* - "recommendations" - for recommendations placement (manual bidding campaigns)
* - "combined" - for both search and recommendations (unified bidding campaigns)
*/
placement: 'search' | 'recommendations' | 'combined';
}
/**
* Response from updateBids (V1 API)
*/
export interface UpdateBidsResponse {
/** Results of bid updates */
bids: UpdateBidsResultCampaign[];
/**
* Валюта [кабинета продавца](https://cmp.wildberries.ru/campaigns/finances) (ISO 4217, напр. 'RUB').
* @since task-170
*/
currency?: string;
}
/**
* Result of bid update for a campaign
*/
export interface UpdateBidsResultCampaign {
/** Campaign ID */
advert_id: number;
/** Updated bids */
nm_bids: UpdateBidsResultArticle[];
}
/**
* Result of bid update for an article
*/
export interface UpdateBidsResultArticle {
/** WB Article ID */
nm_id: number;
/** Updated bid in kopecks */
bid_kopecks: number;
/** Placement where bid was applied */
placement: 'search' | 'recommendations' | 'combined';
}
/**
* Ответ метода GET /api/advert/v1/config — конфигурация кабинета продвижения.
*
* Возвращает валюту, код валюты [кабинета продавца](https://cmp.wildberries.ru/campaigns/finances)
* и допустимые шаги ставок для метода POST /api/advert/v1/normquery/bids.
*
* @since task-170
*/
export interface V2GetConfigResponse {
/**
* Валюта [кабинета продавца](https://cmp.wildberries.ru/campaigns/finances) (ISO 4217, напр. 'RUB').
*/
currency: string;
/**
* Код валюты [кабинета продавца](https://cmp.wildberries.ru/campaigns/finances)
* (напр. 860 для UZS).
*/
currencyCode: number;
/**
* Шаг ставки в минорных единицах валюты — 0.01 базовой единицы валюты кабинета
* — для CPM-кампаний (за показы).
*/
cpmStep: number;
/**
* Шаг ставки в минорных единицах валюты — 0.01 базовой единицы валюты кабинета
* — для CPC-кампаний (за клики).
*/
cpcStep: number;
}
/**
* Элемент запроса на установку ставки для поискового кластера (V1, валюта кабинета).
*
* @since task-170
*/
export interface V1SetNormQueryBidsRequestItem {
/** ID кампании */
advertId: number;
/** Артикул WB */
nmId: number;
/** Поисковый кластер — группа похожих поисковых запросов */
normQuery: string;
/**
* Ставка в минорных единицах валюты — 0.01 базовой единицы
* [валюты кабинета продавца](https://cmp.wildberries.ru/campaigns/finances).
* Допустимый шаг ставки возвращается методом GET /api/advert/v1/config.
*/
bidMinorUnits: number;
}
/**
* Запрос на установку ставок для поисковых кластеров (V1, валюта кабинета).
*
* @since task-170
*/
export interface V1SetNormQueryBidsRequest {
/** Массив ставок (макс. 100) */
bids: V1SetNormQueryBidsRequestItem[];
}
/**
* Успешно обработанный элемент ставки (V1).
*
* @since task-170
*/
export interface V1SetNormQueryBidsSuccessItem {
/** ID кампании */
advertId: number;
/** Артикул WB */
nmId: number;
/** Поисковый кластер — группа похожих поисковых запросов */
normQuery: string;
/**
* Валюта [кабинета продавца](https://cmp.wildberries.ru/campaigns/finances) (ISO 4217, напр. 'RUB').
*/
currency: string;
}
/**
* Элемент с причиной отклонения ставки (V1).
*
* @since task-170
*/
export interface V1SetNormQueryBidsFailItem {
/** ID кампании */
advertId: number;
/** Артикул WB */
nmId: number;
/** Поисковый кластер — группа похожих поисковых запросов */
normQuery: string;
/** Описание причины ошибки */
reason: string;
}
/**
* Ответ метода POST /api/advert/v1/normquery/bids (V1, валюта кабинета).
*
* @since task-170
*/
export interface V1SetNormQueryBidsResponse {
/** Успешно обработанные ставки */
success: V1SetNormQueryBidsSuccessItem[];
/** Отклонённые ставки с указанием причины */
failed: V1SetNormQueryBidsFailItem[];
}
/**
* Request for adding/removing products from campaigns
*
Description: Only for Type 9 campaigns.
* Max 20 campaigns, max 50 products per campaign.
*/
export interface UpdateCampaignProductsRequest {
/**
* Campaigns to update
* Max items: 20
*/
campaigns: CampaignProductsUpdate[];
}
/**
* Single campaign update item
*/
export interface CampaignProductsUpdate {
/** Campaign ID */
advert_id: number;
/**
* WB article IDs to add
* For added products, the current minimum bid is set.
* Max items: 50
*/
add_nms?: number[];
/**
* WB article IDs to delete
* Max items: 50
*/
delete_nms?: number[];
}
/**
* Response from updateCampaignProducts
*/
export interface UpdateCampaignProductsResponse {
/** Results of product updates */
nms: CampaignProductsResult[];
}
/**
* Result for a single campaign update
*/
export interface CampaignProductsResult {
/** Campaign ID */
advert_id: number;
/** Product cards result */
nms: {
/** Successfully added product cards */
added: number[];
/** Successfully deleted product cards */
deleted: number[];
};
}
/**
* Request to get minus phrases for campaigns
*/
export interface GetMinusPhrasesRequest {
/** Array of campaign/product items (max 100) */
items: GetMinusPhrasesRequestItem[];
}
/**
* Item in get minus phrases request
*/
export interface GetMinusPhrasesRequestItem {
/** Campaign ID */
advert_id: number;
/**
* WB Article ID
* - Type 8 campaigns: use nm_id=0 for campaign-wide settings
* - Type 9 campaigns: use actual WB article ID
*/
nm_id: number;
}
/**
* Response with minus phrases
*/
export interface GetMinusPhrasesResponse {
/** Array of items with minus phrases */
items: GetMinusPhrasesResponseItem[];
}
/**
* Item in get minus phrases response
*/
export interface GetMinusPhrasesResponseItem {
/** Campaign ID */
advert_id: number;
/** WB Article ID */
nm_id: number;
/** List of minus phrases (may be empty or undefined) */
norm_queries?: string[];
}
/**
* Request to set minus phrases for a campaign
* WARNING: Sending an empty norm_queries array REMOVES ALL minus phrases!
*/
export interface SetMinusPhrasesRequest {
/** Campaign ID */
advert_id: number;
/**
* WB Article ID
* - Type 8 campaigns: use nm_id=0 for campaign-wide settings
* - Type 9 campaigns: use actual WB article ID
*/
nm_id: number;
/**
* Minus phrases (max 1000)
* WARNING: Empty array removes ALL minus phrases!
*/
norm_queries: string[];
}
/**
* Request to get search cluster statistics
*/
export interface GetSearchClusterStatsRequest {
/** Start date in YYYY-MM-DD format */
from: string;
/** End date in YYYY-MM-DD format */
to: string;
/** Array of campaign/product items (max 100) */
items: GetSearchClusterStatsRequestItem[];
}
/**
* Item in search cluster stats request
*/
export interface GetSearchClusterStatsRequestItem {
/** Campaign ID */
advert_id: number;
/**
* WB Article ID
* - Type 8 campaigns: use nm_id=0 for aggregate statistics
* - Type 9 campaigns: use actual WB article ID
*/
nm_id: number;
}
/**
* Response with search cluster statistics
*/
export interface GetSearchClusterStatsResponse {
/** Array of statistics per campaign/product */
stats: GetSearchClusterStatsItem[];
}
/**
* Statistics item for a campaign/product
*/
export interface GetSearchClusterStatsItem {
/** Campaign ID */
advert_id: number;
/** WB Article ID */
nm_id: number;
/** Array of statistics per search cluster */
stats: SearchClusterStatEntry[];
}
/**
* Statistics entry for a single search cluster
*/
export interface SearchClusterStatEntry {
/** Search cluster (normalized query) */
norm_query: string;
/** Number of views */
views: number;
/** Number of clicks */
clicks: number;
/** Number of add-to-basket actions */
atbs: number;
/** Number of orders */
orders: number;
/** Click-through rate (%) */
ctr: number;
/** Cost per click (RUB) */
cpc: number;
/** Cost per mille - cost per 1000 impressions (RUB) */
cpm: number;
/** Average position on search results page */
avg_pos: number;
/** Количество заказанных товаров, шт. */
shks?: number;
/** Затраты на продвижение товара в поисковом кластере, ₽ */
spend?: number;
/**
* Валюта [кабинета продавца](https://cmp.wildberries.ru/campaigns/finances) (ISO 4217, напр. 'RUB').
*/
currency?: string;
}
/** Parameters for the bid recommendations endpoint
* @since 3.4.0 */
export interface GetBidsRecommendationsParams {
/** Campaign ID */
advertId: number;
/** WB article ID */
nmId: number;
}
/** Bid value in kopecks */
export interface ReachBid {
/** Bid amount in kopecks */
bidKopecks: number;
/** Minimum allowed bid in kopecks — the floor. Bidding below this triggers WB 400 "wrong bid value". */
bidKopecksMin?: number;
}
/** Recommended bids for a search cluster (norm query) */
export interface NormQueryBidRecommendation {
/** Normalized search query text */
normQuery: string;
/** Bid for maximum reach */
reachMax: ReachBid;
/** Bid for medium reach */
reachMedium: ReachBid;
/** Bid for minimum reach */
reachMin: ReachBid;
}
/** Recommended base bids for the product card */
export interface BaseBidRecommendation {
/** Competitive bid level */
competitiveBid?: ReachBid;
/** Leaders bid level */
leadersBid?: ReachBid;
/** Top-2 position bid level */
top2?: ReachBid;
}
/** Response from GET /api/advert/v0/bids/recommendations
* @since 3.4.0 */
export interface BidsRecommendationsResponse {
/** Campaign ID */
advertId: number;
/** WB article ID */
nmId: number;
/** Recommended base bids for the product card */
base?: BaseBidRecommendation;
/** Recommended bids per search cluster */
normQueries: NormQueryBidRecommendation[];
}
/** Per-item error returned in the `errors` array on partial success (HTTP 200). */
export interface RecommendationError {
/** WB item number that failed. */
nmID: number;
/** Human-readable error reason (e.g. "Товар не найден"). */
error: string;
}
/** A recommended-items assignment for one product card (`/set` request item). */
export interface RecommendationsSetItem {
/** WB item number of the product whose recommendations are being set. */
nmID: number;
/** WB item numbers to display as recommendations for this product.
* Send an empty array to clear the product's recommendations. */
tagsIDs: number[];
}
/** One product's current recommendation assignments (`/list` response entry). */
export interface RecommendationEntry {
/** WB item number (product). */
nmID: number;
/** WB item numbers currently set as recommendations for this product. */
tagsIDs: number[];
}
/** Request body for POST /api/content/v1/recommendations/set — array of per-product assignments. */
export type SetRecommendationsRequest = RecommendationsSetItem[];
/** Response for POST /api/content/v1/recommendations/set.
* `data` is `null`. On PARTIAL success WB still returns HTTP 200 — inspect `errors`. */
export interface SetRecommendationsResponse {
/** Always `null` for the set method. */
data: null;
/** Per-item errors. Populated on partial success (HTTP 200); empty on full success. */
errors: RecommendationError[];
/** Additional error details (structure not documented in samples; `null` when absent). */
additionalErrors: unknown;
}
/** Request filter for POST /api/content/v1/recommendations/list.
* INFERRED shape — verify the exact filter fields against the live spec (AC#9). */
export interface ListRecommendationsRequest {
/** Optional WB item numbers to fetch recommendations for. Omit to list all. */
nmIDs?: number[];
}
/** Response for POST /api/content/v1/recommendations/list — entries in `data`. */
export interface ListRecommendationsResponse {
/** Recommendation entries per product; `null` if empty/unavailable. */
data: RecommendationEntry[] | null;
/** Per-item errors. Populated on partial success (HTTP 200); empty on full success. */
errors: RecommendationError[];
/** Additional error details (structure not documented in samples; `null` when absent). */
additionalErrors: unknown;
}
//# sourceMappingURL=promotion.types.d.ts.map