# Fullfillment

## Update goods' details

> This endpoint allows modifying details of an existing goods.\
> Only the fields that need to be changed should be included in the request body (partial update), for example updating the name, price, or shelf life of a product.\
> \
> 🔸All fields are optional, but at least one field must be provided to perform an update. On success, the API returns the updated goods fields.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/goods/{objectId}":{"patch":{"summary":"Update goods' details","description":"This endpoint allows modifying details of an existing goods.\nOnly the fields that need to be changed should be included in the request body (partial update), for example updating the name, price, or shelf life of a product.\n\n🔸All fields are optional, but at least one field must be provided to perform an update. On success, the API returns the updated goods fields.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"updateGoods","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the goods are registered.","schema":{"type":"string"}},{"name":"objectId","in":"path","required":true,"description":"Unique identifier of the goods to be updated.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Request body for updating goods.\nOnly the fields that need to be changed should be provided.\nAt least one field must be present.\n","properties":{"goodsUnitName":{"type":"string","description":"Product name.","minLength":2,"maxLength":255},"goodsUnitFullName":{"type":"string","description":"Full product name.","minLength":2,"maxLength":255},"price":{"type":"number","format":"float","description":"Price per unit of the product.","minimum":0.01,"maximum":1000000},"inventExpireDays":{"type":"integer","nullable":true,"description":"Shelf life in days or `null` if not applicable.","minimum":1,"maximum":15000}},"minProperties":1}}}},"responses":{"201":{"description":"Request successful. Goods details were updated.","content":{"application/json":{"schema":{"type":"object","properties":{"goodsUnitName":{"type":"string","description":"Product name."},"goodsUnitFullName":{"type":"string","description":"Full product name."},"price":{"type":"number","format":"float","description":"Price per unit of the product."},"inventExpireDays":{"type":"integer","nullable":true,"description":"Shelf life in days or `null` if not applicable."}}}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"403":{"description":"Authorization Error. Access to the resource is forbidden.","content":{"application/json":{}}},"404":{"description":"Resource Not Found. The requested resource does not exist.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. The request body contains validation errors.","content":{"application/json":{}}}}}}}}
```

## Update Barcode Details

> This endpoint is used to update the parameters of an existing barcode in the system by its unique identifier.\
> \
> Only the fields that need to be updated should be included in the request body.\
> \
> 🔸All fields are optional, but at least one field must be provided to perform the update. On success, the API returns the updated barcode object.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/barcodes/{objectBarcodeId}":{"patch":{"summary":"Update Barcode Details","description":"This endpoint is used to update the parameters of an existing barcode in the system by its unique identifier.\n\nOnly the fields that need to be updated should be included in the request body.\n\n🔸All fields are optional, but at least one field must be provided to perform the update. On success, the API returns the updated barcode object.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"updateBarcode","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the barcode is registered.","schema":{"type":"string"}},{"name":"objectBarcodeId","in":"path","required":true,"description":"Unique identifier of the barcode to be updated.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Request body for updating barcode details.\nOnly the fields that need to be changed should be provided.\nAt least one field must be present.\n","properties":{"measureUnitName":{"type":"string","description":"Unit of measurement.","enum":["pcs","box","pallet"]},"includes":{"type":"integer","description":"Number of units in the package.","minimum":1,"maximum":1000000},"weight":{"type":"number","format":"float","description":"Weight of the barcode package in kilograms.","minimum":0.01,"maximum":1000000},"length":{"type":"number","format":"float","description":"Package length in centimeters.","minimum":0.01,"maximum":1000000},"height":{"type":"number","format":"float","description":"Package height in centimeters.","minimum":0.01,"maximum":1000000},"width":{"type":"number","format":"float","description":"Package width in centimeters.","minimum":0.01,"maximum":1000000}},"minProperties":1}}}},"responses":{"201":{"description":"Barcode successfully updated.","content":{"application/json":{"schema":{"type":"object","properties":{"measureUnitName":{"type":"string","description":"Unit of measurement."},"includes":{"type":"integer","description":"Number of units in the package."},"weight":{"type":"number","format":"float","description":"Weight of the barcode package in kilograms."},"length":{"type":"number","format":"float","description":"Package length in centimeters."},"height":{"type":"number","format":"float","description":"Package height in centimeters."},"width":{"type":"number","format":"float","description":"Package width in centimeters."}}}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"403":{"description":"Authorization Error. Access to the resource is forbidden.","content":{"application/json":{}}},"404":{"description":"Resource Not Found. The requested resource does not exist.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. The request body contains validation errors.","content":{"application/json":{}}}}}}}}
```

## Update Inbound Plan

