Quant Unpackings

Every operation below is generated from the OpenAPI v2 specification and includes parameters, request fields, response fields, errors, and examples.

Quant Unpackings

GET /api/v2/quant-unpackings

List quant unpackings

operationIdlistQuantUnpackings
TagQuant Unpackings
SecuritybearerAuth

Returns quant unpackings visible to the authenticated account. Use documented query parameters for filtering, sorting, and pagination.
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 request example (cURL)

Set your server and token. Replace sample IDs with accessible IDs. For requests with a body, save the applicable JSON example below as request.json and replace sample values before sending. Idempotency-Key identifies one logical operation.

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

Parameters

Name In Required Type Style Explode Constraints Description Example
page query no integer:int64 form true min: 1 Page number. The same filter may also be sent as filter[page] where supported by the Laravel query adapter. 1
per_page query no integer:int64 form true min: 1
max: 500
Number of records per page. Default is 100; maximum is 500. The same filter may also be sent as filter[per_page] where supported by the Laravel query adapter. 100
sort query no string form false pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ Comma-separated sort fields. Prefix with - for descending order. Allowed fields: id, document_date, conducted_at, created_at, updated_at. Default: -id. The same filter may also be sent as filter[sort] where supported by the Laravel query adapter. "-id"
after_id query no integer:int64 form true min: 0 Return rows with an ID greater than this value. The boundary is exclusive. The same filter may also be sent as filter[after_id] where supported by the Laravel query adapter. 1000
include query no string form false Comma-separated optional relations. Allowed values: items. The same filter may also be sent as filter[include] where supported by the Laravel query adapter. "items"
id query no integer:int64 form true min: 1 Filter by id using exact matching. The same filter may also be sent as filter[id] where supported by the Laravel query adapter. 1001
external_id query no string form true Filter by external_id using exact matching. The same filter may also be sent as filter[external_id] where supported by the Laravel query adapter. "EXT-10045"
status_id query no integer:int64 form true min: 1 Filter by status_id using exact matching. The same filter may also be sent as filter[status_id] where supported by the Laravel query adapter. 1
warehouse_id query no integer:int64 form true min: 1 Filter by warehouse_id using exact matching. The same filter may also be sent as filter[warehouse_id] where supported by the Laravel query adapter. 42
user_id query no integer:int64 form true min: 1 Filter by user_id using exact matching. The same filter may also be sent as filter[user_id] where supported by the Laravel query adapter. 15
comment query no string form true Filter by comment using partial text matching. The same filter may also be sent as filter[comment] where supported by the Laravel query adapter. "Priority"
document_date_from query no string:date form true Lower inclusive date boundary for document_date. The same filter may also be sent as filter[document_date_from] where supported by the Laravel query adapter. "2026-07-14"
document_date_to query no string:date form true Upper inclusive date boundary for document_date. The same filter may also be sent as filter[document_date_to] where supported by the Laravel query adapter. "2026-07-14"
conducted_at_from query no string:date form true Lower inclusive date boundary for conducted_at. The same filter may also be sent as filter[conducted_at_from] where supported by the Laravel query adapter. "2026-07-14"
conducted_at_to query no string:date form true Upper inclusive date boundary for conducted_at. The same filter may also be sent as filter[conducted_at_to] where supported by the Laravel query adapter. "2026-07-14"
created_at_from query no string:date form true Lower inclusive date boundary for created_at. The same filter may also be sent as filter[created_at_from] where supported by the Laravel query adapter. "2026-07-14"
created_at_to query no string:date form true Upper inclusive date boundary for created_at. The same filter may also be sent as filter[created_at_to] where supported by the Laravel query adapter. "2026-07-14"

Request body

No request body.

Responses

200 Successful response.

Successful response.

