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