> This endpoint is used to update the parameters of an existing inbound delivery plan by its unique identifier.\
> \
> The inbound plan must be in status \`"1"\` \*\*(New)\*\*.\
> Only the fields that need to be changed should be included in the request body.\
> \
> 🔸All fields are optional, but at least one field must be provided to perform an update. On success, the API returns the updated inbound plan object.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/inbound-plans/{documentId}":{"patch":{"summary":"Update Inbound Plan","description":"This endpoint is used to update the parameters of an existing inbound delivery plan by its unique identifier.\n\nThe inbound plan must be in status `\"1\"` **(New)**.\nOnly the fields that need to be changed should be included in the request body.\n\n🔸All fields are optional, but at least one field must be provided to perform an update. On success, the API returns the updated inbound plan object.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"updateInboundPlan","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the inbound plan is registered.","schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"description":"Unique identifier of the inbound plan.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Request body for updating an inbound plan.\nOnly the fields that need to be changed should be provided.\nAt least one field must be present.\n","properties":{"destWarehouse":{"type":"string","description":"Destination warehouse code."},"deliveryType":{"type":"integer","description":"Delivery type(1 — `Supplier delivery`, 3 — `Nova Post return`, 7 — `Nova Post delivery`).","enum":[1,3,7]},"additionalInfo":{"type":"string","description":"Additional information or comments.","minLength":2,"maxLength":255},"details":{"type":"array","description":"Array of product items included in the inbound plan.","minItems":1,"items":{"type":"object","additionalProperties":false,"properties":{"objectId":{"type":"string","description":"Product identifier in external system."},"quantity":{"type":"integer","description":"Number of product units.","minimum":1,"maximum":1000000}}}}},"minProperties":1}}}},"responses":{"201":{"description":"The inbound plan was successfully updated.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","description":"Current status of the inbound plan."},"destWarehouse":{"type":"string","description":"Destination warehouse code."},"deliveryType":{"type":"integer","description":"Delivery type."},"additionalInfo":{"type":"string","description":"Additional notes or comments."},"details":{"type":"array","description":"List of product items in the plan.","items":{"type":"object","properties":{"objectId":{"type":"string","description":"Unique ID of the product in the Warehouse Management System."},"quantity":{"type":"integer","description":"Quantity of the product to be received."}}}}}}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"403":{"description":"Authorization Error. Access to the resource is forbidden.","content":{"application/json":{}}},"404":{"description":"Resource Not Found. The requested resource does not exist.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. The data in the request body is invalid.","content":{"application/json":{}}}}}}}}
```

## Update Client Order Details

> This endpoint is used to update the parameters of an existing client order that is currently in status \*\*\`"13"\` (Incomplete)\*\*.\
> \
> The request allows modifying general order parameters, the list of items, and if delivery is via \*\*Nova Post\*\* setting or updating the \*\*Waybill Number\*\*.\
> \
> 🔸All fields are optional, but at least one field must be provided to execute an update.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/orders/{documentId}":{"patch":{"summary":"Update Client Order Details","description":"This endpoint is used to update the parameters of an existing client order that is currently in status **`\"13\"` (Incomplete)**.\n\nThe request allows modifying general order parameters, the list of items, and if delivery is via **Nova Post** setting or updating the **Waybill Number**.\n\n🔸All fields are optional, but at least one field must be provided to execute an update.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"updateClientOrder","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the order is registered.","schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"description":"Unique identifier of the client order.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Request body for updating a client order.\nOnly the fields that need to be changed should be provided.\nAt least one field must be present.\n","properties":{"destWarehouse":{"type":"string","description":"Code of the warehouse for dispatch."},"deliveryType":{"type":"integer","description":"Delivery type (`2` = Nova Post, `5` = Pickup).","enum":[2,5]},"waybilNumber":{"type":"string","nullable":true,"description":"Waybill number.\nRequired if `deliveryType = 2`.\n"},"additionalInfo":{"type":"string","description":"Additional info or comment.","minLength":2,"maxLength":255},"details":{"type":"array","description":"Array of items included in the order.","minItems":1,"items":{"type":"object","additionalProperties":false,"properties":{"objectId":{"type":"string","description":"Goods ID."},"quantity":{"type":"integer","description":"Quantity of goods.","minimum":1,"maximum":1000000},"price":{"type":"number","format":"float","description":"Goods price.","minimum":1,"maximum":100000000},"sum":{"type":"number","format":"float","description":"Total amount per goods.","minimum":1,"maximum":100000000}},"required":["objectId","quantity"]}}},"minProperties":1}}}},"responses":{"201":{"description":"The client order was successfully updated.\nThe response contains the updated order object.\n","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","description":"Status of the order (`\"13\"` = Incomplete)."},"destWarehouse":{"type":"string","description":"Code of the warehouse for dispatch."},"additionalInfo":{"type":"string","description":"Additional notes or comments."},"deliveryType":{"type":"integer","description":"Type of delivery (2 = Nova Post, 5 = Pickup)."},"waybilNumber":{"type":"string","nullable":true,"description":"Waybill number (required if deliveryType = 2)."},"details":{"type":"array","description":"List of product items in the order.","items":{"type":"object","properties":{"objectId":{"type":"string","description":"Goods ID."},"quantity":{"type":"integer","description":"Quantity of goods."},"price":{"type":"number","format":"float","description":"Price per unit."},"sum":{"type":"number","format":"float","description":"Total amount per goods."}},"required":["objectId","quantity"]}}},"required":["status","destWarehouse","deliveryType","details"]}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"403":{"description":"Authorization Error. Access to the resource is forbidden.","content":{"application/json":{}}},"404":{"description":"Resource Not Found. The requested resource does not exist.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. The request body contains invalid data.","content":{"application/json":{}}}}}}}}
```

## Check Inbound Plan Status

> This endpoint is used to retrieve the statuses of one or more inbound plans.\
> It supports filtering via query parameters such as document IDs, external numbers, warehouse codes, and date range.\
> \
> 🔹\*\*If no filter parameters are provided, the response returns the most recent inbound plans.\*\*\
> \
> 🔸 This \`GET\` request does not return an error if incorrect, non-existent, or partially invalid filter values are used. In such cases, the system will:\
> \- Ignore invalid or empty filter values without returning an error.\
> \- Return an empty documents array if no inbound plans match the query conditions.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/inbound-plans/status":{"get":{"summary":"Check Inbound Plan Status","description":"This endpoint is used to retrieve the statuses of one or more inbound plans.\nIt supports filtering via query parameters such as document IDs, external numbers, warehouse codes, and date range.\n\n🔹**If no filter parameters are provided, the response returns the most recent inbound plans.**\n\n🔸 This `GET` request does not return an error if incorrect, non-existent, or partially invalid filter values are used. In such cases, the system will:\n- Ignore invalid or empty filter values without returning an error.\n- Return an empty documents array if no inbound plans match the query conditions.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"checkInboundPlanStatus","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where inbound plans are registered.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number (each page returns up to 25 records).","schema":{"type":"integer"}},{"name":"documentIds[]","in":"query","required":false,"description":"List of inbound plan IDs.","schema":{"type":"array","items":{"type":"string","format":"uuid"}}},{"name":"externalNumbers[]","in":"query","required":false,"description":"List of inbound plan external numbers.","schema":{"type":"array","items":{"type":"string"}}},{"name":"warehouseIds[]","in":"query","required":false,"description":"List of warehouse codes.","schema":{"type":"array","items":{"type":"string"}}},{"name":"startDate","in":"query","required":false,"description":"Start date of search (ISO 8601).","schema":{"type":"string","format":"date-time"}},{"name":"endDate","in":"query","required":false,"description":"End date of search (ISO 8601).","schema":{"type":"string","format":"date-time"}}],"responses":{"201":{"description":"Data retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"documents":{"type":"array","description":"List of inbound plans matching the filters.","items":{"type":"object","properties":{"documentId":{"type":"string","description":"Unique identifier of the inbound plan."},"externalNumber":{"type":"string","description":"External number of the inbound plan."},"status":{"type":"integer","description":"Current plan status:\n- `1` – New\n- `2` – In Progress\n- `3` – Completed\n- `10` – Cancelled\n"},"destWarehouse":{"type":"string","description":"Warehouse code."},"items":{"type":"array","description":"Item details of the inbound plan.","items":{"type":"object","properties":{"objectId":{"type":"string","description":"Product identifier."},"sku":{"type":"string","description":"Product SKU."},"measureUnitName":{"type":"string","nullable":true,"description":"Unit of measurement."},"expectedQuantity":{"type":"integer","description":"Expected quantity."},"receivedQuantity":{"type":"integer","nullable":true,"description":"Actually received quantity."},"condition":{"type":"integer","nullable":true,"description":"Condition flag.\n0 – Normal\n1 – Defective\n"},"expiryDate":{"type":"string","format":"date-time","nullable":true,"description":"Expiry date (ISO 8601)."}}}}}}},"page":{"type":"integer","description":"Current page number."},"pages":{"type":"integer","description":"Total number of pages."}}}}}}}}}}}
```

