import { BaseClient } from '../../client/base-client';
import { ChatsResponse, EventsResponse, MessageResponse, PinnedReviewsCountParams, PinnedReviewsCountResponse, PinnedReviewsCreateRequest, PinnedReviewsCreateResponse, PinnedReviewsDeleteRequest, PinnedReviewsDeleteResponse, PinnedReviewsLimitsResponse, PinnedReviewsListParams, PinnedReviewsListResponse, ResponseFeedback, SellerMessageRequest } from '../../types/communications.types';
/** Exported limits for external testability and documentation. @since 3.13.0 */
export declare const COMMUNICATIONS_LIMITS: {
readonly MAX_MESSAGE_LENGTH: 1000;
readonly MAX_TOTAL_FILE_SIZE: number;
readonly MAX_PER_FILE_SIZE: number;
readonly MAX_REPLYSIGN_LENGTH: 255;
};
export declare class CommunicationsModule {
private client;
constructor(client: BaseClient);
/**
* Непросмотренные отзывы и вопросы
*
* Метод проверяет наличие непросмотренных [вопросов](/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions/get) и [отзывов](/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks/get) от покупателей. Если у продавца есть непросмотренные вопросы или отзывы, возвращает `true`.
Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.newFeedbacksQuestions();
console.log(result);
*/
newFeedbacksQuestions(): Promise<{
data?: {
hasNewQuestions?: boolean;
hasNewFeedbacks?: boolean;
};
error?: boolean;
errorText?: string;
additionalErrors?: string[];
}>;
/**
* Неотвеченные вопросы
*
* Метод возвращает общее количество неотвеченных [вопросов](/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions/get) и количество неотвеченных вопросов за сегодня. Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.getQuestionsCountUnanswered();
console.log(result);
*/
getQuestionsCountUnanswered(): Promise<{
data?: {
countUnanswered?: number;
countUnansweredToday?: number;
};
error?: boolean;
errorText?: string;
additionalErrors?: string[];
}>;
/**
* Количество вопросов
*
* Метод возвращает количество отвеченных или неотвеченных [вопросов](/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions/get) за заданный период. Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @param [options] - Query parameters
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.getQuestionsCount({});
console.log(result);
*/
getQuestionsCount(options?: {
dateFrom?: number;
dateTo?: number;
isAnswered?: boolean;
}): Promise<{
data?: number;
error?: boolean;
errorText?: string;
additionalErrors?: string[];
}>;
/**
* Список вопросов
*
* Метод возвращает список вопросов по заданным фильтрам. Вы можете: - получить данные отвеченных и неотвеченных вопросов - сортировать вопросы по дате - настроить пагинацию и количество вопросов в ответе Можно получить максимум 10 000 вопросов в одном ответе
Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @param [options] - Query parameters
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.questions({});
console.log(result);
*/
questions(options?: {
isAnswered: boolean;
nmId?: number;
take: number;
skip: number;
order?: string;
dateFrom?: number;
dateTo?: number;
}): Promise<{
data?: {
countUnanswered?: number;
countArchive?: number;
questions?: {
id?: string;
text?: string;
createdDate?: string;
state?: string;
answer?: {
text?: string;
editable?: boolean;
createDate?: string;
};
productDetails?: {
nmId?: number;
imtId?: number;
productName?: string;
supplierArticle?: string;
supplierName?: string;
brandName?: string;
size?: string;
};
wasViewed?: boolean;
isWarned?: boolean;
}[];
};
error?: boolean;
errorText?: string;
additionalErrors?: string[];
}>;
/**
* Работа с вопросами
*
* В зависимости от тела запроса, метод позволяет: - отметить [вопрос](/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions/get) как просмотренный - отклонить вопрос - ответить на вопрос или отредактировать ответ Отредактировать ответ на вопрос можно 1 раз в течение 60 дней после отправки ответа
Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @param [data] - Request body data
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.updateQuestion({});
console.log(result);
*/
updateQuestion(data?: {
id: string;
wasViewed: boolean;
} | {
id: string;
answer: {
text: string;
};
state: string;
}): Promise<{
data?: Record;
error?: boolean;
errorText?: string;
additionalErrors?: string[];
}>;
/**
* Получить вопрос по ID
*
* Метод возвращает данные [вопроса](/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions/get) по его ID. Далее вы можете [работать с этим вопросом](/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions/patch). Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @param [options] - Query parameters
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.question({});
console.log(result);
*/
question(options?: {
id: string;
}): Promise<{
data?: {
id?: string;
text?: string;
createdDate?: string;
state?: string;
answer?: {
text?: string;
editable?: boolean;
createDate?: string;
};
productDetails?: {
nmId?: number;
imtId?: number;
productName?: string;
supplierArticle?: string;
supplierName?: string;
brandName?: string;
size?: string;
};
wasViewed?: boolean;
isWarned?: boolean;
};
error?: boolean;
errorText?: string;
additionalErrors?: string[];
}>;
/**
* Необработанные отзывы
*
* Метод возвращает: - количество необработанных [отзывов](/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks/get) за сегодня и за всё время - среднюю оценку всех отзывов Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.getFeedbacksCountUnanswered();
console.log(result);
*/
getFeedbacksCountUnanswered(): Promise<{
data?: {
countUnanswered?: number;
countUnansweredToday?: number;
valuation?: string;
};
error?: boolean;
errorText?: string;
additionalErrors?: string[];
}>;
/**
* Количество отзывов
*
* Метод возвращает количество обработанных или необработанных [отзывов](/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks/get) за заданный период. Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @param [options] - Query parameters
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.getFeedbacksCount({});
console.log(result);
*/
getFeedbacksCount(options?: {
dateFrom?: number;
dateTo?: number;
isAnswered?: boolean;
}): Promise<{
data?: number;
error?: boolean;
errorText?: string;
additionalErrors?: string[];
}>;
/**
* Список отзывов
*
* Метод возвращает список отзывов по заданным фильтрам. Вы можете: - получить данные обработанных и необработанных отзывов - сортировать отзывы по дате - настроить пагинацию и количество отзывов в ответе Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @param [options] - Query parameters
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.feedbacks({});
console.log(result);
*/
feedbacks(options?: {
isAnswered: boolean;
nmId?: number;
take: number;
skip: number;
order?: 'dateAsc' | 'dateDesc';
dateFrom?: number;
dateTo?: number;
}): Promise<{
data?: {
countUnanswered?: number;
countArchive?: number;
feedbacks?: ResponseFeedback;
};
error?: boolean;
errorText?: string;
additionalErrors?: string[];
}>;
/**
* Ответить на отзыв
*
* Метод позволяет ответить на [отзыв](/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks/get) покупателя. ID отзыва не валидируется. Если в запросе вы передали некорректный ID, вы не получите ошибку.
Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @param [data] - Request body data
* @returns Response data
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.createFeedbacksAnswer({});
*/
createFeedbacksAnswer(data?: {
id: string;
text: string;
}): Promise;
/**
* Отредактировать ответ на отзыв
*
* Метод позволяет отредактировать уже отправленный [ответ на отзыв](/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks~1answer/post) покупателя.
Отредактировать ответ можно только один раз в течение 60 дней c момента отправки. ID отзыва не валидируется. Если в запросе вы передали некорректный ID, вы не получите ошибку.
Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @param [data] - Request body data
* @returns Response data
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.updateFeedbacksAnswer({});
*/
updateFeedbacksAnswer(data?: {
id: string;
text: string;
}): Promise;
/**
* Возврат товара по ID отзыва
*
* Метод запрашивает возврат товара, по которому оставлен [отзыв](/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks/get).
Возврат доступен для отзывов с полем `"isAbleReturnProductOrders": true`. Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @param data - Request body data
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.createOrderReturn({});
console.log(result);
*/
createOrderReturn(data: {
feedbackId?: string;
}): Promise<{
data?: Record;
error?: boolean;
errorText?: string;
additionalErrors?: string[];
}>;
/**
* Получить отзыв по ID
*
* Метод возвращает данные [отзыва](/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks/get) по его ID. Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @param [options] - Query parameters
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.feedback({});
console.log(result);
*/
feedback(options?: {
id: string;
}): Promise<{
data?: {
id?: string;
userName?: string;
pros?: string;
cons?: string;
matchingSize?: string;
text?: string;
productValuation?: number;
createdDate?: string;
answer?: {
text?: string;
state?: string;
editable?: boolean;
};
state?: string;
productDetails?: {
nmId?: number;
imtId?: number;
productName?: string;
supplierArticle?: string;
supplierName?: string;
brandName?: string;
size?: string;
};
photoLinks?: {
fullSize?: string;
miniSize?: string;
}[];
video?: {
previewImage?: string;
link?: string;
durationSec?: number;
};
wasViewed?: boolean;
isAbleSupplierFeedbackValuation?: boolean;
supplierFeedbackValuation?: number;
isAbleSupplierProductValuation?: boolean;
supplierProductValuation?: number;
isAbleReturnProductOrders?: boolean;
returnProductOrdersDate?: string;
bables?: string[];
lastOrderShkId?: number;
lastOrderCreatedAt?: string;
color?: string;
subjectId?: number;
subjectName?: string;
parentFeedbackId?: string;
childFeedbackId?: string;
};
error?: boolean;
errorText?: string;
additionalErrors?: string[];
}>;
/**
* Список архивных отзывов
*
* Метод возвращает список архивных [отзывов](/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks/get).
Отзыв становится архивным, если: - на отзыв получен ответ - на отзыв не получен ответ в течение 30 дней - в отзыве нет текста и фото Лимит запросов на один аккаунт продавца для всех методов категории
Вопросы и отзывы: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 секунда | 3 запроса | 333 миллисекунды | 6 запросов |
*
* @param [options] - Query parameters
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.getFeedbacksArchive({});
console.log(result);
*/
getFeedbacksArchive(options?: {
nmId?: number;
take: number;
skip: number;
order?: 'dateAsc' | 'dateDesc';
}): Promise<{
data?: {
feedbacks?: ResponseFeedback;
};
error?: boolean;
errorText?: string;
additionalErrors?: string[];
}>;
/**
* Список чатов
*
* Метод возвращает список всех чатов продавца. По этим данным можно получить [события чатов](/openapi/user-communication#tag/Chat-s-pokupatelyami/paths/~1api~1v1~1seller~1events/get) или [отправить сообщение покупателю](/openapi/user-communication#tag/Chat-s-pokupatelyami/paths/~1api~1v1~1seller~1message/post). Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 10 секунд | 10 запросов | 1 секунда | 10 запросов |
*
* **v3.13.0 — replySign format change (deadline 2026-06-04)**: WB updated the `replySign` field
* returned by this endpoint. If you cache `replySign` values, you must refresh them via this
* method before calling `createSellerMessage()` after 2026-06-04 — old-format values will be
* rejected by WB with HTTP 400. New format: `::` (~135 chars).
* See docs/guides/chat-replysign-format-migration.md.
*
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const chats = await sdk.communications.getSellerChats();
console.log(chats.result);
*/
getSellerChats(): Promise;
/**
* События чатов
*
* Метод возвращает список событий всех [чатов с покупателями](/openapi/user-communication#tag/Chat-s-pokupatelyami/paths/~1api~1v1~1seller~1chats/get). Чтобы получить все события: 1. Сделайте первый запрос без параметра `next`. 2. Повторяйте запрос со значением параметра `next` из ответа на предыдущий запрос, пока `totalEvents` не станет равным `0`. Это будет означать, что вы получили все события. Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 10 секунд | 10 запросов | 1 секунда | 10 запросов |
*
* **v3.13.0 — replySign format change (deadline 2026-06-04)**: when `Event.isNewChat` is `true`,
* the event includes a `replySign` field in the new format (`::`).
* Old-format `replySign` values (e.g. cached from before 2026-06-04) will be rejected by WB after
* the deadline. Prefer refreshing via `getSellerChats()` which always returns the latest values.
* See docs/guides/chat-replysign-format-migration.md.
*
* @param [options] - Query parameters
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.getSellerEvents({});
console.log(result);
*/
getSellerEvents(options?: {
next?: number;
}): Promise;
/**
* Отправить сообщение покупателю (multipart/form-data)
*
* Метод отправляет сообщение в [чат с покупателем](/openapi/user-communication#tag/Chat-s-pokupatelyami/paths/~1api~1v1~1seller~1chats/get). Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 10 секунд | 10 запросов | 1 секунда | 10 запросов |
*
* **v3.13.0 fix**: this method previously took zero parameters and always sent an empty body
* (broken since introduction). It now requires a `data` parameter with `replySign`.
*
* **replySign deadline 2026-06-04**: WB rejects old-format `replySign` values with HTTP 400.
* Always fetch a fresh `replySign` from `getSellerChats()` before sending. New-format pattern:
* `::` (~135 chars, e.g. `1:1e265a58-a120-b178-008c-60af2460207c:66f136...`).
* If you pass a value that does not match this pattern the SDK emits a one-time `console.warn`
* (see `warnOnce` — key `communications.createSellerMessage:legacy-replysign-format`).
* See docs/guides/chat-replysign-format-migration.md.
*
* @param data - Request body: `replySign` (required), optional `message` and `file` attachments
* @returns Успешно
* @throws {ValidationError} When `replySign` is missing/empty/exceeds 255 chars, `message` > 1000 chars, or total file size > 30 MB
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {NetworkError} When network request fails or times out
* @example
// 1. Fetch chats to get a fresh replySign
const chats = await sdk.communications.getSellerChats();
const chat = chats.result?.[0];
if (!chat?.replySign) throw new Error('No chat found');
// 2. Send message (optionally with attachments)
const result = await sdk.communications.createSellerMessage({
replySign: chat.replySign,
message: 'Thank you for your order!',
});
console.log(result);
*/
createSellerMessage(data: SellerMessageRequest): Promise;
/**
* Получить файл из сообщения
*
* Метод возвращает файл или изображение из сообщения по его ID. Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 10 секунд | 10 запросов | 1 секунда | 10 запросов |
*
* @param id - ID файла, см. значение поля `downloadID` в методе [События чатов](https://dev.wildberries.ru/openapi/user-communication#tag/Chat-s-pokupatelyami/paths/~1api~1v1~1seller~1events/get)
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.getSellerDownload('id-value');
console.log(result);
*/
getSellerDownload(id: string): Promise;
/**
* Заявки покупателей на возврат
*
* Метод возвращает заявки покупателей на возврат товаров за последние 14 дней. Вы можете [отвечать на эти заявки](/openapi/user-communication#tag/Vozvraty-pokupatelyami/paths/~1api~1v1~1claim/patch). Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 20 запросов | 3 секунды | 10 запросов |
*
* @param [options] - Query parameters
* @returns Response data
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.claims({});
console.log(result);
*/
claims(options?: {
is_archive: boolean;
id?: string;
limit?: number;
offset?: number;
nm_id?: number;
}): Promise;
/**
* Ответ на заявку покупателя
*
* Метод отправляет ответ на [заявку](/openapi/user-communication#tag/Vozvraty-pokupatelyami/paths/~1api~1v1~1claims/get) покупателя на возврат товаров. Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 20 запросов | 3 секунды | 10 запросов |
*
* @param data - Request body. `action` must be one of the values from the `actions` array returned by `claims()`. When `action` is `"rejectcustom"` the `comment` is required (10–1000 chars); it is optional for `"approvecc1"`.
* @returns Успешно
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400/422)
* @throws {NetworkError} When network request fails or times out
* @example
const result = await sdk.communications.updateClaim({
id: 'fe3e9337-e9f9-423c-8930-946a8ebef80',
action: 'rejectcustom',
comment: 'The photo is not related to the item in the application',
});
console.log(result);
*/
updateClaim(data: {
/** Application ID (UUID). */
id: string;
/** Application action. Use one of the `actions` array values from `claims()`. */
action: string;
/** Comment (10–1000 chars). Required when `action` is `"rejectcustom"`, optional for `"approvecc1"`. */
comment?: string;
}): Promise;
/**
* Get count of pinned/unpinned reviews
*
* Returns the count of pinned and unpinned reviews for the given filters.
* Unpinned reviews are only those that were automatically unpinned due to reasons
* specified in the `unpinnedCause` field.
*
* Rate limit: 3 requests per second with 333ms interval, burst of 6 requests.
*
* @param params - Optional filter parameters
* @returns Count of reviews matching the filter
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400)
* @throws {NetworkError} When network request fails or times out
* @see {@link https://dev.wildberries.ru/openapi/user-communication#tag/Zakreplyonnye-otzyvy}
* @example
* ```typescript
* // Get count of all pinned reviews
* const count = await sdk.communications.getPinnedFeedbacksCount({ state: 'pinned' });
* console.log(`Pinned reviews: ${count.data}`);
*
* // Get count of pinned reviews on product cards
* const cardCount = await sdk.communications.getPinnedFeedbacksCount({
* state: 'pinned',
* pinOn: 'nm'
* });
* ```
*/
getPinnedFeedbacksCount(params?: PinnedReviewsCountParams): Promise;
/**
* Get limits for pinning reviews
*
* Returns the limits for pinning reviews by subscription and tariff option.
* Shows total limits, used count, remaining slots, and per-unit limits.
*
* Rate limit: 3 requests per second with 333ms interval, burst of 6 requests.
*
* @returns Limits data for subscription and tariff
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {NetworkError} When network request fails or times out
* @see {@link https://dev.wildberries.ru/openapi/user-communication#tag/Zakreplyonnye-otzyvy}
* @example
* ```typescript
* const limits = await sdk.communications.getPinnedFeedbacksLimits();
* if (limits.data.subscription) {
* console.log(`Subscription remaining: ${limits.data.subscription.remaining}`);
* }
* if (limits.data.tariff) {
* console.log(`Tariff remaining: ${limits.data.tariff.remaining}`);
* }
* ```
*/
getPinnedFeedbacksLimits(): Promise;
/**
* Get list of pinned/unpinned reviews
*
* Returns a list of pinned and unpinned reviews with pagination support.
* Unpinned reviews are only those that were automatically unpinned due to reasons
* specified in the `unpinnedCause` field.
*
* Rate limit: 3 requests per second with 333ms interval, burst of 6 requests.
*
* @param params - Optional filter and pagination parameters
* @returns List of pinned/unpinned review items with pagination cursor
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400)
* @throws {NetworkError} When network request fails or times out
* @see {@link https://dev.wildberries.ru/openapi/user-communication#tag/Zakreplyonnye-otzyvy}
* @example
* ```typescript
* // Get first page of pinned reviews
* const response = await sdk.communications.getPinnedFeedbacks({
* state: 'pinned',
* limit: 100
* });
* console.log(`Found ${response.data.length} pinned reviews`);
*
* // Get next page if available
* if (response.next) {
* const nextPage = await sdk.communications.getPinnedFeedbacks({
* state: 'pinned',
* next: response.next
* });
* }
* ```
*/
getPinnedFeedbacks(params?: PinnedReviewsListParams): Promise;
/**
* Pin reviews to product cards or merged groups
*
* Pins reviews to a product card or group of merged product cards.
* Requires an active Jam subscription or tariff option for pinning reviews.
* Maximum 500 reviews can be pinned in a single request.
*
* Rate limit: 3 requests per second with 333ms interval, burst of 6 requests.
*
* @param data - Array of reviews to pin (max 500 items)
* @returns Result of pin operations with success/error details per item
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400)
* @throws {ForbiddenError} When no active subscription or tariff (403)
* @throws {NetworkError} When network request fails or times out
* @see {@link https://dev.wildberries.ru/openapi/user-communication#tag/Zakreplyonnye-otzyvy}
* @example
* ```typescript
* const result = await sdk.communications.pinFeedback([
* {
* pinMethod: 'subscription',
* pinOn: 'imt',
* feedbackId: 'VlbkVVl7mtw37wyWkJZz'
* },
* {
* pinMethod: 'tariff',
* pinOn: 'nm',
* feedbackId: 'DibuRAImknLyiqgzvGcU'
* }
* ]);
*
* result.data.forEach(item => {
* if (item.isErrors) {
* console.log(`Failed to pin ${item.feedbackId}:`, item.errors);
* } else {
* console.log(`Pinned ${item.feedbackId} with pinId: ${item.pinId}`);
* }
* });
* ```
*/
pinFeedback(data: PinnedReviewsCreateRequest): Promise;
/**
* Unpin reviews from product cards or merged groups
*
* Unpins reviews using their pin operation IDs (pinId).
* Get pinId values from the getPinnedFeedbacks method.
* Maximum 500 pin IDs can be unpinned in a single request.
*
* Rate limit: 3 requests per second with 333ms interval, burst of 6 requests.
*
* @param data - Array of pin IDs to unpin (max 500 items)
* @returns Array of successfully unpinned pin IDs
* @throws {AuthenticationError} When API key is invalid (401/403)
* @throws {RateLimitError} When rate limit exceeded (429)
* @throws {ValidationError} When request data is invalid (400)
* @throws {NetworkError} When network request fails or times out
* @see {@link https://dev.wildberries.ru/openapi/user-communication#tag/Zakreplyonnye-otzyvy}
* @example
* ```typescript
* // Get pinned reviews first to obtain pinIds
* const pinned = await sdk.communications.getPinnedFeedbacks({ state: 'pinned' });
* const pinIdsToUnpin = pinned.data.slice(0, 3).map(item => item.pinId);
*
* // Unpin the reviews
* const result = await sdk.communications.unpinFeedback(pinIdsToUnpin);
* console.log(`Successfully unpinned: ${result.data.join(', ')}`);
* ```
*/
unpinFeedback(data: PinnedReviewsDeleteRequest): Promise;
}
export type { ReviewPinMethod, ReviewPinOn, ReviewState, UnpinnedCause, PinnedReviewErrorStatus, PinnedReviewError, RespondResultError, PinReviewItem, PinReviewItemResultData, PinnedReviewItemResult, PinnedReviewsCreateRequest, PinnedReviewsCreateResponse, PinnedReviewsDeleteRequest, PinnedReviewsDeleteResponse, PinnedReviewsListParams, PinnedReviewsListResponse, PinnedReviewsCountParams, PinnedReviewsCountResponse, SellerLimit, SellerLimitsData, PinnedReviewsLimitsResponse, StandardizedFQError, ResponsefeedbackErr, ResponseFeedback, LastMessage, Chat, ChatsResponse, Event, EventAttachments, EventType, File, GoodCard, Image, MessageResponse, Sender, EventsResponse, EventsResult, FeedbackListResponse, NewFeedbacksQuestionsResponse, } from '../../types/communications.types';
//# sourceMappingURL=index.d.ts.map