Field Required Type Flags Constraints Description Example
data yes array<QuantUnpacking>
data[] no QuantUnpacking Quant unpacking document.
data[].id yes integer:int64 readOnly min: 1 1001
data[].created_at no string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at no string:date-time | null "2026-07-14T10:30:00Z"
data[].external_id no string | null "QU-100245"
data[].domain_id no integer:int64 | null min: 1 3
data[].warehouse_id no integer:int64 | null min: 1 42
data[].user_id no integer:int64 | null min: 1 9
data[].status_id no enum:int64 | null enum: 1, 4 1 - draft/new document. 4 - conducted document. 1
data[].document_date no string:date | null "2026-07-14"
data[].counts yes object
data[].counts.source yes number:float 1
data[].counts.target yes number:float 6
data[].counts.source_moved yes number:float 0
data[].counts.target_moved yes number:float 0
data[].conducted_at no string:date-time | null "2026-07-14T10:30:00Z"
data[].comment no string | null "Unpack coffee box"
data[].items no array<QuantUnpackingItem>
data[].items[] no QuantUnpackingItem Quant unpacking line.
data[].items[].id yes integer:int64 readOnly min: 1 9001
data[].items[].source_product_id yes integer:int64 min: 1 1200
data[].items[].target_product_id no integer:int64 | null min: 1 1201
data[].items[].source_place_id no integer:int64 | null min: 1 501
data[].items[].target_place_id no integer:int64 | null min: 1 502
data[].items[].source_quantity yes number:float min: 0 1
data[].items[].target_quantity no number:float | null min: 0 6
data[].items[].available_quantity no number:float | null min: 0 10
data[].items[].batch no string | null "LOT-2026"
data[].items[].production_date no string:date | null "2026-01-15"
data[].items[].expiration_date no string:date | null "2027-01-15"
data[].items[].comment no string | null "Box unpacked"
links yes PaginationLinks
links.first yes string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last yes string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev yes string:uri | null
links.next yes string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta yes PaginationMeta
meta.api_version yes enum enum: v2 "v2"
meta.current_page yes integer:int32 min: 1 1
meta.from yes integer:int32 | null min: 1 1
meta.last_page yes integer:int32 min: 1 2
meta.path yes string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page yes integer:int32 min: 1 50
meta.to yes integer:int32 | null min: 1 50
meta.total yes integer:int32 min: 0 73

Response examples

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 Authentication required

Unauthorized

Authentication is required.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

AUTH_REQUIRED

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

403 Forbidden

Forbidden

The authenticated account is not allowed to perform this action.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

FORBIDDEN

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

429 Rate limit exceeded

TooManyRequests

Rate limit exceeded.

Field Required Type Flags Constraints Description Example
message yes string "Too Many Attempts."
error yes string "RATE_LIMITED"

500 Internal server error

InternalServerError

An unexpected server error occurred.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

INTERNAL_SERVER_ERROR

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

Create quant unpacking

operationIdcreateQuantUnpackings
TagQuant Unpackings
SecuritybearerAuth

Create quant unpacking. The request uses the documented payload schema, validates tenant visibility, and returns a normalized API envelope.

HTTP request example (cURL)

Set your server and token. Replace sample IDs with accessible IDs. For requests with a body, save the applicable JSON example below as request.json and replace sample values before sending. Idempotency-Key identifies one logical operation.

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

Parameters

Name In Required Type Style Explode Constraints Description Example
Idempotency-Key header no string maxLength: 191 Optional idempotency key for API v2 write requests. Successful 2xx/3xx responses are replayed for the same key and identical payload for one day. The same key with a different payload returns 409. "ord-create-20260714-001"

Request body

CreateQuantUnpackingRequest required

Field Required Type Flags Constraints Description Example
data yes CreateQuantUnpackingPayload
data.warehouse_id yes integer:int64 min: 1 42
data.document_date no string:date | null "2026-07-14"
data.external_id no string | null "QU-100245"
data.comment no string | null "Unpack coffee box"
data.conduct no boolean false
data.items yes array<QuantUnpackingItemCreatePayload> minItems: 1
data.items[] no QuantUnpackingItemCreatePayload Quant unpacking source item. Target product and target quantity are derived by the package service.
data.items[].source_product_id yes integer:int64 min: 1 1200
data.items[].source_quantity yes number:float min: 0.001 1
data.items[].source_place_id no integer:int64 | null min: 1 501
data.items[].target_place_id no integer:int64 | null min: 1 502
data.items[].batch no string | null "LOT-2026"
data.items[].production_date no string:date | null "2026-01-15"
data.items[].expiration_date no string:date | null "2027-01-15"
data.items[].comment no string | null "Box unpacked"