## Create Inbound Plan

> This endpoint allows creating a new inbound plan to receive goods at the specified warehouse.\
> A plan may contain one or more goods positions.\
> \
> On success, the API returns the created inbound plan with its unique identifier and initial status.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/inbound-plans":{"post":{"summary":"Create Inbound Plan","description":"This endpoint allows creating a new inbound plan to receive goods at the specified warehouse.\nA plan may contain one or more goods positions.\n\nOn success, the API returns the created inbound plan with its unique identifier and initial status.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"createInboundPlan","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the inbound plan is created.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Request body for creating an inbound plan.\nAll required fields must be provided.\n","properties":{"externalNumber":{"type":"string","description":"Document number in the client's system.","minLength":2,"maxLength":72},"guid":{"type":"string","description":"Unique document ID in the client's system.","minLength":2,"maxLength":72},"destWarehouse":{"type":"string","description":"Destination warehouse code.","minLength":2,"maxLength":255},"deliveryType":{"type":"integer","description":"Delivery type (1 — `Supplier`, 3 — `Return`, 7 — `Nova Post`).","enum":[1,3,7]},"additionalInfo":{"type":"string","description":"Additional information or comment.","minLength":2,"maxLength":255},"details":{"type":"array","description":"List of product items included in the inbound plan.","minItems":1,"items":{"type":"object","additionalProperties":false,"properties":{"objectId":{"type":"string","description":"Product ID."},"quantity":{"type":"integer","description":"Number of product units.","minimum":1,"maximum":1000000}},"required":["objectId","quantity"]}}},"required":["externalNumber","destWarehouse","deliveryType","details"]}}}},"responses":{"201":{"description":"Request successful. Inbound plan was created.","content":{"application/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Unique identifier of the inbound plan."},"status":{"type":"string","description":"Current status of the inbound plan."},"externalNumber":{"type":"string","description":"External number of the inbound plan."},"guid":{"type":"string","description":"GUID reference for the plan."},"destWarehouse":{"type":"string","description":"Destination warehouse."},"deliveryType":{"type":"integer","description":"Delivery type."},"additionalInfo":{"type":"string","description":"Additional comment or description."},"details":{"type":"array","description":"Array of product item details included in the inbound plan.","items":{"type":"object","properties":{"objectId":{"type":"string","description":"Product ID."},"quantity":{"type":"integer","description":"Quantity of product units."}}}}},"required":["documentId","status","externalNumber","guid","destWarehouse","deliveryType","details"]}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. Validation errors.","content":{"application/json":{}}}}}}}}
```

## Cancel Inbound Plan

> This endpoint cancels an existing inbound plan that is currently in status \`"1"\` \*\*(New)\*\*.\
> \
> Once canceled, the inbound plan transitions to status \`"10"\` \*\*(Canceled)\*\* and is excluded from any further processing.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/inbound-plans/{documentId}/cancel":{"patch":{"summary":"Cancel Inbound Plan","description":"This endpoint cancels an existing inbound plan that is currently in status `\"1\"` **(New)**.\n\nOnce canceled, the inbound plan transitions to status `\"10\"` **(Canceled)** and is excluded from any further processing.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"cancelInboundPlan","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the inbound plan is registered.","schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"description":"Unique identifier of the inbound plan.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"The inbound plan was successfully canceled.","content":{"application/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Unique identifier of the inbound plan."},"status":{"type":"integer","description":"Current status of the inbound plan.","enum":[10]}},"required":["documentId","status"]}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"403":{"description":"Authorization Error. Access to the resource is forbidden.","content":{"application/json":{}}},"404":{"description":"Resource Not Found. The requested resource does not exist.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. Validation errors.","content":{"application/json":{}}}}}}}}
```

## Create Goods

> This endpoint is used to create a goods record that can be added to an Inbound Plan or an Order.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/goods/multiple":{"post":{"summary":"Create Goods","description":"This endpoint is used to create a goods record that can be added to an Inbound Plan or an Order.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"createGoodsMultiple","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code for which the goods are being created.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"goods":{"type":"array","description":"Array of product objects.","items":{"type":"object","additionalProperties":false,"properties":{"sku":{"type":"string","description":"Product identifier in the system.","minLength":1,"maxLength":72},"goodsUnitName":{"type":"string","description":"Product name.","minLength":2,"maxLength":255},"goodsUnitFullName":{"type":"string","description":"Full name of the product unit.","minLength":2,"maxLength":255},"price":{"type":"number","format":"float","description":"Price per unit of the product.","minimum":0.01,"maximum":1000000},"inventExpireDays":{"type":"integer","nullable":true,"description":"Shelf life in days or `null` if not applicable.","minimum":1,"maximum":15000}},"required":["sku","goodsUnitName","price"]}}},"required":["goods"]}}}},"responses":{"201":{"description":"Request successful. Goods were created.","content":{"application/json":{"schema":{"type":"object","properties":{"goods":{"type":"array","description":"Array of created product objects.","items":{"type":"object","properties":{"objectId":{"type":"string","description":"Unique identifier of the product."},"sku":{"type":"string","description":"Product identifier in the system."},"goodsUnitName":{"type":"string","description":"Product name."},"goodsUnitFullName":{"type":"string","description":"Full name of the product unit."},"price":{"type":"number","format":"float","description":"Price per unit of the product."},"inventExpireDays":{"type":"integer","nullable":true,"description":"Shelf life in days or `null` if not applicable."}},"required":["objectId","sku","goodsUnitName","goodsUnitFullName","price"]}}},"required":["goods"]}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. The request body contains validation errors.","content":{"application/json":{}}}}}}}}
```

