Полный справочник API v2

Каждая операция ниже сгенерирована из OpenAPI v2 и содержит параметры, поля запроса, поля ответа, ошибки и примеры.

Приемки

GET /api/v2/acceptances

Получить список приемок

operationIdlistAcceptances
РазделПриемки
БезопасностьbearerAuth

Возвращает приемки, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/acceptances" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 250
Количество записей на странице. По умолчанию 50; максимум 250. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 50
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, acceptance_date, external_id, created_at, updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "-id"
include query нет string form false Связанные сущности через запятую. Допустимые значения: offers. Этот фильтр также можно передать как filter[include], если это поддерживает Laravel query adapter. "offers"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
external_id query нет string form true Фильтр по external_id с точным совпадением. Этот фильтр также можно передать как filter[external_id], если это поддерживает Laravel query adapter. "EXT-10045"
status_id query нет integer:int64 form true min: 1 Фильтр по status_id с точным совпадением. Этот фильтр также можно передать как filter[status_id], если это поддерживает Laravel query adapter. 1
warehouse_id query нет integer:int64 form true min: 1 Фильтр по warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[warehouse_id], если это поддерживает Laravel query adapter. 42
shop_id query нет integer:int64 form true min: 1 Фильтр по shop_id с точным совпадением. Этот фильтр также можно передать как filter[shop_id], если это поддерживает Laravel query adapter. 12
type_id query нет integer:int64 form true min: 1 Фильтр по type_id с точным совпадением. Этот фильтр также можно передать как filter[type_id], если это поддерживает Laravel query adapter. 1
user_id query нет integer:int64 form true min: 1 Фильтр по user_id с точным совпадением. Этот фильтр также можно передать как filter[user_id], если это поддерживает Laravel query adapter. 15
document_barcode query нет string form true Фильтр по document_barcode с частичным текстовым совпадением. Этот фильтр также можно передать как filter[document_barcode], если это поддерживает Laravel query adapter. "ASN-100245-BARCODE"
comment query нет string form true Фильтр по comment с частичным текстовым совпадением. Этот фильтр также можно передать как filter[comment], если это поддерживает Laravel query adapter. "Priority"
acceptance_date_from query нет string:date form true Нижняя включительная граница даты для acceptance_date. Этот фильтр также можно передать как filter[acceptance_date_from], если это поддерживает Laravel query adapter. "2026-07-14"
acceptance_date_to query нет string:date form true Верхняя включительная граница даты для acceptance_date. Этот фильтр также можно передать как filter[acceptance_date_to], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
updated_at_from query нет string:date form true Нижняя включительная граница даты для updated_at. Этот фильтр также можно передать как filter[updated_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
updated_at_to query нет string:date form true Верхняя включительная граница даты для updated_at. Этот фильтр также можно передать как filter[updated_at_to], если это поддерживает Laravel query adapter. "2026-07-14"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<Acceptance>
data[] нет Acceptance Входящий документ приемки. Связанные поля присутствуют, когда контроллер их загрузил или они запрошены через include.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].external_id нет string | null "ASN-100245"
data[].document_barcode нет string | null "ASN-100245-BARCODE"
data[].domain_id нет integer:int64 | null min: 1 3
data[].status_id нет enum:int64 | null enum: 1, 2, 3, 4, 5, 6, 7 1 - new; 2 - accepting; 3 - checking; 4 - closed; 5 - deleted; 6 - cancelled; 7 - arrived at warehouse. 1
data[].user_id нет integer:int64 | null min: 1 9
data[].warehouse_id нет integer:int64 | null min: 1 42
data[].shop_id нет integer:int64 | null min: 1 12
data[].type_id нет enum:int64 | null enum: 1, 2, 3 1 — обычная приёмка; 2 — возврат; 3 — cross-dock-приёмка. После создания тип изменить нельзя. 1
data[].type_code нет enum | null enum: acceptance, return, crossdock "acceptance"
data[].comment нет string | null "Inbound from supplier"
data[].counts да AcceptanceCounts
data[].counts.expected да number:float 10
data[].counts.accepted да number:float 0
data[].counts.placed да number:float 0
data[].acceptance_date нет string:date | null "2026-07-14"
data[].offers нет array<AcceptanceLine>
data[].offers[] нет AcceptanceLine Declared acceptance line plus live accepted/placed quantities and actual lot allocations. Placement requires a positive storage-place ID. Deleted warehouse rows are excluded.
data[].offers[].id да integer:int64 readOnly min: 1 1001
data[].offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].offers[].acceptance_id да integer:int64 min: 1 5101
data[].offers[].product_id да integer:int64 min: 1 1201
data[].offers[].expected_quantity да number:float min: 0 10
data[].offers[].accepted_quantity да number:float min: 0 0
data[].offers[].placed_quantity да number:float min: 0 0
data[].offers[].price нет number:float | null 4.99
data[].offers[].batch нет string | null "LOT-2026"
data[].offers[].production_date нет string:date | null "2026-01-15"
data[].offers[].expiration_date нет string:date | null "2027-01-15"
data[].offers[].barcode нет string | null maxLength: 64 "4601234567890"
data[].offers[].product нет object | null
data[].offers[].product.id да integer:int64 readOnly min: 1 1201
data[].offers[].product.name да string "Coffee 250g"
data[].offers[].product.external_id нет string | null "EXT-10045"
data[].offers[].accepted_lots нет array<AcceptanceLot>
data[].offers[].accepted_lots[] нет AcceptanceLot
data[].offers[].accepted_lots[].batch да string | null "LOT-2026"
data[].offers[].accepted_lots[].production_date да string:date | null "2026-01-15"
data[].offers[].accepted_lots[].expiration_date да string:date | null "2027-01-15"
data[].offers[].accepted_lots[].accepted_quantity да number:float min: 0 5
data[].offers[].accepted_lots[].placed_quantity да number:float min: 0 3
data[].crossdock_case нет object | null Cross-dock case created atomically with an acceptance of type 3.
data[].crossdock_case.id да integer:int64 min: 1 1001
data[].crossdock_case.public_id да string "01J2CROSSDOCKCASE000000001"
data[].crossdock_case.status да enum enum: draft, planned, released, in_progress, exception, completed, cancelled "draft"
data[].crossdock_case.process_version да string "direct_order_v1"
data[].crossdock_case.version да integer:int64 min: 1 1
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 5101,
      "external_id": "ASN-100245",
      "document_barcode": "ASN-100245-BARCODE",
      "domain_id": 3,
      "status_id": 1,
      "user_id": 9,
      "warehouse_id": 42,
      "shop_id": 12,
      "type_id": 1,
      "comment": "Inbound from supplier",
      "counts": {
        "expected": 10,
        "accepted": 0,
        "placed": 0
      },
      "acceptance_date": "2026-07-14",
      "offers": [
        {
          "id": 7101,
          "acceptance_id": 5101,
          "product_id": 1201,
          "expected_quantity": 10,
          "accepted_quantity": 0,
          "placed_quantity": 0,
          "price": 4.99,
          "batch": "LOT-2026",
          "production_date": "2026-01-15",
          "expiration_date": "2027-01-15",
          "barcode": "4601234567890",
          "product": {
            "id": 1201,
            "name": "Coffee 250g",
            "external_id": "EXT-10045"
          },
          "created_at": "2026-07-14T09:00:00Z",
          "updated_at": "2026-07-14T09:30:00Z"
        }
      ],
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/acceptances?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/acceptances?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/acceptances?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/acceptances",
    "per_page": 50,
    "to": 50,
    "total": 73
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/acceptances

Создать обычную, возвратную или cross-dock-приёмку

operationIdcreateAcceptances
РазделПриемки
БезопасностьbearerAuth

Создаёт один из трёх видимых типов приёмки. type_id=1 создаёт обычную приёмку, type_id=2 — возврат, а type_id=3 запускает изолированный процесс cross-dock.
For type_id=3, send a transport Idempotency-Key, a UUID data.command_id, at least one line, and the optional data.crossdock schedule fields. The client warehouse and shop are resolved in tenant scope. Before any insert, NWMS checks that cross-docking is enabled on the selected client warehouse. The acceptance, draft case, supplies, command, and initial audit event are committed atomically.
Если кросс-докинг выключен на выбранном клиентском складе, запрос возвращает validation-envelope API v2 и не оставляет частично созданную приёмку. Ответ содержит type_code=crossdock, crossdock_case, meta.crossdock_configuration и meta.command_replayed.
Тип приёмки неизменяем. Дальше используйте операции Cross-docking: создайте заказы и направления, постройте и выпустите план, выполните сканирования источника и назначения, погрузку и закрытие.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/acceptances" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CreateAcceptanceRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateAcceptancePayload

Примеры запроса

standard

{
  "data": {
    "warehouse_id": 42,
    "shop_id": 12,
    "type_id": 1,
    "external_id": "ASN-100245",
    "lines": [
      {
        "product_id": 1201,
        "expected_quantity": 10,
        "barcode": "4601234567890"
      }
    ]
  }
}

crossDock

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "warehouse_id": 43,
    "shop_id": 12,
    "type_id": 3,
    "external_id": "ASN-XD-100245",
    "acceptance_date": "2026-08-03",
    "crossdock": {
      "external_id": "XD-2026-001",
      "planned_arrival_at": "2026-08-03T08:00:00Z",
      "cutoff_at": "2026-08-03T12:00:00Z",
      "planned_departure_at": "2026-08-03T14:00:00Z"
    },
    "lines": [
      {
        "product_id": 1201,
        "expected_quantity": 35,
        "external_line_id": "ASN-XD-LINE-1",
        "barcode": "4601234567890"
      }
    ]
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Acceptance Входящий документ приемки. Связанные поля присутствуют, когда контроллер их загрузил или они запрошены через include.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "ASN-100245"
data.document_barcode нет string | null "ASN-100245-BARCODE"
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет enum:int64 | null enum: 1, 2, 3, 4, 5, 6, 7 1 - new; 2 - accepting; 3 - checking; 4 - closed; 5 - deleted; 6 - cancelled; 7 - arrived at warehouse. 1
data.user_id нет integer:int64 | null min: 1 9
data.warehouse_id нет integer:int64 | null min: 1 42
data.shop_id нет integer:int64 | null min: 1 12
data.type_id нет enum:int64 | null enum: 1, 2, 3 1 — обычная приёмка; 2 — возврат; 3 — cross-dock-приёмка. После создания тип изменить нельзя. 1
data.type_code нет enum | null enum: acceptance, return, crossdock "acceptance"
data.comment нет string | null "Inbound from supplier"
data.counts да AcceptanceCounts
data.counts.expected да number:float 10
data.counts.accepted да number:float 0
data.counts.placed да number:float 0
data.acceptance_date нет string:date | null "2026-07-14"
data.offers нет array<AcceptanceLine>
data.offers[] нет AcceptanceLine Declared acceptance line plus live accepted/placed quantities and actual lot allocations. Placement requires a positive storage-place ID. Deleted warehouse rows are excluded.
data.offers[].id да integer:int64 readOnly min: 1 1001
data.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].acceptance_id да integer:int64 min: 1 5101
data.offers[].product_id да integer:int64 min: 1 1201
data.offers[].expected_quantity да number:float min: 0 10
data.offers[].accepted_quantity да number:float min: 0 0
data.offers[].placed_quantity да number:float min: 0 0
data.offers[].price нет number:float | null 4.99
data.offers[].batch нет string | null "LOT-2026"
data.offers[].production_date нет string:date | null "2026-01-15"
data.offers[].expiration_date нет string:date | null "2027-01-15"
data.offers[].barcode нет string | null maxLength: 64 "4601234567890"
data.offers[].product нет object | null
data.offers[].product.id да integer:int64 readOnly min: 1 1201
data.offers[].product.name да string "Coffee 250g"
data.offers[].product.external_id нет string | null "EXT-10045"
data.offers[].accepted_lots нет array<AcceptanceLot>
data.offers[].accepted_lots[] нет AcceptanceLot
data.offers[].accepted_lots[].batch да string | null "LOT-2026"
data.offers[].accepted_lots[].production_date да string:date | null "2026-01-15"
data.offers[].accepted_lots[].expiration_date да string:date | null "2027-01-15"
data.offers[].accepted_lots[].accepted_quantity да number:float min: 0 5
data.offers[].accepted_lots[].placed_quantity да number:float min: 0 3
data.crossdock_case нет object | null Cross-dock case created atomically with an acceptance of type 3.
data.crossdock_case.id да integer:int64 min: 1 1001
data.crossdock_case.public_id да string "01J2CROSSDOCKCASE000000001"
data.crossdock_case.status да enum enum: draft, planned, released, in_progress, exception, completed, cancelled "draft"
data.crossdock_case.process_version да string "direct_order_v1"
data.crossdock_case.version да integer:int64 min: 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 5101,
    "external_id": "ASN-100245",
    "document_barcode": "ASN-100245-BARCODE",
    "domain_id": 3,
    "status_id": 1,
    "user_id": 9,
    "warehouse_id": 42,
    "shop_id": 12,
    "type_id": 1,
    "comment": "Inbound from supplier",
    "counts": {
      "expected": 10,
      "accepted": 0,
      "placed": 0
    },
    "acceptance_date": "2026-07-14",
    "offers": [
      {
        "id": 7101,
        "acceptance_id": 5101,
        "product_id": 1201,
        "expected_quantity": 10,
        "accepted_quantity": 0,
        "placed_quantity": 0,
        "price": 4.99,
        "batch": "LOT-2026",
        "production_date": "2026-01-15",
        "expiration_date": "2027-01-15",
        "barcode": "4601234567890",
        "product": {
          "id": 1201,
          "name": "Coffee 250g",
          "external_id": "EXT-10045"
        },
        "created_at": "2026-07-14T09:00:00Z",
        "updated_at": "2026-07-14T09:30:00Z"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

crossDockCreated

{
  "data": {
    "id": 5101,
    "external_id": "ASN-XD-100245",
    "domain_id": 3,
    "status_id": 1,
    "warehouse_id": 43,
    "shop_id": 12,
    "type_id": 3,
    "type_code": "crossdock",
    "counts": {
      "expected": 35,
      "accepted": 0,
      "placed": 0
    },
    "acceptance_date": "2026-08-03",
    "crossdock_case": {
      "id": 1001,
      "public_id": "01J2CROSSDOCKCASE000000001",
      "status": "draft",
      "process_version": "direct_order_v1",
      "version": 1
    }
  },
  "meta": {
    "api_version": "v2",
    "command_replayed": false,
    "crossdock_configuration": {
      "physical_warehouse_id": 42,
      "enabled": true,
      "process_version": "direct_order_v1"
    }
  }
}

400 Некорректный запрос

AcceptanceCreateBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
(root) нет ErrorResponse Standard and return acceptances retain the existing API v2 error adapter. Cross-dock creation uses the strict validation envelope with meta.error_code and no top-level error field.
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

IDEMPOTENCY_KEY_REQUIRED

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "IDEMPOTENCY_KEY_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

AcceptanceCreateConflict

The request conflicts with the current resource or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
(root) нет ErrorResponse Standard and return acceptances retain the existing API v2 error adapter. Cross-dock creation uses the strict validation envelope with meta.error_code and no top-level error field.
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_COMMAND_CONFLICT

{
  "message": "The request conflicts with the current resource or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_COMMAND_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

AcceptanceCreateValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
(root) нет ValidationErrorResponse Standard and return acceptances retain the existing API v2 error adapter. Cross-dock creation uses the strict validation envelope with meta.error_code and no top-level error field.
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_WAREHOUSE_DISABLED

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_WAREHOUSE_DISABLED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/acceptances/{id}

Получить приемку

operationIdgetAcceptances
РазделПриемки
БезопасностьbearerAuth

Возвращает один ресурс: приемка, если он существует и видим аутентифицированному аккаунту.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/acceptances/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Acceptance Входящий документ приемки. Связанные поля присутствуют, когда контроллер их загрузил или они запрошены через include.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "ASN-100245"
data.document_barcode нет string | null "ASN-100245-BARCODE"
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет enum:int64 | null enum: 1, 2, 3, 4, 5, 6, 7 1 - new; 2 - accepting; 3 - checking; 4 - closed; 5 - deleted; 6 - cancelled; 7 - arrived at warehouse. 1
data.user_id нет integer:int64 | null min: 1 9
data.warehouse_id нет integer:int64 | null min: 1 42
data.shop_id нет integer:int64 | null min: 1 12
data.type_id нет enum:int64 | null enum: 1, 2, 3 1 — обычная приёмка; 2 — возврат; 3 — cross-dock-приёмка. После создания тип изменить нельзя. 1
data.type_code нет enum | null enum: acceptance, return, crossdock "acceptance"
data.comment нет string | null "Inbound from supplier"
data.counts да AcceptanceCounts
data.counts.expected да number:float 10
data.counts.accepted да number:float 0
data.counts.placed да number:float 0
data.acceptance_date нет string:date | null "2026-07-14"
data.offers нет array<AcceptanceLine>
data.offers[] нет AcceptanceLine Declared acceptance line plus live accepted/placed quantities and actual lot allocations. Placement requires a positive storage-place ID. Deleted warehouse rows are excluded.
data.offers[].id да integer:int64 readOnly min: 1 1001
data.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].acceptance_id да integer:int64 min: 1 5101
data.offers[].product_id да integer:int64 min: 1 1201
data.offers[].expected_quantity да number:float min: 0 10
data.offers[].accepted_quantity да number:float min: 0 0
data.offers[].placed_quantity да number:float min: 0 0
data.offers[].price нет number:float | null 4.99
data.offers[].batch нет string | null "LOT-2026"
data.offers[].production_date нет string:date | null "2026-01-15"
data.offers[].expiration_date нет string:date | null "2027-01-15"
data.offers[].barcode нет string | null maxLength: 64 "4601234567890"
data.offers[].product нет object | null
data.offers[].product.id да integer:int64 readOnly min: 1 1201
data.offers[].product.name да string "Coffee 250g"
data.offers[].product.external_id нет string | null "EXT-10045"
data.offers[].accepted_lots нет array<AcceptanceLot>
data.offers[].accepted_lots[] нет AcceptanceLot
data.offers[].accepted_lots[].batch да string | null "LOT-2026"
data.offers[].accepted_lots[].production_date да string:date | null "2026-01-15"
data.offers[].accepted_lots[].expiration_date да string:date | null "2027-01-15"
data.offers[].accepted_lots[].accepted_quantity да number:float min: 0 5
data.offers[].accepted_lots[].placed_quantity да number:float min: 0 3
data.crossdock_case нет object | null Cross-dock case created atomically with an acceptance of type 3.
data.crossdock_case.id да integer:int64 min: 1 1001
data.crossdock_case.public_id да string "01J2CROSSDOCKCASE000000001"
data.crossdock_case.status да enum enum: draft, planned, released, in_progress, exception, completed, cancelled "draft"
data.crossdock_case.process_version да string "direct_order_v1"
data.crossdock_case.version да integer:int64 min: 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 5101,
    "external_id": "ASN-100245",
    "document_barcode": "ASN-100245-BARCODE",
    "domain_id": 3,
    "status_id": 1,
    "user_id": 9,
    "warehouse_id": 42,
    "shop_id": 12,
    "type_id": 1,
    "comment": "Inbound from supplier",
    "counts": {
      "expected": 10,
      "accepted": 0,
      "placed": 0
    },
    "acceptance_date": "2026-07-14",
    "offers": [
      {
        "id": 7101,
        "acceptance_id": 5101,
        "product_id": 1201,
        "expected_quantity": 10,
        "accepted_quantity": 0,
        "placed_quantity": 0,
        "price": 4.99,
        "batch": "LOT-2026",
        "production_date": "2026-01-15",
        "expiration_date": "2027-01-15",
        "barcode": "4601234567890",
        "product": {
          "id": 1201,
          "name": "Coffee 250g",
          "external_id": "EXT-10045"
        },
        "created_at": "2026-07-14T09:00:00Z",
        "updated_at": "2026-07-14T09:30:00Z"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/acceptances/{id}

Обновить приемку

operationIdreplaceAcceptances
РазделПриемки
БезопасностьbearerAuth

Updates an editable acceptance header and may upsert or delete lines. Closed or already processed documents reject changes with validation or lifecycle errors.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/acceptances/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

ReplaceAcceptanceRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да ReplaceAcceptancePayload Legacy PUT payload. Current backend applies partial-update semantics and may upsert or delete lines.
data.external_id нет string | null "ASN-100245"
data.document_barcode нет string | null "ASN-100245-BARCODE"
data.comment нет string | null "Inbound from supplier"
data.acceptance_date нет string:date | null "2026-07-14"
data.allow_add_offers_during_acceptance нет boolean false
data.lines нет array<AcceptanceLineUpsertPayload>
data.lines[] нет AcceptanceLineUpsertPayload Payload строки приемки. Товар определяется по product_id или product_external_id.
data.lines[] нет object
data.lines[] нет object
data.lines_delete нет array<integer:int64>
data.lines_delete[] нет integer:int64 min: 1 7101

Примеры запроса

default

{
  "data": {
    "comment": "Updated supplier note",
    "lines_delete": [
      7102
    ]
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Acceptance Входящий документ приемки. Связанные поля присутствуют, когда контроллер их загрузил или они запрошены через include.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "ASN-100245"
data.document_barcode нет string | null "ASN-100245-BARCODE"
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет enum:int64 | null enum: 1, 2, 3, 4, 5, 6, 7 1 - new; 2 - accepting; 3 - checking; 4 - closed; 5 - deleted; 6 - cancelled; 7 - arrived at warehouse. 1
data.user_id нет integer:int64 | null min: 1 9
data.warehouse_id нет integer:int64 | null min: 1 42
data.shop_id нет integer:int64 | null min: 1 12
data.type_id нет enum:int64 | null enum: 1, 2, 3 1 — обычная приёмка; 2 — возврат; 3 — cross-dock-приёмка. После создания тип изменить нельзя. 1
data.type_code нет enum | null enum: acceptance, return, crossdock "acceptance"
data.comment нет string | null "Inbound from supplier"
data.counts да AcceptanceCounts
data.counts.expected да number:float 10
data.counts.accepted да number:float 0
data.counts.placed да number:float 0
data.acceptance_date нет string:date | null "2026-07-14"
data.offers нет array<AcceptanceLine>
data.offers[] нет AcceptanceLine Declared acceptance line plus live accepted/placed quantities and actual lot allocations. Placement requires a positive storage-place ID. Deleted warehouse rows are excluded.
data.offers[].id да integer:int64 readOnly min: 1 1001
data.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].acceptance_id да integer:int64 min: 1 5101
data.offers[].product_id да integer:int64 min: 1 1201
data.offers[].expected_quantity да number:float min: 0 10
data.offers[].accepted_quantity да number:float min: 0 0
data.offers[].placed_quantity да number:float min: 0 0
data.offers[].price нет number:float | null 4.99
data.offers[].batch нет string | null "LOT-2026"
data.offers[].production_date нет string:date | null "2026-01-15"
data.offers[].expiration_date нет string:date | null "2027-01-15"
data.offers[].barcode нет string | null maxLength: 64 "4601234567890"
data.offers[].product нет object | null
data.offers[].product.id да integer:int64 readOnly min: 1 1201
data.offers[].product.name да string "Coffee 250g"
data.offers[].product.external_id нет string | null "EXT-10045"
data.offers[].accepted_lots нет array<AcceptanceLot>
data.offers[].accepted_lots[] нет AcceptanceLot
data.offers[].accepted_lots[].batch да string | null "LOT-2026"
data.offers[].accepted_lots[].production_date да string:date | null "2026-01-15"
data.offers[].accepted_lots[].expiration_date да string:date | null "2027-01-15"
data.offers[].accepted_lots[].accepted_quantity да number:float min: 0 5
data.offers[].accepted_lots[].placed_quantity да number:float min: 0 3
data.crossdock_case нет object | null Cross-dock case created atomically with an acceptance of type 3.
data.crossdock_case.id да integer:int64 min: 1 1001
data.crossdock_case.public_id да string "01J2CROSSDOCKCASE000000001"
data.crossdock_case.status да enum enum: draft, planned, released, in_progress, exception, completed, cancelled "draft"
data.crossdock_case.process_version да string "direct_order_v1"
data.crossdock_case.version да integer:int64 min: 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 5101,
    "external_id": "ASN-100245",
    "document_barcode": "ASN-100245-BARCODE",
    "domain_id": 3,
    "status_id": 1,
    "user_id": 9,
    "warehouse_id": 42,
    "shop_id": 12,
    "type_id": 1,
    "comment": "Inbound from supplier",
    "counts": {
      "expected": 10,
      "accepted": 0,
      "placed": 0
    },
    "acceptance_date": "2026-07-14",
    "offers": [
      {
        "id": 7101,
        "acceptance_id": 5101,
        "product_id": 1201,
        "expected_quantity": 10,
        "accepted_quantity": 0,
        "placed_quantity": 0,
        "price": 4.99,
        "batch": "LOT-2026",
        "production_date": "2026-01-15",
        "expiration_date": "2027-01-15",
        "barcode": "4601234567890",
        "product": {
          "id": 1201,
          "name": "Coffee 250g",
          "external_id": "EXT-10045"
        },
        "created_at": "2026-07-14T09:00:00Z",
        "updated_at": "2026-07-14T09:30:00Z"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/acceptances/{id}

Обновить приемку

operationIdpatchAcceptances
РазделПриемки
БезопасностьbearerAuth

Partially updates an editable acceptance. Omitted fields are not changed.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/acceptances/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

PatchAcceptanceRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да PatchAcceptancePayload Payload частичного обновления приемки. Пропущенные поля не изменяются.
data.external_id нет string | null "ASN-100245"
data.document_barcode нет string | null "ASN-100245-BARCODE"
data.comment нет string | null "Inbound from supplier"
data.acceptance_date нет string:date | null "2026-07-14"
data.allow_add_offers_during_acceptance нет boolean false
data.lines нет array<AcceptanceLineUpsertPayload>
data.lines[] нет AcceptanceLineUpsertPayload Payload строки приемки. Товар определяется по product_id или product_external_id.
data.lines[] нет object
data.lines[] нет object
data.lines_delete нет array<integer:int64>
data.lines_delete[] нет integer:int64 min: 1 7101

Примеры запроса

default

{
  "data": {
    "comment": "Updated supplier note"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Acceptance Входящий документ приемки. Связанные поля присутствуют, когда контроллер их загрузил или они запрошены через include.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "ASN-100245"
data.document_barcode нет string | null "ASN-100245-BARCODE"
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет enum:int64 | null enum: 1, 2, 3, 4, 5, 6, 7 1 - new; 2 - accepting; 3 - checking; 4 - closed; 5 - deleted; 6 - cancelled; 7 - arrived at warehouse. 1
data.user_id нет integer:int64 | null min: 1 9
data.warehouse_id нет integer:int64 | null min: 1 42
data.shop_id нет integer:int64 | null min: 1 12
data.type_id нет enum:int64 | null enum: 1, 2, 3 1 — обычная приёмка; 2 — возврат; 3 — cross-dock-приёмка. После создания тип изменить нельзя. 1
data.type_code нет enum | null enum: acceptance, return, crossdock "acceptance"
data.comment нет string | null "Inbound from supplier"
data.counts да AcceptanceCounts
data.counts.expected да number:float 10
data.counts.accepted да number:float 0
data.counts.placed да number:float 0
data.acceptance_date нет string:date | null "2026-07-14"
data.offers нет array<AcceptanceLine>
data.offers[] нет AcceptanceLine Declared acceptance line plus live accepted/placed quantities and actual lot allocations. Placement requires a positive storage-place ID. Deleted warehouse rows are excluded.
data.offers[].id да integer:int64 readOnly min: 1 1001
data.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].acceptance_id да integer:int64 min: 1 5101
data.offers[].product_id да integer:int64 min: 1 1201
data.offers[].expected_quantity да number:float min: 0 10
data.offers[].accepted_quantity да number:float min: 0 0
data.offers[].placed_quantity да number:float min: 0 0
data.offers[].price нет number:float | null 4.99
data.offers[].batch нет string | null "LOT-2026"
data.offers[].production_date нет string:date | null "2026-01-15"
data.offers[].expiration_date нет string:date | null "2027-01-15"
data.offers[].barcode нет string | null maxLength: 64 "4601234567890"
data.offers[].product нет object | null
data.offers[].product.id да integer:int64 readOnly min: 1 1201
data.offers[].product.name да string "Coffee 250g"
data.offers[].product.external_id нет string | null "EXT-10045"
data.offers[].accepted_lots нет array<AcceptanceLot>
data.offers[].accepted_lots[] нет AcceptanceLot
data.offers[].accepted_lots[].batch да string | null "LOT-2026"
data.offers[].accepted_lots[].production_date да string:date | null "2026-01-15"
data.offers[].accepted_lots[].expiration_date да string:date | null "2027-01-15"
data.offers[].accepted_lots[].accepted_quantity да number:float min: 0 5
data.offers[].accepted_lots[].placed_quantity да number:float min: 0 3
data.crossdock_case нет object | null Cross-dock case created atomically with an acceptance of type 3.
data.crossdock_case.id да integer:int64 min: 1 1001
data.crossdock_case.public_id да string "01J2CROSSDOCKCASE000000001"
data.crossdock_case.status да enum enum: draft, planned, released, in_progress, exception, completed, cancelled "draft"
data.crossdock_case.process_version да string "direct_order_v1"
data.crossdock_case.version да integer:int64 min: 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 5101,
    "external_id": "ASN-100245",
    "document_barcode": "ASN-100245-BARCODE",
    "domain_id": 3,
    "status_id": 1,
    "user_id": 9,
    "warehouse_id": 42,
    "shop_id": 12,
    "type_id": 1,
    "comment": "Inbound from supplier",
    "counts": {
      "expected": 10,
      "accepted": 0,
      "placed": 0
    },
    "acceptance_date": "2026-07-14",
    "offers": [
      {
        "id": 7101,
        "acceptance_id": 5101,
        "product_id": 1201,
        "expected_quantity": 10,
        "accepted_quantity": 0,
        "placed_quantity": 0,
        "price": 4.99,
        "batch": "LOT-2026",
        "production_date": "2026-01-15",
        "expiration_date": "2027-01-15",
        "barcode": "4601234567890",
        "product": {
          "id": 1201,
          "name": "Coffee 250g",
          "external_id": "EXT-10045"
        },
        "created_at": "2026-07-14T09:00:00Z",
        "updated_at": "2026-07-14T09:30:00Z"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/acceptances/{id}

Удалить приемку

operationIddeleteAcceptances
РазделПриемки
БезопасностьbearerAuth

Deletes the resource when the authenticated account has permission and the current lifecycle state allows deletion. If deletion is blocked by related records or document state, the API returns a validation error.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/acceptances/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object | null
meta да object
meta.api_version да enum enum: v2 "v2"
meta.deleted да boolean true
meta.id да integer:int64 min: 1 1001

Примеры ответа

success

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true,
    "id": 1001
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/acceptances/{id}/cancel

Cancel acceptance

operationIdcancelAcceptance
РазделПриемки
БезопасностьbearerAuth

Cancels a standard or return acceptance in status 1 (new) or 7 (arrived). Cancellation is rejected when stock is already bound to a storage place. Cross-dock acceptances must use POST /api/v2/crossdock/cases/{case}/cancel.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/acceptances/1001/cancel" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Acceptance Входящий документ приемки. Связанные поля присутствуют, когда контроллер их загрузил или они запрошены через include.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "ASN-100245"
data.document_barcode нет string | null "ASN-100245-BARCODE"
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет enum:int64 | null enum: 1, 2, 3, 4, 5, 6, 7 1 - new; 2 - accepting; 3 - checking; 4 - closed; 5 - deleted; 6 - cancelled; 7 - arrived at warehouse. 1
data.user_id нет integer:int64 | null min: 1 9
data.warehouse_id нет integer:int64 | null min: 1 42
data.shop_id нет integer:int64 | null min: 1 12
data.type_id нет enum:int64 | null enum: 1, 2, 3 1 — обычная приёмка; 2 — возврат; 3 — cross-dock-приёмка. После создания тип изменить нельзя. 1
data.type_code нет enum | null enum: acceptance, return, crossdock "acceptance"
data.comment нет string | null "Inbound from supplier"
data.counts да AcceptanceCounts
data.counts.expected да number:float 10
data.counts.accepted да number:float 0
data.counts.placed да number:float 0
data.acceptance_date нет string:date | null "2026-07-14"
data.offers нет array<AcceptanceLine>
data.offers[] нет AcceptanceLine Declared acceptance line plus live accepted/placed quantities and actual lot allocations. Placement requires a positive storage-place ID. Deleted warehouse rows are excluded.
data.offers[].id да integer:int64 readOnly min: 1 1001
data.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].acceptance_id да integer:int64 min: 1 5101
data.offers[].product_id да integer:int64 min: 1 1201
data.offers[].expected_quantity да number:float min: 0 10
data.offers[].accepted_quantity да number:float min: 0 0
data.offers[].placed_quantity да number:float min: 0 0
data.offers[].price нет number:float | null 4.99
data.offers[].batch нет string | null "LOT-2026"
data.offers[].production_date нет string:date | null "2026-01-15"
data.offers[].expiration_date нет string:date | null "2027-01-15"
data.offers[].barcode нет string | null maxLength: 64 "4601234567890"
data.offers[].product нет object | null
data.offers[].product.id да integer:int64 readOnly min: 1 1201
data.offers[].product.name да string "Coffee 250g"
data.offers[].product.external_id нет string | null "EXT-10045"
data.offers[].accepted_lots нет array<AcceptanceLot>
data.offers[].accepted_lots[] нет AcceptanceLot
data.offers[].accepted_lots[].batch да string | null "LOT-2026"
data.offers[].accepted_lots[].production_date да string:date | null "2026-01-15"
data.offers[].accepted_lots[].expiration_date да string:date | null "2027-01-15"
data.offers[].accepted_lots[].accepted_quantity да number:float min: 0 5
data.offers[].accepted_lots[].placed_quantity да number:float min: 0 3
data.crossdock_case нет object | null Cross-dock case created atomically with an acceptance of type 3.
data.crossdock_case.id да integer:int64 min: 1 1001
data.crossdock_case.public_id да string "01J2CROSSDOCKCASE000000001"
data.crossdock_case.status да enum enum: draft, planned, released, in_progress, exception, completed, cancelled "draft"
data.crossdock_case.process_version да string "direct_order_v1"
data.crossdock_case.version да integer:int64 min: 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 5101,
    "external_id": "ASN-100245",
    "document_barcode": "ASN-100245-BARCODE",
    "domain_id": 3,
    "status_id": 1,
    "user_id": 9,
    "warehouse_id": 42,
    "shop_id": 12,
    "type_id": 1,
    "comment": "Inbound from supplier",
    "counts": {
      "expected": 10,
      "accepted": 0,
      "placed": 0
    },
    "acceptance_date": "2026-07-14",
    "offers": [
      {
        "id": 7101,
        "acceptance_id": 5101,
        "product_id": 1201,
        "expected_quantity": 10,
        "accepted_quantity": 0,
        "placed_quantity": 0,
        "price": 4.99,
        "batch": "LOT-2026",
        "production_date": "2026-01-15",
        "expiration_date": "2027-01-15",
        "barcode": "4601234567890",
        "product": {
          "id": 1201,
          "name": "Coffee 250g",
          "external_id": "EXT-10045"
        },
        "created_at": "2026-07-14T09:00:00Z",
        "updated_at": "2026-07-14T09:30:00Z"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/acceptances/{id}/lines

Получить список приемок

operationIdlistAcceptancesLines
РазделПриемки
БезопасностьbearerAuth

Возвращает приемки, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/acceptances/1001/lines" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, product_id, expected_quantity, price, expiration_date, created_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "-id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
product_id query нет integer:int64 form true min: 1 Фильтр по product_id с точным совпадением. Этот фильтр также можно передать как filter[product_id], если это поддерживает Laravel query adapter. 1201
barcode query нет string form true Фильтр по barcode с частичным текстовым совпадением. Этот фильтр также можно передать как filter[barcode], если это поддерживает Laravel query adapter. "4601234567890"
batch query нет string form true Фильтр по batch с частичным текстовым совпадением. Этот фильтр также можно передать как filter[batch], если это поддерживает Laravel query adapter. "LOT-2026"
expiration_date_from query нет string:date form true Нижняя включительная граница даты для expiration_date. Этот фильтр также можно передать как filter[expiration_date_from], если это поддерживает Laravel query adapter. "2026-07-14"
expiration_date_to query нет string:date form true Верхняя включительная граница даты для expiration_date. Этот фильтр также можно передать как filter[expiration_date_to], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<AcceptanceLine>
data[] нет AcceptanceLine Declared acceptance line plus live accepted/placed quantities and actual lot allocations. Placement requires a positive storage-place ID. Deleted warehouse rows are excluded.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].acceptance_id да integer:int64 min: 1 5101
data[].product_id да integer:int64 min: 1 1201
data[].expected_quantity да number:float min: 0 10
data[].accepted_quantity да number:float min: 0 0
data[].placed_quantity да number:float min: 0 0
data[].price нет number:float | null 4.99
data[].batch нет string | null "LOT-2026"
data[].production_date нет string:date | null "2026-01-15"
data[].expiration_date нет string:date | null "2027-01-15"
data[].barcode нет string | null maxLength: 64 "4601234567890"
data[].product нет object | null
data[].product.id да integer:int64 readOnly min: 1 1201
data[].product.name да string "Coffee 250g"
data[].product.external_id нет string | null "EXT-10045"
data[].accepted_lots нет array<AcceptanceLot>
data[].accepted_lots[] нет AcceptanceLot
data[].accepted_lots[].batch да string | null "LOT-2026"
data[].accepted_lots[].production_date да string:date | null "2026-01-15"
data[].accepted_lots[].expiration_date да string:date | null "2027-01-15"
data[].accepted_lots[].accepted_quantity да number:float min: 0 5
data[].accepted_lots[].placed_quantity да number:float min: 0 3
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 7101,
      "acceptance_id": 5101,
      "product_id": 1201,
      "expected_quantity": 10,
      "accepted_quantity": 0,
      "placed_quantity": 0,
      "price": 4.99,
      "batch": "LOT-2026",
      "production_date": "2026-01-15",
      "expiration_date": "2027-01-15",
      "barcode": "4601234567890",
      "product": {
        "id": 1201,
        "name": "Coffee 250g",
        "external_id": "EXT-10045"
      },
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/acceptances/5101/lines?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/acceptances/5101/lines?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/acceptances/5101/lines?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/acceptances/5101/lines",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/acceptances/{id}/lines

Создать приемку

operationIdcreateAcceptancesLines
РазделПриемки
БезопасностьbearerAuth

Create acceptance. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/acceptances/1001/lines" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

AddAcceptanceLinesRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.lines да array<AcceptanceLineCreatePayload> minItems: 1
data.lines[] нет AcceptanceLineCreatePayload Payload строки приемки. Товар определяется по product_id или product_external_id.
data.lines[] нет object
data.lines[] нет object

Примеры запроса

default

{
  "data": {
    "lines": [
      {
        "product_external_id": "EXT-10045",
        "expected_quantity": 10
      }
    ]
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<AcceptanceLine>
data[] нет AcceptanceLine Declared acceptance line plus live accepted/placed quantities and actual lot allocations. Placement requires a positive storage-place ID. Deleted warehouse rows are excluded.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].acceptance_id да integer:int64 min: 1 5101
data[].product_id да integer:int64 min: 1 1201
data[].expected_quantity да number:float min: 0 10
data[].accepted_quantity да number:float min: 0 0
data[].placed_quantity да number:float min: 0 0
data[].price нет number:float | null 4.99
data[].batch нет string | null "LOT-2026"
data[].production_date нет string:date | null "2026-01-15"
data[].expiration_date нет string:date | null "2027-01-15"
data[].barcode нет string | null maxLength: 64 "4601234567890"
data[].product нет object | null
data[].product.id да integer:int64 readOnly min: 1 1201
data[].product.name да string "Coffee 250g"
data[].product.external_id нет string | null "EXT-10045"
data[].accepted_lots нет array<AcceptanceLot>
data[].accepted_lots[] нет AcceptanceLot
data[].accepted_lots[].batch да string | null "LOT-2026"
data[].accepted_lots[].production_date да string:date | null "2026-01-15"
data[].accepted_lots[].expiration_date да string:date | null "2027-01-15"
data[].accepted_lots[].accepted_quantity да number:float min: 0 5
data[].accepted_lots[].placed_quantity да number:float min: 0 3
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": [
    {
      "id": 7101,
      "acceptance_id": 5101,
      "product_id": 1201,
      "expected_quantity": 10,
      "accepted_quantity": 0,
      "placed_quantity": 0,
      "price": 4.99,
      "batch": "LOT-2026",
      "production_date": "2026-01-15",
      "expiration_date": "2027-01-15",
      "barcode": "4601234567890",
      "product": {
        "id": 1201,
        "name": "Coffee 250g",
        "external_id": "EXT-10045"
      },
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/acceptances/{id}/lines/{lineId}

Обновить приемку

operationIdreplaceAcceptancesLines
РазделПриемки
БезопасностьbearerAuth

Update acceptance. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/acceptances/1001/lines/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001
lineId path да integer:int64 min: 1 ID строки документа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

ReplaceAcceptanceLineRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да AcceptanceLineReplacePayload Legacy PUT payload строки. Текущий backend обрабатывает PUT как частичное обновление.
data.expected_quantity нет number:float | null min: 0 10
data.price нет number:float | null 4.99
data.batch нет string | null "LOT-2026"
data.production_date нет string:date | null "2026-01-15"
data.expiration_date нет string:date | null "2027-01-15"
data.barcode нет string | null maxLength: 64 "4601234567890"

Примеры запроса

default

{
  "data": {
    "expected_quantity": 12,
    "batch": "LOT-2026"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да AcceptanceLine Declared acceptance line plus live accepted/placed quantities and actual lot allocations. Placement requires a positive storage-place ID. Deleted warehouse rows are excluded.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.acceptance_id да integer:int64 min: 1 5101
data.product_id да integer:int64 min: 1 1201
data.expected_quantity да number:float min: 0 10
data.accepted_quantity да number:float min: 0 0
data.placed_quantity да number:float min: 0 0
data.price нет number:float | null 4.99
data.batch нет string | null "LOT-2026"
data.production_date нет string:date | null "2026-01-15"
data.expiration_date нет string:date | null "2027-01-15"
data.barcode нет string | null maxLength: 64 "4601234567890"
data.product нет object | null
data.product.id да integer:int64 readOnly min: 1 1201
data.product.name да string "Coffee 250g"
data.product.external_id нет string | null "EXT-10045"
data.accepted_lots нет array<AcceptanceLot>
data.accepted_lots[] нет AcceptanceLot
data.accepted_lots[].batch да string | null "LOT-2026"
data.accepted_lots[].production_date да string:date | null "2026-01-15"
data.accepted_lots[].expiration_date да string:date | null "2027-01-15"
data.accepted_lots[].accepted_quantity да number:float min: 0 5
data.accepted_lots[].placed_quantity да number:float min: 0 3
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7101,
    "acceptance_id": 5101,
    "product_id": 1201,
    "expected_quantity": 10,
    "accepted_quantity": 0,
    "placed_quantity": 0,
    "price": 4.99,
    "batch": "LOT-2026",
    "production_date": "2026-01-15",
    "expiration_date": "2027-01-15",
    "barcode": "4601234567890",
    "product": {
      "id": 1201,
      "name": "Coffee 250g",
      "external_id": "EXT-10045"
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/acceptances/{id}/lines/{lineId}

Обновить приемку

operationIdpatchAcceptancesLines
РазделПриемки
БезопасностьbearerAuth

Update acceptance. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/acceptances/1001/lines/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001
lineId path да integer:int64 min: 1 ID строки документа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

PatchAcceptanceLineRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да AcceptanceLinePatchPayload Редактируемые поля строки приемки. ID строки берется из path и не должен повторяться в body.
data.expected_quantity нет number:float | null min: 0 10
data.price нет number:float | null 4.99
data.batch нет string | null "LOT-2026"
data.production_date нет string:date | null "2026-01-15"
data.expiration_date нет string:date | null "2027-01-15"
data.barcode нет string | null maxLength: 64 "4601234567890"

Примеры запроса

default

{
  "data": {
    "expected_quantity": 12
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да AcceptanceLine Declared acceptance line plus live accepted/placed quantities and actual lot allocations. Placement requires a positive storage-place ID. Deleted warehouse rows are excluded.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.acceptance_id да integer:int64 min: 1 5101
data.product_id да integer:int64 min: 1 1201
data.expected_quantity да number:float min: 0 10
data.accepted_quantity да number:float min: 0 0
data.placed_quantity да number:float min: 0 0
data.price нет number:float | null 4.99
data.batch нет string | null "LOT-2026"
data.production_date нет string:date | null "2026-01-15"
data.expiration_date нет string:date | null "2027-01-15"
data.barcode нет string | null maxLength: 64 "4601234567890"
data.product нет object | null
data.product.id да integer:int64 readOnly min: 1 1201
data.product.name да string "Coffee 250g"
data.product.external_id нет string | null "EXT-10045"
data.accepted_lots нет array<AcceptanceLot>
data.accepted_lots[] нет AcceptanceLot
data.accepted_lots[].batch да string | null "LOT-2026"
data.accepted_lots[].production_date да string:date | null "2026-01-15"
data.accepted_lots[].expiration_date да string:date | null "2027-01-15"
data.accepted_lots[].accepted_quantity да number:float min: 0 5
data.accepted_lots[].placed_quantity да number:float min: 0 3
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7101,
    "acceptance_id": 5101,
    "product_id": 1201,
    "expected_quantity": 10,
    "accepted_quantity": 0,
    "placed_quantity": 0,
    "price": 4.99,
    "batch": "LOT-2026",
    "production_date": "2026-01-15",
    "expiration_date": "2027-01-15",
    "barcode": "4601234567890",
    "product": {
      "id": 1201,
      "name": "Coffee 250g",
      "external_id": "EXT-10045"
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/acceptances/{id}/lines/{lineId}

Удалить приемку

operationIddeleteAcceptancesLines
РазделПриемки
БезопасностьbearerAuth

Deletes the resource when the authenticated account has permission and the current lifecycle state allows deletion. If deletion is blocked by related records or document state, the API returns a validation error.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/acceptances/1001/lines/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001
lineId path да integer:int64 min: 1 ID строки документа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object | null
meta да object
meta.api_version да enum enum: v2 "v2"
meta.deleted да boolean true
meta.id да integer:int64 min: 1 1001

Примеры ответа

success

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true,
    "id": 1001
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/acceptances/{id}/offers deprecated

Создать приемку

operationIdcreateAcceptancesOffers
РазделПриемки
БезопасностьbearerAuth

Create acceptance. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Этот маршрут /offers является совместимым alias для /lines; в новых интеграциях используйте маршрут /lines.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/acceptances/1001/offers" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

AddAcceptanceLinesRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.lines да array<AcceptanceLineCreatePayload> minItems: 1
data.lines[] нет AcceptanceLineCreatePayload Payload строки приемки. Товар определяется по product_id или product_external_id.
data.lines[] нет object
data.lines[] нет object

Примеры запроса

default

{
  "data": {
    "lines": [
      {
        "product_external_id": "EXT-10045",
        "expected_quantity": 10
      }
    ]
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<AcceptanceLine>
data[] нет AcceptanceLine Declared acceptance line plus live accepted/placed quantities and actual lot allocations. Placement requires a positive storage-place ID. Deleted warehouse rows are excluded.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].acceptance_id да integer:int64 min: 1 5101
data[].product_id да integer:int64 min: 1 1201
data[].expected_quantity да number:float min: 0 10
data[].accepted_quantity да number:float min: 0 0
data[].placed_quantity да number:float min: 0 0
data[].price нет number:float | null 4.99
data[].batch нет string | null "LOT-2026"
data[].production_date нет string:date | null "2026-01-15"
data[].expiration_date нет string:date | null "2027-01-15"
data[].barcode нет string | null maxLength: 64 "4601234567890"
data[].product нет object | null
data[].product.id да integer:int64 readOnly min: 1 1201
data[].product.name да string "Coffee 250g"
data[].product.external_id нет string | null "EXT-10045"
data[].accepted_lots нет array<AcceptanceLot>
data[].accepted_lots[] нет AcceptanceLot
data[].accepted_lots[].batch да string | null "LOT-2026"
data[].accepted_lots[].production_date да string:date | null "2026-01-15"
data[].accepted_lots[].expiration_date да string:date | null "2027-01-15"
data[].accepted_lots[].accepted_quantity да number:float min: 0 5
data[].accepted_lots[].placed_quantity да number:float min: 0 3
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": [
    {
      "id": 7101,
      "acceptance_id": 5101,
      "product_id": 1201,
      "expected_quantity": 10,
      "accepted_quantity": 0,
      "placed_quantity": 0,
      "price": 4.99,
      "batch": "LOT-2026",
      "production_date": "2026-01-15",
      "expiration_date": "2027-01-15",
      "barcode": "4601234567890",
      "product": {
        "id": 1201,
        "name": "Coffee 250g",
        "external_id": "EXT-10045"
      },
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/acceptances/{id}/offers/{lineId} deprecated

Обновить приемку

operationIdreplaceAcceptancesOffers
РазделПриемки
БезопасностьbearerAuth

Update acceptance. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Этот маршрут /offers является совместимым alias для /lines; в новых интеграциях используйте маршрут /lines.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.
Response quantities are computed from active acceptance lines and warehouse facts, including pre-existing documents. Accepted and placed quantities differ until put-away. accepted_lots describes actual batches; top-level line lot fields remain the declared document data.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/acceptances/1001/offers/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001
lineId path да integer:int64 min: 1 ID строки документа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

ReplaceAcceptanceLineRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да AcceptanceLineReplacePayload Legacy PUT payload строки. Текущий backend обрабатывает PUT как частичное обновление.
data.expected_quantity нет number:float | null min: 0 10
data.price нет number:float | null 4.99
data.batch нет string | null "LOT-2026"
data.production_date нет string:date | null "2026-01-15"
data.expiration_date нет string:date | null "2027-01-15"
data.barcode нет string | null maxLength: 64 "4601234567890"

Примеры запроса

default

{
  "data": {
    "expected_quantity": 12,
    "batch": "LOT-2026"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да AcceptanceLine Declared acceptance line plus live accepted/placed quantities and actual lot allocations. Placement requires a positive storage-place ID. Deleted warehouse rows are excluded.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.acceptance_id да integer:int64 min: 1 5101
data.product_id да integer:int64 min: 1 1201
data.expected_quantity да number:float min: 0 10
data.accepted_quantity да number:float min: 0 0
data.placed_quantity да number:float min: 0 0
data.price нет number:float | null 4.99
data.batch нет string | null "LOT-2026"
data.production_date нет string:date | null "2026-01-15"
data.expiration_date нет string:date | null "2027-01-15"
data.barcode нет string | null maxLength: 64 "4601234567890"
data.product нет object | null
data.product.id да integer:int64 readOnly min: 1 1201
data.product.name да string "Coffee 250g"
data.product.external_id нет string | null "EXT-10045"
data.accepted_lots нет array<AcceptanceLot>
data.accepted_lots[] нет AcceptanceLot
data.accepted_lots[].batch да string | null "LOT-2026"
data.accepted_lots[].production_date да string:date | null "2026-01-15"
data.accepted_lots[].expiration_date да string:date | null "2027-01-15"
data.accepted_lots[].accepted_quantity да number:float min: 0 5
data.accepted_lots[].placed_quantity да number:float min: 0 3
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7101,
    "acceptance_id": 5101,
    "product_id": 1201,
    "expected_quantity": 10,
    "accepted_quantity": 0,
    "placed_quantity": 0,
    "price": 4.99,
    "batch": "LOT-2026",
    "production_date": "2026-01-15",
    "expiration_date": "2027-01-15",
    "barcode": "4601234567890",
    "product": {
      "id": 1201,
      "name": "Coffee 250g",
      "external_id": "EXT-10045"
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/acceptances/{id}/offers/{lineId} deprecated

Удалить приемку

operationIddeleteAcceptancesOffers
РазделПриемки
БезопасностьbearerAuth

Deletes the resource when the authenticated account has permission and the current lifecycle state allows deletion. If deletion is blocked by related records or document state, the API returns a validation error.
Этот маршрут /offers является совместимым alias для /lines; в новых интеграциях используйте маршрут /lines.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/acceptances/1001/offers/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID приемки. 1001
lineId path да integer:int64 min: 1 ID строки документа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object | null
meta да object
meta.api_version да enum enum: v2 "v2"
meta.deleted да boolean true
meta.id да integer:int64 min: 1 1001

Примеры ответа

success

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true,
    "id": 1001
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Аккаунт

GET /api/v2/me

Получить текущего пользователя

operationIdgetCurrentUser
РазделАккаунт
БезопасностьbearerAuth

Возвращает один ресурс: аккаунт, если он существует и видим аутентифицированному аккаунту.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/me" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

У операции нет path, query или header параметров.

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да User Аутентифицированный или видимый пользователь NWMS.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.name да string "Client Manager"
data.email да string:email "client.manager@nwms.cloud"
data.language нет string | null "en"
data.storage_id нет string | null "default"
data.domain_id нет integer:int64 | null min: 1 3
data.warehouse_id нет integer:int64 | null min: 1 42
data.parent_id нет integer:int64 | null min: 1 15
data.data_scope нет string | null "domain"
data.roles нет array<string>
data.roles[] нет string "clients"
data.domain нет object | null
data.domain.id да integer:int64 min: 1 3
data.domain.name да string "Demo Domain"
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Warehouse Sofia"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 15,
    "name": "Client Manager",
    "email": "client.manager@nwms.cloud",
    "language": "en",
    "storage_id": "default",
    "domain_id": 3,
    "warehouse_id": 42,
    "parent_id": null,
    "data_scope": "domain",
    "roles": [
      "clients"
    ],
    "domain": {
      "id": 3,
      "name": "Demo Domain"
    },
    "warehouse": {
      "id": 42,
      "name": "Warehouse Sofia"
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Closed Boxes

GET /api/v2/closed-boxes

List closed boxes currently in stock

operationIdlistClosedBoxes
РазделClosed Boxes
БезопасностьbearerAuth

Returns only sealed physical handling units that have a unique SSCC and a positive current warehouse ledger row. Each result represents one unique physical box, so balance=1 and balance_unit=box. warehouse_id identifies the client stock warehouse; physical_warehouse_id identifies the fulfillment warehouse where the box is physically located.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/closed-boxes" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, sscc, warehouse_id, physical_warehouse_id, created_at, updated_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
public_id query нет string form true Фильтр по public_id с точным совпадением. Этот фильтр также можно передать как filter[public_id], если это поддерживает Laravel query adapter. "4fe557e8-70f7-4b36-a124-d3afad4041d4"
sscc query нет string form true Фильтр по sscc с точным совпадением. Этот фильтр также можно передать как filter[sscc], если это поддерживает Laravel query adapter. "038123450000000013"
warehouse_id query нет integer:int64 form true min: 1 Фильтр по warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[warehouse_id], если это поддерживает Laravel query adapter. 42
physical_warehouse_id query нет integer:int64 form true min: 1 Фильтр по physical_warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[physical_warehouse_id], если это поддерживает Laravel query adapter. 41
package_product_id query нет integer:int64 form true min: 1 Фильтр по package_product_id с точным совпадением. Этот фильтр также можно передать как filter[package_product_id], если это поддерживает Laravel query adapter. 1202
product_id query нет integer:int64 form true min: 1 Фильтр по product_id с точным совпадением. Этот фильтр также можно передать как filter[product_id], если это поддерживает Laravel query adapter. 1201
base_product_id query нет integer:int64 form true min: 1 Фильтр по base_product_id с точным совпадением. Этот фильтр также можно передать как filter[base_product_id], если это поддерживает Laravel query adapter. 1200
status query нет string form true Фильтр по status с точным совпадением. Этот фильтр также можно передать как filter[status], если это поддерживает Laravel query adapter. "waiting"
case_id query нет integer:int64 form true min: 1 Фильтр по case_id с точным совпадением. Этот фильтр также можно передать как filter[case_id], если это поддерживает Laravel query adapter. 1
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
updated_at_from query нет string:date form true Нижняя включительная граница даты для updated_at. Этот фильтр также можно передать как filter[updated_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
updated_at_to query нет string:date form true Верхняя включительная граница даты для updated_at. Этот фильтр также можно передать как filter[updated_at_to], если это поддерживает Laravel query adapter. "2026-07-14"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<ClosedBox>
data[] нет ClosedBox One sealed physical handling unit identified by a unique SSCC and currently present in warehouse stock. warehouse_id is the client stock warehouse; physical_warehouse_id is the fulfillment warehouse where the box is physically located.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at да string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at да string:date-time | null "2026-07-14T10:30:00Z"
data[].public_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data[].sscc да string minLength: 18
maxLength: 18
pattern: ^\d{18}$
Unique normalized GS1 SSCC. Leading zeroes are preserved. "038123450000000013"
data[].warehouse_id да integer:int64 | null min: 1 42
data[].warehouse_name да string | null "Client warehouse Sofia"
data[].physical_warehouse_id да integer:int64 min: 1 41
data[].physical_warehouse_name да string | null "FF warehouse Sofia"
data[].balance да enum:int64 min: 1
max: 1
enum: 1
Current balance of this unique SSCC in boxes. A row is returned only while the sealed box is in stock, therefore the value is always 1. 1
data[].balance_unit да enum enum: box "box"
data[].status да string "routed"
data[].seal_state да enum enum: sealed "sealed"
data[].box_type да string "box"
data[].barcode да string minLength: 1
maxLength: 190
"038123450000000013"
data[].package_product_id да integer:int64 | null min: 1 1202
data[].package_product_name да string | null "Coffee box 12"
data[].container_place_id да integer:int64 | null min: 1 5501
data[].place_id да integer:int64 | null min: 1 501
data[].place_barcode да string | null "SHELF-501"
data[].contents да array<ClosedBoxItem>
data[].contents[] нет ClosedBoxItem
data[].contents[].product_id да integer:int64 min: 1 1202
data[].contents[].product_name да string | null "Coffee box 12"
data[].contents[].base_product_id да integer:int64 min: 1 1201
data[].contents[].base_product_name да string | null "Coffee 250g"
data[].contents[].quantity да number:float min: 0 Recorded quantity in product units. For a quant product this is the number of boxes. 1
data[].contents[].base_quantity да number:float min: 0 Recorded quantity converted to base product units. 12
data[].contents[].current_quantity да number:float min: 0 Current positive quantity in the warehouse ledger row linked to this box content. 1
data[].contents[].batch да string | null "LOT-2026"
data[].contents[].production_date да string:date | null "2026-01-15"
data[].contents[].expiration_date да string:date | null "2027-01-15"
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 5501,
      "public_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
      "sscc": "038123450000000013",
      "warehouse_id": 42,
      "warehouse_name": "Client warehouse Sofia",
      "physical_warehouse_id": 41,
      "physical_warehouse_name": "FF warehouse Sofia",
      "balance": 1,
      "balance_unit": "box",
      "status": "routed",
      "seal_state": "sealed",
      "box_type": "box",
      "barcode": "038123450000000013",
      "package_product_id": 1202,
      "package_product_name": "Coffee box 12",
      "container_place_id": 5501,
      "place_id": 501,
      "place_barcode": "SHELF-501",
      "contents": [
        {
          "product_id": 1202,
          "product_name": "Coffee box 12",
          "base_product_id": 1201,
          "base_product_name": "Coffee 250g",
          "quantity": 1,
          "base_quantity": 12,
          "current_quantity": 1,
          "batch": "LOT-2026",
          "production_date": "2026-01-15",
          "expiration_date": "2027-01-15"
        }
      ],
      "created_at": "2026-08-12T09:00:00Z",
      "updated_at": "2026-08-12T09:30:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/closed-boxes?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/closed-boxes?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/closed-boxes?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/closed-boxes",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/closed-boxes/{box}

Get one closed box

operationIdgetClosedBox
РазделClosed Boxes
БезопасностьbearerAuth

Returns one current sealed box by internal numeric ID, public UUID, or exact 18-digit SSCC. Opened, shipped, cancelled, consumed, expected-only, and zero-balance handling units return 404.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/closed-boxes/038123450000000013" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
box path да string Closed box internal ID, public UUID, or 18-digit SSCC. "038123450000000013"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да ClosedBox One sealed physical handling unit identified by a unique SSCC and currently present in warehouse stock. warehouse_id is the client stock warehouse; physical_warehouse_id is the fulfillment warehouse where the box is physically located.
data.id да integer:int64 readOnly min: 1 1001
data.created_at да string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at да string:date-time | null "2026-07-14T10:30:00Z"
data.public_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.sscc да string minLength: 18
maxLength: 18
pattern: ^\d{18}$
Unique normalized GS1 SSCC. Leading zeroes are preserved. "038123450000000013"
data.warehouse_id да integer:int64 | null min: 1 42
data.warehouse_name да string | null "Client warehouse Sofia"
data.physical_warehouse_id да integer:int64 min: 1 41
data.physical_warehouse_name да string | null "FF warehouse Sofia"
data.balance да enum:int64 min: 1
max: 1
enum: 1
Current balance of this unique SSCC in boxes. A row is returned only while the sealed box is in stock, therefore the value is always 1. 1
data.balance_unit да enum enum: box "box"
data.status да string "routed"
data.seal_state да enum enum: sealed "sealed"
data.box_type да string "box"
data.barcode да string minLength: 1
maxLength: 190
"038123450000000013"
data.package_product_id да integer:int64 | null min: 1 1202
data.package_product_name да string | null "Coffee box 12"
data.container_place_id да integer:int64 | null min: 1 5501
data.place_id да integer:int64 | null min: 1 501
data.place_barcode да string | null "SHELF-501"
data.contents да array<ClosedBoxItem>
data.contents[] нет ClosedBoxItem
data.contents[].product_id да integer:int64 min: 1 1202
data.contents[].product_name да string | null "Coffee box 12"
data.contents[].base_product_id да integer:int64 min: 1 1201
data.contents[].base_product_name да string | null "Coffee 250g"
data.contents[].quantity да number:float min: 0 Recorded quantity in product units. For a quant product this is the number of boxes. 1
data.contents[].base_quantity да number:float min: 0 Recorded quantity converted to base product units. 12
data.contents[].current_quantity да number:float min: 0 Current positive quantity in the warehouse ledger row linked to this box content. 1
data.contents[].batch да string | null "LOT-2026"
data.contents[].production_date да string:date | null "2026-01-15"
data.contents[].expiration_date да string:date | null "2027-01-15"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 5501,
    "public_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "sscc": "038123450000000013",
    "warehouse_id": 42,
    "warehouse_name": "Client warehouse Sofia",
    "physical_warehouse_id": 41,
    "physical_warehouse_name": "FF warehouse Sofia",
    "balance": 1,
    "balance_unit": "box",
    "status": "routed",
    "seal_state": "sealed",
    "box_type": "box",
    "barcode": "038123450000000013",
    "package_product_id": 1202,
    "package_product_name": "Coffee box 12",
    "container_place_id": 5501,
    "place_id": 501,
    "place_barcode": "SHELF-501",
    "contents": [
      {
        "product_id": 1202,
        "product_name": "Coffee box 12",
        "base_product_id": 1201,
        "base_product_name": "Coffee 250g",
        "quantity": 1,
        "base_quantity": 12,
        "current_quantity": 1,
        "batch": "LOT-2026",
        "production_date": "2026-01-15",
        "expiration_date": "2027-01-15"
      }
    ],
    "created_at": "2026-08-12T09:00:00Z",
    "updated_at": "2026-08-12T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

DataMatrix

GET /api/v2/datamatrix

Получить список DataMatrix

operationIdlistDataMatrix
РазделDataMatrix
БезопасностьbearerAuth

Returns codes visible to the authenticated account. accepted_at and shipped_at are read-only ISO 8601 timestamps with an explicit installation timezone offset, or null. Each is the latest recorded acceptance/shipment event for this code in its CURRENT domain and warehouse; document dates and marking/extinguishing dates are never substituted. Historical events not recorded by the system remain null. Import and manual status changes do not create physical acceptance/shipment events. These fields are available from GET /api/v2/datamatrix; do not send them to create/status commands.
Use accepted_at_from / accepted_at_to or shipped_at_from / shipped_at_to at the query root or inside filter[...]. A YYYY-MM-DD boundary is interpreted in the installation timezone; _to includes the entire day. An ISO timestamp must include seconds and Z or an explicit offset (e.g. 2026-10-22T10:00:00+03:00); fractional seconds are not accepted. Exact time boundaries are inclusive and compared in UTC. Encode + as %2B in URLs, or use curl --data-urlencode. Invalid dates, arrays and reversed ranges return HTTP 422. Either bound may be omitted; different field ranges are combined with AND. Null dates do not match a nonempty range.
Sort by accepted_at, shipped_at (prefix - for descending); comma-separated sort keys are supported. Equal values use the code ID ascending as a final tie-breaker. Nulls sort first ascending and last descending. Without the lifecycle event table these fields are null and event date filters return an empty list. This table is required for operational date tracking. Date ranges select the latest per-code event, not an event history or a reliable incremental change cursor.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/datamatrix" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Comma-separated sort fields: id, status_id, warehouse_id, created_at, updated_at, used_at, accepted_at, shipped_at. Prefix - for descending. Default: -id. Equal values use code ID ascending as a final tie-breaker. Nulls first ascending, last descending. "-id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
status_id query нет DataMatrixStatusId form true Фильтр по status_id с точным совпадением. Этот фильтр также можно передать как filter[status_id], если это поддерживает Laravel query adapter.
warehouse_id query нет integer:int64 form true min: 1 Фильтр по warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[warehouse_id], если это поддерживает Laravel query adapter. 42
acceptance_id query нет integer:int64 form true min: 1 Фильтр по acceptance_id с точным совпадением. Этот фильтр также можно передать как filter[acceptance_id], если это поддерживает Laravel query adapter. 1
order_id query нет integer:int64 form true min: 1 Фильтр по order_id с точным совпадением. Этот фильтр также можно передать как filter[order_id], если это поддерживает Laravel query adapter. 1
product_id query нет integer:int64 form true min: 1 Фильтр по product_id с точным совпадением. Этот фильтр также можно передать как filter[product_id], если это поддерживает Laravel query adapter. 1201
barcode query нет string form true Фильтр по barcode с частичным текстовым совпадением. Этот фильтр также можно передать как filter[barcode], если это поддерживает Laravel query adapter. "4601234567890"
datamatrix query нет string form true Фильтр по datamatrix с частичным текстовым совпадением. Этот фильтр также можно передать как filter[datamatrix], если это поддерживает Laravel query adapter. "010460123456789021ABC123"
short_code query нет string form true Фильтр по short_code с частичным текстовым совпадением. Этот фильтр также можно передать как filter[short_code], если это поддерживает Laravel query adapter. "ABC123"
batch query нет string form true Фильтр по batch с частичным текстовым совпадением. Этот фильтр также можно передать как filter[batch], если это поддерживает Laravel query adapter. "LOT-2026"
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
used_at_from query нет string:date form true Нижняя включительная граница даты для used_at. Этот фильтр также можно передать как filter[used_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
used_at_to query нет string:date form true Верхняя включительная граница даты для used_at. Этот фильтр также можно передать как filter[used_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
production_date_from query нет string:date form true Нижняя включительная граница даты для production_date. Этот фильтр также можно передать как filter[production_date_from], если это поддерживает Laravel query adapter. "2026-07-14"
production_date_to query нет string:date form true Верхняя включительная граница даты для production_date. Этот фильтр также можно передать как filter[production_date_to], если это поддерживает Laravel query adapter. "2026-07-14"
expiration_date_from query нет string:date form true Нижняя включительная граница даты для expiration_date. Этот фильтр также можно передать как filter[expiration_date_from], если это поддерживает Laravel query adapter. "2026-07-14"
expiration_date_to query нет string:date form true Верхняя включительная граница даты для expiration_date. Этот фильтр также можно передать как filter[expiration_date_to], если это поддерживает Laravel query adapter. "2026-07-14"
accepted_at_from query нет string Inclusive lower bound for accepted_at. YYYY-MM-DD (installation timezone, full end day) or ISO 8601 with seconds and Z/offset (inclusive exact time). No fractional seconds. Also accepts filter[accepted_at_from]. Invalid/reversed bounds: 422. "2026-10-22"
accepted_at_to query нет string Upper bound for accepted_at. YYYY-MM-DD (installation timezone, full end day) or ISO 8601 with seconds and Z/offset (inclusive exact time). No fractional seconds. Also accepts filter[accepted_at_to]. Invalid/reversed bounds: 422. "2026-10-22"
shipped_at_from query нет string Inclusive lower bound for shipped_at. YYYY-MM-DD (installation timezone, full end day) or ISO 8601 with seconds and Z/offset (inclusive exact time). No fractional seconds. Also accepts filter[shipped_at_from]. Invalid/reversed bounds: 422. "2026-10-22"
shipped_at_to query нет string Upper bound for shipped_at. YYYY-MM-DD (installation timezone, full end day) or ISO 8601 with seconds and Z/offset (inclusive exact time). No fractional seconds. Also accepts filter[shipped_at_to]. Invalid/reversed bounds: 422. "2026-10-22"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<DataMatrix>
data[] нет DataMatrix Код DataMatrix для маркированного товара.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date | null readOnly Stored code upload date; date precision. "2026-10-19"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].domain_id нет integer:int64 | null min: 1 3
data[].warehouse_id нет integer:int64 | null min: 1 42
data[].status_id нет enum:int64 | null enum: 0, 1, 2 0 - Imported and available for future warehouse operations. 1 - Reserved or attached by an operational document. 2 - Used by an outbound or completed operation. 0
data[].acceptance_id нет integer:int64 | null min: 1 5101
data[].order_id нет integer:int64 | null min: 1 8101
data[].product_id нет integer:int64 | null min: 1 1201
data[].barcode нет string | null maxLength: 14 "04601234567890"
data[].short_code нет string | null maxLength: 14 "ABC123"
data[].crypto_tail нет string | null "CRYPTO"
data[].datamatrix нет string | null maxLength: 125 "010460123456789021ABC123"
data[].production_date нет string:date | null "2026-01-15"
data[].expiration_date нет string:date | null "2027-01-15"
data[].batch нет string | null "LOT-2026"
data[].used_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].accepted_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data[].shipped_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 6101,
      "domain_id": 3,
      "warehouse_id": 42,
      "status_id": 0,
      "acceptance_id": 5101,
      "order_id": null,
      "product_id": 1201,
      "barcode": "04601234567890",
      "short_code": "ABC123",
      "crypto_tail": "CRYPTO",
      "datamatrix": "010460123456789021ABC123",
      "production_date": "2026-01-15",
      "expiration_date": "2027-01-15",
      "batch": "LOT-2026",
      "created_at": "2026-10-19",
      "used_at": null,
      "accepted_at": "2026-10-22T10:00:00+03:00",
      "shipped_at": null
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/datamatrix?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/datamatrix?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/datamatrix?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/datamatrix",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}
POST /api/v2/datamatrix

Создать DataMatrix

operationIdcreateDataMatrix
РазделDataMatrix
БезопасностьbearerAuth

Imports one or more DataMatrix codes. Batch rate limits and idempotency protect repeated imports.
Listing without order_id is supported. order_id accepts one value, comma-separated values or repeated array parameters; order_ids is unsupported. Statuses: 0 unused, 1 in warehouse (possibly assigned to an order), 2 extinguished. created_at and used_at have date precision; there is no reliable updated_at/change cursor for reassignment or cancellation.
Listing without order_id is supported. order_id accepts one value, comma-separated values or repeated array parameters; order_ids is unsupported. Statuses: 0 unused, 1 in warehouse (possibly assigned to an order), 2 extinguished. created_at and used_at have date precision; there is no reliable updated_at/change cursor for reassignment or cancellation.
Listing without order_id is supported. order_id accepts one value, comma-separated values or repeated array parameters; order_ids is unsupported. Statuses: 0 unused, 1 in warehouse (possibly assigned to an order), 2 extinguished. created_at and used_at have date precision; there is no reliable updated_at/change cursor for reassignment or cancellation.
Listing without order_id is supported. order_id accepts one value, comma-separated values or repeated array parameters; order_ids is unsupported. Statuses: 0 unused, 1 in warehouse (possibly assigned to an order), 2 extinguished. created_at and used_at have date precision; there is no reliable updated_at/change cursor for reassignment or cancellation.
Listing without order_id is supported. order_id accepts one value, comma-separated values or repeated array parameters; order_ids is unsupported. Statuses: 0 unused, 1 in warehouse (possibly assigned to an order), 2 extinguished. created_at and used_at have date precision; there is no reliable updated_at/change cursor for reassignment or cancellation.
Listing without order_id is supported. order_id accepts one value, comma-separated values or repeated array parameters; order_ids is unsupported. Statuses: 0 unused, 1 in warehouse (possibly assigned to an order), 2 extinguished. created_at and used_at have date precision; there is no reliable updated_at/change cursor for reassignment or cancellation.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/datamatrix" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CreateDataMatrixRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateDataMatrixItemPayload
data да array<CreateDataMatrixItemPayload> minItems: 1
maxItems: 5000
data да object
data.items да array<CreateDataMatrixItemPayload> minItems: 1
maxItems: 5000

Примеры запроса

default

{
  "data": {
    "items": [
      {
        "warehouse_id": 42,
        "product_id": 1201,
        "barcode": "04601234567890",
        "datamatrix": "010460123456789021ABC123"
      },
      {
        "warehouse_id": 42,
        "product_id": 1201,
        "barcode": "04601234567891",
        "datamatrix": "010460123456789021ABC124"
      }
    ]
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да DataMatrixImportResult
data.created да integer:int64 min: 0 2
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "created": 2
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/datamatrix

Удалить DataMatrix

operationIddeleteDataMatrix
РазделDataMatrix
БезопасностьbearerAuth

Deletes the resource when the authenticated account has permission and the current lifecycle state allows deletion. If deletion is blocked by related records or document state, the API returns a validation error.
Listing without order_id is supported. order_id accepts one value, comma-separated values or repeated array parameters; order_ids is unsupported. Statuses: 0 unused, 1 in warehouse (possibly assigned to an order), 2 extinguished. created_at and used_at have date precision; there is no reliable updated_at/change cursor for reassignment or cancellation.
Listing without order_id is supported. order_id accepts one value, comma-separated values or repeated array parameters; order_ids is unsupported. Statuses: 0 unused, 1 in warehouse (possibly assigned to an order), 2 extinguished. created_at and used_at have date precision; there is no reliable updated_at/change cursor for reassignment or cancellation.
Listing without order_id is supported. order_id accepts one value, comma-separated values or repeated array parameters; order_ids is unsupported. Statuses: 0 unused, 1 in warehouse (possibly assigned to an order), 2 extinguished. created_at and used_at have date precision; there is no reliable updated_at/change cursor for reassignment or cancellation.
Listing without order_id is supported. order_id accepts one value, comma-separated values or repeated array parameters; order_ids is unsupported. Statuses: 0 unused, 1 in warehouse (possibly assigned to an order), 2 extinguished. created_at and used_at have date precision; there is no reliable updated_at/change cursor for reassignment or cancellation.
Listing without order_id is supported. order_id accepts one value, comma-separated values or repeated array parameters; order_ids is unsupported. Statuses: 0 unused, 1 in warehouse (possibly assigned to an order), 2 extinguished. created_at and used_at have date precision; there is no reliable updated_at/change cursor for reassignment or cancellation.
Listing without order_id is supported. order_id accepts one value, comma-separated values or repeated array parameters; order_ids is unsupported. Statuses: 0 unused, 1 in warehouse (possibly assigned to an order), 2 extinguished. created_at and used_at have date precision; there is no reliable updated_at/change cursor for reassignment or cancellation.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/datamatrix" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

DeleteDataMatrixRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да DataMatrixIdsPayload
data.ids да array<integer:int64> minItems: 1
maxItems: 10000
data.ids[] нет integer:int64 min: 1 6101

Примеры запроса

default

{
  "data": {
    "ids": [
      6101,
      6102
    ]
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да DataMatrixDeleteResult
data.deleted да integer:int64 min: 0 1
data.skipped да integer:int64 min: 0 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "deleted": 1,
    "skipped": 1
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/datamatrix/status

Обновить статус DataMatrix

operationIdupdateDataMatrixStatus
РазделDataMatrix
БезопасностьbearerAuth

Changes the status of multiple DataMatrix codes after verifying all IDs belong to the caller visible domain.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/datamatrix/status" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

ReplaceDataMatrixStatusRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.ids да array<integer:int64> minItems: 1
maxItems: 10000
data.ids[] нет integer:int64 min: 1 6101
data.status_id да DataMatrixStatusId enum: 0, 1, 2 0 - Imported and available for future warehouse operations. 1 - Reserved or attached by an operational document. 2 - Used by an outbound or completed operation. 0

Примеры запроса

default

{
  "data": {
    "ids": [
      6101,
      6102
    ],
    "status_id": 1
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да DataMatrixStatusUpdateResult
data.updated да integer:int64 min: 0 2
data.dmt_status да DataMatrixStatusId enum: 0, 1, 2 0 - Imported and available for future warehouse operations. 1 - Reserved or attached by an operational document. 2 - Used by an outbound or completed operation. 0
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "updated": 2,
    "dmt_status": 1
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/datamatrix/status

Обновить статус DataMatrix

operationIdupdateDataMatrixStatusByPath
РазделDataMatrix
БезопасностьbearerAuth

Update DataMatrix status. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/datamatrix/status" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

PatchDataMatrixStatusRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.ids да array<integer:int64> minItems: 1
maxItems: 10000
data.ids[] нет integer:int64 min: 1 6101
data.status_id да DataMatrixStatusId enum: 0, 1, 2 0 - Imported and available for future warehouse operations. 1 - Reserved or attached by an operational document. 2 - Used by an outbound or completed operation. 0

Примеры запроса

default

{
  "data": {
    "ids": [
      6101,
      6102
    ],
    "status_id": 1
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да DataMatrixStatusUpdateResult
data.updated да integer:int64 min: 0 2
data.dmt_status да DataMatrixStatusId enum: 0, 1, 2 0 - Imported and available for future warehouse operations. 1 - Reserved or attached by an operational document. 2 - Used by an outbound or completed operation. 0
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "updated": 2,
    "dmt_status": 1
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Платежи доставки

GET /api/v2/order-delivery-payments

Получить список платежей доставки

operationIdlistOrderDeliveryPayments
РазделПлатежи доставки
БезопасностьbearerAuth

Возвращает платежи доставки, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/order-delivery-payments" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 250
Количество записей на странице. По умолчанию 50; максимум 250. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 50
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, order_id, track_id, delivery_sum, cod_sum, created_at, updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "-id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
order_id query нет integer:int64 form true min: 1 Фильтр по order_id с точным совпадением. Этот фильтр также можно передать как filter[order_id], если это поддерживает Laravel query adapter. 1
status_id query нет integer:int64 form true min: 1 Фильтр по status_id с точным совпадением. Этот фильтр также можно передать как filter[status_id], если это поддерживает Laravel query adapter. 1
payment_order_id query нет integer:int64 form true min: 1 Фильтр по payment_order_id с точным совпадением. Этот фильтр также можно передать как filter[payment_order_id], если это поддерживает Laravel query adapter. 9401
transaction_id query нет integer:int64 form true min: 1 Фильтр по transaction_id с точным совпадением. Этот фильтр также можно передать как filter[transaction_id], если это поддерживает Laravel query adapter. 9501
cod_act_id query нет integer:int64 form true min: 1 Фильтр по cod_act_id с точным совпадением. Этот фильтр также можно передать как filter[cod_act_id], если это поддерживает Laravel query adapter. 9601
track_id query нет string form true Фильтр по track_id с частичным текстовым совпадением. Этот фильтр также можно передать как filter[track_id], если это поддерживает Laravel query adapter. "CDEK-123456789"
etalon_order_id query нет string form true Фильтр по etalon_order_id с частичным текстовым совпадением. Этот фильтр также можно передать как filter[etalon_order_id], если это поддерживает Laravel query adapter. "EXT-10045"
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
updated_at_from query нет string:date form true Нижняя включительная граница даты для updated_at. Этот фильтр также можно передать как filter[updated_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
updated_at_to query нет string:date form true Верхняя включительная граница даты для updated_at. Этот фильтр также можно передать как filter[updated_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
delivery_sum_from query нет number:float form true Нижняя включительная числовая граница для delivery_sum. Этот фильтр также можно передать как filter[delivery_sum_from], если это поддерживает Laravel query adapter. 48.58
delivery_sum_to query нет number:float form true Верхняя включительная числовая граница для delivery_sum. Этот фильтр также можно передать как filter[delivery_sum_to], если это поддерживает Laravel query adapter. 48.58
cod_sum_from query нет number:float form true Нижняя включительная числовая граница для cod_sum. Этот фильтр также можно передать как filter[cod_sum_from], если это поддерживает Laravel query adapter. 48.58
cod_sum_to query нет number:float form true Верхняя включительная числовая граница для cod_sum. Этот фильтр также можно передать как filter[cod_sum_to], если это поддерживает Laravel query adapter. 48.58

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<OrderDeliveryPayment>
data[] нет OrderDeliveryPayment Строка сверки платежей доставки.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].domain_id нет integer:int64 | null min: 1 3
data[].order_id нет integer:int64 | null min: 1 8101
data[].track_id нет string | null "CDEK-123456789"
data[].amounts да OrderDeliveryPaymentAmounts
data[].amounts.delivery_sum нет number:float | null 8.6
data[].amounts.delivery_tax нет number:float | null 1.72
data[].amounts.cod_sum нет number:float | null 48.58
data[].amounts.cod_agent_sum нет number:float | null 1.5
data[].status_id нет integer:int64 | null 1
data[].payment_order_id нет integer:int64 | null min: 1 9401
data[].etalon_order_id нет string | null "EXT-10045"
data[].transaction_id нет integer:int64 | null min: 1 9501
data[].cod_act_id нет integer:int64 | null min: 1 9601
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 9301,
      "domain_id": 3,
      "order_id": 8101,
      "track_id": "CDEK-123456789",
      "amounts": {
        "delivery_sum": 8.6,
        "delivery_tax": 1.72,
        "cod_sum": 48.58,
        "cod_agent_sum": 1.5
      },
      "status_id": 1,
      "payment_order_id": 9401,
      "etalon_order_id": "EXT-10045",
      "transaction_id": 9501,
      "cod_act_id": 9601,
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/order-delivery-payments?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/order-delivery-payments?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/order-delivery-payments?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/order-delivery-payments",
    "per_page": 50,
    "to": 50,
    "total": 73
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Визиты погрузки

GET /api/v2/loading/visits

Получить список визитов погрузки

operationIdlistLoadingVisits
РазделВизиты погрузки
БезопасностьbearerAuth

Возвращает визиты погрузки, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/loading/visits" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 250
Количество записей на странице. По умолчанию 50; максимум 250. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 50
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, planned_at, registered_at, queue_number, created_at, updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "-id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
warehouse_id query нет integer:int64 form true min: 1 Фильтр по warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[warehouse_id], если это поддерживает Laravel query adapter. 42
client_warehouse_id query нет integer:int64 form true min: 1 Фильтр по client_warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[client_warehouse_id], если это поддерживает Laravel query adapter. 43
shop_id query нет integer:int64 form true min: 1 Фильтр по shop_id с точным совпадением. Этот фильтр также можно передать как filter[shop_id], если это поддерживает Laravel query adapter. 12
type query нет LoadingVisitType form true Фильтр по type с точным совпадением. Этот фильтр также можно передать как filter[type], если это поддерживает Laravel query adapter.
status query нет LoadingVisitStatus form true Фильтр по status с точным совпадением. Этот фильтр также можно передать как filter[status], если это поддерживает Laravel query adapter.
document_type query нет LoadingVisitDocumentType form true Фильтр по document_type с точным совпадением. Этот фильтр также можно передать как filter[document_type], если это поддерживает Laravel query adapter.
document_id query нет integer:int64 form true min: 1 Фильтр по document_id с точным совпадением. Этот фильтр также можно передать как filter[document_id], если это поддерживает Laravel query adapter. 5101
driver_phone query нет string form true Фильтр по driver_phone с частичным текстовым совпадением. Этот фильтр также можно передать как filter[driver_phone], если это поддерживает Laravel query adapter. "+359888123456"
driver_name query нет string form true Фильтр по driver_name с частичным текстовым совпадением. Этот фильтр также можно передать как filter[driver_name], если это поддерживает Laravel query adapter. "Ivan Petrov"
vehicle_number query нет string form true Фильтр по vehicle_number с частичным текстовым совпадением. Этот фильтр также можно передать как filter[vehicle_number], если это поддерживает Laravel query adapter. "CB1234AB"
planned_at_from query нет string:date form true Нижняя включительная граница даты для planned_at. Этот фильтр также можно передать как filter[planned_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
planned_at_to query нет string:date form true Верхняя включительная граница даты для planned_at. Этот фильтр также можно передать как filter[planned_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
registered_at_from query нет string:date form true Нижняя включительная граница даты для registered_at. Этот фильтр также можно передать как filter[registered_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
registered_at_to query нет string:date form true Верхняя включительная граница даты для registered_at. Этот фильтр также можно передать как filter[registered_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<LoadingVisit>
data[] нет LoadingVisit Запланированный визит погрузки или разгрузки.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].domain_id нет integer:int64 | null min: 1 3
data[].warehouse_id нет integer:int64 | null min: 1 42
data[].client_warehouse_id нет integer:int64 | null min: 1 43
data[].shop_id нет integer:int64 | null min: 1 12
data[].user_id нет integer:int64 | null min: 1 9
data[].type да LoadingVisitType enum: inbound, outbound "inbound"
data[].status да LoadingVisitStatus enum: draft, approved, waiting, called, in_progress, finished, cancelled, no_show Статус жизненного цикла визита погрузки, хранящийся в rwLoadingVisit. "waiting"
data[].queue_number нет integer:int64 | null 17
data[].driver да LoadingVisitDriver
data[].driver.phone нет string | null "+359888123456"
data[].driver.name нет string | null "Ivan Petrov"
data[].driver.vehicle_number нет string | null "CB1234AB"
data[].document да LoadingVisitDocument
data[].document.type нет enum | null enum: acceptance, order, send_document "acceptance"
data[].document.id нет integer:int64 | null min: 1 5101
data[].document.acceptance_id нет integer:int64 | null min: 1 5101
data[].document.order_id нет integer:int64 | null min: 1 8101
data[].document.send_document_id нет integer:int64 | null min: 1 9101
data[].planned_at нет string:date-time | null "2026-07-14T10:00:00Z"
data[].registered_at нет string:date-time | null "2026-07-14T09:55:00Z"
data[].called_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].finished_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].gate_id нет integer:int64 | null min: 1 3
data[].comment нет string | null "ASN-100245"
data[].warehouse_comment нет string | null "Gate 2"
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 9101,
      "domain_id": 3,
      "warehouse_id": 42,
      "client_warehouse_id": 43,
      "shop_id": 12,
      "user_id": 15,
      "type": "inbound",
      "status": "waiting",
      "queue_number": 17,
      "driver": {
        "phone": "+359888123456",
        "name": "Ivan Petrov",
        "vehicle_number": "CB1234AB"
      },
      "document": {
        "type": "acceptance",
        "id": 5101,
        "acceptance_id": 5101,
        "order_id": null,
        "send_document_id": null
      },
      "planned_at": "2026-07-14T10:00:00Z",
      "registered_at": "2026-07-14T09:55:00Z",
      "called_at": null,
      "started_at": null,
      "finished_at": null,
      "gate_id": 3,
      "comment": "ASN-100245",
      "warehouse_comment": "Gate 2",
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/loading/visits?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/loading/visits?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/loading/visits?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/loading/visits",
    "per_page": 50,
    "to": 50,
    "total": 73
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/loading/visits

Создать визит погрузки

operationIdcreateLoadingVisits
РазделВизиты погрузки
БезопасностьbearerAuth

Creates a loading or unloading visit for a warehouse slot. Driver, document link, planned time, and gate fields are validated against the user visible scope.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/loading/visits" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CreateLoadingVisitRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateLoadingVisitPayload
data.warehouse_id нет integer:int64 | null min: 1 42
data.client_warehouse_id нет integer:int64 | null min: 1 43
data.shop_id нет integer:int64 | null min: 1 12
data.type да LoadingVisitType enum: inbound, outbound "inbound"
data.planned_at нет string:date-time | null "2026-07-14T10:00:00Z"
data.gate_id нет integer:int64 | null min: 1 3
data.comment нет string | null "ASN-100245"
data.driver нет object | null
data.driver.phone нет string | null "+359888123456"
data.driver.name нет string | null "Ivan Petrov"
data.driver.vehicle_number нет string | null "CB1234AB"
data.document нет object | null
data.document.type нет enum | null enum: acceptance, order, send_document "acceptance"
data.document.id нет integer:int64 | null min: 1 5101
data.document.acceptance_id нет integer:int64 | null min: 1 5101
data.document.order_id нет integer:int64 | null min: 1 8101
data.document.send_document_id нет integer:int64 | null min: 1 9101

Примеры запроса

default

{
  "data": {
    "type": "inbound",
    "warehouse_id": 42,
    "planned_at": "2026-07-14T10:00:00Z",
    "driver": {
      "phone": "+359888123456",
      "name": "Ivan Petrov",
      "vehicle_number": "CB1234AB"
    }
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да LoadingVisit Запланированный визит погрузки или разгрузки.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id нет integer:int64 | null min: 1 3
data.warehouse_id нет integer:int64 | null min: 1 42
data.client_warehouse_id нет integer:int64 | null min: 1 43
data.shop_id нет integer:int64 | null min: 1 12
data.user_id нет integer:int64 | null min: 1 9
data.type да LoadingVisitType enum: inbound, outbound "inbound"
data.status да LoadingVisitStatus enum: draft, approved, waiting, called, in_progress, finished, cancelled, no_show Статус жизненного цикла визита погрузки, хранящийся в rwLoadingVisit. "waiting"
data.queue_number нет integer:int64 | null 17
data.driver да LoadingVisitDriver
data.driver.phone нет string | null "+359888123456"
data.driver.name нет string | null "Ivan Petrov"
data.driver.vehicle_number нет string | null "CB1234AB"
data.document да LoadingVisitDocument
data.document.type нет enum | null enum: acceptance, order, send_document "acceptance"
data.document.id нет integer:int64 | null min: 1 5101
data.document.acceptance_id нет integer:int64 | null min: 1 5101
data.document.order_id нет integer:int64 | null min: 1 8101
data.document.send_document_id нет integer:int64 | null min: 1 9101
data.planned_at нет string:date-time | null "2026-07-14T10:00:00Z"
data.registered_at нет string:date-time | null "2026-07-14T09:55:00Z"
data.called_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.finished_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.gate_id нет integer:int64 | null min: 1 3
data.comment нет string | null "ASN-100245"
data.warehouse_comment нет string | null "Gate 2"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 9101,
    "domain_id": 3,
    "warehouse_id": 42,
    "client_warehouse_id": 43,
    "shop_id": 12,
    "user_id": 15,
    "type": "inbound",
    "status": "waiting",
    "queue_number": 17,
    "driver": {
      "phone": "+359888123456",
      "name": "Ivan Petrov",
      "vehicle_number": "CB1234AB"
    },
    "document": {
      "type": "acceptance",
      "id": 5101,
      "acceptance_id": 5101,
      "order_id": null,
      "send_document_id": null
    },
    "planned_at": "2026-07-14T10:00:00Z",
    "registered_at": "2026-07-14T09:55:00Z",
    "called_at": null,
    "started_at": null,
    "finished_at": null,
    "gate_id": 3,
    "comment": "ASN-100245",
    "warehouse_comment": "Gate 2",
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/loading/visits/{id}

Получить визит погрузки

operationIdgetLoadingVisits
РазделВизиты погрузки
БезопасностьbearerAuth

Возвращает один ресурс: визит погрузки, если он существует и видим аутентифицированному аккаунту.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/loading/visits/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID визита погрузки. 1001

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да LoadingVisit Запланированный визит погрузки или разгрузки.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id нет integer:int64 | null min: 1 3
data.warehouse_id нет integer:int64 | null min: 1 42
data.client_warehouse_id нет integer:int64 | null min: 1 43
data.shop_id нет integer:int64 | null min: 1 12
data.user_id нет integer:int64 | null min: 1 9
data.type да LoadingVisitType enum: inbound, outbound "inbound"
data.status да LoadingVisitStatus enum: draft, approved, waiting, called, in_progress, finished, cancelled, no_show Статус жизненного цикла визита погрузки, хранящийся в rwLoadingVisit. "waiting"
data.queue_number нет integer:int64 | null 17
data.driver да LoadingVisitDriver
data.driver.phone нет string | null "+359888123456"
data.driver.name нет string | null "Ivan Petrov"
data.driver.vehicle_number нет string | null "CB1234AB"
data.document да LoadingVisitDocument
data.document.type нет enum | null enum: acceptance, order, send_document "acceptance"
data.document.id нет integer:int64 | null min: 1 5101
data.document.acceptance_id нет integer:int64 | null min: 1 5101
data.document.order_id нет integer:int64 | null min: 1 8101
data.document.send_document_id нет integer:int64 | null min: 1 9101
data.planned_at нет string:date-time | null "2026-07-14T10:00:00Z"
data.registered_at нет string:date-time | null "2026-07-14T09:55:00Z"
data.called_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.finished_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.gate_id нет integer:int64 | null min: 1 3
data.comment нет string | null "ASN-100245"
data.warehouse_comment нет string | null "Gate 2"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 9101,
    "domain_id": 3,
    "warehouse_id": 42,
    "client_warehouse_id": 43,
    "shop_id": 12,
    "user_id": 15,
    "type": "inbound",
    "status": "waiting",
    "queue_number": 17,
    "driver": {
      "phone": "+359888123456",
      "name": "Ivan Petrov",
      "vehicle_number": "CB1234AB"
    },
    "document": {
      "type": "acceptance",
      "id": 5101,
      "acceptance_id": 5101,
      "order_id": null,
      "send_document_id": null
    },
    "planned_at": "2026-07-14T10:00:00Z",
    "registered_at": "2026-07-14T09:55:00Z",
    "called_at": null,
    "started_at": null,
    "finished_at": null,
    "gate_id": 3,
    "comment": "ASN-100245",
    "warehouse_comment": "Gate 2",
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/loading/visits/{id}

Обновить визит погрузки

operationIdreplaceLoadingVisits
РазделВизиты погрузки
БезопасностьbearerAuth

Update loading visit. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/loading/visits/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID визита погрузки. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

ReplaceLoadingVisitRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да LoadingVisitWritePayload
data.warehouse_id нет integer:int64 | null min: 1 42
data.client_warehouse_id нет integer:int64 | null min: 1 43
data.shop_id нет integer:int64 | null min: 1 12
data.type нет enum | null enum: inbound, outbound "inbound"
data.planned_at нет string:date-time | null "2026-07-14T10:00:00Z"
data.gate_id нет integer:int64 | null min: 1 3
data.comment нет string | null "ASN-100245"
data.driver нет object | null
data.driver.phone нет string | null "+359888123456"
data.driver.name нет string | null "Ivan Petrov"
data.driver.vehicle_number нет string | null "CB1234AB"
data.document нет object | null
data.document.type нет enum | null enum: acceptance, order, send_document "acceptance"
data.document.id нет integer:int64 | null min: 1 5101
data.document.acceptance_id нет integer:int64 | null min: 1 5101
data.document.order_id нет integer:int64 | null min: 1 8101
data.document.send_document_id нет integer:int64 | null min: 1 9101

Примеры запроса

default

{
  "data": {
    "planned_at": "2026-07-14T11:00:00Z",
    "gate_id": 3
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да LoadingVisit Запланированный визит погрузки или разгрузки.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id нет integer:int64 | null min: 1 3
data.warehouse_id нет integer:int64 | null min: 1 42
data.client_warehouse_id нет integer:int64 | null min: 1 43
data.shop_id нет integer:int64 | null min: 1 12
data.user_id нет integer:int64 | null min: 1 9
data.type да LoadingVisitType enum: inbound, outbound "inbound"
data.status да LoadingVisitStatus enum: draft, approved, waiting, called, in_progress, finished, cancelled, no_show Статус жизненного цикла визита погрузки, хранящийся в rwLoadingVisit. "waiting"
data.queue_number нет integer:int64 | null 17
data.driver да LoadingVisitDriver
data.driver.phone нет string | null "+359888123456"
data.driver.name нет string | null "Ivan Petrov"
data.driver.vehicle_number нет string | null "CB1234AB"
data.document да LoadingVisitDocument
data.document.type нет enum | null enum: acceptance, order, send_document "acceptance"
data.document.id нет integer:int64 | null min: 1 5101
data.document.acceptance_id нет integer:int64 | null min: 1 5101
data.document.order_id нет integer:int64 | null min: 1 8101
data.document.send_document_id нет integer:int64 | null min: 1 9101
data.planned_at нет string:date-time | null "2026-07-14T10:00:00Z"
data.registered_at нет string:date-time | null "2026-07-14T09:55:00Z"
data.called_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.finished_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.gate_id нет integer:int64 | null min: 1 3
data.comment нет string | null "ASN-100245"
data.warehouse_comment нет string | null "Gate 2"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 9101,
    "domain_id": 3,
    "warehouse_id": 42,
    "client_warehouse_id": 43,
    "shop_id": 12,
    "user_id": 15,
    "type": "inbound",
    "status": "waiting",
    "queue_number": 17,
    "driver": {
      "phone": "+359888123456",
      "name": "Ivan Petrov",
      "vehicle_number": "CB1234AB"
    },
    "document": {
      "type": "acceptance",
      "id": 5101,
      "acceptance_id": 5101,
      "order_id": null,
      "send_document_id": null
    },
    "planned_at": "2026-07-14T10:00:00Z",
    "registered_at": "2026-07-14T09:55:00Z",
    "called_at": null,
    "started_at": null,
    "finished_at": null,
    "gate_id": 3,
    "comment": "ASN-100245",
    "warehouse_comment": "Gate 2",
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/loading/visits/{id}

Обновить визит погрузки

operationIdpatchLoadingVisits
РазделВизиты погрузки
БезопасностьbearerAuth

Update loading visit. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/loading/visits/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID визита погрузки. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

PatchLoadingVisitRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да LoadingVisitWritePayload
data.warehouse_id нет integer:int64 | null min: 1 42
data.client_warehouse_id нет integer:int64 | null min: 1 43
data.shop_id нет integer:int64 | null min: 1 12
data.type нет enum | null enum: inbound, outbound "inbound"
data.planned_at нет string:date-time | null "2026-07-14T10:00:00Z"
data.gate_id нет integer:int64 | null min: 1 3
data.comment нет string | null "ASN-100245"
data.driver нет object | null
data.driver.phone нет string | null "+359888123456"
data.driver.name нет string | null "Ivan Petrov"
data.driver.vehicle_number нет string | null "CB1234AB"
data.document нет object | null
data.document.type нет enum | null enum: acceptance, order, send_document "acceptance"
data.document.id нет integer:int64 | null min: 1 5101
data.document.acceptance_id нет integer:int64 | null min: 1 5101
data.document.order_id нет integer:int64 | null min: 1 8101
data.document.send_document_id нет integer:int64 | null min: 1 9101

Примеры запроса

default

{
  "data": {
    "gate_id": 3
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да LoadingVisit Запланированный визит погрузки или разгрузки.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id нет integer:int64 | null min: 1 3
data.warehouse_id нет integer:int64 | null min: 1 42
data.client_warehouse_id нет integer:int64 | null min: 1 43
data.shop_id нет integer:int64 | null min: 1 12
data.user_id нет integer:int64 | null min: 1 9
data.type да LoadingVisitType enum: inbound, outbound "inbound"
data.status да LoadingVisitStatus enum: draft, approved, waiting, called, in_progress, finished, cancelled, no_show Статус жизненного цикла визита погрузки, хранящийся в rwLoadingVisit. "waiting"
data.queue_number нет integer:int64 | null 17
data.driver да LoadingVisitDriver
data.driver.phone нет string | null "+359888123456"
data.driver.name нет string | null "Ivan Petrov"
data.driver.vehicle_number нет string | null "CB1234AB"
data.document да LoadingVisitDocument
data.document.type нет enum | null enum: acceptance, order, send_document "acceptance"
data.document.id нет integer:int64 | null min: 1 5101
data.document.acceptance_id нет integer:int64 | null min: 1 5101
data.document.order_id нет integer:int64 | null min: 1 8101
data.document.send_document_id нет integer:int64 | null min: 1 9101
data.planned_at нет string:date-time | null "2026-07-14T10:00:00Z"
data.registered_at нет string:date-time | null "2026-07-14T09:55:00Z"
data.called_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.finished_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.gate_id нет integer:int64 | null min: 1 3
data.comment нет string | null "ASN-100245"
data.warehouse_comment нет string | null "Gate 2"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 9101,
    "domain_id": 3,
    "warehouse_id": 42,
    "client_warehouse_id": 43,
    "shop_id": 12,
    "user_id": 15,
    "type": "inbound",
    "status": "waiting",
    "queue_number": 17,
    "driver": {
      "phone": "+359888123456",
      "name": "Ivan Petrov",
      "vehicle_number": "CB1234AB"
    },
    "document": {
      "type": "acceptance",
      "id": 5101,
      "acceptance_id": 5101,
      "order_id": null,
      "send_document_id": null
    },
    "planned_at": "2026-07-14T10:00:00Z",
    "registered_at": "2026-07-14T09:55:00Z",
    "called_at": null,
    "started_at": null,
    "finished_at": null,
    "gate_id": 3,
    "comment": "ASN-100245",
    "warehouse_comment": "Gate 2",
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/loading/visits/{id}/cancel

Отменить визит погрузки

operationIdcancelLoadingVisitByPath
РазделВизиты погрузки
БезопасностьbearerAuth

Cancel loading visit. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/loading/visits/1001/cancel" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID визита погрузки. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да LoadingVisit Запланированный визит погрузки или разгрузки.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id нет integer:int64 | null min: 1 3
data.warehouse_id нет integer:int64 | null min: 1 42
data.client_warehouse_id нет integer:int64 | null min: 1 43
data.shop_id нет integer:int64 | null min: 1 12
data.user_id нет integer:int64 | null min: 1 9
data.type да LoadingVisitType enum: inbound, outbound "inbound"
data.status да LoadingVisitStatus enum: draft, approved, waiting, called, in_progress, finished, cancelled, no_show Статус жизненного цикла визита погрузки, хранящийся в rwLoadingVisit. "waiting"
data.queue_number нет integer:int64 | null 17
data.driver да LoadingVisitDriver
data.driver.phone нет string | null "+359888123456"
data.driver.name нет string | null "Ivan Petrov"
data.driver.vehicle_number нет string | null "CB1234AB"
data.document да LoadingVisitDocument
data.document.type нет enum | null enum: acceptance, order, send_document "acceptance"
data.document.id нет integer:int64 | null min: 1 5101
data.document.acceptance_id нет integer:int64 | null min: 1 5101
data.document.order_id нет integer:int64 | null min: 1 8101
data.document.send_document_id нет integer:int64 | null min: 1 9101
data.planned_at нет string:date-time | null "2026-07-14T10:00:00Z"
data.registered_at нет string:date-time | null "2026-07-14T09:55:00Z"
data.called_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.finished_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.gate_id нет integer:int64 | null min: 1 3
data.comment нет string | null "ASN-100245"
data.warehouse_comment нет string | null "Gate 2"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 9101,
    "domain_id": 3,
    "warehouse_id": 42,
    "client_warehouse_id": 43,
    "shop_id": 12,
    "user_id": 15,
    "type": "inbound",
    "status": "waiting",
    "queue_number": 17,
    "driver": {
      "phone": "+359888123456",
      "name": "Ivan Petrov",
      "vehicle_number": "CB1234AB"
    },
    "document": {
      "type": "acceptance",
      "id": 5101,
      "acceptance_id": 5101,
      "order_id": null,
      "send_document_id": null
    },
    "planned_at": "2026-07-14T10:00:00Z",
    "registered_at": "2026-07-14T09:55:00Z",
    "called_at": null,
    "started_at": null,
    "finished_at": null,
    "gate_id": 3,
    "comment": "ASN-100245",
    "warehouse_comment": "Gate 2",
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Шаблоны уведомлений

GET /api/v2/notification-templates

Получить список шаблонов уведомлений

operationIdlistNotificationTemplates
РазделШаблоны уведомлений
БезопасностьbearerAuth

Returns a tenant-scoped, paginated list of document-status notification templates.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/notification-templates" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 250
Number of templates per page. Default 50; maximum 250. The same filter may also be sent as filter[per_page] where supported by the Laravel query adapter. 50
sort query нет string form false Comma-separated sort fields: id, name, channel, document_type, document_status_id, delay_hours, status_id, created_at, updated_at. The same filter may also be sent as filter[sort] where supported by the Laravel query adapter. "-id"
include query нет enum form false enum: bindings Set to bindings to include warehouse bindings in every list item. The same filter may also be sent as filter[include] where supported by the Laravel query adapter. "bindings"
filter[id] query нет integer:int64 min: 0 Exact template ID. 41
filter[name] query нет string Case-insensitive partial template name. "Acceptance closed"
filter[channel] query нет enum enum: email, internal Exact delivery channel. "email"
filter[document_type] query нет enum enum: acceptance, order Exact document type. "acceptance"
filter[document_status_id] query нет integer:int64 min: 0 Exact target document status ID. 4
filter[status_id] query нет integer:int64 min: 0 Exact template status: 0 or 1. 1
filter[owner_user_id] query нет integer:int64 min: 0 Exact owner user ID. 15
created_at_from query нет string:date-time form true Created-at lower boundary. The same filter may also be sent as filter[created_at_from] where supported by the Laravel query adapter. "2026-07-01T00:00:00Z"
created_at_to query нет string:date-time form true Created-at upper boundary. The same filter may also be sent as filter[created_at_to] where supported by the Laravel query adapter. "2026-07-31T23:59:59Z"
updated_at_from query нет string:date-time form true Updated-at lower boundary. The same filter may also be sent as filter[updated_at_from] where supported by the Laravel query adapter. "2026-07-01T00:00:00Z"
updated_at_to query нет string:date-time form true Updated-at upper boundary. The same filter may also be sent as filter[updated_at_to] where supported by the Laravel query adapter. "2026-07-31T23:59:59Z"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<NotificationTemplate>
data[] нет NotificationTemplate Template used when an acceptance or order enters the configured status. The bindings field is returned by the item endpoint and by list requests with include=bindings.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].domain_id да integer:int64 min: 1 3
data[].owner_user_id да integer:int64 | null min: 1 15
data[].name да string "Acceptance closed"
data[].event да enum enum: document.status_changed "document.status_changed"
data[].channel да enum enum: email, internal "email"
data[].document_type да enum enum: acceptance, order "acceptance"
data[].document_status_id да integer:int64 min: 0 4
data[].delay_hours да integer:int64 min: 0
max: 8760
0
data[].start_document_id да integer:int64 | null min: 1 1000
data[].conditions да object {"acceptance_has_discrepancy":true}
data[].subject да string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data[].body_html да string | null "<p>Document \#{doc_id} is closed.</p>"
data[].body_text да string | null "Document \#{doc_id} is closed."
data[].attachment_print_template_id да integer:int64 | null min: 1 12
data[].status_id да enum:int64 enum: 0, 1 1
data[].bindings_count да integer:int64 min: 0 1
data[].bindings нет array<NotificationTemplateBinding>
data[].bindings[] нет NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data[].bindings[].id да integer:int64 readOnly min: 1 1001
data[].bindings[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].bindings[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].bindings[].template_id да integer:int64 min: 1 41
data[].bindings[].domain_id да integer:int64 min: 1 3
data[].bindings[].warehouse_id да integer:int64 min: 1 42
data[].bindings[].warehouse нет object | null
data[].bindings[].warehouse.id да integer:int64 min: 1 42
data[].bindings[].warehouse.name да string "Client Warehouse Sofia"
data[].bindings[].recipients да array<string:email> maxItems: 100
data[].bindings[].recipients[] нет string:email "client@example.com"
data[].bindings[].internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data[].bindings[].internal_user_ids да array<integer:int64> maxItems: 1000
data[].bindings[].internal_user_ids[] нет integer:int64 min: 1 15
data[].bindings[].status_id да enum:int64 enum: 0, 1 1
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 41,
      "domain_id": 3,
      "owner_user_id": 15,
      "name": "Acceptance closed",
      "event": "document.status_changed",
      "channel": "email",
      "document_type": "acceptance",
      "document_status_id": 4,
      "delay_hours": 0,
      "start_document_id": null,
      "conditions": {
        "acceptance_has_discrepancy": true
      },
      "subject": "Document #{doc_id}: {doc_status_name}",
      "body_html": "<p>Document #{doc_id} is closed.</p>",
      "body_text": null,
      "attachment_print_template_id": 12,
      "status_id": 1,
      "bindings_count": 1,
      "bindings": [
        {
          "id": 7,
          "template_id": 41,
          "domain_id": 3,
          "warehouse_id": 42,
          "warehouse": {
            "id": 42,
            "name": "Client Warehouse Sofia"
          },
          "recipients": [
            "client@example.com"
          ],
          "internal_recipient_mode": "warehouse_users",
          "internal_user_ids": [

          ],
          "status_id": 1,
          "created_at": "2026-09-17T09:00:00Z",
          "updated_at": "2026-09-17T09:00:00Z"
        }
      ],
      "created_at": "2026-09-17T09:00:00Z",
      "updated_at": "2026-09-17T09:00:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/notification-templates?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/notification-templates?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "https://betawms.ffcdek.ru/api/v2/notification-templates",
    "per_page": 50,
    "to": 1,
    "total": 1
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/notification-templates

Создать шаблон уведомления

operationIdcreateNotificationTemplate
РазделШаблоны уведомлений
БезопасностьbearerAuth

Creates a notification template in the authenticated user domain. Domain, owner and event are assigned server-side.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/notification-templates" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CreateNotificationTemplateRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateNotificationTemplatePayload
data.name да string maxLength: 150 "Acceptance closed"
data.channel да enum enum: email, internal "email"
data.document_type да enum enum: acceptance, order "acceptance"
data.document_status_id да integer:int64 min: 0 4
data.delay_hours нет integer:int64 | null min: 0
max: 8760
0
data.start_document_id нет integer:int64 | null min: 1 1000
data.conditions нет object {"acceptance_has_discrepancy":true}
data.subject нет string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html нет string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text нет string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id нет integer:int64 | null min: 1 12
data.status_id нет enum:int64 enum: 0, 1 1

Примеры запроса

Пример

{
  "data": {
    "name": "Acceptance closed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "status_id": 1
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplate Template used when an acceptance or order enters the configured status. The bindings field is returned by the item endpoint and by list requests with include=bindings.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id да integer:int64 min: 1 3
data.owner_user_id да integer:int64 | null min: 1 15
data.name да string "Acceptance closed"
data.event да enum enum: document.status_changed "document.status_changed"
data.channel да enum enum: email, internal "email"
data.document_type да enum enum: acceptance, order "acceptance"
data.document_status_id да integer:int64 min: 0 4
data.delay_hours да integer:int64 min: 0
max: 8760
0
data.start_document_id да integer:int64 | null min: 1 1000
data.conditions да object {"acceptance_has_discrepancy":true}
data.subject да string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html да string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text да string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id да integer:int64 | null min: 1 12
data.status_id да enum:int64 enum: 0, 1 1
data.bindings_count да integer:int64 min: 0 1
data.bindings нет array<NotificationTemplateBinding>
data.bindings[] нет NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.bindings[].id да integer:int64 readOnly min: 1 1001
data.bindings[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].template_id да integer:int64 min: 1 41
data.bindings[].domain_id да integer:int64 min: 1 3
data.bindings[].warehouse_id да integer:int64 min: 1 42
data.bindings[].warehouse нет object | null
data.bindings[].warehouse.id да integer:int64 min: 1 42
data.bindings[].warehouse.name да string "Client Warehouse Sofia"
data.bindings[].recipients да array<string:email> maxItems: 100
data.bindings[].recipients[] нет string:email "client@example.com"
data.bindings[].internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.bindings[].internal_user_ids да array<integer:int64> maxItems: 1000
data.bindings[].internal_user_ids[] нет integer:int64 min: 1 15
data.bindings[].status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 41,
    "domain_id": 3,
    "owner_user_id": 15,
    "name": "Acceptance closed",
    "event": "document.status_changed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "start_document_id": null,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "body_text": null,
    "attachment_print_template_id": 12,
    "status_id": 1,
    "bindings_count": 1,
    "bindings": [
      {
        "id": 7,
        "template_id": 41,
        "domain_id": 3,
        "warehouse_id": 42,
        "warehouse": {
          "id": 42,
          "name": "Client Warehouse Sofia"
        },
        "recipients": [
          "client@example.com"
        ],
        "internal_recipient_mode": "warehouse_users",
        "internal_user_ids": [

        ],
        "status_id": 1,
        "created_at": "2026-09-17T09:00:00Z",
        "updated_at": "2026-09-17T09:00:00Z"
      }
    ],
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/notification-templates/{id}

Получить шаблон с привязками

operationIdgetNotificationTemplate
РазделШаблоны уведомлений
БезопасностьbearerAuth

Returns one visible template with its current warehouse bindings.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/notification-templates/41" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplate Template used when an acceptance or order enters the configured status. The bindings field is returned by the item endpoint and by list requests with include=bindings.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id да integer:int64 min: 1 3
data.owner_user_id да integer:int64 | null min: 1 15
data.name да string "Acceptance closed"
data.event да enum enum: document.status_changed "document.status_changed"
data.channel да enum enum: email, internal "email"
data.document_type да enum enum: acceptance, order "acceptance"
data.document_status_id да integer:int64 min: 0 4
data.delay_hours да integer:int64 min: 0
max: 8760
0
data.start_document_id да integer:int64 | null min: 1 1000
data.conditions да object {"acceptance_has_discrepancy":true}
data.subject да string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html да string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text да string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id да integer:int64 | null min: 1 12
data.status_id да enum:int64 enum: 0, 1 1
data.bindings_count да integer:int64 min: 0 1
data.bindings нет array<NotificationTemplateBinding>
data.bindings[] нет NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.bindings[].id да integer:int64 readOnly min: 1 1001
data.bindings[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].template_id да integer:int64 min: 1 41
data.bindings[].domain_id да integer:int64 min: 1 3
data.bindings[].warehouse_id да integer:int64 min: 1 42
data.bindings[].warehouse нет object | null
data.bindings[].warehouse.id да integer:int64 min: 1 42
data.bindings[].warehouse.name да string "Client Warehouse Sofia"
data.bindings[].recipients да array<string:email> maxItems: 100
data.bindings[].recipients[] нет string:email "client@example.com"
data.bindings[].internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.bindings[].internal_user_ids да array<integer:int64> maxItems: 1000
data.bindings[].internal_user_ids[] нет integer:int64 min: 1 15
data.bindings[].status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 41,
    "domain_id": 3,
    "owner_user_id": 15,
    "name": "Acceptance closed",
    "event": "document.status_changed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "start_document_id": null,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "body_text": null,
    "attachment_print_template_id": 12,
    "status_id": 1,
    "bindings_count": 1,
    "bindings": [
      {
        "id": 7,
        "template_id": 41,
        "domain_id": 3,
        "warehouse_id": 42,
        "warehouse": {
          "id": 42,
          "name": "Client Warehouse Sofia"
        },
        "recipients": [
          "client@example.com"
        ],
        "internal_recipient_mode": "warehouse_users",
        "internal_user_ids": [

        ],
        "status_id": 1,
        "created_at": "2026-09-17T09:00:00Z",
        "updated_at": "2026-09-17T09:00:00Z"
      }
    ],
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/notification-templates/{id}

Изменить шаблон уведомления

operationIdreplaceNotificationTemplate
РазделШаблоны уведомлений
БезопасностьbearerAuth

Updates the supplied template fields. Omitted fields remain unchanged.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/notification-templates/41" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

UpdateNotificationTemplateRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да UpdateNotificationTemplatePayload
data.name нет string maxLength: 150 "Acceptance closed"
data.channel нет enum enum: email, internal "email"
data.document_type нет enum enum: acceptance, order "acceptance"
data.document_status_id нет integer:int64 min: 0 4
data.delay_hours нет integer:int64 | null min: 0
max: 8760
0
data.start_document_id нет integer:int64 | null min: 1 1000
data.conditions нет object {"acceptance_has_discrepancy":true}
data.subject нет string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html нет string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text нет string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id нет integer:int64 | null min: 1 12
data.status_id нет enum:int64 enum: 0, 1 1

Примеры запроса

Пример

{
  "data": {
    "name": "Acceptance closed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "status_id": 1
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplate Template used when an acceptance or order enters the configured status. The bindings field is returned by the item endpoint and by list requests with include=bindings.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id да integer:int64 min: 1 3
data.owner_user_id да integer:int64 | null min: 1 15
data.name да string "Acceptance closed"
data.event да enum enum: document.status_changed "document.status_changed"
data.channel да enum enum: email, internal "email"
data.document_type да enum enum: acceptance, order "acceptance"
data.document_status_id да integer:int64 min: 0 4
data.delay_hours да integer:int64 min: 0
max: 8760
0
data.start_document_id да integer:int64 | null min: 1 1000
data.conditions да object {"acceptance_has_discrepancy":true}
data.subject да string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html да string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text да string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id да integer:int64 | null min: 1 12
data.status_id да enum:int64 enum: 0, 1 1
data.bindings_count да integer:int64 min: 0 1
data.bindings нет array<NotificationTemplateBinding>
data.bindings[] нет NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.bindings[].id да integer:int64 readOnly min: 1 1001
data.bindings[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].template_id да integer:int64 min: 1 41
data.bindings[].domain_id да integer:int64 min: 1 3
data.bindings[].warehouse_id да integer:int64 min: 1 42
data.bindings[].warehouse нет object | null
data.bindings[].warehouse.id да integer:int64 min: 1 42
data.bindings[].warehouse.name да string "Client Warehouse Sofia"
data.bindings[].recipients да array<string:email> maxItems: 100
data.bindings[].recipients[] нет string:email "client@example.com"
data.bindings[].internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.bindings[].internal_user_ids да array<integer:int64> maxItems: 1000
data.bindings[].internal_user_ids[] нет integer:int64 min: 1 15
data.bindings[].status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 41,
    "domain_id": 3,
    "owner_user_id": 15,
    "name": "Acceptance closed",
    "event": "document.status_changed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "start_document_id": null,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "body_text": null,
    "attachment_print_template_id": 12,
    "status_id": 1,
    "bindings_count": 1,
    "bindings": [
      {
        "id": 7,
        "template_id": 41,
        "domain_id": 3,
        "warehouse_id": 42,
        "warehouse": {
          "id": 42,
          "name": "Client Warehouse Sofia"
        },
        "recipients": [
          "client@example.com"
        ],
        "internal_recipient_mode": "warehouse_users",
        "internal_user_ids": [

        ],
        "status_id": 1,
        "created_at": "2026-09-17T09:00:00Z",
        "updated_at": "2026-09-17T09:00:00Z"
      }
    ],
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/notification-templates/{id}

Изменить шаблон уведомления

operationIdpatchNotificationTemplate
РазделШаблоны уведомлений
БезопасностьbearerAuth

Updates the supplied template fields. Omitted fields remain unchanged.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/notification-templates/41" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

UpdateNotificationTemplateRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да UpdateNotificationTemplatePayload
data.name нет string maxLength: 150 "Acceptance closed"
data.channel нет enum enum: email, internal "email"
data.document_type нет enum enum: acceptance, order "acceptance"
data.document_status_id нет integer:int64 min: 0 4
data.delay_hours нет integer:int64 | null min: 0
max: 8760
0
data.start_document_id нет integer:int64 | null min: 1 1000
data.conditions нет object {"acceptance_has_discrepancy":true}
data.subject нет string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html нет string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text нет string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id нет integer:int64 | null min: 1 12
data.status_id нет enum:int64 enum: 0, 1 1

Примеры запроса

Пример

{
  "data": {
    "name": "Acceptance closed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "status_id": 1
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplate Template used when an acceptance or order enters the configured status. The bindings field is returned by the item endpoint and by list requests with include=bindings.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id да integer:int64 min: 1 3
data.owner_user_id да integer:int64 | null min: 1 15
data.name да string "Acceptance closed"
data.event да enum enum: document.status_changed "document.status_changed"
data.channel да enum enum: email, internal "email"
data.document_type да enum enum: acceptance, order "acceptance"
data.document_status_id да integer:int64 min: 0 4
data.delay_hours да integer:int64 min: 0
max: 8760
0
data.start_document_id да integer:int64 | null min: 1 1000
data.conditions да object {"acceptance_has_discrepancy":true}
data.subject да string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html да string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text да string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id да integer:int64 | null min: 1 12
data.status_id да enum:int64 enum: 0, 1 1
data.bindings_count да integer:int64 min: 0 1
data.bindings нет array<NotificationTemplateBinding>
data.bindings[] нет NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.bindings[].id да integer:int64 readOnly min: 1 1001
data.bindings[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].template_id да integer:int64 min: 1 41
data.bindings[].domain_id да integer:int64 min: 1 3
data.bindings[].warehouse_id да integer:int64 min: 1 42
data.bindings[].warehouse нет object | null
data.bindings[].warehouse.id да integer:int64 min: 1 42
data.bindings[].warehouse.name да string "Client Warehouse Sofia"
data.bindings[].recipients да array<string:email> maxItems: 100
data.bindings[].recipients[] нет string:email "client@example.com"
data.bindings[].internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.bindings[].internal_user_ids да array<integer:int64> maxItems: 1000
data.bindings[].internal_user_ids[] нет integer:int64 min: 1 15
data.bindings[].status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 41,
    "domain_id": 3,
    "owner_user_id": 15,
    "name": "Acceptance closed",
    "event": "document.status_changed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "start_document_id": null,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "body_text": null,
    "attachment_print_template_id": 12,
    "status_id": 1,
    "bindings_count": 1,
    "bindings": [
      {
        "id": 7,
        "template_id": 41,
        "domain_id": 3,
        "warehouse_id": 42,
        "warehouse": {
          "id": 42,
          "name": "Client Warehouse Sofia"
        },
        "recipients": [
          "client@example.com"
        ],
        "internal_recipient_mode": "warehouse_users",
        "internal_user_ids": [

        ],
        "status_id": 1,
        "created_at": "2026-09-17T09:00:00Z",
        "updated_at": "2026-09-17T09:00:00Z"
      }
    ],
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/notification-templates/{id}

Удалить шаблон уведомления

operationIddeleteNotificationTemplate
РазделШаблоны уведомлений
БезопасностьbearerAuth

Deletes the template and its warehouse bindings in one transaction. Existing notification-message history is preserved.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/notification-templates/41" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object | null
meta да object
meta.api_version да enum enum: v2 "v2"
meta.deleted да boolean true

Примеры ответа

success

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/notification-templates/{id}/bindings

Получить список складских привязок

operationIdlistNotificationTemplateBindings
РазделШаблоны уведомлений
БезопасностьbearerAuth

Returns the paginated warehouse and recipient bindings of one visible template.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/notification-templates/41/bindings" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 250
Number of bindings per page. Default 50; maximum 250. The same filter may also be sent as filter[per_page] where supported by the Laravel query adapter. 50
sort query нет string form false Comma-separated sort fields: id, warehouse_id, status_id, created_at, updated_at. The same filter may also be sent as filter[sort] where supported by the Laravel query adapter. "id"
filter[id] query нет integer:int64 min: 0 Exact binding ID. 7
filter[warehouse_id] query нет integer:int64 min: 0 Exact warehouse ID. 42
filter[status_id] query нет integer:int64 min: 0 Exact binding status: 0 or 1. 1
filter[internal_recipient_mode] query нет enum enum: warehouse_users, domain_users, explicit Exact internal recipient mode. "warehouse_users"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<NotificationTemplateBinding>
data[] нет NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].template_id да integer:int64 min: 1 41
data[].domain_id да integer:int64 min: 1 3
data[].warehouse_id да integer:int64 min: 1 42
data[].warehouse нет object | null
data[].warehouse.id да integer:int64 min: 1 42
data[].warehouse.name да string "Client Warehouse Sofia"
data[].recipients да array<string:email> maxItems: 100
data[].recipients[] нет string:email "client@example.com"
data[].internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data[].internal_user_ids да array<integer:int64> maxItems: 1000
data[].internal_user_ids[] нет integer:int64 min: 1 15
data[].status_id да enum:int64 enum: 0, 1 1
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 7,
      "template_id": 41,
      "domain_id": 3,
      "warehouse_id": 42,
      "warehouse": {
        "id": 42,
        "name": "Client Warehouse Sofia"
      },
      "recipients": [
        "client@example.com"
      ],
      "internal_recipient_mode": "warehouse_users",
      "internal_user_ids": [

      ],
      "status_id": 1,
      "created_at": "2026-09-17T09:00:00Z",
      "updated_at": "2026-09-17T09:00:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/notification-templates/41/bindings?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/notification-templates/41/bindings?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "https://betawms.ffcdek.ru/api/v2/notification-templates/41/bindings",
    "per_page": 50,
    "to": 1,
    "total": 1
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/notification-templates/{id}/bindings

Создать складскую привязку

operationIdcreateNotificationTemplateBinding
РазделШаблоны уведомлений
БезопасностьbearerAuth

Binds one visible client warehouse to the template. A warehouse can be bound only once per template.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/notification-templates/41/bindings" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CreateNotificationTemplateBindingRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateNotificationTemplateBindingPayload
data.warehouse_id да integer:int64 min: 1 42
data.recipients нет array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode нет enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids нет array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id нет enum:int64 enum: 0, 1 1

Примеры запроса

Пример

{
  "data": {
    "warehouse_id": 42,
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.template_id да integer:int64 min: 1 41
data.domain_id да integer:int64 min: 1 3
data.warehouse_id да integer:int64 min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Client Warehouse Sofia"
data.recipients да array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids да array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7,
    "template_id": 41,
    "domain_id": 3,
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Client Warehouse Sofia"
    },
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1,
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/notification-templates/{id}/bindings/{bindingId}

Получить складскую привязку

operationIdgetNotificationTemplateBinding
РазделШаблоны уведомлений
БезопасностьbearerAuth

Returns one warehouse and recipient binding of a visible template.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/notification-templates/41/bindings/7" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
bindingId path да integer:int64 min: 1 Notification template binding ID. 7

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.template_id да integer:int64 min: 1 41
data.domain_id да integer:int64 min: 1 3
data.warehouse_id да integer:int64 min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Client Warehouse Sofia"
data.recipients да array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids да array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7,
    "template_id": 41,
    "domain_id": 3,
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Client Warehouse Sofia"
    },
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1,
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/notification-templates/{id}/bindings/{bindingId}

Изменить складскую привязку

operationIdreplaceNotificationTemplateBinding
РазделШаблоны уведомлений
БезопасностьbearerAuth

Updates the supplied warehouse-binding fields. Omitted fields remain unchanged.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/notification-templates/41/bindings/7" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
bindingId path да integer:int64 min: 1 Notification template binding ID. 7
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

UpdateNotificationTemplateBindingRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да UpdateNotificationTemplateBindingPayload
data.warehouse_id нет integer:int64 min: 1 42
data.recipients нет array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode нет enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids нет array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id нет enum:int64 enum: 0, 1 1

Примеры запроса

Пример

{
  "data": {
    "warehouse_id": 42,
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.template_id да integer:int64 min: 1 41
data.domain_id да integer:int64 min: 1 3
data.warehouse_id да integer:int64 min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Client Warehouse Sofia"
data.recipients да array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids да array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7,
    "template_id": 41,
    "domain_id": 3,
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Client Warehouse Sofia"
    },
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1,
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/notification-templates/{id}/bindings/{bindingId}

Изменить складскую привязку

operationIdpatchNotificationTemplateBinding
РазделШаблоны уведомлений
БезопасностьbearerAuth

Updates the supplied warehouse-binding fields. Omitted fields remain unchanged.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/notification-templates/41/bindings/7" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
bindingId path да integer:int64 min: 1 Notification template binding ID. 7
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

UpdateNotificationTemplateBindingRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да UpdateNotificationTemplateBindingPayload
data.warehouse_id нет integer:int64 min: 1 42
data.recipients нет array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode нет enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids нет array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id нет enum:int64 enum: 0, 1 1

Примеры запроса

Пример

{
  "data": {
    "warehouse_id": 42,
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.template_id да integer:int64 min: 1 41
data.domain_id да integer:int64 min: 1 3
data.warehouse_id да integer:int64 min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Client Warehouse Sofia"
data.recipients да array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids да array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7,
    "template_id": 41,
    "domain_id": 3,
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Client Warehouse Sofia"
    },
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1,
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/notification-templates/{id}/bindings/{bindingId}

Удалить складскую привязку

operationIddeleteNotificationTemplateBinding
РазделШаблоны уведомлений
БезопасностьbearerAuth

Removes one warehouse and recipient binding from the template.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/notification-templates/41/bindings/7" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
bindingId path да integer:int64 min: 1 Notification template binding ID. 7
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object | null
meta да object
meta.api_version да enum enum: v2 "v2"
meta.deleted да boolean true

Примеры ответа

success

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Заказы

GET /api/v2/orders

Получить список заказов

operationIdlistOrders
РазделЗаказы
БезопасностьbearerAuth

Возвращает заказы, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Request include=status_history to receive chronological WMS status transitions with changed_at (ISO 8601 and explicit timezone offset), source and inferred. status_history_meta reports availability and whether the last event matches the current status; surviving logs do not guarantee a complete history. send_date is the stored order date field and may come from import, manual input or integration processing; it is not a universal physical carrier-handover timestamp. Status transitions and shipment-document closure must be interpreted as separate recorded events. Dedicated picked_at, packed_at and shipped_at milestones are not exposed.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/orders" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 50; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 50
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, order_date, send_date, sum, created_at, updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "-id"
include query нет string form false Связанные сущности через запятую. Допустимые значения: offers, contact, delivery, comments, consumables, status_history. Этот фильтр также можно передать как filter[include], если это поддерживает Laravel query adapter. "offers,contact,delivery,comments,consumables,status_history"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
external_id query нет string form true Фильтр по external_id с точным совпадением. Этот фильтр также можно передать как filter[external_id], если это поддерживает Laravel query adapter. "EXT-10045"
status_id query нет integer:int64 form true min: 1 Фильтр по status_id с точным совпадением. Этот фильтр также можно передать как filter[status_id], если это поддерживает Laravel query adapter. 1
warehouse_id query нет integer:int64 form true min: 1 Фильтр по warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[warehouse_id], если это поддерживает Laravel query adapter. 42
shop_id query нет integer:int64 form true min: 1 Фильтр по shop_id с точным совпадением. Этот фильтр также можно передать как filter[shop_id], если это поддерживает Laravel query adapter. 12
type_id query нет integer:int64 form true min: 1 Фильтр по type_id с точным совпадением. Этот фильтр также можно передать как filter[type_id], если это поддерживает Laravel query adapter. 1
source_id query нет integer:int64 form true min: 1 Фильтр по source_id с точным совпадением. Этот фильтр также можно передать как filter[source_id], если это поддерживает Laravel query adapter. 1
customer_type query нет integer:int64 form true min: 1 Фильтр по customer_type с точным совпадением. Этот фильтр также можно передать как filter[customer_type], если это поддерживает Laravel query adapter. 1
company_id query нет integer:int64 form true min: 1 Фильтр по company_id с точным совпадением. Этот фильтр также можно передать как filter[company_id], если это поддерживает Laravel query adapter. 7
is_cod query нет boolean form true Фильтр по is_cod с точным совпадением. Этот фильтр также можно передать как filter[is_cod], если это поддерживает Laravel query adapter. false
order_date_from query нет string:date form true Нижняя включительная граница даты для order_date. Этот фильтр также можно передать как filter[order_date_from], если это поддерживает Laravel query adapter. "2026-07-14"
order_date_to query нет string:date form true Верхняя включительная граница даты для order_date. Этот фильтр также можно передать как filter[order_date_to], если это поддерживает Laravel query adapter. "2026-07-14"
send_date_from query нет string:date form true Нижняя включительная граница даты для send_date. Этот фильтр также можно передать как filter[send_date_from], если это поддерживает Laravel query adapter. "2026-07-14"
send_date_to query нет string:date form true Верхняя включительная граница даты для send_date. Этот фильтр также можно передать как filter[send_date_to], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
updated_at_from query нет string form true pattern: ^\d{4}-\d{2}-\d{2}(?: \d{2}:\d{2}:\d{2})?$ Lower inclusive date or date-time boundary for updated_at. The same filter may also be sent as filter[updated_at_from] where supported by the Laravel query adapter. Use YYYY-MM-DD HH:mm:ss for an exact inclusive timestamp in the application timezone; YYYY-MM-DD starts at midnight. "2026-07-14 10:30:00"
updated_at_to query нет string form true pattern: ^\d{4}-\d{2}-\d{2}(?: \d{2}:\d{2}:\d{2})?$ Upper inclusive date or date-time boundary for updated_at. The same filter may also be sent as filter[updated_at_to] where supported by the Laravel query adapter. Use YYYY-MM-DD HH:mm:ss for an exact inclusive timestamp in the application timezone; YYYY-MM-DD includes the entire day. "2026-07-14 10:30:00"
sum_from query нет number:float form true Нижняя включительная числовая граница для sum. Этот фильтр также можно передать как filter[sum_from], если это поддерживает Laravel query adapter. 48.58
sum_to query нет number:float form true Верхняя включительная числовая граница для sum. Этот фильтр также можно передать как filter[sum_to], если это поддерживает Laravel query adapter. 48.58

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<Order>
data[] нет Order Исходящий складской заказ. Опциональные связанные поля присутствуют, когда контроллер их загрузил или они запрошены через include.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].external_id нет string | null "ORD-100245"
data[].domain_id нет integer:int64 | null min: 1 3
data[].type_id нет integer:int64 | null 1
data[].shop_id нет integer:int64 | null min: 1 12
data[].warehouse_id нет integer:int64 | null min: 1 42
data[].status_id нет integer:int64 | null ID статуса заказа. Текущий backend хранит статусы в базе данных; значения не моделируются как закрытый enum в публичном контракте. 20
data[].status нет object | null
data[].status.id да integer:int64 20
data[].status.name да string "Created"
data[].status.color нет string | null "#2457c5"
data[].status.background_color нет string | null "#eaf0ff"
data[].order_date нет string:date | null "2026-07-14"
data[].send_date нет string | null Stored order send date, potentially supplied by import, manual input or integration processing. It may be a date or date-time string; it is not a universal physical carrier-handover timestamp. "2026-07-15 20:25:08"
data[].source_id нет integer:int64 | null min: 1 1
data[].customer_type нет integer:int64 | null 1
data[].is_cod нет boolean true
data[].amounts нет OrderAmounts
data[].amounts.shipping_price нет number:float | null 8.6
data[].amounts.shipping_cost нет number:float | null 0
data[].amounts.sum нет number:float | null 39.98
data[].amounts.cod_sum нет number:float | null 48.58
data[].company_id нет integer:int64 | null min: 1 7
data[].marking да OrderMarking Marking data expected for products in the order.
data[].marking.required да boolean Whether the order contains products that require marking data after picking. true
data[].marking.types да array<string> Marking types required by products in the order. Currently chestny_znak; the list may gain values such as jewel_uin and imei.
data[].marking.types[] нет string "chestny_znak"
data[].contact нет object | null
data[].contact.first_name нет string | null "Ivan"
data[].contact.middle_name нет string | null "Ivanovich"
data[].contact.last_name нет string | null "Petrov"
data[].contact.phone нет string | null "+359888123456"
data[].contact.email нет string:email | null "customer@example.com"
data[].contact.country_id нет integer:int64 | null min: 1 100
data[].contact.city_id нет integer:int64 | null min: 1 200
data[].contact.postcode нет string | null "1000"
data[].contact.latitude нет number:float | null min: -90
max: 90
42.6977
data[].contact.longitude нет number:float | null min: -180
max: 180
23.3219
data[].contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data[].delivery нет object | null
data[].delivery.service_id нет integer:int64 | null min: 1 1
data[].delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data[].delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data[].delivery.status нет string | null "created"
data[].delivery.track_number нет string | null "CDEK-123456789"
data[].delivery.pickup_point_id нет string | null "SOFIA-01"
data[].delivery.source_id нет string | null "cdek-15"
data[].delivery.tariff_code нет integer:int64 | null 136
data[].delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data[].delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data[].delivery.delivery_date нет string:date | null "2026-07-16"
data[].delivery.delivery_time_start нет string:time | null "09:00:00Z"
data[].delivery.delivery_time_end нет string:time | null "18:00:00Z"
data[].comments нет object | null
data[].comments.delivery_service_text нет string | null "Call before delivery"
data[].comments.inner_text нет string | null "VIP customer"
data[].offers нет array<OrderLineEmbedded>
data[].offers[] нет OrderLineEmbedded Scalar lot fields use the actual lot only when the full line is picked from one lot; partial/multiple actual lots leave scalars null. Before picking they retain the requested lot. Requested constraints are always available in requested_lot.
data[].offers[].id да integer:int64 readOnly min: 1 7001
data[].offers[].product_id нет integer:int64 | null min: 1 1201
data[].offers[].quantity нет number:float | null min: 0 2
data[].offers[].estimated_price нет number:float | null 19.5
data[].offers[].price нет number:float | null 19.99
data[].offers[].expiration_date нет string:date | null "2027-01-15"
data[].offers[].batch нет string | null maxLength: 15 "LOT-2026"
data[].offers[].operation_user_id нет integer:int64 | null min: 1 9
data[].offers[].product нет object | null
data[].offers[].product.id да integer:int64 readOnly min: 1 1201
data[].offers[].product.name да string "Coffee 250g"
data[].offers[].product.external_id нет string | null "EXT-10045"
data[].offers[].reservation нет OrderReservationLine Reservation totals for one order line.
data[].offers[].reservation.required_qty да number:float 3
data[].offers[].reservation.reserved_qty да number:float 1
data[].offers[].reservation.unreserved_qty да number:float 2
data[].offers[].reservation.missing_qty да number:float 2
data[].offers[].reservation.status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data[].offers[].reservation_items нет array<OrderReservationItem>
data[].offers[].reservation_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data[].offers[].reservation_items[].offer_id да integer:int64 min: 1 1201
data[].offers[].reservation_items[].offer_name нет string | null "Coffee 250g"
data[].offers[].reservation_items[].offer_article нет string | null "ART-001245"
data[].offers[].reservation_items[].offer_sku нет string | null "SKU-001245"
data[].offers[].reservation_items[].required_qty да number:float 3
data[].offers[].reservation_items[].reserved_qty да number:float 1
data[].offers[].reservation_items[].unreserved_qty да number:float 2
data[].offers[].reservation_items[].missing_qty да number:float 2
data[].offers[].reservation_items[].status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data[].offers[].reservation_items[].source_order_offer_ids да array<integer:int64>
data[].offers[].reservation_items[].source_order_offer_ids[] нет integer:int64 min: 1 7001
data[].offers[].reservation_items[].source да enum enum: order_offer, component, quant, composite_quant "order_offer"
data[].offers[].reservation_items[].expanded_from_composite да boolean false
data[].offers[].reservation_items[].expanded_from_quant да boolean false
data[].offers[].reservation_items[].quant_base_offer_id нет integer:int64 | null min: 1 1201
data[].offers[].reservation_items[].quant_base_multiplicity нет number:float | null 6
data[].offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].offers[].production_date нет string:date | null "2026-01-15"
data[].offers[].requested_lot нет WarehouseLot
data[].offers[].requested_lot.batch да string | null "LOT-2026"
data[].offers[].requested_lot.production_date да string:date | null "2026-01-15"
data[].offers[].requested_lot.expiration_date да string:date | null "2027-01-15"
data[].offers[].picked_quantity нет number:float min: 0 2
data[].offers[].fulfillment_lots нет array<OrderFulfillmentLot> Current active placed warehouse rows for this exact order line and product. Existing orders are included where these rows survive. This is a current picking snapshot, not a historical shipment event.
data[].offers[].fulfillment_lots[] нет OrderFulfillmentLot
data[].offers[].fulfillment_lots[].batch да string | null "LOT-2026"
data[].offers[].fulfillment_lots[].production_date да string:date | null "2026-01-15"
data[].offers[].fulfillment_lots[].expiration_date да string:date | null "2027-01-15"
data[].offers[].fulfillment_lots[].warehouse_id да integer:int64 min: 1 734
data[].offers[].fulfillment_lots[].product_id да integer:int64 min: 1 1201
data[].offers[].fulfillment_lots[].quantity да number:float min: 0 2
data[].reservation нет OrderReservation Reservation readiness and shortages calculated for the order.
data[].reservation.ready да boolean false
data[].reservation.reason да string | null "Not all order products are reserved."
data[].reservation.expected_total да number:float 3
data[].reservation.reserved_total да number:float 1
data[].reservation.unreserved_total да number:float 2
data[].reservation.missing_total да number:float 2
data[].reservation.missing_items да array<OrderReservationItem>
data[].reservation.missing_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data[].reservation.missing_items[].offer_id да integer:int64 min: 1 1201
data[].reservation.missing_items[].offer_name нет string | null "Coffee 250g"
data[].reservation.missing_items[].offer_article нет string | null "ART-001245"
data[].reservation.missing_items[].offer_sku нет string | null "SKU-001245"
data[].reservation.missing_items[].required_qty да number:float 3
data[].reservation.missing_items[].reserved_qty да number:float 1
data[].reservation.missing_items[].unreserved_qty да number:float 2
data[].reservation.missing_items[].missing_qty да number:float 2
data[].reservation.missing_items[].status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data[].reservation.missing_items[].source_order_offer_ids да array<integer:int64>
data[].reservation.missing_items[].source_order_offer_ids[] нет integer:int64 min: 1 7001
data[].reservation.missing_items[].source да enum enum: order_offer, component, quant, composite_quant "order_offer"
data[].reservation.missing_items[].expanded_from_composite да boolean false
data[].reservation.missing_items[].expanded_from_quant да boolean false
data[].reservation.missing_items[].quant_base_offer_id нет integer:int64 | null min: 1 1201
data[].reservation.missing_items[].quant_base_multiplicity нет number:float | null 6
data[].reservation.error да boolean false
data[].consumables нет array<OrderConsumable>
data[].consumables[] нет OrderConsumable Current consumable line, not an append-only consumption event. Unplaced usage creates a commitment but does not decrease physical stockTotal; do not treat that stockTotal as remaining packaging inventory.
data[].consumables[].id да integer:int64 min: 1 301
data[].consumables[].order_id да integer:int64 min: 1 8101
data[].consumables[].product_id да integer:int64 min: 1 1202
data[].consumables[].warehouse_id да integer:int64 | null min: 1 734
data[].consumables[].place_id да integer:int64 | null min: 1 501
data[].consumables[].quantity да number:float 1
data[].consumables[].stock_location_mode да enum enum: placed, unplaced "unplaced"
data[].consumables[].created_at да string:date-time | null "2026-07-14T10:30:00Z"
data[].consumables[].updated_at да string:date-time | null "2026-07-14T10:30:00Z"
data[].status_history нет array<OrderStatusHistoryEvent> Present only on GET list/detail with include=status_history. Ordered chronologically, retains repeat status cycles and combines surviving audit and action-log entries. Missing history returns an empty array.
data[].status_history[] нет OrderStatusHistoryEvent Recorded WMS status transition or explicitly inferred initial status. It does not independently confirm physical carrier handover.
data[].status_history[].status_id да integer:int64 130
data[].status_history[].previous_status_id да integer:int64 | null 110
data[].status_history[].changed_at да string:date-time Time of the WMS status transition in ISO 8601 with an explicit timezone offset. "2026-07-14T12:00:00+03:00"
data[].status_history[].source да enum enum: audit, action_log, inferred "action_log"
data[].status_history[].inferred да boolean True only for a reconstructed initial status at order creation; this is not a separately recorded transition. false
data[].status_history_meta нет OrderStatusHistoryMeta
data[].status_history_meta.available да boolean At least one event is available. This does not guarantee complete historical coverage. true
data[].status_history_meta.current_status_matches_history да boolean The last available event has the current order status. False also when history is empty. true
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 8101,
      "external_id": "ORD-100245",
      "domain_id": 3,
      "type_id": 1,
      "shop_id": 12,
      "warehouse_id": 42,
      "status_id": 20,
      "status": {
        "id": 20,
        "name": "Created",
        "color": "#2457c5",
        "background_color": "#eaf0ff"
      },
      "order_date": "2026-07-14",
      "send_date": "2026-07-15",
      "source_id": 1,
      "customer_type": 1,
      "is_cod": true,
      "amounts": {
        "shipping_price": 8.6,
        "shipping_cost": 0,
        "sum": 39.98,
        "cod_sum": 48.58
      },
      "company_id": 7,
      "marking": {
        "required": true,
        "types": [
          "chestny_znak"
        ]
      },
      "contact": {
        "first_name": "Ivan",
        "middle_name": null,
        "last_name": "Petrov",
        "phone": "+359888123456",
        "email": "customer@example.com",
        "country_id": 100,
        "city_id": 200,
        "postcode": "1000",
        "latitude": 42.6977,
        "longitude": 23.3219,
        "full_address": "1 Vitosha Boulevard, Sofia"
      },
      "delivery": {
        "service_id": 1,
        "delivery_type": "door",
        "is_courier": true,
        "status": "created",
        "track_number": "CDEK-123456789",
        "source_id": "cdek-15",
        "tariff_code": 136,
        "label": "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf",
        "delivery_date": "2026-07-16",
        "delivery_time_start": "09:00:00Z",
        "delivery_time_end": "18:00:00Z"
      },
      "comments": {
        "delivery_service_text": "Call before delivery",
        "inner_text": "VIP customer"
      },
      "offers": [
        {
          "id": 7001,
          "product_id": 1201,
          "quantity": 2,
          "estimated_price": 19.5,
          "price": 19.99,
          "expiration_date": "2027-01-15",
          "batch": "LOT-2026",
          "operation_user_id": 9,
          "product": {
            "id": 1201,
            "name": "Coffee 250g",
            "external_id": "EXT-10045"
          },
          "created_at": "2026-07-14T09:00:00Z",
          "updated_at": "2026-07-14T09:30:00Z"
        }
      ],
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z",
      "status_history": [
        {
          "status_id": 20,
          "previous_status_id": 10,
          "changed_at": "2026-07-14T12:00:00+03:00",
          "source": "action_log",
          "inferred": false
        }
      ],
      "status_history_meta": {
        "available": true,
        "current_status_matches_history": true
      }
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/orders?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/orders?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/orders?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/orders",
    "per_page": 50,
    "to": 50,
    "total": 73
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/orders

Создать заказ

operationIdcreateOrders
РазделЗаказы
БезопасностьbearerAuth

Creates an outbound order with public v2 fields. The order may include contact, delivery, comments, and line items. Server-side validation checks shop and warehouse visibility, rejects system-calculated totals, and applies idempotency when Idempotency-Key is provided.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/orders" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CreateOrderRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateOrderPayload
data.type_id да integer:int64 1
data.shop_id да integer:int64 min: 1 12
data.warehouse_id да integer:int64 min: 1 42
data.external_id нет string | null "ORD-100245"
data.group_id нет oneOf<string | integer>
data.group_id нет string maxLength: 255 "2ФИС"
data.group_id нет integer Legacy numeric identifiers are also accepted.
data.send_date нет string:date | null "2026-07-15"
data.source_id нет integer:int64 | null min: 1 1
data.status_id нет integer:int64 | null ID статуса заказа. Текущий backend хранит статусы в базе данных; значения не моделируются как закрытый enum в публичном контракте. 20
data.customer_type нет integer:int64 | null 1
data.is_cod нет boolean true
data.company_id нет integer:int64 | null min: 1 7
data.amounts нет object | null
data.amounts.shipping_price нет number:float | null 8.6
data.amounts.shipping_cost нет number:float | null 0
data.amounts.sum нет number:float | null 39.98
data.amounts.cod_sum нет number:float | null 48.58
data.weight нет object | null
data.weight.value нет number:float | null min: 0 250
data.weight.unit да enum enum: g "g"
data.dimensions нет object | null
data.dimensions.x нет number:float | null min: 0 105
data.dimensions.y нет number:float | null min: 0 200
data.dimensions.z нет number:float | null min: 0 32
data.dimensions.unit да enum enum: mm "mm"
data.contact нет object | null
data.contact.first_name нет string | null "Ivan"
data.contact.middle_name нет string | null "Ivanovich"
data.contact.last_name нет string | null "Petrov"
data.contact.phone нет string | null "+359888123456"
data.contact.email нет string:email | null "customer@example.com"
data.contact.country_id нет integer:int64 | null min: 1 100
data.contact.city_id нет integer:int64 | null min: 1 200
data.contact.postcode нет string | null "1000"
data.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.delivery нет object | null
data.delivery.service_id нет integer:int64 | null min: 1 1
data.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.delivery.status нет string | null "created"
data.delivery.track_number нет string | null "CDEK-123456789"
data.delivery.pickup_point_id нет string | null "SOFIA-01"
data.delivery.source_id нет string | null "cdek-15"
data.delivery.tariff_code нет integer:int64 | null 136
data.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.delivery.delivery_date нет string:date | null "2026-07-16"
data.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.comments нет object | null
data.comments.delivery_service_text нет string | null "Call before delivery"
data.comments.inner_text нет string | null "VIP customer"
data.lines нет array<OrderEmbeddedLineCreatePayload>
data.lines[] нет OrderEmbeddedLineCreatePayload Payload строки внутри создания заказа. Товар определяется по product_id или product_external_id.
data.lines[] нет object
data.lines[] нет object

Примеры запроса

default

{
  "data": {
    "type_id": 1,
    "shop_id": 12,
    "warehouse_id": 42,
    "external_id": "ORD-100245",
    "send_date": "2026-07-15",
    "contact": {
      "first_name": "Ivan",
      "last_name": "Petrov",
      "phone": "+359888123456"
    },
    "lines": [
      {
        "product_id": 1201,
        "quantity": 2,
        "price": 19.99
      }
    ]
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Order Исходящий складской заказ. Опциональные связанные поля присутствуют, когда контроллер их загрузил или они запрошены через include.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "ORD-100245"
data.domain_id нет integer:int64 | null min: 1 3
data.type_id нет integer:int64 | null 1
data.shop_id нет integer:int64 | null min: 1 12
data.warehouse_id нет integer:int64 | null min: 1 42
data.status_id нет integer:int64 | null ID статуса заказа. Текущий backend хранит статусы в базе данных; значения не моделируются как закрытый enum в публичном контракте. 20
data.status нет object | null
data.status.id да integer:int64 20
data.status.name да string "Created"
data.status.color нет string | null "#2457c5"
data.status.background_color нет string | null "#eaf0ff"
data.order_date нет string:date | null "2026-07-14"
data.send_date нет string | null Stored order send date, potentially supplied by import, manual input or integration processing. It may be a date or date-time string; it is not a universal physical carrier-handover timestamp. "2026-07-15 20:25:08"
data.source_id нет integer:int64 | null min: 1 1
data.customer_type нет integer:int64 | null 1
data.is_cod нет boolean true
data.amounts нет OrderAmounts
data.amounts.shipping_price нет number:float | null 8.6
data.amounts.shipping_cost нет number:float | null 0
data.amounts.sum нет number:float | null 39.98
data.amounts.cod_sum нет number:float | null 48.58
data.company_id нет integer:int64 | null min: 1 7
data.marking да OrderMarking Marking data expected for products in the order.
data.marking.required да boolean Whether the order contains products that require marking data after picking. true
data.marking.types да array<string> Marking types required by products in the order. Currently chestny_znak; the list may gain values such as jewel_uin and imei.
data.marking.types[] нет string "chestny_znak"
data.contact нет object | null
data.contact.first_name нет string | null "Ivan"
data.contact.middle_name нет string | null "Ivanovich"
data.contact.last_name нет string | null "Petrov"
data.contact.phone нет string | null "+359888123456"
data.contact.email нет string:email | null "customer@example.com"
data.contact.country_id нет integer:int64 | null min: 1 100
data.contact.city_id нет integer:int64 | null min: 1 200
data.contact.postcode нет string | null "1000"
data.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.delivery нет object | null
data.delivery.service_id нет integer:int64 | null min: 1 1
data.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.delivery.status нет string | null "created"
data.delivery.track_number нет string | null "CDEK-123456789"
data.delivery.pickup_point_id нет string | null "SOFIA-01"
data.delivery.source_id нет string | null "cdek-15"
data.delivery.tariff_code нет integer:int64 | null 136
data.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.delivery.delivery_date нет string:date | null "2026-07-16"
data.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.comments нет object | null
data.comments.delivery_service_text нет string | null "Call before delivery"
data.comments.inner_text нет string | null "VIP customer"
data.offers нет array<OrderLineEmbedded>
data.offers[] нет OrderLineEmbedded Scalar lot fields use the actual lot only when the full line is picked from one lot; partial/multiple actual lots leave scalars null. Before picking they retain the requested lot. Requested constraints are always available in requested_lot.
data.offers[].id да integer:int64 readOnly min: 1 7001
data.offers[].product_id нет integer:int64 | null min: 1 1201
data.offers[].quantity нет number:float | null min: 0 2
data.offers[].estimated_price нет number:float | null 19.5
data.offers[].price нет number:float | null 19.99
data.offers[].expiration_date нет string:date | null "2027-01-15"
data.offers[].batch нет string | null maxLength: 15 "LOT-2026"
data.offers[].operation_user_id нет integer:int64 | null min: 1 9
data.offers[].product нет object | null
data.offers[].product.id да integer:int64 readOnly min: 1 1201
data.offers[].product.name да string "Coffee 250g"
data.offers[].product.external_id нет string | null "EXT-10045"
data.offers[].reservation нет OrderReservationLine Reservation totals for one order line.
data.offers[].reservation.required_qty да number:float 3
data.offers[].reservation.reserved_qty да number:float 1
data.offers[].reservation.unreserved_qty да number:float 2
data.offers[].reservation.missing_qty да number:float 2
data.offers[].reservation.status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.offers[].reservation_items нет array<OrderReservationItem>
data.offers[].reservation_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.offers[].reservation_items[].offer_id да integer:int64 min: 1 1201
data.offers[].reservation_items[].offer_name нет string | null "Coffee 250g"
data.offers[].reservation_items[].offer_article нет string | null "ART-001245"
data.offers[].reservation_items[].offer_sku нет string | null "SKU-001245"
data.offers[].reservation_items[].required_qty да number:float 3
data.offers[].reservation_items[].reserved_qty да number:float 1
data.offers[].reservation_items[].unreserved_qty да number:float 2
data.offers[].reservation_items[].missing_qty да number:float 2
data.offers[].reservation_items[].status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.offers[].reservation_items[].source_order_offer_ids да array<integer:int64>
data.offers[].reservation_items[].source_order_offer_ids[] нет integer:int64 min: 1 7001
data.offers[].reservation_items[].source да enum enum: order_offer, component, quant, composite_quant "order_offer"
data.offers[].reservation_items[].expanded_from_composite да boolean false
data.offers[].reservation_items[].expanded_from_quant да boolean false
data.offers[].reservation_items[].quant_base_offer_id нет integer:int64 | null min: 1 1201
data.offers[].reservation_items[].quant_base_multiplicity нет number:float | null 6
data.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].production_date нет string:date | null "2026-01-15"
data.offers[].requested_lot нет WarehouseLot
data.offers[].requested_lot.batch да string | null "LOT-2026"
data.offers[].requested_lot.production_date да string:date | null "2026-01-15"
data.offers[].requested_lot.expiration_date да string:date | null "2027-01-15"
data.offers[].picked_quantity нет number:float min: 0 2
data.offers[].fulfillment_lots нет array<OrderFulfillmentLot> Current active placed warehouse rows for this exact order line and product. Existing orders are included where these rows survive. This is a current picking snapshot, not a historical shipment event.
data.offers[].fulfillment_lots[] нет OrderFulfillmentLot
data.offers[].fulfillment_lots[].batch да string | null "LOT-2026"
data.offers[].fulfillment_lots[].production_date да string:date | null "2026-01-15"
data.offers[].fulfillment_lots[].expiration_date да string:date | null "2027-01-15"
data.offers[].fulfillment_lots[].warehouse_id да integer:int64 min: 1 734
data.offers[].fulfillment_lots[].product_id да integer:int64 min: 1 1201
data.offers[].fulfillment_lots[].quantity да number:float min: 0 2
data.reservation нет OrderReservation Reservation readiness and shortages calculated for the order.
data.reservation.ready да boolean false
data.reservation.reason да string | null "Not all order products are reserved."
data.reservation.expected_total да number:float 3
data.reservation.reserved_total да number:float 1
data.reservation.unreserved_total да number:float 2
data.reservation.missing_total да number:float 2
data.reservation.missing_items да array<OrderReservationItem>
data.reservation.missing_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.reservation.missing_items[].offer_id да integer:int64 min: 1 1201
data.reservation.missing_items[].offer_name нет string | null "Coffee 250g"
data.reservation.missing_items[].offer_article нет string | null "ART-001245"
data.reservation.missing_items[].offer_sku нет string | null "SKU-001245"
data.reservation.missing_items[].required_qty да number:float 3
data.reservation.missing_items[].reserved_qty да number:float 1
data.reservation.missing_items[].unreserved_qty да number:float 2
data.reservation.missing_items[].missing_qty да number:float 2
data.reservation.missing_items[].status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.reservation.missing_items[].source_order_offer_ids да array<integer:int64>
data.reservation.missing_items[].source_order_offer_ids[] нет integer:int64 min: 1 7001
data.reservation.missing_items[].source да enum enum: order_offer, component, quant, composite_quant "order_offer"
data.reservation.missing_items[].expanded_from_composite да boolean false
data.reservation.missing_items[].expanded_from_quant да boolean false
data.reservation.missing_items[].quant_base_offer_id нет integer:int64 | null min: 1 1201
data.reservation.missing_items[].quant_base_multiplicity нет number:float | null 6
data.reservation.error да boolean false
data.consumables нет array<OrderConsumable>
data.consumables[] нет OrderConsumable Current consumable line, not an append-only consumption event. Unplaced usage creates a commitment but does not decrease physical stockTotal; do not treat that stockTotal as remaining packaging inventory.
data.consumables[].id да integer:int64 min: 1 301
data.consumables[].order_id да integer:int64 min: 1 8101
data.consumables[].product_id да integer:int64 min: 1 1202
data.consumables[].warehouse_id да integer:int64 | null min: 1 734
data.consumables[].place_id да integer:int64 | null min: 1 501
data.consumables[].quantity да number:float 1
data.consumables[].stock_location_mode да enum enum: placed, unplaced "unplaced"
data.consumables[].created_at да string:date-time | null "2026-07-14T10:30:00Z"
data.consumables[].updated_at да string:date-time | null "2026-07-14T10:30:00Z"
data.status_history нет array<OrderStatusHistoryEvent> Present only on GET list/detail with include=status_history. Ordered chronologically, retains repeat status cycles and combines surviving audit and action-log entries. Missing history returns an empty array.
data.status_history[] нет OrderStatusHistoryEvent Recorded WMS status transition or explicitly inferred initial status. It does not independently confirm physical carrier handover.
data.status_history[].status_id да integer:int64 130
data.status_history[].previous_status_id да integer:int64 | null 110
data.status_history[].changed_at да string:date-time Time of the WMS status transition in ISO 8601 with an explicit timezone offset. "2026-07-14T12:00:00+03:00"
data.status_history[].source да enum enum: audit, action_log, inferred "action_log"
data.status_history[].inferred да boolean True only for a reconstructed initial status at order creation; this is not a separately recorded transition. false
data.status_history_meta нет OrderStatusHistoryMeta
data.status_history_meta.available да boolean At least one event is available. This does not guarantee complete historical coverage. true
data.status_history_meta.current_status_matches_history да boolean The last available event has the current order status. False also when history is empty. true
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 8101,
    "external_id": "ORD-100245",
    "domain_id": 3,
    "type_id": 1,
    "shop_id": 12,
    "warehouse_id": 42,
    "status_id": 20,
    "status": {
      "id": 20,
      "name": "Created",
      "color": "#2457c5",
      "background_color": "#eaf0ff"
    },
    "order_date": "2026-07-14",
    "send_date": "2026-07-15",
    "source_id": 1,
    "customer_type": 1,
    "is_cod": true,
    "amounts": {
      "shipping_price": 8.6,
      "shipping_cost": 0,
      "sum": 39.98,
      "cod_sum": 48.58
    },
    "company_id": 7,
    "marking": {
      "required": true,
      "types": [
        "chestny_znak"
      ]
    },
    "contact": {
      "first_name": "Ivan",
      "middle_name": null,
      "last_name": "Petrov",
      "phone": "+359888123456",
      "email": "customer@example.com",
      "country_id": 100,
      "city_id": 200,
      "postcode": "1000",
      "latitude": 42.6977,
      "longitude": 23.3219,
      "full_address": "1 Vitosha Boulevard, Sofia"
    },
    "delivery": {
      "service_id": 1,
      "delivery_type": "door",
      "is_courier": true,
      "status": "created",
      "track_number": "CDEK-123456789",
      "source_id": "cdek-15",
      "tariff_code": 136,
      "label": "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf",
      "delivery_date": "2026-07-16",
      "delivery_time_start": "09:00:00Z",
      "delivery_time_end": "18:00:00Z"
    },
    "comments": {
      "delivery_service_text": "Call before delivery",
      "inner_text": "VIP customer"
    },
    "offers": [
      {
        "id": 7001,
        "product_id": 1201,
        "quantity": 2,
        "estimated_price": 19.5,
        "price": 19.99,
        "expiration_date": "2027-01-15",
        "batch": "LOT-2026",
        "operation_user_id": 9,
        "product": {
          "id": 1201,
          "name": "Coffee 250g",
          "external_id": "EXT-10045"
        },
        "created_at": "2026-07-14T09:00:00Z",
        "updated_at": "2026-07-14T09:30:00Z"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/orders/{id}

Получить заказ

operationIdgetOrders
РазделЗаказы
БезопасностьbearerAuth

Возвращает один ресурс: заказ, если он существует и видим аутентифицированному аккаунту.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Request include=status_history to receive chronological WMS status transitions with changed_at (ISO 8601 and explicit timezone offset), source and inferred. status_history_meta reports availability and whether the last event matches the current status; surviving logs do not guarantee a complete history. send_date is the stored order date field and may come from import, manual input or integration processing; it is not a universal physical carrier-handover timestamp. Status transitions and shipment-document closure must be interpreted as separate recorded events. Dedicated picked_at, packed_at and shipped_at milestones are not exposed.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/orders/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID заказа. 1001
include query нет string form false Add status_history for recorded WMS status transitions; the other detail relations remain included by default. The same filter may also be sent as filter[include] where supported by the Laravel query adapter. "status_history"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Order Исходящий складской заказ. Опциональные связанные поля присутствуют, когда контроллер их загрузил или они запрошены через include.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "ORD-100245"
data.domain_id нет integer:int64 | null min: 1 3
data.type_id нет integer:int64 | null 1
data.shop_id нет integer:int64 | null min: 1 12
data.warehouse_id нет integer:int64 | null min: 1 42
data.status_id нет integer:int64 | null ID статуса заказа. Текущий backend хранит статусы в базе данных; значения не моделируются как закрытый enum в публичном контракте. 20
data.status нет object | null
data.status.id да integer:int64 20
data.status.name да string "Created"
data.status.color нет string | null "#2457c5"
data.status.background_color нет string | null "#eaf0ff"
data.order_date нет string:date | null "2026-07-14"
data.send_date нет string | null Stored order send date, potentially supplied by import, manual input or integration processing. It may be a date or date-time string; it is not a universal physical carrier-handover timestamp. "2026-07-15 20:25:08"
data.source_id нет integer:int64 | null min: 1 1
data.customer_type нет integer:int64 | null 1
data.is_cod нет boolean true
data.amounts нет OrderAmounts
data.amounts.shipping_price нет number:float | null 8.6
data.amounts.shipping_cost нет number:float | null 0
data.amounts.sum нет number:float | null 39.98
data.amounts.cod_sum нет number:float | null 48.58
data.company_id нет integer:int64 | null min: 1 7
data.marking да OrderMarking Marking data expected for products in the order.
data.marking.required да boolean Whether the order contains products that require marking data after picking. true
data.marking.types да array<string> Marking types required by products in the order. Currently chestny_znak; the list may gain values such as jewel_uin and imei.
data.marking.types[] нет string "chestny_znak"
data.contact нет object | null
data.contact.first_name нет string | null "Ivan"
data.contact.middle_name нет string | null "Ivanovich"
data.contact.last_name нет string | null "Petrov"
data.contact.phone нет string | null "+359888123456"
data.contact.email нет string:email | null "customer@example.com"
data.contact.country_id нет integer:int64 | null min: 1 100
data.contact.city_id нет integer:int64 | null min: 1 200
data.contact.postcode нет string | null "1000"
data.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.delivery нет object | null
data.delivery.service_id нет integer:int64 | null min: 1 1
data.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.delivery.status нет string | null "created"
data.delivery.track_number нет string | null "CDEK-123456789"
data.delivery.pickup_point_id нет string | null "SOFIA-01"
data.delivery.source_id нет string | null "cdek-15"
data.delivery.tariff_code нет integer:int64 | null 136
data.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.delivery.delivery_date нет string:date | null "2026-07-16"
data.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.comments нет object | null
data.comments.delivery_service_text нет string | null "Call before delivery"
data.comments.inner_text нет string | null "VIP customer"
data.offers нет array<OrderLineEmbedded>
data.offers[] нет OrderLineEmbedded Scalar lot fields use the actual lot only when the full line is picked from one lot; partial/multiple actual lots leave scalars null. Before picking they retain the requested lot. Requested constraints are always available in requested_lot.
data.offers[].id да integer:int64 readOnly min: 1 7001
data.offers[].product_id нет integer:int64 | null min: 1 1201
data.offers[].quantity нет number:float | null min: 0 2
data.offers[].estimated_price нет number:float | null 19.5
data.offers[].price нет number:float | null 19.99
data.offers[].expiration_date нет string:date | null "2027-01-15"
data.offers[].batch нет string | null maxLength: 15 "LOT-2026"
data.offers[].operation_user_id нет integer:int64 | null min: 1 9
data.offers[].product нет object | null
data.offers[].product.id да integer:int64 readOnly min: 1 1201
data.offers[].product.name да string "Coffee 250g"
data.offers[].product.external_id нет string | null "EXT-10045"
data.offers[].reservation нет OrderReservationLine Reservation totals for one order line.
data.offers[].reservation.required_qty да number:float 3
data.offers[].reservation.reserved_qty да number:float 1
data.offers[].reservation.unreserved_qty да number:float 2
data.offers[].reservation.missing_qty да number:float 2
data.offers[].reservation.status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.offers[].reservation_items нет array<OrderReservationItem>
data.offers[].reservation_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.offers[].reservation_items[].offer_id да integer:int64 min: 1 1201
data.offers[].reservation_items[].offer_name нет string | null "Coffee 250g"
data.offers[].reservation_items[].offer_article нет string | null "ART-001245"
data.offers[].reservation_items[].offer_sku нет string | null "SKU-001245"
data.offers[].reservation_items[].required_qty да number:float 3
data.offers[].reservation_items[].reserved_qty да number:float 1
data.offers[].reservation_items[].unreserved_qty да number:float 2
data.offers[].reservation_items[].missing_qty да number:float 2
data.offers[].reservation_items[].status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.offers[].reservation_items[].source_order_offer_ids да array<integer:int64>
data.offers[].reservation_items[].source_order_offer_ids[] нет integer:int64 min: 1 7001
data.offers[].reservation_items[].source да enum enum: order_offer, component, quant, composite_quant "order_offer"
data.offers[].reservation_items[].expanded_from_composite да boolean false
data.offers[].reservation_items[].expanded_from_quant да boolean false
data.offers[].reservation_items[].quant_base_offer_id нет integer:int64 | null min: 1 1201
data.offers[].reservation_items[].quant_base_multiplicity нет number:float | null 6
data.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].production_date нет string:date | null "2026-01-15"
data.offers[].requested_lot нет WarehouseLot
data.offers[].requested_lot.batch да string | null "LOT-2026"
data.offers[].requested_lot.production_date да string:date | null "2026-01-15"
data.offers[].requested_lot.expiration_date да string:date | null "2027-01-15"
data.offers[].picked_quantity нет number:float min: 0 2
data.offers[].fulfillment_lots нет array<OrderFulfillmentLot> Current active placed warehouse rows for this exact order line and product. Existing orders are included where these rows survive. This is a current picking snapshot, not a historical shipment event.
data.offers[].fulfillment_lots[] нет OrderFulfillmentLot
data.offers[].fulfillment_lots[].batch да string | null "LOT-2026"
data.offers[].fulfillment_lots[].production_date да string:date | null "2026-01-15"
data.offers[].fulfillment_lots[].expiration_date да string:date | null "2027-01-15"
data.offers[].fulfillment_lots[].warehouse_id да integer:int64 min: 1 734
data.offers[].fulfillment_lots[].product_id да integer:int64 min: 1 1201
data.offers[].fulfillment_lots[].quantity да number:float min: 0 2
data.reservation нет OrderReservation Reservation readiness and shortages calculated for the order.
data.reservation.ready да boolean false
data.reservation.reason да string | null "Not all order products are reserved."
data.reservation.expected_total да number:float 3
data.reservation.reserved_total да number:float 1
data.reservation.unreserved_total да number:float 2
data.reservation.missing_total да number:float 2
data.reservation.missing_items да array<OrderReservationItem>
data.reservation.missing_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.reservation.missing_items[].offer_id да integer:int64 min: 1 1201
data.reservation.missing_items[].offer_name нет string | null "Coffee 250g"
data.reservation.missing_items[].offer_article нет string | null "ART-001245"
data.reservation.missing_items[].offer_sku нет string | null "SKU-001245"
data.reservation.missing_items[].required_qty да number:float 3
data.reservation.missing_items[].reserved_qty да number:float 1
data.reservation.missing_items[].unreserved_qty да number:float 2
data.reservation.missing_items[].missing_qty да number:float 2
data.reservation.missing_items[].status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.reservation.missing_items[].source_order_offer_ids да array<integer:int64>
data.reservation.missing_items[].source_order_offer_ids[] нет integer:int64 min: 1 7001
data.reservation.missing_items[].source да enum enum: order_offer, component, quant, composite_quant "order_offer"
data.reservation.missing_items[].expanded_from_composite да boolean false
data.reservation.missing_items[].expanded_from_quant да boolean false
data.reservation.missing_items[].quant_base_offer_id нет integer:int64 | null min: 1 1201
data.reservation.missing_items[].quant_base_multiplicity нет number:float | null 6
data.reservation.error да boolean false
data.consumables нет array<OrderConsumable>
data.consumables[] нет OrderConsumable Current consumable line, not an append-only consumption event. Unplaced usage creates a commitment but does not decrease physical stockTotal; do not treat that stockTotal as remaining packaging inventory.
data.consumables[].id да integer:int64 min: 1 301
data.consumables[].order_id да integer:int64 min: 1 8101
data.consumables[].product_id да integer:int64 min: 1 1202
data.consumables[].warehouse_id да integer:int64 | null min: 1 734
data.consumables[].place_id да integer:int64 | null min: 1 501
data.consumables[].quantity да number:float 1
data.consumables[].stock_location_mode да enum enum: placed, unplaced "unplaced"
data.consumables[].created_at да string:date-time | null "2026-07-14T10:30:00Z"
data.consumables[].updated_at да string:date-time | null "2026-07-14T10:30:00Z"
data.status_history нет array<OrderStatusHistoryEvent> Present only on GET list/detail with include=status_history. Ordered chronologically, retains repeat status cycles and combines surviving audit and action-log entries. Missing history returns an empty array.
data.status_history[] нет OrderStatusHistoryEvent Recorded WMS status transition or explicitly inferred initial status. It does not independently confirm physical carrier handover.
data.status_history[].status_id да integer:int64 130
data.status_history[].previous_status_id да integer:int64 | null 110
data.status_history[].changed_at да string:date-time Time of the WMS status transition in ISO 8601 with an explicit timezone offset. "2026-07-14T12:00:00+03:00"
data.status_history[].source да enum enum: audit, action_log, inferred "action_log"
data.status_history[].inferred да boolean True only for a reconstructed initial status at order creation; this is not a separately recorded transition. false
data.status_history_meta нет OrderStatusHistoryMeta
data.status_history_meta.available да boolean At least one event is available. This does not guarantee complete historical coverage. true
data.status_history_meta.current_status_matches_history да boolean The last available event has the current order status. False also when history is empty. true
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 8101,
    "external_id": "ORD-100245",
    "domain_id": 3,
    "type_id": 1,
    "shop_id": 12,
    "warehouse_id": 42,
    "status_id": 20,
    "status": {
      "id": 20,
      "name": "Created",
      "color": "#2457c5",
      "background_color": "#eaf0ff"
    },
    "order_date": "2026-07-14",
    "send_date": "2026-07-15",
    "source_id": 1,
    "customer_type": 1,
    "is_cod": true,
    "amounts": {
      "shipping_price": 8.6,
      "shipping_cost": 0,
      "sum": 39.98,
      "cod_sum": 48.58
    },
    "company_id": 7,
    "marking": {
      "required": true,
      "types": [
        "chestny_znak"
      ]
    },
    "contact": {
      "first_name": "Ivan",
      "middle_name": null,
      "last_name": "Petrov",
      "phone": "+359888123456",
      "email": "customer@example.com",
      "country_id": 100,
      "city_id": 200,
      "postcode": "1000",
      "latitude": 42.6977,
      "longitude": 23.3219,
      "full_address": "1 Vitosha Boulevard, Sofia"
    },
    "delivery": {
      "service_id": 1,
      "delivery_type": "door",
      "is_courier": true,
      "status": "created",
      "track_number": "CDEK-123456789",
      "source_id": "cdek-15",
      "tariff_code": 136,
      "label": "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf",
      "delivery_date": "2026-07-16",
      "delivery_time_start": "09:00:00Z",
      "delivery_time_end": "18:00:00Z"
    },
    "comments": {
      "delivery_service_text": "Call before delivery",
      "inner_text": "VIP customer"
    },
    "offers": [
      {
        "id": 7001,
        "product_id": 1201,
        "quantity": 2,
        "estimated_price": 19.5,
        "price": 19.99,
        "expiration_date": "2027-01-15",
        "batch": "LOT-2026",
        "operation_user_id": 9,
        "product": {
          "id": 1201,
          "name": "Coffee 250g",
          "external_id": "EXT-10045"
        },
        "created_at": "2026-07-14T09:00:00Z",
        "updated_at": "2026-07-14T09:30:00Z"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z",
    "status_history": [
      {
        "status_id": 20,
        "previous_status_id": 10,
        "changed_at": "2026-07-14T12:00:00+03:00",
        "source": "action_log",
        "inferred": false
      }
    ],
    "status_history_meta": {
      "available": true,
      "current_status_matches_history": true
    }
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/orders/{id}

Обновить заказ

operationIdreplaceOrders
РазделЗаказы
БезопасностьbearerAuth

Replaces editable order fields before the lifecycle reaches a locked status. Contact, delivery, comments, dimensions, and selected header fields may be changed; system totals remain server-calculated.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/orders/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID заказа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

ReplaceOrderRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да ReplaceOrderPayload Legacy PUT payload. Текущий backend применяет семантику частичного обновления и оставляет пропущенные поля без изменений.
data.external_id нет string | null "ORD-100245"
data.send_date нет string:date | null "2026-07-16"
data.status_id нет integer:int64 | null ID статуса заказа. Текущий backend хранит статусы в базе данных; значения не моделируются как закрытый enum в публичном контракте. 20
data.is_cod нет boolean true
data.amounts нет object | null
data.amounts.shipping_price нет number:float | null 8.6
data.amounts.shipping_cost нет number:float | null 0
data.amounts.sum нет number:float | null 39.98
data.amounts.cod_sum нет number:float | null 48.58
data.weight нет object | null
data.weight.value нет number:float | null min: 0 250
data.weight.unit да enum enum: g "g"
data.dimensions нет object | null
data.dimensions.x нет number:float | null min: 0 105
data.dimensions.y нет number:float | null min: 0 200
data.dimensions.z нет number:float | null min: 0 32
data.dimensions.unit да enum enum: mm "mm"
data.contact нет object | null
data.contact.first_name нет string | null "Ivan"
data.contact.middle_name нет string | null "Ivanovich"
data.contact.last_name нет string | null "Petrov"
data.contact.phone нет string | null "+359888123456"
data.contact.email нет string:email | null "customer@example.com"
data.contact.country_id нет integer:int64 | null min: 1 100
data.contact.city_id нет integer:int64 | null min: 1 200
data.contact.postcode нет string | null "1000"
data.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.delivery нет object | null
data.delivery.service_id нет integer:int64 | null min: 1 1
data.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.delivery.status нет string | null "created"
data.delivery.track_number нет string | null "CDEK-123456789"
data.delivery.pickup_point_id нет string | null "SOFIA-01"
data.delivery.source_id нет string | null "cdek-15"
data.delivery.tariff_code нет integer:int64 | null 136
data.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.delivery.delivery_date нет string:date | null "2026-07-16"
data.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.comments нет object | null
data.comments.delivery_service_text нет string | null "Call before delivery"
data.comments.inner_text нет string | null "VIP customer"

Примеры запроса

default

{
  "data": {
    "send_date": "2026-07-16",
    "comments": {
      "inner_text": "Priority shipment"
    }
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Order Исходящий складской заказ. Опциональные связанные поля присутствуют, когда контроллер их загрузил или они запрошены через include.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "ORD-100245"
data.domain_id нет integer:int64 | null min: 1 3
data.type_id нет integer:int64 | null 1
data.shop_id нет integer:int64 | null min: 1 12
data.warehouse_id нет integer:int64 | null min: 1 42
data.status_id нет integer:int64 | null ID статуса заказа. Текущий backend хранит статусы в базе данных; значения не моделируются как закрытый enum в публичном контракте. 20
data.status нет object | null
data.status.id да integer:int64 20
data.status.name да string "Created"
data.status.color нет string | null "#2457c5"
data.status.background_color нет string | null "#eaf0ff"
data.order_date нет string:date | null "2026-07-14"
data.send_date нет string | null Stored order send date, potentially supplied by import, manual input or integration processing. It may be a date or date-time string; it is not a universal physical carrier-handover timestamp. "2026-07-15 20:25:08"
data.source_id нет integer:int64 | null min: 1 1
data.customer_type нет integer:int64 | null 1
data.is_cod нет boolean true
data.amounts нет OrderAmounts
data.amounts.shipping_price нет number:float | null 8.6
data.amounts.shipping_cost нет number:float | null 0
data.amounts.sum нет number:float | null 39.98
data.amounts.cod_sum нет number:float | null 48.58
data.company_id нет integer:int64 | null min: 1 7
data.marking да OrderMarking Marking data expected for products in the order.
data.marking.required да boolean Whether the order contains products that require marking data after picking. true
data.marking.types да array<string> Marking types required by products in the order. Currently chestny_znak; the list may gain values such as jewel_uin and imei.
data.marking.types[] нет string "chestny_znak"
data.contact нет object | null
data.contact.first_name нет string | null "Ivan"
data.contact.middle_name нет string | null "Ivanovich"
data.contact.last_name нет string | null "Petrov"
data.contact.phone нет string | null "+359888123456"
data.contact.email нет string:email | null "customer@example.com"
data.contact.country_id нет integer:int64 | null min: 1 100
data.contact.city_id нет integer:int64 | null min: 1 200
data.contact.postcode нет string | null "1000"
data.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.delivery нет object | null
data.delivery.service_id нет integer:int64 | null min: 1 1
data.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.delivery.status нет string | null "created"
data.delivery.track_number нет string | null "CDEK-123456789"
data.delivery.pickup_point_id нет string | null "SOFIA-01"
data.delivery.source_id нет string | null "cdek-15"
data.delivery.tariff_code нет integer:int64 | null 136
data.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.delivery.delivery_date нет string:date | null "2026-07-16"
data.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.comments нет object | null
data.comments.delivery_service_text нет string | null "Call before delivery"
data.comments.inner_text нет string | null "VIP customer"
data.offers нет array<OrderLineEmbedded>
data.offers[] нет OrderLineEmbedded Scalar lot fields use the actual lot only when the full line is picked from one lot; partial/multiple actual lots leave scalars null. Before picking they retain the requested lot. Requested constraints are always available in requested_lot.
data.offers[].id да integer:int64 readOnly min: 1 7001
data.offers[].product_id нет integer:int64 | null min: 1 1201
data.offers[].quantity нет number:float | null min: 0 2
data.offers[].estimated_price нет number:float | null 19.5
data.offers[].price нет number:float | null 19.99
data.offers[].expiration_date нет string:date | null "2027-01-15"
data.offers[].batch нет string | null maxLength: 15 "LOT-2026"
data.offers[].operation_user_id нет integer:int64 | null min: 1 9
data.offers[].product нет object | null
data.offers[].product.id да integer:int64 readOnly min: 1 1201
data.offers[].product.name да string "Coffee 250g"
data.offers[].product.external_id нет string | null "EXT-10045"
data.offers[].reservation нет OrderReservationLine Reservation totals for one order line.
data.offers[].reservation.required_qty да number:float 3
data.offers[].reservation.reserved_qty да number:float 1
data.offers[].reservation.unreserved_qty да number:float 2
data.offers[].reservation.missing_qty да number:float 2
data.offers[].reservation.status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.offers[].reservation_items нет array<OrderReservationItem>
data.offers[].reservation_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.offers[].reservation_items[].offer_id да integer:int64 min: 1 1201
data.offers[].reservation_items[].offer_name нет string | null "Coffee 250g"
data.offers[].reservation_items[].offer_article нет string | null "ART-001245"
data.offers[].reservation_items[].offer_sku нет string | null "SKU-001245"
data.offers[].reservation_items[].required_qty да number:float 3
data.offers[].reservation_items[].reserved_qty да number:float 1
data.offers[].reservation_items[].unreserved_qty да number:float 2
data.offers[].reservation_items[].missing_qty да number:float 2
data.offers[].reservation_items[].status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.offers[].reservation_items[].source_order_offer_ids да array<integer:int64>
data.offers[].reservation_items[].source_order_offer_ids[] нет integer:int64 min: 1 7001
data.offers[].reservation_items[].source да enum enum: order_offer, component, quant, composite_quant "order_offer"
data.offers[].reservation_items[].expanded_from_composite да boolean false
data.offers[].reservation_items[].expanded_from_quant да boolean false
data.offers[].reservation_items[].quant_base_offer_id нет integer:int64 | null min: 1 1201
data.offers[].reservation_items[].quant_base_multiplicity нет number:float | null 6
data.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].production_date нет string:date | null "2026-01-15"
data.offers[].requested_lot нет WarehouseLot
data.offers[].requested_lot.batch да string | null "LOT-2026"
data.offers[].requested_lot.production_date да string:date | null "2026-01-15"
data.offers[].requested_lot.expiration_date да string:date | null "2027-01-15"
data.offers[].picked_quantity нет number:float min: 0 2
data.offers[].fulfillment_lots нет array<OrderFulfillmentLot> Current active placed warehouse rows for this exact order line and product. Existing orders are included where these rows survive. This is a current picking snapshot, not a historical shipment event.
data.offers[].fulfillment_lots[] нет OrderFulfillmentLot
data.offers[].fulfillment_lots[].batch да string | null "LOT-2026"
data.offers[].fulfillment_lots[].production_date да string:date | null "2026-01-15"
data.offers[].fulfillment_lots[].expiration_date да string:date | null "2027-01-15"
data.offers[].fulfillment_lots[].warehouse_id да integer:int64 min: 1 734
data.offers[].fulfillment_lots[].product_id да integer:int64 min: 1 1201
data.offers[].fulfillment_lots[].quantity да number:float min: 0 2
data.reservation нет OrderReservation Reservation readiness and shortages calculated for the order.
data.reservation.ready да boolean false
data.reservation.reason да string | null "Not all order products are reserved."
data.reservation.expected_total да number:float 3
data.reservation.reserved_total да number:float 1
data.reservation.unreserved_total да number:float 2
data.reservation.missing_total да number:float 2
data.reservation.missing_items да array<OrderReservationItem>
data.reservation.missing_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.reservation.missing_items[].offer_id да integer:int64 min: 1 1201
data.reservation.missing_items[].offer_name нет string | null "Coffee 250g"
data.reservation.missing_items[].offer_article нет string | null "ART-001245"
data.reservation.missing_items[].offer_sku нет string | null "SKU-001245"
data.reservation.missing_items[].required_qty да number:float 3
data.reservation.missing_items[].reserved_qty да number:float 1
data.reservation.missing_items[].unreserved_qty да number:float 2
data.reservation.missing_items[].missing_qty да number:float 2
data.reservation.missing_items[].status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.reservation.missing_items[].source_order_offer_ids да array<integer:int64>
data.reservation.missing_items[].source_order_offer_ids[] нет integer:int64 min: 1 7001
data.reservation.missing_items[].source да enum enum: order_offer, component, quant, composite_quant "order_offer"
data.reservation.missing_items[].expanded_from_composite да boolean false
data.reservation.missing_items[].expanded_from_quant да boolean false
data.reservation.missing_items[].quant_base_offer_id нет integer:int64 | null min: 1 1201
data.reservation.missing_items[].quant_base_multiplicity нет number:float | null 6
data.reservation.error да boolean false
data.consumables нет array<OrderConsumable>
data.consumables[] нет OrderConsumable Current consumable line, not an append-only consumption event. Unplaced usage creates a commitment but does not decrease physical stockTotal; do not treat that stockTotal as remaining packaging inventory.
data.consumables[].id да integer:int64 min: 1 301
data.consumables[].order_id да integer:int64 min: 1 8101
data.consumables[].product_id да integer:int64 min: 1 1202
data.consumables[].warehouse_id да integer:int64 | null min: 1 734
data.consumables[].place_id да integer:int64 | null min: 1 501
data.consumables[].quantity да number:float 1
data.consumables[].stock_location_mode да enum enum: placed, unplaced "unplaced"
data.consumables[].created_at да string:date-time | null "2026-07-14T10:30:00Z"
data.consumables[].updated_at да string:date-time | null "2026-07-14T10:30:00Z"
data.status_history нет array<OrderStatusHistoryEvent> Present only on GET list/detail with include=status_history. Ordered chronologically, retains repeat status cycles and combines surviving audit and action-log entries. Missing history returns an empty array.
data.status_history[] нет OrderStatusHistoryEvent Recorded WMS status transition or explicitly inferred initial status. It does not independently confirm physical carrier handover.
data.status_history[].status_id да integer:int64 130
data.status_history[].previous_status_id да integer:int64 | null 110
data.status_history[].changed_at да string:date-time Time of the WMS status transition in ISO 8601 with an explicit timezone offset. "2026-07-14T12:00:00+03:00"
data.status_history[].source да enum enum: audit, action_log, inferred "action_log"
data.status_history[].inferred да boolean True only for a reconstructed initial status at order creation; this is not a separately recorded transition. false
data.status_history_meta нет OrderStatusHistoryMeta
data.status_history_meta.available да boolean At least one event is available. This does not guarantee complete historical coverage. true
data.status_history_meta.current_status_matches_history да boolean The last available event has the current order status. False also when history is empty. true
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 8101,
    "external_id": "ORD-100245",
    "domain_id": 3,
    "type_id": 1,
    "shop_id": 12,
    "warehouse_id": 42,
    "status_id": 20,
    "status": {
      "id": 20,
      "name": "Created",
      "color": "#2457c5",
      "background_color": "#eaf0ff"
    },
    "order_date": "2026-07-14",
    "send_date": "2026-07-15",
    "source_id": 1,
    "customer_type": 1,
    "is_cod": true,
    "amounts": {
      "shipping_price": 8.6,
      "shipping_cost": 0,
      "sum": 39.98,
      "cod_sum": 48.58
    },
    "company_id": 7,
    "marking": {
      "required": true,
      "types": [
        "chestny_znak"
      ]
    },
    "contact": {
      "first_name": "Ivan",
      "middle_name": null,
      "last_name": "Petrov",
      "phone": "+359888123456",
      "email": "customer@example.com",
      "country_id": 100,
      "city_id": 200,
      "postcode": "1000",
      "latitude": 42.6977,
      "longitude": 23.3219,
      "full_address": "1 Vitosha Boulevard, Sofia"
    },
    "delivery": {
      "service_id": 1,
      "delivery_type": "door",
      "is_courier": true,
      "status": "created",
      "track_number": "CDEK-123456789",
      "source_id": "cdek-15",
      "tariff_code": 136,
      "label": "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf",
      "delivery_date": "2026-07-16",
      "delivery_time_start": "09:00:00Z",
      "delivery_time_end": "18:00:00Z"
    },
    "comments": {
      "delivery_service_text": "Call before delivery",
      "inner_text": "VIP customer"
    },
    "offers": [
      {
        "id": 7001,
        "product_id": 1201,
        "quantity": 2,
        "estimated_price": 19.5,
        "price": 19.99,
        "expiration_date": "2027-01-15",
        "batch": "LOT-2026",
        "operation_user_id": 9,
        "product": {
          "id": 1201,
          "name": "Coffee 250g",
          "external_id": "EXT-10045"
        },
        "created_at": "2026-07-14T09:00:00Z",
        "updated_at": "2026-07-14T09:30:00Z"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/orders/{id}

Обновить заказ

operationIdpatchOrders
РазделЗаказы
БезопасностьbearerAuth

Partially updates editable order fields. Omitted fields are left unchanged and the same lifecycle, data-scope, and idempotency rules as PUT /api/v2/orders/{id} apply.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/orders/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID заказа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

PatchOrderRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да PatchOrderPayload Payload частичного обновления заказа. Пропущенные поля не изменяются.
data.external_id нет string | null "ORD-100245"
data.send_date нет string:date | null "2026-07-16"
data.status_id нет integer:int64 | null ID статуса заказа. Текущий backend хранит статусы в базе данных; значения не моделируются как закрытый enum в публичном контракте. 20
data.is_cod нет boolean true
data.amounts нет object | null
data.amounts.shipping_price нет number:float | null 8.6
data.amounts.shipping_cost нет number:float | null 0
data.amounts.sum нет number:float | null 39.98
data.amounts.cod_sum нет number:float | null 48.58
data.weight нет object | null
data.weight.value нет number:float | null min: 0 250
data.weight.unit да enum enum: g "g"
data.dimensions нет object | null
data.dimensions.x нет number:float | null min: 0 105
data.dimensions.y нет number:float | null min: 0 200
data.dimensions.z нет number:float | null min: 0 32
data.dimensions.unit да enum enum: mm "mm"
data.contact нет object | null
data.contact.first_name нет string | null "Ivan"
data.contact.middle_name нет string | null "Ivanovich"
data.contact.last_name нет string | null "Petrov"
data.contact.phone нет string | null "+359888123456"
data.contact.email нет string:email | null "customer@example.com"
data.contact.country_id нет integer:int64 | null min: 1 100
data.contact.city_id нет integer:int64 | null min: 1 200
data.contact.postcode нет string | null "1000"
data.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.delivery нет object | null
data.delivery.service_id нет integer:int64 | null min: 1 1
data.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.delivery.status нет string | null "created"
data.delivery.track_number нет string | null "CDEK-123456789"
data.delivery.pickup_point_id нет string | null "SOFIA-01"
data.delivery.source_id нет string | null "cdek-15"
data.delivery.tariff_code нет integer:int64 | null 136
data.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.delivery.delivery_date нет string:date | null "2026-07-16"
data.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.comments нет object | null
data.comments.delivery_service_text нет string | null "Call before delivery"
data.comments.inner_text нет string | null "VIP customer"

Примеры запроса

default

{
  "data": {
    "send_date": "2026-07-16"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Order Исходящий складской заказ. Опциональные связанные поля присутствуют, когда контроллер их загрузил или они запрошены через include.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "ORD-100245"
data.domain_id нет integer:int64 | null min: 1 3
data.type_id нет integer:int64 | null 1
data.shop_id нет integer:int64 | null min: 1 12
data.warehouse_id нет integer:int64 | null min: 1 42
data.status_id нет integer:int64 | null ID статуса заказа. Текущий backend хранит статусы в базе данных; значения не моделируются как закрытый enum в публичном контракте. 20
data.status нет object | null
data.status.id да integer:int64 20
data.status.name да string "Created"
data.status.color нет string | null "#2457c5"
data.status.background_color нет string | null "#eaf0ff"
data.order_date нет string:date | null "2026-07-14"
data.send_date нет string | null Stored order send date, potentially supplied by import, manual input or integration processing. It may be a date or date-time string; it is not a universal physical carrier-handover timestamp. "2026-07-15 20:25:08"
data.source_id нет integer:int64 | null min: 1 1
data.customer_type нет integer:int64 | null 1
data.is_cod нет boolean true
data.amounts нет OrderAmounts
data.amounts.shipping_price нет number:float | null 8.6
data.amounts.shipping_cost нет number:float | null 0
data.amounts.sum нет number:float | null 39.98
data.amounts.cod_sum нет number:float | null 48.58
data.company_id нет integer:int64 | null min: 1 7
data.marking да OrderMarking Marking data expected for products in the order.
data.marking.required да boolean Whether the order contains products that require marking data after picking. true
data.marking.types да array<string> Marking types required by products in the order. Currently chestny_znak; the list may gain values such as jewel_uin and imei.
data.marking.types[] нет string "chestny_znak"
data.contact нет object | null
data.contact.first_name нет string | null "Ivan"
data.contact.middle_name нет string | null "Ivanovich"
data.contact.last_name нет string | null "Petrov"
data.contact.phone нет string | null "+359888123456"
data.contact.email нет string:email | null "customer@example.com"
data.contact.country_id нет integer:int64 | null min: 1 100
data.contact.city_id нет integer:int64 | null min: 1 200
data.contact.postcode нет string | null "1000"
data.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.delivery нет object | null
data.delivery.service_id нет integer:int64 | null min: 1 1
data.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.delivery.status нет string | null "created"
data.delivery.track_number нет string | null "CDEK-123456789"
data.delivery.pickup_point_id нет string | null "SOFIA-01"
data.delivery.source_id нет string | null "cdek-15"
data.delivery.tariff_code нет integer:int64 | null 136
data.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.delivery.delivery_date нет string:date | null "2026-07-16"
data.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.comments нет object | null
data.comments.delivery_service_text нет string | null "Call before delivery"
data.comments.inner_text нет string | null "VIP customer"
data.offers нет array<OrderLineEmbedded>
data.offers[] нет OrderLineEmbedded Scalar lot fields use the actual lot only when the full line is picked from one lot; partial/multiple actual lots leave scalars null. Before picking they retain the requested lot. Requested constraints are always available in requested_lot.
data.offers[].id да integer:int64 readOnly min: 1 7001
data.offers[].product_id нет integer:int64 | null min: 1 1201
data.offers[].quantity нет number:float | null min: 0 2
data.offers[].estimated_price нет number:float | null 19.5
data.offers[].price нет number:float | null 19.99
data.offers[].expiration_date нет string:date | null "2027-01-15"
data.offers[].batch нет string | null maxLength: 15 "LOT-2026"
data.offers[].operation_user_id нет integer:int64 | null min: 1 9
data.offers[].product нет object | null
data.offers[].product.id да integer:int64 readOnly min: 1 1201
data.offers[].product.name да string "Coffee 250g"
data.offers[].product.external_id нет string | null "EXT-10045"
data.offers[].reservation нет OrderReservationLine Reservation totals for one order line.
data.offers[].reservation.required_qty да number:float 3
data.offers[].reservation.reserved_qty да number:float 1
data.offers[].reservation.unreserved_qty да number:float 2
data.offers[].reservation.missing_qty да number:float 2
data.offers[].reservation.status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.offers[].reservation_items нет array<OrderReservationItem>
data.offers[].reservation_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.offers[].reservation_items[].offer_id да integer:int64 min: 1 1201
data.offers[].reservation_items[].offer_name нет string | null "Coffee 250g"
data.offers[].reservation_items[].offer_article нет string | null "ART-001245"
data.offers[].reservation_items[].offer_sku нет string | null "SKU-001245"
data.offers[].reservation_items[].required_qty да number:float 3
data.offers[].reservation_items[].reserved_qty да number:float 1
data.offers[].reservation_items[].unreserved_qty да number:float 2
data.offers[].reservation_items[].missing_qty да number:float 2
data.offers[].reservation_items[].status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.offers[].reservation_items[].source_order_offer_ids да array<integer:int64>
data.offers[].reservation_items[].source_order_offer_ids[] нет integer:int64 min: 1 7001
data.offers[].reservation_items[].source да enum enum: order_offer, component, quant, composite_quant "order_offer"
data.offers[].reservation_items[].expanded_from_composite да boolean false
data.offers[].reservation_items[].expanded_from_quant да boolean false
data.offers[].reservation_items[].quant_base_offer_id нет integer:int64 | null min: 1 1201
data.offers[].reservation_items[].quant_base_multiplicity нет number:float | null 6
data.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.offers[].production_date нет string:date | null "2026-01-15"
data.offers[].requested_lot нет WarehouseLot
data.offers[].requested_lot.batch да string | null "LOT-2026"
data.offers[].requested_lot.production_date да string:date | null "2026-01-15"
data.offers[].requested_lot.expiration_date да string:date | null "2027-01-15"
data.offers[].picked_quantity нет number:float min: 0 2
data.offers[].fulfillment_lots нет array<OrderFulfillmentLot> Current active placed warehouse rows for this exact order line and product. Existing orders are included where these rows survive. This is a current picking snapshot, not a historical shipment event.
data.offers[].fulfillment_lots[] нет OrderFulfillmentLot
data.offers[].fulfillment_lots[].batch да string | null "LOT-2026"
data.offers[].fulfillment_lots[].production_date да string:date | null "2026-01-15"
data.offers[].fulfillment_lots[].expiration_date да string:date | null "2027-01-15"
data.offers[].fulfillment_lots[].warehouse_id да integer:int64 min: 1 734
data.offers[].fulfillment_lots[].product_id да integer:int64 min: 1 1201
data.offers[].fulfillment_lots[].quantity да number:float min: 0 2
data.reservation нет OrderReservation Reservation readiness and shortages calculated for the order.
data.reservation.ready да boolean false
data.reservation.reason да string | null "Not all order products are reserved."
data.reservation.expected_total да number:float 3
data.reservation.reserved_total да number:float 1
data.reservation.unreserved_total да number:float 2
data.reservation.missing_total да number:float 2
data.reservation.missing_items да array<OrderReservationItem>
data.reservation.missing_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.reservation.missing_items[].offer_id да integer:int64 min: 1 1201
data.reservation.missing_items[].offer_name нет string | null "Coffee 250g"
data.reservation.missing_items[].offer_article нет string | null "ART-001245"
data.reservation.missing_items[].offer_sku нет string | null "SKU-001245"
data.reservation.missing_items[].required_qty да number:float 3
data.reservation.missing_items[].reserved_qty да number:float 1
data.reservation.missing_items[].unreserved_qty да number:float 2
data.reservation.missing_items[].missing_qty да number:float 2
data.reservation.missing_items[].status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.reservation.missing_items[].source_order_offer_ids да array<integer:int64>
data.reservation.missing_items[].source_order_offer_ids[] нет integer:int64 min: 1 7001
data.reservation.missing_items[].source да enum enum: order_offer, component, quant, composite_quant "order_offer"
data.reservation.missing_items[].expanded_from_composite да boolean false
data.reservation.missing_items[].expanded_from_quant да boolean false
data.reservation.missing_items[].quant_base_offer_id нет integer:int64 | null min: 1 1201
data.reservation.missing_items[].quant_base_multiplicity нет number:float | null 6
data.reservation.error да boolean false
data.consumables нет array<OrderConsumable>
data.consumables[] нет OrderConsumable Current consumable line, not an append-only consumption event. Unplaced usage creates a commitment but does not decrease physical stockTotal; do not treat that stockTotal as remaining packaging inventory.
data.consumables[].id да integer:int64 min: 1 301
data.consumables[].order_id да integer:int64 min: 1 8101
data.consumables[].product_id да integer:int64 min: 1 1202
data.consumables[].warehouse_id да integer:int64 | null min: 1 734
data.consumables[].place_id да integer:int64 | null min: 1 501
data.consumables[].quantity да number:float 1
data.consumables[].stock_location_mode да enum enum: placed, unplaced "unplaced"
data.consumables[].created_at да string:date-time | null "2026-07-14T10:30:00Z"
data.consumables[].updated_at да string:date-time | null "2026-07-14T10:30:00Z"
data.status_history нет array<OrderStatusHistoryEvent> Present only on GET list/detail with include=status_history. Ordered chronologically, retains repeat status cycles and combines surviving audit and action-log entries. Missing history returns an empty array.
data.status_history[] нет OrderStatusHistoryEvent Recorded WMS status transition or explicitly inferred initial status. It does not independently confirm physical carrier handover.
data.status_history[].status_id да integer:int64 130
data.status_history[].previous_status_id да integer:int64 | null 110
data.status_history[].changed_at да string:date-time Time of the WMS status transition in ISO 8601 with an explicit timezone offset. "2026-07-14T12:00:00+03:00"
data.status_history[].source да enum enum: audit, action_log, inferred "action_log"
data.status_history[].inferred да boolean True only for a reconstructed initial status at order creation; this is not a separately recorded transition. false
data.status_history_meta нет OrderStatusHistoryMeta
data.status_history_meta.available да boolean At least one event is available. This does not guarantee complete historical coverage. true
data.status_history_meta.current_status_matches_history да boolean The last available event has the current order status. False also when history is empty. true
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 8101,
    "external_id": "ORD-100245",
    "domain_id": 3,
    "type_id": 1,
    "shop_id": 12,
    "warehouse_id": 42,
    "status_id": 20,
    "status": {
      "id": 20,
      "name": "Created",
      "color": "#2457c5",
      "background_color": "#eaf0ff"
    },
    "order_date": "2026-07-14",
    "send_date": "2026-07-15",
    "source_id": 1,
    "customer_type": 1,
    "is_cod": true,
    "amounts": {
      "shipping_price": 8.6,
      "shipping_cost": 0,
      "sum": 39.98,
      "cod_sum": 48.58
    },
    "company_id": 7,
    "marking": {
      "required": true,
      "types": [
        "chestny_znak"
      ]
    },
    "contact": {
      "first_name": "Ivan",
      "middle_name": null,
      "last_name": "Petrov",
      "phone": "+359888123456",
      "email": "customer@example.com",
      "country_id": 100,
      "city_id": 200,
      "postcode": "1000",
      "latitude": 42.6977,
      "longitude": 23.3219,
      "full_address": "1 Vitosha Boulevard, Sofia"
    },
    "delivery": {
      "service_id": 1,
      "delivery_type": "door",
      "is_courier": true,
      "status": "created",
      "track_number": "CDEK-123456789",
      "source_id": "cdek-15",
      "tariff_code": 136,
      "label": "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf",
      "delivery_date": "2026-07-16",
      "delivery_time_start": "09:00:00Z",
      "delivery_time_end": "18:00:00Z"
    },
    "comments": {
      "delivery_service_text": "Call before delivery",
      "inner_text": "VIP customer"
    },
    "offers": [
      {
        "id": 7001,
        "product_id": 1201,
        "quantity": 2,
        "estimated_price": 19.5,
        "price": 19.99,
        "expiration_date": "2027-01-15",
        "batch": "LOT-2026",
        "operation_user_id": 9,
        "product": {
          "id": 1201,
          "name": "Coffee 250g",
          "external_id": "EXT-10045"
        },
        "created_at": "2026-07-14T09:00:00Z",
        "updated_at": "2026-07-14T09:30:00Z"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/orders/{id}

Удалить заказ

operationIddeleteOrders
РазделЗаказы
БезопасностьbearerAuth

Deletes the resource when the authenticated account has permission and the current lifecycle state allows deletion. If deletion is blocked by related records or document state, the API returns a validation error.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/orders/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID заказа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object | null
meta да object
meta.api_version да enum enum: v2 "v2"
meta.deleted да boolean true
meta.id да integer:int64 min: 1 1001

Примеры ответа

success

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true,
    "id": 1001
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/orders/{id}/integration-events

Export Ozon and Wildberries interaction history for one order

operationIdgetOrderIntegrationEvents
РазделЗаказы
БезопасностьbearerAuth

Streams one JSON document with all retained order-related records, without the UI history limit.
Includes new HTTP attempts, legacy diagnostics and WB inbox versions, latest operation states and the current order payload.
This is not a paginated response. Dates are UTC. Read the complete document and verify export_complete.
coverage.complete is false because historical data may be missing, truncated, masked or expired.
Credentials, contact and marking data are masked. Binary responses contain metadata and SHA256 only. JSON and text responses are not truncated.
Shared bodies are omitted unless all referenced orders are visible. Unknown membership is fail-closed.
Application-internal and external marketplace activity without a captured HTTP call is not guaranteed.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/orders/1001/integration-events" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID заказа. 1001
download query нет boolean Return the same JSON as a downloadable attachment.

Тело запроса

Тело запроса отсутствует.

Ответы

200 Streamed history. Check export_complete even when HTTP status is 200.

Streamed history. Check export_complete even when HTTP status is 200.

Поле Обязательное Тип Флаги Ограничения Описание Пример
meta да object Schema version, UTC timezone, order/integration identifiers and coverage limitations.
events да array<object>
events[] нет object Source-qualified id, source, provider, account_id, at, HTTP details or snapshot, masked request/response and omission reason.
event_count да integer min: 0
export_complete да boolean All retained readable sources were exported; not a guarantee of historical coverage.
export_error да string | null journal_read_failed if streaming was interrupted by a storage/read error.

401 Требуется аутентификация

Authentication required.

Тело ответа отсутствует.

403 Доступ запрещен

Order/log access denied.

Тело ответа отсутствует.

404 Не найдено

Order not visible or no Ozon/Wildberries link exists.

Тело ответа отсутствует.

POST /api/v2/orders/{id}/lines

Создать заказ

operationIdcreateOrdersLines
РазделЗаказы
БезопасностьbearerAuth

Adds one or more product lines to an editable order. Products are resolved by product_id or product_external_id within the caller visible scope.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/orders/1001/lines" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID заказа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

AddOrderLinesRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.lines да array<OrderLineCreatePayload> minItems: 1
data.lines[] нет OrderLineCreatePayload Payload строки для /orders/{id}/lines. Backend-валидация требует product_id для этого endpoint.
data.lines[].product_id да integer:int64 min: 1 1201
data.lines[].quantity да number:float min: 0.01 2
data.lines[].estimated_price нет number:float | null 19.5
data.lines[].price нет number:float | null 19.99
data.lines[].expiration_date нет string:date | null "2027-01-15"
data.lines[].batch нет string | null maxLength: 15 "LOT-2026"
data.lines[].operation_user_id нет integer:int64 | null min: 1 9

Примеры запроса

default

{
  "data": {
    "lines": [
      {
        "product_id": 1201,
        "quantity": 2,
        "price": 19.99
      }
    ]
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<OrderLine>
data[] нет OrderLine Scalar lot fields use the actual lot only when the full line is picked from one lot; partial/multiple actual lots leave scalars null. Before picking they retain the requested lot. Requested constraints are always available in requested_lot.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].order_id нет integer:int64 | null min: 1 8101
data[].product_id нет integer:int64 | null min: 1 1201
data[].quantity нет number:float | null min: 0 2
data[].estimated_price нет number:float | null 19.5
data[].price нет number:float | null 19.99
data[].expiration_date нет string:date | null "2027-01-15"
data[].batch нет string | null maxLength: 15 "LOT-2026"
data[].operation_user_id нет integer:int64 | null min: 1 9
data[].product нет object | null
data[].product.id да integer:int64 readOnly min: 1 1201
data[].product.name да string "Coffee 250g"
data[].product.external_id нет string | null "EXT-10045"
data[].production_date нет string:date | null "2026-01-15"
data[].requested_lot нет WarehouseLot
data[].requested_lot.batch да string | null "LOT-2026"
data[].requested_lot.production_date да string:date | null "2026-01-15"
data[].requested_lot.expiration_date да string:date | null "2027-01-15"
data[].picked_quantity нет number:float min: 0 2
data[].fulfillment_lots нет array<OrderFulfillmentLot> Current active placed warehouse rows for this exact order line and product. Existing orders are included where these rows survive. This is a current picking snapshot, not a historical shipment event.
data[].fulfillment_lots[] нет OrderFulfillmentLot
data[].fulfillment_lots[].batch да string | null "LOT-2026"
data[].fulfillment_lots[].production_date да string:date | null "2026-01-15"
data[].fulfillment_lots[].expiration_date да string:date | null "2027-01-15"
data[].fulfillment_lots[].warehouse_id да integer:int64 min: 1 734
data[].fulfillment_lots[].product_id да integer:int64 min: 1 1201
data[].fulfillment_lots[].quantity да number:float min: 0 2
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": [
    {
      "id": 7001,
      "order_id": 8101,
      "product_id": 1201,
      "quantity": 2,
      "estimated_price": 19.5,
      "price": 19.99,
      "expiration_date": "2027-01-15",
      "batch": "LOT-2026",
      "operation_user_id": 9,
      "product": {
        "id": 1201,
        "name": "Coffee 250g",
        "external_id": "EXT-10045"
      },
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/orders/{id}/lines/{lineId}

Обновить заказ

operationIdreplaceOrdersLines
РазделЗаказы
БезопасностьbearerAuth

Update order. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/orders/1001/lines/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID заказа. 1001
lineId path да integer:int64 min: 1 ID строки документа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

ReplaceOrderLineRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да OrderLineReplacePayload Legacy PUT payload строки. Текущий backend обрабатывает PUT как частичное обновление.
data.quantity нет number:float | null min: 0.01 2
data.estimated_price нет number:float | null 19.5
data.price нет number:float | null 19.99
data.expiration_date нет string:date | null "2027-01-15"
data.batch нет string | null maxLength: 15 "LOT-2026"
data.operation_user_id нет integer:int64 | null min: 1 9

Примеры запроса

default

{
  "data": {
    "quantity": 3,
    "batch": "LOT-2026"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да OrderLine Scalar lot fields use the actual lot only when the full line is picked from one lot; partial/multiple actual lots leave scalars null. Before picking they retain the requested lot. Requested constraints are always available in requested_lot.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.order_id нет integer:int64 | null min: 1 8101
data.product_id нет integer:int64 | null min: 1 1201
data.quantity нет number:float | null min: 0 2
data.estimated_price нет number:float | null 19.5
data.price нет number:float | null 19.99
data.expiration_date нет string:date | null "2027-01-15"
data.batch нет string | null maxLength: 15 "LOT-2026"
data.operation_user_id нет integer:int64 | null min: 1 9
data.product нет object | null
data.product.id да integer:int64 readOnly min: 1 1201
data.product.name да string "Coffee 250g"
data.product.external_id нет string | null "EXT-10045"
data.production_date нет string:date | null "2026-01-15"
data.requested_lot нет WarehouseLot
data.requested_lot.batch да string | null "LOT-2026"
data.requested_lot.production_date да string:date | null "2026-01-15"
data.requested_lot.expiration_date да string:date | null "2027-01-15"
data.picked_quantity нет number:float min: 0 2
data.fulfillment_lots нет array<OrderFulfillmentLot> Current active placed warehouse rows for this exact order line and product. Existing orders are included where these rows survive. This is a current picking snapshot, not a historical shipment event.
data.fulfillment_lots[] нет OrderFulfillmentLot
data.fulfillment_lots[].batch да string | null "LOT-2026"
data.fulfillment_lots[].production_date да string:date | null "2026-01-15"
data.fulfillment_lots[].expiration_date да string:date | null "2027-01-15"
data.fulfillment_lots[].warehouse_id да integer:int64 min: 1 734
data.fulfillment_lots[].product_id да integer:int64 min: 1 1201
data.fulfillment_lots[].quantity да number:float min: 0 2
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7001,
    "order_id": 8101,
    "product_id": 1201,
    "quantity": 2,
    "estimated_price": 19.5,
    "price": 19.99,
    "expiration_date": "2027-01-15",
    "batch": "LOT-2026",
    "operation_user_id": 9,
    "product": {
      "id": 1201,
      "name": "Coffee 250g",
      "external_id": "EXT-10045"
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/orders/{id}/lines/{lineId}

Обновить заказ

operationIdpatchOrdersLines
РазделЗаказы
БезопасностьbearerAuth

Update order. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/orders/1001/lines/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID заказа. 1001
lineId path да integer:int64 min: 1 ID строки документа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

PatchOrderLineRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да OrderLinePatchPayload Редактируемые поля строки заказа. ID строки берется из path и не должен повторяться в body.
data.quantity нет number:float | null min: 0.01 2
data.estimated_price нет number:float | null 19.5
data.price нет number:float | null 19.99
data.expiration_date нет string:date | null "2027-01-15"
data.batch нет string | null maxLength: 15 "LOT-2026"
data.operation_user_id нет integer:int64 | null min: 1 9

Примеры запроса

default

{
  "data": {
    "quantity": 3
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да OrderLine Scalar lot fields use the actual lot only when the full line is picked from one lot; partial/multiple actual lots leave scalars null. Before picking they retain the requested lot. Requested constraints are always available in requested_lot.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.order_id нет integer:int64 | null min: 1 8101
data.product_id нет integer:int64 | null min: 1 1201
data.quantity нет number:float | null min: 0 2
data.estimated_price нет number:float | null 19.5
data.price нет number:float | null 19.99
data.expiration_date нет string:date | null "2027-01-15"
data.batch нет string | null maxLength: 15 "LOT-2026"
data.operation_user_id нет integer:int64 | null min: 1 9
data.product нет object | null
data.product.id да integer:int64 readOnly min: 1 1201
data.product.name да string "Coffee 250g"
data.product.external_id нет string | null "EXT-10045"
data.production_date нет string:date | null "2026-01-15"
data.requested_lot нет WarehouseLot
data.requested_lot.batch да string | null "LOT-2026"
data.requested_lot.production_date да string:date | null "2026-01-15"
data.requested_lot.expiration_date да string:date | null "2027-01-15"
data.picked_quantity нет number:float min: 0 2
data.fulfillment_lots нет array<OrderFulfillmentLot> Current active placed warehouse rows for this exact order line and product. Existing orders are included where these rows survive. This is a current picking snapshot, not a historical shipment event.
data.fulfillment_lots[] нет OrderFulfillmentLot
data.fulfillment_lots[].batch да string | null "LOT-2026"
data.fulfillment_lots[].production_date да string:date | null "2026-01-15"
data.fulfillment_lots[].expiration_date да string:date | null "2027-01-15"
data.fulfillment_lots[].warehouse_id да integer:int64 min: 1 734
data.fulfillment_lots[].product_id да integer:int64 min: 1 1201
data.fulfillment_lots[].quantity да number:float min: 0 2
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7001,
    "order_id": 8101,
    "product_id": 1201,
    "quantity": 2,
    "estimated_price": 19.5,
    "price": 19.99,
    "expiration_date": "2027-01-15",
    "batch": "LOT-2026",
    "operation_user_id": 9,
    "product": {
      "id": 1201,
      "name": "Coffee 250g",
      "external_id": "EXT-10045"
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/orders/{id}/lines/{lineId}

Удалить заказ

operationIddeleteOrdersLines
РазделЗаказы
БезопасностьbearerAuth

Deletes the resource when the authenticated account has permission and the current lifecycle state allows deletion. If deletion is blocked by related records or document state, the API returns a validation error.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/orders/1001/lines/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID заказа. 1001
lineId path да integer:int64 min: 1 ID строки документа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object | null
meta да object
meta.api_version да enum enum: v2 "v2"
meta.deleted да boolean true
meta.id да integer:int64 min: 1 1001

Примеры ответа

success

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true,
    "id": 1001
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/orders/{id}/offers deprecated

Создать заказ

operationIdcreateOrdersOffers
РазделЗаказы
БезопасностьbearerAuth

Compatibility alias for adding order lines. Prefer /lines in new integrations; behavior and validation are identical.
Этот маршрут /offers является совместимым alias для /lines; в новых интеграциях используйте маршрут /lines.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/orders/1001/offers" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID заказа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

AddOrderLinesRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.lines да array<OrderLineCreatePayload> minItems: 1
data.lines[] нет OrderLineCreatePayload Payload строки для /orders/{id}/lines. Backend-валидация требует product_id для этого endpoint.
data.lines[].product_id да integer:int64 min: 1 1201
data.lines[].quantity да number:float min: 0.01 2
data.lines[].estimated_price нет number:float | null 19.5
data.lines[].price нет number:float | null 19.99
data.lines[].expiration_date нет string:date | null "2027-01-15"
data.lines[].batch нет string | null maxLength: 15 "LOT-2026"
data.lines[].operation_user_id нет integer:int64 | null min: 1 9

Примеры запроса

default

{
  "data": {
    "lines": [
      {
        "product_id": 1201,
        "quantity": 2,
        "price": 19.99
      }
    ]
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<OrderLine>
data[] нет OrderLine Scalar lot fields use the actual lot only when the full line is picked from one lot; partial/multiple actual lots leave scalars null. Before picking they retain the requested lot. Requested constraints are always available in requested_lot.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].order_id нет integer:int64 | null min: 1 8101
data[].product_id нет integer:int64 | null min: 1 1201
data[].quantity нет number:float | null min: 0 2
data[].estimated_price нет number:float | null 19.5
data[].price нет number:float | null 19.99
data[].expiration_date нет string:date | null "2027-01-15"
data[].batch нет string | null maxLength: 15 "LOT-2026"
data[].operation_user_id нет integer:int64 | null min: 1 9
data[].product нет object | null
data[].product.id да integer:int64 readOnly min: 1 1201
data[].product.name да string "Coffee 250g"
data[].product.external_id нет string | null "EXT-10045"
data[].production_date нет string:date | null "2026-01-15"
data[].requested_lot нет WarehouseLot
data[].requested_lot.batch да string | null "LOT-2026"
data[].requested_lot.production_date да string:date | null "2026-01-15"
data[].requested_lot.expiration_date да string:date | null "2027-01-15"
data[].picked_quantity нет number:float min: 0 2
data[].fulfillment_lots нет array<OrderFulfillmentLot> Current active placed warehouse rows for this exact order line and product. Existing orders are included where these rows survive. This is a current picking snapshot, not a historical shipment event.
data[].fulfillment_lots[] нет OrderFulfillmentLot
data[].fulfillment_lots[].batch да string | null "LOT-2026"
data[].fulfillment_lots[].production_date да string:date | null "2026-01-15"
data[].fulfillment_lots[].expiration_date да string:date | null "2027-01-15"
data[].fulfillment_lots[].warehouse_id да integer:int64 min: 1 734
data[].fulfillment_lots[].product_id да integer:int64 min: 1 1201
data[].fulfillment_lots[].quantity да number:float min: 0 2
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": [
    {
      "id": 7001,
      "order_id": 8101,
      "product_id": 1201,
      "quantity": 2,
      "estimated_price": 19.5,
      "price": 19.99,
      "expiration_date": "2027-01-15",
      "batch": "LOT-2026",
      "operation_user_id": 9,
      "product": {
        "id": 1201,
        "name": "Coffee 250g",
        "external_id": "EXT-10045"
      },
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/orders/{id}/offers/{lineId} deprecated

Обновить заказ

operationIdreplaceOrdersOffers
РазделЗаказы
БезопасностьbearerAuth

Update order. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Этот маршрут /offers является совместимым alias для /lines; в новых интеграциях используйте маршрут /lines.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.
Order offers include actual fulfillment_lots and production_date. Request include=consumables on the order list for current consumable lines; order details include them by default. These snapshots are not historical event feeds.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/orders/1001/offers/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID заказа. 1001
lineId path да integer:int64 min: 1 ID строки документа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

ReplaceOrderLineRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да OrderLineReplacePayload Legacy PUT payload строки. Текущий backend обрабатывает PUT как частичное обновление.
data.quantity нет number:float | null min: 0.01 2
data.estimated_price нет number:float | null 19.5
data.price нет number:float | null 19.99
data.expiration_date нет string:date | null "2027-01-15"
data.batch нет string | null maxLength: 15 "LOT-2026"
data.operation_user_id нет integer:int64 | null min: 1 9

Примеры запроса

default

{
  "data": {
    "quantity": 3,
    "batch": "LOT-2026"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да OrderLine Scalar lot fields use the actual lot only when the full line is picked from one lot; partial/multiple actual lots leave scalars null. Before picking they retain the requested lot. Requested constraints are always available in requested_lot.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.order_id нет integer:int64 | null min: 1 8101
data.product_id нет integer:int64 | null min: 1 1201
data.quantity нет number:float | null min: 0 2
data.estimated_price нет number:float | null 19.5
data.price нет number:float | null 19.99
data.expiration_date нет string:date | null "2027-01-15"
data.batch нет string | null maxLength: 15 "LOT-2026"
data.operation_user_id нет integer:int64 | null min: 1 9
data.product нет object | null
data.product.id да integer:int64 readOnly min: 1 1201
data.product.name да string "Coffee 250g"
data.product.external_id нет string | null "EXT-10045"
data.production_date нет string:date | null "2026-01-15"
data.requested_lot нет WarehouseLot
data.requested_lot.batch да string | null "LOT-2026"
data.requested_lot.production_date да string:date | null "2026-01-15"
data.requested_lot.expiration_date да string:date | null "2027-01-15"
data.picked_quantity нет number:float min: 0 2
data.fulfillment_lots нет array<OrderFulfillmentLot> Current active placed warehouse rows for this exact order line and product. Existing orders are included where these rows survive. This is a current picking snapshot, not a historical shipment event.
data.fulfillment_lots[] нет OrderFulfillmentLot
data.fulfillment_lots[].batch да string | null "LOT-2026"
data.fulfillment_lots[].production_date да string:date | null "2026-01-15"
data.fulfillment_lots[].expiration_date да string:date | null "2027-01-15"
data.fulfillment_lots[].warehouse_id да integer:int64 min: 1 734
data.fulfillment_lots[].product_id да integer:int64 min: 1 1201
data.fulfillment_lots[].quantity да number:float min: 0 2
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7001,
    "order_id": 8101,
    "product_id": 1201,
    "quantity": 2,
    "estimated_price": 19.5,
    "price": 19.99,
    "expiration_date": "2027-01-15",
    "batch": "LOT-2026",
    "operation_user_id": 9,
    "product": {
      "id": 1201,
      "name": "Coffee 250g",
      "external_id": "EXT-10045"
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/orders/{id}/offers/{lineId} deprecated

Удалить заказ

operationIddeleteOrdersOffers
РазделЗаказы
БезопасностьbearerAuth

Deletes the resource when the authenticated account has permission and the current lifecycle state allows deletion. If deletion is blocked by related records or document state, the API returns a validation error.
Этот маршрут /offers является совместимым alias для /lines; в новых интеграциях используйте маршрут /lines.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/orders/1001/offers/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID заказа. 1001
lineId path да integer:int64 min: 1 ID строки документа. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object | null
meta да object
meta.api_version да enum enum: v2 "v2"
meta.deleted да boolean true
meta.id да integer:int64 min: 1 1001

Примеры ответа

success

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true,
    "id": 1001
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Товары

GET /api/v2/products

Получить список товаров

operationIdlistProducts
РазделТовары
БезопасностьbearerAuth

Возвращает товары, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/products" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 250
Количество записей на странице. По умолчанию 50; максимум 250. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 50
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, name, article, sku, price, created_at, updated_at, inventory_updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "-id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
external_id query нет string form true Фильтр по external_id с точным совпадением. Этот фильтр также можно передать как filter[external_id], если это поддерживает Laravel query adapter. "EXT-10045"
shop_id query нет integer:int64 form true min: 1 Фильтр по shop_id с точным совпадением. Этот фильтр также можно передать как filter[shop_id], если это поддерживает Laravel query adapter. 12
status_id query нет ProductStatusId form true Фильтр по status_id с точным совпадением. Этот фильтр также можно передать как filter[status_id], если это поддерживает Laravel query adapter.
type_id query нет integer:int64 form true min: 1 Фильтр по type_id с точным совпадением. Этот фильтр также можно передать как filter[type_id], если это поддерживает Laravel query adapter. 1
package_kind query нет string form true Фильтр по package_kind с точным совпадением. Этот фильтр также можно передать как filter[package_kind], если это поддерживает Laravel query adapter. "unit"
parent_product_id query нет integer:int64 form true min: 1 Фильтр по parent_product_id с точным совпадением. Этот фильтр также можно передать как filter[parent_product_id], если это поддерживает Laravel query adapter. 1200
base_product_id query нет integer:int64 form true min: 1 Фильтр по base_product_id с точным совпадением. Этот фильтр также можно передать как filter[base_product_id], если это поддерживает Laravel query adapter. 1200
datamatrix_required query нет boolean form true Фильтр по datamatrix_required с точным совпадением. Этот фильтр также можно передать как filter[datamatrix_required], если это поддерживает Laravel query adapter. false
expiration_required query нет boolean form true Фильтр по expiration_required с точным совпадением. Этот фильтр также можно передать как filter[expiration_required], если это поддерживает Laravel query adapter. false
name query нет string form true Фильтр по name с частичным текстовым совпадением. Этот фильтр также можно передать как filter[name], если это поддерживает Laravel query adapter. "Coffee"
article query нет string form true Фильтр по article с частичным текстовым совпадением. Этот фильтр также можно передать как filter[article], если это поддерживает Laravel query adapter. "ART-001245"
sku query нет string form true Фильтр по sku с частичным текстовым совпадением. Этот фильтр также можно передать как filter[sku], если это поддерживает Laravel query adapter. "SKU-001245"
comment query нет string form true Фильтр по comment с частичным текстовым совпадением. Этот фильтр также можно передать как filter[comment], если это поддерживает Laravel query adapter. "Priority"
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
updated_at_from query нет string:date form true Нижняя включительная граница даты для updated_at. Этот фильтр также можно передать как filter[updated_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
updated_at_to query нет string:date form true Верхняя включительная граница даты для updated_at. Этот фильтр также можно передать как filter[updated_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
inventory_updated_at_from query нет string:date form true Нижняя включительная граница даты для inventory_updated_at. Этот фильтр также можно передать как filter[inventory_updated_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
inventory_updated_at_to query нет string:date form true Верхняя включительная граница даты для inventory_updated_at. Этот фильтр также можно передать как filter[inventory_updated_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
price_from query нет number:float form true Нижняя включительная числовая граница для price. Этот фильтр также можно передать как filter[price_from], если это поддерживает Laravel query adapter. 19.99
price_to query нет number:float form true Верхняя включительная числовая граница для price. Этот фильтр также можно передать как filter[price_to], если это поддерживает Laravel query adapter. 19.99
estimated_price_from query нет number:float form true Нижняя включительная числовая граница для estimated_price. Этот фильтр также можно передать как filter[estimated_price_from], если это поддерживает Laravel query adapter. 19.99
estimated_price_to query нет number:float form true Верхняя включительная числовая граница для estimated_price. Этот фильтр также можно передать как filter[estimated_price_to], если это поддерживает Laravel query adapter. 19.99

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<Product>
data[] нет Product Product catalog item exposed by API v2. Product barcodes identify a product or package type and are not unique SSCC values. Use /api/v2/closed-boxes to read individual sealed boxes and their current box balance.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].external_id нет string | null "EXT-10045"
data[].shop_id нет integer:int64 | null min: 1 12
data[].domain_id нет integer:int64 | null min: 1 3
data[].status_id нет integer:int64 | null 1
data[].type_id нет integer:int64 | null 1
data[].name да string "Coffee 250g"
data[].article нет string | null "ART-001245"
data[].sku нет string | null "SKU-001245"
data[].price нет number:float | null 19.99
data[].estimated_price нет number:float | null 21.5
data[].image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data[].dimensions нет Dimensions
data[].dimensions.x нет number:float | null min: 0 105
data[].dimensions.y нет number:float | null min: 0 200
data[].dimensions.z нет number:float | null min: 0 32
data[].dimensions.unit да enum enum: mm "mm"
data[].weight нет Weight
data[].weight.value нет number:float | null min: 0 250
data[].weight.unit да enum enum: g "g"
data[].datamatrix_required да boolean false
data[].expiration_required да boolean true
data[].comment нет string | null "Keep dry"
data[].description нет string | null "Ground coffee package"
data[].inventory_updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].barcodes нет array<ProductBarcode>
data[].barcodes[] нет ProductBarcode
data[].barcodes[].barcode да string minLength: 1
maxLength: 64
"4601234567890"
data[].barcodes[].is_main да boolean true
data[].stocks нет ProductStocks
data[].stocks.available_by_warehouse нет object Объект с ключами по ID склада. Значения являются количествами. {"42":18.0,"43":3.0}
data[].stocks.physical нет array<ProductStockSummary> Physical stock rows for the product itself.
data[].stocks.physical[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data[].stocks.physical[].warehouse_id да integer:int64 min: 1 42
data[].stocks.physical[].warehouse_name да string | null "Warehouse Sofia"
data[].stocks.physical[].stockTotal да number:float 24.0
data[].stocks.physical[].stockReserved да number:float 6.0
data[].stocks.physical[].stockAvailable да number:float 18.0
data[].stocks.aggregate нет array<ProductStockSummary> Aggregated base-unit stock rows for the product and its descendant quants.
data[].stocks.aggregate[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data[].stocks.aggregate[].warehouse_id да integer:int64 min: 1 42
data[].stocks.aggregate[].warehouse_name да string | null "Warehouse Sofia"
data[].stocks.aggregate[].stockTotal да number:float 24.0
data[].stocks.aggregate[].stockReserved да number:float 6.0
data[].stocks.aggregate[].stockAvailable да number:float 18.0
data[].package нет object | null
data[].package.kind нет string | null "unit"
data[].package.parent_product_id нет integer:int64 | null min: 1 1201
data[].package.base_product_id нет integer:int64 | null min: 1 1200
data[].package.multiplicity нет number:float | null min: 0 6
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1201,
      "external_id": "EXT-10045",
      "shop_id": 12,
      "domain_id": 3,
      "status_id": 1,
      "type_id": 1,
      "name": "Coffee 250g",
      "article": "ART-001245",
      "sku": "SKU-001245",
      "price": 19.99,
      "estimated_price": 21.5,
      "image_url": "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg",
      "dimensions": {
        "x": 105,
        "y": 200,
        "z": 32,
        "unit": "mm"
      },
      "weight": {
        "value": 250,
        "unit": "g"
      },
      "datamatrix_required": false,
      "expiration_required": true,
      "comment": "Keep dry",
      "description": "Ground coffee package",
      "inventory_updated_at": "2026-07-14T08:30:00Z",
      "barcodes": [
        {
          "barcode": "4601234567890",
          "is_main": true
        }
      ],
      "stocks": {
        "available_by_warehouse": {
          "42": 18
        },
        "physical": [
          {
            "warehouse_id": 42,
            "warehouse_name": "Warehouse Sofia",
            "stockTotal": 24,
            "stockReserved": 6,
            "stockAvailable": 18
          }
        ],
        "aggregate": [
          {
            "warehouse_id": 42,
            "warehouse_name": "Warehouse Sofia",
            "stockTotal": 30,
            "stockReserved": 7,
            "stockAvailable": 23
          }
        ]
      },
      "package": {
        "kind": "unit",
        "parent_product_id": null,
        "base_product_id": null,
        "multiplicity": null
      },
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/products?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/products?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/products?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/products",
    "per_page": 50,
    "to": 50,
    "total": 73
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/products

Создать товар

operationIdcreateProducts
РазделТовары
БезопасностьbearerAuth

Creates one product or imports multiple products. Barcodes, dimensions, weights, marking requirements, expiration requirements, and package metadata are accepted in public v2 field names.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
Optional type_id accepts integer codes 1 ordinary, 2 composite, 3 component, 4 consumable, 5 packaging. Omission preserves the existing/default type; explicit null, empty, fractional or unknown values are rejected. Types 2/3 require composites enabled in the shop and permission to manage composition, in addition to product create/update rights. Quant packaging and links, existing composition links and dependent warehouse documents can prevent a type transition. This field does not create or replace a composition. Product and component prices are independent. Each item commits separately: a later rule failure may leave earlier items applied. Read back affected products before retrying a failed bulk request.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/products" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

BulkCreateProductsRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateProductPayload
data да array<CreateProductPayload> minItems: 1

Примеры запроса

default

{
  "data": [
    {
      "external_id": "EXT-10045",
      "shop_id": 12,
      "name": "Coffee 250g",
      "barcodes": [
        {
          "barcode": "4601234567890",
          "is_main": true
        }
      ],
      "type_id": 3
    }
  ]
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
(root) нет ProductMutationResponse Запись одного товара возвращает ProductResponse; запись массива товаров возвращает ProductCollectionResponse в порядке входных успешно обработанных элементов.
data да Product Product catalog item exposed by API v2. Product barcodes identify a product or package type and are not unique SSCC values. Use /api/v2/closed-boxes to read individual sealed boxes and their current box balance.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "EXT-10045"
data.shop_id нет integer:int64 | null min: 1 12
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет integer:int64 | null 1
data.type_id нет integer:int64 | null 1
data.name да string "Coffee 250g"
data.article нет string | null "ART-001245"
data.sku нет string | null "SKU-001245"
data.price нет number:float | null 19.99
data.estimated_price нет number:float | null 21.5
data.image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data.dimensions нет Dimensions
data.dimensions.x нет number:float | null min: 0 105
data.dimensions.y нет number:float | null min: 0 200
data.dimensions.z нет number:float | null min: 0 32
data.dimensions.unit да enum enum: mm "mm"
data.weight нет Weight
data.weight.value нет number:float | null min: 0 250
data.weight.unit да enum enum: g "g"
data.datamatrix_required да boolean false
data.expiration_required да boolean true
data.comment нет string | null "Keep dry"
data.description нет string | null "Ground coffee package"
data.inventory_updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.barcodes нет array<ProductBarcode>
data.barcodes[] нет ProductBarcode
data.barcodes[].barcode да string minLength: 1
maxLength: 64
"4601234567890"
data.barcodes[].is_main да boolean true
data.stocks нет ProductStocks
data.stocks.available_by_warehouse нет object Объект с ключами по ID склада. Значения являются количествами. {"42":18.0,"43":3.0}
data.stocks.physical нет array<ProductStockSummary> Physical stock rows for the product itself.
data.stocks.physical[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data.stocks.physical[].warehouse_id да integer:int64 min: 1 42
data.stocks.physical[].warehouse_name да string | null "Warehouse Sofia"
data.stocks.physical[].stockTotal да number:float 24.0
data.stocks.physical[].stockReserved да number:float 6.0
data.stocks.physical[].stockAvailable да number:float 18.0
data.stocks.aggregate нет array<ProductStockSummary> Aggregated base-unit stock rows for the product and its descendant quants.
data.stocks.aggregate[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data.stocks.aggregate[].warehouse_id да integer:int64 min: 1 42
data.stocks.aggregate[].warehouse_name да string | null "Warehouse Sofia"
data.stocks.aggregate[].stockTotal да number:float 24.0
data.stocks.aggregate[].stockReserved да number:float 6.0
data.stocks.aggregate[].stockAvailable да number:float 18.0
data.package нет object | null
data.package.kind нет string | null "unit"
data.package.parent_product_id нет integer:int64 | null min: 1 1201
data.package.base_product_id нет integer:int64 | null min: 1 1200
data.package.multiplicity нет number:float | null min: 0 6
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"
data да array<Product>
data[] нет Product Product catalog item exposed by API v2. Product barcodes identify a product or package type and are not unique SSCC values. Use /api/v2/closed-boxes to read individual sealed boxes and their current box balance.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].external_id нет string | null "EXT-10045"
data[].shop_id нет integer:int64 | null min: 1 12
data[].domain_id нет integer:int64 | null min: 1 3
data[].status_id нет integer:int64 | null 1
data[].type_id нет integer:int64 | null 1
data[].name да string "Coffee 250g"
data[].article нет string | null "ART-001245"
data[].sku нет string | null "SKU-001245"
data[].price нет number:float | null 19.99
data[].estimated_price нет number:float | null 21.5
data[].image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data[].dimensions нет Dimensions
data[].dimensions.x нет number:float | null min: 0 105
data[].dimensions.y нет number:float | null min: 0 200
data[].dimensions.z нет number:float | null min: 0 32
data[].dimensions.unit да enum enum: mm "mm"
data[].weight нет Weight
data[].weight.value нет number:float | null min: 0 250
data[].weight.unit да enum enum: g "g"
data[].datamatrix_required да boolean false
data[].expiration_required да boolean true
data[].comment нет string | null "Keep dry"
data[].description нет string | null "Ground coffee package"
data[].inventory_updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].barcodes нет array<ProductBarcode>
data[].barcodes[] нет ProductBarcode
data[].barcodes[].barcode да string minLength: 1
maxLength: 64
"4601234567890"
data[].barcodes[].is_main да boolean true
data[].stocks нет ProductStocks
data[].stocks.available_by_warehouse нет object Объект с ключами по ID склада. Значения являются количествами. {"42":18.0,"43":3.0}
data[].stocks.physical нет array<ProductStockSummary> Physical stock rows for the product itself.
data[].stocks.physical[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data[].stocks.physical[].warehouse_id да integer:int64 min: 1 42
data[].stocks.physical[].warehouse_name да string | null "Warehouse Sofia"
data[].stocks.physical[].stockTotal да number:float 24.0
data[].stocks.physical[].stockReserved да number:float 6.0
data[].stocks.physical[].stockAvailable да number:float 18.0
data[].stocks.aggregate нет array<ProductStockSummary> Aggregated base-unit stock rows for the product and its descendant quants.
data[].stocks.aggregate[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data[].stocks.aggregate[].warehouse_id да integer:int64 min: 1 42
data[].stocks.aggregate[].warehouse_name да string | null "Warehouse Sofia"
data[].stocks.aggregate[].stockTotal да number:float 24.0
data[].stocks.aggregate[].stockReserved да number:float 6.0
data[].stocks.aggregate[].stockAvailable да number:float 18.0
data[].package нет object | null
data[].package.kind нет string | null "unit"
data[].package.parent_product_id нет integer:int64 | null min: 1 1201
data[].package.base_product_id нет integer:int64 | null min: 1 1200
data[].package.multiplicity нет number:float | null min: 0 6
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 1201,
    "external_id": "EXT-10045",
    "shop_id": 12,
    "domain_id": 3,
    "status_id": 1,
    "type_id": 1,
    "name": "Coffee 250g",
    "article": "ART-001245",
    "sku": "SKU-001245",
    "price": 19.99,
    "estimated_price": 21.5,
    "image_url": "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg",
    "dimensions": {
      "x": 105,
      "y": 200,
      "z": 32,
      "unit": "mm"
    },
    "weight": {
      "value": 250,
      "unit": "g"
    },
    "datamatrix_required": false,
    "expiration_required": true,
    "comment": "Keep dry",
    "description": "Ground coffee package",
    "inventory_updated_at": "2026-07-14T08:30:00Z",
    "barcodes": [
      {
        "barcode": "4601234567890",
        "is_main": true
      }
    ],
    "stocks": {
      "available_by_warehouse": {
        "42": 18
      },
      "physical": [
        {
          "warehouse_id": 42,
          "warehouse_name": "Warehouse Sofia",
          "stockTotal": 24,
          "stockReserved": 6,
          "stockAvailable": 18
        }
      ],
      "aggregate": [
        {
          "warehouse_id": 42,
          "warehouse_name": "Warehouse Sofia",
          "stockTotal": 30,
          "stockReserved": 7,
          "stockAvailable": 23
        }
      ]
    },
    "package": {
      "kind": "unit",
      "parent_product_id": null,
      "base_product_id": null,
      "multiplicity": null
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/products

Обновить товар

operationIdreplaceProducts
РазделТовары
БезопасностьbearerAuth

Bulk updates products identified by id or by external_id plus shop_id. When barcodes are supplied, the barcode set is replaced according to existing product rules.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
Optional type_id accepts integer codes 1 ordinary, 2 composite, 3 component, 4 consumable, 5 packaging. Omission preserves the existing/default type; explicit null, empty, fractional or unknown values are rejected. Types 2/3 require composites enabled in the shop and permission to manage composition, in addition to product create/update rights. Quant packaging and links, existing composition links and dependent warehouse documents can prevent a type transition. This field does not create or replace a composition. Product and component prices are independent. Each item commits separately: a later rule failure may leave earlier items applied. Read back affected products before retrying a failed bulk request.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/products" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

BulkReplaceProductsRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да ReplaceProductPayload
data да array<ReplaceProductPayload> minItems: 1

Примеры запроса

default

{
  "data": [
    {
      "id": 1201,
      "name": "Coffee 250g",
      "price": 19.99,
      "type_id": 3
    }
  ]
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
(root) нет ProductMutationResponse Запись одного товара возвращает ProductResponse; запись массива товаров возвращает ProductCollectionResponse в порядке входных успешно обработанных элементов.
data да Product Product catalog item exposed by API v2. Product barcodes identify a product or package type and are not unique SSCC values. Use /api/v2/closed-boxes to read individual sealed boxes and their current box balance.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "EXT-10045"
data.shop_id нет integer:int64 | null min: 1 12
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет integer:int64 | null 1
data.type_id нет integer:int64 | null 1
data.name да string "Coffee 250g"
data.article нет string | null "ART-001245"
data.sku нет string | null "SKU-001245"
data.price нет number:float | null 19.99
data.estimated_price нет number:float | null 21.5
data.image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data.dimensions нет Dimensions
data.dimensions.x нет number:float | null min: 0 105
data.dimensions.y нет number:float | null min: 0 200
data.dimensions.z нет number:float | null min: 0 32
data.dimensions.unit да enum enum: mm "mm"
data.weight нет Weight
data.weight.value нет number:float | null min: 0 250
data.weight.unit да enum enum: g "g"
data.datamatrix_required да boolean false
data.expiration_required да boolean true
data.comment нет string | null "Keep dry"
data.description нет string | null "Ground coffee package"
data.inventory_updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.barcodes нет array<ProductBarcode>
data.barcodes[] нет ProductBarcode
data.barcodes[].barcode да string minLength: 1
maxLength: 64
"4601234567890"
data.barcodes[].is_main да boolean true
data.stocks нет ProductStocks
data.stocks.available_by_warehouse нет object Объект с ключами по ID склада. Значения являются количествами. {"42":18.0,"43":3.0}
data.stocks.physical нет array<ProductStockSummary> Physical stock rows for the product itself.
data.stocks.physical[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data.stocks.physical[].warehouse_id да integer:int64 min: 1 42
data.stocks.physical[].warehouse_name да string | null "Warehouse Sofia"
data.stocks.physical[].stockTotal да number:float 24.0
data.stocks.physical[].stockReserved да number:float 6.0
data.stocks.physical[].stockAvailable да number:float 18.0
data.stocks.aggregate нет array<ProductStockSummary> Aggregated base-unit stock rows for the product and its descendant quants.
data.stocks.aggregate[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data.stocks.aggregate[].warehouse_id да integer:int64 min: 1 42
data.stocks.aggregate[].warehouse_name да string | null "Warehouse Sofia"
data.stocks.aggregate[].stockTotal да number:float 24.0
data.stocks.aggregate[].stockReserved да number:float 6.0
data.stocks.aggregate[].stockAvailable да number:float 18.0
data.package нет object | null
data.package.kind нет string | null "unit"
data.package.parent_product_id нет integer:int64 | null min: 1 1201
data.package.base_product_id нет integer:int64 | null min: 1 1200
data.package.multiplicity нет number:float | null min: 0 6
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"
data да array<Product>
data[] нет Product Product catalog item exposed by API v2. Product barcodes identify a product or package type and are not unique SSCC values. Use /api/v2/closed-boxes to read individual sealed boxes and their current box balance.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].external_id нет string | null "EXT-10045"
data[].shop_id нет integer:int64 | null min: 1 12
data[].domain_id нет integer:int64 | null min: 1 3
data[].status_id нет integer:int64 | null 1
data[].type_id нет integer:int64 | null 1
data[].name да string "Coffee 250g"
data[].article нет string | null "ART-001245"
data[].sku нет string | null "SKU-001245"
data[].price нет number:float | null 19.99
data[].estimated_price нет number:float | null 21.5
data[].image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data[].dimensions нет Dimensions
data[].dimensions.x нет number:float | null min: 0 105
data[].dimensions.y нет number:float | null min: 0 200
data[].dimensions.z нет number:float | null min: 0 32
data[].dimensions.unit да enum enum: mm "mm"
data[].weight нет Weight
data[].weight.value нет number:float | null min: 0 250
data[].weight.unit да enum enum: g "g"
data[].datamatrix_required да boolean false
data[].expiration_required да boolean true
data[].comment нет string | null "Keep dry"
data[].description нет string | null "Ground coffee package"
data[].inventory_updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].barcodes нет array<ProductBarcode>
data[].barcodes[] нет ProductBarcode
data[].barcodes[].barcode да string minLength: 1
maxLength: 64
"4601234567890"
data[].barcodes[].is_main да boolean true
data[].stocks нет ProductStocks
data[].stocks.available_by_warehouse нет object Объект с ключами по ID склада. Значения являются количествами. {"42":18.0,"43":3.0}
data[].stocks.physical нет array<ProductStockSummary> Physical stock rows for the product itself.
data[].stocks.physical[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data[].stocks.physical[].warehouse_id да integer:int64 min: 1 42
data[].stocks.physical[].warehouse_name да string | null "Warehouse Sofia"
data[].stocks.physical[].stockTotal да number:float 24.0
data[].stocks.physical[].stockReserved да number:float 6.0
data[].stocks.physical[].stockAvailable да number:float 18.0
data[].stocks.aggregate нет array<ProductStockSummary> Aggregated base-unit stock rows for the product and its descendant quants.
data[].stocks.aggregate[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data[].stocks.aggregate[].warehouse_id да integer:int64 min: 1 42
data[].stocks.aggregate[].warehouse_name да string | null "Warehouse Sofia"
data[].stocks.aggregate[].stockTotal да number:float 24.0
data[].stocks.aggregate[].stockReserved да number:float 6.0
data[].stocks.aggregate[].stockAvailable да number:float 18.0
data[].package нет object | null
data[].package.kind нет string | null "unit"
data[].package.parent_product_id нет integer:int64 | null min: 1 1201
data[].package.base_product_id нет integer:int64 | null min: 1 1200
data[].package.multiplicity нет number:float | null min: 0 6
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 1201,
    "external_id": "EXT-10045",
    "shop_id": 12,
    "domain_id": 3,
    "status_id": 1,
    "type_id": 1,
    "name": "Coffee 250g",
    "article": "ART-001245",
    "sku": "SKU-001245",
    "price": 19.99,
    "estimated_price": 21.5,
    "image_url": "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg",
    "dimensions": {
      "x": 105,
      "y": 200,
      "z": 32,
      "unit": "mm"
    },
    "weight": {
      "value": 250,
      "unit": "g"
    },
    "datamatrix_required": false,
    "expiration_required": true,
    "comment": "Keep dry",
    "description": "Ground coffee package",
    "inventory_updated_at": "2026-07-14T08:30:00Z",
    "barcodes": [
      {
        "barcode": "4601234567890",
        "is_main": true
      }
    ],
    "stocks": {
      "available_by_warehouse": {
        "42": 18
      },
      "physical": [
        {
          "warehouse_id": 42,
          "warehouse_name": "Warehouse Sofia",
          "stockTotal": 24,
          "stockReserved": 6,
          "stockAvailable": 18
        }
      ],
      "aggregate": [
        {
          "warehouse_id": 42,
          "warehouse_name": "Warehouse Sofia",
          "stockTotal": 30,
          "stockReserved": 7,
          "stockAvailable": 23
        }
      ]
    },
    "package": {
      "kind": "unit",
      "parent_product_id": null,
      "base_product_id": null,
      "multiplicity": null
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/products

Обновить товар

operationIdpatchProducts
РазделТовары
БезопасностьbearerAuth

Partially bulk updates products. Only supplied product fields are changed.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
For unplaced consumable usage, stockTotal does not include a permanent physical write-off and must not be used as available packaging inventory. Addressed consumable write-offs remain the existing warehouse process.
Optional type_id accepts integer codes 1 ordinary, 2 composite, 3 component, 4 consumable, 5 packaging. Omission preserves the existing/default type; explicit null, empty, fractional or unknown values are rejected. Types 2/3 require composites enabled in the shop and permission to manage composition, in addition to product create/update rights. Quant packaging and links, existing composition links and dependent warehouse documents can prevent a type transition. This field does not create or replace a composition. Product and component prices are independent. Each item commits separately: a later rule failure may leave earlier items applied. Read back affected products before retrying a failed bulk request.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/products" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

BulkPatchProductsRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да PatchProductPayload
data да array<PatchProductPayload> minItems: 1

Примеры запроса

default

{
  "data": [
    {
      "external_id": "EXT-10045",
      "shop_id": 12,
      "price": 18.99,
      "type_id": 3
    }
  ]
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
(root) нет ProductMutationResponse Запись одного товара возвращает ProductResponse; запись массива товаров возвращает ProductCollectionResponse в порядке входных успешно обработанных элементов.
data да Product Product catalog item exposed by API v2. Product barcodes identify a product or package type and are not unique SSCC values. Use /api/v2/closed-boxes to read individual sealed boxes and their current box balance.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "EXT-10045"
data.shop_id нет integer:int64 | null min: 1 12
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет integer:int64 | null 1
data.type_id нет integer:int64 | null 1
data.name да string "Coffee 250g"
data.article нет string | null "ART-001245"
data.sku нет string | null "SKU-001245"
data.price нет number:float | null 19.99
data.estimated_price нет number:float | null 21.5
data.image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data.dimensions нет Dimensions
data.dimensions.x нет number:float | null min: 0 105
data.dimensions.y нет number:float | null min: 0 200
data.dimensions.z нет number:float | null min: 0 32
data.dimensions.unit да enum enum: mm "mm"
data.weight нет Weight
data.weight.value нет number:float | null min: 0 250
data.weight.unit да enum enum: g "g"
data.datamatrix_required да boolean false
data.expiration_required да boolean true
data.comment нет string | null "Keep dry"
data.description нет string | null "Ground coffee package"
data.inventory_updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.barcodes нет array<ProductBarcode>
data.barcodes[] нет ProductBarcode
data.barcodes[].barcode да string minLength: 1
maxLength: 64
"4601234567890"
data.barcodes[].is_main да boolean true
data.stocks нет ProductStocks
data.stocks.available_by_warehouse нет object Объект с ключами по ID склада. Значения являются количествами. {"42":18.0,"43":3.0}
data.stocks.physical нет array<ProductStockSummary> Physical stock rows for the product itself.
data.stocks.physical[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data.stocks.physical[].warehouse_id да integer:int64 min: 1 42
data.stocks.physical[].warehouse_name да string | null "Warehouse Sofia"
data.stocks.physical[].stockTotal да number:float 24.0
data.stocks.physical[].stockReserved да number:float 6.0
data.stocks.physical[].stockAvailable да number:float 18.0
data.stocks.aggregate нет array<ProductStockSummary> Aggregated base-unit stock rows for the product and its descendant quants.
data.stocks.aggregate[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data.stocks.aggregate[].warehouse_id да integer:int64 min: 1 42
data.stocks.aggregate[].warehouse_name да string | null "Warehouse Sofia"
data.stocks.aggregate[].stockTotal да number:float 24.0
data.stocks.aggregate[].stockReserved да number:float 6.0
data.stocks.aggregate[].stockAvailable да number:float 18.0
data.package нет object | null
data.package.kind нет string | null "unit"
data.package.parent_product_id нет integer:int64 | null min: 1 1201
data.package.base_product_id нет integer:int64 | null min: 1 1200
data.package.multiplicity нет number:float | null min: 0 6
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"
data да array<Product>
data[] нет Product Product catalog item exposed by API v2. Product barcodes identify a product or package type and are not unique SSCC values. Use /api/v2/closed-boxes to read individual sealed boxes and their current box balance.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].external_id нет string | null "EXT-10045"
data[].shop_id нет integer:int64 | null min: 1 12
data[].domain_id нет integer:int64 | null min: 1 3
data[].status_id нет integer:int64 | null 1
data[].type_id нет integer:int64 | null 1
data[].name да string "Coffee 250g"
data[].article нет string | null "ART-001245"
data[].sku нет string | null "SKU-001245"
data[].price нет number:float | null 19.99
data[].estimated_price нет number:float | null 21.5
data[].image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data[].dimensions нет Dimensions
data[].dimensions.x нет number:float | null min: 0 105
data[].dimensions.y нет number:float | null min: 0 200
data[].dimensions.z нет number:float | null min: 0 32
data[].dimensions.unit да enum enum: mm "mm"
data[].weight нет Weight
data[].weight.value нет number:float | null min: 0 250
data[].weight.unit да enum enum: g "g"
data[].datamatrix_required да boolean false
data[].expiration_required да boolean true
data[].comment нет string | null "Keep dry"
data[].description нет string | null "Ground coffee package"
data[].inventory_updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].barcodes нет array<ProductBarcode>
data[].barcodes[] нет ProductBarcode
data[].barcodes[].barcode да string minLength: 1
maxLength: 64
"4601234567890"
data[].barcodes[].is_main да boolean true
data[].stocks нет ProductStocks
data[].stocks.available_by_warehouse нет object Объект с ключами по ID склада. Значения являются количествами. {"42":18.0,"43":3.0}
data[].stocks.physical нет array<ProductStockSummary> Physical stock rows for the product itself.
data[].stocks.physical[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data[].stocks.physical[].warehouse_id да integer:int64 min: 1 42
data[].stocks.physical[].warehouse_name да string | null "Warehouse Sofia"
data[].stocks.physical[].stockTotal да number:float 24.0
data[].stocks.physical[].stockReserved да number:float 6.0
data[].stocks.physical[].stockAvailable да number:float 18.0
data[].stocks.aggregate нет array<ProductStockSummary> Aggregated base-unit stock rows for the product and its descendant quants.
data[].stocks.aggregate[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data[].stocks.aggregate[].warehouse_id да integer:int64 min: 1 42
data[].stocks.aggregate[].warehouse_name да string | null "Warehouse Sofia"
data[].stocks.aggregate[].stockTotal да number:float 24.0
data[].stocks.aggregate[].stockReserved да number:float 6.0
data[].stocks.aggregate[].stockAvailable да number:float 18.0
data[].package нет object | null
data[].package.kind нет string | null "unit"
data[].package.parent_product_id нет integer:int64 | null min: 1 1201
data[].package.base_product_id нет integer:int64 | null min: 1 1200
data[].package.multiplicity нет number:float | null min: 0 6
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 1201,
    "external_id": "EXT-10045",
    "shop_id": 12,
    "domain_id": 3,
    "status_id": 1,
    "type_id": 1,
    "name": "Coffee 250g",
    "article": "ART-001245",
    "sku": "SKU-001245",
    "price": 19.99,
    "estimated_price": 21.5,
    "image_url": "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg",
    "dimensions": {
      "x": 105,
      "y": 200,
      "z": 32,
      "unit": "mm"
    },
    "weight": {
      "value": 250,
      "unit": "g"
    },
    "datamatrix_required": false,
    "expiration_required": true,
    "comment": "Keep dry",
    "description": "Ground coffee package",
    "inventory_updated_at": "2026-07-14T08:30:00Z",
    "barcodes": [
      {
        "barcode": "4601234567890",
        "is_main": true
      }
    ],
    "stocks": {
      "available_by_warehouse": {
        "42": 18
      },
      "physical": [
        {
          "warehouse_id": 42,
          "warehouse_name": "Warehouse Sofia",
          "stockTotal": 24,
          "stockReserved": 6,
          "stockAvailable": 18
        }
      ],
      "aggregate": [
        {
          "warehouse_id": 42,
          "warehouse_name": "Warehouse Sofia",
          "stockTotal": 30,
          "stockReserved": 7,
          "stockAvailable": 23
        }
      ]
    },
    "package": {
      "kind": "unit",
      "parent_product_id": null,
      "base_product_id": null,
      "multiplicity": null
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/products/{id}

Получить товар

operationIdgetProducts
РазделТовары
БезопасностьbearerAuth

Возвращает один ресурс: товар, если он существует и видим аутентифицированному аккаунту.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/products/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID товара. 1001

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Product Product catalog item exposed by API v2. Product barcodes identify a product or package type and are not unique SSCC values. Use /api/v2/closed-boxes to read individual sealed boxes and their current box balance.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "EXT-10045"
data.shop_id нет integer:int64 | null min: 1 12
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет integer:int64 | null 1
data.type_id нет integer:int64 | null 1
data.name да string "Coffee 250g"
data.article нет string | null "ART-001245"
data.sku нет string | null "SKU-001245"
data.price нет number:float | null 19.99
data.estimated_price нет number:float | null 21.5
data.image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data.dimensions нет Dimensions
data.dimensions.x нет number:float | null min: 0 105
data.dimensions.y нет number:float | null min: 0 200
data.dimensions.z нет number:float | null min: 0 32
data.dimensions.unit да enum enum: mm "mm"
data.weight нет Weight
data.weight.value нет number:float | null min: 0 250
data.weight.unit да enum enum: g "g"
data.datamatrix_required да boolean false
data.expiration_required да boolean true
data.comment нет string | null "Keep dry"
data.description нет string | null "Ground coffee package"
data.inventory_updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.barcodes нет array<ProductBarcode>
data.barcodes[] нет ProductBarcode
data.barcodes[].barcode да string minLength: 1
maxLength: 64
"4601234567890"
data.barcodes[].is_main да boolean true
data.stocks нет ProductStocks
data.stocks.available_by_warehouse нет object Объект с ключами по ID склада. Значения являются количествами. {"42":18.0,"43":3.0}
data.stocks.physical нет array<ProductStockSummary> Physical stock rows for the product itself.
data.stocks.physical[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data.stocks.physical[].warehouse_id да integer:int64 min: 1 42
data.stocks.physical[].warehouse_name да string | null "Warehouse Sofia"
data.stocks.physical[].stockTotal да number:float 24.0
data.stocks.physical[].stockReserved да number:float 6.0
data.stocks.physical[].stockAvailable да number:float 18.0
data.stocks.aggregate нет array<ProductStockSummary> Aggregated base-unit stock rows for the product and its descendant quants.
data.stocks.aggregate[] нет ProductStockSummary Stock totals for one warehouse. Quantities may be negative when reservations exceed physical stock.
data.stocks.aggregate[].warehouse_id да integer:int64 min: 1 42
data.stocks.aggregate[].warehouse_name да string | null "Warehouse Sofia"
data.stocks.aggregate[].stockTotal да number:float 24.0
data.stocks.aggregate[].stockReserved да number:float 6.0
data.stocks.aggregate[].stockAvailable да number:float 18.0
data.package нет object | null
data.package.kind нет string | null "unit"
data.package.parent_product_id нет integer:int64 | null min: 1 1201
data.package.base_product_id нет integer:int64 | null min: 1 1200
data.package.multiplicity нет number:float | null min: 0 6
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 1201,
    "external_id": "EXT-10045",
    "shop_id": 12,
    "domain_id": 3,
    "status_id": 1,
    "type_id": 1,
    "name": "Coffee 250g",
    "article": "ART-001245",
    "sku": "SKU-001245",
    "price": 19.99,
    "estimated_price": 21.5,
    "image_url": "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg",
    "dimensions": {
      "x": 105,
      "y": 200,
      "z": 32,
      "unit": "mm"
    },
    "weight": {
      "value": 250,
      "unit": "g"
    },
    "datamatrix_required": false,
    "expiration_required": true,
    "comment": "Keep dry",
    "description": "Ground coffee package",
    "inventory_updated_at": "2026-07-14T08:30:00Z",
    "barcodes": [
      {
        "barcode": "4601234567890",
        "is_main": true
      }
    ],
    "stocks": {
      "available_by_warehouse": {
        "42": 18
      },
      "physical": [
        {
          "warehouse_id": 42,
          "warehouse_name": "Warehouse Sofia",
          "stockTotal": 24,
          "stockReserved": 6,
          "stockAvailable": 18
        }
      ],
      "aggregate": [
        {
          "warehouse_id": 42,
          "warehouse_name": "Warehouse Sofia",
          "stockTotal": 30,
          "stockReserved": 7,
          "stockAvailable": 23
        }
      ]
    },
    "package": {
      "kind": "unit",
      "parent_product_id": null,
      "base_product_id": null,
      "multiplicity": null
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/products/{id}

Удалить товар

operationIddeleteProducts
РазделТовары
БезопасностьbearerAuth

Deletes the resource when the authenticated account has permission and the current lifecycle state allows deletion. If deletion is blocked by related records or document state, the API returns a validation error.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/products/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID товара. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object | null
meta да object
meta.api_version да enum enum: v2 "v2"
meta.deleted да boolean true
meta.id да integer:int64 min: 1 1001

Примеры ответа

success

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true,
    "id": 1001
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/products/{id}/stock-lots

List physical stock lots

operationIdgetProductStockLots
РазделТовары
БезопасностьbearerAuth

Read physical placed stock per warehouse, place and lot in this product's units. Unplaced reservations are excluded because they have no actual lot yet. Aggregate physical_quantity by warehouse and lot for reconciliation. Results use current product visibility and container rules, standard pagination (maximum 500) and no snapshot isolation.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/products/1001/stock-lots" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID товара. 1001
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, warehouse_id, expiration_date. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
warehouse_id query нет integer:int64 form true min: 1 Фильтр по warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[warehouse_id], если это поддерживает Laravel query adapter. 42
batch query нет string form true Фильтр по batch с частичным текстовым совпадением. Этот фильтр также можно передать как filter[batch], если это поддерживает Laravel query adapter. "LOT-2026"
production_date_from query нет string:date form true Нижняя включительная граница даты для production_date. Этот фильтр также можно передать как filter[production_date_from], если это поддерживает Laravel query adapter. "2026-07-14"
production_date_to query нет string:date form true Верхняя включительная граница даты для production_date. Этот фильтр также можно передать как filter[production_date_to], если это поддерживает Laravel query adapter. "2026-07-14"
expiration_date_from query нет string:date form true Нижняя включительная граница даты для expiration_date. Этот фильтр также можно передать как filter[expiration_date_from], если это поддерживает Laravel query adapter. "2026-07-14"
expiration_date_to query нет string:date form true Верхняя включительная граница даты для expiration_date. Этот фильтр также можно передать как filter[expiration_date_to], если это поддерживает Laravel query adapter. "2026-07-14"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<StockLot>
data[] нет StockLot One active positive placed stock slice in product units, using the same container visibility rules as product stock. Does not allocate unplaced reservations to lots. Not a snapshot cursor or append-only feed.
data[].batch да string | null "LOT-2026"
data[].production_date да string:date | null "2026-01-15"
data[].expiration_date да string:date | null "2027-01-15"
data[].id да integer:int64 min: 1 5001
data[].product_id да integer:int64 min: 1 1201
data[].warehouse_id да integer:int64 min: 1 734
data[].place_id да integer:int64 min: 1 501
data[].physical_quantity да number:float min: 0 12
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "batch": "LOT-2026",
      "production_date": "2026-01-15",
      "expiration_date": "2027-01-15",
      "id": 5001,
      "product_id": 1201,
      "warehouse_id": 734,
      "place_id": 501,
      "physical_quantity": 12
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/products/5101/stock-lots?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/products/5101/stock-lots?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/products/5101/stock-lots?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/products/5101/stock-lots",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Разукомплектация квантов

GET /api/v2/quant-unpackings

Получить список разукомплектаций квантов

operationIdlistQuantUnpackings
РазделРазукомплектация квантов
БезопасностьbearerAuth

Возвращает разукомплектации квантов, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/quant-unpackings" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, document_date, conducted_at, created_at, updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "-id"
after_id query нет integer:int64 form true min: 0 Вернуть строки с ID больше указанного значения. Граница исключающая. Этот фильтр также можно передать как filter[after_id], если это поддерживает Laravel query adapter. 1000
include query нет string form false Связанные сущности через запятую. Допустимые значения: items. Этот фильтр также можно передать как filter[include], если это поддерживает Laravel query adapter. "items"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
external_id query нет string form true Фильтр по external_id с точным совпадением. Этот фильтр также можно передать как filter[external_id], если это поддерживает Laravel query adapter. "EXT-10045"
status_id query нет integer:int64 form true min: 1 Фильтр по status_id с точным совпадением. Этот фильтр также можно передать как filter[status_id], если это поддерживает Laravel query adapter. 1
warehouse_id query нет integer:int64 form true min: 1 Фильтр по warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[warehouse_id], если это поддерживает Laravel query adapter. 42
user_id query нет integer:int64 form true min: 1 Фильтр по user_id с точным совпадением. Этот фильтр также можно передать как filter[user_id], если это поддерживает Laravel query adapter. 15
comment query нет string form true Фильтр по comment с частичным текстовым совпадением. Этот фильтр также можно передать как filter[comment], если это поддерживает Laravel query adapter. "Priority"
document_date_from query нет string:date form true Нижняя включительная граница даты для document_date. Этот фильтр также можно передать как filter[document_date_from], если это поддерживает Laravel query adapter. "2026-07-14"
document_date_to query нет string:date form true Верхняя включительная граница даты для document_date. Этот фильтр также можно передать как filter[document_date_to], если это поддерживает Laravel query adapter. "2026-07-14"
conducted_at_from query нет string:date form true Нижняя включительная граница даты для conducted_at. Этот фильтр также можно передать как filter[conducted_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
conducted_at_to query нет string:date form true Верхняя включительная граница даты для conducted_at. Этот фильтр также можно передать как filter[conducted_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<QuantUnpacking>
data[] нет QuantUnpacking Документ разукомплектации кванта.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].external_id нет string | null "QU-100245"
data[].domain_id нет integer:int64 | null min: 1 3
data[].warehouse_id нет integer:int64 | null min: 1 42
data[].user_id нет integer:int64 | null min: 1 9
data[].status_id нет enum:int64 | null enum: 1, 4 1 - draft/new document. 4 - conducted document. 1
data[].document_date нет string:date | null "2026-07-14"
data[].counts да object
data[].counts.source да number:float 1
data[].counts.target да number:float 6
data[].counts.source_moved да number:float 0
data[].counts.target_moved да number:float 0
data[].conducted_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].comment нет string | null "Unpack coffee box"
data[].items нет array<QuantUnpackingItem>
data[].items[] нет QuantUnpackingItem Строка разукомплектации кванта.
data[].items[].id да integer:int64 readOnly min: 1 9001
data[].items[].source_product_id да integer:int64 min: 1 1200
data[].items[].target_product_id нет integer:int64 | null min: 1 1201
data[].items[].source_place_id нет integer:int64 | null min: 1 501
data[].items[].target_place_id нет integer:int64 | null min: 1 502
data[].items[].source_quantity да number:float min: 0 1
data[].items[].target_quantity нет number:float | null min: 0 6
data[].items[].available_quantity нет number:float | null min: 0 10
data[].items[].batch нет string | null "LOT-2026"
data[].items[].production_date нет string:date | null "2026-01-15"
data[].items[].expiration_date нет string:date | null "2027-01-15"
data[].items[].comment нет string | null "Box unpacked"
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 9201,
      "external_id": "QU-100245",
      "domain_id": 3,
      "warehouse_id": 42,
      "user_id": 9,
      "status_id": 1,
      "document_date": "2026-07-14",
      "counts": {
        "source": 1,
        "target": 6,
        "source_moved": 0,
        "target_moved": 0
      },
      "conducted_at": null,
      "comment": "Unpack coffee box",
      "items": [
        {
          "id": 9001,
          "source_product_id": 1200,
          "target_product_id": 1201,
          "source_place_id": 501,
          "target_place_id": 502,
          "source_quantity": 1,
          "target_quantity": 6,
          "available_quantity": 10,
          "batch": "LOT-2026",
          "production_date": "2026-01-15",
          "expiration_date": "2027-01-15",
          "comment": "Box unpacked"
        }
      ],
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/quant-unpackings?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/quant-unpackings?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/quant-unpackings?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/quant-unpackings",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/quant-unpackings

Создать разукомплектацию кванта

operationIdcreateQuantUnpackings
РазделРазукомплектация квантов
БезопасностьbearerAuth

Create quant unpacking. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/quant-unpackings" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CreateQuantUnpackingRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateQuantUnpackingPayload
data.warehouse_id да integer:int64 min: 1 42
data.document_date нет string:date | null "2026-07-14"
data.external_id нет string | null "QU-100245"
data.comment нет string | null "Unpack coffee box"
data.conduct нет boolean false
data.items да array<QuantUnpackingItemCreatePayload> minItems: 1
data.items[] нет QuantUnpackingItemCreatePayload Исходная строка разукомплектации кванта. Целевой товар и целевое количество определяются сервисом упаковок.
data.items[].source_product_id да integer:int64 min: 1 1200
data.items[].source_quantity да number:float min: 0.001 1
data.items[].source_place_id нет integer:int64 | null min: 1 501
data.items[].target_place_id нет integer:int64 | null min: 1 502
data.items[].batch нет string | null "LOT-2026"
data.items[].production_date нет string:date | null "2026-01-15"
data.items[].expiration_date нет string:date | null "2027-01-15"
data.items[].comment нет string | null "Box unpacked"

Примеры запроса

default

{
  "data": {
    "warehouse_id": 42,
    "external_id": "QU-100245",
    "items": [
      {
        "source_product_id": 1200,
        "source_quantity": 1,
        "source_place_id": 501
      }
    ]
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да QuantUnpacking Документ разукомплектации кванта.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "QU-100245"
data.domain_id нет integer:int64 | null min: 1 3
data.warehouse_id нет integer:int64 | null min: 1 42
data.user_id нет integer:int64 | null min: 1 9
data.status_id нет enum:int64 | null enum: 1, 4 1 - draft/new document. 4 - conducted document. 1
data.document_date нет string:date | null "2026-07-14"
data.counts да object
data.counts.source да number:float 1
data.counts.target да number:float 6
data.counts.source_moved да number:float 0
data.counts.target_moved да number:float 0
data.conducted_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.comment нет string | null "Unpack coffee box"
data.items нет array<QuantUnpackingItem>
data.items[] нет QuantUnpackingItem Строка разукомплектации кванта.
data.items[].id да integer:int64 readOnly min: 1 9001
data.items[].source_product_id да integer:int64 min: 1 1200
data.items[].target_product_id нет integer:int64 | null min: 1 1201
data.items[].source_place_id нет integer:int64 | null min: 1 501
data.items[].target_place_id нет integer:int64 | null min: 1 502
data.items[].source_quantity да number:float min: 0 1
data.items[].target_quantity нет number:float | null min: 0 6
data.items[].available_quantity нет number:float | null min: 0 10
data.items[].batch нет string | null "LOT-2026"
data.items[].production_date нет string:date | null "2026-01-15"
data.items[].expiration_date нет string:date | null "2027-01-15"
data.items[].comment нет string | null "Box unpacked"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 9201,
    "external_id": "QU-100245",
    "domain_id": 3,
    "warehouse_id": 42,
    "user_id": 9,
    "status_id": 1,
    "document_date": "2026-07-14",
    "counts": {
      "source": 1,
      "target": 6,
      "source_moved": 0,
      "target_moved": 0
    },
    "conducted_at": null,
    "comment": "Unpack coffee box",
    "items": [
      {
        "id": 9001,
        "source_product_id": 1200,
        "target_product_id": 1201,
        "source_place_id": 501,
        "target_place_id": 502,
        "source_quantity": 1,
        "target_quantity": 6,
        "available_quantity": 10,
        "batch": "LOT-2026",
        "production_date": "2026-01-15",
        "expiration_date": "2027-01-15",
        "comment": "Box unpacked"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/quant-unpackings/{id}

Получить разукомплектацию кванта

operationIdgetQuantUnpackings
РазделРазукомплектация квантов
БезопасностьbearerAuth

Возвращает один ресурс: разукомплектация кванта, если он существует и видим аутентифицированному аккаунту.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/quant-unpackings/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID документа разукомплектации кванта. 1001

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да QuantUnpacking Документ разукомплектации кванта.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "QU-100245"
data.domain_id нет integer:int64 | null min: 1 3
data.warehouse_id нет integer:int64 | null min: 1 42
data.user_id нет integer:int64 | null min: 1 9
data.status_id нет enum:int64 | null enum: 1, 4 1 - draft/new document. 4 - conducted document. 1
data.document_date нет string:date | null "2026-07-14"
data.counts да object
data.counts.source да number:float 1
data.counts.target да number:float 6
data.counts.source_moved да number:float 0
data.counts.target_moved да number:float 0
data.conducted_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.comment нет string | null "Unpack coffee box"
data.items нет array<QuantUnpackingItem>
data.items[] нет QuantUnpackingItem Строка разукомплектации кванта.
data.items[].id да integer:int64 readOnly min: 1 9001
data.items[].source_product_id да integer:int64 min: 1 1200
data.items[].target_product_id нет integer:int64 | null min: 1 1201
data.items[].source_place_id нет integer:int64 | null min: 1 501
data.items[].target_place_id нет integer:int64 | null min: 1 502
data.items[].source_quantity да number:float min: 0 1
data.items[].target_quantity нет number:float | null min: 0 6
data.items[].available_quantity нет number:float | null min: 0 10
data.items[].batch нет string | null "LOT-2026"
data.items[].production_date нет string:date | null "2026-01-15"
data.items[].expiration_date нет string:date | null "2027-01-15"
data.items[].comment нет string | null "Box unpacked"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 9201,
    "external_id": "QU-100245",
    "domain_id": 3,
    "warehouse_id": 42,
    "user_id": 9,
    "status_id": 1,
    "document_date": "2026-07-14",
    "counts": {
      "source": 1,
      "target": 6,
      "source_moved": 0,
      "target_moved": 0
    },
    "conducted_at": null,
    "comment": "Unpack coffee box",
    "items": [
      {
        "id": 9001,
        "source_product_id": 1200,
        "target_product_id": 1201,
        "source_place_id": 501,
        "target_place_id": 502,
        "source_quantity": 1,
        "target_quantity": 6,
        "available_quantity": 10,
        "batch": "LOT-2026",
        "production_date": "2026-01-15",
        "expiration_date": "2027-01-15",
        "comment": "Box unpacked"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/quant-unpackings/{id}/conduct

Провести разукомплектацию кванта

operationIdconductQuantUnpacking
РазделРазукомплектация квантов
БезопасностьbearerAuth

Conduct quant unpacking. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/quant-unpackings/1001/conduct" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID документа разукомплектации кванта. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да QuantUnpacking Документ разукомплектации кванта.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "QU-100245"
data.domain_id нет integer:int64 | null min: 1 3
data.warehouse_id нет integer:int64 | null min: 1 42
data.user_id нет integer:int64 | null min: 1 9
data.status_id нет enum:int64 | null enum: 1, 4 1 - draft/new document. 4 - conducted document. 1
data.document_date нет string:date | null "2026-07-14"
data.counts да object
data.counts.source да number:float 1
data.counts.target да number:float 6
data.counts.source_moved да number:float 0
data.counts.target_moved да number:float 0
data.conducted_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.comment нет string | null "Unpack coffee box"
data.items нет array<QuantUnpackingItem>
data.items[] нет QuantUnpackingItem Строка разукомплектации кванта.
data.items[].id да integer:int64 readOnly min: 1 9001
data.items[].source_product_id да integer:int64 min: 1 1200
data.items[].target_product_id нет integer:int64 | null min: 1 1201
data.items[].source_place_id нет integer:int64 | null min: 1 501
data.items[].target_place_id нет integer:int64 | null min: 1 502
data.items[].source_quantity да number:float min: 0 1
data.items[].target_quantity нет number:float | null min: 0 6
data.items[].available_quantity нет number:float | null min: 0 10
data.items[].batch нет string | null "LOT-2026"
data.items[].production_date нет string:date | null "2026-01-15"
data.items[].expiration_date нет string:date | null "2027-01-15"
data.items[].comment нет string | null "Box unpacked"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 9201,
    "external_id": "QU-100245",
    "domain_id": 3,
    "warehouse_id": 42,
    "user_id": 9,
    "status_id": 1,
    "document_date": "2026-07-14",
    "counts": {
      "source": 1,
      "target": 6,
      "source_moved": 0,
      "target_moved": 0
    },
    "conducted_at": null,
    "comment": "Unpack coffee box",
    "items": [
      {
        "id": 9001,
        "source_product_id": 1200,
        "target_product_id": 1201,
        "source_place_id": 501,
        "target_place_id": 502,
        "source_quantity": 1,
        "target_quantity": 6,
        "available_quantity": 10,
        "batch": "LOT-2026",
        "production_date": "2026-01-15",
        "expiration_date": "2027-01-15",
        "comment": "Box unpacked"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/quant-unpackings/{id}/items

Добавить строку разукомплектации

operationIdaddQuantUnpackingsItems
РазделРазукомплектация квантов
БезопасностьbearerAuth

Add quant unpacking. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/quant-unpackings/1001/items" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID документа разукомплектации кванта. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

AddQuantUnpackingItemRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да QuantUnpackingItemCreatePayload Исходная строка разукомплектации кванта. Целевой товар и целевое количество определяются сервисом упаковок.
data.source_product_id да integer:int64 min: 1 1200
data.source_quantity да number:float min: 0.001 1
data.source_place_id нет integer:int64 | null min: 1 501
data.target_place_id нет integer:int64 | null min: 1 502
data.batch нет string | null "LOT-2026"
data.production_date нет string:date | null "2026-01-15"
data.expiration_date нет string:date | null "2027-01-15"
data.comment нет string | null "Box unpacked"

Примеры запроса

default

{
  "data": {
    "source_product_id": 1200,
    "source_quantity": 1,
    "source_place_id": 501
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да QuantUnpacking Документ разукомплектации кванта.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.external_id нет string | null "QU-100245"
data.domain_id нет integer:int64 | null min: 1 3
data.warehouse_id нет integer:int64 | null min: 1 42
data.user_id нет integer:int64 | null min: 1 9
data.status_id нет enum:int64 | null enum: 1, 4 1 - draft/new document. 4 - conducted document. 1
data.document_date нет string:date | null "2026-07-14"
data.counts да object
data.counts.source да number:float 1
data.counts.target да number:float 6
data.counts.source_moved да number:float 0
data.counts.target_moved да number:float 0
data.conducted_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.comment нет string | null "Unpack coffee box"
data.items нет array<QuantUnpackingItem>
data.items[] нет QuantUnpackingItem Строка разукомплектации кванта.
data.items[].id да integer:int64 readOnly min: 1 9001
data.items[].source_product_id да integer:int64 min: 1 1200
data.items[].target_product_id нет integer:int64 | null min: 1 1201
data.items[].source_place_id нет integer:int64 | null min: 1 501
data.items[].target_place_id нет integer:int64 | null min: 1 502
data.items[].source_quantity да number:float min: 0 1
data.items[].target_quantity нет number:float | null min: 0 6
data.items[].available_quantity нет number:float | null min: 0 10
data.items[].batch нет string | null "LOT-2026"
data.items[].production_date нет string:date | null "2026-01-15"
data.items[].expiration_date нет string:date | null "2027-01-15"
data.items[].comment нет string | null "Box unpacked"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 9201,
    "external_id": "QU-100245",
    "domain_id": 3,
    "warehouse_id": 42,
    "user_id": 9,
    "status_id": 1,
    "document_date": "2026-07-14",
    "counts": {
      "source": 1,
      "target": 6,
      "source_moved": 0,
      "target_moved": 0
    },
    "conducted_at": null,
    "comment": "Unpack coffee box",
    "items": [
      {
        "id": 9001,
        "source_product_id": 1200,
        "target_product_id": 1201,
        "source_place_id": 501,
        "target_place_id": 502,
        "source_quantity": 1,
        "target_quantity": 6,
        "available_quantity": 10,
        "batch": "LOT-2026",
        "production_date": "2026-01-15",
        "expiration_date": "2027-01-15",
        "comment": "Box unpacked"
      }
    ],
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Документы отправок

GET /api/v2/send-documents

Получить список документов отправок

operationIdlistSendDocuments
РазделДокументы отправок
БезопасностьbearerAuth

Возвращает send documents, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/send-documents" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 100
Количество записей на странице. По умолчанию 20; максимум 100. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 20
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, document_date, status_id, warehouse_id, order_count, processing_mode, pipeline_state, created_at, updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "-id"
include query нет string form false Comma-separated optional relations. Allowed values: status, warehouse, delivery_services, orders, orders.products, orders.datamatrix, orders.wildberries, wildberries_supplies, batch. The same filter may also be sent as filter[include] where supported by the Laravel query adapter. "status,warehouse,delivery_services,orders,orders.products,orders.datamatrix,orders.wildberries,wildberries_supplies,batch"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
status_id query нет integer:int64 form true min: 1 Фильтр по status_id с точным совпадением. Этот фильтр также можно передать как filter[status_id], если это поддерживает Laravel query adapter. 1
warehouse_id query нет integer:int64 form true min: 1 Фильтр по warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[warehouse_id], если это поддерживает Laravel query adapter. 42
delivery_service_id query нет integer:int64 form true min: 1 Фильтр по delivery_service_id с точным совпадением. Этот фильтр также можно передать как filter[delivery_service_id], если это поддерживает Laravel query adapter. 1
order_id query нет integer:int64 form true min: 1 Фильтр по order_id с точным совпадением. Этот фильтр также можно передать как filter[order_id], если это поддерживает Laravel query adapter. 1
processing_mode query нет string form true Фильтр по processing_mode с точным совпадением. Этот фильтр также можно передать как filter[processing_mode], если это поддерживает Laravel query adapter. "standard"
pipeline_state query нет string form true Фильтр по pipeline_state с точным совпадением. Этот фильтр также можно передать как filter[pipeline_state], если это поддерживает Laravel query adapter. "open"
wb_fulfillment_state query нет string form true Фильтр по wb_fulfillment_state с точным совпадением. Этот фильтр также можно передать как filter[wb_fulfillment_state], если это поддерживает Laravel query adapter. "delivered"
comment query нет string form true Фильтр по comment с частичным текстовым совпадением. Этот фильтр также можно передать как filter[comment], если это поддерживает Laravel query adapter. "Priority"
document_date_from query нет string:date form true Нижняя включительная граница даты для document_date. Этот фильтр также можно передать как filter[document_date_from], если это поддерживает Laravel query adapter. "2026-07-14"
document_date_to query нет string:date form true Верхняя включительная граница даты для document_date. Этот фильтр также можно передать как filter[document_date_to], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
updated_at_from query нет string:date form true Нижняя включительная граница даты для updated_at. Этот фильтр также можно передать как filter[updated_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
updated_at_to query нет string:date form true Верхняя включительная граница даты для updated_at. Этот фильтр также можно передать как filter[updated_at_to], если это поддерживает Laravel query adapter. "2026-07-14"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<SendDocument>
data[] нет SendDocument Outbound shipment document with its complete operational composition. Collection relations are empty unless requested through include; the item endpoint always loads them.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].domain_id нет integer:int64 | null min: 1 3
data[].status_id нет integer:int64 | null 1
data[].status нет object | null
data[].status.id да integer:int64 1
data[].status.name да string "Открыт"
data[].status.color нет string | null "#2457c5"
data[].status.background_color нет string | null "#eaf0ff"
data[].warehouse_id нет integer:int64 | null min: 1 42
data[].warehouse нет object | null
data[].warehouse.id да integer:int64 min: 1 42
data[].warehouse.name да string "Warehouse Sofia"
data[].warehouse.type_id нет integer:int64 | null 2
data[].warehouse.parent_id нет integer:int64 | null min: 1 41
data[].delivery_service_ids да array<integer:int64>
data[].delivery_service_ids[] нет integer:int64 min: 1 17
data[].delivery_services да array<SendDocumentDeliveryService>
data[].delivery_services[] нет SendDocumentDeliveryService
data[].delivery_services[].id да integer:int64 min: 1 17
data[].delivery_services[].name да string "Wildberries FBS"
data[].delivery_services[].status_id да integer:int64 1
data[].delivery_services[].external_id нет string | null "wb-fbs"
data[].delivery_services[].source_id нет string | null "wildberries"
data[].delivery_services[].delivery_type нет string | null "pickup_point"
data[].delivery_services[].is_courier да boolean false
data[].document_date нет string:date | null "2026-08-11"
data[].closed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data[].comment нет string | null "Wildberries shipment 740"
data[].order_count да integer:int64 min: 0 1
data[].processing да SendDocumentProcessing
data[].processing.mode нет string | null "standard"
data[].processing.pipeline да array<string>
data[].processing.pipeline[] нет string "assignment"
data[].processing.state нет string | null "open"
data[].processing.batch_profile_id нет integer:int64 | null min: 1 31
data[].processing.batch_profile нет object | null
data[].processing.batch_profile.id да integer:int64 min: 1 31
data[].processing.batch_profile.name да string "Standard packing"
data[].processing.batch_profile.processing_mode нет string | null "standard"
data[].processing.composition_frozen_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].processing.batch_started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].processing.batch_completed_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].wildberries да SendDocumentWildberries Wildberries document-level state and safe supply/QR/sticker artifact metadata. Binary label content and encrypted provider payloads are not returned.
data[].wildberries.fulfillment_state нет string | null "delivered"
data[].wildberries.error_message нет string | null ""
data[].wildberries.processed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data[].wildberries.supplies да array<object>
data[].wildberries.supplies[] нет object
data[].orders да array<SendDocumentOrderAssignment>
data[].orders[] нет SendDocumentOrderAssignment
data[].orders[].assignment_id да integer:int64 min: 1 8801
data[].orders[].marked_at нет string:date-time | null "2026-08-11T09:30:00Z"
data[].orders[].created_at нет string:date-time | null "2026-08-11T09:00:00Z"
data[].orders[].updated_at нет string:date-time | null "2026-08-11T09:30:00Z"
data[].orders[].order да object | null Complete order snapshot embedded into a shipment document. Marketplace and batch objects preserve provider-specific fields.
data[].orders[].order.id да integer:int64 min: 1 49060
data[].orders[].order.external_id нет string | null "WB-900001234"
data[].orders[].order.status_id нет integer:int64 | null 20
data[].orders[].order.warehouse_id нет integer:int64 | null min: 1 42
data[].orders[].order.shop_id нет integer:int64 | null min: 1 12
data[].orders[].order.order_date нет string:date | null "2026-08-10"
data[].orders[].order.send_date нет string:date | null "2026-08-11"
data[].orders[].order.amounts нет object | null
data[].orders[].order.amounts.shipping_price нет number:float | null 8.6
data[].orders[].order.amounts.shipping_cost нет number:float | null 0
data[].orders[].order.amounts.sum нет number:float | null 39.98
data[].orders[].order.amounts.cod_sum нет number:float | null 48.58
data[].orders[].order.contact нет object | null
data[].orders[].order.contact.first_name нет string | null "Ivan"
data[].orders[].order.contact.middle_name нет string | null "Ivanovich"
data[].orders[].order.contact.last_name нет string | null "Petrov"
data[].orders[].order.contact.phone нет string | null "+359888123456"
data[].orders[].order.contact.email нет string:email | null "customer@example.com"
data[].orders[].order.contact.country_id нет integer:int64 | null min: 1 100
data[].orders[].order.contact.city_id нет integer:int64 | null min: 1 200
data[].orders[].order.contact.postcode нет string | null "1000"
data[].orders[].order.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data[].orders[].order.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data[].orders[].order.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data[].orders[].order.delivery нет object | null
data[].orders[].order.delivery.service_id нет integer:int64 | null min: 1 1
data[].orders[].order.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data[].orders[].order.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data[].orders[].order.delivery.status нет string | null "created"
data[].orders[].order.delivery.track_number нет string | null "CDEK-123456789"
data[].orders[].order.delivery.pickup_point_id нет string | null "SOFIA-01"
data[].orders[].order.delivery.source_id нет string | null "cdek-15"
data[].orders[].order.delivery.tariff_code нет integer:int64 | null 136
data[].orders[].order.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data[].orders[].order.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data[].orders[].order.delivery.delivery_date нет string:date | null "2026-07-16"
data[].orders[].order.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data[].orders[].order.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data[].orders[].order.comments нет object | null
data[].orders[].order.comments.delivery_service_text нет string | null "Call before delivery"
data[].orders[].order.comments.inner_text нет string | null "VIP customer"
data[].orders[].order.offers да array<SendDocumentOrderLine>
data[].orders[].order.offers[] нет SendDocumentOrderLine
data[].orders[].order.offers[].id да integer:int64 min: 1 7001
data[].orders[].order.offers[].product_id нет integer:int64 | null min: 1 1201
data[].orders[].order.offers[].quantity нет number:float | null 2
data[].orders[].order.offers[].estimated_price нет number:float | null 19.5
data[].orders[].order.offers[].price нет number:float | null 19.99
data[].orders[].order.offers[].expiration_date нет string:date | null "2027-01-15"
data[].orders[].order.offers[].batch нет string | null "LOT-2026"
data[].orders[].order.offers[].operation_user_id нет integer:int64 | null min: 1 9
data[].orders[].order.offers[].product нет object | null
data[].orders[].order.offers[].reservation нет object | null Reservation totals for one order line.
data[].orders[].order.offers[].reservation_items нет array<OrderReservationItem>
data[].orders[].order.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].orders[].order.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].orders[].order.datamatrix_codes да array<DataMatrix>
data[].orders[].order.datamatrix_codes[] нет DataMatrix Код DataMatrix для маркированного товара.
data[].orders[].order.datamatrix_codes[].id да integer:int64 readOnly min: 1 1001
data[].orders[].order.datamatrix_codes[].created_at нет string:date | null readOnly Stored code upload date; date precision. "2026-10-19"
data[].orders[].order.datamatrix_codes[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].orders[].order.datamatrix_codes[].domain_id нет integer:int64 | null min: 1 3
data[].orders[].order.datamatrix_codes[].warehouse_id нет integer:int64 | null min: 1 42
data[].orders[].order.datamatrix_codes[].status_id нет enum:int64 | null enum: 0, 1, 2 0 - Imported and available for future warehouse operations. 1 - Reserved or attached by an operational document. 2 - Used by an outbound or completed operation. 0
data[].orders[].order.datamatrix_codes[].acceptance_id нет integer:int64 | null min: 1 5101
data[].orders[].order.datamatrix_codes[].order_id нет integer:int64 | null min: 1 8101
data[].orders[].order.datamatrix_codes[].product_id нет integer:int64 | null min: 1 1201
data[].orders[].order.datamatrix_codes[].barcode нет string | null maxLength: 14 "04601234567890"
data[].orders[].order.datamatrix_codes[].short_code нет string | null maxLength: 14 "ABC123"
data[].orders[].order.datamatrix_codes[].crypto_tail нет string | null "CRYPTO"
data[].orders[].order.datamatrix_codes[].datamatrix нет string | null maxLength: 125 "010460123456789021ABC123"
data[].orders[].order.datamatrix_codes[].production_date нет string:date | null "2026-01-15"
data[].orders[].order.datamatrix_codes[].expiration_date нет string:date | null "2027-01-15"
data[].orders[].order.datamatrix_codes[].batch нет string | null "LOT-2026"
data[].orders[].order.datamatrix_codes[].used_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].orders[].order.datamatrix_codes[].accepted_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data[].orders[].order.datamatrix_codes[].shipped_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data[].orders[].order.warehouse нет object | null
data[].orders[].order.warehouse.id да integer:int64 min: 1 42
data[].orders[].order.warehouse.name да string "Warehouse Sofia"
data[].orders[].order.warehouse.type_id нет integer:int64 | null 2
data[].orders[].order.warehouse.parent_id нет integer:int64 | null min: 1 41
data[].orders[].order.shop нет object | null
data[].orders[].order.shop.id да integer:int64 min: 1 12
data[].orders[].order.shop.name да string "Demo Online Store"
data[].orders[].order.shop.status_id нет integer:int64 | null 1
data[].orders[].order.company нет object | null
data[].orders[].order.company.id да integer:int64 min: 1 7
data[].orders[].order.company.name да string "Demo Company"
data[].orders[].order.company.legal_name нет string | null "Demo Company Ltd."
data[].orders[].order.place нет object | null
data[].orders[].order.accumulation_place нет object | null
data[].orders[].order.measurements нет object | null
data[].orders[].order.settings нет object | null
data[].orders[].order.consumables да array<object>
data[].orders[].order.consumables[] нет object
data[].orders[].order.wildberries нет object | null
data[].orders[].order.wildberries.completed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data[].orders[].order.batch_matches да array<object>
data[].orders[].order.batch_matches[] нет object
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 740,
      "domain_id": 3,
      "status_id": 1,
      "status": {
        "id": 1,
        "name": "Открыт",
        "color": "#2457c5",
        "background_color": "#eaf0ff"
      },
      "warehouse_id": 42,
      "warehouse": {
        "id": 42,
        "name": "Warehouse Sofia",
        "type_id": 2,
        "parent_id": 41
      },
      "delivery_service_ids": [
        17
      ],
      "delivery_services": [
        {
          "id": 17,
          "name": "Wildberries FBS",
          "status_id": 1,
          "external_id": "wb-fbs",
          "source_id": "wildberries",
          "delivery_type": "pickup_point",
          "is_courier": false
        }
      ],
      "document_date": "2026-08-11",
      "closed_at": "2026-08-11T10:15:00Z",
      "comment": "Wildberries shipment 740",
      "order_count": 1,
      "processing": {
        "mode": "standard",
        "pipeline": [
          "assignment",
          "marking",
          "transfer"
        ],
        "state": "open",
        "batch_profile_id": null,
        "batch_profile": null,
        "composition_frozen_at": null,
        "batch_started_at": null,
        "batch_completed_at": null
      },
      "wildberries": {
        "fulfillment_state": "delivered",
        "error_message": null,
        "processed_at": "2026-08-11T10:15:00Z",
        "supplies": [
          {
            "id": 3201,
            "account_id": 71,
            "external_id": "WB-GI-740",
            "name": "Поставка 740",
            "state": "delivered",
            "state_name": "Доставлена",
            "destination_type": "office",
            "destination_office_id": 507,
            "is_automatic": false,
            "is_b2b": false,
            "cargo_type": "box",
            "cross_border_type": null,
            "order_count": 1,
            "current_qr": {
              "id": 3301,
              "kind": "supply_qr",
              "format": "svg",
              "width": 580,
              "height": 400,
              "barcode": "WB-GI-740",
              "part_a": null,
              "part_b": null,
              "content_hash": "sha256:qr-example",
              "content_available": true,
              "is_current": true,
              "fetched_at": "2026-08-11T09:00:00Z",
              "last_printed_at": null,
              "print_count": 0
            },
            "boxes": [

            ],
            "last_error": {
              "code": null,
              "message": null
            },
            "remote_created_at": "2026-08-11T09:00:00Z",
            "remote_closed_at": null,
            "last_synced_at": "2026-08-11T10:15:00Z",
            "delivered_at": "2026-08-11T10:15:00Z"
          }
        ]
      },
      "orders": [
        {
          "assignment_id": 8801,
          "marked_at": "2026-08-11T09:30:00Z",
          "created_at": "2026-08-11T09:00:00Z",
          "updated_at": "2026-08-11T09:30:00Z",
          "order": {
            "id": 49060,
            "external_id": "WB-900001234",
            "status_id": 20,
            "warehouse_id": 42,
            "shop_id": 12,
            "order_date": "2026-08-10",
            "send_date": "2026-08-11",
            "amounts": {
              "shipping_price": 0,
              "shipping_cost": 0,
              "sum": 39.98,
              "cod_sum": 0
            },
            "contact": {
              "first_name": "Иван",
              "middle_name": null,
              "last_name": "Петров",
              "phone": "+359888123456",
              "email": "customer@example.com",
              "country_id": 100,
              "city_id": 200,
              "postcode": "1000",
              "latitude": 42.6977,
              "longitude": 23.3219,
              "full_address": "Sofia"
            },
            "delivery": {
              "service_id": 17,
              "delivery_type": "pickup_point",
              "is_courier": false,
              "status": "created",
              "track_number": "WB-900001234",
              "pickup_point_id": "WB-SOF-01",
              "source_id": "wildberries",
              "tariff_code": null,
              "additional_services": {
              },
              "label": null,
              "delivery_date": "2026-08-12",
              "delivery_time_start": null,
              "delivery_time_end": null
            },
            "comments": {
              "delivery_service_text": null,
              "inner_text": "Клиентский пример для документа 740"
            },
            "offers": [
              {
                "id": 7001,
                "product_id": 1201,
                "quantity": 2,
                "estimated_price": 19.5,
                "price": 19.99,
                "expiration_date": "2027-01-15",
                "batch": "LOT-2026",
                "operation_user_id": 9,
                "product": {
                  "id": 1201,
                  "external_id": "EXT-10045",
                  "shop_id": 12,
                  "domain_id": 3,
                  "status_id": 1,
                  "type_id": 1,
                  "name": "Coffee 250g",
                  "article": "ART-001245",
                  "sku": "SKU-001245",
                  "price": 19.99,
                  "estimated_price": 21.5,
                  "image_url": null,
                  "dimensions": {
                    "x": 105,
                    "y": 200,
                    "z": 32,
                    "unit": "mm"
                  },
                  "weight": {
                    "value": 250,
                    "unit": "g"
                  },
                  "datamatrix_required": true,
                  "expiration_required": true,
                  "comment": null,
                  "description": "Ground coffee package",
                  "barcodes": [
                    {
                      "barcode": "4601234567890",
                      "is_main": true
                    }
                  ],
                  "package": {
                    "kind": "unit",
                    "parent_product_id": null,
                    "base_product_id": null,
                    "multiplicity": null,
                    "base_multiplicity": null,
                    "depth": 0
                  },
                  "created_at": "2026-08-01T09:00:00Z",
                  "updated_at": "2026-08-10T09:00:00Z"
                },
                "reservation": {
                  "required_qty": 2,
                  "reserved_qty": 2,
                  "unreserved_qty": 0,
                  "missing_qty": 0,
                  "status": "reserved"
                },
                "reservation_items": [

                ],
                "created_at": "2026-08-10T09:00:00Z",
                "updated_at": "2026-08-10T09:00:00Z"
              }
            ],
            "datamatrix_codes": [
              {
                "id": 6101,
                "domain_id": 3,
                "warehouse_id": 42,
                "status_id": 1,
                "acceptance_id": 5101,
                "order_id": 49060,
                "product_id": 1201,
                "barcode": "04601234567890",
                "short_code": "ABC123",
                "crypto_tail": "CRYPTO",
                "datamatrix": "010460123456789021ABC123",
                "production_date": "2026-01-15",
                "expiration_date": "2027-01-15",
                "batch": "LOT-2026",
                "created_at": "2026-08-11T09:15:00Z",
                "updated_at": "2026-08-11T09:15:00Z",
                "used_at": null
              }
            ],
            "warehouse": {
              "id": 42,
              "name": "Warehouse Sofia",
              "type_id": 2,
              "parent_id": 41
            },
            "shop": {
              "id": 12,
              "name": "Demo Online Store",
              "status_id": 1
            },
            "company": {
              "id": 7,
              "name": "Demo Company",
              "legal_name": "Demo Company Ltd."
            },
            "place": null,
            "accumulation_place": null,
            "measurements": {
              "places": 1,
              "dimensions": {
                "x": 220,
                "y": 160,
                "z": 120,
                "unit": "mm"
              },
              "weight": {
                "value": 600,
                "unit": "g"
              }
            },
            "settings": {
              "blank_url": null
            },
            "consumables": [

            ],
            "wildberries": {
              "id": 2101,
              "account_id": 71,
              "wb_order_id": "900001234",
              "order_uid": "WB-UID-49060",
              "rid": "WB-RID-49060",
              "product_id": 1201,
              "state": "confirmed",
              "state_name": "Подтверждён",
              "fulfillment_state": "delivered",
              "fulfillment_state_name": "Доставлен",
              "supplier_status": "confirm",
              "wb_status": "sold",
              "supply_id": 3201,
              "external_supply_id": "WB-GI-740",
              "supply_state": "delivered",
              "delivery_type": "fbs",
              "cross_border_type": null,
              "is_b2b": false,
              "wb_warehouse_id": 507,
              "office_id": 507,
              "nm_id": 12345678,
              "chrt_id": 87654321,
              "article": "ART-001245",
              "skus": [
                "4601234567890"
              ],
              "required_meta": [
                "sgtin"
              ],
              "optional_meta": [

              ],
              "meta_state": "accepted",
              "sticker_state": "ready",
              "prices": {
                "price_minor": 1999,
                "final_price_minor": 1999,
                "sale_price_minor": 1999,
                "currency": "RUB"
              },
              "markings": [
                {
                  "id": 1,
                  "datamatrix_id": 6101,
                  "type": "sgtin",
                  "masked_value": "010460…ABC123",
                  "value_hash": "sha256:example",
                  "state": "accepted",
                  "remote_decision": "accepted",
                  "error_code": null,
                  "error_message": null,
                  "submitted_at": "2026-08-11T09:30:00Z",
                  "verified_at": "2026-08-11T09:31:00Z",
                  "ambiguous_at": null
                }
              ],
              "current_sticker": {
                "id": 3401,
                "kind": "order_sticker",
                "format": "png",
                "width": 580,
                "height": 400,
                "barcode": "WB-900001234",
                "part_a": "123456",
                "part_b": "7890",
                "content_hash": "sha256:sticker-example",
                "content_available": true,
                "is_current": true,
                "fetched_at": "2026-08-11T09:25:00Z",
                "last_printed_at": null,
                "print_count": 0
              },
              "last_error": {
                "code": null,
                "message": null
              },
              "remote_created_at": "2026-08-10T09:00:00Z",
              "seller_date": "2026-08-10",
              "delivery_date": "2026-08-12",
              "confirmed_at": "2026-08-11T09:20:00Z",
              "completed_at": "2026-08-11T10:15:00Z",
              "imported_at": "2026-08-10T09:05:00Z",
              "mapped_at": "2026-08-10T09:06:00Z",
              "reserved_at": "2026-08-11T09:10:00Z",
              "remote_status_checked_at": "2026-08-11T10:15:00Z"
            },
            "batch_matches": [

            ]
          }
        }
      ],
      "created_at": "2026-08-11T08:45:00Z",
      "updated_at": "2026-08-11T10:15:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/send-documents?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/send-documents?page=3",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/send-documents?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 3,
    "path": "https://betawms.ffcdek.ru/api/v2/send-documents",
    "per_page": 20,
    "to": 20,
    "total": 43
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/send-documents

Создать документ отправки

operationIdcreateSendDocuments
РазделДокументы отправок
БезопасностьbearerAuth

Create send document. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/send-documents" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CreateSendDocumentRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateSendDocumentPayload Creates an open shipment document. Warehouse and delivery services must be active and visible in tenant scope.
data.document_date да string:date "2026-08-11"
data.warehouse_id да integer:int64 min: 1 42
data.delivery_service_ids да array<integer:int64> minItems: 1
data.delivery_service_ids[] нет integer:int64 min: 1 17
data.comment нет string | null maxLength: 1000 "Wildberries shipment 740"

Примеры запроса

default

{
  "data": {
    "document_date": "2026-08-11",
    "warehouse_id": 42,
    "delivery_service_ids": [
      17
    ],
    "comment": "Wildberries shipment 740"
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да SendDocument Outbound shipment document with its complete operational composition. Collection relations are empty unless requested through include; the item endpoint always loads them.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет integer:int64 | null 1
data.status нет object | null
data.status.id да integer:int64 1
data.status.name да string "Открыт"
data.status.color нет string | null "#2457c5"
data.status.background_color нет string | null "#eaf0ff"
data.warehouse_id нет integer:int64 | null min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Warehouse Sofia"
data.warehouse.type_id нет integer:int64 | null 2
data.warehouse.parent_id нет integer:int64 | null min: 1 41
data.delivery_service_ids да array<integer:int64>
data.delivery_service_ids[] нет integer:int64 min: 1 17
data.delivery_services да array<SendDocumentDeliveryService>
data.delivery_services[] нет SendDocumentDeliveryService
data.delivery_services[].id да integer:int64 min: 1 17
data.delivery_services[].name да string "Wildberries FBS"
data.delivery_services[].status_id да integer:int64 1
data.delivery_services[].external_id нет string | null "wb-fbs"
data.delivery_services[].source_id нет string | null "wildberries"
data.delivery_services[].delivery_type нет string | null "pickup_point"
data.delivery_services[].is_courier да boolean false
data.document_date нет string:date | null "2026-08-11"
data.closed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.comment нет string | null "Wildberries shipment 740"
data.order_count да integer:int64 min: 0 1
data.processing да SendDocumentProcessing
data.processing.mode нет string | null "standard"
data.processing.pipeline да array<string>
data.processing.pipeline[] нет string "assignment"
data.processing.state нет string | null "open"
data.processing.batch_profile_id нет integer:int64 | null min: 1 31
data.processing.batch_profile нет object | null
data.processing.batch_profile.id да integer:int64 min: 1 31
data.processing.batch_profile.name да string "Standard packing"
data.processing.batch_profile.processing_mode нет string | null "standard"
data.processing.composition_frozen_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.processing.batch_started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.processing.batch_completed_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.wildberries да SendDocumentWildberries Wildberries document-level state and safe supply/QR/sticker artifact metadata. Binary label content and encrypted provider payloads are not returned.
data.wildberries.fulfillment_state нет string | null "delivered"
data.wildberries.error_message нет string | null ""
data.wildberries.processed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.wildberries.supplies да array<object>
data.wildberries.supplies[] нет object
data.orders да array<SendDocumentOrderAssignment>
data.orders[] нет SendDocumentOrderAssignment
data.orders[].assignment_id да integer:int64 min: 1 8801
data.orders[].marked_at нет string:date-time | null "2026-08-11T09:30:00Z"
data.orders[].created_at нет string:date-time | null "2026-08-11T09:00:00Z"
data.orders[].updated_at нет string:date-time | null "2026-08-11T09:30:00Z"
data.orders[].order да object | null Complete order snapshot embedded into a shipment document. Marketplace and batch objects preserve provider-specific fields.
data.orders[].order.id да integer:int64 min: 1 49060
data.orders[].order.external_id нет string | null "WB-900001234"
data.orders[].order.status_id нет integer:int64 | null 20
data.orders[].order.warehouse_id нет integer:int64 | null min: 1 42
data.orders[].order.shop_id нет integer:int64 | null min: 1 12
data.orders[].order.order_date нет string:date | null "2026-08-10"
data.orders[].order.send_date нет string:date | null "2026-08-11"
data.orders[].order.amounts нет object | null
data.orders[].order.amounts.shipping_price нет number:float | null 8.6
data.orders[].order.amounts.shipping_cost нет number:float | null 0
data.orders[].order.amounts.sum нет number:float | null 39.98
data.orders[].order.amounts.cod_sum нет number:float | null 48.58
data.orders[].order.contact нет object | null
data.orders[].order.contact.first_name нет string | null "Ivan"
data.orders[].order.contact.middle_name нет string | null "Ivanovich"
data.orders[].order.contact.last_name нет string | null "Petrov"
data.orders[].order.contact.phone нет string | null "+359888123456"
data.orders[].order.contact.email нет string:email | null "customer@example.com"
data.orders[].order.contact.country_id нет integer:int64 | null min: 1 100
data.orders[].order.contact.city_id нет integer:int64 | null min: 1 200
data.orders[].order.contact.postcode нет string | null "1000"
data.orders[].order.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.orders[].order.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.orders[].order.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.orders[].order.delivery нет object | null
data.orders[].order.delivery.service_id нет integer:int64 | null min: 1 1
data.orders[].order.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.orders[].order.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.orders[].order.delivery.status нет string | null "created"
data.orders[].order.delivery.track_number нет string | null "CDEK-123456789"
data.orders[].order.delivery.pickup_point_id нет string | null "SOFIA-01"
data.orders[].order.delivery.source_id нет string | null "cdek-15"
data.orders[].order.delivery.tariff_code нет integer:int64 | null 136
data.orders[].order.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.orders[].order.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.orders[].order.delivery.delivery_date нет string:date | null "2026-07-16"
data.orders[].order.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.orders[].order.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.orders[].order.comments нет object | null
data.orders[].order.comments.delivery_service_text нет string | null "Call before delivery"
data.orders[].order.comments.inner_text нет string | null "VIP customer"
data.orders[].order.offers да array<SendDocumentOrderLine>
data.orders[].order.offers[] нет SendDocumentOrderLine
data.orders[].order.offers[].id да integer:int64 min: 1 7001
data.orders[].order.offers[].product_id нет integer:int64 | null min: 1 1201
data.orders[].order.offers[].quantity нет number:float | null 2
data.orders[].order.offers[].estimated_price нет number:float | null 19.5
data.orders[].order.offers[].price нет number:float | null 19.99
data.orders[].order.offers[].expiration_date нет string:date | null "2027-01-15"
data.orders[].order.offers[].batch нет string | null "LOT-2026"
data.orders[].order.offers[].operation_user_id нет integer:int64 | null min: 1 9
data.orders[].order.offers[].product нет object | null
data.orders[].order.offers[].product.id да integer:int64 min: 1 1201
data.orders[].order.offers[].product.external_id нет string | null "EXT-10045"
data.orders[].order.offers[].product.domain_id нет integer:int64 | null min: 1 3
data.orders[].order.offers[].product.shop_id нет integer:int64 | null min: 1 12
data.orders[].order.offers[].product.status_id нет enum:int64 | null enum: 1, 2, 3 1 - active; 2 - disabled; 3 - deleted. 1
data.orders[].order.offers[].product.type_id нет integer:int64 | null 1
data.orders[].order.offers[].product.name да string "Coffee 250g"
data.orders[].order.offers[].product.article нет string | null "ART-001245"
data.orders[].order.offers[].product.sku нет string | null "SKU-001245"
data.orders[].order.offers[].product.price нет number:float | null 19.99
data.orders[].order.offers[].product.estimated_price нет number:float | null 21.5
data.orders[].order.offers[].product.image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data.orders[].order.offers[].product.dimensions да Dimensions
data.orders[].order.offers[].product.weight да Weight
data.orders[].order.offers[].product.datamatrix_required да boolean true
data.orders[].order.offers[].product.expiration_required да boolean true
data.orders[].order.offers[].product.comment нет string | null "Keep dry"
data.orders[].order.offers[].product.description нет string | null "Ground coffee package"
data.orders[].order.offers[].product.barcodes да array<ProductBarcode>
data.orders[].order.offers[].product.package да object
data.orders[].order.offers[].product.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].product.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].reservation нет object | null Reservation totals for one order line.
data.orders[].order.offers[].reservation.required_qty да number:float 3
data.orders[].order.offers[].reservation.reserved_qty да number:float 1
data.orders[].order.offers[].reservation.unreserved_qty да number:float 2
data.orders[].order.offers[].reservation.missing_qty да number:float 2
data.orders[].order.offers[].reservation.status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.orders[].order.offers[].reservation_items нет array<OrderReservationItem>
data.orders[].order.offers[].reservation_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.orders[].order.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes да array<DataMatrix>
data.orders[].order.datamatrix_codes[] нет DataMatrix Код DataMatrix для маркированного товара.
data.orders[].order.datamatrix_codes[].id да integer:int64 readOnly min: 1 1001
data.orders[].order.datamatrix_codes[].created_at нет string:date | null readOnly Stored code upload date; date precision. "2026-10-19"
data.orders[].order.datamatrix_codes[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes[].domain_id нет integer:int64 | null min: 1 3
data.orders[].order.datamatrix_codes[].warehouse_id нет integer:int64 | null min: 1 42
data.orders[].order.datamatrix_codes[].status_id нет enum:int64 | null enum: 0, 1, 2 0 - Imported and available for future warehouse operations. 1 - Reserved or attached by an operational document. 2 - Used by an outbound or completed operation. 0
data.orders[].order.datamatrix_codes[].acceptance_id нет integer:int64 | null min: 1 5101
data.orders[].order.datamatrix_codes[].order_id нет integer:int64 | null min: 1 8101
data.orders[].order.datamatrix_codes[].product_id нет integer:int64 | null min: 1 1201
data.orders[].order.datamatrix_codes[].barcode нет string | null maxLength: 14 "04601234567890"
data.orders[].order.datamatrix_codes[].short_code нет string | null maxLength: 14 "ABC123"
data.orders[].order.datamatrix_codes[].crypto_tail нет string | null "CRYPTO"
data.orders[].order.datamatrix_codes[].datamatrix нет string | null maxLength: 125 "010460123456789021ABC123"
data.orders[].order.datamatrix_codes[].production_date нет string:date | null "2026-01-15"
data.orders[].order.datamatrix_codes[].expiration_date нет string:date | null "2027-01-15"
data.orders[].order.datamatrix_codes[].batch нет string | null "LOT-2026"
data.orders[].order.datamatrix_codes[].used_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes[].accepted_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data.orders[].order.datamatrix_codes[].shipped_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data.orders[].order.warehouse нет object | null
data.orders[].order.warehouse.id да integer:int64 min: 1 42
data.orders[].order.warehouse.name да string "Warehouse Sofia"
data.orders[].order.warehouse.type_id нет integer:int64 | null 2
data.orders[].order.warehouse.parent_id нет integer:int64 | null min: 1 41
data.orders[].order.shop нет object | null
data.orders[].order.shop.id да integer:int64 min: 1 12
data.orders[].order.shop.name да string "Demo Online Store"
data.orders[].order.shop.status_id нет integer:int64 | null 1
data.orders[].order.company нет object | null
data.orders[].order.company.id да integer:int64 min: 1 7
data.orders[].order.company.name да string "Demo Company"
data.orders[].order.company.legal_name нет string | null "Demo Company Ltd."
data.orders[].order.place нет object | null
data.orders[].order.accumulation_place нет object | null
data.orders[].order.measurements нет object | null
data.orders[].order.settings нет object | null
data.orders[].order.consumables да array<object>
data.orders[].order.consumables[] нет object
data.orders[].order.wildberries нет object | null
data.orders[].order.wildberries.completed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.orders[].order.batch_matches да array<object>
data.orders[].order.batch_matches[] нет object
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 740,
    "domain_id": 3,
    "status_id": 1,
    "status": {
      "id": 1,
      "name": "Открыт",
      "color": "#2457c5",
      "background_color": "#eaf0ff"
    },
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Warehouse Sofia",
      "type_id": 2,
      "parent_id": 41
    },
    "delivery_service_ids": [
      17
    ],
    "delivery_services": [
      {
        "id": 17,
        "name": "Wildberries FBS",
        "status_id": 1,
        "external_id": "wb-fbs",
        "source_id": "wildberries",
        "delivery_type": "pickup_point",
        "is_courier": false
      }
    ],
    "document_date": "2026-08-11",
    "closed_at": "2026-08-11T10:15:00Z",
    "comment": "Wildberries shipment 740",
    "order_count": 1,
    "processing": {
      "mode": "standard",
      "pipeline": [
        "assignment",
        "marking",
        "transfer"
      ],
      "state": "open",
      "batch_profile_id": null,
      "batch_profile": null,
      "composition_frozen_at": null,
      "batch_started_at": null,
      "batch_completed_at": null
    },
    "wildberries": {
      "fulfillment_state": "delivered",
      "error_message": null,
      "processed_at": "2026-08-11T10:15:00Z",
      "supplies": [
        {
          "id": 3201,
          "account_id": 71,
          "external_id": "WB-GI-740",
          "name": "Поставка 740",
          "state": "delivered",
          "state_name": "Доставлена",
          "destination_type": "office",
          "destination_office_id": 507,
          "is_automatic": false,
          "is_b2b": false,
          "cargo_type": "box",
          "cross_border_type": null,
          "order_count": 1,
          "current_qr": {
            "id": 3301,
            "kind": "supply_qr",
            "format": "svg",
            "width": 580,
            "height": 400,
            "barcode": "WB-GI-740",
            "part_a": null,
            "part_b": null,
            "content_hash": "sha256:qr-example",
            "content_available": true,
            "is_current": true,
            "fetched_at": "2026-08-11T09:00:00Z",
            "last_printed_at": null,
            "print_count": 0
          },
          "boxes": [

          ],
          "last_error": {
            "code": null,
            "message": null
          },
          "remote_created_at": "2026-08-11T09:00:00Z",
          "remote_closed_at": null,
          "last_synced_at": "2026-08-11T10:15:00Z",
          "delivered_at": "2026-08-11T10:15:00Z"
        }
      ]
    },
    "orders": [
      {
        "assignment_id": 8801,
        "marked_at": "2026-08-11T09:30:00Z",
        "created_at": "2026-08-11T09:00:00Z",
        "updated_at": "2026-08-11T09:30:00Z",
        "order": {
          "id": 49060,
          "external_id": "WB-900001234",
          "status_id": 20,
          "warehouse_id": 42,
          "shop_id": 12,
          "order_date": "2026-08-10",
          "send_date": "2026-08-11",
          "amounts": {
            "shipping_price": 0,
            "shipping_cost": 0,
            "sum": 39.98,
            "cod_sum": 0
          },
          "contact": {
            "first_name": "Иван",
            "middle_name": null,
            "last_name": "Петров",
            "phone": "+359888123456",
            "email": "customer@example.com",
            "country_id": 100,
            "city_id": 200,
            "postcode": "1000",
            "latitude": 42.6977,
            "longitude": 23.3219,
            "full_address": "Sofia"
          },
          "delivery": {
            "service_id": 17,
            "delivery_type": "pickup_point",
            "is_courier": false,
            "status": "created",
            "track_number": "WB-900001234",
            "pickup_point_id": "WB-SOF-01",
            "source_id": "wildberries",
            "tariff_code": null,
            "additional_services": {
            },
            "label": null,
            "delivery_date": "2026-08-12",
            "delivery_time_start": null,
            "delivery_time_end": null
          },
          "comments": {
            "delivery_service_text": null,
            "inner_text": "Клиентский пример для документа 740"
          },
          "offers": [
            {
              "id": 7001,
              "product_id": 1201,
              "quantity": 2,
              "estimated_price": 19.5,
              "price": 19.99,
              "expiration_date": "2027-01-15",
              "batch": "LOT-2026",
              "operation_user_id": 9,
              "product": {
                "id": 1201,
                "external_id": "EXT-10045",
                "shop_id": 12,
                "domain_id": 3,
                "status_id": 1,
                "type_id": 1,
                "name": "Coffee 250g",
                "article": "ART-001245",
                "sku": "SKU-001245",
                "price": 19.99,
                "estimated_price": 21.5,
                "image_url": null,
                "dimensions": {
                  "x": 105,
                  "y": 200,
                  "z": 32,
                  "unit": "mm"
                },
                "weight": {
                  "value": 250,
                  "unit": "g"
                },
                "datamatrix_required": true,
                "expiration_required": true,
                "comment": null,
                "description": "Ground coffee package",
                "barcodes": [
                  {
                    "barcode": "4601234567890",
                    "is_main": true
                  }
                ],
                "package": {
                  "kind": "unit",
                  "parent_product_id": null,
                  "base_product_id": null,
                  "multiplicity": null,
                  "base_multiplicity": null,
                  "depth": 0
                },
                "created_at": "2026-08-01T09:00:00Z",
                "updated_at": "2026-08-10T09:00:00Z"
              },
              "reservation": {
                "required_qty": 2,
                "reserved_qty": 2,
                "unreserved_qty": 0,
                "missing_qty": 0,
                "status": "reserved"
              },
              "reservation_items": [

              ],
              "created_at": "2026-08-10T09:00:00Z",
              "updated_at": "2026-08-10T09:00:00Z"
            }
          ],
          "datamatrix_codes": [
            {
              "id": 6101,
              "domain_id": 3,
              "warehouse_id": 42,
              "status_id": 1,
              "acceptance_id": 5101,
              "order_id": 49060,
              "product_id": 1201,
              "barcode": "04601234567890",
              "short_code": "ABC123",
              "crypto_tail": "CRYPTO",
              "datamatrix": "010460123456789021ABC123",
              "production_date": "2026-01-15",
              "expiration_date": "2027-01-15",
              "batch": "LOT-2026",
              "created_at": "2026-08-11T09:15:00Z",
              "updated_at": "2026-08-11T09:15:00Z",
              "used_at": null
            }
          ],
          "warehouse": {
            "id": 42,
            "name": "Warehouse Sofia",
            "type_id": 2,
            "parent_id": 41
          },
          "shop": {
            "id": 12,
            "name": "Demo Online Store",
            "status_id": 1
          },
          "company": {
            "id": 7,
            "name": "Demo Company",
            "legal_name": "Demo Company Ltd."
          },
          "place": null,
          "accumulation_place": null,
          "measurements": {
            "places": 1,
            "dimensions": {
              "x": 220,
              "y": 160,
              "z": 120,
              "unit": "mm"
            },
            "weight": {
              "value": 600,
              "unit": "g"
            }
          },
          "settings": {
            "blank_url": null
          },
          "consumables": [

          ],
          "wildberries": {
            "id": 2101,
            "account_id": 71,
            "wb_order_id": "900001234",
            "order_uid": "WB-UID-49060",
            "rid": "WB-RID-49060",
            "product_id": 1201,
            "state": "confirmed",
            "state_name": "Подтверждён",
            "fulfillment_state": "delivered",
            "fulfillment_state_name": "Доставлен",
            "supplier_status": "confirm",
            "wb_status": "sold",
            "supply_id": 3201,
            "external_supply_id": "WB-GI-740",
            "supply_state": "delivered",
            "delivery_type": "fbs",
            "cross_border_type": null,
            "is_b2b": false,
            "wb_warehouse_id": 507,
            "office_id": 507,
            "nm_id": 12345678,
            "chrt_id": 87654321,
            "article": "ART-001245",
            "skus": [
              "4601234567890"
            ],
            "required_meta": [
              "sgtin"
            ],
            "optional_meta": [

            ],
            "meta_state": "accepted",
            "sticker_state": "ready",
            "prices": {
              "price_minor": 1999,
              "final_price_minor": 1999,
              "sale_price_minor": 1999,
              "currency": "RUB"
            },
            "markings": [
              {
                "id": 1,
                "datamatrix_id": 6101,
                "type": "sgtin",
                "masked_value": "010460…ABC123",
                "value_hash": "sha256:example",
                "state": "accepted",
                "remote_decision": "accepted",
                "error_code": null,
                "error_message": null,
                "submitted_at": "2026-08-11T09:30:00Z",
                "verified_at": "2026-08-11T09:31:00Z",
                "ambiguous_at": null
              }
            ],
            "current_sticker": {
              "id": 3401,
              "kind": "order_sticker",
              "format": "png",
              "width": 580,
              "height": 400,
              "barcode": "WB-900001234",
              "part_a": "123456",
              "part_b": "7890",
              "content_hash": "sha256:sticker-example",
              "content_available": true,
              "is_current": true,
              "fetched_at": "2026-08-11T09:25:00Z",
              "last_printed_at": null,
              "print_count": 0
            },
            "last_error": {
              "code": null,
              "message": null
            },
            "remote_created_at": "2026-08-10T09:00:00Z",
            "seller_date": "2026-08-10",
            "delivery_date": "2026-08-12",
            "confirmed_at": "2026-08-11T09:20:00Z",
            "completed_at": "2026-08-11T10:15:00Z",
            "imported_at": "2026-08-10T09:05:00Z",
            "mapped_at": "2026-08-10T09:06:00Z",
            "reserved_at": "2026-08-11T09:10:00Z",
            "remote_status_checked_at": "2026-08-11T10:15:00Z"
          },
          "batch_matches": [

          ]
        }
      }
    ],
    "created_at": "2026-08-11T08:45:00Z",
    "updated_at": "2026-08-11T10:15:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

SendDocumentConflict

The shipment document lifecycle or composition does not allow the requested operation.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

documentStateConflict

{
  "message": "Состав документа уже заморожен.",
  "errors": {
    "send_document": [
      "Состав документа уже заморожен."
    ]
  }
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/send-documents/{id}

Получить документ отправки

operationIdgetSendDocuments
РазделДокументы отправок
БезопасностьbearerAuth

Возвращает один ресурс: send document, если он существует и видим аутентифицированному аккаунту.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/send-documents/740" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Shipment document ID. 740

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да SendDocument Outbound shipment document with its complete operational composition. Collection relations are empty unless requested through include; the item endpoint always loads them.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет integer:int64 | null 1
data.status нет object | null
data.status.id да integer:int64 1
data.status.name да string "Открыт"
data.status.color нет string | null "#2457c5"
data.status.background_color нет string | null "#eaf0ff"
data.warehouse_id нет integer:int64 | null min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Warehouse Sofia"
data.warehouse.type_id нет integer:int64 | null 2
data.warehouse.parent_id нет integer:int64 | null min: 1 41
data.delivery_service_ids да array<integer:int64>
data.delivery_service_ids[] нет integer:int64 min: 1 17
data.delivery_services да array<SendDocumentDeliveryService>
data.delivery_services[] нет SendDocumentDeliveryService
data.delivery_services[].id да integer:int64 min: 1 17
data.delivery_services[].name да string "Wildberries FBS"
data.delivery_services[].status_id да integer:int64 1
data.delivery_services[].external_id нет string | null "wb-fbs"
data.delivery_services[].source_id нет string | null "wildberries"
data.delivery_services[].delivery_type нет string | null "pickup_point"
data.delivery_services[].is_courier да boolean false
data.document_date нет string:date | null "2026-08-11"
data.closed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.comment нет string | null "Wildberries shipment 740"
data.order_count да integer:int64 min: 0 1
data.processing да SendDocumentProcessing
data.processing.mode нет string | null "standard"
data.processing.pipeline да array<string>
data.processing.pipeline[] нет string "assignment"
data.processing.state нет string | null "open"
data.processing.batch_profile_id нет integer:int64 | null min: 1 31
data.processing.batch_profile нет object | null
data.processing.batch_profile.id да integer:int64 min: 1 31
data.processing.batch_profile.name да string "Standard packing"
data.processing.batch_profile.processing_mode нет string | null "standard"
data.processing.composition_frozen_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.processing.batch_started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.processing.batch_completed_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.wildberries да SendDocumentWildberries Wildberries document-level state and safe supply/QR/sticker artifact metadata. Binary label content and encrypted provider payloads are not returned.
data.wildberries.fulfillment_state нет string | null "delivered"
data.wildberries.error_message нет string | null ""
data.wildberries.processed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.wildberries.supplies да array<object>
data.wildberries.supplies[] нет object
data.orders да array<SendDocumentOrderAssignment>
data.orders[] нет SendDocumentOrderAssignment
data.orders[].assignment_id да integer:int64 min: 1 8801
data.orders[].marked_at нет string:date-time | null "2026-08-11T09:30:00Z"
data.orders[].created_at нет string:date-time | null "2026-08-11T09:00:00Z"
data.orders[].updated_at нет string:date-time | null "2026-08-11T09:30:00Z"
data.orders[].order да object | null Complete order snapshot embedded into a shipment document. Marketplace and batch objects preserve provider-specific fields.
data.orders[].order.id да integer:int64 min: 1 49060
data.orders[].order.external_id нет string | null "WB-900001234"
data.orders[].order.status_id нет integer:int64 | null 20
data.orders[].order.warehouse_id нет integer:int64 | null min: 1 42
data.orders[].order.shop_id нет integer:int64 | null min: 1 12
data.orders[].order.order_date нет string:date | null "2026-08-10"
data.orders[].order.send_date нет string:date | null "2026-08-11"
data.orders[].order.amounts нет object | null
data.orders[].order.amounts.shipping_price нет number:float | null 8.6
data.orders[].order.amounts.shipping_cost нет number:float | null 0
data.orders[].order.amounts.sum нет number:float | null 39.98
data.orders[].order.amounts.cod_sum нет number:float | null 48.58
data.orders[].order.contact нет object | null
data.orders[].order.contact.first_name нет string | null "Ivan"
data.orders[].order.contact.middle_name нет string | null "Ivanovich"
data.orders[].order.contact.last_name нет string | null "Petrov"
data.orders[].order.contact.phone нет string | null "+359888123456"
data.orders[].order.contact.email нет string:email | null "customer@example.com"
data.orders[].order.contact.country_id нет integer:int64 | null min: 1 100
data.orders[].order.contact.city_id нет integer:int64 | null min: 1 200
data.orders[].order.contact.postcode нет string | null "1000"
data.orders[].order.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.orders[].order.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.orders[].order.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.orders[].order.delivery нет object | null
data.orders[].order.delivery.service_id нет integer:int64 | null min: 1 1
data.orders[].order.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.orders[].order.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.orders[].order.delivery.status нет string | null "created"
data.orders[].order.delivery.track_number нет string | null "CDEK-123456789"
data.orders[].order.delivery.pickup_point_id нет string | null "SOFIA-01"
data.orders[].order.delivery.source_id нет string | null "cdek-15"
data.orders[].order.delivery.tariff_code нет integer:int64 | null 136
data.orders[].order.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.orders[].order.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.orders[].order.delivery.delivery_date нет string:date | null "2026-07-16"
data.orders[].order.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.orders[].order.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.orders[].order.comments нет object | null
data.orders[].order.comments.delivery_service_text нет string | null "Call before delivery"
data.orders[].order.comments.inner_text нет string | null "VIP customer"
data.orders[].order.offers да array<SendDocumentOrderLine>
data.orders[].order.offers[] нет SendDocumentOrderLine
data.orders[].order.offers[].id да integer:int64 min: 1 7001
data.orders[].order.offers[].product_id нет integer:int64 | null min: 1 1201
data.orders[].order.offers[].quantity нет number:float | null 2
data.orders[].order.offers[].estimated_price нет number:float | null 19.5
data.orders[].order.offers[].price нет number:float | null 19.99
data.orders[].order.offers[].expiration_date нет string:date | null "2027-01-15"
data.orders[].order.offers[].batch нет string | null "LOT-2026"
data.orders[].order.offers[].operation_user_id нет integer:int64 | null min: 1 9
data.orders[].order.offers[].product нет object | null
data.orders[].order.offers[].product.id да integer:int64 min: 1 1201
data.orders[].order.offers[].product.external_id нет string | null "EXT-10045"
data.orders[].order.offers[].product.domain_id нет integer:int64 | null min: 1 3
data.orders[].order.offers[].product.shop_id нет integer:int64 | null min: 1 12
data.orders[].order.offers[].product.status_id нет enum:int64 | null enum: 1, 2, 3 1 - active; 2 - disabled; 3 - deleted. 1
data.orders[].order.offers[].product.type_id нет integer:int64 | null 1
data.orders[].order.offers[].product.name да string "Coffee 250g"
data.orders[].order.offers[].product.article нет string | null "ART-001245"
data.orders[].order.offers[].product.sku нет string | null "SKU-001245"
data.orders[].order.offers[].product.price нет number:float | null 19.99
data.orders[].order.offers[].product.estimated_price нет number:float | null 21.5
data.orders[].order.offers[].product.image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data.orders[].order.offers[].product.dimensions да Dimensions
data.orders[].order.offers[].product.weight да Weight
data.orders[].order.offers[].product.datamatrix_required да boolean true
data.orders[].order.offers[].product.expiration_required да boolean true
data.orders[].order.offers[].product.comment нет string | null "Keep dry"
data.orders[].order.offers[].product.description нет string | null "Ground coffee package"
data.orders[].order.offers[].product.barcodes да array<ProductBarcode>
data.orders[].order.offers[].product.package да object
data.orders[].order.offers[].product.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].product.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].reservation нет object | null Reservation totals for one order line.
data.orders[].order.offers[].reservation.required_qty да number:float 3
data.orders[].order.offers[].reservation.reserved_qty да number:float 1
data.orders[].order.offers[].reservation.unreserved_qty да number:float 2
data.orders[].order.offers[].reservation.missing_qty да number:float 2
data.orders[].order.offers[].reservation.status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.orders[].order.offers[].reservation_items нет array<OrderReservationItem>
data.orders[].order.offers[].reservation_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.orders[].order.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes да array<DataMatrix>
data.orders[].order.datamatrix_codes[] нет DataMatrix Код DataMatrix для маркированного товара.
data.orders[].order.datamatrix_codes[].id да integer:int64 readOnly min: 1 1001
data.orders[].order.datamatrix_codes[].created_at нет string:date | null readOnly Stored code upload date; date precision. "2026-10-19"
data.orders[].order.datamatrix_codes[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes[].domain_id нет integer:int64 | null min: 1 3
data.orders[].order.datamatrix_codes[].warehouse_id нет integer:int64 | null min: 1 42
data.orders[].order.datamatrix_codes[].status_id нет enum:int64 | null enum: 0, 1, 2 0 - Imported and available for future warehouse operations. 1 - Reserved or attached by an operational document. 2 - Used by an outbound or completed operation. 0
data.orders[].order.datamatrix_codes[].acceptance_id нет integer:int64 | null min: 1 5101
data.orders[].order.datamatrix_codes[].order_id нет integer:int64 | null min: 1 8101
data.orders[].order.datamatrix_codes[].product_id нет integer:int64 | null min: 1 1201
data.orders[].order.datamatrix_codes[].barcode нет string | null maxLength: 14 "04601234567890"
data.orders[].order.datamatrix_codes[].short_code нет string | null maxLength: 14 "ABC123"
data.orders[].order.datamatrix_codes[].crypto_tail нет string | null "CRYPTO"
data.orders[].order.datamatrix_codes[].datamatrix нет string | null maxLength: 125 "010460123456789021ABC123"
data.orders[].order.datamatrix_codes[].production_date нет string:date | null "2026-01-15"
data.orders[].order.datamatrix_codes[].expiration_date нет string:date | null "2027-01-15"
data.orders[].order.datamatrix_codes[].batch нет string | null "LOT-2026"
data.orders[].order.datamatrix_codes[].used_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes[].accepted_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data.orders[].order.datamatrix_codes[].shipped_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data.orders[].order.warehouse нет object | null
data.orders[].order.warehouse.id да integer:int64 min: 1 42
data.orders[].order.warehouse.name да string "Warehouse Sofia"
data.orders[].order.warehouse.type_id нет integer:int64 | null 2
data.orders[].order.warehouse.parent_id нет integer:int64 | null min: 1 41
data.orders[].order.shop нет object | null
data.orders[].order.shop.id да integer:int64 min: 1 12
data.orders[].order.shop.name да string "Demo Online Store"
data.orders[].order.shop.status_id нет integer:int64 | null 1
data.orders[].order.company нет object | null
data.orders[].order.company.id да integer:int64 min: 1 7
data.orders[].order.company.name да string "Demo Company"
data.orders[].order.company.legal_name нет string | null "Demo Company Ltd."
data.orders[].order.place нет object | null
data.orders[].order.accumulation_place нет object | null
data.orders[].order.measurements нет object | null
data.orders[].order.settings нет object | null
data.orders[].order.consumables да array<object>
data.orders[].order.consumables[] нет object
data.orders[].order.wildberries нет object | null
data.orders[].order.wildberries.completed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.orders[].order.batch_matches да array<object>
data.orders[].order.batch_matches[] нет object
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 740,
    "domain_id": 3,
    "status_id": 1,
    "status": {
      "id": 1,
      "name": "Открыт",
      "color": "#2457c5",
      "background_color": "#eaf0ff"
    },
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Warehouse Sofia",
      "type_id": 2,
      "parent_id": 41
    },
    "delivery_service_ids": [
      17
    ],
    "delivery_services": [
      {
        "id": 17,
        "name": "Wildberries FBS",
        "status_id": 1,
        "external_id": "wb-fbs",
        "source_id": "wildberries",
        "delivery_type": "pickup_point",
        "is_courier": false
      }
    ],
    "document_date": "2026-08-11",
    "closed_at": "2026-08-11T10:15:00Z",
    "comment": "Wildberries shipment 740",
    "order_count": 1,
    "processing": {
      "mode": "standard",
      "pipeline": [
        "assignment",
        "marking",
        "transfer"
      ],
      "state": "open",
      "batch_profile_id": null,
      "batch_profile": null,
      "composition_frozen_at": null,
      "batch_started_at": null,
      "batch_completed_at": null
    },
    "wildberries": {
      "fulfillment_state": "delivered",
      "error_message": null,
      "processed_at": "2026-08-11T10:15:00Z",
      "supplies": [
        {
          "id": 3201,
          "account_id": 71,
          "external_id": "WB-GI-740",
          "name": "Поставка 740",
          "state": "delivered",
          "state_name": "Доставлена",
          "destination_type": "office",
          "destination_office_id": 507,
          "is_automatic": false,
          "is_b2b": false,
          "cargo_type": "box",
          "cross_border_type": null,
          "order_count": 1,
          "current_qr": {
            "id": 3301,
            "kind": "supply_qr",
            "format": "svg",
            "width": 580,
            "height": 400,
            "barcode": "WB-GI-740",
            "part_a": null,
            "part_b": null,
            "content_hash": "sha256:qr-example",
            "content_available": true,
            "is_current": true,
            "fetched_at": "2026-08-11T09:00:00Z",
            "last_printed_at": null,
            "print_count": 0
          },
          "boxes": [

          ],
          "last_error": {
            "code": null,
            "message": null
          },
          "remote_created_at": "2026-08-11T09:00:00Z",
          "remote_closed_at": null,
          "last_synced_at": "2026-08-11T10:15:00Z",
          "delivered_at": "2026-08-11T10:15:00Z"
        }
      ]
    },
    "orders": [
      {
        "assignment_id": 8801,
        "marked_at": "2026-08-11T09:30:00Z",
        "created_at": "2026-08-11T09:00:00Z",
        "updated_at": "2026-08-11T09:30:00Z",
        "order": {
          "id": 49060,
          "external_id": "WB-900001234",
          "status_id": 20,
          "warehouse_id": 42,
          "shop_id": 12,
          "order_date": "2026-08-10",
          "send_date": "2026-08-11",
          "amounts": {
            "shipping_price": 0,
            "shipping_cost": 0,
            "sum": 39.98,
            "cod_sum": 0
          },
          "contact": {
            "first_name": "Иван",
            "middle_name": null,
            "last_name": "Петров",
            "phone": "+359888123456",
            "email": "customer@example.com",
            "country_id": 100,
            "city_id": 200,
            "postcode": "1000",
            "latitude": 42.6977,
            "longitude": 23.3219,
            "full_address": "Sofia"
          },
          "delivery": {
            "service_id": 17,
            "delivery_type": "pickup_point",
            "is_courier": false,
            "status": "created",
            "track_number": "WB-900001234",
            "pickup_point_id": "WB-SOF-01",
            "source_id": "wildberries",
            "tariff_code": null,
            "additional_services": {
            },
            "label": null,
            "delivery_date": "2026-08-12",
            "delivery_time_start": null,
            "delivery_time_end": null
          },
          "comments": {
            "delivery_service_text": null,
            "inner_text": "Клиентский пример для документа 740"
          },
          "offers": [
            {
              "id": 7001,
              "product_id": 1201,
              "quantity": 2,
              "estimated_price": 19.5,
              "price": 19.99,
              "expiration_date": "2027-01-15",
              "batch": "LOT-2026",
              "operation_user_id": 9,
              "product": {
                "id": 1201,
                "external_id": "EXT-10045",
                "shop_id": 12,
                "domain_id": 3,
                "status_id": 1,
                "type_id": 1,
                "name": "Coffee 250g",
                "article": "ART-001245",
                "sku": "SKU-001245",
                "price": 19.99,
                "estimated_price": 21.5,
                "image_url": null,
                "dimensions": {
                  "x": 105,
                  "y": 200,
                  "z": 32,
                  "unit": "mm"
                },
                "weight": {
                  "value": 250,
                  "unit": "g"
                },
                "datamatrix_required": true,
                "expiration_required": true,
                "comment": null,
                "description": "Ground coffee package",
                "barcodes": [
                  {
                    "barcode": "4601234567890",
                    "is_main": true
                  }
                ],
                "package": {
                  "kind": "unit",
                  "parent_product_id": null,
                  "base_product_id": null,
                  "multiplicity": null,
                  "base_multiplicity": null,
                  "depth": 0
                },
                "created_at": "2026-08-01T09:00:00Z",
                "updated_at": "2026-08-10T09:00:00Z"
              },
              "reservation": {
                "required_qty": 2,
                "reserved_qty": 2,
                "unreserved_qty": 0,
                "missing_qty": 0,
                "status": "reserved"
              },
              "reservation_items": [

              ],
              "created_at": "2026-08-10T09:00:00Z",
              "updated_at": "2026-08-10T09:00:00Z"
            }
          ],
          "datamatrix_codes": [
            {
              "id": 6101,
              "domain_id": 3,
              "warehouse_id": 42,
              "status_id": 1,
              "acceptance_id": 5101,
              "order_id": 49060,
              "product_id": 1201,
              "barcode": "04601234567890",
              "short_code": "ABC123",
              "crypto_tail": "CRYPTO",
              "datamatrix": "010460123456789021ABC123",
              "production_date": "2026-01-15",
              "expiration_date": "2027-01-15",
              "batch": "LOT-2026",
              "created_at": "2026-08-11T09:15:00Z",
              "updated_at": "2026-08-11T09:15:00Z",
              "used_at": null
            }
          ],
          "warehouse": {
            "id": 42,
            "name": "Warehouse Sofia",
            "type_id": 2,
            "parent_id": 41
          },
          "shop": {
            "id": 12,
            "name": "Demo Online Store",
            "status_id": 1
          },
          "company": {
            "id": 7,
            "name": "Demo Company",
            "legal_name": "Demo Company Ltd."
          },
          "place": null,
          "accumulation_place": null,
          "measurements": {
            "places": 1,
            "dimensions": {
              "x": 220,
              "y": 160,
              "z": 120,
              "unit": "mm"
            },
            "weight": {
              "value": 600,
              "unit": "g"
            }
          },
          "settings": {
            "blank_url": null
          },
          "consumables": [

          ],
          "wildberries": {
            "id": 2101,
            "account_id": 71,
            "wb_order_id": "900001234",
            "order_uid": "WB-UID-49060",
            "rid": "WB-RID-49060",
            "product_id": 1201,
            "state": "confirmed",
            "state_name": "Подтверждён",
            "fulfillment_state": "delivered",
            "fulfillment_state_name": "Доставлен",
            "supplier_status": "confirm",
            "wb_status": "sold",
            "supply_id": 3201,
            "external_supply_id": "WB-GI-740",
            "supply_state": "delivered",
            "delivery_type": "fbs",
            "cross_border_type": null,
            "is_b2b": false,
            "wb_warehouse_id": 507,
            "office_id": 507,
            "nm_id": 12345678,
            "chrt_id": 87654321,
            "article": "ART-001245",
            "skus": [
              "4601234567890"
            ],
            "required_meta": [
              "sgtin"
            ],
            "optional_meta": [

            ],
            "meta_state": "accepted",
            "sticker_state": "ready",
            "prices": {
              "price_minor": 1999,
              "final_price_minor": 1999,
              "sale_price_minor": 1999,
              "currency": "RUB"
            },
            "markings": [
              {
                "id": 1,
                "datamatrix_id": 6101,
                "type": "sgtin",
                "masked_value": "010460…ABC123",
                "value_hash": "sha256:example",
                "state": "accepted",
                "remote_decision": "accepted",
                "error_code": null,
                "error_message": null,
                "submitted_at": "2026-08-11T09:30:00Z",
                "verified_at": "2026-08-11T09:31:00Z",
                "ambiguous_at": null
              }
            ],
            "current_sticker": {
              "id": 3401,
              "kind": "order_sticker",
              "format": "png",
              "width": 580,
              "height": 400,
              "barcode": "WB-900001234",
              "part_a": "123456",
              "part_b": "7890",
              "content_hash": "sha256:sticker-example",
              "content_available": true,
              "is_current": true,
              "fetched_at": "2026-08-11T09:25:00Z",
              "last_printed_at": null,
              "print_count": 0
            },
            "last_error": {
              "code": null,
              "message": null
            },
            "remote_created_at": "2026-08-10T09:00:00Z",
            "seller_date": "2026-08-10",
            "delivery_date": "2026-08-12",
            "confirmed_at": "2026-08-11T09:20:00Z",
            "completed_at": "2026-08-11T10:15:00Z",
            "imported_at": "2026-08-10T09:05:00Z",
            "mapped_at": "2026-08-10T09:06:00Z",
            "reserved_at": "2026-08-11T09:10:00Z",
            "remote_status_checked_at": "2026-08-11T10:15:00Z"
          },
          "batch_matches": [

          ]
        }
      }
    ],
    "created_at": "2026-08-11T08:45:00Z",
    "updated_at": "2026-08-11T10:15:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/send-documents/{id}

Обновить документ отправки

operationIdreplaceSendDocuments
РазделДокументы отправок
БезопасностьbearerAuth

Update send document. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/send-documents/740" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Shipment document ID. 740
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

ReplaceSendDocumentRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да ReplaceSendDocumentPayload Shipment document update. Omitted fields remain unchanged; status transitions follow the administrative lifecycle rules.
data.status_id нет integer:int64 | null 2
data.document_date нет string:date | null "2026-08-11"
data.warehouse_id нет integer:int64 | null min: 1 42
data.delivery_service_ids нет array<integer:int64> minItems: 1
data.delivery_service_ids[] нет integer:int64 min: 1 17
data.comment нет string | null maxLength: 1000 "Передано перевозчику"

Примеры запроса

default

{
  "data": {
    "status_id": 2,
    "comment": "Передано перевозчику"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да SendDocument Outbound shipment document with its complete operational composition. Collection relations are empty unless requested through include; the item endpoint always loads them.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет integer:int64 | null 1
data.status нет object | null
data.status.id да integer:int64 1
data.status.name да string "Открыт"
data.status.color нет string | null "#2457c5"
data.status.background_color нет string | null "#eaf0ff"
data.warehouse_id нет integer:int64 | null min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Warehouse Sofia"
data.warehouse.type_id нет integer:int64 | null 2
data.warehouse.parent_id нет integer:int64 | null min: 1 41
data.delivery_service_ids да array<integer:int64>
data.delivery_service_ids[] нет integer:int64 min: 1 17
data.delivery_services да array<SendDocumentDeliveryService>
data.delivery_services[] нет SendDocumentDeliveryService
data.delivery_services[].id да integer:int64 min: 1 17
data.delivery_services[].name да string "Wildberries FBS"
data.delivery_services[].status_id да integer:int64 1
data.delivery_services[].external_id нет string | null "wb-fbs"
data.delivery_services[].source_id нет string | null "wildberries"
data.delivery_services[].delivery_type нет string | null "pickup_point"
data.delivery_services[].is_courier да boolean false
data.document_date нет string:date | null "2026-08-11"
data.closed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.comment нет string | null "Wildberries shipment 740"
data.order_count да integer:int64 min: 0 1
data.processing да SendDocumentProcessing
data.processing.mode нет string | null "standard"
data.processing.pipeline да array<string>
data.processing.pipeline[] нет string "assignment"
data.processing.state нет string | null "open"
data.processing.batch_profile_id нет integer:int64 | null min: 1 31
data.processing.batch_profile нет object | null
data.processing.batch_profile.id да integer:int64 min: 1 31
data.processing.batch_profile.name да string "Standard packing"
data.processing.batch_profile.processing_mode нет string | null "standard"
data.processing.composition_frozen_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.processing.batch_started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.processing.batch_completed_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.wildberries да SendDocumentWildberries Wildberries document-level state and safe supply/QR/sticker artifact metadata. Binary label content and encrypted provider payloads are not returned.
data.wildberries.fulfillment_state нет string | null "delivered"
data.wildberries.error_message нет string | null ""
data.wildberries.processed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.wildberries.supplies да array<object>
data.wildberries.supplies[] нет object
data.orders да array<SendDocumentOrderAssignment>
data.orders[] нет SendDocumentOrderAssignment
data.orders[].assignment_id да integer:int64 min: 1 8801
data.orders[].marked_at нет string:date-time | null "2026-08-11T09:30:00Z"
data.orders[].created_at нет string:date-time | null "2026-08-11T09:00:00Z"
data.orders[].updated_at нет string:date-time | null "2026-08-11T09:30:00Z"
data.orders[].order да object | null Complete order snapshot embedded into a shipment document. Marketplace and batch objects preserve provider-specific fields.
data.orders[].order.id да integer:int64 min: 1 49060
data.orders[].order.external_id нет string | null "WB-900001234"
data.orders[].order.status_id нет integer:int64 | null 20
data.orders[].order.warehouse_id нет integer:int64 | null min: 1 42
data.orders[].order.shop_id нет integer:int64 | null min: 1 12
data.orders[].order.order_date нет string:date | null "2026-08-10"
data.orders[].order.send_date нет string:date | null "2026-08-11"
data.orders[].order.amounts нет object | null
data.orders[].order.amounts.shipping_price нет number:float | null 8.6
data.orders[].order.amounts.shipping_cost нет number:float | null 0
data.orders[].order.amounts.sum нет number:float | null 39.98
data.orders[].order.amounts.cod_sum нет number:float | null 48.58
data.orders[].order.contact нет object | null
data.orders[].order.contact.first_name нет string | null "Ivan"
data.orders[].order.contact.middle_name нет string | null "Ivanovich"
data.orders[].order.contact.last_name нет string | null "Petrov"
data.orders[].order.contact.phone нет string | null "+359888123456"
data.orders[].order.contact.email нет string:email | null "customer@example.com"
data.orders[].order.contact.country_id нет integer:int64 | null min: 1 100
data.orders[].order.contact.city_id нет integer:int64 | null min: 1 200
data.orders[].order.contact.postcode нет string | null "1000"
data.orders[].order.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.orders[].order.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.orders[].order.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.orders[].order.delivery нет object | null
data.orders[].order.delivery.service_id нет integer:int64 | null min: 1 1
data.orders[].order.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.orders[].order.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.orders[].order.delivery.status нет string | null "created"
data.orders[].order.delivery.track_number нет string | null "CDEK-123456789"
data.orders[].order.delivery.pickup_point_id нет string | null "SOFIA-01"
data.orders[].order.delivery.source_id нет string | null "cdek-15"
data.orders[].order.delivery.tariff_code нет integer:int64 | null 136
data.orders[].order.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.orders[].order.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.orders[].order.delivery.delivery_date нет string:date | null "2026-07-16"
data.orders[].order.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.orders[].order.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.orders[].order.comments нет object | null
data.orders[].order.comments.delivery_service_text нет string | null "Call before delivery"
data.orders[].order.comments.inner_text нет string | null "VIP customer"
data.orders[].order.offers да array<SendDocumentOrderLine>
data.orders[].order.offers[] нет SendDocumentOrderLine
data.orders[].order.offers[].id да integer:int64 min: 1 7001
data.orders[].order.offers[].product_id нет integer:int64 | null min: 1 1201
data.orders[].order.offers[].quantity нет number:float | null 2
data.orders[].order.offers[].estimated_price нет number:float | null 19.5
data.orders[].order.offers[].price нет number:float | null 19.99
data.orders[].order.offers[].expiration_date нет string:date | null "2027-01-15"
data.orders[].order.offers[].batch нет string | null "LOT-2026"
data.orders[].order.offers[].operation_user_id нет integer:int64 | null min: 1 9
data.orders[].order.offers[].product нет object | null
data.orders[].order.offers[].product.id да integer:int64 min: 1 1201
data.orders[].order.offers[].product.external_id нет string | null "EXT-10045"
data.orders[].order.offers[].product.domain_id нет integer:int64 | null min: 1 3
data.orders[].order.offers[].product.shop_id нет integer:int64 | null min: 1 12
data.orders[].order.offers[].product.status_id нет enum:int64 | null enum: 1, 2, 3 1 - active; 2 - disabled; 3 - deleted. 1
data.orders[].order.offers[].product.type_id нет integer:int64 | null 1
data.orders[].order.offers[].product.name да string "Coffee 250g"
data.orders[].order.offers[].product.article нет string | null "ART-001245"
data.orders[].order.offers[].product.sku нет string | null "SKU-001245"
data.orders[].order.offers[].product.price нет number:float | null 19.99
data.orders[].order.offers[].product.estimated_price нет number:float | null 21.5
data.orders[].order.offers[].product.image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data.orders[].order.offers[].product.dimensions да Dimensions
data.orders[].order.offers[].product.weight да Weight
data.orders[].order.offers[].product.datamatrix_required да boolean true
data.orders[].order.offers[].product.expiration_required да boolean true
data.orders[].order.offers[].product.comment нет string | null "Keep dry"
data.orders[].order.offers[].product.description нет string | null "Ground coffee package"
data.orders[].order.offers[].product.barcodes да array<ProductBarcode>
data.orders[].order.offers[].product.package да object
data.orders[].order.offers[].product.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].product.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].reservation нет object | null Reservation totals for one order line.
data.orders[].order.offers[].reservation.required_qty да number:float 3
data.orders[].order.offers[].reservation.reserved_qty да number:float 1
data.orders[].order.offers[].reservation.unreserved_qty да number:float 2
data.orders[].order.offers[].reservation.missing_qty да number:float 2
data.orders[].order.offers[].reservation.status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.orders[].order.offers[].reservation_items нет array<OrderReservationItem>
data.orders[].order.offers[].reservation_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.orders[].order.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes да array<DataMatrix>
data.orders[].order.datamatrix_codes[] нет DataMatrix Код DataMatrix для маркированного товара.
data.orders[].order.datamatrix_codes[].id да integer:int64 readOnly min: 1 1001
data.orders[].order.datamatrix_codes[].created_at нет string:date | null readOnly Stored code upload date; date precision. "2026-10-19"
data.orders[].order.datamatrix_codes[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes[].domain_id нет integer:int64 | null min: 1 3
data.orders[].order.datamatrix_codes[].warehouse_id нет integer:int64 | null min: 1 42
data.orders[].order.datamatrix_codes[].status_id нет enum:int64 | null enum: 0, 1, 2 0 - Imported and available for future warehouse operations. 1 - Reserved or attached by an operational document. 2 - Used by an outbound or completed operation. 0
data.orders[].order.datamatrix_codes[].acceptance_id нет integer:int64 | null min: 1 5101
data.orders[].order.datamatrix_codes[].order_id нет integer:int64 | null min: 1 8101
data.orders[].order.datamatrix_codes[].product_id нет integer:int64 | null min: 1 1201
data.orders[].order.datamatrix_codes[].barcode нет string | null maxLength: 14 "04601234567890"
data.orders[].order.datamatrix_codes[].short_code нет string | null maxLength: 14 "ABC123"
data.orders[].order.datamatrix_codes[].crypto_tail нет string | null "CRYPTO"
data.orders[].order.datamatrix_codes[].datamatrix нет string | null maxLength: 125 "010460123456789021ABC123"
data.orders[].order.datamatrix_codes[].production_date нет string:date | null "2026-01-15"
data.orders[].order.datamatrix_codes[].expiration_date нет string:date | null "2027-01-15"
data.orders[].order.datamatrix_codes[].batch нет string | null "LOT-2026"
data.orders[].order.datamatrix_codes[].used_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes[].accepted_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data.orders[].order.datamatrix_codes[].shipped_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data.orders[].order.warehouse нет object | null
data.orders[].order.warehouse.id да integer:int64 min: 1 42
data.orders[].order.warehouse.name да string "Warehouse Sofia"
data.orders[].order.warehouse.type_id нет integer:int64 | null 2
data.orders[].order.warehouse.parent_id нет integer:int64 | null min: 1 41
data.orders[].order.shop нет object | null
data.orders[].order.shop.id да integer:int64 min: 1 12
data.orders[].order.shop.name да string "Demo Online Store"
data.orders[].order.shop.status_id нет integer:int64 | null 1
data.orders[].order.company нет object | null
data.orders[].order.company.id да integer:int64 min: 1 7
data.orders[].order.company.name да string "Demo Company"
data.orders[].order.company.legal_name нет string | null "Demo Company Ltd."
data.orders[].order.place нет object | null
data.orders[].order.accumulation_place нет object | null
data.orders[].order.measurements нет object | null
data.orders[].order.settings нет object | null
data.orders[].order.consumables да array<object>
data.orders[].order.consumables[] нет object
data.orders[].order.wildberries нет object | null
data.orders[].order.wildberries.completed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.orders[].order.batch_matches да array<object>
data.orders[].order.batch_matches[] нет object
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 740,
    "domain_id": 3,
    "status_id": 1,
    "status": {
      "id": 1,
      "name": "Открыт",
      "color": "#2457c5",
      "background_color": "#eaf0ff"
    },
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Warehouse Sofia",
      "type_id": 2,
      "parent_id": 41
    },
    "delivery_service_ids": [
      17
    ],
    "delivery_services": [
      {
        "id": 17,
        "name": "Wildberries FBS",
        "status_id": 1,
        "external_id": "wb-fbs",
        "source_id": "wildberries",
        "delivery_type": "pickup_point",
        "is_courier": false
      }
    ],
    "document_date": "2026-08-11",
    "closed_at": "2026-08-11T10:15:00Z",
    "comment": "Wildberries shipment 740",
    "order_count": 1,
    "processing": {
      "mode": "standard",
      "pipeline": [
        "assignment",
        "marking",
        "transfer"
      ],
      "state": "open",
      "batch_profile_id": null,
      "batch_profile": null,
      "composition_frozen_at": null,
      "batch_started_at": null,
      "batch_completed_at": null
    },
    "wildberries": {
      "fulfillment_state": "delivered",
      "error_message": null,
      "processed_at": "2026-08-11T10:15:00Z",
      "supplies": [
        {
          "id": 3201,
          "account_id": 71,
          "external_id": "WB-GI-740",
          "name": "Поставка 740",
          "state": "delivered",
          "state_name": "Доставлена",
          "destination_type": "office",
          "destination_office_id": 507,
          "is_automatic": false,
          "is_b2b": false,
          "cargo_type": "box",
          "cross_border_type": null,
          "order_count": 1,
          "current_qr": {
            "id": 3301,
            "kind": "supply_qr",
            "format": "svg",
            "width": 580,
            "height": 400,
            "barcode": "WB-GI-740",
            "part_a": null,
            "part_b": null,
            "content_hash": "sha256:qr-example",
            "content_available": true,
            "is_current": true,
            "fetched_at": "2026-08-11T09:00:00Z",
            "last_printed_at": null,
            "print_count": 0
          },
          "boxes": [

          ],
          "last_error": {
            "code": null,
            "message": null
          },
          "remote_created_at": "2026-08-11T09:00:00Z",
          "remote_closed_at": null,
          "last_synced_at": "2026-08-11T10:15:00Z",
          "delivered_at": "2026-08-11T10:15:00Z"
        }
      ]
    },
    "orders": [
      {
        "assignment_id": 8801,
        "marked_at": "2026-08-11T09:30:00Z",
        "created_at": "2026-08-11T09:00:00Z",
        "updated_at": "2026-08-11T09:30:00Z",
        "order": {
          "id": 49060,
          "external_id": "WB-900001234",
          "status_id": 20,
          "warehouse_id": 42,
          "shop_id": 12,
          "order_date": "2026-08-10",
          "send_date": "2026-08-11",
          "amounts": {
            "shipping_price": 0,
            "shipping_cost": 0,
            "sum": 39.98,
            "cod_sum": 0
          },
          "contact": {
            "first_name": "Иван",
            "middle_name": null,
            "last_name": "Петров",
            "phone": "+359888123456",
            "email": "customer@example.com",
            "country_id": 100,
            "city_id": 200,
            "postcode": "1000",
            "latitude": 42.6977,
            "longitude": 23.3219,
            "full_address": "Sofia"
          },
          "delivery": {
            "service_id": 17,
            "delivery_type": "pickup_point",
            "is_courier": false,
            "status": "created",
            "track_number": "WB-900001234",
            "pickup_point_id": "WB-SOF-01",
            "source_id": "wildberries",
            "tariff_code": null,
            "additional_services": {
            },
            "label": null,
            "delivery_date": "2026-08-12",
            "delivery_time_start": null,
            "delivery_time_end": null
          },
          "comments": {
            "delivery_service_text": null,
            "inner_text": "Клиентский пример для документа 740"
          },
          "offers": [
            {
              "id": 7001,
              "product_id": 1201,
              "quantity": 2,
              "estimated_price": 19.5,
              "price": 19.99,
              "expiration_date": "2027-01-15",
              "batch": "LOT-2026",
              "operation_user_id": 9,
              "product": {
                "id": 1201,
                "external_id": "EXT-10045",
                "shop_id": 12,
                "domain_id": 3,
                "status_id": 1,
                "type_id": 1,
                "name": "Coffee 250g",
                "article": "ART-001245",
                "sku": "SKU-001245",
                "price": 19.99,
                "estimated_price": 21.5,
                "image_url": null,
                "dimensions": {
                  "x": 105,
                  "y": 200,
                  "z": 32,
                  "unit": "mm"
                },
                "weight": {
                  "value": 250,
                  "unit": "g"
                },
                "datamatrix_required": true,
                "expiration_required": true,
                "comment": null,
                "description": "Ground coffee package",
                "barcodes": [
                  {
                    "barcode": "4601234567890",
                    "is_main": true
                  }
                ],
                "package": {
                  "kind": "unit",
                  "parent_product_id": null,
                  "base_product_id": null,
                  "multiplicity": null,
                  "base_multiplicity": null,
                  "depth": 0
                },
                "created_at": "2026-08-01T09:00:00Z",
                "updated_at": "2026-08-10T09:00:00Z"
              },
              "reservation": {
                "required_qty": 2,
                "reserved_qty": 2,
                "unreserved_qty": 0,
                "missing_qty": 0,
                "status": "reserved"
              },
              "reservation_items": [

              ],
              "created_at": "2026-08-10T09:00:00Z",
              "updated_at": "2026-08-10T09:00:00Z"
            }
          ],
          "datamatrix_codes": [
            {
              "id": 6101,
              "domain_id": 3,
              "warehouse_id": 42,
              "status_id": 1,
              "acceptance_id": 5101,
              "order_id": 49060,
              "product_id": 1201,
              "barcode": "04601234567890",
              "short_code": "ABC123",
              "crypto_tail": "CRYPTO",
              "datamatrix": "010460123456789021ABC123",
              "production_date": "2026-01-15",
              "expiration_date": "2027-01-15",
              "batch": "LOT-2026",
              "created_at": "2026-08-11T09:15:00Z",
              "updated_at": "2026-08-11T09:15:00Z",
              "used_at": null
            }
          ],
          "warehouse": {
            "id": 42,
            "name": "Warehouse Sofia",
            "type_id": 2,
            "parent_id": 41
          },
          "shop": {
            "id": 12,
            "name": "Demo Online Store",
            "status_id": 1
          },
          "company": {
            "id": 7,
            "name": "Demo Company",
            "legal_name": "Demo Company Ltd."
          },
          "place": null,
          "accumulation_place": null,
          "measurements": {
            "places": 1,
            "dimensions": {
              "x": 220,
              "y": 160,
              "z": 120,
              "unit": "mm"
            },
            "weight": {
              "value": 600,
              "unit": "g"
            }
          },
          "settings": {
            "blank_url": null
          },
          "consumables": [

          ],
          "wildberries": {
            "id": 2101,
            "account_id": 71,
            "wb_order_id": "900001234",
            "order_uid": "WB-UID-49060",
            "rid": "WB-RID-49060",
            "product_id": 1201,
            "state": "confirmed",
            "state_name": "Подтверждён",
            "fulfillment_state": "delivered",
            "fulfillment_state_name": "Доставлен",
            "supplier_status": "confirm",
            "wb_status": "sold",
            "supply_id": 3201,
            "external_supply_id": "WB-GI-740",
            "supply_state": "delivered",
            "delivery_type": "fbs",
            "cross_border_type": null,
            "is_b2b": false,
            "wb_warehouse_id": 507,
            "office_id": 507,
            "nm_id": 12345678,
            "chrt_id": 87654321,
            "article": "ART-001245",
            "skus": [
              "4601234567890"
            ],
            "required_meta": [
              "sgtin"
            ],
            "optional_meta": [

            ],
            "meta_state": "accepted",
            "sticker_state": "ready",
            "prices": {
              "price_minor": 1999,
              "final_price_minor": 1999,
              "sale_price_minor": 1999,
              "currency": "RUB"
            },
            "markings": [
              {
                "id": 1,
                "datamatrix_id": 6101,
                "type": "sgtin",
                "masked_value": "010460…ABC123",
                "value_hash": "sha256:example",
                "state": "accepted",
                "remote_decision": "accepted",
                "error_code": null,
                "error_message": null,
                "submitted_at": "2026-08-11T09:30:00Z",
                "verified_at": "2026-08-11T09:31:00Z",
                "ambiguous_at": null
              }
            ],
            "current_sticker": {
              "id": 3401,
              "kind": "order_sticker",
              "format": "png",
              "width": 580,
              "height": 400,
              "barcode": "WB-900001234",
              "part_a": "123456",
              "part_b": "7890",
              "content_hash": "sha256:sticker-example",
              "content_available": true,
              "is_current": true,
              "fetched_at": "2026-08-11T09:25:00Z",
              "last_printed_at": null,
              "print_count": 0
            },
            "last_error": {
              "code": null,
              "message": null
            },
            "remote_created_at": "2026-08-10T09:00:00Z",
            "seller_date": "2026-08-10",
            "delivery_date": "2026-08-12",
            "confirmed_at": "2026-08-11T09:20:00Z",
            "completed_at": "2026-08-11T10:15:00Z",
            "imported_at": "2026-08-10T09:05:00Z",
            "mapped_at": "2026-08-10T09:06:00Z",
            "reserved_at": "2026-08-11T09:10:00Z",
            "remote_status_checked_at": "2026-08-11T10:15:00Z"
          },
          "batch_matches": [

          ]
        }
      }
    ],
    "created_at": "2026-08-11T08:45:00Z",
    "updated_at": "2026-08-11T10:15:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

SendDocumentConflict

The shipment document lifecycle or composition does not allow the requested operation.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

documentStateConflict

{
  "message": "Состав документа уже заморожен.",
  "errors": {
    "send_document": [
      "Состав документа уже заморожен."
    ]
  }
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/send-documents/{id}

Обновить документ отправки

operationIdpatchSendDocuments
РазделДокументы отправок
БезопасностьbearerAuth

Update send document. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/send-documents/740" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Shipment document ID. 740
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

PatchSendDocumentRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да PatchSendDocumentPayload Partial shipment document update. Omitted fields remain unchanged.
data.status_id нет integer:int64 | null 2
data.document_date нет string:date | null "2026-08-11"
data.warehouse_id нет integer:int64 | null min: 1 42
data.delivery_service_ids нет array<integer:int64> minItems: 1
data.delivery_service_ids[] нет integer:int64 min: 1 17
data.comment нет string | null maxLength: 1000 "Передано перевозчику"

Примеры запроса

default

{
  "data": {
    "comment": "Передано перевозчику"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да SendDocument Outbound shipment document with its complete operational composition. Collection relations are empty unless requested through include; the item endpoint always loads them.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет integer:int64 | null 1
data.status нет object | null
data.status.id да integer:int64 1
data.status.name да string "Открыт"
data.status.color нет string | null "#2457c5"
data.status.background_color нет string | null "#eaf0ff"
data.warehouse_id нет integer:int64 | null min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Warehouse Sofia"
data.warehouse.type_id нет integer:int64 | null 2
data.warehouse.parent_id нет integer:int64 | null min: 1 41
data.delivery_service_ids да array<integer:int64>
data.delivery_service_ids[] нет integer:int64 min: 1 17
data.delivery_services да array<SendDocumentDeliveryService>
data.delivery_services[] нет SendDocumentDeliveryService
data.delivery_services[].id да integer:int64 min: 1 17
data.delivery_services[].name да string "Wildberries FBS"
data.delivery_services[].status_id да integer:int64 1
data.delivery_services[].external_id нет string | null "wb-fbs"
data.delivery_services[].source_id нет string | null "wildberries"
data.delivery_services[].delivery_type нет string | null "pickup_point"
data.delivery_services[].is_courier да boolean false
data.document_date нет string:date | null "2026-08-11"
data.closed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.comment нет string | null "Wildberries shipment 740"
data.order_count да integer:int64 min: 0 1
data.processing да SendDocumentProcessing
data.processing.mode нет string | null "standard"
data.processing.pipeline да array<string>
data.processing.pipeline[] нет string "assignment"
data.processing.state нет string | null "open"
data.processing.batch_profile_id нет integer:int64 | null min: 1 31
data.processing.batch_profile нет object | null
data.processing.batch_profile.id да integer:int64 min: 1 31
data.processing.batch_profile.name да string "Standard packing"
data.processing.batch_profile.processing_mode нет string | null "standard"
data.processing.composition_frozen_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.processing.batch_started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.processing.batch_completed_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.wildberries да SendDocumentWildberries Wildberries document-level state and safe supply/QR/sticker artifact metadata. Binary label content and encrypted provider payloads are not returned.
data.wildberries.fulfillment_state нет string | null "delivered"
data.wildberries.error_message нет string | null ""
data.wildberries.processed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.wildberries.supplies да array<object>
data.wildberries.supplies[] нет object
data.orders да array<SendDocumentOrderAssignment>
data.orders[] нет SendDocumentOrderAssignment
data.orders[].assignment_id да integer:int64 min: 1 8801
data.orders[].marked_at нет string:date-time | null "2026-08-11T09:30:00Z"
data.orders[].created_at нет string:date-time | null "2026-08-11T09:00:00Z"
data.orders[].updated_at нет string:date-time | null "2026-08-11T09:30:00Z"
data.orders[].order да object | null Complete order snapshot embedded into a shipment document. Marketplace and batch objects preserve provider-specific fields.
data.orders[].order.id да integer:int64 min: 1 49060
data.orders[].order.external_id нет string | null "WB-900001234"
data.orders[].order.status_id нет integer:int64 | null 20
data.orders[].order.warehouse_id нет integer:int64 | null min: 1 42
data.orders[].order.shop_id нет integer:int64 | null min: 1 12
data.orders[].order.order_date нет string:date | null "2026-08-10"
data.orders[].order.send_date нет string:date | null "2026-08-11"
data.orders[].order.amounts нет object | null
data.orders[].order.amounts.shipping_price нет number:float | null 8.6
data.orders[].order.amounts.shipping_cost нет number:float | null 0
data.orders[].order.amounts.sum нет number:float | null 39.98
data.orders[].order.amounts.cod_sum нет number:float | null 48.58
data.orders[].order.contact нет object | null
data.orders[].order.contact.first_name нет string | null "Ivan"
data.orders[].order.contact.middle_name нет string | null "Ivanovich"
data.orders[].order.contact.last_name нет string | null "Petrov"
data.orders[].order.contact.phone нет string | null "+359888123456"
data.orders[].order.contact.email нет string:email | null "customer@example.com"
data.orders[].order.contact.country_id нет integer:int64 | null min: 1 100
data.orders[].order.contact.city_id нет integer:int64 | null min: 1 200
data.orders[].order.contact.postcode нет string | null "1000"
data.orders[].order.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.orders[].order.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.orders[].order.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.orders[].order.delivery нет object | null
data.orders[].order.delivery.service_id нет integer:int64 | null min: 1 1
data.orders[].order.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.orders[].order.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.orders[].order.delivery.status нет string | null "created"
data.orders[].order.delivery.track_number нет string | null "CDEK-123456789"
data.orders[].order.delivery.pickup_point_id нет string | null "SOFIA-01"
data.orders[].order.delivery.source_id нет string | null "cdek-15"
data.orders[].order.delivery.tariff_code нет integer:int64 | null 136
data.orders[].order.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.orders[].order.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.orders[].order.delivery.delivery_date нет string:date | null "2026-07-16"
data.orders[].order.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.orders[].order.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.orders[].order.comments нет object | null
data.orders[].order.comments.delivery_service_text нет string | null "Call before delivery"
data.orders[].order.comments.inner_text нет string | null "VIP customer"
data.orders[].order.offers да array<SendDocumentOrderLine>
data.orders[].order.offers[] нет SendDocumentOrderLine
data.orders[].order.offers[].id да integer:int64 min: 1 7001
data.orders[].order.offers[].product_id нет integer:int64 | null min: 1 1201
data.orders[].order.offers[].quantity нет number:float | null 2
data.orders[].order.offers[].estimated_price нет number:float | null 19.5
data.orders[].order.offers[].price нет number:float | null 19.99
data.orders[].order.offers[].expiration_date нет string:date | null "2027-01-15"
data.orders[].order.offers[].batch нет string | null "LOT-2026"
data.orders[].order.offers[].operation_user_id нет integer:int64 | null min: 1 9
data.orders[].order.offers[].product нет object | null
data.orders[].order.offers[].product.id да integer:int64 min: 1 1201
data.orders[].order.offers[].product.external_id нет string | null "EXT-10045"
data.orders[].order.offers[].product.domain_id нет integer:int64 | null min: 1 3
data.orders[].order.offers[].product.shop_id нет integer:int64 | null min: 1 12
data.orders[].order.offers[].product.status_id нет enum:int64 | null enum: 1, 2, 3 1 - active; 2 - disabled; 3 - deleted. 1
data.orders[].order.offers[].product.type_id нет integer:int64 | null 1
data.orders[].order.offers[].product.name да string "Coffee 250g"
data.orders[].order.offers[].product.article нет string | null "ART-001245"
data.orders[].order.offers[].product.sku нет string | null "SKU-001245"
data.orders[].order.offers[].product.price нет number:float | null 19.99
data.orders[].order.offers[].product.estimated_price нет number:float | null 21.5
data.orders[].order.offers[].product.image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data.orders[].order.offers[].product.dimensions да Dimensions
data.orders[].order.offers[].product.weight да Weight
data.orders[].order.offers[].product.datamatrix_required да boolean true
data.orders[].order.offers[].product.expiration_required да boolean true
data.orders[].order.offers[].product.comment нет string | null "Keep dry"
data.orders[].order.offers[].product.description нет string | null "Ground coffee package"
data.orders[].order.offers[].product.barcodes да array<ProductBarcode>
data.orders[].order.offers[].product.package да object
data.orders[].order.offers[].product.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].product.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].reservation нет object | null Reservation totals for one order line.
data.orders[].order.offers[].reservation.required_qty да number:float 3
data.orders[].order.offers[].reservation.reserved_qty да number:float 1
data.orders[].order.offers[].reservation.unreserved_qty да number:float 2
data.orders[].order.offers[].reservation.missing_qty да number:float 2
data.orders[].order.offers[].reservation.status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.orders[].order.offers[].reservation_items нет array<OrderReservationItem>
data.orders[].order.offers[].reservation_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.orders[].order.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes да array<DataMatrix>
data.orders[].order.datamatrix_codes[] нет DataMatrix Код DataMatrix для маркированного товара.
data.orders[].order.datamatrix_codes[].id да integer:int64 readOnly min: 1 1001
data.orders[].order.datamatrix_codes[].created_at нет string:date | null readOnly Stored code upload date; date precision. "2026-10-19"
data.orders[].order.datamatrix_codes[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes[].domain_id нет integer:int64 | null min: 1 3
data.orders[].order.datamatrix_codes[].warehouse_id нет integer:int64 | null min: 1 42
data.orders[].order.datamatrix_codes[].status_id нет enum:int64 | null enum: 0, 1, 2 0 - Imported and available for future warehouse operations. 1 - Reserved or attached by an operational document. 2 - Used by an outbound or completed operation. 0
data.orders[].order.datamatrix_codes[].acceptance_id нет integer:int64 | null min: 1 5101
data.orders[].order.datamatrix_codes[].order_id нет integer:int64 | null min: 1 8101
data.orders[].order.datamatrix_codes[].product_id нет integer:int64 | null min: 1 1201
data.orders[].order.datamatrix_codes[].barcode нет string | null maxLength: 14 "04601234567890"
data.orders[].order.datamatrix_codes[].short_code нет string | null maxLength: 14 "ABC123"
data.orders[].order.datamatrix_codes[].crypto_tail нет string | null "CRYPTO"
data.orders[].order.datamatrix_codes[].datamatrix нет string | null maxLength: 125 "010460123456789021ABC123"
data.orders[].order.datamatrix_codes[].production_date нет string:date | null "2026-01-15"
data.orders[].order.datamatrix_codes[].expiration_date нет string:date | null "2027-01-15"
data.orders[].order.datamatrix_codes[].batch нет string | null "LOT-2026"
data.orders[].order.datamatrix_codes[].used_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes[].accepted_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data.orders[].order.datamatrix_codes[].shipped_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data.orders[].order.warehouse нет object | null
data.orders[].order.warehouse.id да integer:int64 min: 1 42
data.orders[].order.warehouse.name да string "Warehouse Sofia"
data.orders[].order.warehouse.type_id нет integer:int64 | null 2
data.orders[].order.warehouse.parent_id нет integer:int64 | null min: 1 41
data.orders[].order.shop нет object | null
data.orders[].order.shop.id да integer:int64 min: 1 12
data.orders[].order.shop.name да string "Demo Online Store"
data.orders[].order.shop.status_id нет integer:int64 | null 1
data.orders[].order.company нет object | null
data.orders[].order.company.id да integer:int64 min: 1 7
data.orders[].order.company.name да string "Demo Company"
data.orders[].order.company.legal_name нет string | null "Demo Company Ltd."
data.orders[].order.place нет object | null
data.orders[].order.accumulation_place нет object | null
data.orders[].order.measurements нет object | null
data.orders[].order.settings нет object | null
data.orders[].order.consumables да array<object>
data.orders[].order.consumables[] нет object
data.orders[].order.wildberries нет object | null
data.orders[].order.wildberries.completed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.orders[].order.batch_matches да array<object>
data.orders[].order.batch_matches[] нет object
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 740,
    "domain_id": 3,
    "status_id": 1,
    "status": {
      "id": 1,
      "name": "Открыт",
      "color": "#2457c5",
      "background_color": "#eaf0ff"
    },
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Warehouse Sofia",
      "type_id": 2,
      "parent_id": 41
    },
    "delivery_service_ids": [
      17
    ],
    "delivery_services": [
      {
        "id": 17,
        "name": "Wildberries FBS",
        "status_id": 1,
        "external_id": "wb-fbs",
        "source_id": "wildberries",
        "delivery_type": "pickup_point",
        "is_courier": false
      }
    ],
    "document_date": "2026-08-11",
    "closed_at": "2026-08-11T10:15:00Z",
    "comment": "Wildberries shipment 740",
    "order_count": 1,
    "processing": {
      "mode": "standard",
      "pipeline": [
        "assignment",
        "marking",
        "transfer"
      ],
      "state": "open",
      "batch_profile_id": null,
      "batch_profile": null,
      "composition_frozen_at": null,
      "batch_started_at": null,
      "batch_completed_at": null
    },
    "wildberries": {
      "fulfillment_state": "delivered",
      "error_message": null,
      "processed_at": "2026-08-11T10:15:00Z",
      "supplies": [
        {
          "id": 3201,
          "account_id": 71,
          "external_id": "WB-GI-740",
          "name": "Поставка 740",
          "state": "delivered",
          "state_name": "Доставлена",
          "destination_type": "office",
          "destination_office_id": 507,
          "is_automatic": false,
          "is_b2b": false,
          "cargo_type": "box",
          "cross_border_type": null,
          "order_count": 1,
          "current_qr": {
            "id": 3301,
            "kind": "supply_qr",
            "format": "svg",
            "width": 580,
            "height": 400,
            "barcode": "WB-GI-740",
            "part_a": null,
            "part_b": null,
            "content_hash": "sha256:qr-example",
            "content_available": true,
            "is_current": true,
            "fetched_at": "2026-08-11T09:00:00Z",
            "last_printed_at": null,
            "print_count": 0
          },
          "boxes": [

          ],
          "last_error": {
            "code": null,
            "message": null
          },
          "remote_created_at": "2026-08-11T09:00:00Z",
          "remote_closed_at": null,
          "last_synced_at": "2026-08-11T10:15:00Z",
          "delivered_at": "2026-08-11T10:15:00Z"
        }
      ]
    },
    "orders": [
      {
        "assignment_id": 8801,
        "marked_at": "2026-08-11T09:30:00Z",
        "created_at": "2026-08-11T09:00:00Z",
        "updated_at": "2026-08-11T09:30:00Z",
        "order": {
          "id": 49060,
          "external_id": "WB-900001234",
          "status_id": 20,
          "warehouse_id": 42,
          "shop_id": 12,
          "order_date": "2026-08-10",
          "send_date": "2026-08-11",
          "amounts": {
            "shipping_price": 0,
            "shipping_cost": 0,
            "sum": 39.98,
            "cod_sum": 0
          },
          "contact": {
            "first_name": "Иван",
            "middle_name": null,
            "last_name": "Петров",
            "phone": "+359888123456",
            "email": "customer@example.com",
            "country_id": 100,
            "city_id": 200,
            "postcode": "1000",
            "latitude": 42.6977,
            "longitude": 23.3219,
            "full_address": "Sofia"
          },
          "delivery": {
            "service_id": 17,
            "delivery_type": "pickup_point",
            "is_courier": false,
            "status": "created",
            "track_number": "WB-900001234",
            "pickup_point_id": "WB-SOF-01",
            "source_id": "wildberries",
            "tariff_code": null,
            "additional_services": {
            },
            "label": null,
            "delivery_date": "2026-08-12",
            "delivery_time_start": null,
            "delivery_time_end": null
          },
          "comments": {
            "delivery_service_text": null,
            "inner_text": "Клиентский пример для документа 740"
          },
          "offers": [
            {
              "id": 7001,
              "product_id": 1201,
              "quantity": 2,
              "estimated_price": 19.5,
              "price": 19.99,
              "expiration_date": "2027-01-15",
              "batch": "LOT-2026",
              "operation_user_id": 9,
              "product": {
                "id": 1201,
                "external_id": "EXT-10045",
                "shop_id": 12,
                "domain_id": 3,
                "status_id": 1,
                "type_id": 1,
                "name": "Coffee 250g",
                "article": "ART-001245",
                "sku": "SKU-001245",
                "price": 19.99,
                "estimated_price": 21.5,
                "image_url": null,
                "dimensions": {
                  "x": 105,
                  "y": 200,
                  "z": 32,
                  "unit": "mm"
                },
                "weight": {
                  "value": 250,
                  "unit": "g"
                },
                "datamatrix_required": true,
                "expiration_required": true,
                "comment": null,
                "description": "Ground coffee package",
                "barcodes": [
                  {
                    "barcode": "4601234567890",
                    "is_main": true
                  }
                ],
                "package": {
                  "kind": "unit",
                  "parent_product_id": null,
                  "base_product_id": null,
                  "multiplicity": null,
                  "base_multiplicity": null,
                  "depth": 0
                },
                "created_at": "2026-08-01T09:00:00Z",
                "updated_at": "2026-08-10T09:00:00Z"
              },
              "reservation": {
                "required_qty": 2,
                "reserved_qty": 2,
                "unreserved_qty": 0,
                "missing_qty": 0,
                "status": "reserved"
              },
              "reservation_items": [

              ],
              "created_at": "2026-08-10T09:00:00Z",
              "updated_at": "2026-08-10T09:00:00Z"
            }
          ],
          "datamatrix_codes": [
            {
              "id": 6101,
              "domain_id": 3,
              "warehouse_id": 42,
              "status_id": 1,
              "acceptance_id": 5101,
              "order_id": 49060,
              "product_id": 1201,
              "barcode": "04601234567890",
              "short_code": "ABC123",
              "crypto_tail": "CRYPTO",
              "datamatrix": "010460123456789021ABC123",
              "production_date": "2026-01-15",
              "expiration_date": "2027-01-15",
              "batch": "LOT-2026",
              "created_at": "2026-08-11T09:15:00Z",
              "updated_at": "2026-08-11T09:15:00Z",
              "used_at": null
            }
          ],
          "warehouse": {
            "id": 42,
            "name": "Warehouse Sofia",
            "type_id": 2,
            "parent_id": 41
          },
          "shop": {
            "id": 12,
            "name": "Demo Online Store",
            "status_id": 1
          },
          "company": {
            "id": 7,
            "name": "Demo Company",
            "legal_name": "Demo Company Ltd."
          },
          "place": null,
          "accumulation_place": null,
          "measurements": {
            "places": 1,
            "dimensions": {
              "x": 220,
              "y": 160,
              "z": 120,
              "unit": "mm"
            },
            "weight": {
              "value": 600,
              "unit": "g"
            }
          },
          "settings": {
            "blank_url": null
          },
          "consumables": [

          ],
          "wildberries": {
            "id": 2101,
            "account_id": 71,
            "wb_order_id": "900001234",
            "order_uid": "WB-UID-49060",
            "rid": "WB-RID-49060",
            "product_id": 1201,
            "state": "confirmed",
            "state_name": "Подтверждён",
            "fulfillment_state": "delivered",
            "fulfillment_state_name": "Доставлен",
            "supplier_status": "confirm",
            "wb_status": "sold",
            "supply_id": 3201,
            "external_supply_id": "WB-GI-740",
            "supply_state": "delivered",
            "delivery_type": "fbs",
            "cross_border_type": null,
            "is_b2b": false,
            "wb_warehouse_id": 507,
            "office_id": 507,
            "nm_id": 12345678,
            "chrt_id": 87654321,
            "article": "ART-001245",
            "skus": [
              "4601234567890"
            ],
            "required_meta": [
              "sgtin"
            ],
            "optional_meta": [

            ],
            "meta_state": "accepted",
            "sticker_state": "ready",
            "prices": {
              "price_minor": 1999,
              "final_price_minor": 1999,
              "sale_price_minor": 1999,
              "currency": "RUB"
            },
            "markings": [
              {
                "id": 1,
                "datamatrix_id": 6101,
                "type": "sgtin",
                "masked_value": "010460…ABC123",
                "value_hash": "sha256:example",
                "state": "accepted",
                "remote_decision": "accepted",
                "error_code": null,
                "error_message": null,
                "submitted_at": "2026-08-11T09:30:00Z",
                "verified_at": "2026-08-11T09:31:00Z",
                "ambiguous_at": null
              }
            ],
            "current_sticker": {
              "id": 3401,
              "kind": "order_sticker",
              "format": "png",
              "width": 580,
              "height": 400,
              "barcode": "WB-900001234",
              "part_a": "123456",
              "part_b": "7890",
              "content_hash": "sha256:sticker-example",
              "content_available": true,
              "is_current": true,
              "fetched_at": "2026-08-11T09:25:00Z",
              "last_printed_at": null,
              "print_count": 0
            },
            "last_error": {
              "code": null,
              "message": null
            },
            "remote_created_at": "2026-08-10T09:00:00Z",
            "seller_date": "2026-08-10",
            "delivery_date": "2026-08-12",
            "confirmed_at": "2026-08-11T09:20:00Z",
            "completed_at": "2026-08-11T10:15:00Z",
            "imported_at": "2026-08-10T09:05:00Z",
            "mapped_at": "2026-08-10T09:06:00Z",
            "reserved_at": "2026-08-11T09:10:00Z",
            "remote_status_checked_at": "2026-08-11T10:15:00Z"
          },
          "batch_matches": [

          ]
        }
      }
    ],
    "created_at": "2026-08-11T08:45:00Z",
    "updated_at": "2026-08-11T10:15:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

SendDocumentConflict

The shipment document lifecycle or composition does not allow the requested operation.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

documentStateConflict

{
  "message": "Состав документа уже заморожен.",
  "errors": {
    "send_document": [
      "Состав документа уже заморожен."
    ]
  }
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/send-documents/{id}

Удалить документ отправки

operationIddeleteSendDocuments
РазделДокументы отправок
БезопасностьbearerAuth

Deletes the resource when the authenticated account has permission and the current lifecycle state allows deletion. If deletion is blocked by related records or document state, the API returns a validation error.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/send-documents/740" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Shipment document ID. 740
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object | null
meta да object
meta.api_version да enum enum: v2 "v2"
meta.deleted да boolean true
meta.id да integer:int64 min: 1 1001

Примеры ответа

success

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true,
    "id": 740
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

SendDocumentConflict

The shipment document lifecycle or composition does not allow the requested operation.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

documentStateConflict

{
  "message": "Состав документа уже заморожен.",
  "errors": {
    "send_document": [
      "Состав документа уже заморожен."
    ]
  }
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/send-documents/{id}/events

Получить журнал событий документа отправки

operationIdlistSendDocumentsEvents
РазделДокументы отправок
БезопасностьbearerAuth

Возвращает send documents, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/send-documents/740/events" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Shipment document ID. 740
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, happened_at, created_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
category query нет string form true Фильтр по category с точным совпадением. Этот фильтр также можно передать как filter[category], если это поддерживает Laravel query adapter. "document"
state query нет string form true Фильтр по state с точным совпадением. Этот фильтр также можно передать как filter[state], если это поддерживает Laravel query adapter. "ready"
direction query нет string form true Фильтр по direction с точным совпадением. Этот фильтр также можно передать как filter[direction], если это поддерживает Laravel query adapter. "outbound"
order_id query нет integer:int64 form true min: 1 Фильтр по order_id с точным совпадением. Этот фильтр также можно передать как filter[order_id], если это поддерживает Laravel query adapter. 1
product_id query нет integer:int64 form true min: 1 Фильтр по product_id с точным совпадением. Этот фильтр также можно передать как filter[product_id], если это поддерживает Laravel query adapter. 1201
event query нет string form true Фильтр по event с частичным текстовым совпадением. Этот фильтр также можно передать как filter[event], если это поддерживает Laravel query adapter. "order_attached"
error_message query нет string form true Фильтр по error_message с частичным текстовым совпадением. Этот фильтр также можно передать как filter[error_message], если это поддерживает Laravel query adapter. "Remote service rejected the shipment"
happened_at_from query нет string:date form true Нижняя включительная граница даты для happened_at. Этот фильтр также можно передать как filter[happened_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
happened_at_to query нет string:date form true Верхняя включительная граница даты для happened_at. Этот фильтр также можно передать как filter[happened_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<SendDocumentAuditEvent>
data[] нет SendDocumentAuditEvent Append-only audit event for a shipment document.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].category нет string | null "document"
data[].event да string "order_attached"
data[].state нет string | null "open"
data[].direction нет string | null "outbound"
data[].happened_at нет string:date-time | null "2026-08-11T09:00:00Z"
data[].actor_id нет integer:int64 | null min: 1 15
data[].actor_type нет string | null "user"
data[].request_id нет string | null "req-740-attach"
data[].order_id нет integer:int64 | null min: 1 49060
data[].product_id нет integer:int64 | null min: 1 1201
data[].entity_type нет string | null "shipment"
data[].entity_id нет integer:int64 | null min: 1 740
data[].context да object
data[].error_code нет string | null ""
data[].error_message нет string | null ""
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 9901,
      "category": "document",
      "event": "order_attached",
      "state": "open",
      "direction": "outbound",
      "happened_at": "2026-08-11T09:00:00Z",
      "actor_id": 15,
      "actor_type": "user",
      "request_id": "req-740-attach",
      "order_id": 49060,
      "product_id": null,
      "entity_type": "shipment",
      "entity_id": 740,
      "context": {
        "document_id": 740,
        "order_id": 49060
      },
      "error_code": null,
      "error_message": null,
      "created_at": "2026-08-11T09:00:00Z",
      "updated_at": "2026-08-11T09:00:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/send-documents/740/events?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/send-documents/740/events?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/send-documents/740/events?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/send-documents/740/events",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/send-documents/{id}/orders

Добавить заказы в документ отправки

operationIdcreateSendDocumentsOrders
РазделДокументы отправок
БезопасностьbearerAuth

Attach orders to send document. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/send-documents/740/orders" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Shipment document ID. 740
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

AttachSendDocumentOrdersRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да AttachSendDocumentOrdersPayload Orders to attach. Every order must be visible to the caller and compatible with the document warehouse, delivery services and lifecycle state.
data.order_ids да array<integer:int64> minItems: 1
maxItems: 100
data.order_ids[] нет integer:int64 min: 1 49060

Примеры запроса

default

{
  "data": {
    "order_ids": [
      49060
    ]
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да SendDocument Outbound shipment document with its complete operational composition. Collection relations are empty unless requested through include; the item endpoint always loads them.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет integer:int64 | null 1
data.status нет object | null
data.status.id да integer:int64 1
data.status.name да string "Открыт"
data.status.color нет string | null "#2457c5"
data.status.background_color нет string | null "#eaf0ff"
data.warehouse_id нет integer:int64 | null min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Warehouse Sofia"
data.warehouse.type_id нет integer:int64 | null 2
data.warehouse.parent_id нет integer:int64 | null min: 1 41
data.delivery_service_ids да array<integer:int64>
data.delivery_service_ids[] нет integer:int64 min: 1 17
data.delivery_services да array<SendDocumentDeliveryService>
data.delivery_services[] нет SendDocumentDeliveryService
data.delivery_services[].id да integer:int64 min: 1 17
data.delivery_services[].name да string "Wildberries FBS"
data.delivery_services[].status_id да integer:int64 1
data.delivery_services[].external_id нет string | null "wb-fbs"
data.delivery_services[].source_id нет string | null "wildberries"
data.delivery_services[].delivery_type нет string | null "pickup_point"
data.delivery_services[].is_courier да boolean false
data.document_date нет string:date | null "2026-08-11"
data.closed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.comment нет string | null "Wildberries shipment 740"
data.order_count да integer:int64 min: 0 1
data.processing да SendDocumentProcessing
data.processing.mode нет string | null "standard"
data.processing.pipeline да array<string>
data.processing.pipeline[] нет string "assignment"
data.processing.state нет string | null "open"
data.processing.batch_profile_id нет integer:int64 | null min: 1 31
data.processing.batch_profile нет object | null
data.processing.batch_profile.id да integer:int64 min: 1 31
data.processing.batch_profile.name да string "Standard packing"
data.processing.batch_profile.processing_mode нет string | null "standard"
data.processing.composition_frozen_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.processing.batch_started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.processing.batch_completed_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.wildberries да SendDocumentWildberries Wildberries document-level state and safe supply/QR/sticker artifact metadata. Binary label content and encrypted provider payloads are not returned.
data.wildberries.fulfillment_state нет string | null "delivered"
data.wildberries.error_message нет string | null ""
data.wildberries.processed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.wildberries.supplies да array<object>
data.wildberries.supplies[] нет object
data.orders да array<SendDocumentOrderAssignment>
data.orders[] нет SendDocumentOrderAssignment
data.orders[].assignment_id да integer:int64 min: 1 8801
data.orders[].marked_at нет string:date-time | null "2026-08-11T09:30:00Z"
data.orders[].created_at нет string:date-time | null "2026-08-11T09:00:00Z"
data.orders[].updated_at нет string:date-time | null "2026-08-11T09:30:00Z"
data.orders[].order да object | null Complete order snapshot embedded into a shipment document. Marketplace and batch objects preserve provider-specific fields.
data.orders[].order.id да integer:int64 min: 1 49060
data.orders[].order.external_id нет string | null "WB-900001234"
data.orders[].order.status_id нет integer:int64 | null 20
data.orders[].order.warehouse_id нет integer:int64 | null min: 1 42
data.orders[].order.shop_id нет integer:int64 | null min: 1 12
data.orders[].order.order_date нет string:date | null "2026-08-10"
data.orders[].order.send_date нет string:date | null "2026-08-11"
data.orders[].order.amounts нет object | null
data.orders[].order.amounts.shipping_price нет number:float | null 8.6
data.orders[].order.amounts.shipping_cost нет number:float | null 0
data.orders[].order.amounts.sum нет number:float | null 39.98
data.orders[].order.amounts.cod_sum нет number:float | null 48.58
data.orders[].order.contact нет object | null
data.orders[].order.contact.first_name нет string | null "Ivan"
data.orders[].order.contact.middle_name нет string | null "Ivanovich"
data.orders[].order.contact.last_name нет string | null "Petrov"
data.orders[].order.contact.phone нет string | null "+359888123456"
data.orders[].order.contact.email нет string:email | null "customer@example.com"
data.orders[].order.contact.country_id нет integer:int64 | null min: 1 100
data.orders[].order.contact.city_id нет integer:int64 | null min: 1 200
data.orders[].order.contact.postcode нет string | null "1000"
data.orders[].order.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.orders[].order.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.orders[].order.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.orders[].order.delivery нет object | null
data.orders[].order.delivery.service_id нет integer:int64 | null min: 1 1
data.orders[].order.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.orders[].order.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.orders[].order.delivery.status нет string | null "created"
data.orders[].order.delivery.track_number нет string | null "CDEK-123456789"
data.orders[].order.delivery.pickup_point_id нет string | null "SOFIA-01"
data.orders[].order.delivery.source_id нет string | null "cdek-15"
data.orders[].order.delivery.tariff_code нет integer:int64 | null 136
data.orders[].order.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.orders[].order.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.orders[].order.delivery.delivery_date нет string:date | null "2026-07-16"
data.orders[].order.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.orders[].order.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.orders[].order.comments нет object | null
data.orders[].order.comments.delivery_service_text нет string | null "Call before delivery"
data.orders[].order.comments.inner_text нет string | null "VIP customer"
data.orders[].order.offers да array<SendDocumentOrderLine>
data.orders[].order.offers[] нет SendDocumentOrderLine
data.orders[].order.offers[].id да integer:int64 min: 1 7001
data.orders[].order.offers[].product_id нет integer:int64 | null min: 1 1201
data.orders[].order.offers[].quantity нет number:float | null 2
data.orders[].order.offers[].estimated_price нет number:float | null 19.5
data.orders[].order.offers[].price нет number:float | null 19.99
data.orders[].order.offers[].expiration_date нет string:date | null "2027-01-15"
data.orders[].order.offers[].batch нет string | null "LOT-2026"
data.orders[].order.offers[].operation_user_id нет integer:int64 | null min: 1 9
data.orders[].order.offers[].product нет object | null
data.orders[].order.offers[].product.id да integer:int64 min: 1 1201
data.orders[].order.offers[].product.external_id нет string | null "EXT-10045"
data.orders[].order.offers[].product.domain_id нет integer:int64 | null min: 1 3
data.orders[].order.offers[].product.shop_id нет integer:int64 | null min: 1 12
data.orders[].order.offers[].product.status_id нет enum:int64 | null enum: 1, 2, 3 1 - active; 2 - disabled; 3 - deleted. 1
data.orders[].order.offers[].product.type_id нет integer:int64 | null 1
data.orders[].order.offers[].product.name да string "Coffee 250g"
data.orders[].order.offers[].product.article нет string | null "ART-001245"
data.orders[].order.offers[].product.sku нет string | null "SKU-001245"
data.orders[].order.offers[].product.price нет number:float | null 19.99
data.orders[].order.offers[].product.estimated_price нет number:float | null 21.5
data.orders[].order.offers[].product.image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data.orders[].order.offers[].product.dimensions да Dimensions
data.orders[].order.offers[].product.weight да Weight
data.orders[].order.offers[].product.datamatrix_required да boolean true
data.orders[].order.offers[].product.expiration_required да boolean true
data.orders[].order.offers[].product.comment нет string | null "Keep dry"
data.orders[].order.offers[].product.description нет string | null "Ground coffee package"
data.orders[].order.offers[].product.barcodes да array<ProductBarcode>
data.orders[].order.offers[].product.package да object
data.orders[].order.offers[].product.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].product.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].reservation нет object | null Reservation totals for one order line.
data.orders[].order.offers[].reservation.required_qty да number:float 3
data.orders[].order.offers[].reservation.reserved_qty да number:float 1
data.orders[].order.offers[].reservation.unreserved_qty да number:float 2
data.orders[].order.offers[].reservation.missing_qty да number:float 2
data.orders[].order.offers[].reservation.status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.orders[].order.offers[].reservation_items нет array<OrderReservationItem>
data.orders[].order.offers[].reservation_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.orders[].order.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes да array<DataMatrix>
data.orders[].order.datamatrix_codes[] нет DataMatrix Код DataMatrix для маркированного товара.
data.orders[].order.datamatrix_codes[].id да integer:int64 readOnly min: 1 1001
data.orders[].order.datamatrix_codes[].created_at нет string:date | null readOnly Stored code upload date; date precision. "2026-10-19"
data.orders[].order.datamatrix_codes[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes[].domain_id нет integer:int64 | null min: 1 3
data.orders[].order.datamatrix_codes[].warehouse_id нет integer:int64 | null min: 1 42
data.orders[].order.datamatrix_codes[].status_id нет enum:int64 | null enum: 0, 1, 2 0 - Imported and available for future warehouse operations. 1 - Reserved or attached by an operational document. 2 - Used by an outbound or completed operation. 0
data.orders[].order.datamatrix_codes[].acceptance_id нет integer:int64 | null min: 1 5101
data.orders[].order.datamatrix_codes[].order_id нет integer:int64 | null min: 1 8101
data.orders[].order.datamatrix_codes[].product_id нет integer:int64 | null min: 1 1201
data.orders[].order.datamatrix_codes[].barcode нет string | null maxLength: 14 "04601234567890"
data.orders[].order.datamatrix_codes[].short_code нет string | null maxLength: 14 "ABC123"
data.orders[].order.datamatrix_codes[].crypto_tail нет string | null "CRYPTO"
data.orders[].order.datamatrix_codes[].datamatrix нет string | null maxLength: 125 "010460123456789021ABC123"
data.orders[].order.datamatrix_codes[].production_date нет string:date | null "2026-01-15"
data.orders[].order.datamatrix_codes[].expiration_date нет string:date | null "2027-01-15"
data.orders[].order.datamatrix_codes[].batch нет string | null "LOT-2026"
data.orders[].order.datamatrix_codes[].used_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes[].accepted_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data.orders[].order.datamatrix_codes[].shipped_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data.orders[].order.warehouse нет object | null
data.orders[].order.warehouse.id да integer:int64 min: 1 42
data.orders[].order.warehouse.name да string "Warehouse Sofia"
data.orders[].order.warehouse.type_id нет integer:int64 | null 2
data.orders[].order.warehouse.parent_id нет integer:int64 | null min: 1 41
data.orders[].order.shop нет object | null
data.orders[].order.shop.id да integer:int64 min: 1 12
data.orders[].order.shop.name да string "Demo Online Store"
data.orders[].order.shop.status_id нет integer:int64 | null 1
data.orders[].order.company нет object | null
data.orders[].order.company.id да integer:int64 min: 1 7
data.orders[].order.company.name да string "Demo Company"
data.orders[].order.company.legal_name нет string | null "Demo Company Ltd."
data.orders[].order.place нет object | null
data.orders[].order.accumulation_place нет object | null
data.orders[].order.measurements нет object | null
data.orders[].order.settings нет object | null
data.orders[].order.consumables да array<object>
data.orders[].order.consumables[] нет object
data.orders[].order.wildberries нет object | null
data.orders[].order.wildberries.completed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.orders[].order.batch_matches да array<object>
data.orders[].order.batch_matches[] нет object
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 740,
    "domain_id": 3,
    "status_id": 1,
    "status": {
      "id": 1,
      "name": "Открыт",
      "color": "#2457c5",
      "background_color": "#eaf0ff"
    },
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Warehouse Sofia",
      "type_id": 2,
      "parent_id": 41
    },
    "delivery_service_ids": [
      17
    ],
    "delivery_services": [
      {
        "id": 17,
        "name": "Wildberries FBS",
        "status_id": 1,
        "external_id": "wb-fbs",
        "source_id": "wildberries",
        "delivery_type": "pickup_point",
        "is_courier": false
      }
    ],
    "document_date": "2026-08-11",
    "closed_at": "2026-08-11T10:15:00Z",
    "comment": "Wildberries shipment 740",
    "order_count": 1,
    "processing": {
      "mode": "standard",
      "pipeline": [
        "assignment",
        "marking",
        "transfer"
      ],
      "state": "open",
      "batch_profile_id": null,
      "batch_profile": null,
      "composition_frozen_at": null,
      "batch_started_at": null,
      "batch_completed_at": null
    },
    "wildberries": {
      "fulfillment_state": "delivered",
      "error_message": null,
      "processed_at": "2026-08-11T10:15:00Z",
      "supplies": [
        {
          "id": 3201,
          "account_id": 71,
          "external_id": "WB-GI-740",
          "name": "Поставка 740",
          "state": "delivered",
          "state_name": "Доставлена",
          "destination_type": "office",
          "destination_office_id": 507,
          "is_automatic": false,
          "is_b2b": false,
          "cargo_type": "box",
          "cross_border_type": null,
          "order_count": 1,
          "current_qr": {
            "id": 3301,
            "kind": "supply_qr",
            "format": "svg",
            "width": 580,
            "height": 400,
            "barcode": "WB-GI-740",
            "part_a": null,
            "part_b": null,
            "content_hash": "sha256:qr-example",
            "content_available": true,
            "is_current": true,
            "fetched_at": "2026-08-11T09:00:00Z",
            "last_printed_at": null,
            "print_count": 0
          },
          "boxes": [

          ],
          "last_error": {
            "code": null,
            "message": null
          },
          "remote_created_at": "2026-08-11T09:00:00Z",
          "remote_closed_at": null,
          "last_synced_at": "2026-08-11T10:15:00Z",
          "delivered_at": "2026-08-11T10:15:00Z"
        }
      ]
    },
    "orders": [
      {
        "assignment_id": 8801,
        "marked_at": "2026-08-11T09:30:00Z",
        "created_at": "2026-08-11T09:00:00Z",
        "updated_at": "2026-08-11T09:30:00Z",
        "order": {
          "id": 49060,
          "external_id": "WB-900001234",
          "status_id": 20,
          "warehouse_id": 42,
          "shop_id": 12,
          "order_date": "2026-08-10",
          "send_date": "2026-08-11",
          "amounts": {
            "shipping_price": 0,
            "shipping_cost": 0,
            "sum": 39.98,
            "cod_sum": 0
          },
          "contact": {
            "first_name": "Иван",
            "middle_name": null,
            "last_name": "Петров",
            "phone": "+359888123456",
            "email": "customer@example.com",
            "country_id": 100,
            "city_id": 200,
            "postcode": "1000",
            "latitude": 42.6977,
            "longitude": 23.3219,
            "full_address": "Sofia"
          },
          "delivery": {
            "service_id": 17,
            "delivery_type": "pickup_point",
            "is_courier": false,
            "status": "created",
            "track_number": "WB-900001234",
            "pickup_point_id": "WB-SOF-01",
            "source_id": "wildberries",
            "tariff_code": null,
            "additional_services": {
            },
            "label": null,
            "delivery_date": "2026-08-12",
            "delivery_time_start": null,
            "delivery_time_end": null
          },
          "comments": {
            "delivery_service_text": null,
            "inner_text": "Клиентский пример для документа 740"
          },
          "offers": [
            {
              "id": 7001,
              "product_id": 1201,
              "quantity": 2,
              "estimated_price": 19.5,
              "price": 19.99,
              "expiration_date": "2027-01-15",
              "batch": "LOT-2026",
              "operation_user_id": 9,
              "product": {
                "id": 1201,
                "external_id": "EXT-10045",
                "shop_id": 12,
                "domain_id": 3,
                "status_id": 1,
                "type_id": 1,
                "name": "Coffee 250g",
                "article": "ART-001245",
                "sku": "SKU-001245",
                "price": 19.99,
                "estimated_price": 21.5,
                "image_url": null,
                "dimensions": {
                  "x": 105,
                  "y": 200,
                  "z": 32,
                  "unit": "mm"
                },
                "weight": {
                  "value": 250,
                  "unit": "g"
                },
                "datamatrix_required": true,
                "expiration_required": true,
                "comment": null,
                "description": "Ground coffee package",
                "barcodes": [
                  {
                    "barcode": "4601234567890",
                    "is_main": true
                  }
                ],
                "package": {
                  "kind": "unit",
                  "parent_product_id": null,
                  "base_product_id": null,
                  "multiplicity": null,
                  "base_multiplicity": null,
                  "depth": 0
                },
                "created_at": "2026-08-01T09:00:00Z",
                "updated_at": "2026-08-10T09:00:00Z"
              },
              "reservation": {
                "required_qty": 2,
                "reserved_qty": 2,
                "unreserved_qty": 0,
                "missing_qty": 0,
                "status": "reserved"
              },
              "reservation_items": [

              ],
              "created_at": "2026-08-10T09:00:00Z",
              "updated_at": "2026-08-10T09:00:00Z"
            }
          ],
          "datamatrix_codes": [
            {
              "id": 6101,
              "domain_id": 3,
              "warehouse_id": 42,
              "status_id": 1,
              "acceptance_id": 5101,
              "order_id": 49060,
              "product_id": 1201,
              "barcode": "04601234567890",
              "short_code": "ABC123",
              "crypto_tail": "CRYPTO",
              "datamatrix": "010460123456789021ABC123",
              "production_date": "2026-01-15",
              "expiration_date": "2027-01-15",
              "batch": "LOT-2026",
              "created_at": "2026-08-11T09:15:00Z",
              "updated_at": "2026-08-11T09:15:00Z",
              "used_at": null
            }
          ],
          "warehouse": {
            "id": 42,
            "name": "Warehouse Sofia",
            "type_id": 2,
            "parent_id": 41
          },
          "shop": {
            "id": 12,
            "name": "Demo Online Store",
            "status_id": 1
          },
          "company": {
            "id": 7,
            "name": "Demo Company",
            "legal_name": "Demo Company Ltd."
          },
          "place": null,
          "accumulation_place": null,
          "measurements": {
            "places": 1,
            "dimensions": {
              "x": 220,
              "y": 160,
              "z": 120,
              "unit": "mm"
            },
            "weight": {
              "value": 600,
              "unit": "g"
            }
          },
          "settings": {
            "blank_url": null
          },
          "consumables": [

          ],
          "wildberries": {
            "id": 2101,
            "account_id": 71,
            "wb_order_id": "900001234",
            "order_uid": "WB-UID-49060",
            "rid": "WB-RID-49060",
            "product_id": 1201,
            "state": "confirmed",
            "state_name": "Подтверждён",
            "fulfillment_state": "delivered",
            "fulfillment_state_name": "Доставлен",
            "supplier_status": "confirm",
            "wb_status": "sold",
            "supply_id": 3201,
            "external_supply_id": "WB-GI-740",
            "supply_state": "delivered",
            "delivery_type": "fbs",
            "cross_border_type": null,
            "is_b2b": false,
            "wb_warehouse_id": 507,
            "office_id": 507,
            "nm_id": 12345678,
            "chrt_id": 87654321,
            "article": "ART-001245",
            "skus": [
              "4601234567890"
            ],
            "required_meta": [
              "sgtin"
            ],
            "optional_meta": [

            ],
            "meta_state": "accepted",
            "sticker_state": "ready",
            "prices": {
              "price_minor": 1999,
              "final_price_minor": 1999,
              "sale_price_minor": 1999,
              "currency": "RUB"
            },
            "markings": [
              {
                "id": 1,
                "datamatrix_id": 6101,
                "type": "sgtin",
                "masked_value": "010460…ABC123",
                "value_hash": "sha256:example",
                "state": "accepted",
                "remote_decision": "accepted",
                "error_code": null,
                "error_message": null,
                "submitted_at": "2026-08-11T09:30:00Z",
                "verified_at": "2026-08-11T09:31:00Z",
                "ambiguous_at": null
              }
            ],
            "current_sticker": {
              "id": 3401,
              "kind": "order_sticker",
              "format": "png",
              "width": 580,
              "height": 400,
              "barcode": "WB-900001234",
              "part_a": "123456",
              "part_b": "7890",
              "content_hash": "sha256:sticker-example",
              "content_available": true,
              "is_current": true,
              "fetched_at": "2026-08-11T09:25:00Z",
              "last_printed_at": null,
              "print_count": 0
            },
            "last_error": {
              "code": null,
              "message": null
            },
            "remote_created_at": "2026-08-10T09:00:00Z",
            "seller_date": "2026-08-10",
            "delivery_date": "2026-08-12",
            "confirmed_at": "2026-08-11T09:20:00Z",
            "completed_at": "2026-08-11T10:15:00Z",
            "imported_at": "2026-08-10T09:05:00Z",
            "mapped_at": "2026-08-10T09:06:00Z",
            "reserved_at": "2026-08-11T09:10:00Z",
            "remote_status_checked_at": "2026-08-11T10:15:00Z"
          },
          "batch_matches": [

          ]
        }
      }
    ],
    "created_at": "2026-08-11T08:45:00Z",
    "updated_at": "2026-08-11T10:15:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

SendDocumentConflict

The shipment document lifecycle or composition does not allow the requested operation.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

documentStateConflict

{
  "message": "Состав документа уже заморожен.",
  "errors": {
    "send_document": [
      "Состав документа уже заморожен."
    ]
  }
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/send-documents/{id}/orders/{orderId}

Удалить заказ из документа отправки

operationIddeleteSendDocumentsOrders
РазделДокументы отправок
БезопасностьbearerAuth

Deletes the resource when the authenticated account has permission and the current lifecycle state allows deletion. If deletion is blocked by related records or document state, the API returns a validation error.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/send-documents/740/orders/49060" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Shipment document ID. 740
orderId path да integer:int64 min: 1 Order ID assigned to the shipment document. 49060
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да SendDocument Outbound shipment document with its complete operational composition. Collection relations are empty unless requested through include; the item endpoint always loads them.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id нет integer:int64 | null min: 1 3
data.status_id нет integer:int64 | null 1
data.status нет object | null
data.status.id да integer:int64 1
data.status.name да string "Открыт"
data.status.color нет string | null "#2457c5"
data.status.background_color нет string | null "#eaf0ff"
data.warehouse_id нет integer:int64 | null min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Warehouse Sofia"
data.warehouse.type_id нет integer:int64 | null 2
data.warehouse.parent_id нет integer:int64 | null min: 1 41
data.delivery_service_ids да array<integer:int64>
data.delivery_service_ids[] нет integer:int64 min: 1 17
data.delivery_services да array<SendDocumentDeliveryService>
data.delivery_services[] нет SendDocumentDeliveryService
data.delivery_services[].id да integer:int64 min: 1 17
data.delivery_services[].name да string "Wildberries FBS"
data.delivery_services[].status_id да integer:int64 1
data.delivery_services[].external_id нет string | null "wb-fbs"
data.delivery_services[].source_id нет string | null "wildberries"
data.delivery_services[].delivery_type нет string | null "pickup_point"
data.delivery_services[].is_courier да boolean false
data.document_date нет string:date | null "2026-08-11"
data.closed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.comment нет string | null "Wildberries shipment 740"
data.order_count да integer:int64 min: 0 1
data.processing да SendDocumentProcessing
data.processing.mode нет string | null "standard"
data.processing.pipeline да array<string>
data.processing.pipeline[] нет string "assignment"
data.processing.state нет string | null "open"
data.processing.batch_profile_id нет integer:int64 | null min: 1 31
data.processing.batch_profile нет object | null
data.processing.batch_profile.id да integer:int64 min: 1 31
data.processing.batch_profile.name да string "Standard packing"
data.processing.batch_profile.processing_mode нет string | null "standard"
data.processing.composition_frozen_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.processing.batch_started_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.processing.batch_completed_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.wildberries да SendDocumentWildberries Wildberries document-level state and safe supply/QR/sticker artifact metadata. Binary label content and encrypted provider payloads are not returned.
data.wildberries.fulfillment_state нет string | null "delivered"
data.wildberries.error_message нет string | null ""
data.wildberries.processed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.wildberries.supplies да array<object>
data.wildberries.supplies[] нет object
data.orders да array<SendDocumentOrderAssignment>
data.orders[] нет SendDocumentOrderAssignment
data.orders[].assignment_id да integer:int64 min: 1 8801
data.orders[].marked_at нет string:date-time | null "2026-08-11T09:30:00Z"
data.orders[].created_at нет string:date-time | null "2026-08-11T09:00:00Z"
data.orders[].updated_at нет string:date-time | null "2026-08-11T09:30:00Z"
data.orders[].order да object | null Complete order snapshot embedded into a shipment document. Marketplace and batch objects preserve provider-specific fields.
data.orders[].order.id да integer:int64 min: 1 49060
data.orders[].order.external_id нет string | null "WB-900001234"
data.orders[].order.status_id нет integer:int64 | null 20
data.orders[].order.warehouse_id нет integer:int64 | null min: 1 42
data.orders[].order.shop_id нет integer:int64 | null min: 1 12
data.orders[].order.order_date нет string:date | null "2026-08-10"
data.orders[].order.send_date нет string:date | null "2026-08-11"
data.orders[].order.amounts нет object | null
data.orders[].order.amounts.shipping_price нет number:float | null 8.6
data.orders[].order.amounts.shipping_cost нет number:float | null 0
data.orders[].order.amounts.sum нет number:float | null 39.98
data.orders[].order.amounts.cod_sum нет number:float | null 48.58
data.orders[].order.contact нет object | null
data.orders[].order.contact.first_name нет string | null "Ivan"
data.orders[].order.contact.middle_name нет string | null "Ivanovich"
data.orders[].order.contact.last_name нет string | null "Petrov"
data.orders[].order.contact.phone нет string | null "+359888123456"
data.orders[].order.contact.email нет string:email | null "customer@example.com"
data.orders[].order.contact.country_id нет integer:int64 | null min: 1 100
data.orders[].order.contact.city_id нет integer:int64 | null min: 1 200
data.orders[].order.contact.postcode нет string | null "1000"
data.orders[].order.contact.latitude нет number:float | null min: -90
max: 90
42.6977
data.orders[].order.contact.longitude нет number:float | null min: -180
max: 180
23.3219
data.orders[].order.contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data.orders[].order.delivery нет object | null
data.orders[].order.delivery.service_id нет integer:int64 | null min: 1 1
data.orders[].order.delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data.orders[].order.delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data.orders[].order.delivery.status нет string | null "created"
data.orders[].order.delivery.track_number нет string | null "CDEK-123456789"
data.orders[].order.delivery.pickup_point_id нет string | null "SOFIA-01"
data.orders[].order.delivery.source_id нет string | null "cdek-15"
data.orders[].order.delivery.tariff_code нет integer:int64 | null 136
data.orders[].order.delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data.orders[].order.delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data.orders[].order.delivery.delivery_date нет string:date | null "2026-07-16"
data.orders[].order.delivery.delivery_time_start нет string:time | null "09:00:00Z"
data.orders[].order.delivery.delivery_time_end нет string:time | null "18:00:00Z"
data.orders[].order.comments нет object | null
data.orders[].order.comments.delivery_service_text нет string | null "Call before delivery"
data.orders[].order.comments.inner_text нет string | null "VIP customer"
data.orders[].order.offers да array<SendDocumentOrderLine>
data.orders[].order.offers[] нет SendDocumentOrderLine
data.orders[].order.offers[].id да integer:int64 min: 1 7001
data.orders[].order.offers[].product_id нет integer:int64 | null min: 1 1201
data.orders[].order.offers[].quantity нет number:float | null 2
data.orders[].order.offers[].estimated_price нет number:float | null 19.5
data.orders[].order.offers[].price нет number:float | null 19.99
data.orders[].order.offers[].expiration_date нет string:date | null "2027-01-15"
data.orders[].order.offers[].batch нет string | null "LOT-2026"
data.orders[].order.offers[].operation_user_id нет integer:int64 | null min: 1 9
data.orders[].order.offers[].product нет object | null
data.orders[].order.offers[].product.id да integer:int64 min: 1 1201
data.orders[].order.offers[].product.external_id нет string | null "EXT-10045"
data.orders[].order.offers[].product.domain_id нет integer:int64 | null min: 1 3
data.orders[].order.offers[].product.shop_id нет integer:int64 | null min: 1 12
data.orders[].order.offers[].product.status_id нет enum:int64 | null enum: 1, 2, 3 1 - active; 2 - disabled; 3 - deleted. 1
data.orders[].order.offers[].product.type_id нет integer:int64 | null 1
data.orders[].order.offers[].product.name да string "Coffee 250g"
data.orders[].order.offers[].product.article нет string | null "ART-001245"
data.orders[].order.offers[].product.sku нет string | null "SKU-001245"
data.orders[].order.offers[].product.price нет number:float | null 19.99
data.orders[].order.offers[].product.estimated_price нет number:float | null 21.5
data.orders[].order.offers[].product.image_url нет string:uri | null "https://betawms.ffcdek.ru/offer-images/products/coffee-250g.jpg"
data.orders[].order.offers[].product.dimensions да Dimensions
data.orders[].order.offers[].product.weight да Weight
data.orders[].order.offers[].product.datamatrix_required да boolean true
data.orders[].order.offers[].product.expiration_required да boolean true
data.orders[].order.offers[].product.comment нет string | null "Keep dry"
data.orders[].order.offers[].product.description нет string | null "Ground coffee package"
data.orders[].order.offers[].product.barcodes да array<ProductBarcode>
data.orders[].order.offers[].product.package да object
data.orders[].order.offers[].product.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].product.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].reservation нет object | null Reservation totals for one order line.
data.orders[].order.offers[].reservation.required_qty да number:float 3
data.orders[].order.offers[].reservation.reserved_qty да number:float 1
data.orders[].order.offers[].reservation.unreserved_qty да number:float 2
data.orders[].order.offers[].reservation.missing_qty да number:float 2
data.orders[].order.offers[].reservation.status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data.orders[].order.offers[].reservation_items нет array<OrderReservationItem>
data.orders[].order.offers[].reservation_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data.orders[].order.offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes да array<DataMatrix>
data.orders[].order.datamatrix_codes[] нет DataMatrix Код DataMatrix для маркированного товара.
data.orders[].order.datamatrix_codes[].id да integer:int64 readOnly min: 1 1001
data.orders[].order.datamatrix_codes[].created_at нет string:date | null readOnly Stored code upload date; date precision. "2026-10-19"
data.orders[].order.datamatrix_codes[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes[].domain_id нет integer:int64 | null min: 1 3
data.orders[].order.datamatrix_codes[].warehouse_id нет integer:int64 | null min: 1 42
data.orders[].order.datamatrix_codes[].status_id нет enum:int64 | null enum: 0, 1, 2 0 - Imported and available for future warehouse operations. 1 - Reserved or attached by an operational document. 2 - Used by an outbound or completed operation. 0
data.orders[].order.datamatrix_codes[].acceptance_id нет integer:int64 | null min: 1 5101
data.orders[].order.datamatrix_codes[].order_id нет integer:int64 | null min: 1 8101
data.orders[].order.datamatrix_codes[].product_id нет integer:int64 | null min: 1 1201
data.orders[].order.datamatrix_codes[].barcode нет string | null maxLength: 14 "04601234567890"
data.orders[].order.datamatrix_codes[].short_code нет string | null maxLength: 14 "ABC123"
data.orders[].order.datamatrix_codes[].crypto_tail нет string | null "CRYPTO"
data.orders[].order.datamatrix_codes[].datamatrix нет string | null maxLength: 125 "010460123456789021ABC123"
data.orders[].order.datamatrix_codes[].production_date нет string:date | null "2026-01-15"
data.orders[].order.datamatrix_codes[].expiration_date нет string:date | null "2027-01-15"
data.orders[].order.datamatrix_codes[].batch нет string | null "LOT-2026"
data.orders[].order.datamatrix_codes[].used_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.orders[].order.datamatrix_codes[].accepted_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data.orders[].order.datamatrix_codes[].shipped_at нет string:date-time | null "2026-10-22T10:00:00+03:00"
data.orders[].order.warehouse нет object | null
data.orders[].order.warehouse.id да integer:int64 min: 1 42
data.orders[].order.warehouse.name да string "Warehouse Sofia"
data.orders[].order.warehouse.type_id нет integer:int64 | null 2
data.orders[].order.warehouse.parent_id нет integer:int64 | null min: 1 41
data.orders[].order.shop нет object | null
data.orders[].order.shop.id да integer:int64 min: 1 12
data.orders[].order.shop.name да string "Demo Online Store"
data.orders[].order.shop.status_id нет integer:int64 | null 1
data.orders[].order.company нет object | null
data.orders[].order.company.id да integer:int64 min: 1 7
data.orders[].order.company.name да string "Demo Company"
data.orders[].order.company.legal_name нет string | null "Demo Company Ltd."
data.orders[].order.place нет object | null
data.orders[].order.accumulation_place нет object | null
data.orders[].order.measurements нет object | null
data.orders[].order.settings нет object | null
data.orders[].order.consumables да array<object>
data.orders[].order.consumables[] нет object
data.orders[].order.wildberries нет object | null
data.orders[].order.wildberries.completed_at нет string:date-time | null "2026-08-11T10:15:00Z"
data.orders[].order.batch_matches да array<object>
data.orders[].order.batch_matches[] нет object
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 740,
    "domain_id": 3,
    "status_id": 1,
    "status": {
      "id": 1,
      "name": "Открыт",
      "color": "#2457c5",
      "background_color": "#eaf0ff"
    },
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Warehouse Sofia",
      "type_id": 2,
      "parent_id": 41
    },
    "delivery_service_ids": [
      17
    ],
    "delivery_services": [
      {
        "id": 17,
        "name": "Wildberries FBS",
        "status_id": 1,
        "external_id": "wb-fbs",
        "source_id": "wildberries",
        "delivery_type": "pickup_point",
        "is_courier": false
      }
    ],
    "document_date": "2026-08-11",
    "closed_at": "2026-08-11T10:15:00Z",
    "comment": "Wildberries shipment 740",
    "order_count": 1,
    "processing": {
      "mode": "standard",
      "pipeline": [
        "assignment",
        "marking",
        "transfer"
      ],
      "state": "open",
      "batch_profile_id": null,
      "batch_profile": null,
      "composition_frozen_at": null,
      "batch_started_at": null,
      "batch_completed_at": null
    },
    "wildberries": {
      "fulfillment_state": "delivered",
      "error_message": null,
      "processed_at": "2026-08-11T10:15:00Z",
      "supplies": [
        {
          "id": 3201,
          "account_id": 71,
          "external_id": "WB-GI-740",
          "name": "Поставка 740",
          "state": "delivered",
          "state_name": "Доставлена",
          "destination_type": "office",
          "destination_office_id": 507,
          "is_automatic": false,
          "is_b2b": false,
          "cargo_type": "box",
          "cross_border_type": null,
          "order_count": 1,
          "current_qr": {
            "id": 3301,
            "kind": "supply_qr",
            "format": "svg",
            "width": 580,
            "height": 400,
            "barcode": "WB-GI-740",
            "part_a": null,
            "part_b": null,
            "content_hash": "sha256:qr-example",
            "content_available": true,
            "is_current": true,
            "fetched_at": "2026-08-11T09:00:00Z",
            "last_printed_at": null,
            "print_count": 0
          },
          "boxes": [

          ],
          "last_error": {
            "code": null,
            "message": null
          },
          "remote_created_at": "2026-08-11T09:00:00Z",
          "remote_closed_at": null,
          "last_synced_at": "2026-08-11T10:15:00Z",
          "delivered_at": "2026-08-11T10:15:00Z"
        }
      ]
    },
    "orders": [
      {
        "assignment_id": 8801,
        "marked_at": "2026-08-11T09:30:00Z",
        "created_at": "2026-08-11T09:00:00Z",
        "updated_at": "2026-08-11T09:30:00Z",
        "order": {
          "id": 49060,
          "external_id": "WB-900001234",
          "status_id": 20,
          "warehouse_id": 42,
          "shop_id": 12,
          "order_date": "2026-08-10",
          "send_date": "2026-08-11",
          "amounts": {
            "shipping_price": 0,
            "shipping_cost": 0,
            "sum": 39.98,
            "cod_sum": 0
          },
          "contact": {
            "first_name": "Иван",
            "middle_name": null,
            "last_name": "Петров",
            "phone": "+359888123456",
            "email": "customer@example.com",
            "country_id": 100,
            "city_id": 200,
            "postcode": "1000",
            "latitude": 42.6977,
            "longitude": 23.3219,
            "full_address": "Sofia"
          },
          "delivery": {
            "service_id": 17,
            "delivery_type": "pickup_point",
            "is_courier": false,
            "status": "created",
            "track_number": "WB-900001234",
            "pickup_point_id": "WB-SOF-01",
            "source_id": "wildberries",
            "tariff_code": null,
            "additional_services": {
            },
            "label": null,
            "delivery_date": "2026-08-12",
            "delivery_time_start": null,
            "delivery_time_end": null
          },
          "comments": {
            "delivery_service_text": null,
            "inner_text": "Клиентский пример для документа 740"
          },
          "offers": [
            {
              "id": 7001,
              "product_id": 1201,
              "quantity": 2,
              "estimated_price": 19.5,
              "price": 19.99,
              "expiration_date": "2027-01-15",
              "batch": "LOT-2026",
              "operation_user_id": 9,
              "product": {
                "id": 1201,
                "external_id": "EXT-10045",
                "shop_id": 12,
                "domain_id": 3,
                "status_id": 1,
                "type_id": 1,
                "name": "Coffee 250g",
                "article": "ART-001245",
                "sku": "SKU-001245",
                "price": 19.99,
                "estimated_price": 21.5,
                "image_url": null,
                "dimensions": {
                  "x": 105,
                  "y": 200,
                  "z": 32,
                  "unit": "mm"
                },
                "weight": {
                  "value": 250,
                  "unit": "g"
                },
                "datamatrix_required": true,
                "expiration_required": true,
                "comment": null,
                "description": "Ground coffee package",
                "barcodes": [
                  {
                    "barcode": "4601234567890",
                    "is_main": true
                  }
                ],
                "package": {
                  "kind": "unit",
                  "parent_product_id": null,
                  "base_product_id": null,
                  "multiplicity": null,
                  "base_multiplicity": null,
                  "depth": 0
                },
                "created_at": "2026-08-01T09:00:00Z",
                "updated_at": "2026-08-10T09:00:00Z"
              },
              "reservation": {
                "required_qty": 2,
                "reserved_qty": 2,
                "unreserved_qty": 0,
                "missing_qty": 0,
                "status": "reserved"
              },
              "reservation_items": [

              ],
              "created_at": "2026-08-10T09:00:00Z",
              "updated_at": "2026-08-10T09:00:00Z"
            }
          ],
          "datamatrix_codes": [
            {
              "id": 6101,
              "domain_id": 3,
              "warehouse_id": 42,
              "status_id": 1,
              "acceptance_id": 5101,
              "order_id": 49060,
              "product_id": 1201,
              "barcode": "04601234567890",
              "short_code": "ABC123",
              "crypto_tail": "CRYPTO",
              "datamatrix": "010460123456789021ABC123",
              "production_date": "2026-01-15",
              "expiration_date": "2027-01-15",
              "batch": "LOT-2026",
              "created_at": "2026-08-11T09:15:00Z",
              "updated_at": "2026-08-11T09:15:00Z",
              "used_at": null
            }
          ],
          "warehouse": {
            "id": 42,
            "name": "Warehouse Sofia",
            "type_id": 2,
            "parent_id": 41
          },
          "shop": {
            "id": 12,
            "name": "Demo Online Store",
            "status_id": 1
          },
          "company": {
            "id": 7,
            "name": "Demo Company",
            "legal_name": "Demo Company Ltd."
          },
          "place": null,
          "accumulation_place": null,
          "measurements": {
            "places": 1,
            "dimensions": {
              "x": 220,
              "y": 160,
              "z": 120,
              "unit": "mm"
            },
            "weight": {
              "value": 600,
              "unit": "g"
            }
          },
          "settings": {
            "blank_url": null
          },
          "consumables": [

          ],
          "wildberries": {
            "id": 2101,
            "account_id": 71,
            "wb_order_id": "900001234",
            "order_uid": "WB-UID-49060",
            "rid": "WB-RID-49060",
            "product_id": 1201,
            "state": "confirmed",
            "state_name": "Подтверждён",
            "fulfillment_state": "delivered",
            "fulfillment_state_name": "Доставлен",
            "supplier_status": "confirm",
            "wb_status": "sold",
            "supply_id": 3201,
            "external_supply_id": "WB-GI-740",
            "supply_state": "delivered",
            "delivery_type": "fbs",
            "cross_border_type": null,
            "is_b2b": false,
            "wb_warehouse_id": 507,
            "office_id": 507,
            "nm_id": 12345678,
            "chrt_id": 87654321,
            "article": "ART-001245",
            "skus": [
              "4601234567890"
            ],
            "required_meta": [
              "sgtin"
            ],
            "optional_meta": [

            ],
            "meta_state": "accepted",
            "sticker_state": "ready",
            "prices": {
              "price_minor": 1999,
              "final_price_minor": 1999,
              "sale_price_minor": 1999,
              "currency": "RUB"
            },
            "markings": [
              {
                "id": 1,
                "datamatrix_id": 6101,
                "type": "sgtin",
                "masked_value": "010460…ABC123",
                "value_hash": "sha256:example",
                "state": "accepted",
                "remote_decision": "accepted",
                "error_code": null,
                "error_message": null,
                "submitted_at": "2026-08-11T09:30:00Z",
                "verified_at": "2026-08-11T09:31:00Z",
                "ambiguous_at": null
              }
            ],
            "current_sticker": {
              "id": 3401,
              "kind": "order_sticker",
              "format": "png",
              "width": 580,
              "height": 400,
              "barcode": "WB-900001234",
              "part_a": "123456",
              "part_b": "7890",
              "content_hash": "sha256:sticker-example",
              "content_available": true,
              "is_current": true,
              "fetched_at": "2026-08-11T09:25:00Z",
              "last_printed_at": null,
              "print_count": 0
            },
            "last_error": {
              "code": null,
              "message": null
            },
            "remote_created_at": "2026-08-10T09:00:00Z",
            "seller_date": "2026-08-10",
            "delivery_date": "2026-08-12",
            "confirmed_at": "2026-08-11T09:20:00Z",
            "completed_at": "2026-08-11T10:15:00Z",
            "imported_at": "2026-08-10T09:05:00Z",
            "mapped_at": "2026-08-10T09:06:00Z",
            "reserved_at": "2026-08-11T09:10:00Z",
            "remote_status_checked_at": "2026-08-11T10:15:00Z"
          },
          "batch_matches": [

          ]
        }
      }
    ],
    "created_at": "2026-08-11T08:45:00Z",
    "updated_at": "2026-08-11T10:15:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

SendDocumentConflict

The shipment document lifecycle or composition does not allow the requested operation.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

documentStateConflict

{
  "message": "Состав документа уже заморожен.",
  "errors": {
    "send_document": [
      "Состав документа уже заморожен."
    ]
  }
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Магазины

GET /api/v2/shops

Получить список магазинов

operationIdlistShops
РазделМагазины
БезопасностьbearerAuth

Возвращает магазины, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/shops" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 250
Количество записей на странице. По умолчанию 50; максимум 250. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 50
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, name, status_id, owner_user_id, created_at, updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "-id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
status_id query нет integer:int64 form true min: 1 Фильтр по status_id с точным совпадением. Этот фильтр также можно передать как filter[status_id], если это поддерживает Laravel query adapter. 1
domain_id query нет integer:int64 form true min: 1 Фильтр по domain_id с точным совпадением. Этот фильтр также можно передать как filter[domain_id], если это поддерживает Laravel query adapter. 3
owner_user_id query нет integer:int64 form true min: 1 Фильтр по owner_user_id с точным совпадением. Этот фильтр также можно передать как filter[owner_user_id], если это поддерживает Laravel query adapter. 15
name query нет string form true Фильтр по name с частичным текстовым совпадением. Этот фильтр также можно передать как filter[name], если это поддерживает Laravel query adapter. "Coffee"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<Shop>
data[] нет Shop Аккаунт магазина продавца.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].name да string "Demo Online Store"
data[].status_id нет integer:int64 | null 1
data[].domain_id нет integer:int64 | null min: 1 3
data[].owner_user_id нет integer:int64 | null min: 1 15
data[].composite_items_enabled нет boolean false
data[].custom_label_enabled нет boolean false
data[].custom_label нет string | null "CDEK label"
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 12,
      "name": "Demo Online Store",
      "status_id": 1,
      "domain_id": 3,
      "owner_user_id": 15,
      "composite_items_enabled": false,
      "custom_label_enabled": false,
      "custom_label": null,
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/shops?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/shops?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/shops?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/shops",
    "per_page": 50,
    "to": 50,
    "total": 73
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/shops

Создать магазин

operationIdcreateShops
РазделМагазины
БезопасностьbearerAuth

Create shop. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/shops" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CreateShopRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateShopPayload
data.name да string minLength: 1 "Demo Online Store"
data.status_id нет integer:int64 | null 1
data.owner_user_id нет integer:int64 | null min: 1 15
data.composite_items_enabled нет boolean false
data.custom_label_enabled нет boolean false
data.custom_label нет string | null "CDEK label"

Примеры запроса

default

{
  "data": {
    "name": "Demo Online Store",
    "owner_user_id": 15
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Shop Аккаунт магазина продавца.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.name да string "Demo Online Store"
data.status_id нет integer:int64 | null 1
data.domain_id нет integer:int64 | null min: 1 3
data.owner_user_id нет integer:int64 | null min: 1 15
data.composite_items_enabled нет boolean false
data.custom_label_enabled нет boolean false
data.custom_label нет string | null "CDEK label"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 12,
    "name": "Demo Online Store",
    "status_id": 1,
    "domain_id": 3,
    "owner_user_id": 15,
    "composite_items_enabled": false,
    "custom_label_enabled": false,
    "custom_label": null,
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/shops/{id}

Получить магазин

operationIdgetShops
РазделМагазины
БезопасностьbearerAuth

Возвращает один ресурс: магазин, если он существует и видим аутентифицированному аккаунту.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/shops/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID магазина. 1001

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Shop Аккаунт магазина продавца.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.name да string "Demo Online Store"
data.status_id нет integer:int64 | null 1
data.domain_id нет integer:int64 | null min: 1 3
data.owner_user_id нет integer:int64 | null min: 1 15
data.composite_items_enabled нет boolean false
data.custom_label_enabled нет boolean false
data.custom_label нет string | null "CDEK label"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 12,
    "name": "Demo Online Store",
    "status_id": 1,
    "domain_id": 3,
    "owner_user_id": 15,
    "composite_items_enabled": false,
    "custom_label_enabled": false,
    "custom_label": null,
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/shops/{id}

Обновить магазин

operationIdreplaceShops
РазделМагазины
БезопасностьbearerAuth

Update shop. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/shops/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID магазина. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

ReplaceShopRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да ReplaceShopPayload Legacy PUT payload. Текущий backend применяет семантику частичного обновления.
data.name нет string | null minLength: 1 "Demo Online Store"
data.status_id нет integer:int64 | null 1
data.owner_user_id нет integer:int64 | null min: 1 15
data.composite_items_enabled нет boolean false
data.custom_label_enabled нет boolean false
data.custom_label нет string | null "CDEK label"

Примеры запроса

default

{
  "data": {
    "name": "Demo Online Store",
    "custom_label_enabled": false
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Shop Аккаунт магазина продавца.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.name да string "Demo Online Store"
data.status_id нет integer:int64 | null 1
data.domain_id нет integer:int64 | null min: 1 3
data.owner_user_id нет integer:int64 | null min: 1 15
data.composite_items_enabled нет boolean false
data.custom_label_enabled нет boolean false
data.custom_label нет string | null "CDEK label"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 12,
    "name": "Demo Online Store",
    "status_id": 1,
    "domain_id": 3,
    "owner_user_id": 15,
    "composite_items_enabled": false,
    "custom_label_enabled": false,
    "custom_label": null,
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/shops/{id}

Обновить магазин

operationIdpatchShops
РазделМагазины
БезопасностьbearerAuth

Update shop. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/shops/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID магазина. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

PatchShopRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да PatchShopPayload
data.name нет string | null minLength: 1 "Demo Online Store"
data.status_id нет integer:int64 | null 1
data.owner_user_id нет integer:int64 | null min: 1 15
data.composite_items_enabled нет boolean false
data.custom_label_enabled нет boolean false
data.custom_label нет string | null "CDEK label"

Примеры запроса

default

{
  "data": {
    "custom_label_enabled": false
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Shop Аккаунт магазина продавца.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.name да string "Demo Online Store"
data.status_id нет integer:int64 | null 1
data.domain_id нет integer:int64 | null min: 1 3
data.owner_user_id нет integer:int64 | null min: 1 15
data.composite_items_enabled нет boolean false
data.custom_label_enabled нет boolean false
data.custom_label нет string | null "CDEK label"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 12,
    "name": "Demo Online Store",
    "status_id": 1,
    "domain_id": 3,
    "owner_user_id": 15,
    "composite_items_enabled": false,
    "custom_label_enabled": false,
    "custom_label": null,
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Движения остатков

GET /api/v2/stock-movements

Получить журнал движений остатков

operationIdlistStockMovements
РазделДвижения остатков
БезопасностьbearerAuth

Возвращает движения остатков, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
For incremental export, request sort=id&after_id=<last_seen_id>. The after_id boundary is exclusive. Use the greatest returned id as the next high-water mark. The endpoint does not provide snapshot isolation; rows inserted concurrently with greater IDs may appear in later calls.
Both sides of one relocation use movement_type=stock_transfer and share the same non-null movement_group_id; use that opaque value to correlate the negative and positive rows.
Since the picking-lot update, actual picking appends two atomic order rows: operation=reservation_release has positive quantity_delta for the former reservation, and operation=physical_issue has negative quantity_delta with the actual batch, production_date and expiration_date. Each pair shares movement_group_id and sums to zero, preserving cumulative availability. Do not sum only negative order rows as consumption: that would count both the reservation and the physical issue. Use source=order_picking.issue to select new physical issues. Earlier rows are not rewritten; historical current picked lots can be read from orders.
transfer_kind distinguishes within_warehouse (document types 3/4) and between_warehouses (6/7); movement_group_id is opaque. stock_after remains null. The journal does not cover every manual loss/correction path.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Since the picking-lot update, actual picking appends two atomic order rows: operation=reservation_release has positive quantity_delta for the former reservation, and operation=physical_issue has negative quantity_delta with the actual batch, production_date and expiration_date. Each pair shares movement_group_id and sums to zero, preserving cumulative availability. Do not sum only negative order rows as consumption: that would count both the reservation and the physical issue. Use source=order_picking.issue to select new physical issues. Earlier rows are not rewritten; historical current picked lots can be read from orders.
transfer_kind distinguishes within_warehouse (document types 3/4) and between_warehouses (6/7); movement_group_id is opaque. stock_after remains null. The journal does not cover every manual loss/correction path.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Since the picking-lot update, actual picking appends two atomic order rows: operation=reservation_release has positive quantity_delta for the former reservation, and operation=physical_issue has negative quantity_delta with the actual batch, production_date and expiration_date. Each pair shares movement_group_id and sums to zero, preserving cumulative availability. Do not sum only negative order rows as consumption: that would count both the reservation and the physical issue. Use source=order_picking.issue to select new physical issues. Earlier rows are not rewritten; historical current picked lots can be read from orders.
transfer_kind distinguishes within_warehouse (document types 3/4) and between_warehouses (6/7); movement_group_id is opaque. stock_after remains null. The journal does not cover every manual loss/correction path.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Since the picking-lot update, actual picking appends two atomic order rows: operation=reservation_release has positive quantity_delta for the former reservation, and operation=physical_issue has negative quantity_delta with the actual batch, production_date and expiration_date. Each pair shares movement_group_id and sums to zero, preserving cumulative availability. Do not sum only negative order rows as consumption: that would count both the reservation and the physical issue. Use source=order_picking.issue to select new physical issues. Earlier rows are not rewritten; historical current picked lots can be read from orders.
transfer_kind distinguishes within_warehouse (document types 3/4) and between_warehouses (6/7); movement_group_id is opaque. stock_after remains null. The journal does not cover every manual loss/correction path.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Since the picking-lot update, actual picking appends two atomic order rows: operation=reservation_release has positive quantity_delta for the former reservation, and operation=physical_issue has negative quantity_delta with the actual batch, production_date and expiration_date. Each pair shares movement_group_id and sums to zero, preserving cumulative availability. Do not sum only negative order rows as consumption: that would count both the reservation and the physical issue. Use source=order_picking.issue to select new physical issues. Earlier rows are not rewritten; historical current picked lots can be read from orders.
transfer_kind distinguishes within_warehouse (document types 3/4) and between_warehouses (6/7); movement_group_id is opaque. stock_after remains null. The journal does not cover every manual loss/correction path.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Since the picking-lot update, actual picking appends two atomic order rows: operation=reservation_release has positive quantity_delta for the former reservation, and operation=physical_issue has negative quantity_delta with the actual batch, production_date and expiration_date. Each pair shares movement_group_id and sums to zero, preserving cumulative availability. Do not sum only negative order rows as consumption: that would count both the reservation and the physical issue. Use source=order_picking.issue to select new physical issues. Earlier rows are not rewritten; historical current picked lots can be read from orders.
transfer_kind distinguishes within_warehouse (document types 3/4) and between_warehouses (6/7); movement_group_id is opaque. stock_after remains null. The journal does not cover every manual loss/correction path.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/stock-movements" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, occurred_at, created_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
after_id query нет integer:int64 form true min: 0 Для инкрементальной выгрузки используйте sort=id и after_id. Граница after_id исключающая (id > after_id). Этот фильтр также можно передать как filter[after_id], если это поддерживает Laravel query adapter. 1000
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
warehouse_id query нет integer:int64 form true min: 1 Фильтр по warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[warehouse_id], если это поддерживает Laravel query adapter. 42
product_id query нет integer:int64 form true min: 1 Фильтр по product_id с точным совпадением. Этот фильтр также можно передать как filter[product_id], если это поддерживает Laravel query adapter. 1201
base_product_id query нет integer:int64 form true min: 1 Фильтр по base_product_id с точным совпадением. Этот фильтр также можно передать как filter[base_product_id], если это поддерживает Laravel query adapter. 1200
document_type_id query нет integer:int64 form true min: 1 Фильтр по document_type_id с точным совпадением. Этот фильтр также можно передать как filter[document_type_id], если это поддерживает Laravel query adapter. 1
document_id query нет integer:int64 form true min: 1 Фильтр по document_id с точным совпадением. Этот фильтр также можно передать как filter[document_id], если это поддерживает Laravel query adapter. 5101
movement_type query нет string form true Фильтр по movement_type с точным совпадением. Этот фильтр также можно передать как filter[movement_type], если это поддерживает Laravel query adapter. "stock_transfer"
movement_group_id query нет string form true Фильтр по movement_group_id с точным совпадением. Этот фильтр также можно передать как filter[movement_group_id], если это поддерживает Laravel query adapter. "relocation:1722099600000000"
source query нет string form true Фильтр по source с точным совпадением. Этот фильтр также можно передать как filter[source], если это поддерживает Laravel query adapter. "api"
barcode query нет string form true Фильтр по barcode с частичным текстовым совпадением. Этот фильтр также можно передать как filter[barcode], если это поддерживает Laravel query adapter. "4601234567890"
batch query нет string form true Фильтр по batch с частичным текстовым совпадением. Этот фильтр также можно передать как filter[batch], если это поддерживает Laravel query adapter. "LOT-2026"
occurred_at_from query нет string:date form true Нижняя включительная граница даты для occurred_at. Этот фильтр также можно передать как filter[occurred_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
occurred_at_to query нет string:date form true Верхняя включительная граница даты для occurred_at. Этот фильтр также можно передать как filter[occurred_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
production_date_from query нет string:date form true Нижняя включительная граница даты для production_date. Этот фильтр также можно передать как filter[production_date_from], если это поддерживает Laravel query adapter. "2026-07-14"
production_date_to query нет string:date form true Верхняя включительная граница даты для production_date. Этот фильтр также можно передать как filter[production_date_to], если это поддерживает Laravel query adapter. "2026-07-14"
expiration_date_from query нет string:date form true Нижняя включительная граница даты для expiration_date. Этот фильтр также можно передать как filter[expiration_date_from], если это поддерживает Laravel query adapter. "2026-07-14"
expiration_date_to query нет string:date form true Верхняя включительная граница даты для expiration_date. Этот фильтр также можно передать как filter[expiration_date_to], если это поддерживает Laravel query adapter. "2026-07-14"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<StockMovement>
data[] нет StockMovement Строка append-only журнала движений остатков.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].movement_type да StockMovementType Stock movement type emitted by the backend. Current values are acceptance, order, stock_transfer, inventory, quant_unpacking, and movement. The set may grow when new document sources are added. "stock_transfer"
data[].movement_group_id да string | null Opaque correlation ID shared by both sides of one relocation or stock-transfer line. "relocation:1722099600000000"
data[].source нет string | null "api"
data[].domain_id нет integer:int64 | null min: 1 3
data[].warehouse_id нет integer:int64 | null min: 1 42
data[].product_id нет integer:int64 | null min: 1 1201
data[].base_product_id нет integer:int64 | null min: 1 1200
data[].quantity_delta нет number:float | null -2
data[].base_quantity_delta нет number:float | null -12
data[].stock_after нет number:float | null 18
data[].document нет StockMovementDocument
data[].document.type_id нет integer:int64 | null 3
data[].document.id нет integer:int64 | null min: 1 8101
data[].document.line_id нет integer:int64 | null min: 1 7001
data[].place_id нет integer:int64 | null min: 1 501
data[].barcode нет string | null "4601234567890"
data[].batch нет string | null "LOT-2026"
data[].production_date нет string:date | null "2026-01-15"
data[].expiration_date нет string:date | null "2027-01-15"
data[].occurred_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].transfer_kind нет enum | null enum: within_warehouse, between_warehouses "within_warehouse"
data[].operation нет enum | null enum: reservation_release, physical_issue Set for new picking audit pairs; null for older and other operations. "physical_issue"
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 120001,
      "movement_type": "stock_transfer",
      "movement_group_id": "relocation:1722099600000000",
      "source": "api",
      "domain_id": 3,
      "warehouse_id": 42,
      "product_id": 1201,
      "base_product_id": 1200,
      "quantity_delta": -2,
      "base_quantity_delta": -12,
      "stock_after": null,
      "document": {
        "type_id": 3
      },
      "place_id": 501,
      "barcode": "4601234567890",
      "batch": "LOT-2026",
      "production_date": "2026-01-15",
      "expiration_date": "2027-01-15",
      "occurred_at": "2026-07-14T10:30:00Z",
      "created_at": "2026-07-14T10:30:00Z",
      "updated_at": "2026-07-14T10:30:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/stock-movements?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/stock-movements?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/stock-movements?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/stock-movements",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Пользователи

GET /api/v2/users

Получить список пользователей

operationIdlistUsers
РазделПользователи
БезопасностьbearerAuth

Возвращает пользователей, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/users" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 50; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 50
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, name, email, domain_id, warehouse_id, created_at, updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "-id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
domain_id query нет integer:int64 form true min: 1 Фильтр по domain_id с точным совпадением. Этот фильтр также можно передать как filter[domain_id], если это поддерживает Laravel query adapter. 3
warehouse_id query нет integer:int64 form true min: 1 Фильтр по warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[warehouse_id], если это поддерживает Laravel query adapter. 42
parent_id query нет integer:int64 form true min: 1 Фильтр по parent_id с точным совпадением. Этот фильтр также можно передать как filter[parent_id], если это поддерживает Laravel query adapter. 1
data_scope query нет string form true Фильтр по data_scope с точным совпадением. Этот фильтр также можно передать как filter[data_scope], если это поддерживает Laravel query adapter. "domain"
name query нет string form true Фильтр по name с частичным текстовым совпадением. Этот фильтр также можно передать как filter[name], если это поддерживает Laravel query adapter. "Coffee"
email query нет string form true Фильтр по email с частичным текстовым совпадением. Этот фильтр также можно передать как filter[email], если это поддерживает Laravel query adapter. "client.manager@nwms.cloud"
id_from query нет number:float form true Нижняя включительная числовая граница для id. Этот фильтр также можно передать как filter[id_from], если это поддерживает Laravel query adapter. 19.99
id_to query нет number:float form true Верхняя включительная числовая граница для id. Этот фильтр также можно передать как filter[id_to], если это поддерживает Laravel query adapter. 19.99

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<User>
data[] нет User Аутентифицированный или видимый пользователь NWMS.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].name да string "Client Manager"
data[].email да string:email "client.manager@nwms.cloud"
data[].language нет string | null "en"
data[].storage_id нет string | null "default"
data[].domain_id нет integer:int64 | null min: 1 3
data[].warehouse_id нет integer:int64 | null min: 1 42
data[].parent_id нет integer:int64 | null min: 1 15
data[].data_scope нет string | null "domain"
data[].roles нет array<string>
data[].roles[] нет string "clients"
data[].domain нет object | null
data[].domain.id да integer:int64 min: 1 3
data[].domain.name да string "Demo Domain"
data[].warehouse нет object | null
data[].warehouse.id да integer:int64 min: 1 42
data[].warehouse.name да string "Warehouse Sofia"
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 15,
      "name": "Client Manager",
      "email": "client.manager@nwms.cloud",
      "language": "en",
      "storage_id": "default",
      "domain_id": 3,
      "warehouse_id": 42,
      "parent_id": null,
      "data_scope": "domain",
      "roles": [
        "clients"
      ],
      "domain": {
        "id": 3,
        "name": "Demo Domain"
      },
      "warehouse": {
        "id": 42,
        "name": "Warehouse Sofia"
      },
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/users?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/users?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/users?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/users",
    "per_page": 50,
    "to": 50,
    "total": 73
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/users/{id}

Получить пользователя

operationIdgetUsers
РазделПользователи
БезопасностьbearerAuth

Возвращает один ресурс: пользователь, если он существует и видим аутентифицированному аккаунту.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/users/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID пользователя. 1001

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да User Аутентифицированный или видимый пользователь NWMS.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.name да string "Client Manager"
data.email да string:email "client.manager@nwms.cloud"
data.language нет string | null "en"
data.storage_id нет string | null "default"
data.domain_id нет integer:int64 | null min: 1 3
data.warehouse_id нет integer:int64 | null min: 1 42
data.parent_id нет integer:int64 | null min: 1 15
data.data_scope нет string | null "domain"
data.roles нет array<string>
data.roles[] нет string "clients"
data.domain нет object | null
data.domain.id да integer:int64 min: 1 3
data.domain.name да string "Demo Domain"
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Warehouse Sofia"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 15,
    "name": "Client Manager",
    "email": "client.manager@nwms.cloud",
    "language": "en",
    "storage_id": "default",
    "domain_id": 3,
    "warehouse_id": 42,
    "parent_id": null,
    "data_scope": "domain",
    "roles": [
      "clients"
    ],
    "domain": {
      "id": 3,
      "name": "Demo Domain"
    },
    "warehouse": {
      "id": 42,
      "name": "Warehouse Sofia"
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Склады

GET /api/v2/warehouses

Получить список складов

operationIdlistWarehouses
РазделСклады
БезопасностьbearerAuth

Возвращает склады, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/warehouses" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 250
Количество записей на странице. По умолчанию 50; максимум 250. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 50
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, name, status_id, type_id, created_at, updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "-id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
status_id query нет integer:int64 form true min: 1 Фильтр по status_id с точным совпадением. Этот фильтр также можно передать как filter[status_id], если это поддерживает Laravel query adapter. 1
type_id query нет integer:int64 form true min: 1 Фильтр по type_id с точным совпадением. Этот фильтр также можно передать как filter[type_id], если это поддерживает Laravel query adapter. 1
domain_id query нет integer:int64 form true min: 1 Фильтр по domain_id с точным совпадением. Этот фильтр также можно передать как filter[domain_id], если это поддерживает Laravel query adapter. 3
owner_user_id query нет integer:int64 form true min: 1 Фильтр по owner_user_id с точным совпадением. Этот фильтр также можно передать как filter[owner_user_id], если это поддерживает Laravel query adapter. 15
parent_id query нет integer:int64 form true min: 1 Фильтр по parent_id с точным совпадением. Этот фильтр также можно передать как filter[parent_id], если это поддерживает Laravel query adapter. 1
country_id query нет integer:int64 form true min: 1 Фильтр по country_id с точным совпадением. Этот фильтр также можно передать как filter[country_id], если это поддерживает Laravel query adapter. 100
company_id query нет integer:int64 form true min: 1 Фильтр по company_id с точным совпадением. Этот фильтр также можно передать как filter[company_id], если это поддерживает Laravel query adapter. 7
service_provider_company_id query нет integer:int64 form true min: 1 Фильтр по service_provider_company_id с точным совпадением. Этот фильтр также можно передать как filter[service_provider_company_id], если это поддерживает Laravel query adapter. 8
name query нет string form true Фильтр по name с частичным текстовым совпадением. Этот фильтр также можно передать как filter[name], если это поддерживает Laravel query adapter. "Coffee"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<Warehouse>
data[] нет Warehouse Склад или клиентский склад.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].name да string "Warehouse Sofia"
data[].status_id нет integer:int64 | null ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 1
data[].type_id нет integer:int64 | null ID типа склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 2
data[].domain_id нет integer:int64 | null min: 1 3
data[].owner_user_id нет integer:int64 | null min: 1 15
data[].parent_id нет integer:int64 | null min: 1 41
data[].country_id нет integer:int64 | null min: 1 100
data[].currency_id нет integer:int64 | null min: 1 978
data[].company_id нет integer:int64 | null min: 1 7
data[].service_provider_company_id нет integer:int64 | null min: 1 8
data[].billing_setting_id нет integer:int64 | null min: 1 12
data[].settings нет WarehouseSettings
data[].settings.datamatrix нет object
data[].settings.datamatrix.enabled да boolean false
data[].settings.datamatrix.type нет string | null "standard"
data[].settings.datamatrix.acceptance_enabled да boolean false
data[].settings.datamatrix.picking_enabled да boolean false
data[].settings.datamatrix.packing_enabled да boolean false
data[].settings.datamatrix.validation_mode нет enum:int64 enum: 0, 1, 2 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. 1
data[].settings.expiration_date_enabled нет boolean true
data[].settings.production_date_enabled нет boolean true
data[].settings.batch_enabled нет boolean true
data[].settings.auto_acceptance_enabled нет boolean false
data[].settings.order_auto_conduct_mode нет enum:int64 | null enum: 0, 1, 2, 3 Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. 0
data[].settings.require_acceptance_dimensions нет boolean false
data[].settings.crossdock_enabled нет boolean Allows cross-docking for a client warehouse. true
data[].document нет WarehouseDocument
data[].document.number нет string | null "WH-DOC-1001"
data[].document.date нет string:date | null "2026-07-14"
data[].custom нет object Специфичные для установки атрибуты склада. {"billing_group":"Sofia A"}
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 42,
      "name": "Warehouse Sofia",
      "status_id": 1,
      "type_id": 2,
      "domain_id": 3,
      "owner_user_id": 15,
      "parent_id": 41,
      "country_id": 100,
      "currency_id": 978,
      "company_id": 7,
      "service_provider_company_id": 8,
      "billing_setting_id": 12,
      "settings": {
        "datamatrix": {
          "enabled": true,
          "type": "standard",
          "acceptance_enabled": true,
          "picking_enabled": true,
          "packing_enabled": false
        },
        "expiration_date_enabled": true,
        "production_date_enabled": true,
        "batch_enabled": true,
        "auto_acceptance_enabled": false,
        "order_auto_conduct_mode": 0,
        "require_acceptance_dimensions": false
      },
      "document": {
        "number": "WH-DOC-1001",
        "date": "2026-07-14"
      },
      "custom": {
        "billing_group": "Sofia A"
      },
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/warehouses?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/warehouses?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/warehouses?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/warehouses",
    "per_page": 50,
    "to": 50,
    "total": 73
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/warehouses

Создать склад

operationIdcreateWarehouses
РазделСклады
БезопасностьbearerAuth

Creates a warehouse or client warehouse using public v2 fields. Ownership, parent warehouse, billing settings, and operational flags are validated by account scope.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/warehouses" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CreateWarehouseRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateWarehousePayload
data.name да string minLength: 1 "Client Warehouse Varna"
data.type_id нет integer:int64 | null ID типа склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 2
data.owner_user_id нет integer:int64 | null min: 1 15
data.parent_id нет integer:int64 | null min: 1 42
data.country_id нет integer:int64 | null min: 1 100
data.currency_id нет integer:int64 | null min: 1 978
data.company_id нет integer:int64 | null min: 1 7
data.service_provider_company_id нет integer:int64 | null min: 1 8
data.billing_setting_id нет integer:int64 | null min: 1 12
data.settings нет object | null
data.settings.datamatrix нет object
data.settings.datamatrix.enabled да boolean false
data.settings.datamatrix.type нет string | null "standard"
data.settings.datamatrix.acceptance_enabled да boolean false
data.settings.datamatrix.picking_enabled да boolean false
data.settings.datamatrix.packing_enabled да boolean false
data.settings.datamatrix.validation_mode нет enum:int64 enum: 0, 1, 2 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. 1
data.settings.expiration_date_enabled нет boolean true
data.settings.production_date_enabled нет boolean true
data.settings.batch_enabled нет boolean true
data.settings.auto_acceptance_enabled нет boolean false
data.settings.order_auto_conduct_mode нет enum:int64 | null enum: 0, 1, 2, 3 Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. 0
data.settings.require_acceptance_dimensions нет boolean false
data.settings.crossdock_enabled нет boolean Allows cross-docking for a client warehouse. true
data.document нет object | null
data.document.number нет string | null "WH-DOC-1001"
data.document.date нет string:date | null "2026-07-14"
data.custom нет object {"billing_group":"Varna B"}

Примеры запроса

default

{
  "data": {
    "name": "Client Warehouse Varna",
    "type_id": 2,
    "parent_id": 42
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Warehouse Склад или клиентский склад.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.name да string "Warehouse Sofia"
data.status_id нет integer:int64 | null ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 1
data.type_id нет integer:int64 | null ID типа склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 2
data.domain_id нет integer:int64 | null min: 1 3
data.owner_user_id нет integer:int64 | null min: 1 15
data.parent_id нет integer:int64 | null min: 1 41
data.country_id нет integer:int64 | null min: 1 100
data.currency_id нет integer:int64 | null min: 1 978
data.company_id нет integer:int64 | null min: 1 7
data.service_provider_company_id нет integer:int64 | null min: 1 8
data.billing_setting_id нет integer:int64 | null min: 1 12
data.settings нет WarehouseSettings
data.settings.datamatrix нет object
data.settings.datamatrix.enabled да boolean false
data.settings.datamatrix.type нет string | null "standard"
data.settings.datamatrix.acceptance_enabled да boolean false
data.settings.datamatrix.picking_enabled да boolean false
data.settings.datamatrix.packing_enabled да boolean false
data.settings.datamatrix.validation_mode нет enum:int64 enum: 0, 1, 2 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. 1
data.settings.expiration_date_enabled нет boolean true
data.settings.production_date_enabled нет boolean true
data.settings.batch_enabled нет boolean true
data.settings.auto_acceptance_enabled нет boolean false
data.settings.order_auto_conduct_mode нет enum:int64 | null enum: 0, 1, 2, 3 Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. 0
data.settings.require_acceptance_dimensions нет boolean false
data.settings.crossdock_enabled нет boolean Allows cross-docking for a client warehouse. true
data.document нет WarehouseDocument
data.document.number нет string | null "WH-DOC-1001"
data.document.date нет string:date | null "2026-07-14"
data.custom нет object Специфичные для установки атрибуты склада. {"billing_group":"Sofia A"}
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 42,
    "name": "Warehouse Sofia",
    "status_id": 1,
    "type_id": 2,
    "domain_id": 3,
    "owner_user_id": 15,
    "parent_id": 41,
    "country_id": 100,
    "currency_id": 978,
    "company_id": 7,
    "service_provider_company_id": 8,
    "billing_setting_id": 12,
    "settings": {
      "datamatrix": {
        "enabled": true,
        "type": "standard",
        "acceptance_enabled": true,
        "picking_enabled": true,
        "packing_enabled": false
      },
      "expiration_date_enabled": true,
      "production_date_enabled": true,
      "batch_enabled": true,
      "auto_acceptance_enabled": false,
      "order_auto_conduct_mode": 0,
      "require_acceptance_dimensions": false
    },
    "document": {
      "number": "WH-DOC-1001",
      "date": "2026-07-14"
    },
    "custom": {
      "billing_group": "Sofia A"
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/warehouses/{id}

Получить склад

operationIdgetWarehouses
РазделСклады
БезопасностьbearerAuth

Возвращает один ресурс: склад, если он существует и видим аутентифицированному аккаунту.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/warehouses/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID склада. 1001

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Warehouse Склад или клиентский склад.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.name да string "Warehouse Sofia"
data.status_id нет integer:int64 | null ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 1
data.type_id нет integer:int64 | null ID типа склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 2
data.domain_id нет integer:int64 | null min: 1 3
data.owner_user_id нет integer:int64 | null min: 1 15
data.parent_id нет integer:int64 | null min: 1 41
data.country_id нет integer:int64 | null min: 1 100
data.currency_id нет integer:int64 | null min: 1 978
data.company_id нет integer:int64 | null min: 1 7
data.service_provider_company_id нет integer:int64 | null min: 1 8
data.billing_setting_id нет integer:int64 | null min: 1 12
data.settings нет WarehouseSettings
data.settings.datamatrix нет object
data.settings.datamatrix.enabled да boolean false
data.settings.datamatrix.type нет string | null "standard"
data.settings.datamatrix.acceptance_enabled да boolean false
data.settings.datamatrix.picking_enabled да boolean false
data.settings.datamatrix.packing_enabled да boolean false
data.settings.datamatrix.validation_mode нет enum:int64 enum: 0, 1, 2 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. 1
data.settings.expiration_date_enabled нет boolean true
data.settings.production_date_enabled нет boolean true
data.settings.batch_enabled нет boolean true
data.settings.auto_acceptance_enabled нет boolean false
data.settings.order_auto_conduct_mode нет enum:int64 | null enum: 0, 1, 2, 3 Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. 0
data.settings.require_acceptance_dimensions нет boolean false
data.settings.crossdock_enabled нет boolean Allows cross-docking for a client warehouse. true
data.document нет WarehouseDocument
data.document.number нет string | null "WH-DOC-1001"
data.document.date нет string:date | null "2026-07-14"
data.custom нет object Специфичные для установки атрибуты склада. {"billing_group":"Sofia A"}
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 42,
    "name": "Warehouse Sofia",
    "status_id": 1,
    "type_id": 2,
    "domain_id": 3,
    "owner_user_id": 15,
    "parent_id": 41,
    "country_id": 100,
    "currency_id": 978,
    "company_id": 7,
    "service_provider_company_id": 8,
    "billing_setting_id": 12,
    "settings": {
      "datamatrix": {
        "enabled": true,
        "type": "standard",
        "acceptance_enabled": true,
        "picking_enabled": true,
        "packing_enabled": false
      },
      "expiration_date_enabled": true,
      "production_date_enabled": true,
      "batch_enabled": true,
      "auto_acceptance_enabled": false,
      "order_auto_conduct_mode": 0,
      "require_acceptance_dimensions": false
    },
    "document": {
      "number": "WH-DOC-1001",
      "date": "2026-07-14"
    },
    "custom": {
      "billing_group": "Sofia A"
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/warehouses/{id}

Обновить склад

operationIdreplaceWarehouses
РазделСклады
БезопасностьbearerAuth

Updates editable warehouse fields. Operational flags, document metadata, billing setting, and custom attributes may be changed when permitted.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/warehouses/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID склада. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

ReplaceWarehouseRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да ReplaceWarehousePayload Legacy PUT payload. Текущий backend применяет семантику частичного обновления.
data.name нет string | null minLength: 1 "Client Warehouse Varna"
data.status_id нет integer:int64 | null ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 1
data.owner_user_id нет integer:int64 | null min: 1 15
data.parent_id нет integer:int64 | null min: 1 42
data.country_id нет integer:int64 | null min: 1 100
data.currency_id нет integer:int64 | null min: 1 978
data.company_id нет integer:int64 | null min: 1 7
data.service_provider_company_id нет integer:int64 | null min: 1 8
data.billing_setting_id нет integer:int64 | null min: 1 12
data.settings нет object | null
data.settings.datamatrix нет object
data.settings.datamatrix.enabled да boolean false
data.settings.datamatrix.type нет string | null "standard"
data.settings.datamatrix.acceptance_enabled да boolean false
data.settings.datamatrix.picking_enabled да boolean false
data.settings.datamatrix.packing_enabled да boolean false
data.settings.datamatrix.validation_mode нет enum:int64 enum: 0, 1, 2 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. 1
data.settings.expiration_date_enabled нет boolean true
data.settings.production_date_enabled нет boolean true
data.settings.batch_enabled нет boolean true
data.settings.auto_acceptance_enabled нет boolean false
data.settings.order_auto_conduct_mode нет enum:int64 | null enum: 0, 1, 2, 3 Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. 0
data.settings.require_acceptance_dimensions нет boolean false
data.settings.crossdock_enabled нет boolean Allows cross-docking for a client warehouse. true
data.document нет object | null
data.document.number нет string | null "WH-DOC-1001"
data.document.date нет string:date | null "2026-07-14"
data.custom нет object {"billing_group":"Varna B"}

Примеры запроса

default

{
  "data": {
    "name": "Client Warehouse Varna",
    "billing_setting_id": 12
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Warehouse Склад или клиентский склад.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.name да string "Warehouse Sofia"
data.status_id нет integer:int64 | null ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 1
data.type_id нет integer:int64 | null ID типа склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 2
data.domain_id нет integer:int64 | null min: 1 3
data.owner_user_id нет integer:int64 | null min: 1 15
data.parent_id нет integer:int64 | null min: 1 41
data.country_id нет integer:int64 | null min: 1 100
data.currency_id нет integer:int64 | null min: 1 978
data.company_id нет integer:int64 | null min: 1 7
data.service_provider_company_id нет integer:int64 | null min: 1 8
data.billing_setting_id нет integer:int64 | null min: 1 12
data.settings нет WarehouseSettings
data.settings.datamatrix нет object
data.settings.datamatrix.enabled да boolean false
data.settings.datamatrix.type нет string | null "standard"
data.settings.datamatrix.acceptance_enabled да boolean false
data.settings.datamatrix.picking_enabled да boolean false
data.settings.datamatrix.packing_enabled да boolean false
data.settings.datamatrix.validation_mode нет enum:int64 enum: 0, 1, 2 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. 1
data.settings.expiration_date_enabled нет boolean true
data.settings.production_date_enabled нет boolean true
data.settings.batch_enabled нет boolean true
data.settings.auto_acceptance_enabled нет boolean false
data.settings.order_auto_conduct_mode нет enum:int64 | null enum: 0, 1, 2, 3 Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. 0
data.settings.require_acceptance_dimensions нет boolean false
data.settings.crossdock_enabled нет boolean Allows cross-docking for a client warehouse. true
data.document нет WarehouseDocument
data.document.number нет string | null "WH-DOC-1001"
data.document.date нет string:date | null "2026-07-14"
data.custom нет object Специфичные для установки атрибуты склада. {"billing_group":"Sofia A"}
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 42,
    "name": "Warehouse Sofia",
    "status_id": 1,
    "type_id": 2,
    "domain_id": 3,
    "owner_user_id": 15,
    "parent_id": 41,
    "country_id": 100,
    "currency_id": 978,
    "company_id": 7,
    "service_provider_company_id": 8,
    "billing_setting_id": 12,
    "settings": {
      "datamatrix": {
        "enabled": true,
        "type": "standard",
        "acceptance_enabled": true,
        "picking_enabled": true,
        "packing_enabled": false
      },
      "expiration_date_enabled": true,
      "production_date_enabled": true,
      "batch_enabled": true,
      "auto_acceptance_enabled": false,
      "order_auto_conduct_mode": 0,
      "require_acceptance_dimensions": false
    },
    "document": {
      "number": "WH-DOC-1001",
      "date": "2026-07-14"
    },
    "custom": {
      "billing_group": "Sofia A"
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/warehouses/{id}

Обновить склад

operationIdpatchWarehouses
РазделСклады
БезопасностьbearerAuth

Update warehouse. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/warehouses/1001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 ID склада. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

PatchWarehouseRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да PatchWarehousePayload
data.name нет string | null minLength: 1 "Client Warehouse Varna"
data.status_id нет integer:int64 | null ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 1
data.owner_user_id нет integer:int64 | null min: 1 15
data.parent_id нет integer:int64 | null min: 1 42
data.country_id нет integer:int64 | null min: 1 100
data.currency_id нет integer:int64 | null min: 1 978
data.company_id нет integer:int64 | null min: 1 7
data.service_provider_company_id нет integer:int64 | null min: 1 8
data.billing_setting_id нет integer:int64 | null min: 1 12
data.settings нет object | null
data.settings.datamatrix нет object
data.settings.datamatrix.enabled да boolean false
data.settings.datamatrix.type нет string | null "standard"
data.settings.datamatrix.acceptance_enabled да boolean false
data.settings.datamatrix.picking_enabled да boolean false
data.settings.datamatrix.packing_enabled да boolean false
data.settings.datamatrix.validation_mode нет enum:int64 enum: 0, 1, 2 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. 1
data.settings.expiration_date_enabled нет boolean true
data.settings.production_date_enabled нет boolean true
data.settings.batch_enabled нет boolean true
data.settings.auto_acceptance_enabled нет boolean false
data.settings.order_auto_conduct_mode нет enum:int64 | null enum: 0, 1, 2, 3 Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. 0
data.settings.require_acceptance_dimensions нет boolean false
data.settings.crossdock_enabled нет boolean Allows cross-docking for a client warehouse. true
data.document нет object | null
data.document.number нет string | null "WH-DOC-1001"
data.document.date нет string:date | null "2026-07-14"
data.custom нет object {"billing_group":"Varna B"}

Примеры запроса

default

{
  "data": {
    "billing_setting_id": 12
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да Warehouse Склад или клиентский склад.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.name да string "Warehouse Sofia"
data.status_id нет integer:int64 | null ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 1
data.type_id нет integer:int64 | null ID типа склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. 2
data.domain_id нет integer:int64 | null min: 1 3
data.owner_user_id нет integer:int64 | null min: 1 15
data.parent_id нет integer:int64 | null min: 1 41
data.country_id нет integer:int64 | null min: 1 100
data.currency_id нет integer:int64 | null min: 1 978
data.company_id нет integer:int64 | null min: 1 7
data.service_provider_company_id нет integer:int64 | null min: 1 8
data.billing_setting_id нет integer:int64 | null min: 1 12
data.settings нет WarehouseSettings
data.settings.datamatrix нет object
data.settings.datamatrix.enabled да boolean false
data.settings.datamatrix.type нет string | null "standard"
data.settings.datamatrix.acceptance_enabled да boolean false
data.settings.datamatrix.picking_enabled да boolean false
data.settings.datamatrix.packing_enabled да boolean false
data.settings.datamatrix.validation_mode нет enum:int64 enum: 0, 1, 2 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. 1
data.settings.expiration_date_enabled нет boolean true
data.settings.production_date_enabled нет boolean true
data.settings.batch_enabled нет boolean true
data.settings.auto_acceptance_enabled нет boolean false
data.settings.order_auto_conduct_mode нет enum:int64 | null enum: 0, 1, 2, 3 Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. 0
data.settings.require_acceptance_dimensions нет boolean false
data.settings.crossdock_enabled нет boolean Allows cross-docking for a client warehouse. true
data.document нет WarehouseDocument
data.document.number нет string | null "WH-DOC-1001"
data.document.date нет string:date | null "2026-07-14"
data.custom нет object Специфичные для установки атрибуты склада. {"billing_group":"Sofia A"}
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 42,
    "name": "Warehouse Sofia",
    "status_id": 1,
    "type_id": 2,
    "domain_id": 3,
    "owner_user_id": 15,
    "parent_id": 41,
    "country_id": 100,
    "currency_id": 978,
    "company_id": 7,
    "service_provider_company_id": 8,
    "billing_setting_id": 12,
    "settings": {
      "datamatrix": {
        "enabled": true,
        "type": "standard",
        "acceptance_enabled": true,
        "picking_enabled": true,
        "packing_enabled": false
      },
      "expiration_date_enabled": true,
      "production_date_enabled": true,
      "batch_enabled": true,
      "auto_acceptance_enabled": false,
      "order_auto_conduct_mode": 0,
      "require_acceptance_dimensions": false
    },
    "document": {
      "number": "WH-DOC-1001",
      "date": "2026-07-14"
    },
    "custom": {
      "billing_group": "Sofia A"
    },
    "created_at": "2026-07-14T09:00:00Z",
    "updated_at": "2026-07-14T09:30:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}

Кросс-докинг

GET /api/v2/crossdock/cases

Получить список cross-dock-кейсов

operationIdcrossDockListCases
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock cases in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 250
Количество записей на странице. По умолчанию 50; максимум 250. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 50
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, planned_arrival_at, planned_departure_at, created_at, updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "-id"
include query нет string form false Связанные сущности через запятую. Допустимые значения: acceptance, orders, targets. Этот фильтр также можно передать как filter[include], если это поддерживает Laravel query adapter. "acceptance,orders,targets"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
status query нет string form true Фильтр по status с точным совпадением. Этот фильтр также можно передать как filter[status], если это поддерживает Laravel query adapter. "waiting"
physical_warehouse_id query нет integer:int64 form true min: 1 Фильтр по physical_warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[physical_warehouse_id], если это поддерживает Laravel query adapter. 41
client_warehouse_id query нет integer:int64 form true min: 1 Фильтр по client_warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[client_warehouse_id], если это поддерживает Laravel query adapter. 43
acceptance_id query нет integer:int64 form true min: 1 Фильтр по acceptance_id с точным совпадением. Этот фильтр также можно передать как filter[acceptance_id], если это поддерживает Laravel query adapter. 1
planned_arrival_at_from query нет string:date form true Нижняя включительная граница даты для planned_arrival_at. Этот фильтр также можно передать как filter[planned_arrival_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
planned_arrival_at_to query нет string:date form true Верхняя включительная граница даты для planned_arrival_at. Этот фильтр также можно передать как filter[planned_arrival_at_to], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_from query нет string:date form true Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
created_at_to query нет string:date form true Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. "2026-07-14"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockCase>
data[] нет CrossDockCase Cross-dock aggregate linking inbound supply, outbound demand, execution, exceptions, and loading.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].public_id да string "01J2CROSSDOCKCASE000000001"
data[].external_id нет string | null "XD-2026-001"
data[].domain_id да integer:int64 min: 1 3
data[].physical_warehouse_id да integer:int64 min: 1 42
data[].client_warehouse_id нет integer:int64 | null min: 1 43
data[].client_id нет integer:int64 | null min: 1 15
data[].process_version да string "direct_order_v1"
data[].status да enum enum: draft, planned, released, in_progress, exception, completed, cancelled "released"
data[].status_before_exception нет string | null "released"
data[].plan_hash нет string | null minLength: 64
maxLength: 64
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
data[].strategy_version нет string | null "fifo-v1"
data[].planned_arrival_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].cutoff_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].planned_departure_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].planned_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].released_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].version да integer:int64 min: 1 4
data[].acceptance нет object | null
data[].acceptance.id да integer:int64 min: 1 5101
data[].acceptance.external_id нет string | null "ASN-100245"
data[].acceptance.type_id да integer:int64 1
data[].acceptance.type_code да string "crossdock"
data[].acceptance.status_id да integer:int64 1
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "public_id": "01J2CROSSDOCKCASE000000001",
      "domain_id": 3,
      "physical_warehouse_id": 42,
      "process_version": "direct_order_v1",
      "status": "released",
      "version": 4
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases",
    "per_page": 50,
    "to": 50,
    "total": 73
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}

Получить cross-dock-кейс

operationIdcrossDockGetCase
РазделКросс-докинг
БезопасностьbearerAuth

Get cross-dock case in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockCase Cross-dock aggregate linking inbound supply, outbound demand, execution, exceptions, and loading.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.public_id да string "01J2CROSSDOCKCASE000000001"
data.external_id нет string | null "XD-2026-001"
data.domain_id да integer:int64 min: 1 3
data.physical_warehouse_id да integer:int64 min: 1 42
data.client_warehouse_id нет integer:int64 | null min: 1 43
data.client_id нет integer:int64 | null min: 1 15
data.process_version да string "direct_order_v1"
data.status да enum enum: draft, planned, released, in_progress, exception, completed, cancelled "released"
data.status_before_exception нет string | null "released"
data.plan_hash нет string | null minLength: 64
maxLength: 64
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
data.strategy_version нет string | null "fifo-v1"
data.planned_arrival_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.cutoff_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.planned_departure_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.planned_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.released_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.version да integer:int64 min: 1 4
data.acceptance нет object | null
data.acceptance.id да integer:int64 min: 1 5101
data.acceptance.external_id нет string | null "ASN-100245"
data.acceptance.type_id да integer:int64 1
data.acceptance.type_code да string "crossdock"
data.acceptance.status_id да integer:int64 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 1001,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "domain_id": 3,
    "physical_warehouse_id": 42,
    "process_version": "direct_order_v1",
    "status": "released",
    "version": 4
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
PATCH /api/v2/crossdock/cases/{case}

Обновить реквизиты cross-dock-кейса

operationIdcrossDockUpdateCaseMetadata
РазделКросс-докинг
БезопасностьbearerAuth

Update cross-dock case metadata in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockUpdateCaseRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 3
data.external_id нет string | null maxLength: 190 "XD-2026-001"
data.planned_arrival_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.cutoff_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.planned_departure_at нет string:date-time | null "2026-07-14T10:30:00Z"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 3
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockCase Cross-dock aggregate linking inbound supply, outbound demand, execution, exceptions, and loading.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.public_id да string "01J2CROSSDOCKCASE000000001"
data.external_id нет string | null "XD-2026-001"
data.domain_id да integer:int64 min: 1 3
data.physical_warehouse_id да integer:int64 min: 1 42
data.client_warehouse_id нет integer:int64 | null min: 1 43
data.client_id нет integer:int64 | null min: 1 15
data.process_version да string "direct_order_v1"
data.status да enum enum: draft, planned, released, in_progress, exception, completed, cancelled "released"
data.status_before_exception нет string | null "released"
data.plan_hash нет string | null minLength: 64
maxLength: 64
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
data.strategy_version нет string | null "fifo-v1"
data.planned_arrival_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.cutoff_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.planned_departure_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.planned_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.released_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.version да integer:int64 min: 1 4
data.acceptance нет object | null
data.acceptance.id да integer:int64 min: 1 5101
data.acceptance.external_id нет string | null "ASN-100245"
data.acceptance.type_id да integer:int64 1
data.acceptance.type_code да string "crossdock"
data.acceptance.status_id да integer:int64 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 1001,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "domain_id": 3,
    "physical_warehouse_id": 42,
    "process_version": "direct_order_v1",
    "status": "released",
    "version": 4
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/allocations

Получить распределения cross-dock

operationIdcrossDockListAllocations
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock allocations in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/allocations" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, created_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
state query нет string form true Фильтр по state с точным совпадением. Этот фильтр также можно передать как filter[state], если это поддерживает Laravel query adapter. "ready"
supply_id query нет integer:int64 form true min: 1 Фильтр по supply_id с точным совпадением. Этот фильтр также можно передать как filter[supply_id], если это поддерживает Laravel query adapter. 1
demand_id query нет integer:int64 form true min: 1 Фильтр по demand_id с точным совпадением. Этот фильтр также можно передать как filter[demand_id], если это поддерживает Laravel query adapter. 1

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockAllocation>
data[] нет CrossDockAllocation Planner decision assigning supply to demand.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].case_id да integer:int64 min: 1 4101
data[].supply_id да integer:int64 min: 1 4201
data[].demand_id да integer:int64 min: 1 4251
data[].base_quantity да number:float 4
data[].released_base_quantity нет number:float 4
data[].short_base_quantity нет number:float 0
data[].state да string "ready"
data[].state_before_exception нет string | null "ready"
data[].match_score нет number:float 1
data[].match_reason нет object
data[].match_reason.reason_codes нет array<string>
data[].match_reason.reason_codes[] нет string "base_product_match"
data[].version да integer:int64 2
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "case_id": 4101,
      "supply_id": 4201,
      "demand_id": 4251,
      "base_quantity": 4,
      "released_base_quantity": 4,
      "short_base_quantity": 0,
      "state": "ready",
      "match_score": 1,
      "version": 2
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/allocations?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/allocations?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/allocations?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/allocations",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/cancel

Отменить cross-dock-кейс

operationIdcrossDockCancelCase
РазделКросс-докинг
БезопасностьbearerAuth

Cancel cross-dock case in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/cancel" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockCancelCaseRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 3
data.reason да string maxLength: 5000 "Supplier cancelled shipment"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 3,
    "reason": "Supplier cancelled shipment"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/close

Закрыть cross-dock-кейс

operationIdcrossDockCloseCase
РазделКросс-докинг
БезопасностьbearerAuth

Close cross-dock case in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/close" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockCloseCaseRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 8

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 8
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/demands

Получить потребности cross-dock

operationIdcrossDockListDemands
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock demands in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/demands" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, priority, cutoff_at, created_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
state query нет string form true Фильтр по state с точным совпадением. Этот фильтр также можно передать как filter[state], если это поддерживает Laravel query adapter. "ready"
product_id query нет integer:int64 form true min: 1 Фильтр по product_id с точным совпадением. Этот фильтр также можно передать как filter[product_id], если это поддерживает Laravel query adapter. 1201
base_product_id query нет integer:int64 form true min: 1 Фильтр по base_product_id с точным совпадением. Этот фильтр также можно передать как filter[base_product_id], если это поддерживает Laravel query adapter. 1200
order_id query нет integer:int64 form true min: 1 Фильтр по order_id с точным совпадением. Этот фильтр также можно передать как filter[order_id], если это поддерживает Laravel query adapter. 1
target_id query нет integer:int64 form true min: 1 Фильтр по target_id с точным совпадением. Этот фильтр также можно передать как filter[target_id], если это поддерживает Laravel query adapter. 1

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockDemand>
data[] нет CrossDockDemand Outbound product demand linked to one order and target.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].case_id да integer:int64 min: 1 4101
data[].order_id да integer:int64 min: 1 8101
data[].order_line_id да integer:int64 min: 1 8201
data[].target_id да integer:int64 min: 1 4301
data[].product_id да integer:int64 min: 1 1201
data[].base_product_id да integer:int64 min: 1 1201
data[].quantity да number:float 4
data[].base_quantity да number:float 4
data[].allocated_base_quantity нет number:float 4
data[].fulfilled_base_quantity нет number:float 2
data[].state да string "released"
data[].state_before_exception нет string | null "released"
data[].priority нет integer:int64 100
data[].cutoff_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].ship_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].source_policy нет enum | null enum: crossdock_only, crossdock_then_stock, stock_allowed "crossdock_only"
data[].destination_ref нет string | null "SOF-LANE-1"
data[].carrier_ref нет string | null "CDEK"
data[].route_ref нет string | null "BG-SOF"
data[].version да integer:int64 2
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "case_id": 4101,
      "order_id": 8101,
      "order_line_id": 8201,
      "target_id": 4301,
      "product_id": 1201,
      "base_product_id": 1201,
      "quantity": 4,
      "base_quantity": 4,
      "allocated_base_quantity": 4,
      "fulfilled_base_quantity": 2,
      "state": "released",
      "priority": 100,
      "version": 2
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/demands?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/demands?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/demands?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/demands",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/events

Получить события аудита cross-dock

operationIdcrossDockListEvents
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock events in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/events" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, occurred_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
type query нет string form true Фильтр по type с точным совпадением. Этот фильтр также можно передать как filter[type], если это поддерживает Laravel query adapter. "inbound"
aggregate_type query нет string form true Фильтр по aggregate_type с точным совпадением. Этот фильтр также можно передать как filter[aggregate_type], если это поддерживает Laravel query adapter. "case"
command_id query нет string form true Фильтр по command_id с точным совпадением. Этот фильтр также можно передать как filter[command_id], если это поддерживает Laravel query adapter. "4fe557e8-70f7-4b36-a124-d3afad4041d4"
occurred_at_from query нет string:date form true Нижняя включительная граница даты для occurred_at. Этот фильтр также можно передать как filter[occurred_at_from], если это поддерживает Laravel query adapter. "2026-07-14"
occurred_at_to query нет string:date form true Верхняя включительная граница даты для occurred_at. Этот фильтр также можно передать как filter[occurred_at_to], если это поддерживает Laravel query adapter. "2026-07-14"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockEvent>
data[] нет CrossDockEvent Append-only cross-dock audit event.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].event_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data[].case_id да integer:int64 min: 1 4101
data[].aggregate_type да string "case"
data[].aggregate_id да string "01J2CROSSDOCKCASE000000001"
data[].aggregate_version да integer:int64 4
data[].type да string "crossdock.case.released"
data[].actor_id нет integer:int64 | null min: 1 25
data[].source да string "api"
data[].command_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data[].correlation_id нет string:uuid | null "4d9d6b9b-9c6d-4d2f-8c80-8f9a4d8b4f01"
data[].payload нет object
data[].occurred_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].recorded_at нет string:date-time | null "2026-07-14T10:30:00Z"
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "event_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
      "case_id": 4101,
      "aggregate_type": "case",
      "aggregate_id": "01J2CROSSDOCKCASE000000001",
      "aggregate_version": 4,
      "type": "crossdock.case.released",
      "source": "api"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/events?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/events?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/events?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/events",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/exceptions

Получить исключения cross-dock

operationIdcrossDockListExceptions
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock exceptions in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/exceptions" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, created_at, resolved_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
type query нет string form true Фильтр по type с точным совпадением. Этот фильтр также можно передать как filter[type], если это поддерживает Laravel query adapter. "inbound"
severity query нет string form true Фильтр по severity с точным совпадением. Этот фильтр также можно передать как filter[severity], если это поддерживает Laravel query adapter. "blocking"
status query нет string form true Фильтр по status с точным совпадением. Этот фильтр также можно передать как filter[status], если это поддерживает Laravel query adapter. "waiting"
task_id query нет integer:int64 form true min: 1 Фильтр по task_id с точным совпадением. Этот фильтр также можно передать как filter[task_id], если это поддерживает Laravel query adapter. 1
supply_id query нет integer:int64 form true min: 1 Фильтр по supply_id с точным совпадением. Этот фильтр также можно передать как filter[supply_id], если это поддерживает Laravel query adapter. 1
demand_id query нет integer:int64 form true min: 1 Фильтр по demand_id с точным совпадением. Этот фильтр также можно передать как filter[demand_id], если это поддерживает Laravel query adapter. 1

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockException>
data[] нет CrossDockException Operational discrepancy with explicit resolution history.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].public_id да string "01J2CROSSDOCKEXCEPTION001"
data[].case_id да integer:int64 min: 1 4101
data[].allocation_id нет integer:int64 | null min: 1 1001
data[].supply_id нет integer:int64 | null min: 1 1001
data[].demand_id нет integer:int64 | null min: 1 1001
data[].fulfillment_id нет integer:int64 | null min: 1 1001
data[].handling_unit_id нет integer:int64 | null min: 1 1001
data[].task_id нет integer:int64 | null min: 1 1001
data[].type да string "shortage"
data[].severity да enum enum: warning, blocking "blocking"
data[].status да string "open"
data[].expected нет object | null
data[].actual нет object | null
data[].resolution_policy нет string | null "fallback"
data[].resolution_decision нет string | null "fallback_storage"
data[].reason нет string | null "Two units missing"
data[].movement_group_id нет string | null "XD-MOVE-4101-2"
data[].opened_by нет integer:int64 | null min: 1 25
data[].resolved_by нет integer:int64 | null min: 1 26
data[].resolved_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].version да integer:int64 1
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "public_id": "01J2CROSSDOCKEXCEPTION001",
      "case_id": 4101,
      "type": "shortage",
      "severity": "blocking",
      "status": "open",
      "version": 1
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/exceptions?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/exceptions?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/exceptions?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/exceptions",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/exceptions

Открыть исключение cross-dock

operationIdcrossDockOpenException
РазделКросс-докинг
БезопасностьbearerAuth

Open cross-dock exception in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/exceptions" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockOpenExceptionRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.type да enum enum: shortage, overage, damaged, sku_mismatch, lot_mismatch, expired, unknown_hu, wrong_target, capacity, timeout, cancelled_demand, transport_delay "shortage"
data.severity нет enum enum: warning, blocking "blocking"
data.allocation_id нет integer:int64 | null min: 1 1001
data.supply_id нет integer:int64 | null min: 1 1001
data.demand_id нет integer:int64 | null min: 1 1001
data.fulfillment_id нет integer:int64 | null min: 1 1001
data.handling_unit_id нет integer:int64 | null min: 1 1001
data.task_id нет integer:int64 | null min: 1 1001
data.expected нет object | null
data.actual нет object | null
data.resolution_policy нет string | null maxLength: 50 "fallback"
data.reason нет string | null maxLength: 5000 "Two units missing"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "type": "shortage",
    "severity": "blocking"
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/fallback

Выполнить fallback cross-dock через alias

operationIdcrossDockExecuteFallbackByAlias
РазделКросс-докинг
БезопасностьbearerAuth

Совместимый alias команды fallback; в новых клиентах используйте /fallbacks.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/fallback" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockFallbackRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.supply_id да integer:int64 min: 1 4201
data.exception_id нет integer:int64 | null min: 1 4951
data.product_id да integer:int64 min: 1 1201
data.base_quantity да number:float min: 0.0001 2
data.source_place_id нет integer:int64 | null min: 1 800
data.target_place_id да integer:int64 min: 1 950
data.route да enum enum: storage, quarantine "quarantine"
data.source_barcode нет string | null maxLength: 190 "4601234567890"
data.reason нет string | null maxLength: 5000 "Damaged package"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "supply_id": 4201,
    "product_id": 1201,
    "base_quantity": 2,
    "target_place_id": 950,
    "route": "quarantine"
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/fallbacks

Получить компенсирующие маршруты cross-dock

operationIdcrossDockListFallbacks
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock fallbacks in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/fallbacks" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, created_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
supply_id query нет integer:int64 form true min: 1 Фильтр по supply_id с точным совпадением. Этот фильтр также можно передать как filter[supply_id], если это поддерживает Laravel query adapter. 1
exception_id query нет integer:int64 form true min: 1 Фильтр по exception_id с точным совпадением. Этот фильтр также можно передать как filter[exception_id], если это поддерживает Laravel query adapter. 1
product_id query нет integer:int64 form true min: 1 Фильтр по product_id с точным совпадением. Этот фильтр также можно передать как filter[product_id], если это поддерживает Laravel query adapter. 1201
route query нет string form true Фильтр по route с точным совпадением. Этот фильтр также можно передать как filter[route], если это поддерживает Laravel query adapter. "quarantine"
state query нет string form true Фильтр по state с точным совпадением. Этот фильтр также можно передать как filter[state], если это поддерживает Laravel query adapter. "ready"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockFallback>
data[] нет CrossDockFallback Compensating route from cross-dock flow to storage or quarantine.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].public_id да string "01J2CROSSDOCKFALLBACK0001"
data[].case_id да integer:int64 min: 1 4101
data[].supply_id да integer:int64 min: 1 4201
data[].exception_id нет integer:int64 | null min: 1 4951
data[].product_id да integer:int64 min: 1 1201
data[].base_product_id да integer:int64 min: 1 1201
data[].quantity да number:float 2
data[].base_quantity да number:float 2
data[].source_place_id нет integer:int64 | null min: 1 800
data[].target_place_id да integer:int64 min: 1 950
data[].route да enum enum: storage, quarantine "quarantine"
data[].acceptance_offer_id нет integer:int64 | null min: 1 1001
data[].warehouse_item_id нет integer:int64 | null min: 1 1001
data[].state да string "completed"
data[].reason нет string | null "Damaged package"
data[].movement_group_id нет string | null "XD-FALLBACK-4101-1"
data[].created_by нет integer:int64 | null min: 1 25
data[].version да integer:int64 1
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "public_id": "01J2CROSSDOCKFALLBACK0001",
      "case_id": 4101,
      "supply_id": 4201,
      "product_id": 1201,
      "base_product_id": 1201,
      "quantity": 2,
      "base_quantity": 2,
      "target_place_id": 950,
      "route": "quarantine",
      "state": "completed",
      "version": 1
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/fallbacks?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/fallbacks?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/fallbacks?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/fallbacks",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/fallbacks

Выполнить fallback cross-dock

operationIdcrossDockExecuteFallback
РазделКросс-докинг
БезопасностьbearerAuth

Перемещает выбранное количество в хранение или карантин, сохраняя lineage источника и разрешая связанное исключение.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/fallbacks" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockFallbackRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.supply_id да integer:int64 min: 1 4201
data.exception_id нет integer:int64 | null min: 1 4951
data.product_id да integer:int64 min: 1 1201
data.base_quantity да number:float min: 0.0001 2
data.source_place_id нет integer:int64 | null min: 1 800
data.target_place_id да integer:int64 min: 1 950
data.route да enum enum: storage, quarantine "quarantine"
data.source_barcode нет string | null maxLength: 190 "4601234567890"
data.reason нет string | null maxLength: 5000 "Damaged package"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "supply_id": 4201,
    "product_id": 1201,
    "base_quantity": 2,
    "target_place_id": 950,
    "route": "quarantine"
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/fulfillments

Получить исполненные фрагменты cross-dock

operationIdcrossDockListFulfillments
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock fulfillments in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/fulfillments" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, created_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
state query нет string form true Фильтр по state с точным совпадением. Этот фильтр также можно передать как filter[state], если это поддерживает Laravel query adapter. "ready"
allocation_id query нет integer:int64 form true min: 1 Фильтр по allocation_id с точным совпадением. Этот фильтр также можно передать как filter[allocation_id], если это поддерживает Laravel query adapter. 1
supply_id query нет integer:int64 form true min: 1 Фильтр по supply_id с точным совпадением. Этот фильтр также можно передать как filter[supply_id], если это поддерживает Laravel query adapter. 1
demand_id query нет integer:int64 form true min: 1 Фильтр по demand_id с точным совпадением. Этот фильтр также можно передать как filter[demand_id], если это поддерживает Laravel query adapter. 1
target_id query нет integer:int64 form true min: 1 Фильтр по target_id с точным совпадением. Этот фильтр также можно передать как filter[target_id], если это поддерживает Laravel query adapter. 1
product_id query нет integer:int64 form true min: 1 Фильтр по product_id с точным совпадением. Этот фильтр также можно передать как filter[product_id], если это поддерживает Laravel query adapter. 1201
base_product_id query нет integer:int64 form true min: 1 Фильтр по base_product_id с точным совпадением. Этот фильтр также можно передать как filter[base_product_id], если это поддерживает Laravel query adapter. 1200

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockFulfillment>
data[] нет CrossDockFulfillment Physically confirmed cross-dock fragment with exact product and quant lineage.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].fragment_uuid да string:uuid "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data[].case_id да integer:int64 min: 1 4101
data[].allocation_id да integer:int64 min: 1 4501
data[].supply_id да integer:int64 min: 1 4201
data[].demand_id да integer:int64 min: 1 4251
data[].target_id да integer:int64 min: 1 4301
data[].handling_unit_id нет integer:int64 | null min: 1 4601
data[].container_place_id нет integer:int64 | null min: 1 901
data[].source_warehouse_item_id нет integer:int64 | null min: 1 4701
data[].product_id да integer:int64 min: 1 1201
data[].base_product_id да integer:int64 min: 1 1201
data[].quantity да number:float 2
data[].base_quantity да number:float 2
data[].batch нет string | null "LOT-2026"
data[].production_date нет string:date | null "2026-07-14"
data[].expiration_date нет string:date | null "2027-01-15"
data[].state да string "routed"
data[].source_place_id нет integer:int64 | null min: 1 800
data[].target_place_id нет integer:int64 | null min: 1 900
data[].movement_group_id нет string | null "XD-MOVE-4101-1"
data[].version да integer:int64 1
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "fragment_uuid": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4",
      "case_id": 4101,
      "allocation_id": 4501,
      "supply_id": 4201,
      "demand_id": 4251,
      "target_id": 4301,
      "product_id": 1201,
      "base_product_id": 1201,
      "quantity": 2,
      "base_quantity": 2,
      "state": "routed",
      "version": 1
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/fulfillments?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/fulfillments?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/fulfillments?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/fulfillments",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/labels

Получить этикетки направлений cross-dock

operationIdcrossDockListTargetLabels
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock target labels in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/labels" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, created_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
status query нет string form true Фильтр по status с точным совпадением. Этот фильтр также можно передать как filter[status], если это поддерживает Laravel query adapter. "waiting"
target_id query нет integer:int64 form true min: 1 Фильтр по target_id с точным совпадением. Этот фильтр также можно передать как filter[target_id], если это поддерживает Laravel query adapter. 1
version query нет integer:int64 form true min: 1 Фильтр по version с точным совпадением. Этот фильтр также можно передать как filter[version], если это поддерживает Laravel query adapter. 1

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockTargetLabel>
data[] нет CrossDockTargetLabel Versioned, signed target barcode; only the current ready label can confirm a target.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].public_id да string "01J2CROSSDOCKLABEL0000001"
data[].target_id да integer:int64 min: 1 4301
data[].version да integer:int64 2
data[].barcode да string "XD1.4301.2.signature"
data[].template_version да string "crossdock-target-v1"
data[].artifact_ref нет string | null "crossdock/labels/4401.pdf"
data[].artifact_hash нет string | null "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
data[].status да string "ready"
data[].reprint_count нет integer:int64 0
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "public_id": "01J2CROSSDOCKLABEL0000001",
      "target_id": 4301,
      "version": 2,
      "barcode": "XD1.4301.2.signature",
      "template_version": "crossdock-target-v1",
      "status": "ready",
      "reprint_count": 0
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/labels?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/labels?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/labels?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/labels",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/labels/print-jobs

Создать задания печати cross-dock

operationIdcrossDockCreatePrintJobs
РазделКросс-докинг
БезопасностьbearerAuth

Create cross-dock print jobs in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/labels/print-jobs" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockCreatePrintJobsRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 5
data.label_ids нет array<integer:int64> minItems: 1
data.label_ids[] нет integer:int64 min: 1 4401
data.printer_id нет integer:int64 | null min: 1 55
data.device_id нет string | null maxLength: 190 "gate-printer-1"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 5
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/loading-visits

Получить связи кейса с визитами погрузки

operationIdcrossDockListCaseLoadingVisitAssociations
РазделКросс-докинг
БезопасностьbearerAuth

List case loading-visit associations in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/loading-visits" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, created_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
loading_visit_id query нет integer:int64 form true min: 1 Фильтр по loading_visit_id с точным совпадением. Этот фильтр также можно передать как filter[loading_visit_id], если это поддерживает Laravel query adapter. 1
document_type query нет string form true Фильтр по document_type с точным совпадением. Этот фильтр также можно передать как filter[document_type], если это поддерживает Laravel query adapter. "acceptance"
document_id query нет integer:int64 form true min: 1 Фильтр по document_id с точным совпадением. Этот фильтр также можно передать как filter[document_id], если это поддерживает Laravel query adapter. 5101
role query нет string form true Фильтр по role с точным совпадением. Этот фильтр также можно передать как filter[role], если это поддерживает Laravel query adapter. "outbound"
status query нет string form true Фильтр по status с точным совпадением. Этот фильтр также можно передать как filter[status], если это поддерживает Laravel query adapter. "waiting"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockLoadingAssociation>
data[] нет CrossDockLoadingAssociation Association between a cross-dock document and a loading visit.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].case_id нет integer:int64 | null min: 1 4101
data[].loading_visit_id да integer:int64 min: 1 6101
data[].document_type да string "order"
data[].document_id да integer:int64 min: 1 8101
data[].role да string "outbound"
data[].status да string "attached"
data[].created_by нет integer:int64 | null min: 1 25
data[].detached_by нет integer:int64 | null min: 1 1001
data[].detached_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].visit нет object | null
data[].visit.id да integer:int64 min: 1 6101
data[].visit.type да string "outbound"
data[].visit.status да string "approved"
data[].visit.physical_warehouse_id да integer:int64 min: 1 42
data[].visit.gate_id нет integer:int64 | null min: 1 3
data[].visit.planned_at нет string:date-time | null "2026-07-14T10:30:00Z"
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "loading_visit_id": 6101,
      "document_type": "order",
      "document_id": 8101,
      "role": "outbound",
      "status": "attached"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/loading-visits?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/loading-visits?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/loading-visits?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/loading-visits",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/loading-visits/attach

Привязать визит погрузки к cross-dock-кейсу

operationIdcrossDockAttachLoadingVisitToCase
РазделКросс-докинг
БезопасностьbearerAuth

Attach loading visit to cross-dock case in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/loading-visits/attach" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockLoadingVisitLinkRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 5
data.loading_visit_id да integer:int64 min: 1 6101

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 5,
    "loading_visit_id": 6101
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/loading-visits/detach

Отвязать визит погрузки от cross-dock-кейса

operationIdcrossDockDetachLoadingVisitFromCase
РазделКросс-докинг
БезопасностьbearerAuth

Detach loading visit from cross-dock case in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/loading-visits/detach" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockLoadingVisitLinkRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 5
data.loading_visit_id да integer:int64 min: 1 6101

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 5,
    "loading_visit_id": 6101
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/loading-visits/{visit}/attach

Привязать визит погрузки по ID в пути

operationIdcrossDockAttachLoadingVisitByPathId
РазделКросс-докинг
БезопасностьbearerAuth

Attach loading visit by path ID in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/loading-visits/1001/attach" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
visit path да integer:int64 min: 1 ID визита погрузки. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockLoadingVisitPathLinkRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 5

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 5
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/loading-visits/{visit}/detach

Отвязать визит погрузки по ID в пути

operationIdcrossDockDetachLoadingVisitByPathId
РазделКросс-докинг
БезопасностьbearerAuth

Detach loading visit by path ID in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/loading-visits/1001/detach" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
visit path да integer:int64 min: 1 ID визита погрузки. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockLoadingVisitPathLinkRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 5

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 5
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/loading/scans

Подтвердить погрузочный скан cross-dock

operationIdcrossDockConfirmLoadingScan
РазделКросс-докинг
БезопасностьbearerAuth

Подтверждает погрузку актуальной этикетки направления заказа в связанную исходящую заявку.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/loading/scans" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockLoadingScanRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.loading_visit_id да integer:int64 min: 1 6101
data.order_id да integer:int64 min: 1 8101
data.label_barcode да string maxLength: 100 "XD1.4301.2.signature"
data.device_id нет string | null maxLength: 190 "gate-tsd-01"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "loading_visit_id": 6101,
    "order_id": 8101,
    "label_barcode": "XD1.4301.2.signature"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
PUT /api/v2/crossdock/cases/{case}/manifest

Заменить манифест грузовых единиц cross-dock

operationIdcrossDockReplaceHandlingUnitManifest
РазделКросс-докинг
БезопасностьbearerAuth

Атомарно заменяет объявленный манифест SSCC/квантов и проверяет принадлежность штрихкодов и состав.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/manifest" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockReplaceManifestRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 3
data.handling_units да array<object>
data.handling_units[] нет object
data.handling_units[].barcode_kind да enum enum: sscc, quant "sscc"
data.handling_units[].barcode да string maxLength: 190 "046012345678901234"
data.handling_units[].hu_type нет enum | null enum: box, pallet, tote "box"
data.handling_units[].contents да array<object> minItems: 1
data.handling_units[].contents[] нет object
data.handling_units[].contents[].product_id да integer:int64 min: 1 1201
data.handling_units[].contents[].quantity да number:float min: 0.0001 4
data.handling_units[].contents[].batch нет string | null maxLength: 100 "LOT-2026"
data.handling_units[].contents[].production_date нет string:date | null "2026-07-14"
data.handling_units[].contents[].expiration_date нет string:date | null "2027-01-15"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 3,
    "handling_units": [
      {
        "barcode_kind": "sscc",
        "barcode": "046012345678901234",
        "contents": [
          {
            "product_id": 1201,
            "quantity": 4
          }
        ]
      }
    ]
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/orders

Получить заказы cross-dock-кейса

operationIdcrossDockListOrders
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock orders in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/orders" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 250
Количество записей на странице. По умолчанию 50; максимум 250. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 50
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, send_date, created_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
status_id query нет integer:int64 form true min: 1 Фильтр по status_id с точным совпадением. Этот фильтр также можно передать как filter[status_id], если это поддерживает Laravel query adapter. 1

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<Order>
data[] нет Order Исходящий складской заказ. Опциональные связанные поля присутствуют, когда контроллер их загрузил или они запрошены через include.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].external_id нет string | null "ORD-100245"
data[].domain_id нет integer:int64 | null min: 1 3
data[].type_id нет integer:int64 | null 1
data[].shop_id нет integer:int64 | null min: 1 12
data[].warehouse_id нет integer:int64 | null min: 1 42
data[].status_id нет integer:int64 | null ID статуса заказа. Текущий backend хранит статусы в базе данных; значения не моделируются как закрытый enum в публичном контракте. 20
data[].status нет object | null
data[].status.id да integer:int64 20
data[].status.name да string "Created"
data[].status.color нет string | null "#2457c5"
data[].status.background_color нет string | null "#eaf0ff"
data[].order_date нет string:date | null "2026-07-14"
data[].send_date нет string | null Stored order send date, potentially supplied by import, manual input or integration processing. It may be a date or date-time string; it is not a universal physical carrier-handover timestamp. "2026-07-15 20:25:08"
data[].source_id нет integer:int64 | null min: 1 1
data[].customer_type нет integer:int64 | null 1
data[].is_cod нет boolean true
data[].amounts нет OrderAmounts
data[].amounts.shipping_price нет number:float | null 8.6
data[].amounts.shipping_cost нет number:float | null 0
data[].amounts.sum нет number:float | null 39.98
data[].amounts.cod_sum нет number:float | null 48.58
data[].company_id нет integer:int64 | null min: 1 7
data[].marking да OrderMarking Marking data expected for products in the order.
data[].marking.required да boolean Whether the order contains products that require marking data after picking. true
data[].marking.types да array<string> Marking types required by products in the order. Currently chestny_znak; the list may gain values such as jewel_uin and imei.
data[].marking.types[] нет string "chestny_znak"
data[].contact нет object | null
data[].contact.first_name нет string | null "Ivan"
data[].contact.middle_name нет string | null "Ivanovich"
data[].contact.last_name нет string | null "Petrov"
data[].contact.phone нет string | null "+359888123456"
data[].contact.email нет string:email | null "customer@example.com"
data[].contact.country_id нет integer:int64 | null min: 1 100
data[].contact.city_id нет integer:int64 | null min: 1 200
data[].contact.postcode нет string | null "1000"
data[].contact.latitude нет number:float | null min: -90
max: 90
42.6977
data[].contact.longitude нет number:float | null min: -180
max: 180
23.3219
data[].contact.full_address нет string | null "1 Vitosha Boulevard, Sofia"
data[].delivery нет object | null
data[].delivery.service_id нет integer:int64 | null min: 1 1
data[].delivery.delivery_type да enum | null enum: door, pickup_point Normalized delivery channel derived from the configured delivery service. Null when the service type is unknown. "door"
data[].delivery.is_courier да boolean True for door delivery; false for pickup-point delivery or an unknown service type. true
data[].delivery.status нет string | null "created"
data[].delivery.track_number нет string | null "CDEK-123456789"
data[].delivery.pickup_point_id нет string | null "SOFIA-01"
data[].delivery.source_id нет string | null "cdek-15"
data[].delivery.tariff_code нет integer:int64 | null 136
data[].delivery.additional_services нет object Values of additional CDEK services configured for the selected integration. Boolean true enables a code-only service; other values are sent as the CDEK parameter. {"TRYING_ON":true,"PART_DELIV":false,"PACKAGE_1":2}
data[].delivery.label нет string:uri | null "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf"
data[].delivery.delivery_date нет string:date | null "2026-07-16"
data[].delivery.delivery_time_start нет string:time | null "09:00:00Z"
data[].delivery.delivery_time_end нет string:time | null "18:00:00Z"
data[].comments нет object | null
data[].comments.delivery_service_text нет string | null "Call before delivery"
data[].comments.inner_text нет string | null "VIP customer"
data[].offers нет array<OrderLineEmbedded>
data[].offers[] нет OrderLineEmbedded Scalar lot fields use the actual lot only when the full line is picked from one lot; partial/multiple actual lots leave scalars null. Before picking they retain the requested lot. Requested constraints are always available in requested_lot.
data[].offers[].id да integer:int64 readOnly min: 1 7001
data[].offers[].product_id нет integer:int64 | null min: 1 1201
data[].offers[].quantity нет number:float | null min: 0 2
data[].offers[].estimated_price нет number:float | null 19.5
data[].offers[].price нет number:float | null 19.99
data[].offers[].expiration_date нет string:date | null "2027-01-15"
data[].offers[].batch нет string | null maxLength: 15 "LOT-2026"
data[].offers[].operation_user_id нет integer:int64 | null min: 1 9
data[].offers[].product нет object | null
data[].offers[].product.id да integer:int64 readOnly min: 1 1201
data[].offers[].product.name да string "Coffee 250g"
data[].offers[].product.external_id нет string | null "EXT-10045"
data[].offers[].reservation нет OrderReservationLine Reservation totals for one order line.
data[].offers[].reservation.required_qty да number:float 3
data[].offers[].reservation.reserved_qty да number:float 1
data[].offers[].reservation.unreserved_qty да number:float 2
data[].offers[].reservation.missing_qty да number:float 2
data[].offers[].reservation.status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data[].offers[].reservation_items нет array<OrderReservationItem>
data[].offers[].reservation_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data[].offers[].reservation_items[].offer_id да integer:int64 min: 1 1201
data[].offers[].reservation_items[].offer_name нет string | null "Coffee 250g"
data[].offers[].reservation_items[].offer_article нет string | null "ART-001245"
data[].offers[].reservation_items[].offer_sku нет string | null "SKU-001245"
data[].offers[].reservation_items[].required_qty да number:float 3
data[].offers[].reservation_items[].reserved_qty да number:float 1
data[].offers[].reservation_items[].unreserved_qty да number:float 2
data[].offers[].reservation_items[].missing_qty да number:float 2
data[].offers[].reservation_items[].status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data[].offers[].reservation_items[].source_order_offer_ids да array<integer:int64>
data[].offers[].reservation_items[].source_order_offer_ids[] нет integer:int64 min: 1 7001
data[].offers[].reservation_items[].source да enum enum: order_offer, component, quant, composite_quant "order_offer"
data[].offers[].reservation_items[].expanded_from_composite да boolean false
data[].offers[].reservation_items[].expanded_from_quant да boolean false
data[].offers[].reservation_items[].quant_base_offer_id нет integer:int64 | null min: 1 1201
data[].offers[].reservation_items[].quant_base_multiplicity нет number:float | null 6
data[].offers[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].offers[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].offers[].production_date нет string:date | null "2026-01-15"
data[].offers[].requested_lot нет WarehouseLot
data[].offers[].requested_lot.batch да string | null "LOT-2026"
data[].offers[].requested_lot.production_date да string:date | null "2026-01-15"
data[].offers[].requested_lot.expiration_date да string:date | null "2027-01-15"
data[].offers[].picked_quantity нет number:float min: 0 2
data[].offers[].fulfillment_lots нет array<OrderFulfillmentLot> Current active placed warehouse rows for this exact order line and product. Existing orders are included where these rows survive. This is a current picking snapshot, not a historical shipment event.
data[].offers[].fulfillment_lots[] нет OrderFulfillmentLot
data[].offers[].fulfillment_lots[].batch да string | null "LOT-2026"
data[].offers[].fulfillment_lots[].production_date да string:date | null "2026-01-15"
data[].offers[].fulfillment_lots[].expiration_date да string:date | null "2027-01-15"
data[].offers[].fulfillment_lots[].warehouse_id да integer:int64 min: 1 734
data[].offers[].fulfillment_lots[].product_id да integer:int64 min: 1 1201
data[].offers[].fulfillment_lots[].quantity да number:float min: 0 2
data[].reservation нет OrderReservation Reservation readiness and shortages calculated for the order.
data[].reservation.ready да boolean false
data[].reservation.reason да string | null "Not all order products are reserved."
data[].reservation.expected_total да number:float 3
data[].reservation.reserved_total да number:float 1
data[].reservation.unreserved_total да number:float 2
data[].reservation.missing_total да number:float 2
data[].reservation.missing_items да array<OrderReservationItem>
data[].reservation.missing_items[] нет OrderReservationItem Physical product or expanded component used to explain a reservation shortage.
data[].reservation.missing_items[].offer_id да integer:int64 min: 1 1201
data[].reservation.missing_items[].offer_name нет string | null "Coffee 250g"
data[].reservation.missing_items[].offer_article нет string | null "ART-001245"
data[].reservation.missing_items[].offer_sku нет string | null "SKU-001245"
data[].reservation.missing_items[].required_qty да number:float 3
data[].reservation.missing_items[].reserved_qty да number:float 1
data[].reservation.missing_items[].unreserved_qty да number:float 2
data[].reservation.missing_items[].missing_qty да number:float 2
data[].reservation.missing_items[].status да enum enum: not_required, missing, partial, reserved Reservation state calculated from the quantity required by the order and the quantity actually reserved. "partial"
data[].reservation.missing_items[].source_order_offer_ids да array<integer:int64>
data[].reservation.missing_items[].source_order_offer_ids[] нет integer:int64 min: 1 7001
data[].reservation.missing_items[].source да enum enum: order_offer, component, quant, composite_quant "order_offer"
data[].reservation.missing_items[].expanded_from_composite да boolean false
data[].reservation.missing_items[].expanded_from_quant да boolean false
data[].reservation.missing_items[].quant_base_offer_id нет integer:int64 | null min: 1 1201
data[].reservation.missing_items[].quant_base_multiplicity нет number:float | null 6
data[].reservation.error да boolean false
data[].consumables нет array<OrderConsumable>
data[].consumables[] нет OrderConsumable Current consumable line, not an append-only consumption event. Unplaced usage creates a commitment but does not decrease physical stockTotal; do not treat that stockTotal as remaining packaging inventory.
data[].consumables[].id да integer:int64 min: 1 301
data[].consumables[].order_id да integer:int64 min: 1 8101
data[].consumables[].product_id да integer:int64 min: 1 1202
data[].consumables[].warehouse_id да integer:int64 | null min: 1 734
data[].consumables[].place_id да integer:int64 | null min: 1 501
data[].consumables[].quantity да number:float 1
data[].consumables[].stock_location_mode да enum enum: placed, unplaced "unplaced"
data[].consumables[].created_at да string:date-time | null "2026-07-14T10:30:00Z"
data[].consumables[].updated_at да string:date-time | null "2026-07-14T10:30:00Z"
data[].status_history нет array<OrderStatusHistoryEvent> Present only on GET list/detail with include=status_history. Ordered chronologically, retains repeat status cycles and combines surviving audit and action-log entries. Missing history returns an empty array.
data[].status_history[] нет OrderStatusHistoryEvent Recorded WMS status transition or explicitly inferred initial status. It does not independently confirm physical carrier handover.
data[].status_history[].status_id да integer:int64 130
data[].status_history[].previous_status_id да integer:int64 | null 110
data[].status_history[].changed_at да string:date-time Time of the WMS status transition in ISO 8601 with an explicit timezone offset. "2026-07-14T12:00:00+03:00"
data[].status_history[].source да enum enum: audit, action_log, inferred "action_log"
data[].status_history[].inferred да boolean True only for a reconstructed initial status at order creation; this is not a separately recorded transition. false
data[].status_history_meta нет OrderStatusHistoryMeta
data[].status_history_meta.available да boolean At least one event is available. This does not guarantee complete historical coverage. true
data[].status_history_meta.current_status_matches_history да boolean The last available event has the current order status. False also when history is empty. true
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 8101,
      "external_id": "ORD-100245",
      "domain_id": 3,
      "type_id": 1,
      "shop_id": 12,
      "warehouse_id": 42,
      "status_id": 20,
      "status": {
        "id": 20,
        "name": "Created",
        "color": "#2457c5",
        "background_color": "#eaf0ff"
      },
      "order_date": "2026-07-14",
      "send_date": "2026-07-15",
      "source_id": 1,
      "customer_type": 1,
      "is_cod": true,
      "amounts": {
        "shipping_price": 8.6,
        "shipping_cost": 0,
        "sum": 39.98,
        "cod_sum": 48.58
      },
      "company_id": 7,
      "marking": {
        "required": true,
        "types": [
          "chestny_znak"
        ]
      },
      "contact": {
        "first_name": "Ivan",
        "middle_name": null,
        "last_name": "Petrov",
        "phone": "+359888123456",
        "email": "customer@example.com",
        "country_id": 100,
        "city_id": 200,
        "postcode": "1000",
        "latitude": 42.6977,
        "longitude": 23.3219,
        "full_address": "1 Vitosha Boulevard, Sofia"
      },
      "delivery": {
        "service_id": 1,
        "delivery_type": "door",
        "is_courier": true,
        "status": "created",
        "track_number": "CDEK-123456789",
        "source_id": "cdek-15",
        "tariff_code": 136,
        "label": "https://betawms.ffcdek.ru/labels/CDEK-123456789.pdf",
        "delivery_date": "2026-07-16",
        "delivery_time_start": "09:00:00Z",
        "delivery_time_end": "18:00:00Z"
      },
      "comments": {
        "delivery_service_text": "Call before delivery",
        "inner_text": "VIP customer"
      },
      "offers": [
        {
          "id": 7001,
          "product_id": 1201,
          "quantity": 2,
          "estimated_price": 19.5,
          "price": 19.99,
          "expiration_date": "2027-01-15",
          "batch": "LOT-2026",
          "operation_user_id": 9,
          "product": {
            "id": 1201,
            "name": "Coffee 250g",
            "external_id": "EXT-10045"
          },
          "created_at": "2026-07-14T09:00:00Z",
          "updated_at": "2026-07-14T09:30:00Z"
        }
      ],
      "created_at": "2026-07-14T09:00:00Z",
      "updated_at": "2026-07-14T09:30:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/orders?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/orders?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/orders?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/orders",
    "per_page": 50,
    "to": 50,
    "total": 73
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/orders

Создать cross-dock-заказ и направление

operationIdcrossDockCreateOrderAndTarget
РазделКросс-докинг
БезопасностьbearerAuth

Создаёт исходящий заказ в неизменяемом режиме исполнения cross-dock вместе с направлением и строками потребности.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/orders" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockCreateOrderRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.external_id нет string | null maxLength: 50 "ORD-XD-001"
data.type_id да integer:int64 min: 1 1
data.group_id нет oneOf<string | integer>
data.group_id нет string maxLength: 255 "2ФИС"
data.group_id нет integer Legacy numeric identifiers are also accepted.
data.shop_id нет integer:int64 | null min: 1 12
data.warehouse_id нет integer:int64 | null min: 1 43
data.send_date нет string:date | null "2026-07-14"
data.source_id нет integer:int64 | null min: 1 1001
data.customer_type нет integer:int64 | null
data.company_id нет integer:int64 | null min: 1 1001
data.is_cod нет boolean false
data.shipping_price нет number:float | null 7.5
data.shipping_cost нет number:float | null 5.0
data.crossdock_target нет object
data.crossdock_target.type нет enum | null enum: order, route, staging_lane, dispatch "order"
data.crossdock_target.name нет string | null maxLength: 190 "Lane 7"
data.crossdock_target.destination_ref нет string | null maxLength: 190 "SOF"
data.crossdock_target.carrier_ref нет string | null maxLength: 190 "CDEK"
data.crossdock_target.route_code нет string | null maxLength: 190 "BG-SOF"
data.crossdock_target.place_id нет integer:int64 | null min: 1 900
data.crossdock_target.priority нет integer:int64 | null 100
data.crossdock_target.cutoff_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.lines да array<object> minItems: 1
data.lines[] нет object
data.lines[].product_id нет integer:int64 | null min: 1 1201
data.lines[].product_external_id нет string | null maxLength: 190 "EXT-10045"
data.lines[].quantity да number:float min: 0.0001 4
data.lines[].estimated_price нет number:float | null min: 0 19.99
data.lines[].price нет number:float | null min: 0 19.99
data.lines[].production_date нет string:date | null "2026-07-14"
data.lines[].expiration_date нет string:date | null "2027-01-15"
data.lines[].batch нет string | null maxLength: 15 "LOT-2026"
data.lines[].source_policy нет enum | null enum: crossdock_only, crossdock_then_stock, stock_allowed "crossdock_only"
data.lines[].external_line_id нет string | null maxLength: 190 "LINE-1"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "type_id": 1,
    "is_cod": false,
    "lines": [
      {
        "quantity": 4
      }
    ]
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/plan

Рассчитать распределение cross-dock

operationIdcrossDockPlanAllocation
РазделКросс-докинг
БезопасностьbearerAuth

Рассчитывает прямое распределение доступного supply по заказам с учётом FIFO срока годности, приоритета и версии стратегии.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/plan" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockPlanRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 3
data.strategy_version да string maxLength: 50 "fifo-v1"
data.expected_plan_hash нет string | null minLength: 64
maxLength: 64
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 3,
    "strategy_version": "fifo-v1"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/print-jobs

Получить задания печати cross-dock

operationIdcrossDockListPrintJobs
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock print jobs in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/print-jobs" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, created_at, dispatched_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
label_id query нет integer:int64 form true min: 1 Фильтр по label_id с точным совпадением. Этот фильтр также можно передать как filter[label_id], если это поддерживает Laravel query adapter. 1
target_id query нет integer:int64 form true min: 1 Фильтр по target_id с точным совпадением. Этот фильтр также можно передать как filter[target_id], если это поддерживает Laravel query adapter. 1
status query нет string form true Фильтр по status с точным совпадением. Этот фильтр также можно передать как filter[status], если это поддерживает Laravel query adapter. "waiting"
printer_id query нет integer:int64 form true min: 1 Фильтр по printer_id с точным совпадением. Этот фильтр также можно передать как filter[printer_id], если это поддерживает Laravel query adapter. 1

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockPrintJob>
data[] нет CrossDockPrintJob Versioned target-label print job with dispatch and device acknowledgement.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].public_id да string "01J2CROSSDOCKPRINTJOB001"
data[].case_id да integer:int64 min: 1 4101
data[].target_id да integer:int64 min: 1 4301
data[].label_id да integer:int64 min: 1 4401
data[].status да string "ready"
data[].attempts да integer:int64 0
data[].printer_id нет integer:int64 | null min: 1 55
data[].device_id нет string | null "gate-printer-1"
data[].artifact_ref нет string | null "crossdock/labels/4401.pdf"
data[].artifact_hash нет string | null "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
data[].last_error нет string | null "printer_offline"
data[].dispatched_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].acknowledged_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].version да integer:int64 1
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "public_id": "01J2CROSSDOCKPRINTJOB001",
      "case_id": 4101,
      "target_id": 4301,
      "label_id": 4401,
      "status": "ready",
      "attempts": 0,
      "version": 1
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/print-jobs?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/print-jobs?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/print-jobs?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/print-jobs",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/readiness

Get crossdock

operationIdlistCrossdockCasesReadiness
РазделКросс-докинг
БезопасностьbearerAuth

Get crossdock in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/readiness" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/release

Выпустить план cross-dock в работу

operationIdcrossDockReleasePlan
РазделКросс-докинг
БезопасностьbearerAuth

Фиксирует hash плана, активирует allocations и targets, создаёт исполняемые задания и актуальные этикетки.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/release" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockReleaseRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 4
data.plan_hash да string minLength: 64
maxLength: 64
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 4,
    "plan_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/return-to-draft

Run crossdock action

operationIdcreateCrossdockCasesReturnToDraft
РазделКросс-докинг
БезопасностьbearerAuth

Run crossdock action in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/return-to-draft" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockCommandRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object Operation-specific payload. Mutating commands require command_id; versioned aggregates also require the current version.
data.command_id нет string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version нет integer:int64 | null min: 1 3
data.barcode нет string | null "4601234567890"
data.quantity нет number:float | null min: 0 5
data.reason нет string | null "Supervisor-approved operational action"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/scan-sessions

Get crossdock

operationIdlistCrossdockCasesScanSessions
РазделКросс-докинг
БезопасностьbearerAuth

Get crossdock in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/scan-sessions" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/scans/source

Отсканировать источник cross-dock

operationIdcrossDockScanSource
РазделКросс-докинг
БезопасностьbearerAuth

Распознаёт товар, квант или SSCC в исходном месте и открывает версионируемую сессию устройства с временным hold остатка.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/scans/source" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockSourceScanRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.barcode да string maxLength: 190 "4601234567890"
data.device_id да string maxLength: 190 "tsd-01"
data.source_place_id да integer:int64 min: 1 800

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "barcode": "4601234567890",
    "device_id": "tsd-01",
    "source_place_id": 800
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/scans/target

Подтвердить скан направления cross-dock

operationIdcrossDockConfirmTargetScan
РазделКросс-докинг
БезопасностьbearerAuth

Проверяет актуальную этикетку направления, фиксирует fulfillment и движения, погашает hold и продвигает связанный заказ.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/scans/target" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockTargetScanRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.scan_session_id да string maxLength: 190 "01J2CROSSDOCKSESSION000001"
data.version да integer:int64 min: 1 2
data.target_barcode да string maxLength: 255 "XD1.4301.2.signature"
data.device_id да string maxLength: 190 "tsd-01"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "scan_session_id": "01J2CROSSDOCKSESSION000001",
    "version": 2,
    "target_barcode": "XD1.4301.2.signature",
    "device_id": "tsd-01"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/cases/{case}/submit

Run crossdock action

operationIdcreateCrossdockCasesSubmit
РазделКросс-докинг
БезопасностьbearerAuth

Run crossdock action in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/submit" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockCommandRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object Operation-specific payload. Mutating commands require command_id; versioned aggregates also require the current version.
data.command_id нет string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version нет integer:int64 | null min: 1 3
data.barcode нет string | null "4601234567890"
data.quantity нет number:float | null min: 0 5
data.reason нет string | null "Supervisor-approved operational action"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/supplies

Получить входящие количества cross-dock

operationIdcrossDockListSupplies
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock supplies in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/supplies" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, product_id, created_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
product_id query нет integer:int64 form true min: 1 Фильтр по product_id с точным совпадением. Этот фильтр также можно передать как filter[product_id], если это поддерживает Laravel query adapter. 1201
base_product_id query нет integer:int64 form true min: 1 Фильтр по base_product_id с точным совпадением. Этот фильтр также можно передать как filter[base_product_id], если это поддерживает Laravel query adapter. 1200
acceptance_id query нет integer:int64 form true min: 1 Фильтр по acceptance_id с точным совпадением. Этот фильтр также можно передать как filter[acceptance_id], если это поддерживает Laravel query adapter. 1

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockSupply>
data[] нет CrossDockSupply Inbound quantity available to the cross-dock planner.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].case_id да integer:int64 min: 1 4101
data[].acceptance_id да integer:int64 min: 1 5101
data[].acceptance_line_id да integer:int64 min: 1 5201
data[].lineage_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data[].parent_supply_id нет integer:int64 | null min: 1 1001
data[].product_id да integer:int64 min: 1 1201
data[].base_product_id да integer:int64 min: 1 1201
data[].quantity да number:float 10
data[].base_quantity да number:float 10
data[].received_quantity нет number:float 10
data[].received_base_quantity нет number:float 10
data[].eligible_base_quantity нет number:float 10
data[].allocated_base_quantity нет number:float 8
data[].executed_base_quantity нет number:float 5
data[].batch нет string | null "LOT-2026"
data[].production_date нет string:date | null "2026-07-14"
data[].expiration_date нет string:date | null "2027-01-15"
data[].quality_state нет string "accepted"
data[].external_line_id нет string | null "ASN-LINE-1"
data[].version да integer:int64 2
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "case_id": 4101,
      "acceptance_id": 5101,
      "acceptance_line_id": 5201,
      "lineage_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
      "product_id": 1201,
      "base_product_id": 1201,
      "quantity": 10,
      "base_quantity": 10,
      "received_quantity": 10,
      "received_base_quantity": 10,
      "eligible_base_quantity": 10,
      "allocated_base_quantity": 8,
      "executed_base_quantity": 5,
      "quality_state": "accepted",
      "version": 2
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/supplies?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/supplies?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/supplies?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/supplies",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/targets

Получить направления cross-dock

operationIdcrossDockListTargets
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock targets in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/targets" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, short_number, created_at. По умолчанию: short_number. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "short_number"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
status query нет string form true Фильтр по status с точным совпадением. Этот фильтр также можно передать как filter[status], если это поддерживает Laravel query adapter. "waiting"
order_id query нет integer:int64 form true min: 1 Фильтр по order_id с точным совпадением. Этот фильтр также можно передать как filter[order_id], если это поддерживает Laravel query adapter. 1

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockTarget>
data[] нет CrossDockTarget Physical sorting or dispatch destination for a cross-dock order.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].public_id да string "01J2CROSSDOCKTARGET000001"
data[].case_id да integer:int64 min: 1 4101
data[].order_id нет integer:int64 | null min: 1 8101
data[].type да enum enum: order, route, staging_lane, dispatch "order"
data[].short_number да integer:int64 7
data[].name нет string | null "Lane 7"
data[].destination_ref нет string | null "SOF"
data[].carrier_ref нет string | null "CDEK"
data[].route_ref нет string | null "BG-SOF"
data[].place_id нет integer:int64 | null min: 1 900
data[].barcode_token_version нет integer:int64 2
data[].current_label_id нет integer:int64 | null min: 1 4401
data[].status да string "ready"
data[].version да integer:int64 3
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "public_id": "01J2CROSSDOCKTARGET000001",
      "case_id": 4101,
      "type": "order",
      "short_number": 7,
      "barcode_token_version": 2,
      "status": "ready",
      "version": 3
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/targets?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/targets?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/targets?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/targets",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
PUT /api/v2/crossdock/cases/{case}/targets/places

Назначить места направлениям cross-dock

operationIdcrossDockAssignTargetPlaces
РазделКросс-докинг
БезопасностьbearerAuth

Assign cross-dock target places in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/targets/places" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockAssignTargetPlacesRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 3
data.targets да array<object> minItems: 1
maxItems: 500
data.targets[] нет object
data.targets[].target_id да integer:int64 min: 1 4301
data.targets[].target_version да integer:int64 min: 1 2
data.targets[].target_place_id да integer:int64 min: 1 900

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 3,
    "targets": [
      {
        "target_id": 4301,
        "target_version": 2,
        "target_place_id": 900
      }
    ]
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/cases/{case}/tasks

Получить задания cross-dock

operationIdcrossDockListTasks
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock tasks in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/cases/01J2CROSSDOCKCASE000000001/tasks" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
case path да string Cross-dock case numeric ID or public ULID. "01J2CROSSDOCKCASE000000001"
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, created_at. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
id query нет integer:int64 form true min: 1 Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. 1001
status query нет string form true Фильтр по status с точным совпадением. Этот фильтр также можно передать как filter[status], если это поддерживает Laravel query adapter. "waiting"
type query нет string form true Фильтр по type с точным совпадением. Этот фильтр также можно передать как filter[type], если это поддерживает Laravel query adapter. "inbound"
target_id query нет integer:int64 form true min: 1 Фильтр по target_id с точным совпадением. Этот фильтр также можно передать как filter[target_id], если это поддерживает Laravel query adapter. 1

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockTask>
data[] нет CrossDockTask Executable cross-dock warehouse task.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].public_id да string "01J2CROSSDOCKTASK0000001"
data[].case_id да integer:int64 min: 1 4101
data[].allocation_id нет integer:int64 | null min: 1 4501
data[].fulfillment_id нет integer:int64 | null min: 1 4801
data[].target_id нет integer:int64 | null min: 1 4301
data[].type да string "move"
data[].source_place_id нет integer:int64 | null min: 1 800
data[].target_place_id нет integer:int64 | null min: 1 900
data[].product_id нет integer:int64 | null min: 1 1201
data[].base_product_id нет integer:int64 | null min: 1 1201
data[].base_quantity нет number:float | null 4
data[].status да string "ready"
data[].lease_owner_id нет integer:int64 | null min: 1 25
data[].lease_until нет string:date-time | null "2026-07-14T10:30:00Z"
data[].active_scan_session_id нет integer:int64 | null min: 1 4901
data[].version да integer:int64 1
data[].completed_at нет string:date-time | null "2026-07-14T10:30:00Z"
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "public_id": "01J2CROSSDOCKTASK0000001",
      "case_id": 4101,
      "type": "move",
      "status": "ready",
      "version": 1
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/tasks?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/tasks?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/tasks?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/cases/4101/tasks",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/commands/{commandId}

Получить статус команды cross-dock

operationIdcrossDockGetCommandStatus
РазделКросс-докинг
БезопасностьbearerAuth

Возвращает сохранённое состояние идемпотентной команды и исходный результат для восстановления после таймаута.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/commands/4fe557e8-70f7-4b36-a124-d3afad4041d4" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
commandId path да string:uuid Idempotent cross-dock command UUID. "4fe557e8-70f7-4b36-a124-d3afad4041d4"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/exceptions/{exception}/resolve

Разрешить исключение cross-dock

operationIdcrossDockResolveException
РазделКросс-докинг
БезопасностьbearerAuth

Resolve cross-dock exception in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/exceptions/1001/resolve" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
exception path да integer:int64 min: 1 Cross-dock exception ID. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockResolveExceptionRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 1
data.decision да enum enum: resume, fallback_completed, manual_accept "resume"
data.reason нет string | null maxLength: 5000 "Supervisor approved"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 1,
    "decision": "resume"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/loading-visits/{visit}/documents

Получить cross-dock-документы визита погрузки

operationIdcrossDockListDocumentsForLoadingVisit
РазделКросс-докинг
БезопасностьbearerAuth

List cross-dock documents for loading visit in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/loading-visits/1001/documents" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
visit path да integer:int64 min: 1 ID визита погрузки. 1001
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 500
Количество записей на странице. По умолчанию 100; максимум 500. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. 100
sort query нет string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id. По умолчанию: id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. "id"
document_type query нет string form true Фильтр по document_type с точным совпадением. Этот фильтр также можно передать как filter[document_type], если это поддерживает Laravel query adapter. "acceptance"
document_id query нет integer:int64 form true min: 1 Фильтр по document_id с точным совпадением. Этот фильтр также можно передать как filter[document_id], если это поддерживает Laravel query adapter. 5101
role query нет string form true Фильтр по role с точным совпадением. Этот фильтр также можно передать как filter[role], если это поддерживает Laravel query adapter. "outbound"
status query нет string form true Фильтр по status с точным совпадением. Этот фильтр также можно передать как filter[status], если это поддерживает Laravel query adapter. "waiting"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<CrossDockLoadingAssociation>
data[] нет CrossDockLoadingAssociation Association between a cross-dock document and a loading visit.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].case_id нет integer:int64 | null min: 1 4101
data[].loading_visit_id да integer:int64 min: 1 6101
data[].document_type да string "order"
data[].document_id да integer:int64 min: 1 8101
data[].role да string "outbound"
data[].status да string "attached"
data[].created_by нет integer:int64 | null min: 1 25
data[].detached_by нет integer:int64 | null min: 1 1001
data[].detached_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].visit нет object | null
data[].visit.id да integer:int64 min: 1 6101
data[].visit.type да string "outbound"
data[].visit.status да string "approved"
data[].visit.physical_warehouse_id да integer:int64 min: 1 42
data[].visit.gate_id нет integer:int64 | null min: 1 3
data[].visit.planned_at нет string:date-time | null "2026-07-14T10:30:00Z"
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 1001,
      "loading_visit_id": 6101,
      "document_type": "order",
      "document_id": 8101,
      "role": "outbound",
      "status": "attached"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/crossdock/loading-visits/6101/documents?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/crossdock/loading-visits/6101/documents?page=2",
    "prev": null,
    "next": "https://betawms.ffcdek.ru/api/v2/crossdock/loading-visits/6101/documents?page=2"
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 2,
    "path": "https://betawms.ffcdek.ru/api/v2/crossdock/loading-visits/6101/documents",
    "per_page": 100,
    "to": 100,
    "total": 123
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/print-jobs/{job}/acknowledge

Подтвердить результат печати cross-dock

operationIdcrossDockAcknowledgePrintJob
РазделКросс-докинг
БезопасностьbearerAuth

Acknowledge cross-dock print job in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/print-jobs/1001/acknowledge" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
job path да integer:int64 min: 1 Cross-dock print job ID. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockAcknowledgePrintJobRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 2
data.success да boolean true
data.artifact_hash нет string | null minLength: 64
maxLength: 64
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
data.error нет string | null maxLength: 5000 "printer_offline"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 2,
    "success": true
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/print-jobs/{job}/dispatch

Передать задание cross-dock на принтер

operationIdcrossDockDispatchPrintJob
РазделКросс-докинг
БезопасностьbearerAuth

Dispatch cross-dock print job in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/print-jobs/1001/dispatch" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
job path да integer:int64 min: 1 Cross-dock print job ID. 1001
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockDispatchPrintJobRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 1
data.printer_id нет integer:int64 | null min: 1 55
data.device_id нет string | null maxLength: 190 "gate-printer-1"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 1
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
GET /api/v2/crossdock/scan-sessions/{session}

Получить сессию сканирования cross-dock

operationIdcrossDockGetScanSession
РазделКросс-докинг
БезопасностьbearerAuth

Get cross-dock scan session in the isolated cross-dock execution context.
Результат ограничен tenant-областью аутентифицированного пользователя API v2. Для коллекций поддерживаются описанные фильтры, сортировка и пагинация.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/crossdock/scan-sessions/01J2CROSSDOCKSESSION000001" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
session path да string Cross-dock scan session numeric ID or public ULID. "01J2CROSSDOCKSESSION000001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockScanSession Device-bound source scan session waiting for quantity or target confirmation.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.public_id да string "01J2CROSSDOCKSESSION000001"
data.case_id да integer:int64 min: 1 4101
data.task_id да integer:int64 min: 1 4551
data.allocation_id да integer:int64 min: 1 4501
data.target_id да integer:int64 min: 1 4301
data.device_id да string "tsd-01"
data.source_place_id да integer:int64 min: 1 800
data.recognized_type да enum enum: product, quant, sscc "product"
data.handling_unit_id нет integer:int64 | null min: 1 1001
data.product_id да integer:int64 min: 1 1201
data.base_product_id да integer:int64 min: 1 1201
data.quantity_mode нет string "manual"
data.scanned_base_quantity нет number:float 1
data.confirmed_base_quantity нет number:float 4
data.status да string "awaiting_target"
data.version да integer:int64 2
data.expires_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.committed_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.cancelled_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.next_action нет string | null "scan_target"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 1001,
    "public_id": "01J2CROSSDOCKSESSION000001",
    "case_id": 4101,
    "task_id": 4551,
    "allocation_id": 4501,
    "target_id": 4301,
    "device_id": "tsd-01",
    "source_place_id": 800,
    "recognized_type": "product",
    "product_id": 1201,
    "base_product_id": 1201,
    "quantity_mode": "manual",
    "scanned_base_quantity": 1,
    "confirmed_base_quantity": 4,
    "status": "awaiting_target",
    "version": 2
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/scan-sessions/{session}/cancel

Отменить сессию сканирования cross-dock

operationIdcrossDockCancelScanSession
РазделКросс-докинг
БезопасностьbearerAuth

Cancel cross-dock scan session in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/scan-sessions/01J2CROSSDOCKSESSION000001/cancel" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
session path да string Cross-dock scan session numeric ID or public ULID. "01J2CROSSDOCKSESSION000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockCancelScanSessionRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 1
data.device_id да string maxLength: 190 "tsd-01"

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 1,
    "device_id": "tsd-01"
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}
POST /api/v2/crossdock/scan-sessions/{session}/quantity

Задать количество сессии cross-dock

operationIdcrossDockSetScanQuantity
РазделКросс-докинг
БезопасностьbearerAuth

Set cross-dock scan quantity in the isolated cross-dock execution context.
Передавайте envelope API v2 data и заголовок Idempotency-Key. Мутации идемпотентны по command_id; устаревшая version версионируемого агрегата возвращает 409.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/crossdock/scan-sessions/01J2CROSSDOCKSESSION000001/quantity" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
session path да string Cross-dock scan session numeric ID or public ULID. "01J2CROSSDOCKSESSION000001"
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CrossDockSetScanQuantityRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object
data.command_id да string:uuid "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.version да integer:int64 min: 1 1
data.device_id да string maxLength: 190 "tsd-01"
data.quantity да integer:int64 min: 1 4

Примеры запроса

default

{
  "data": {
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "version": 1,
    "device_id": "tsd-01",
    "quantity": 4
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CrossDockResource Cross-dock resource. The concrete fields depend on the selected case subresource; unknown future fields are preserved for forward compatibility.
data.id нет integer:int64 | null min: 1 4101
data.public_id нет string | null "01J2CROSSDOCKCASE000000001"
data.case_id нет integer:int64 | null min: 1 4101
data.status нет string | null "released"
data.state нет string | null "open"
data.version нет integer:int64 | null min: 1 3
data.command_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
data.correlation_id нет string:uuid | null "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 4101,
    "public_id": "01J2CROSSDOCKCASE000000001",
    "status": "released",
    "version": 3,
    "command_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "correlation_id": "a3fd7025-9284-4db6-9aaf-70845b9d6ad4"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

CrossDockBadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "BAD_REQUEST",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

401 Требуется аутентификация

CrossDockUnauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "AUTH_REQUIRED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

403 Доступ запрещен

CrossDockForbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "FORBIDDEN",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

404 Не найдено

CrossDockNotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "NOT_FOUND",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

409 Конфликт

CrossDockConflict

The request conflicts with the current aggregate version or command state.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

CROSSDOCK_VERSION_CONFLICT

{
  "message": "The request conflicts with the current aggregate version or command state.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "CROSSDOCK_VERSION_CONFLICT",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

422 Ошибка валидации

CrossDockValidationError

The given data was invalid.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

VALIDATION_ERROR

{
  "message": "The given data was invalid.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "VALIDATION_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

429 Превышен лимит запросов

CrossDockTooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

RATE_LIMITED

{
  "message": "Rate limit exceeded.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "RATE_LIMITED",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}

500 Внутренняя ошибка сервера

CrossDockInternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Cross-docking is disabled for the selected client warehouse."
errors да object {"warehouse_id":["Enable cross-docking in the client warehouse settings."]}
meta да CrossDockErrorMeta API v2 error metadata for the isolated cross-dock command contract.
meta.api_version да enum enum: v2 "v2"
meta.error_code да string "CROSSDOCK_WAREHOUSE_DISABLED"
meta.correlation_id нет string:uuid | null "4fe557e8-70f7-4b36-a124-d3afad4041d4"
meta.details нет object {"physical_warehouse_id":42,"client_warehouse_id":43,"shop_id":12}

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "errors": {
  },
  "meta": {
    "api_version": "v2",
    "error_code": "INTERNAL_SERVER_ERROR",
    "correlation_id": "4fe557e8-70f7-4b36-a124-d3afad4041d4",
    "details": {
    }
  }
}