Request examples

default

{
  "data": {
    "warehouse_id": 42,
    "external_id": "QU-100245",
    "items": [
      {
        "source_product_id": 1200,
        "source_quantity": 1,
        "source_place_id": 501
      }
    ]
  }
}

Responses

201 Created.

Created.

Field Required Type Flags Constraints Description Example
data yes QuantUnpacking Quant unpacking document.
data.id yes integer:int64 readOnly min: 1 1001
data.created_at no string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at no string:date-time | null "2026-07-14T10:30:00Z"
data.external_id no string | null "QU-100245"
data.domain_id no integer:int64 | null min: 1 3
data.warehouse_id no integer:int64 | null min: 1 42
data.user_id no integer:int64 | null min: 1 9
data.status_id no enum:int64 | null enum: 1, 4 1 - draft/new document. 4 - conducted document. 1
data.document_date no string:date | null "2026-07-14"
data.counts yes object
data.counts.source yes number:float 1
data.counts.target yes number:float 6
data.counts.source_moved yes number:float 0
data.counts.target_moved yes number:float 0
data.conducted_at no string:date-time | null "2026-07-14T10:30:00Z"
data.comment no string | null "Unpack coffee box"
data.items no array<QuantUnpackingItem>
data.items[] no QuantUnpackingItem Quant unpacking line.
data.items[].id yes integer:int64 readOnly min: 1 9001
data.items[].source_product_id yes integer:int64 min: 1 1200
data.items[].target_product_id no integer:int64 | null min: 1 1201
data.items[].source_place_id no integer:int64 | null min: 1 501
data.items[].target_place_id no integer:int64 | null min: 1 502
data.items[].source_quantity yes number:float min: 0 1
data.items[].target_quantity no number:float | null min: 0 6
data.items[].available_quantity no number:float | null min: 0 10
data.items[].batch no string | null "LOT-2026"
data.items[].production_date no string:date | null "2026-01-15"
data.items[].expiration_date no string:date | null "2027-01-15"
data.items[].comment no string | null "Box unpacked"
meta yes ResponseMeta
meta.api_version yes enum enum: v2 "v2"
meta.deleted no boolean true
meta.id no integer:int64 | null min: 1 1001
meta.command_replayed no boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration no object | null
meta.crossdock_configuration.physical_warehouse_id yes integer:int64 min: 1 42
meta.crossdock_configuration.enabled yes boolean true
meta.crossdock_configuration.process_version yes string "direct_order_v1"

Response examples

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 Bad request

BadRequest

Bad request.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

BAD_REQUEST

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

401 Authentication required

Unauthorized

Authentication is required.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

AUTH_REQUIRED

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

403 Forbidden

Forbidden

The authenticated account is not allowed to perform this action.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

FORBIDDEN

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

409 Conflict

Conflict

The request conflicts with the current resource state or idempotency key state.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

idempotencyConflict

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

422 Validation error

ValidationError

Validation failed.

Field Required Type Flags Constraints Description Example
message yes string "The given data was invalid."
error no string "VALIDATION_ERROR"
errors yes object {"warehouse_id":["The selected warehouse is invalid."]}

Response examples

validationError

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

429 Rate limit exceeded

TooManyRequests

Rate limit exceeded.

Field Required Type Flags Constraints Description Example
message yes string "Too Many Attempts."
error yes string "RATE_LIMITED"

500 Internal server error

InternalServerError

An unexpected server error occurred.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

INTERNAL_SERVER_ERROR

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

Get quant unpacking

operationIdgetQuantUnpackings
TagQuant Unpackings
SecuritybearerAuth

Returns one quant unpacking when it exists and is visible to the authenticated account.

HTTP request example (cURL)

Set your server and token. Replace sample IDs with accessible IDs. For requests with a body, save the applicable JSON example below as request.json and replace sample values before sending. Idempotency-Key identifies one logical operation.

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