## Create Barcode

> This endpoint is used to create one or more barcodes associated with a specific good.\
> The barcode data is provided as an array, allowing multiple barcodes to be created in a single request.\
> \
> On success, the API returns all created barcodes with their unique identifiers and the parameters specified in the request.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/goods/{objectId}/barcodes/multiple":{"post":{"summary":"Create Barcode","description":"This endpoint is used to create one or more barcodes associated with a specific good.\nThe barcode data is provided as an array, allowing multiple barcodes to be created in a single request.\n\nOn success, the API returns all created barcodes with their unique identifiers and the parameters specified in the request.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"createBarcodes","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the goods are registered.","schema":{"type":"string"}},{"name":"objectId","in":"path","required":true,"description":"Unique identifier of the goods for which barcodes are created.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"barcodes":{"type":"array","description":"Array of barcode objects.","minItems":1,"items":{"type":"object","additionalProperties":false,"properties":{"barCode":{"type":"string","description":"Barcode value.","minLength":1,"maxLength":72},"measureUnitName":{"type":"string","description":"Unit of measurement.","enum":["pcs","box","pallet"]},"includes":{"type":"integer","description":"Number of units in the package.","minimum":1,"maximum":1000000},"weight":{"type":"number","format":"float","description":"Weight of the barcode package in kilograms.","minimum":0.01,"maximum":1000000},"length":{"type":"number","format":"float","description":"Package length in centimeters.","minimum":0.01,"maximum":1000000},"height":{"type":"number","format":"float","description":"Package height in centimeters.","minimum":0.01,"maximum":1000000},"width":{"type":"number","format":"float","description":"Package width in centimeters.","minimum":0.01,"maximum":1000000}},"required":["barCode","measureUnitName","includes"]}}},"required":["barcodes"]}}}},"responses":{"201":{"description":"Barcode(s) successfully created.","content":{"application/json":{"schema":{"type":"object","properties":{"barcodes":{"type":"array","description":"Array of created barcode objects.","items":{"type":"object","properties":{"objectBarcodeId":{"type":"string","description":"Unique identifier of the barcode."},"barCode":{"type":"string","description":"Barcode value."},"measureUnitName":{"type":"string","description":"Unit of measurement."},"includes":{"type":"integer","description":"Number of units in the package."},"weight":{"type":"number","format":"float","description":"Weight of the barcode package in kilograms."},"length":{"type":"number","format":"float","description":"Package length in centimeters."},"height":{"type":"number","format":"float","description":"Package height in centimeters."},"width":{"type":"number","format":"float","description":"Package width in centimeters."}},"required":["objectBarcodeId","barCode","measureUnitName","includes"]}}},"required":["barcodes"]}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. Validation errors in the request body.","content":{"application/json":{}}}}}}}}
```

## Add Goods to Inbound Plan

> This endpoint allows adding one or more goods items to an already created inbound plan that is in status \`"1"\` \*\*(New)\*\*.\
> \
> The operation expands the list of goods within the existing inbound plan without creating a new document.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/inbound-plans/{documentId}/details":{"post":{"summary":"Add Goods to Inbound Plan","description":"This endpoint allows adding one or more goods items to an already created inbound plan that is in status `\"1\"` **(New)**.\n\nThe operation expands the list of goods within the existing inbound plan without creating a new document.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"addGoodsToInboundPlan","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the inbound plan is registered.","schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"description":"Unique identifier of the inbound plan.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Request body for adding goods to an existing inbound plan.\nThe details array must contain at least one product item.\n","properties":{"details":{"type":"array","description":"Array of product items to add to the inbound plan.","minItems":1,"items":{"type":"object","additionalProperties":false,"properties":{"objectId":{"type":"string","description":"Product identifier in WMS(Warehouse Management System)."},"quantity":{"type":"integer","description":"Quantity of product units.","minimum":1,"maximum":1000000}},"required":["objectId","quantity"]}}},"required":["details"]}}}},"responses":{"201":{"description":"The inbound plan was successfully updated.","content":{"application/json":{"schema":{"type":"object","properties":{"details":{"type":"array","description":"Updated list of product items in the inbound plan.","items":{"type":"object","properties":{"objectId":{"type":"string","description":"Product identifier in WMS(Warehouse Management System)."},"quantity":{"type":"integer","description":"Quantity of product units."}}}}}}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. The request body contains invalid data.","content":{"application/json":{}}}}}}}}
```

## Delete Goods from Inbound Plan

> This endpoint allows deleting one or more goods from an existing inbound plan that is in status \`"1"\` \*\*(New)\*\*.\
> \
> The operation removes specified product items from the inbound plan without deleting the plan itself.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/inbound-plans/{documentId}/details/multiple-delete":{"post":{"summary":"Delete Goods from Inbound Plan","description":"This endpoint allows deleting one or more goods from an existing inbound plan that is in status `\"1\"` **(New)**.\n\nThe operation removes specified product items from the inbound plan without deleting the plan itself.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"deleteGoodsFromInboundPlan","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the inbound plan is registered.","schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"description":"Unique identifier of the inbound plan.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Request body for deleting goods from an inbound plan.\nThe details array must contain at least one product item.\n","properties":{"details":{"type":"array","description":"Array of products to be removed from the inbound plan.","minItems":1,"items":{"type":"object","additionalProperties":false,"properties":{"objectId":{"type":"string","description":"Unique product ID in the Warehouse Management System."}},"required":["objectId"]}}},"required":["details"]}}}},"responses":{"201":{"description":"The inbound plan was successfully updated.","content":{"application/json":{"schema":{"type":"object","properties":{"details":{"type":"array","description":"Updated list of product items in the inbound plan.","items":{"type":"object","properties":{"objectId":{"type":"string","description":"Unique product ID in the Warehouse Management System."}}}}}}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. The request body contains invalid data.","content":{"application/json":{}}}}}}}}
```

## Create Order

> This endpoint is used to create a new customer order for shipping goods from the warehouse.\
> \
> Two delivery scenarios are supported:\
> \- \*\*Nova Post delivery\*\* — an international express waybill number must be specified, which the client generates beforehand.\
> \- \*\*Customer pickup\*\* — the order is created without specifying an international express waybill.\
> \
> If the request is properly formed and all requirements are met, the order is created with one of the following statuses:\
> \- \`"1"\` \*\*(New)\*\* — when all products are available in stock\
> \- \`"13"\` \*\*(Incomplete)\*\* — when some products are partially unavailable\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/orders":{"post":{"summary":"Create Order","description":"This endpoint is used to create a new customer order for shipping goods from the warehouse.\n\nTwo delivery scenarios are supported:\n- **Nova Post delivery** — an international express waybill number must be specified, which the client generates beforehand.\n- **Customer pickup** — the order is created without specifying an international express waybill.\n\nIf the request is properly formed and all requirements are met, the order is created with one of the following statuses:\n- `\"1\"` **(New)** — when all products are available in stock\n- `\"13\"` **(Incomplete)** — when some products are partially unavailable\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"createOrder","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the order is created.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Request body for creating a customer order.\nAll required fields must be provided.\n","properties":{"externalNumber":{"type":"string","description":"Customer's internal order number.","minLength":2,"maxLength":72},"destWarehouse":{"type":"string","description":"Warehouse code.","minLength":2,"maxLength":255},"deliveryType":{"type":"integer","description":"Delivery type(`2` — Nova Post, `5` — Customer pickup).","enum":[2,5]},"waybilNumber":{"type":"string","description":"International express waybill number."},"additionalInfo":{"type":"string","description":"Additional information or comment.","minLength":2,"maxLength":255},"details":{"type":"array","description":"List of product items included in the order.","minItems":1,"items":{"type":"object","additionalProperties":false,"properties":{"objectId":{"type":"string","description":"Product ID."},"quantity":{"type":"integer","description":"Number of product units.","minimum":1,"maximum":1000000},"price":{"type":"number","format":"float","description":"Unit price.","minimum":1,"maximum":100000000},"sum":{"type":"number","format":"float","description":"Total item amount.","minimum":1,"maximum":100000000}},"required":["objectId","quantity"]}}},"required":["externalNumber","destWarehouse","deliveryType","details"]}}}},"responses":{"201":{"description":"Request successful. Returns the full order object with documentId and initial status.","content":{"application/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Unique identifier of the customer order."},"status":{"type":"string","description":"Status of the order."},"externalNumber":{"type":"string","description":"Customer's order number."},"destWarehouse":{"type":"string","description":"Warehouse code."},"additionalInfo":{"type":"string","description":"Additional notes or comments."},"deliveryType":{"type":"integer","description":"Delivery type."},"waybilNumber":{"type":"string","nullable":true,"description":"Waybill number."},"details":{"type":"array","description":"Array of product items included in the order.","items":{"type":"object","properties":{"objectId":{"type":"string","description":"Unique identifier of the product in WMS(Warehouse Management System)."},"quantity":{"type":"integer","description":"Quantity of the goods."},"price":{"type":"number","format":"float","description":"Price per goods."},"sum":{"type":"number","format":"float","description":"Total amount for the item line."}}}}},"required":["documentId","status","externalNumber","destWarehouse","deliveryType","details"]}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. The data in the request body is invalid.","content":{"application/json":{}}}}}}}}
```

## Get Order Details

> This endpoint is used to retrieve detailed information about a specific client order by its \*\*documentId\*\*.\
> \
> The response returns the full breakdown of ordered items, including planned and actual quantities, product condition, and serial numbers (if applicable).\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/orders/{documentId}/details":{"get":{"summary":"Get Order Details","description":"This endpoint is used to retrieve detailed information about a specific client order by its **documentId**.\n\nThe response returns the full breakdown of ordered items, including planned and actual quantities, product condition, and serial numbers (if applicable).\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"getOrderDetails","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the order is registered.","schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"description":"Unique identifier of the client order.","schema":{"type":"string","format":"uuid"}}],"responses":{"201":{"description":"Data successfully retrieved.\nThe response returns the full breakdown of the order.\n","content":{"application/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","format":"uuid","description":"Unique identifier of the order."},"externalNumber":{"type":"string","description":"External (client-side) order number."},"items":{"type":"array","description":"List of ordered items.","items":{"type":"object","properties":{"objectId":{"type":"string","format":"uuid","description":"Unique identifier of the product."},"sku":{"type":"string","description":"Product SKU."},"measureUnitName":{"type":"string","description":"Unit of measurement (e.g., pcs, box)."},"plannedQuantity":{"type":"integer","description":"Planned quantity."},"actualQuantity":{"type":"integer","description":"Actually shipped quantity."},"condition":{"type":"integer","description":"Product condition:\n- `0` — Good,\n- `1` — Defective.\n","enum":[0,1]},"series":{"type":"array","description":"List of serial numbers.","items":{"type":"string"}}},"required":["objectId","sku","plannedQuantity","actualQuantity","condition","series"]}}},"required":["documentId","externalNumber","items"]}}}},"404":{"description":"Resource Not Found. The requested resource does not exist.","content":{"application/json":{}}}}}}}}
```

