import { BaseClient } from '../../client/base-client.js'; import { BulkStatusChangeResponse, DBWCheckMetaValidationRequest, DBWCheckMetaValidationResponse, DBWDeleteMetaBulkRequest, DBWDeleteMetaBulkResponse, DBWSetMetaBulkResponse, DBWSetSgtinBulkRequest, GetDBWClientInfoResponse, ModelsBox, ModelsDraftAddItemsErrorResponse, ModelsDraftAdditemsRequest, ModelsDraftDeleteItemsErrorResponse, ModelsDraftDeleteitemsRequest, ModelsDraftCreateResponse, ModelsGood, ModelsGoodInSupply, ModelsItemDiscrepancyResponse, ModelsListDraftItemsResponse, ModelsListDraftsResponse, ModelsOptionsResultModel, ModelsSuppliesFiltersRequest, ModelsSupply, ModelsSupplyDetails, ModelsTransitTariff, ModelsWarehousesResultItems } from '../../types/orders-fbw.types.js'; export declare class OrdersFbwModule { private client; constructor(client: BaseClient); /** * Опции приёмки * * Метод возвращает информацию о том, какие склады и типы упаковки доступны для поставки. Список складов определяется по баркоду и количеству товара.
Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 6 запросов | 10 секунд | 6 запросов |
* * @param data - Request body data * @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.ordersFBW.createAcceptanceOption([{ barcode: '1234567891234', quantity: 10 }]); console.log(result); */ createAcceptanceOption(data: ModelsGood[], options?: { warehouseID?: string; }): Promise; /** * Список складов * * Метод возвращает список складов WB.
Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 6 запросов | 10 секунд | 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.ordersFBW.warehouses(); console.log(result); */ warehouses(): Promise; /** * Транзитные направления * * Метод возвращает информацию о доступных транзитных направлениях.
Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 6 запросов | 10 секунд | 10 запросов |
* * @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.ordersFBW.transitTariffs(); console.log(result); */ transitTariffs(): Promise; /** * Список поставок * * Метод возвращает список поставок, по умолчанию — последние 1000 поставок.
Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 30 запросов | 2 секунды | 10 запросов |
* * @param data - Request body data * @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.ordersFBW.listSupplies({}); console.log(result); */ listSupplies(data: ModelsSuppliesFiltersRequest, options?: { limit?: number; offset?: number; }): Promise; /** * Детали поставки * * Метод возвращает детали поставки по ID.
Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 30 запросов | 2 секунды | 10 запросов |
* * @param ID - ID поставки или заказа * @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.ordersFBW.getSupply(12345); console.log(result); */ getSupply(ID: number, options?: { isPreorderID?: boolean; }): Promise; /** * Товары поставки * * Метод возвращает информацию о товарах в поставке.
Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 30 запросов | 2 секунды | 10 запросов |
* * @param ID - ID поставки или заказа * @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.ordersFBW.getSuppliesGood(12345); console.log(result); */ getSuppliesGood(ID: number, options?: { limit?: number; offset?: number; isPreorderID?: boolean; }): Promise; /** * Упаковка поставки * * Метод возвращает информацию об упаковке поставки.
Лимит запросов на один аккаунт продавца: | Период | Лимит | Интервал | Всплеск | | --- | --- | --- | --- | | 1 минута | 30 запросов | 2 секунды | 10 запросов |
* * @param ID - ID поставки * @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.ordersFBW.getSuppliesPackage(12345); console.log(result); */ getSuppliesPackage(ID: number): Promise; /** * Расхождения при приёмке поставки * * Возвращает информацию о расхождениях между заявленным и фактическим * количеством товара в поставке — по данным скан-приёмки на складе WB, * вместе со ссылкой на видео расхождений. * * **Доступен только для поставок, принятых не более одного года назад** — * для более старых поставок метод вернёт 404. * * Типы расхождений: * - Расхождение вверх: * 1. Излишек товара с заявленным артикулом — * `"discrepancyType": "surplus"` + `"discrepancyLabel": "surplus"` * 2. Излишек товара с артикулом, не совпадающим с заявленным, — * `"discrepancyType": "surplus"` + `"discrepancyLabel": "re-sorting"` * - Расхождение вниз: * 1. Недостача товара — * `"discrepancyType": "shortage"` + `"discrepancyLabel": "shortage"` * 2. Часть артикулов не совпадает с заявленными — * `"discrepancyType": "shortage"` + `"discrepancyLabel": "re-sorting"` * * Каждая упаковка содержит `videoUnavailable` (видео доступно при `false`) * и `items[]` с построчным расхождением и результатами сканирования * (`skuScans[]`, может быть `null`). * * Rate limit: **1 запрос в минуту** (интервал 1 минута, всплеск 1) — * не запрашивайте методом пачки поставок подряд. * * @param supplyId - ID поставки * @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) * @throws {WBAPIError} 404 — поставка не найдена, без расхождений или принята более года назад * @throws {NetworkError} When network request fails or times out * @since task-188 * @see {@link https://dev.wildberries.ru/docs/openapi/orders-fbw#tag/suppliesInformation/operation/getV1SuppliesSupplyIdDiscrepanciesQuantity} * @example * ```typescript * const discrepancies = await sdk.ordersFBW.getSupplyDiscrepancies(12345); * for (const pkg of discrepancies) { * console.log(`Поставка ${pkg.packageCode}: видео ${pkg.videoUnavailable ? 'недоступно' : pkg.videoUrl}`); * for (const item of pkg.items) { * console.log(` ${item.declaredSku}: заявлено ${item.declaredAmount}, факт ${item.actualAmount} (${item.discrepancyType})`); * } * } * ``` */ getSupplyDiscrepancies(supplyId: number): Promise; /** * Создать черновик поставки * * Метод создаёт **пустой** черновик поставки — без тела запроса. * Товары добавляются отдельно через `addDraftItems()`. * * Токены: **Personal**, **Service** (категория Supplies). * * Rate limit: 30 запросов в минуту (интервал 2 секунды, всплеск 10). * * @returns Идентификатор созданного черновика (`draftId`, UUID) * @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 * @since task-193 * @see {@link https://dev.wildberries.ru/docs/openapi/orders-fbw#tag/supplyDrafts/operation/postV1Drafts} * @example * ```typescript * const { draftId } = await sdk.ordersFBW.createDraft(); * console.log(`Создан черновик: ${draftId}`); * ``` */ createDraft(): Promise; /** * Список черновиков поставок * * Метод возвращает список черновиков поставок с постраничной навигацией * и сортировкой. По умолчанию — последние 1000 черновиков, отсортированные * по дате создания по убыванию. * * Токены: **Personal**, **Service** (категория Supplies). * * Rate limit: 30 запросов в минуту (интервал 2 секунды, всплеск 10). * * @param [options] - Параметры запроса: * - `limit` — количество черновиков в ответе (0–1000, по умолчанию 1000) * - `offset` — сколько элементов пропустить (по умолчанию 0) * - `sort` — поле сортировки: `createDt` (по умолчанию) или `updateDt` * - `order` — порядок: `desc` (по умолчанию) или `asc` * @returns Общее количество черновиков и их список * @throws {ValidationError} When query parameters are invalid (400) * @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 * @since task-193 * @see {@link https://dev.wildberries.ru/docs/openapi/orders-fbw#tag/supplyDrafts/operation/getV1Drafts} * @example * ```typescript * const { total, drafts } = await sdk.ordersFBW.listDrafts({ limit: 100, sort: 'updateDt' }); * console.log(`Черновиков: ${total}`); * for (const draft of drafts) { * console.log(`${draft.draftId}: ${draft.skuQuantity} SKU, обновлён ${draft.updatedAt}`); * } * ``` */ listDrafts(options?: { limit?: number; offset?: number; sort?: 'createDt' | 'updateDt'; order?: 'asc' | 'desc'; }): Promise; /** * Удалить черновик поставки * * Метод удаляет черновик поставки по идентификатору. * Успешный ответ — **204 No Content** (без тела). * * Токены: **Personal**, **Service** (категория Supplies). * * Rate limit: 30 запросов в минуту (интервал 2 секунды, всплеск 10). * * @param draftId - Идентификатор черновика (UUID) * @throws {ValidationError} When draftId format is invalid (400) * @throws {WBAPIError} 404 — черновик не найден * @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 * @since task-193 * @see {@link https://dev.wildberries.ru/docs/openapi/orders-fbw#tag/supplyDrafts/operation/deleteV1DraftsDraftId} * @example * ```typescript * await sdk.ordersFBW.deleteDraft('b5aed067-69d4-47b8-a5d0-591c615288f9'); * console.log('Черновик удалён'); * ``` */ deleteDraft(draftId: string): Promise; /** * Товары в черновике поставки * * Метод возвращает список товаров, добавленных в черновик поставки, * с карточкой товара (бренд, предмет, размер, изображение и т.д.). * * Токены: **Personal**, **Service** (категория Supplies). * * Rate limit: 30 запросов в минуту (интервал 2 секунды, всплеск 10). * * @param draftId - Идентификатор черновика (UUID) * @returns Количество SKU/товаров и список товаров * @throws {ValidationError} When draftId format is invalid (400) * @throws {WBAPIError} 404 — черновик не найден * @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 * @since task-193 * @see {@link https://dev.wildberries.ru/docs/openapi/orders-fbw#tag/supplyDrafts/operation/getV1DraftsDraftIdItems} * @example * ```typescript * const { skuQuantity, items } = await sdk.ordersFBW.getDraftItems(draftId); * console.log(`SKU в черновике: ${skuQuantity}`); * for (const item of items) { * console.log(`${item.vendorCode} (${item.sku}): ${item.quantity} шт`); * } * ``` */ getDraftItems(draftId: string): Promise; /** * Добавить товары в черновик поставки * * Метод добавляет товары в черновик поставки (до 1000 позиций за запрос). * * **Атомарность:** операция выполняется по принципу «всё или ничего»: * - если все SKU успешно прошли валидацию — все товары добавляются * в черновик, ответ содержит `{"results": []}`; * - если хотя бы один SKU не прошёл валидацию — **ни один** товар * не добавляется, ответ содержит список невалидных SKU с описанием ошибки. * * Токены: **Personal**, **Service** (категория Supplies). * * Rate limit: 30 запросов в минуту (интервал 2 секунды, всплеск 10). * * @param draftId - Идентификатор черновика (UUID) * @param data - Список товаров `{ quantity, sku }` (1–1000 позиций) * @returns `results` — список невалидных SKU; пустой массив означает, * что все товары добавлены * @throws {ValidationError} When items array is empty or exceeds 1000 items * @throws {ValidationError} When draftId format or items array is invalid (400) * @throws {WBAPIError} 404 — черновик не найден * @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 * @since task-193 * @see {@link https://dev.wildberries.ru/docs/openapi/orders-fbw#tag/supplyDrafts/operation/postV1DraftsDraftIdItems} * @example * ```typescript * const { results } = await sdk.ordersFBW.addDraftItems(draftId, { * items: [ * { quantity: 10, sku: '2000000512907' }, * { quantity: 5, sku: '2039395667350' }, * ], * }); * if (results.length > 0) { * // Ничего не добавлено — исправьте SKU и повторите запрос целиком * for (const { sku, error } of results) { * console.error(`${sku}: ${error.title} — ${error.detail}`); * } * } * ``` */ addDraftItems(draftId: string, data: ModelsDraftAdditemsRequest): Promise; /** * Удалить товары из черновика поставки * * Метод удаляет товары из черновика поставки по списку SKU. * * **Валидация SKU не выполняется:** при передаче несуществующего SKU * ошибка не возвращается — он молча игнорируется, а корректные SKU * удаляются из черновика. * * Токены: **Personal**, **Service** (категория Supplies). * * Rate limit: 30 запросов в минуту (интервал 2 секунды, всплеск 10). * * @param draftId - Идентификатор черновика (UUID) * @param data - Список SKU для удаления (минимум 1) * @returns `results` — результат операции * @throws {ValidationError} When skus array is empty * @throws {ValidationError} When request parameters are invalid (400) * @throws {WBAPIError} 404 — черновик не найден * @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 * @since task-193 * @see {@link https://dev.wildberries.ru/docs/openapi/orders-fbw#tag/supplyDrafts/operation/deleteV1DraftsDraftIdItems} * @example * ```typescript * await sdk.ordersFBW.deleteDraftItems(draftId, { skus: ['2000000512907'] }); * ``` */ deleteDraftItems(draftId: string, data: ModelsDraftDeleteitemsRequest): Promise; /** * Получение информации о покупателе для заказов DBW * * Возвращает данные покупателя (имя, телефон, код) по ID заказов модели DBW. * * **Важно:** Этот метод использует домен `marketplace-api.wildberries.ru`, * а не `supplies-api.wildberries.ru` как остальные методы FBW. * * Rate limit: 300 requests per minute, 200ms interval, burst 20. * Один запрос с кодом 409 считается за 10 запросов. * * @param orderIds - Array of assembly order IDs (no documented max limit) * @returns Buyer information for each order * @throws {ValidationError} When orderIds array is empty * @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 * @since 3.4.0 * @see {@link https://dev.wildberries.ru/docs/openapi/orders-dbw#tag/Sborochnye-zadaniya-DBW} * @example * ```typescript * const result = await sdk.ordersFBW.getClientInfo([987654321, 123456789]); * for (const order of result.orders ?? []) { * console.log(`Order ${order.orderID}: ${order.firstName}, phone: +${order.phoneCode}${order.phone}`); * } * ``` */ getClientInfo(orderIds: number[]): Promise; /** * Удалить идентификаторы маркировки у нескольких заказов DBW (массовая операция). * * Bulk-delete marking metadata (IMEI/UIN/GTIN/SGTIN/customsDeclaration) from up to * N DBW orders in a single request. Mirrors the DBS `deleteMetaBulk` method. * * Rate limit: 150 requests/min, 400ms interval, burst 20. * (Default mirrors DBS sibling — WB has not yet published explicit DBW limits. * Will be updated via task-15.5 once WB publishes 07-orders-fbw.yaml.) * * @param request - Orders array and metadata key to delete * @returns Per-order deletion results * @throws {ValidationError} When orders array is empty * @throws {ValidationError} When request body is malformed * @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 * @since 3.11.0 * @see {@link https://dev.wildberries.ru/openapi/orders-dbw} * @example * ```typescript * const result = await sdk.ordersFBW.deleteMetaBulk({ orders: [123456], key: 'imei' }); * for (const order of result.orders) { * console.log(`Order ${order.orderId}: ${order.success ? 'deleted' : order.error}`); * } * ``` */ deleteMetaBulk(request: DBWDeleteMetaBulkRequest): Promise; /** * Задать SGTIN-коды для нескольких заказов DBW (массовая операция). * * Bulk-assign SGTIN (Serial Global Trade Item Number) codes to up to N DBW orders * in a single request. Mirrors the DBS `setSgtinBulk` method. * * Rate limit: 500 requests/min, 120ms interval, burst 20. * (Default mirrors DBS sibling — WB has not yet published explicit DBW limits. * Will be updated via task-15.5 once WB publishes 07-orders-fbw.yaml.) * * @param request - Per-order SGTIN assignments * @returns Per-order set results; `errors[]` present when some orders fail * @throws {ValidationError} When orders array is empty * @throws {ValidationError} When request body is malformed * @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 * @since 3.11.0 * @see {@link https://dev.wildberries.ru/openapi/orders-dbw} * @example * ```typescript * const result = await sdk.ordersFBW.setSgtinBulk({ * orders: [{ orderId: 123456, sgtins: ['1234567890123456'] }], * }); * if (result.errors?.length) { * console.log('Some orders failed:', result.errors); * } * ``` */ setSgtinBulk(request: DBWSetSgtinBulkRequest): Promise; /** * Передать несколько заказов DBW в доставку (массовая операция). * * Mark up to 1000 DBW orders as "delivered" (handed to carrier) in a single request. * Mirrors the DBS `deliverBulk` method. WB disables the legacy single-order DBW * deliver endpoint on 2026-06-05 — use this method instead. * * **Important:** Orders requiring IMEI/SGTIN must have metadata attached before calling * this method. If metadata is missing, WB returns 409 `MetaValidationFail`. * * **B2C marking (Честный Знак):** WB validates B2C marking for DBW from 2026-06-15. * Invalid marking → HTTP 409 `MetaValidationFail` with diagnostic `metaDetails[]`. * Pre-flight via `checkMetaValidation()` to avoid the guess-and-retry loop. * * Rate limit: 300 requests/min, 200ms interval, burst 20. * (Default mirrors DBS sibling — WB has not yet published explicit DBW limits. * Will be updated via task-15.5 once WB publishes 07-orders-fbw.yaml.) * * @param orderIds - Array of order IDs to mark as delivered (1–1000 items) * @returns Per-order delivery status results. When WB returns application-level 409 * MetaValidationFail, it surfaces in `result.results[].errors[]` with `code === 409` * and `detail === 'MetaValidationFail'`; check `result.results[].errors[].metaDetails[]` * per-order before retrying. (since 3.11.0 — WB API 2026-05-06) * @throws {ValidationError} When orderIds is empty or exceeds 1000 items * @throws {WBAPIError} 409 — ImeiIsNotFilled: mandatory IMEI not attached to order * @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 * @since 3.11.0 * @see {@link https://dev.wildberries.ru/openapi/orders-dbw} * @example * ```typescript * // Mark multiple DBW orders as handed to carrier * const result = await sdk.ordersFBW.deliverBulk([123456, 234567, 345678]); * * for (const order of result.results ?? []) { * if (order.isError) { * console.log(`Order ${order.orderId} failed:`, order.errors); * } else { * console.log(`Order ${order.orderId} marked as delivered`); * } * } * ``` */ deliverBulk(orderIds: number[]): Promise; /** * Проверить идентификаторы маркировки DBW-заказов перед передачей в доставку (предварительная валидация). * * Pre-flight metadata validator for DBW orders. Returns the same `metaDetails[]` shape * that WB returns inside the 409 `MetaValidationFail` body of `deliverBulk()`, but as a * 200 OK response — without consuming a deliver-bulk quota attempt. * * **This method does NOT change order state.** It is a read-only pre-flight check. * Use it before `deliverBulk()` to identify orders with invalid marking metadata * (SGTIN/IMEI/UIN/etc.) so they can be fixed in advance, avoiding the guess-and-retry * loop of: call `deliverBulk()` → catch 409 → read `metaDetails[]` → fix → retry. * * Rate limit: 300 requests/min, 200ms interval, burst 20. * (Default mirrors `deliverBulk` DBW — WB has not yet published explicit limits. * Will be updated via task-15.5 once WB publishes 07-orders-fbw.yaml.) * * @param request - Request containing array of DBW order IDs to validate (1–1000 items) * @returns Per-order metadata validation results in `metaDetails[]` * @throws {ValidationError} When `orders` array is empty * @throws {ValidationError} When `orders` array exceeds 1000 items * @throws {ValidationError} When request body is malformed (4xx propagation) * @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 * @since 3.11.0 * @see {@link https://dev.wildberries.ru/openapi/orders-dbw} * @example * ```typescript * // Pre-flight pattern: validate → fix → deliver * const validation = await sdk.ordersFBW.checkMetaValidation({ * orders: [123456, 234567, 345678], * }); * * const invalidOrders = validation.metaDetails.filter(d => d.status === 'invalid'); * if (invalidOrders.length > 0) { * console.log('Orders with invalid metadata:', invalidOrders); * // Fix metadata for invalid orders first (narrow orderId: number | undefined → number): * const fixable = invalidOrders.filter( * (o): o is typeof o & { orderId: number } => o.orderId !== undefined * ); * await sdk.ordersFBW.setSgtinBulk({ * orders: fixable.map(o => ({ orderId: o.orderId, sgtins: ['correct-sgtin'] })), * }); * } * * // Now safe to deliver — no 409 MetaValidationFail expected * const result = await sdk.ordersFBW.deliverBulk([123456, 234567, 345678]); * ``` */ checkMetaValidation(request: DBWCheckMetaValidationRequest): Promise; } //# sourceMappingURL=index.d.ts.map