Parameters

Name In Required Type Style Explode Constraints Description Example
id path yes integer:int64 min: 1 Quant unpacking document ID. 1001

Request body

No request body.

Responses

200 Successful response.

Successful response.

Field Required Type Flags Constraints Description Example
data yes QuantUnpacking Quant unpacking document.
data.id yes integer:int64 readOnly min: 1 1001
data.created_at no string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at no string:date-time | null "2026-07-14T10:30:00Z"
data.external_id no string | null "QU-100245"
data.domain_id no integer:int64 | null min: 1 3
data.warehouse_id no integer:int64 | null min: 1 42
data.user_id no integer:int64 | null min: 1 9
data.status_id no enum:int64 | null enum: 1, 4 1 - draft/new document. 4 - conducted document. 1
data.document_date no string:date | null "2026-07-14"
data.counts yes object
data.counts.source yes number:float 1
data.counts.target yes number:float 6
data.counts.source_moved yes number:float 0
data.counts.target_moved yes number:float 0
data.conducted_at no string:date-time | null "2026-07-14T10:30:00Z"
data.comment no string | null "Unpack coffee box"
data.items no array<QuantUnpackingItem>
data.items[] no QuantUnpackingItem Quant unpacking line.
data.items[].id yes integer:int64 readOnly min: 1 9001
data.items[].source_product_id yes integer:int64 min: 1 1200
data.items[].target_product_id no integer:int64 | null min: 1 1201
data.items[].source_place_id no integer:int64 | null min: 1 501
data.items[].target_place_id no integer:int64 | null min: 1 502
data.items[].source_quantity yes number:float min: 0 1
data.items[].target_quantity no number:float | null min: 0 6
data.items[].available_quantity no number:float | null min: 0 10
data.items[].batch no string | null "LOT-2026"
data.items[].production_date no string:date | null "2026-01-15"
data.items[].expiration_date no string:date | null "2027-01-15"
data.items[].comment no string | null "Box unpacked"
meta yes ResponseMeta
meta.api_version yes enum enum: v2 "v2"
meta.deleted no boolean true
meta.id no integer:int64 | null min: 1 1001
meta.command_replayed no boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration no object | null
meta.crossdock_configuration.physical_warehouse_id yes integer:int64 min: 1 42
meta.crossdock_configuration.enabled yes boolean true
meta.crossdock_configuration.process_version yes string "direct_order_v1"

Response examples

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 Authentication required

Unauthorized

Authentication is required.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

AUTH_REQUIRED

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

403 Forbidden

Forbidden

The authenticated account is not allowed to perform this action.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

FORBIDDEN

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

404 Not found

NotFound

The requested resource was not found or is outside the authenticated account scope.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

NOT_FOUND

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

429 Rate limit exceeded

TooManyRequests

Rate limit exceeded.

Field Required Type Flags Constraints Description Example
message yes string "Too Many Attempts."
error yes string "RATE_LIMITED"

500 Internal server error

InternalServerError

An unexpected server error occurred.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/quant-unpackings/{id}/conduct

Conduct quant unpacking

operationIdconductQuantUnpacking
TagQuant Unpackings
SecuritybearerAuth

Conduct quant unpacking. The request uses the documented payload schema, validates tenant visibility, and returns a normalized API envelope.

HTTP request example (cURL)

Set your server and token. Replace sample IDs with accessible IDs. For requests with a body, save the applicable JSON example below as request.json and replace sample values before sending. Idempotency-Key identifies one logical operation.

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}"

Parameters

Name In Required Type Style Explode Constraints Description Example
id path yes integer:int64 min: 1 Quant unpacking document ID. 1001
Idempotency-Key header no string maxLength: 191 Optional idempotency key for API v2 write requests. Successful 2xx/3xx responses are replayed for the same key and identical payload for one day. The same key with a different payload returns 409. "ord-create-20260714-001"

Request body

No request body.

Responses

200 Successful response.

Successful response.