## Add Goods to Client Order

> This endpoint is used to add new goods to an existing client order that is currently in status \`"13"\` \*\*(Incomplete)\*\*.\
> \
> If the added goods are available in sufficient quantity, the order status is automatically changed to \`"1"\` \*\*(New)\*\*.\
> \
> This allows editing an existing order and resuming its processing without creating a new document.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/orders/{documentId}/details":{"post":{"summary":"Add Goods to Client Order","description":"This endpoint is used to add new goods to an existing client order that is currently in status `\"13\"` **(Incomplete)**.\n\nIf the added goods are available in sufficient quantity, the order status is automatically changed to `\"1\"` **(New)**.\n\nThis allows editing an existing order and resuming its processing without creating a new document.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"addGoodsToClientOrder","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the order is registered.","schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"description":"Unique identifier of the client order.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Request body for adding goods to an existing client order.\nAt least one product item must be provided.\n","properties":{"details":{"type":"array","description":"Array of items to be added to the order.","minItems":1,"items":{"type":"object","additionalProperties":false,"properties":{"objectId":{"type":"string","description":"Unique product identifier in WMS (Warehouse Management System)."},"quantity":{"type":"integer","description":"Quantity of product.","minimum":1,"maximum":1000000},"price":{"type":"number","format":"float","description":"Unit price.","minimum":1,"maximum":100000000},"sum":{"type":"number","format":"float","description":"Total value of the line item.","minimum":1,"maximum":100000000}},"required":["objectId","quantity"]}}},"required":["details"]}}}},"responses":{"201":{"description":"Order details updated.","content":{"application/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Unique identifier of the customer order."},"status":{"type":"integer","description":"Current status of the order (`13` = Incomplete)."}},"required":["documentId","status"]}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. The data in the request body is invalid.","content":{"application/json":{}}}}}}}}
```

## Check Order Status

> This endpoint is used to retrieve information about the statuses of one or more client orders, with optional filtering parameters.\
> \
> 🔹\*\*If no filter parameters are provided, the response returns the most recent client orders.\*\*\
> \
> 🔸This \`GET\` request does not return an error when incorrect, non-existent, or partially invalid filter values are used.\
> In such cases, invalid or empty filters are ignored and an empty array is returned if no orders match the criteria.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/orders/status":{"get":{"summary":"Check Order Status","description":"This endpoint is used to retrieve information about the statuses of one or more client orders, with optional filtering parameters.\n\n🔹**If no filter parameters are provided, the response returns the most recent client orders.**\n\n🔸This `GET` request does not return an error when incorrect, non-existent, or partially invalid filter values are used.\nIn such cases, invalid or empty filters are ignored and an empty array is returned if no orders match the criteria.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"checkOrderStatus","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the orders are registered.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number (each page includes up to 25 objects).","schema":{"type":"integer"}},{"name":"documentIds","in":"query","required":false,"description":"List of order identifiers.","schema":{"type":"array","items":{"type":"string","format":"uuid"}}},{"name":"externalNumbers","in":"query","required":false,"description":"List of client order numbers.","schema":{"type":"array","items":{"type":"string"}}},{"name":"warehouseIds","in":"query","required":false,"description":"List of warehouse codes.","schema":{"type":"array","items":{"type":"string"}}},{"name":"startDate","in":"query","required":false,"description":"Start date in ISO 8601 format.","schema":{"type":"string","format":"date-time"}},{"name":"endDate","in":"query","required":false,"description":"End date in ISO 8601 format.","schema":{"type":"string","format":"date-time"}}],"responses":{"201":{"description":"Request successful.\nReturns an array of client orders that match the filtering criteria.\n","content":{"application/json":{"schema":{"type":"object","properties":{"documents":{"type":"array","description":"List of client orders.","items":{"type":"object","properties":{"documentId":{"type":"string","description":"Unique identifier of the order."},"externalNumber":{"type":"string","description":"Order number in the client's system."},"status":{"type":"integer","description":"Current order status:\n- `1` — New,\n- `2` — In progress,\n- `3` — Completed,\n- `10` — Cancelled,\n- `13` — Incomplete.\n","enum":[1,2,3,10,13]},"statusTime":{"type":"string","format":"date-time","description":"Timestamp of the latest status update."},"destWarehouse":{"type":"string","description":"Warehouse code."},"waybilNumber":{"type":"string","nullable":true,"description":"IEW (International Express Waybill) number."}},"required":["documentId","externalNumber","status","statusTime","destWarehouse"]}},"page":{"type":"integer","description":"Current page number."},"pages":{"type":"integer","description":"Total number of pages."}},"required":["documents","page","pages"]}}}}}}}}}
```