Field Required Type Flags Constraints Description Example
data yes QuantUnpacking Quant unpacking document.
data.id yes integer:int64 readOnly min: 1 1001
data.created_at no string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at no string:date-time | null "2026-07-14T10:30:00Z"
data.external_id no string | null "QU-100245"
data.domain_id no integer:int64 | null min: 1 3
data.warehouse_id no integer:int64 | null min: 1 42
data.user_id no integer:int64 | null min: 1 9
data.status_id no enum:int64 | null enum: 1, 4 1 - draft/new document. 4 - conducted document. 1
data.document_date no string:date | null "2026-07-14"
data.counts yes object
data.counts.source yes number:float 1
data.counts.target yes number:float 6
data.counts.source_moved yes number:float 0
data.counts.target_moved yes number:float 0
data.conducted_at no string:date-time | null "2026-07-14T10:30:00Z"
data.comment no string | null "Unpack coffee box"
data.items no array<QuantUnpackingItem>
data.items[] no QuantUnpackingItem Quant unpacking line.
data.items[].id yes integer:int64 readOnly min: 1 9001
data.items[].source_product_id yes integer:int64 min: 1 1200
data.items[].target_product_id no integer:int64 | null min: 1 1201
data.items[].source_place_id no integer:int64 | null min: 1 501
data.items[].target_place_id no integer:int64 | null min: 1 502
data.items[].source_quantity yes number:float min: 0 1
data.items[].target_quantity no number:float | null min: 0 6
data.items[].available_quantity no number:float | null min: 0 10
data.items[].batch no string | null "LOT-2026"
data.items[].production_date no string:date | null "2026-01-15"
data.items[].expiration_date no string:date | null "2027-01-15"
data.items[].comment no string | null "Box unpacked"
meta yes ResponseMeta
meta.api_version yes enum enum: v2 "v2"
meta.deleted no boolean true
meta.id no integer:int64 | null min: 1 1001
meta.command_replayed no boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration no object | null
meta.crossdock_configuration.physical_warehouse_id yes integer:int64 min: 1 42
meta.crossdock_configuration.enabled yes boolean true
meta.crossdock_configuration.process_version yes string "direct_order_v1"

Response examples

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 Bad request

BadRequest

Bad request.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

BAD_REQUEST

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

401 Authentication required

Unauthorized

Authentication is required.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

AUTH_REQUIRED

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

403 Forbidden

Forbidden

The authenticated account is not allowed to perform this action.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

FORBIDDEN

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

404 Not found

NotFound

The requested resource was not found or is outside the authenticated account scope.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

NOT_FOUND

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

409 Conflict

Conflict

The request conflicts with the current resource state or idempotency key state.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

idempotencyConflict

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

422 Validation error

ValidationError

Validation failed.

Field Required Type Flags Constraints Description Example
message yes string "The given data was invalid."
error no string "VALIDATION_ERROR"
errors yes object {"warehouse_id":["The selected warehouse is invalid."]}

Response examples

validationError

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

429 Rate limit exceeded

TooManyRequests

Rate limit exceeded.

Field Required Type Flags Constraints Description Example
message yes string "Too Many Attempts."
error yes string "RATE_LIMITED"

500 Internal server error

InternalServerError

An unexpected server error occurred.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/quant-unpackings/{id}/items

Add quant unpacking

operationIdaddQuantUnpackingsItems
TagQuant Unpackings
SecuritybearerAuth

Add quant unpacking. The request uses the documented payload schema, validates tenant visibility, and returns a normalized API envelope.

HTTP request example (cURL)

Set your server and token. Replace sample IDs with accessible IDs. For requests with a body, save the applicable JSON example below as request.json and replace sample values before sending. Idempotency-Key identifies one logical operation.

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

Parameters

Name In Required Type Style Explode Constraints Description Example
id path yes integer:int64 min: 1 Quant unpacking document ID. 1001
Idempotency-Key header no string maxLength: 191 Optional idempotency key for API v2 write requests. Successful 2xx/3xx responses are replayed for the same key and identical payload for one day. The same key with a different payload returns 409. "ord-create-20260714-001"

Request body

AddQuantUnpackingItemRequest required

Field Required Type Flags Constraints Description Example
data yes QuantUnpackingItemCreatePayload Quant unpacking source item. Target product and target quantity are derived by the package service.
data.source_product_id yes integer:int64 min: 1 1200
data.source_quantity yes number:float min: 0.001 1
data.source_place_id no integer:int64 | null min: 1 501
data.target_place_id no integer:int64 | null min: 1 502
data.batch no string | null "LOT-2026"
data.production_date no string:date | null "2026-01-15"
data.expiration_date no string:date | null "2027-01-15"
data.comment no string | null "Box unpacked"

Request examples

default

{
  "data": {
    "source_product_id": 1200,
    "source_quantity": 1,
    "source_place_id": 501
  }
}

Responses

200 Successful response.

Successful response.

Field Required Type Flags Constraints Description Example
data yes QuantUnpacking Quant unpacking document.
data.id yes integer:int64 readOnly min: 1 1001
data.created_at no string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at no string:date-time | null "2026-07-14T10:30:00Z"
data.external_id no string | null "QU-100245"
data.domain_id no integer:int64 | null min: 1 3
data.warehouse_id no integer:int64 | null min: 1 42
data.user_id no integer:int64 | null min: 1 9
data.status_id no enum:int64 | null enum: 1, 4 1 - draft/new document. 4 - conducted document. 1
data.document_date no string:date | null "2026-07-14"
data.counts yes object
data.counts.source yes number:float 1
data.counts.target yes number:float 6
data.counts.source_moved yes number:float 0
data.counts.target_moved yes number:float 0
data.conducted_at no string:date-time | null "2026-07-14T10:30:00Z"
data.comment no string | null "Unpack coffee box"
data.items no array<QuantUnpackingItem>
data.items[] no QuantUnpackingItem Quant unpacking line.
data.items[].id yes integer:int64 readOnly min: 1 9001
data.items[].source_product_id yes integer:int64 min: 1 1200
data.items[].target_product_id no integer:int64 | null min: 1 1201
data.items[].source_place_id no integer:int64 | null min: 1 501
data.items[].target_place_id no integer:int64 | null min: 1 502
data.items[].source_quantity yes number:float min: 0 1
data.items[].target_quantity no number:float | null min: 0 6
data.items[].available_quantity no number:float | null min: 0 10
data.items[].batch no string | null "LOT-2026"
data.items[].production_date no string:date | null "2026-01-15"
data.items[].expiration_date no string:date | null "2027-01-15"
data.items[].comment no string | null "Box unpacked"
meta yes ResponseMeta
meta.api_version yes enum enum: v2 "v2"
meta.deleted no boolean true
meta.id no integer:int64 | null min: 1 1001
meta.command_replayed no boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration no object | null
meta.crossdock_configuration.physical_warehouse_id yes integer:int64 min: 1 42
meta.crossdock_configuration.enabled yes boolean true
meta.crossdock_configuration.process_version yes string "direct_order_v1"

Response examples

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 Bad request

BadRequest

Bad request.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

BAD_REQUEST

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

401 Authentication required

Unauthorized

Authentication is required.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

AUTH_REQUIRED

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

403 Forbidden

Forbidden

The authenticated account is not allowed to perform this action.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

FORBIDDEN

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

404 Not found

NotFound

The requested resource was not found or is outside the authenticated account scope.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

NOT_FOUND

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

409 Conflict

Conflict

The request conflicts with the current resource state or idempotency key state.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

idempotencyConflict

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

422 Validation error

ValidationError

Validation failed.

Field Required Type Flags Constraints Description Example
message yes string "The given data was invalid."
error no string "VALIDATION_ERROR"
errors yes object {"warehouse_id":["The selected warehouse is invalid."]}

Response examples

validationError

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

429 Rate limit exceeded

TooManyRequests

Rate limit exceeded.

Field Required Type Flags Constraints Description Example
message yes string "Too Many Attempts."
error yes string "RATE_LIMITED"

500 Internal server error

InternalServerError

An unexpected server error occurred.

Field Required Type Flags Constraints Description Example
message yes string "The request could not be processed."
error yes string "BAD_REQUEST"

Response examples

INTERNAL_SERVER_ERROR

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