## Cancel Client Order

> This endpoint is used to cancel a previously created client order that is currently in status \*\*\`"13"\` (Incomplete)\*\*.\
> \
> Once canceled, the order transitions to status \*\*\`"10"\` (Canceled)\*\* and is excluded from any further processing.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/orders/{documentId}/cancel":{"patch":{"summary":"Cancel Client Order","description":"This endpoint is used to cancel a previously created client order that is currently in status **`\"13\"` (Incomplete)**.\n\nOnce canceled, the order transitions to status **`\"10\"` (Canceled)** and is excluded from any further processing.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"cancelClientOrder","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the client order is registered.","schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"description":"Unique identifier of the client order.","schema":{"type":"string","format":"uuid"}}],"responses":{"201":{"description":"The client order was successfully canceled.\nReturns the documentId and new status (\"10\") of the canceled order.\n","content":{"application/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Unique identifier of the client order."},"status":{"type":"integer","description":"Current status of the order.","enum":[10]}},"required":["documentId","status"]}}}},"400":{"description":"Syntax Error. The request has incorrect format or syntax.","content":{"application/json":{}}},"403":{"description":"Authorization Error. Access to the resource is forbidden.","content":{"application/json":{}}},"404":{"description":"Resource Not Found. The requested resource does not exist.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. The request body contains invalid data.","content":{"application/json":{}}}}}}}}
```

## Delete Goods from Client Order

> This endpoint is used to delete one or more product items from a client order\
> that is currently in status \`"13"\` \*\*(Incomplete)\*\*.\
> \
> If an item with insufficient stock is removed from such an order, the order status is automatically changed to \`"1"\` \*\*(New)\*\*.\
> This allows updating the order and sending it for processing without creating a new document.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; any text that does not fit remains hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/orders/{documentId}/details/multiple-delete":{"post":{"summary":"Delete Goods from Client Order","description":"This endpoint is used to delete one or more product items from a client order\nthat is currently in status `\"13\"` **(Incomplete)**.\n\nIf an item with insufficient stock is removed from such an order, the order status is automatically changed to `\"1\"` **(New)**.\nThis allows updating the order and sending it for processing without creating a new document.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; any text that does not fit remains hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values to demonstrate how a valid request or response should look.\n","operationId":"deleteGoodsFromClientOrder","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the order is registered.","schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"description":"Unique identifier of the client order.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"description":"Request body for deleting goods from a client order.\nAt least one item must be provided.\n","properties":{"details":{"type":"array","description":"Array of items to be deleted from the order.","minItems":1,"items":{"type":"object","additionalProperties":false,"properties":{"objectId":{"type":"string","description":"Unique product identifier in the WMS system."}},"required":["objectId"]}}},"required":["details"]}}}},"responses":{"201":{"description":"The client order was successfully updated.\nReturns the updated order status.\n","content":{"application/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Unique identifier of the client order."},"status":{"type":"integer","description":"Current status of the order."}},"required":["documentId","status"]}}}},"400":{"description":"Bad Request. The request has an incorrect format or invalid syntax.","content":{"application/json":{}}},"403":{"description":"Authorization Error. Access to the resource is forbidden.","content":{"application/json":{}}},"404":{"description":"Resource Not Found. The requested resource does not exist.","content":{"application/json":{}}},"422":{"description":"Unprocessable Entity. The data in the request body is invalid.","content":{"application/json":{}}}}}}}}
```

## Check Stock Remains

> This endpoint is used to retrieve information on current stock remains of goods in the fulfillment warehouse(s).\
> \
> It allows the client to check how many units of each goods are:\
> \- stored in stock,\
> \- reserved in active orders,\
> \- available for new orders.\
> \
> Filters can be applied by product, warehouse, condition, or date. If no filters are provided, all stock remains for the client’s goods across all warehouses are returned.\
> \
> Invalid or unknown filter values are ignored and do not cause errors.\
> \
> 🔹\*\*Description of control elements:\*\*\
> \
> \*\*SCHEMA\*\*\</br>\
> Displays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\
> \- \*\*Single line description\*\*\</br>\
> &#x20; A description that fits into a single line; overflow text is hidden.\
> \- \*\*Multiline description\*\*\</br>\
> &#x20; An expanded description that displays more than one line of text.\
> \
> \*\*EXAMPLE\*\*\</br>\
> Shows a ready-made sample JSON with correctly formatted values demonstrating a valid response.<br>

```json
{"openapi":"3.0.0","info":{"version":"1.0.0"},"tags":[],"servers":[{"description":"sandbox","url":"https://api-stage.novapost.pl/v.1.0/"},{"description":"production","url":"https://api.novapost.com/v.1.0/"}],"security":[{"JWT":[]}],"components":{"securitySchemes":{"JWT":{"type":"apiKey","in":"header","name":"Authorization","description":"Authorization JWT-token with a lifetime of 1 hour in header"}}},"paths":{"/fulfillment/{countrycode}/stock-remains":{"get":{"summary":"Check Stock Remains","description":"This endpoint is used to retrieve information on current stock remains of goods in the fulfillment warehouse(s).\n\nIt allows the client to check how many units of each goods are:\n- stored in stock,\n- reserved in active orders,\n- available for new orders.\n\nFilters can be applied by product, warehouse, condition, or date. If no filters are provided, all stock remains for the client’s goods across all warehouses are returned.\n\nInvalid or unknown filter values are ignored and do not cause errors.\n\n🔹**Description of control elements:**\n\n**SCHEMA**</br>\nDisplays the full technical structure of the request or response, including field names, data types, required fields, allowed values, and validation rules.\n- **Single line description**</br>\n  A description that fits into a single line; overflow text is hidden.\n- **Multiline description**</br>\n  An expanded description that displays more than one line of text.\n\n**EXAMPLE**</br>\nShows a ready-made sample JSON with correctly formatted values demonstrating a valid response.\n","operationId":"checkStockRemains","tags":["Fulfillment"],"parameters":[{"name":"countrycode","in":"path","required":true,"description":"Country code where the fulfillment warehouses are located.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number (each page returns up to 25 records).","schema":{"type":"integer"}},{"name":"objectIds[]","in":"query","required":false,"description":"List of goods IDs (UUID) to filter by.","schema":{"type":"array","items":{"type":"string","format":"uuid"}}},{"name":"objectArts[]","in":"query","required":false,"description":"List of product article numbers (SKUs) to filter by.","schema":{"type":"array","items":{"type":"string"}}},{"name":"objectTitle[]","in":"query","required":false,"description":"List of product names to filter by.","schema":{"type":"array","items":{"type":"string"}}},{"name":"warehouseIds[]","in":"query","required":false,"description":"Warehouse codes to filter by. If empty, all warehouses are included.","schema":{"type":"array","items":{"type":"string"}}},{"name":"remainDate","in":"query","required":false,"description":"Date up to which to consider all receipts.\nStock is calculated as of this date/time.\nFormat: YYYY-MM-DD or full ISO 8601 timestamp.\n","schema":{"type":"string","format":"date-time"}},{"name":"condition","in":"query","required":false,"description":"Filter by stock condition:\n- `0` — good (saleable),\n- `1` — damaged (unsaleable).\nIf omitted, all conditions are included.\n","schema":{"type":"string","enum":["0","1"]}}],"responses":{"201":{"description":"Data retrieved successfully.\nReturns current stock remains per goods and warehouse.\n","content":{"application/json":{"schema":{"type":"object","properties":{"goodsStock":{"type":"array","description":"Array of stock entries per goods and warehouse.","items":{"type":"object","properties":{"objectId":{"type":"string","description":"Unique identifier of the product."},"sku":{"type":"string","description":"Product SKU."},"measureUnitName":{"type":"string","description":"Unit of measurement (e.g., pcs)."},"quantity":{"type":"integer","description":"Total quantity in stock."},"reservedQuantity":{"type":"integer","description":"Quantity reserved in active orders."},"availableQuantity":{"type":"integer","description":"Quantity available for new orders."},"destWarehouse":{"type":"string","description":"Warehouse code."},"expiryDate":{"type":"string","nullable":true,"description":"Expiry date in ISO 8601 format."}}}},"page":{"type":"integer","description":"Current page number."},"pages":{"type":"integer","description":"Total number of pages."}}}}}},"403":{"description":"Authorization Error. Access to the resource is forbidden.","content":{"application/json":{}}},"404":{"description":"Resource Not Found. The requested resource does not exist.","content":{"application/json":{}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://api-portal.novapost.com/metodi-1/methods/fullfillment.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
