MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

Authenticating requests

This API is not authenticated.

Acceptances

Goods receiving documents (warehouse inbound). Use these endpoints to list, create, view, update and delete acceptances.

Authentication: Bearer Token (Laravel Sanctum)

Access scope

List acceptances with advanced filtering

requires authentication

Returns a paginated list of acceptances available to the authenticated user. Supports multiple filters, ranges and sorting.

βœ… Multiple exact filters are supported via arrays: field[]=1&field[]=2

Examples:

Example request:
curl --request GET \
    --get "https://localhost/api/acceptances?acc_id%5B%5D=101&acc_status%5B%5D=1&acc_wh_id%5B%5D=3&acc_shop_id%5B%5D=12&acc_type%5B%5D=1&acc_ext_id=ACC-101%0A%0A-----------------------------%0A%F0%9F%94%8E+Ranges%0A-----------------------------&acc_date_from=2026-01-01&acc_date_to=2026-01-31&created_at_from=2026-01-01&created_at_to=2026-01-31%0A%0A-----------------------------%0A%F0%9F%94%8E+Sorting%0A-----------------------------&sort=-acc_date%2Cacc_id%0A%0A-----------------------------%0A%F0%9F%94%8E+Pagination%0A-----------------------------&per_page=20&page=1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"acc_ext_id\": \"b\",
    \"acc_date_from\": \"2026-03-09T09:02:28\",
    \"acc_date_to\": \"2026-03-09T09:02:28\",
    \"created_at_from\": \"2026-03-09T09:02:28\",
    \"created_at_to\": \"2026-03-09T09:02:28\",
    \"sort\": \"architecto\",
    \"per_page\": 22,
    \"page\": 67,
    \"acc_id\": [
        16
    ],
    \"acc_status\": [
        16
    ],
    \"acc_wh_id\": [
        16
    ],
    \"acc_shop_id\": [
        16
    ],
    \"acc_type\": [
        16
    ]
}"
const url = new URL(
    "https://localhost/api/acceptances"
);

const params = {
    "acc_id[]": "101",
    "acc_status[]": "1",
    "acc_wh_id[]": "3",
    "acc_shop_id[]": "12",
    "acc_type[]": "1",
    "acc_ext_id": "ACC-101

-----------------------------
πŸ”Ž Ranges
-----------------------------",
    "acc_date_from": "2026-01-01",
    "acc_date_to": "2026-01-31",
    "created_at_from": "2026-01-01",
    "created_at_to": "2026-01-31

-----------------------------
πŸ”Ž Sorting
-----------------------------",
    "sort": "-acc_date,acc_id

-----------------------------
πŸ”Ž Pagination
-----------------------------",
    "per_page": "20",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "acc_ext_id": "b",
    "acc_date_from": "2026-03-09T09:02:28",
    "acc_date_to": "2026-03-09T09:02:28",
    "created_at_from": "2026-03-09T09:02:28",
    "created_at_to": "2026-03-09T09:02:28",
    "sort": "architecto",
    "per_page": 22,
    "page": 67,
    "acc_id": [
        16
    ],
    "acc_status": [
        16
    ],
    "acc_wh_id": [
        16
    ],
    "acc_shop_id": [
        16
    ],
    "acc_type": [
        16
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "error": "AUTH_REQUIRED"
}
 

Request      

GET api/acceptances

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

acc_id[]   integer  optional    

Filter by acceptance ID(s). Example: 101

acc_status[]   integer  optional    

Filter by status ID(s). Example: 1

acc_wh_id[]   integer  optional    

Filter by warehouse ID(s). Example: 3

acc_shop_id[]   integer  optional    

Filter by shop ID(s). Example: 12

acc_type[]   integer  optional    

Filter by acceptance type ID(s). Example: 1

acc_ext_id   string  optional    

Filter by external ID (LIKE). Example: `ACC-101


πŸ”Ž Ranges -----------------------------`

acc_date_from   string  optional    

date Filter by document date from (>=). Example: 2026-01-01

acc_date_to   string  optional    

date Filter by document date to (<=). Example: 2026-01-31

created_at_from   string  optional    

date Filter by creation date from. Example: 2026-01-01

created_at_to   string  optional    

date Filter by creation date to. Example: `2026-01-31


πŸ”Ž Sorting -----------------------------`

sort   string  optional    

Sort fields separated by comma. Use "-" for DESC. Example: `-acc_date,acc_id


πŸ”Ž Pagination -----------------------------`

per_page   integer  optional    

Items per page. Max: 250. Example: 20

page   integer  optional    

Page number. Example: 1

Body Parameters

acc_ext_id   string  optional    

Must not be greater than 100 characters. Example: b

acc_date_from   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

acc_date_to   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

created_at_from   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

created_at_to   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

sort   string  optional    

Example: architecto

per_page   integer  optional    

Must be at least 1. Must not be greater than 250. Example: 22

page   integer  optional    

Must be at least 1. Example: 67

acc_id   integer[]  optional    
acc_status   integer[]  optional    
acc_wh_id   integer[]  optional    
acc_shop_id   integer[]  optional    
acc_type   integer[]  optional    

Create acceptance (optionally with lines)

requires authentication

Creates a new acceptance (warehouse inbound) in the caller’s domain. Server sets initial status to 1 (created) and the acc_date to now.

You may optionally send offers to create/update lines together with the document.

Example request:
curl --request POST \
    "https://localhost/api/acceptances" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"acc_wh_id\": 3,
    \"acc_shop_id\": 12,
    \"acc_type\": 1,
    \"acc_ext_id\": 1234,
    \"acc_comment\": \"\\\"Inbound from ACME\\\"\",
    \"offers\": [
        {
            \"ao_offer_id\": 77,
            \"ao_expected\": 10,
            \"ao_price\": 4.99
        },
        {
            \"ao_offer_ext_id\": \"EXT-77\",
            \"ao_expected\": 5
        }
    ]
}"
const url = new URL(
    "https://localhost/api/acceptances"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "acc_wh_id": 3,
    "acc_shop_id": 12,
    "acc_type": 1,
    "acc_ext_id": 1234,
    "acc_comment": "\"Inbound from ACME\"",
    "offers": [
        {
            "ao_offer_id": 77,
            "ao_expected": 10,
            "ao_price": 4.99
        },
        {
            "ao_offer_ext_id": "EXT-77",
            "ao_expected": 5
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/acceptances

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

acc_wh_id   integer     

Warehouse ID where goods are received. Example: 3

acc_shop_id   integer     

Shop (merchant) ID this document belongs to. Example: 12

acc_type   integer     

Acceptance type ID. Example: 1

acc_ext_id   integer  optional    

nullable External document ID. Example: 1234

acc_comment   string  optional    

nullable A short operator comment (max 255 chars). Example: "Inbound from ACME"

offers   string[]  optional    

nullable Array of lines.

ao_offer_id   integer  optional    

Example: 16

ao_offer_ext_id   string  optional    

Example: architecto

ao_expected   number     

Must be at least 0.01. Example: 39

ao_price   number  optional    

Example: 4326.41688

ao_batch   string  optional    

Must not be greater than 50 characters. Example: m

ao_expiration_date   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

ao_barcode   string  optional    

Must not be greater than 100 characters. Example: i

*   object  optional    
ao_offer_id   integer  optional    

nullable Offer ID (rw_offers.of_id). Required if ao_offer_ext_id is not provided. Example: 77

ao_offer_ext_id   string  optional    

nullable Offer external ID (rw_offers.of_ext_id). Required if ao_offer_id is not provided. Example: "EXT-77"

ao_expected   number     

Expected quantity to receive. Must be β‰₯ 0.01. Example: 10

ao_price   number  optional    

nullable Price per unit. Example: 4.99

ao_batch   string  optional    

nullable Batch/Lot identifier (max 50 chars). Example: "LOT-2025-11"

ao_expiration_date   date  optional    

nullable Expiration date (YYYY-MM-DD). Example: 2026-03-31

ao_barcode   string  optional    

nullable External barcode/label reference (max 100 chars). Example: "EAN-1234567890123"

Get acceptance by ID

requires authentication

Returns a single acceptance with related entities and line items.

Example request:
curl --request GET \
    --get "https://localhost/api/acceptances/101" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/acceptances/101"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "error": "AUTH_REQUIRED"
}
 

Request      

GET api/acceptances/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Acceptance ID. Example: 101

Update acceptance (and upsert/delete lines in the same request)

requires authentication

Updates editable fields of an existing acceptance in the caller’s domain.

Optional:

Example request:
curl --request PUT \
    "https://localhost/api/acceptances/101" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"acc_date\": \"\\\"2026-02-15\\\"\",
    \"acc_ext_id\": 1234,
    \"acc_comment\": \"\\\"Adjusted note\\\"\",
    \"offers\": [
        {
            \"ao_id\": 555,
            \"ao_expected\": 12
        },
        {
            \"ao_offer_ext_id\": \"EXT-99\",
            \"ao_expected\": 3
        }
    ],
    \"offers_delete\": [
        111,
        112
    ]
}"
const url = new URL(
    "https://localhost/api/acceptances/101"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "acc_date": "\"2026-02-15\"",
    "acc_ext_id": 1234,
    "acc_comment": "\"Adjusted note\"",
    "offers": [
        {
            "ao_id": 555,
            "ao_expected": 12
        },
        {
            "ao_offer_ext_id": "EXT-99",
            "ao_expected": 3
        }
    ],
    "offers_delete": [
        111,
        112
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/acceptances/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Acceptance ID. Example: 101

Body Parameters

acc_date   date  optional    

nullable Document date (YYYY-MM-DD or ISO). Example: "2026-02-15"

acc_ext_id   integer  optional    

nullable External document ID. Example: 1234

acc_comment   string  optional    

nullable Comment (max 255 chars). Example: "Adjusted note"

offers   string[]  optional    

nullable Lines to upsert.

ao_id   integer  optional    

Example: 16

ao_offer_id   integer  optional    

Example: 16

ao_offer_ext_id   string  optional    

Example: architecto

ao_expected   number  optional    

Must be at least 0.01. Example: 39

ao_price   number  optional    

Example: 4326.41688

ao_batch   string  optional    

Must not be greater than 50 characters. Example: m

ao_expiration_date   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

ao_barcode   string  optional    

Must not be greater than 100 characters. Example: i

*   object  optional    
ao_id   integer  optional    

nullable If present -> update existing line in this acceptance. Example: 555

ao_offer_id   integer  optional    

nullable Offer ID (rw_offers.of_id). Required for create when ao_offer_ext_id is not provided. Example: 77

ao_offer_ext_id   string  optional    

nullable Offer ext ID. Required for create when ao_offer_id is not provided. Example: "EXT-77"

ao_expected   number  optional    

nullable Expected qty (β‰₯ 0.01). Example: 10

ao_price   number  optional    

nullable Price per unit. Example: 4.99

ao_batch   string  optional    

nullable Batch/Lot identifier (max 50). Example: "LOT-2025-11"

ao_expiration_date   date  optional    

nullable Expiration date (YYYY-MM-DD). Example: 2026-03-31

ao_barcode   string  optional    

nullable Barcode (max 100). Example: "EAN-1234567890123"

offers_delete   string[]  optional    

nullable Array of ao_id to delete.

*   integer  optional    

Line id (ao_id). Example: 111

Delete acceptance

requires authentication

Deletes an acceptance in the caller’s domain.

Example request:
curl --request DELETE \
    "https://localhost/api/acceptances/101" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/acceptances/101"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/acceptances/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Acceptance ID. Example: 101

Acceptances Β» Lines

Manage line items (offers) inside an acceptance (warehouse inbound document).

Authentication: Bearer Token (Laravel Sanctum)

Access scope

Barcode note:

List offers (lines) of an acceptance

Example request:
curl --request GET \
    --get "https://localhost/api/acceptances/architecto/offers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ao_barcode\": \"b\",
    \"ao_batch\": \"n\",
    \"ao_expiration_from\": \"2026-03-09T09:02:28\",
    \"ao_expiration_to\": \"2026-03-09T09:02:28\",
    \"sort\": \"architecto\",
    \"per_page\": 22,
    \"page\": 67,
    \"ao_id\": [
        66
    ],
    \"ao_offer_id\": [
        27
    ]
}"
const url = new URL(
    "https://localhost/api/acceptances/architecto/offers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "ao_barcode": "b",
    "ao_batch": "n",
    "ao_expiration_from": "2026-03-09T09:02:28",
    "ao_expiration_to": "2026-03-09T09:02:28",
    "sort": "architecto",
    "per_page": 22,
    "page": 67,
    "ao_id": [
        66
    ],
    "ao_offer_id": [
        27
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "error": "AUTH_REQUIRED"
}
 

Request      

GET api/acceptances/{id}/offers

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the acceptance. Example: architecto

Body Parameters

ao_barcode   string  optional    

Must not be greater than 200 characters. Example: b

ao_batch   string  optional    

Must not be greater than 200 characters. Example: n

ao_expiration_from   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

ao_expiration_to   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

sort   string  optional    

Example: architecto

per_page   integer  optional    

Must be at least 1. Must not be greater than 500. Example: 22

page   integer  optional    

Must be at least 1. Example: 67

ao_id   integer[]  optional    

Must be at least 1.

ao_offer_id   integer[]  optional    

Must be at least 1.

Add offers (lines) to an acceptance

Example request:
curl --request POST \
    "https://localhost/api/acceptances/architecto/offers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/acceptances/architecto/offers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/acceptances/{id}/offers

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the acceptance. Example: architecto

Update a line in an acceptance

Example request:
curl --request PUT \
    "https://localhost/api/acceptances/architecto/offers/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ao_expected\": 27,
    \"ao_price\": 4326.41688,
    \"ao_batch\": \"m\",
    \"ao_expiration_date\": \"2026-03-09T09:02:28\",
    \"ao_barcode\": \"i\"
}"
const url = new URL(
    "https://localhost/api/acceptances/architecto/offers/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "ao_expected": 27,
    "ao_price": 4326.41688,
    "ao_batch": "m",
    "ao_expiration_date": "2026-03-09T09:02:28",
    "ao_barcode": "i"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/acceptances/{acceptance_id}/offers/{offer_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

acceptance_id   string     

The ID of the acceptance. Example: architecto

offer_id   string     

The ID of the offer. Example: architecto

Body Parameters

ao_expected   number  optional    

Must be at least 0.01. Example: 27

ao_price   number  optional    

Example: 4326.41688

ao_batch   string  optional    

Must not be greater than 50 characters. Example: m

ao_expiration_date   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

ao_barcode   string  optional    

Must not be greater than 100 characters. Example: i

Delete a line from an acceptance

Example request:
curl --request DELETE \
    "https://localhost/api/acceptances/architecto/offers/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/acceptances/architecto/offers/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/acceptances/{acceptance_id}/offers/{offer_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

acceptance_id   string     

The ID of the acceptance. Example: architecto

offer_id   string     

The ID of the offer. Example: architecto

DataMatrix

Manage DataMatrix codes (rw_datamatrix).

Authentication: This API uses NWMS Sanctum. Send your personal access token in the HTTP header: Authorization: Bearer {token}

Get list of DataMatrix records with advanced filtering

requires authentication

Returns a paginated list of DataMatrix records available to the authenticated user. Supports multiple filters, partial match, sorting and pagination.

βœ… Multiple exact filters are supported via arrays: field[]=1&field[]=2

Access scope:

Examples:

Example request:
curl --request GET \
    --get "https://localhost/api/datamatrix?dmt_id%5B%5D=1&dmt_domain_id%5B%5D=10&dmt_status%5B%5D=0&dmt_wh_id%5B%5D=2&dmt_acceptance_id%5B%5D=538&dmt_order_id%5B%5D=105&dmt_accept_place%5B%5D=12345&dmt_order_place%5B%5D=999&dmt_barcode=460123&dmt_datamatrix=010460123456789021ABC%0A%0A-----------------------------%0A%F0%9F%94%8E+Sorting%0A-----------------------------&sort=-dmt_id%2Cdmt_status%0AAllowed+fields%3A+dmt_id%2C+dmt_status%2C+dmt_wh_id%2C+dmt_acceptance_id%2C+dmt_order_id%2C+dmt_created_date%2C+dmt_used_date%2C+created_at%0A%0A-----------------------------%0A%F0%9F%94%8E+Pagination%0A-----------------------------&per_page=250&page=1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"dmt_barcode\": \"b\",
    \"dmt_datamatrix\": \"n\",
    \"sort\": \"architecto\",
    \"per_page\": 22,
    \"page\": 67,
    \"dmt_id\": [
        66
    ],
    \"dmt_domain_id\": [
        27
    ],
    \"dmt_status\": [
        \"1\"
    ],
    \"dmt_wh_id\": [
        35
    ],
    \"dmt_acceptance_id\": [
        43
    ],
    \"dmt_order_id\": [
        16
    ],
    \"dmt_accept_place\": [
        26
    ],
    \"dmt_order_place\": [
        40
    ]
}"
const url = new URL(
    "https://localhost/api/datamatrix"
);

const params = {
    "dmt_id[]": "1",
    "dmt_domain_id[]": "10",
    "dmt_status[]": "0",
    "dmt_wh_id[]": "2",
    "dmt_acceptance_id[]": "538",
    "dmt_order_id[]": "105",
    "dmt_accept_place[]": "12345",
    "dmt_order_place[]": "999",
    "dmt_barcode": "460123",
    "dmt_datamatrix": "010460123456789021ABC

-----------------------------
πŸ”Ž Sorting
-----------------------------",
    "sort": "-dmt_id,dmt_status
Allowed fields: dmt_id, dmt_status, dmt_wh_id, dmt_acceptance_id, dmt_order_id, dmt_created_date, dmt_used_date, created_at

-----------------------------
πŸ”Ž Pagination
-----------------------------",
    "per_page": "250",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "dmt_barcode": "b",
    "dmt_datamatrix": "n",
    "sort": "architecto",
    "per_page": 22,
    "page": 67,
    "dmt_id": [
        66
    ],
    "dmt_domain_id": [
        27
    ],
    "dmt_status": [
        "1"
    ],
    "dmt_wh_id": [
        35
    ],
    "dmt_acceptance_id": [
        43
    ],
    "dmt_order_id": [
        16
    ],
    "dmt_accept_place": [
        26
    ],
    "dmt_order_place": [
        40
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "error": "AUTH_REQUIRED"
}
 

Request      

GET api/datamatrix

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

dmt_id[]   integer  optional    

Filter by dmt_id(s). Example: 1

dmt_domain_id[]   integer  optional    

Domain filter (admin only; non-admin is forced to own domain). Example: 10

dmt_status[]   integer  optional    

Status filter (0,1,2). Example: 0

dmt_wh_id[]   integer  optional    

Warehouse ID filter. Example: 2

dmt_acceptance_id[]   integer  optional    

Acceptance ID filter. Example: 538

dmt_order_id[]   integer  optional    

Order ID filter. Example: 105

dmt_accept_place[]   integer  optional    

Acceptance place ID filter. Example: 12345

dmt_order_place[]   integer  optional    

Order place ID filter. Example: 999

dmt_barcode   string  optional    

Barcode filter (LIKE). Example: 460123

dmt_datamatrix   string  optional    

Datamatrix filter (LIKE). Example: `010460123456789021ABC


πŸ”Ž Sorting -----------------------------`

sort   string  optional    

Sort fields separated by comma. Use "-" for DESC. Example: `-dmt_id,dmt_status Allowed fields: dmt_id, dmt_status, dmt_wh_id, dmt_acceptance_id, dmt_order_id, dmt_created_date, dmt_used_date, created_at


πŸ”Ž Pagination -----------------------------`

per_page   integer  optional    

Items per page. Max: 500. Example: 250

page   integer  optional    

Page number. Example: 1

Body Parameters

dmt_barcode   string  optional    

Must not be greater than 200 characters. Example: b

dmt_datamatrix   string  optional    

Must not be greater than 500 characters. Example: n

sort   string  optional    

Example: architecto

per_page   integer  optional    

Must be at least 1. Must not be greater than 500. Example: 22

page   integer  optional    

Must be at least 1. Example: 67

dmt_id   integer[]  optional    

Must be at least 1.

dmt_domain_id   integer[]  optional    

Must be at least 1.

dmt_status   integer[]  optional    
Must be one of:
  • 0
  • 1
  • 2
dmt_wh_id   integer[]  optional    

Must be at least 1.

dmt_acceptance_id   integer[]  optional    

Must be at least 1.

dmt_order_id   integer[]  optional    

Must be at least 1.

dmt_accept_place   integer[]  optional    

Must be at least 1.

dmt_order_place   integer[]  optional    

Must be at least 1.

Create DataMatrix records (batch)

requires authentication

Creates new DataMatrix records in batch.

Access scope:

Notes:

Examples:

Example request:
curl --request POST \
    "https://localhost/api/datamatrix" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"items\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "https://localhost/api/datamatrix"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "items": [
        "architecto"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201, Created):


{
    "created": 2
}
 

Request      

POST api/datamatrix

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

items   string[]     

Array of DataMatrix objects.

dmt_wh_id   integer     

Warehouse ID. Example: 2

dmt_status   integer  optional    

optional Status (0,1,2). Default: 0. Example: 0

dmt_acceptance_id   integer  optional    

nullable Acceptance ID. Example: 538

dmt_order_id   integer  optional    

nullable Order ID. Example: 105

dmt_barcode   string     

Barcode. Max: 14. Example: 4601234567890

dmt_short_code   string     

Short code. Max: 14. Example: ABC123

dmt_crypto_tail   string  optional    

nullable Crypto tail. Max: 90. Example: "...."

dmt_datamatrix   string     

DataMatrix full string. Max: 125. Example: "010460123456789021ABC..."

dmt_accept_place   integer  optional    

nullable Acceptance place ID. Example: 12345

dmt_order_place   integer  optional    

nullable Order place ID. Example: 999

dmt_created_date   date  optional    

nullable Created date. Example: 2026-01-14

dmt_used_date   date  optional    

nullable Used date. Example: 2026-01-20

dmt_attachment_id   integer  optional    

nullable Attachment ID. Example: 777

dmt_domain_id   string  optional    

forbid overriding domain/id via API.

dmt_id   string  optional    

Update status for DataMatrix records (batch)

requires authentication

Updates dmt_status to 0/1/2 for multiple records by IDs.

Examples:

Example request:
curl --request PUT \
    "https://localhost/api/datamatrix/status" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ids\": [
        101,
        102,
        103
    ],
    \"dmt_status\": 1
}"
const url = new URL(
    "https://localhost/api/datamatrix/status"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "ids": [
        101,
        102,
        103
    ],
    "dmt_status": 1
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Updated):


{
    "updated": 3,
    "dmt_status": 1
}
 

Request      

PUT api/datamatrix/status

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

ids   string[]     

List of dmt_id.

dmt_status   integer     

New status (0,1,2). Example: 1

Delete DataMatrix records (batch)

requires authentication

Deletes records by IDs, but only those with dmt_status = 0.

Examples:

Example request:
curl --request DELETE \
    "https://localhost/api/datamatrix" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ids\": [
        101,
        102,
        103
    ]
}"
const url = new URL(
    "https://localhost/api/datamatrix"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "ids": [
        101,
        102,
        103
    ]
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Deleted):


{
    "deleted": 2,
    "skipped": 1
}
 

Request      

DELETE api/datamatrix

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

ids   string[]     

List of dmt_id.

Delivery Payments

Endpoints for reading order delivery payment rows (rw_order_delivery_payments).

Authorization

All endpoints require Bearer Token (Laravel Sanctum).

Domain scoping

Notes

Get delivery payments list

requires authentication

Returns a paginated list of delivery payment rows with filtering and sorting.

Pagination

Sorting

Example request:
curl --request GET \
    --get "https://localhost/api/order-delivery-payments?page=1&per_page=50&odp_id=1001&odp_order_id=555&odp_track_id=CDEK-123&odp_status_id=1&odp_payment_order_id=987&odp_etalon_order_id=ETL-777&odp_transaction_id=123456&odp_cod_act_id=222&created_from=2026-01-01&created_to=2026-01-31&sort_by=created_at&sort_dir=desc" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"per_page\": 1,
    \"odp_id\": 16,
    \"odp_order_id\": 16,
    \"odp_track_id\": \"n\",
    \"odp_status_id\": 16,
    \"odp_payment_order_id\": 16,
    \"odp_etalon_order_id\": \"n\",
    \"odp_transaction_id\": 16,
    \"odp_cod_act_id\": 16,
    \"created_from\": \"2026-03-09\",
    \"created_to\": \"2026-03-09\",
    \"sort_by\": \"architecto\",
    \"sort_dir\": \"architecto\"
}"
const url = new URL(
    "https://localhost/api/order-delivery-payments"
);

const params = {
    "page": "1",
    "per_page": "50",
    "odp_id": "1001",
    "odp_order_id": "555",
    "odp_track_id": "CDEK-123",
    "odp_status_id": "1",
    "odp_payment_order_id": "987",
    "odp_etalon_order_id": "ETL-777",
    "odp_transaction_id": "123456",
    "odp_cod_act_id": "222",
    "created_from": "2026-01-01",
    "created_to": "2026-01-31",
    "sort_by": "created_at",
    "sort_dir": "desc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "per_page": 1,
    "odp_id": 16,
    "odp_order_id": 16,
    "odp_track_id": "n",
    "odp_status_id": 16,
    "odp_payment_order_id": 16,
    "odp_etalon_order_id": "n",
    "odp_transaction_id": 16,
    "odp_cod_act_id": 16,
    "created_from": "2026-03-09",
    "created_to": "2026-03-09",
    "sort_by": "architecto",
    "sort_dir": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success (paginated list)):


{
    "data": [
        {
            "odp_id": 1001,
            "odp_domain_id": 3,
            "odp_order_id": 555,
            "odp_track_id": "CDEK-123",
            "odp_delivery_sum": 12.5,
            "odp_delivery_tax": 2.5,
            "odp_cod_sum": 100,
            "odp_cod_agent_sum": 3,
            "odp_status_id": 1,
            "odp_payment_order_id": 987,
            "odp_etalon_order_id": "ETL-777",
            "odp_transaction_id": 123456,
            "odp_cod_act_id": 222,
            "created_at": "2026-02-05T12:00:00Z",
            "updated_at": "2026-02-05T12:30:00Z"
        }
    ],
    "links": {
        "first": "https://api.example.com/api/order-delivery-payments?page=1",
        "last": "https://api.example.com/api/order-delivery-payments?page=3",
        "prev": null,
        "next": "https://api.example.com/api/order-delivery-payments?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 3,
        "path": "https://api.example.com/api/order-delivery-payments",
        "per_page": 50,
        "to": 50,
        "total": 123
    }
}
 

Request      

GET api/order-delivery-payments

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

The page number for pagination. Example: 1

per_page   integer  optional    

Number of items per page (max 250). Example: 50

odp_id   integer  optional    

Filter by internal ID. Example: 1001

odp_order_id   integer  optional    

Filter by order ID. Example: 555

odp_track_id   string  optional    

Filter by track ID (substring, case-insensitive). Max 150. Example: CDEK-123

odp_status_id   integer  optional    

Filter by status. Example: 1

odp_payment_order_id   integer  optional    

Filter by payment order ID. Example: 987

odp_etalon_order_id   string  optional    

Filter by etalon order ID (substring). Max 150. Example: ETL-777

odp_transaction_id   integer  optional    

Filter by transaction ID. Example: 123456

odp_cod_act_id   integer  optional    

Filter by COD act ID. Example: 222

created_from   string  optional    

Filter by created_at >= date (YYYY-MM-DD). Example: 2026-01-01

created_to   string  optional    

Filter by created_at <= date (YYYY-MM-DD). Example: 2026-01-31

sort_by   string  optional    

Field to sort by. Allowed: odp_id, odp_order_id, odp_track_id, odp_delivery_sum, odp_delivery_tax, odp_cod_sum, odp_cod_agent_sum, odp_status_id, odp_payment_order_id, created_at. Example: created_at

sort_dir   string  optional    

Sort direction. Allowed: asc, desc. Defaults to desc. Example: desc

Body Parameters

per_page   integer  optional    

Must be at least 1. Must not be greater than 250. Example: 1

odp_id   integer  optional    

Example: 16

odp_order_id   integer  optional    

Example: 16

odp_track_id   string  optional    

Must not be greater than 150 characters. Example: n

odp_status_id   integer  optional    

Example: 16

odp_payment_order_id   integer  optional    

Example: 16

odp_etalon_order_id   string  optional    

Must not be greater than 150 characters. Example: n

odp_transaction_id   integer  optional    

Example: 16

odp_cod_act_id   integer  optional    

Example: 16

created_from   string  optional    

Must be a valid date in the format Y-m-d. Example: 2026-03-09

created_to   string  optional    

Must be a valid date in the format Y-m-d. Example: 2026-03-09

sort_by   string  optional    

Example: architecto

sort_dir   string  optional    

Example: architecto

Endpoints

GET api/user

Example request:
curl --request GET \
    --get "https://localhost/api/user" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/user"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "error": "AUTH_REQUIRED"
}
 

Request      

GET api/user

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/login

Example request:
curl --request POST \
    "https://localhost/api/login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/login

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/logout

Example request:
curl --request POST \
    "https://localhost/api/logout" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/logout"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/logout

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/accounts/create

Example request:
curl --request POST \
    "https://localhost/api/accounts/create" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"language\": \"bngz\",
    \"company\": \"m\",
    \"FName\": \"i\",
    \"LName\": \"y\",
    \"email\": \"justina.gaylord@example.org\",
    \"password\": \"gxwmi\\/#iw\\/\",
    \"massage\": \"architecto\",
    \"fst\": 4326.41688,
    \"mName\": \"architecto\"
}"
const url = new URL(
    "https://localhost/api/accounts/create"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "language": "bngz",
    "company": "m",
    "FName": "i",
    "LName": "y",
    "email": "justina.gaylord@example.org",
    "password": "gxwmi\/#iw\/",
    "massage": "architecto",
    "fst": 4326.41688,
    "mName": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/accounts/create

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

language   string     

Must not be greater than 6 characters. Example: bngz

company   string     

Must not be greater than 100 characters. Example: m

FName   string     

Must not be greater than 255 characters. Example: i

LName   string     

Must not be greater than 255 characters. Example: y

email   string     

Must be a valid email address. Example: justina.gaylord@example.org

password   string     

Must be at least 6 characters. Example: gxwmi/#iw/

massage   string  optional    

Example: architecto

fst   number     

Example: 4326.41688

mName   string  optional    

Example: architecto

GET /api/products/offer

Π€ΠΎΡ€ΠΌΠ°Ρ‚ максимально ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ ΠΊ OrderAdmin.

Example request:
curl --request GET \
    --get "https://localhost/api/products/offer" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/products/offer"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "error": "AUTH_REQUIRED"
}
 

Request      

GET api/products/offer

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Orders

Manage warehouse orders and their associated offers.

Each order represents a customer shipment or acceptance document, depending on the order type. Orders can include:

Authentication: This API uses NWMS Sanctum. Send your personal access token in the HTTP header: Authorization: Bearer {token}

Get list of orders with advanced filtering

Returns a paginated list of orders available to the authenticated user. Supports multiple exact filters, ranges and sorting.

βœ… Multiple exact filters are supported via arrays: field[]=1&field[]=2

Examples:


πŸ”Ž Exact filters (multiple allowed)

Example request:
curl --request GET \
    --get "https://localhost/api/orders?o_id%5B%5D=105&o_status_id%5B%5D=10&o_wh_id%5B%5D=2&o_shop_id%5B%5D=1&o_type_id%5B%5D=2&o_source_id%5B%5D=3&o_customer_type%5B%5D=1&o_company_id%5B%5D=44&o_is_cod%5B%5D=1&o_ext_id=ORD-%0A%0A-----------------------------%0A%F0%9F%94%8E+Ranges%0A-----------------------------&o_sum_from=100&o_sum_to=1000&o_date_from=2026-01-01&o_date_to=2026-01-31&o_date_send_from=2026-02-01&o_date_send_to=2026-02-15&created_at_from=2026-02-01&created_at_to=2026-02-25%0A%0A-----------------------------%0A%F0%9F%94%8E+Sorting%0A-----------------------------&sort=-o_date%2Co_sum%0AAllowed%3A+o_id%2C+o_date%2C+o_date_send%2C+o_sum%2C+created_at%0A%0A-----------------------------%0A%F0%9F%94%8E+Pagination%0A-----------------------------&per_page=50&page=1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"o_ext_id\": \"b\",
    \"o_sum_from\": 4326.41688,
    \"o_sum_to\": 4326.41688,
    \"o_date_from\": \"2026-03-09T09:02:28\",
    \"o_date_to\": \"2026-03-09T09:02:28\",
    \"o_date_send_from\": \"2026-03-09T09:02:28\",
    \"o_date_send_to\": \"2026-03-09T09:02:28\",
    \"created_at_from\": \"2026-03-09T09:02:28\",
    \"created_at_to\": \"2026-03-09T09:02:28\",
    \"sort\": \"architecto\",
    \"per_page\": 22,
    \"page\": 67,
    \"o_id\": [
        16
    ],
    \"o_status_id\": [
        16
    ],
    \"o_wh_id\": [
        16
    ],
    \"o_shop_id\": [
        16
    ],
    \"o_type_id\": [
        16
    ],
    \"o_source_id\": [
        16
    ],
    \"o_customer_type\": [
        16
    ],
    \"o_company_id\": [
        16
    ],
    \"o_is_cod\": [
        \"0\"
    ]
}"
const url = new URL(
    "https://localhost/api/orders"
);

const params = {
    "o_id[]": "105",
    "o_status_id[]": "10",
    "o_wh_id[]": "2",
    "o_shop_id[]": "1",
    "o_type_id[]": "2",
    "o_source_id[]": "3",
    "o_customer_type[]": "1",
    "o_company_id[]": "44",
    "o_is_cod[]": "1",
    "o_ext_id": "ORD-

-----------------------------
πŸ”Ž Ranges
-----------------------------",
    "o_sum_from": "100",
    "o_sum_to": "1000",
    "o_date_from": "2026-01-01",
    "o_date_to": "2026-01-31",
    "o_date_send_from": "2026-02-01",
    "o_date_send_to": "2026-02-15",
    "created_at_from": "2026-02-01",
    "created_at_to": "2026-02-25

-----------------------------
πŸ”Ž Sorting
-----------------------------",
    "sort": "-o_date,o_sum
Allowed: o_id, o_date, o_date_send, o_sum, created_at

-----------------------------
πŸ”Ž Pagination
-----------------------------",
    "per_page": "50",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "o_ext_id": "b",
    "o_sum_from": 4326.41688,
    "o_sum_to": 4326.41688,
    "o_date_from": "2026-03-09T09:02:28",
    "o_date_to": "2026-03-09T09:02:28",
    "o_date_send_from": "2026-03-09T09:02:28",
    "o_date_send_to": "2026-03-09T09:02:28",
    "created_at_from": "2026-03-09T09:02:28",
    "created_at_to": "2026-03-09T09:02:28",
    "sort": "architecto",
    "per_page": 22,
    "page": 67,
    "o_id": [
        16
    ],
    "o_status_id": [
        16
    ],
    "o_wh_id": [
        16
    ],
    "o_shop_id": [
        16
    ],
    "o_type_id": [
        16
    ],
    "o_source_id": [
        16
    ],
    "o_customer_type": [
        16
    ],
    "o_company_id": [
        16
    ],
    "o_is_cod": [
        "0"
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success (paginated list)):


{
    "data": [
        {
            "o_id": 49060,
            "o_ext_id": "ORD-49060",
            "o_wh_id": 106,
            "o_shop_id": 85,
            "o_status_id": 10,
            "contact": {
                "oc_first_name": "John",
                "oc_phone": "+15551234567"
            },
            "ds": {
                "ods_ds_id": 1,
                "ods_track_number": "TRACK-123"
            },
            "comments": {
                "oc_ds_text": "Fragile",
                "oc_inner_text": "Call before delivery"
            }
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 50,
        "total": 312
    }
}
 

Request      

GET api/orders

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

o_id[]   integer  optional    

Filter by order ID(s). Example: 105

o_status_id[]   integer  optional    

Filter by status ID(s). Example: 10

o_wh_id[]   integer  optional    

Filter by warehouse ID(s). Example: 2

o_shop_id[]   integer  optional    

Filter by shop ID(s). Example: 1

o_type_id[]   integer  optional    

Filter by order type(s). Example: 2

o_source_id[]   integer  optional    

Filter by source ID(s). Example: 3

o_customer_type[]   integer  optional    

Filter by customer type(s). Example: 1

o_company_id[]   integer  optional    

Filter by company ID(s). Example: 44

o_is_cod[]   integer  optional    

Filter by COD flag (0 or 1). Example: 1

o_ext_id   string  optional    

Filter by external ID (LIKE search). Example: `ORD-


πŸ”Ž Ranges -----------------------------`

o_sum_from   string  optional    

numeric Filter orders with sum >= value. Example: 100

o_sum_to   string  optional    

numeric Filter orders with sum <= value. Example: 1000

o_date_from   string  optional    

date Filter by order date from. Example: 2026-01-01

o_date_to   string  optional    

date Filter by order date to. Example: 2026-01-31

o_date_send_from   string  optional    

date Filter by send date from. Example: 2026-02-01

o_date_send_to   string  optional    

date Filter by send date to. Example: 2026-02-15

created_at_from   string  optional    

date Filter by creation date from. Example: 2026-02-01

created_at_to   string  optional    

date Filter by creation date to. Example: `2026-02-25


πŸ”Ž Sorting -----------------------------`

sort   string  optional    

Sort fields separated by comma. Use "-" prefix for DESC. Example: `-o_date,o_sum Allowed: o_id, o_date, o_date_send, o_sum, created_at


πŸ”Ž Pagination -----------------------------`

per_page   integer  optional    

Items per page. Max: 500. Example: 50

page   integer  optional    

Page number. Example: 1

Body Parameters

o_ext_id   string  optional    

Must not be greater than 50 characters. Example: b

o_sum_from   number  optional    

Example: 4326.41688

o_sum_to   number  optional    

Example: 4326.41688

o_date_from   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

o_date_to   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

o_date_send_from   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

o_date_send_to   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

created_at_from   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

created_at_to   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

sort   string  optional    

Example: architecto

per_page   integer  optional    

Must be at least 1. Must not be greater than 500. Example: 22

page   integer  optional    

Must be at least 1. Example: 67

o_id   integer[]  optional    
o_status_id   integer[]  optional    
o_wh_id   integer[]  optional    
o_shop_id   integer[]  optional    
o_type_id   integer[]  optional    
o_source_id   integer[]  optional    
o_customer_type   integer[]  optional    
o_company_id   integer[]  optional    
o_is_cod   integer[]  optional    
Must be one of:
  • 0
  • 1

Create a new order

requires authentication

Creates a new order in the current user's domain. Computed fields (o_sum, o_cod_sum) are prohibited.

If o_ext_id is provided, the pair (o_ext_id, o_wh_id) must be unique.

βœ… Supports nested objects:

Examples:

1) Minimal: POST /api/orders { "o_type_id": 1, "o_shop_id": 85, "o_wh_id": 106 }

2) With contact + ds + comments: { "o_type_id": 1, "o_ext_id": "ORD-49060", "o_shop_id": 85, "o_wh_id": 106, "o_date_send": "2026-03-05", "contact": { "oc_first_name": "John", "oc_phone": "+15551234567", "oc_full_address": "Sofia, Bulgaria" }, "ds": { "ods_ds_id": 1, "ods_order_label": "https://www.aaa.ru" }, "comments": { "oc_ds_text": "Leave at reception", "oc_inner_text": "VIP client" } }

Example request:
curl --request POST \
    "https://localhost/api/orders" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"o_type_id\": 16,
    \"o_ext_id\": \"n\",
    \"o_group_id\": 16,
    \"o_shop_id\": 16,
    \"o_wh_id\": 16,
    \"o_date_send\": \"2026-03-09T09:02:28\",
    \"o_source_id\": 16,
    \"o_status_id\": 16,
    \"o_customer_type\": 16,
    \"o_weight\": 16,
    \"o_dimension_x\": 16,
    \"o_dimension_y\": 16,
    \"o_dimension_z\": 16,
    \"o_is_cod\": false,
    \"o_shipping_price\": 4326.41688,
    \"o_shipping_cost\": 4326.41688,
    \"o_company_id\": 16,
    \"contact\": {
        \"oc_first_name\": \"n\",
        \"oc_middle_name\": \"g\",
        \"oc_last_name\": \"z\",
        \"oc_phone\": \"m\",
        \"oc_email\": \"gulgowski.asia@example.com\",
        \"oc_country_id\": 16,
        \"oc_city_id\": 16,
        \"oc_postcode\": \"ngzmiyvdljnikhwa\",
        \"oc_coord_latitude\": 4326.41688,
        \"oc_coord_longitude\": 4326.41688,
        \"oc_full_address\": \"m\",
        \"oc_ds_text\": \"architecto\",
        \"oc_inner_text\": \"architecto\"
    },
    \"ds\": {
        \"ods_ds_id\": 16,
        \"ods_status\": 16,
        \"ods_track_number\": \"n\",
        \"ods_ds_pp_id\": \"g\",
        \"ods_source_id\": 16,
        \"ods_order_label\": \"n\"
    },
    \"comments\": {
        \"oc_ds_text\": \"architecto\",
        \"oc_inner_text\": \"architecto\"
    }
}"
const url = new URL(
    "https://localhost/api/orders"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "o_type_id": 16,
    "o_ext_id": "n",
    "o_group_id": 16,
    "o_shop_id": 16,
    "o_wh_id": 16,
    "o_date_send": "2026-03-09T09:02:28",
    "o_source_id": 16,
    "o_status_id": 16,
    "o_customer_type": 16,
    "o_weight": 16,
    "o_dimension_x": 16,
    "o_dimension_y": 16,
    "o_dimension_z": 16,
    "o_is_cod": false,
    "o_shipping_price": 4326.41688,
    "o_shipping_cost": 4326.41688,
    "o_company_id": 16,
    "contact": {
        "oc_first_name": "n",
        "oc_middle_name": "g",
        "oc_last_name": "z",
        "oc_phone": "m",
        "oc_email": "gulgowski.asia@example.com",
        "oc_country_id": 16,
        "oc_city_id": 16,
        "oc_postcode": "ngzmiyvdljnikhwa",
        "oc_coord_latitude": 4326.41688,
        "oc_coord_longitude": 4326.41688,
        "oc_full_address": "m",
        "oc_ds_text": "architecto",
        "oc_inner_text": "architecto"
    },
    "ds": {
        "ods_ds_id": 16,
        "ods_status": 16,
        "ods_track_number": "n",
        "ods_ds_pp_id": "g",
        "ods_source_id": 16,
        "ods_order_label": "n"
    },
    "comments": {
        "oc_ds_text": "architecto",
        "oc_inner_text": "architecto"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201, Created):


{
    "data": {
        "o_id": 49060,
        "o_ext_id": "ORD-49060",
        "o_shop_id": 85,
        "o_wh_id": 106,
        "contact": {
            "oc_first_name": "John"
        },
        "ds": {
            "ods_ds_id": 1
        },
        "comments": {
            "oc_ds_text": "Leave at reception",
            "oc_inner_text": "VIP client"
        }
    }
}
 

Request      

POST api/orders

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

o_type_id   integer     

Example: 16

o_ext_id   string  optional    

Must not be greater than 30 characters. Example: n

o_group_id   integer  optional    

Example: 16

o_shop_id   integer     

Example: 16

o_wh_id   integer     

Example: 16

o_date_send   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

o_source_id   integer  optional    

Example: 16

o_status_id   integer  optional    

Example: 16

o_customer_type   integer  optional    

Example: 16

o_weight   integer  optional    

Π’Π“Π₯ Π·Π°ΠΊΠ°Π·Π°. Example: 16

o_dimension_x   integer  optional    

Example: 16

o_dimension_y   integer  optional    

Example: 16

o_dimension_z   integer  optional    

Example: 16

o_is_cod   boolean  optional    

ДопустимыС управляСмыС поля. Example: false

o_shipping_price   number  optional    

Example: 4326.41688

o_shipping_cost   number  optional    

Example: 4326.41688

o_sum   string  optional    

Π­Ρ‚ΠΈ поля Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ β€” Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ.

o_cod_sum   string  optional    
o_company_id   integer  optional    

The co_id of an existing record in the rw_companies table. Example: 16

contact   object  optional    

contact.

oc_first_name   string  optional    

Must not be greater than 255 characters. Example: n

oc_middle_name   string  optional    

Must not be greater than 255 characters. Example: g

oc_last_name   string  optional    

Must not be greater than 255 characters. Example: z

oc_phone   string  optional    

Must not be greater than 50 characters. Example: m

oc_email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: gulgowski.asia@example.com

oc_country_id   integer  optional    

Example: 16

oc_city_id   integer  optional    

Example: 16

oc_postcode   string  optional    

Must not be greater than 20 characters. Example: ngzmiyvdljnikhwa

oc_coord_latitude   number  optional    

Example: 4326.41688

oc_coord_longitude   number  optional    

Example: 4326.41688

oc_full_address   string  optional    

Must not be greater than 255 characters. Example: m

oc_ds_text   string  optional    

Example: architecto

oc_inner_text   string  optional    

Example: architecto

ds   object  optional    

ds.

ods_ds_id   integer  optional    

Example: 16

ods_status   integer  optional    

Example: 16

ods_track_number   string  optional    

Must not be greater than 50 characters. Example: n

ods_ds_pp_id   string  optional    

Must not be greater than 100 characters. Example: g

ods_source_id   integer  optional    

Example: 16

ods_order_label   string  optional    

Must not be greater than 255 characters. Example: n

comments   object  optional    

comments.

oc_ds_text   string  optional    

Example: architecto

oc_inner_text   string  optional    

Example: architecto

Get a single order by ID

requires authentication

Returns detailed information about a specific order including offers, contact, ds and comments.

Example:

Example request:
curl --request GET \
    --get "https://localhost/api/orders/49060" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/orders/49060"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Found):


{
    "data": {
        "o_id": 49060,
        "o_ext_id": "49054",
        "o_shop_id": 85,
        "o_wh_id": 106,
        "contact": {
            "oc_first_name": "John",
            "oc_phone": "+15551234567"
        },
        "ds": {
            "ods_ds_id": 1,
            "ods_order_label": "https://www.aaa.ru"
        },
        "comments": {
            "oc_ds_text": "Fragile",
            "oc_inner_text": "Internal note"
        }
    }
}
 

Request      

GET api/orders/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The order ID. Example: 49060

Update an existing order

requires authentication

Partially updates editable fields of an existing order (PATCH semantics).

βœ… Supports nested objects:

βœ… Special DS rule: If at least one ds.* field is provided AND there is no row in rw_order_ds for this order yet, then ds.ods_ds_id becomes REQUIRED.

Examples:

1) Update ds + comments: PATCH /api/orders/49060 { "ds": { "ods_ds_id": 1, "ods_order_label": "https://www.aaa.ru" }, "comments": { "oc_ds_text": "oc_ds_text - тСст!!!", "oc_inner_text": "oc_inner_text - тСст!!!" } }

2) Update only contact phone: { "contact": { "oc_phone": "+359888123456" } }

Example request:
curl --request PUT \
    "https://localhost/api/orders/49060" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
const url = new URL(
    "https://localhost/api/orders/49060"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Example response (200, Updated (includes nested objects)):


{
    "data": {
        "o_id": 49060,
        "ds": {
            "ods_ds_id": 1,
            "ods_order_label": "https://www.aaa.ru"
        },
        "comments": {
            "oc_ds_text": "oc_ds_text - тСст!!!",
            "oc_inner_text": "oc_inner_text - тСст!!!"
        }
    }
}
 

Example response (422, DS validation (no ds row yet)):


{
    "message": "The given data was invalid.",
    "errors": {
        "ds.ods_ds_id": [
            "The ds.ods_ds_id field is required."
        ]
    }
}
 

Request      

PUT api/orders/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The order ID. Example: 49060

Body Parameters

o_sum   string  optional    
o_cod_sum   string  optional    

Delete an order

requires authentication

Deletes a specific order.

Example request:
curl --request DELETE \
    "https://localhost/api/orders/105" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/orders/105"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "message": "Deleted"
}
 

Request      

DELETE api/orders/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Order ID. Example: 105

Add offers (products) to an order

requires authentication

Adds one or more product lines to an existing order.

Example: POST /api/orders/49060/offers [ {"oo_offer_id":77,"oo_qty":2,"oo_price":39.95}, {"oo_offer_id":88,"oo_qty":1,"oo_price":9.99} ]

Example request:
curl --request POST \
    "https://localhost/api/orders/49060/offers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"*\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "https://localhost/api/orders/49060/offers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "*": [
        "architecto"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201, Added):


[
    {
        "oo_offer_id": 77,
        "oo_qty": 2,
        "oo_price": 39.95
    },
    {
        "oo_offer_id": 88,
        "oo_qty": 1,
        "oo_price": 9.99
    }
]
 

Request      

POST api/orders/{id}/offers

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The order ID. Example: 49060

Body Parameters

*   string[]     

List of offers to add.

oo_offer_id   integer     

Product ID. Example: 77

oo_qty   number     

Quantity to add. Example: 2

oo_price   number     

Unit price. Example: 39.95

oo_expiration_date   date  optional    

optional Expiration date. Example: 2026-12-31

oo_batch   string  optional    

optional Batch number. Example: "LOT-2026"

Update an offer within an order

requires authentication

Updates quantity or price for a specific offer line.

Example: PATCH /api/orders/49060/offers/123 { "oo_qty": 5, "oo_price": 45.00 }

Example request:
curl --request PUT \
    "https://localhost/api/orders/49060/offers/123" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"oo_qty\": 5,
    \"oo_oc_price\": 4326.41688,
    \"oo_price\": 45,
    \"oo_expiration_date\": \"2026-03-09T09:02:28\",
    \"oo_batch\": \"i\",
    \"oo_operation_user_id\": 16
}"
const url = new URL(
    "https://localhost/api/orders/49060/offers/123"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "oo_qty": 5,
    "oo_oc_price": 4326.41688,
    "oo_price": 45,
    "oo_expiration_date": "2026-03-09T09:02:28",
    "oo_batch": "i",
    "oo_operation_user_id": 16
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Updated):


{
    "oo_id": 123,
    "oo_offer_id": 77,
    "oo_qty": 5,
    "oo_price": 45
}
 

Request      

PUT api/orders/{order_id}/offers/{offer_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

order_id   integer     

The order ID. Example: 49060

offer_id   integer     

Offer ID inside this order. Example: 123

Body Parameters

oo_qty   number  optional    

optional Updated quantity. Example: 5

oo_oc_price   number  optional    

Example: 4326.41688

oo_price   number  optional    

optional Updated unit price. Example: 45

oo_expiration_date   string  optional    

Must be a valid date. Example: 2026-03-09T09:02:28

oo_batch   string  optional    

Must not be greater than 15 characters. Example: i

oo_operation_user_id   integer  optional    

Example: 16

Delete an offer from an order

requires authentication

Removes a specific offer line from an existing order.

Example: DELETE /api/orders/49060/offers/123

Example request:
curl --request DELETE \
    "https://localhost/api/orders/49060/offers/123" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/orders/49060/offers/123"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "message": "Offer removed from order"
}
 

Example response (404):


{
    "error": "Offer not found in this order"
}
 

Request      

DELETE api/orders/{order_id}/offers/{offer_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

order_id   integer     

The order ID. Example: 49060

offer_id   integer     

Offer ID. Example: 123

Products

Endpoints for managing the product catalog ("offers").

Authorization

All endpoints require Bearer Token (Laravel Sanctum).

Domain & Access Scoping

Barcodes (rw_barcodes)

You can provide barcodes on create/update:

Get product list

requires authentication

Example request:
curl --request GET \
    --get "https://localhost/api/products" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/products"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "error": "AUTH_REQUIRED"
}
 

Request      

GET api/products

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Bulk create products

requires authentication

Creates multiple products in one request.

βœ… Payload is a JSON array (not wrapped in "products"). Example: [ { "of_shop_id": 12, "of_name": "Cotton T-shirt", "of_ext_id": "EXT-1001", "barcodes": [ {"br_barcode":"4601234567890","br_main":1}, {"br_barcode":"4601234567891","br_main":0} ] } ]

Example request:
curl --request POST \
    "https://localhost/api/products" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "[
    {
        \"of_shop_id\": 12,
        \"of_name\": \"Cotton T-shirt\",
        \"of_ext_id\": \"EXT-1001\",
        \"barcodes\": [
            {
                \"br_barcode\": \"4601234567890\",
                \"br_main\": 1
            },
            {
                \"br_barcode\": \"4601234567891\",
                \"br_main\": 0
            }
        ]
    }
]"
const url = new URL(
    "https://localhost/api/products"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = [
    {
        "of_shop_id": 12,
        "of_name": "Cotton T-shirt",
        "of_ext_id": "EXT-1001",
        "barcodes": [
            {
                "br_barcode": "4601234567890",
                "br_main": 1
            },
            {
                "br_barcode": "4601234567891",
                "br_main": 0
            }
        ]
    }
];

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201, Created):


[
    {
        "data": {
            "of_id": 1,
            "of_name": "Cotton T-shirt"
        }
    }
]
 

Example response (422, Barcode validation error):


{
    "message": "Validation error",
    "errors": {
        "0.barcodes": [
            "Exactly one barcode must be marked as main (br_main=1)."
        ]
    }
}
 

Request      

POST api/products

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

The request body is an array (string[]`), representing array of products.. Each item has the following properties:

of_shop_id   integer     

Shop ID. Example: 12

of_name   string     

Product name. Example: "Cotton T-shirt"

of_ext_id   string  optional    

nullable External product ID. Example: "EXT-1001"

of_article   string  optional    

nullable Article. Example: "ART-01"

of_sku   string  optional    

nullable SKU. Example: "SKU-01"

of_price   number  optional    

nullable Price. Example: 19.99

of_estimated_price   number  optional    

nullable Estimated price. Example: 21.5

of_img   string  optional    

nullable Image URL. Example: "https://cdn.site/img.jpg"

of_dimension_x   number  optional    

nullable Dimension X. Example: 10.5

of_dimension_y   number  optional    

nullable Dimension Y. Example: 20

of_dimension_z   number  optional    

nullable Dimension Z. Example: 3.2

of_weight   integer  optional    

nullable Weight (grams). Example: 250

of_datamatrix   integer  optional    

nullable 0|1. Example: 0

of_comment   string  optional    

nullable Comment. Example: "Some note"

barcodes   string[]  optional    

nullable Barcodes list for this product.

br_barcode   string     

Barcode value. Example: "4601234567890"

br_main   integer  optional    

nullable 1 for main, 0 for additional. Example: 1

Bulk update products

requires authentication

Updates multiple products in one request.

βœ… Payload is a JSON array.

Identification rules:

Examples:

Example request:
curl --request PUT \
    "https://localhost/api/products" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "[
    {
        \"of_id\": 10,
        \"of_name\": \"Updated name\",
        \"barcodes\": [
            {
                \"br_barcode\": \"4601\",
                \"br_main\": 1
            }
        ]
    },
    {
        \"of_ext_id\": \"EXT-1001\",
        \"of_shop_id\": 12,
        \"of_price\": 19.99
    }
]"
const url = new URL(
    "https://localhost/api/products"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = [
    {
        "of_id": 10,
        "of_name": "Updated name",
        "barcodes": [
            {
                "br_barcode": "4601",
                "br_main": 1
            }
        ]
    },
    {
        "of_ext_id": "EXT-1001",
        "of_shop_id": 12,
        "of_price": 19.99
    }
];

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Updated):


[
    {
        "data": {
            "of_id": 10
        }
    },
    {
        "data": {
            "of_id": 11
        }
    }
]
 

Example response (422, Validation error):


{
    "message": "Validation error",
    "errors": {
        "0.of_id": [
            "Either of_id or (of_ext_id + of_shop_id) is required."
        ]
    }
}
 

Request      

PUT api/products

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

The request body is an array (string[]`), representing array of updates.. Each item has the following properties:

of_id   integer  optional    

nullable Product ID (preferred if present). Example: 10

of_ext_id   string  optional    

nullable External product ID (used with of_shop_id). Example: "EXT-1001"

of_shop_id   integer  optional    

nullable Shop ID (required when using of_ext_id). Example: 12

of_name   string  optional    

nullable Product name. Example: "Updated T-shirt"

of_article   string  optional    

nullable Article. Example: "ART-02"

of_sku   string  optional    

nullable SKU. Example: "SKU-02"

of_price   number  optional    

nullable Price. Example: 24.5

of_estimated_price   number  optional    

nullable Estimated price. Example: 25

of_img   string  optional    

nullable Image URL. Example: "https://cdn.site/new.jpg"

of_dimension_x   number  optional    

nullable Dimension X. Example: 11

of_dimension_y   number  optional    

nullable Dimension Y. Example: 21

of_dimension_z   number  optional    

nullable Dimension Z. Example: 3

of_weight   integer  optional    

nullable Weight (grams). Example: 260

of_datamatrix   integer  optional    

nullable 0|1. Example: 1

of_comment   string  optional    

nullable Comment. Example: "Updated note"

of_status   integer  optional    

nullable 0|1. Example: 1

barcodes   string[]  optional    

nullable Barcodes list (full replace). If provided:

  • [] clears all barcodes for this offer in this shop
  • else: exactly one br_main=1
br_barcode   string     

Barcode. Example: "4601234567890"

br_main   integer  optional    

nullable 1 for main, 0 for additional. Example: 1

GET api/products/{id}

Example request:
curl --request GET \
    --get "https://localhost/api/products/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/products/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "error": "AUTH_REQUIRED"
}
 

Request      

GET api/products/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the product. Example: architecto

DELETE api/products/{id}

Example request:
curl --request DELETE \
    "https://localhost/api/products/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/products/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/products/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the product. Example: architecto

Shops

Manage shops (rw_shops).

Authentication: This API uses NWMS Sanctum. Send your personal access token in the HTTP header: Authorization: Bearer {token}

Get list of shops with advanced filtering

requires authentication

Returns a paginated list of shops available to the authenticated user. Supports multiple filters, partial match, sorting and pagination.

βœ… Multiple exact filters are supported via arrays: field[]=1&field[]=2

Access scope:

Examples:

Example request:
curl --request GET \
    --get "https://localhost/api/shops?sh_id%5B%5D=1&sh_domain_id%5B%5D=10&sh_user_id%5B%5D=55&sh_name=%22Ozon%22%0A%0A-----------------------------%0A%F0%9F%94%8E+Sorting%0A-----------------------------&sort=-sh_id%2Csh_name%0A%0AAllowed+fields%3A+sh_id%2C+sh_name%2C+sh_user_id%2C+sh_domain_id%2C+created_at%0A%0A-----------------------------%0A%F0%9F%94%8E+Pagination%0A-----------------------------&per_page=250&page=1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sh_name\": \"b\",
    \"sort\": \"architecto\",
    \"per_page\": 22,
    \"page\": 67,
    \"sh_id\": [
        16
    ],
    \"sh_domain_id\": [
        16
    ],
    \"sh_user_id\": [
        16
    ]
}"
const url = new URL(
    "https://localhost/api/shops"
);

const params = {
    "sh_id[]": "1",
    "sh_domain_id[]": "10",
    "sh_user_id[]": "55",
    "sh_name": ""Ozon"

-----------------------------
πŸ”Ž Sorting
-----------------------------",
    "sort": "-sh_id,sh_name

Allowed fields: sh_id, sh_name, sh_user_id, sh_domain_id, created_at

-----------------------------
πŸ”Ž Pagination
-----------------------------",
    "per_page": "250",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "sh_name": "b",
    "sort": "architecto",
    "per_page": 22,
    "page": 67,
    "sh_id": [
        16
    ],
    "sh_domain_id": [
        16
    ],
    "sh_user_id": [
        16
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Successful):


{
    "data": [
        {
            "sh_id": 1,
            "sh_domain_id": 10,
            "sh_user_id": 55,
            "sh_name": "Shop #1"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 250,
        "total": 1
    }
}
 

Request      

GET api/shops

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

sh_id[]   integer  optional    

Filter by shop ID(s). Example: 1

sh_domain_id[]   integer  optional    

Domain filter (admin only; non-admin is forced to own domain). Example: 10

sh_user_id[]   integer  optional    

Owner user ID filter. Example: 55

sh_name   string  optional    

Name filter (LIKE). Example: `"Ozon"


πŸ”Ž Sorting -----------------------------`

sort   string  optional    

Sort fields separated by comma. Use "-" prefix for DESC. Example: `-sh_id,sh_name

Allowed fields: sh_id, sh_name, sh_user_id, sh_domain_id, created_at


πŸ”Ž Pagination -----------------------------`

per_page   integer  optional    

Items per page. Max: 500. Example: 250

page   integer  optional    

Page number. Example: 1

Body Parameters

sh_name   string  optional    

Must not be greater than 100 characters. Example: b

sort   string  optional    

Example: architecto

per_page   integer  optional    

Must be at least 1. Must not be greater than 500. Example: 22

page   integer  optional    

Must be at least 1. Example: 67

sh_id   integer[]  optional    
sh_domain_id   integer[]  optional    
sh_user_id   integer[]  optional    

Get a single shop by ID

requires authentication

Example request:
curl --request GET \
    --get "https://localhost/api/shops/1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/shops/1"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Found):


{
    "sh_id": 1,
    "sh_domain_id": 10,
    "sh_user_id": 55,
    "sh_name": "Shop #1"
}
 

Example response (404, Not found):


{
    "message": "No query results for model ..."
}
 

Request      

GET api/shops/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Shop ID. Example: 1

Create a new shop

requires authentication

Creates a shop in the current user's domain. sh_domain_id is taken from authenticated user and cannot be overridden (unless admin).

Example request:
curl --request POST \
    "https://localhost/api/shops" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sh_name\": \"\\\"Ozon Shop\\\"\",
    \"sh_user_id\": 55
}"
const url = new URL(
    "https://localhost/api/shops"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "sh_name": "\"Ozon Shop\"",
    "sh_user_id": 55
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201, Created):


{
    "sh_id": 10,
    "sh_domain_id": 10,
    "sh_user_id": 55,
    "sh_name": "Ozon Shop"
}
 

Example response (422, Validation error):


{
    "message": "The given data was invalid.",
    "errors": {
        "sh_name": [
            "The sh_name field is required."
        ]
    }
}
 

Request      

POST api/shops

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

sh_name   string     

Shop name. Max: 100. Example: "Ozon Shop"

sh_user_id   integer  optional    

optional Owner user id. If omitted, current user id is used. Example: 55

sh_domain_id   string  optional    
sh_id   string  optional    

Π΄ΠΎΠΌΠ΅Π½ Π½Π΅ Π΄Π°Ρ‘ΠΌ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡ‚ΡŒ Π² запросС.

Update a shop (no delete)

requires authentication

Updates editable fields of a shop.

Rules:

Example request:
curl --request PUT \
    "https://localhost/api/shops/10" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sh_name\": \"\\\"Ozon Shop - updated\\\"\",
    \"sh_user_id\": 55
}"
const url = new URL(
    "https://localhost/api/shops/10"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "sh_name": "\"Ozon Shop - updated\"",
    "sh_user_id": 55
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Updated):


{
    "sh_id": 10,
    "sh_name": "Ozon Shop - updated"
}
 

Request      

PUT api/shops/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Shop ID. Example: 10

Body Parameters

sh_id   string  optional    
sh_domain_id   string  optional    
sh_name   string  optional    

optional Shop name. Max: 100. Example: "Ozon Shop - updated"

sh_user_id   integer  optional    

optional Owner user id (admin only). Example: 55

Warehouses

Manage warehouses (rw_warehouses).

Rules:

Authentication: This API uses NWMS Sanctum. Send your personal access token in the HTTP header: Authorization: Bearer {token}

Get list of warehouses with advanced filtering

requires authentication

Returns a paginated list of warehouses available to the authenticated user. Only admin or warehouse_manager.

βœ… Multiple exact filters are supported via arrays: field[]=1&field[]=2

Examples:

Example request:
curl --request GET \
    --get "https://localhost/api/warehouses?wh_id%5B%5D=2&wh_status%5B%5D=1&wh_domain_id%5B%5D=10&wh_user_id%5B%5D=55&wh_country_id%5B%5D=100&wh_ff_id%5B%5D=2&wh_company_id%5B%5D=44&wh_billing_id%5B%5D=7&wh_type%5B%5D=2&wh_currency_id%5B%5D=3&wh_parent_id%5B%5D=1&wh_doc_num=BG-&wh_doc_date=2026-01&wh_name=Sofia%0A%0A-----------------------------%0A%F0%9F%94%8E+Sorting%0A-----------------------------&sort=-wh_id%2Cwh_name%0A%0A-----------------------------%0A%F0%9F%94%8E+Pagination%0A-----------------------------&per_page=250&page=1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"wh_doc_num\": \"b\",
    \"wh_doc_date\": \"n\",
    \"wh_name\": \"g\",
    \"sort\": \"architecto\",
    \"per_page\": 22,
    \"page\": 67,
    \"wh_id\": [
        16
    ],
    \"wh_status\": [
        16
    ],
    \"wh_domain_id\": [
        16
    ],
    \"wh_user_id\": [
        16
    ],
    \"wh_country_id\": [
        16
    ],
    \"wh_ff_id\": [
        16
    ],
    \"wh_company_id\": [
        16
    ],
    \"wh_billing_id\": [
        16
    ],
    \"wh_type\": [
        16
    ],
    \"wh_currency_id\": [
        16
    ],
    \"wh_parent_id\": [
        16
    ]
}"
const url = new URL(
    "https://localhost/api/warehouses"
);

const params = {
    "wh_id[]": "2",
    "wh_status[]": "1",
    "wh_domain_id[]": "10",
    "wh_user_id[]": "55",
    "wh_country_id[]": "100",
    "wh_ff_id[]": "2",
    "wh_company_id[]": "44",
    "wh_billing_id[]": "7",
    "wh_type[]": "2",
    "wh_currency_id[]": "3",
    "wh_parent_id[]": "1",
    "wh_doc_num": "BG-",
    "wh_doc_date": "2026-01",
    "wh_name": "Sofia

-----------------------------
πŸ”Ž Sorting
-----------------------------",
    "sort": "-wh_id,wh_name

-----------------------------
πŸ”Ž Pagination
-----------------------------",
    "per_page": "250",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "wh_doc_num": "b",
    "wh_doc_date": "n",
    "wh_name": "g",
    "sort": "architecto",
    "per_page": 22,
    "page": 67,
    "wh_id": [
        16
    ],
    "wh_status": [
        16
    ],
    "wh_domain_id": [
        16
    ],
    "wh_user_id": [
        16
    ],
    "wh_country_id": [
        16
    ],
    "wh_ff_id": [
        16
    ],
    "wh_company_id": [
        16
    ],
    "wh_billing_id": [
        16
    ],
    "wh_type": [
        16
    ],
    "wh_currency_id": [
        16
    ],
    "wh_parent_id": [
        16
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Successful):


{
    "data": [
        {
            "wh_id": 2,
            "wh_status": 1,
            "wh_domain_id": 10,
            "wh_user_id": 55,
            "wh_type": 2,
            "wh_ff_id": 1,
            "wh_name": "Client warehouse Sofia",
            "wh_currency_id": 3,
            "wh_custom_json": "{\"pickup\":true,\"cutoff\":\"18:00\"}"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 50,
        "total": 10
    }
}
 

Request      

GET api/warehouses

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

wh_id[]   integer  optional    

Filter by warehouse ID(s). Example: 2

wh_status[]   integer  optional    

Status filter. Example: 1

wh_domain_id[]   integer  optional    

Domain filter (admin only; non-admin is forced to own domain). Example: 10

wh_user_id[]   integer  optional    

Owner user ID filter. Example: 55

wh_country_id[]   integer  optional    

Country ID filter. Example: 100

wh_ff_id[]   integer  optional    

Fulfilment warehouse id filter. Example: 2

wh_company_id[]   integer  optional    

Company ID filter. Example: 44

wh_billing_id[]   integer  optional    

Billing setting ID filter. Example: 7

wh_type[]   integer  optional    

Warehouse type (1 fulfilment, 2 client). Example: 2

wh_currency_id[]   integer  optional    

Currency ID filter. Example: 3

wh_parent_id[]   integer  optional    

Parent warehouse ID filter. Example: 1

wh_doc_num   string  optional    

Document number (LIKE). Example: BG-

wh_doc_date   string  optional    

Document date (LIKE). Example: 2026-01

wh_name   string  optional    

Name (LIKE). Example: `Sofia


πŸ”Ž Sorting -----------------------------`

sort   string  optional    

Sort fields separated by comma. Use "-" for DESC. Example: `-wh_id,wh_name


πŸ”Ž Pagination -----------------------------`

per_page   integer  optional    

Items per page. Max: 500. Example: 250

page   integer  optional    

Page number. Example: 1

Body Parameters

wh_doc_num   string  optional    

Must not be greater than 50 characters. Example: b

wh_doc_date   string  optional    

Must not be greater than 50 characters. Example: n

wh_name   string  optional    

Must not be greater than 100 characters. Example: g

sort   string  optional    

Example: architecto

per_page   integer  optional    

Must be at least 1. Must not be greater than 500. Example: 22

page   integer  optional    

Must be at least 1. Example: 67

wh_id   integer[]  optional    
wh_status   integer[]  optional    
wh_domain_id   integer[]  optional    
wh_user_id   integer[]  optional    
wh_country_id   integer[]  optional    
wh_ff_id   integer[]  optional    
wh_company_id   integer[]  optional    
wh_billing_id   integer[]  optional    
wh_type   integer[]  optional    
wh_currency_id   integer[]  optional    
wh_parent_id   integer[]  optional    

Get a single warehouse by ID

requires authentication

Only admin or warehouse_manager.

Example request:
curl --request GET \
    --get "https://localhost/api/warehouses/2" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/warehouses/2"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Found):


{
    "wh_id": 2,
    "wh_status": 1,
    "wh_domain_id": 10,
    "wh_user_id": 55,
    "wh_type": 2,
    "wh_ff_id": 1,
    "wh_name": "Client warehouse Sofia",
    "wh_custom_json": "{\"pickup\":true,\"cutoff\":\"18:00\"}"
}
 

Example response (404, Not found):


{
    "message": "No query results for model ..."
}
 

Request      

GET api/warehouses/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Warehouse ID. Example: 2

Create a new client warehouse (wh_type = 2)

requires authentication

Only admin or warehouse_manager.

Constraints:

Example request:
curl --request POST \
    "https://localhost/api/warehouses" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"wh_name\": \"\\\"Client warehouse Sofia\\\"\",
    \"wh_ff_id\": 1,
    \"wh_status\": 1,
    \"wh_country_id\": 100,
    \"wh_company_id\": 44,
    \"wh_billing_id\": 7,
    \"wh_doc_num\": \"\\\"BG-001\\\"\",
    \"wh_doc_date\": \"\\\"2026-01-14\\\"\",
    \"wh_currency_id\": 3,
    \"wh_parent_id\": 1,
    \"wh_type\": 16,
    \"wh_set_expiration_date\": 1,
    \"wh_set_batch\": 1,
    \"wh_set_production_date\": 0,
    \"wh_custom_json\": {
        \"pickup\": true,
        \"cutoff\": \"18:00\"
    }
}"
const url = new URL(
    "https://localhost/api/warehouses"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "wh_name": "\"Client warehouse Sofia\"",
    "wh_ff_id": 1,
    "wh_status": 1,
    "wh_country_id": 100,
    "wh_company_id": 44,
    "wh_billing_id": 7,
    "wh_doc_num": "\"BG-001\"",
    "wh_doc_date": "\"2026-01-14\"",
    "wh_currency_id": 3,
    "wh_parent_id": 1,
    "wh_type": 16,
    "wh_set_expiration_date": 1,
    "wh_set_batch": 1,
    "wh_set_production_date": 0,
    "wh_custom_json": {
        "pickup": true,
        "cutoff": "18:00"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201, Created):


{
    "wh_id": 10,
    "wh_domain_id": 10,
    "wh_type": 2,
    "wh_ff_id": 1,
    "wh_name": "Client warehouse Sofia",
    "wh_custom_json": "{\"pickup\":true,\"cutoff\":\"18:00\"}"
}
 

Example response (422, Validation error):


{
    "message": "The given data was invalid.",
    "errors": {
        "wh_ff_id": [
            "The selected wh_ff_id is invalid."
        ]
    }
}
 

Request      

POST api/warehouses

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

wh_name   string     

Warehouse name. Max: 100. Example: "Client warehouse Sofia"

wh_ff_id   integer     

Fulfilment warehouse id (must exist in the same domain and be wh_type=1). Example: 1

wh_status   integer  optional    

optional Status. Default: 1. Example: 1

wh_country_id   integer  optional    

nullable Country ID. Example: 100

wh_company_id   integer  optional    

nullable Company ID. Example: 44

wh_billing_id   integer  optional    

optional Billing setting ID. Default: 0. Example: 7

wh_doc_num   string  optional    

nullable Document number. Max: 10. Example: "BG-001"

wh_doc_date   string  optional    

nullable Document date. Max: 15. Example: "2026-01-14"

wh_currency_id   integer  optional    

optional Currency ID. Default: 3. Example: 3

wh_parent_id   integer  optional    

nullable Parent warehouse id. Example: 1

wh_type   integer  optional    

Example: 16

wh_set_expiration_date   integer  optional    

optional 0/1. Default: 0. Example: 1

wh_set_batch   integer  optional    

optional 0/1. Default: 0. Example: 1

wh_set_production_date   integer  optional    

optional 0/1. Default: 0. Example: 0

wh_custom_json   object  optional    

nullable Custom JSON settings...

Update warehouse (no delete)

requires authentication

Only admin or warehouse_manager.

Notes:

Example request:
curl --request PUT \
    "https://localhost/api/warehouses/2" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"wh_name\": \"\\\"Client warehouse Sofia - updated\\\"\",
    \"wh_status\": 1,
    \"wh_country_id\": 100,
    \"wh_company_id\": 44,
    \"wh_billing_id\": 7,
    \"wh_doc_num\": \"\\\"BG-001\\\"\",
    \"wh_doc_date\": \"\\\"2026-01-14\\\"\",
    \"wh_currency_id\": 3,
    \"wh_parent_id\": 1,
    \"wh_ff_id\": 1,
    \"wh_set_expiration_date\": 1,
    \"wh_set_batch\": 1,
    \"wh_set_production_date\": 0,
    \"wh_custom_json\": {
        \"pickup\": true,
        \"cutoff\": \"18:00\"
    }
}"
const url = new URL(
    "https://localhost/api/warehouses/2"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "wh_name": "\"Client warehouse Sofia - updated\"",
    "wh_status": 1,
    "wh_country_id": 100,
    "wh_company_id": 44,
    "wh_billing_id": 7,
    "wh_doc_num": "\"BG-001\"",
    "wh_doc_date": "\"2026-01-14\"",
    "wh_currency_id": 3,
    "wh_parent_id": 1,
    "wh_ff_id": 1,
    "wh_set_expiration_date": 1,
    "wh_set_batch": 1,
    "wh_set_production_date": 0,
    "wh_custom_json": {
        "pickup": true,
        "cutoff": "18:00"
    }
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Updated):


{
    "wh_id": 2,
    "wh_name": "Client warehouse Sofia - updated",
    "wh_custom_json": "{\"pickup\":false}"
}
 

Request      

PUT api/warehouses/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Warehouse ID. Example: 2

Body Parameters

wh_id   string  optional    
wh_domain_id   string  optional    
wh_user_id   string  optional    
wh_type   string  optional    
wh_name   string  optional    

optional Warehouse name. Max: 100. Example: "Client warehouse Sofia - updated"

wh_status   integer  optional    

optional Status. Example: 1

wh_country_id   integer  optional    

nullable Country ID. Example: 100

wh_company_id   integer  optional    

nullable Company ID. Example: 44

wh_billing_id   integer  optional    

optional Billing setting ID. Example: 7

wh_doc_num   string  optional    

nullable Document number. Max: 10. Example: "BG-001"

wh_doc_date   string  optional    

nullable Document date. Max: 15. Example: "2026-01-14"

wh_currency_id   integer  optional    

optional Currency ID. Example: 3

wh_parent_id   integer  optional    

nullable Parent warehouse id. Example: 1

wh_ff_id   integer  optional    

optional Fulfilment warehouse id (must exist in the same domain and be wh_type=1). Example: 1

wh_set_expiration_date   integer  optional    

optional 0/1. Example: 1

wh_set_batch   integer  optional    

optional 0/1. Example: 1

wh_set_production_date   integer  optional    

optional 0/1. Example: 0

wh_custom_json   object  optional    

nullable Custom JSON settings...

Get fulfilment warehouse data

requires authentication

Returns the fulfilment warehouse (wh_type = 1) by its ID.

Authentication (Sanctum):

Authorization:

Example request:
curl --request GET \
    --get "https://localhost/api/warehouses/fulfillment/warehouses/1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/warehouses/fulfillment/warehouses/1"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Found):


{
    "data": {
        "id": 1,
        "name": "Fulfilment warehouse Varna",
        "domain_id": 10,
        "address": null,
        "phone": null
    }
}
 

Example response (403, Forbidden):


{
    "message": "Forbidden: only admin or warehouse_manager"
}
 

Example response (403, Domain mismatch):


{
    "message": "Forbidden: domain mismatch"
}
 

Example response (404, Not found):


{
    "message": "No query results for model ..."
}
 

Request      

GET api/warehouses/fulfillment/warehouses/{ffWarehouseId}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

ffWarehouseId   integer     

Fulfilment warehouse ID (wh_id). Example: 1

Get client warehouses of a fulfilment warehouse

requires authentication

Returns client warehouses (wh_type = 2) linked to the given fulfilment warehouse. Link is done via wh_ff_id (client warehouse points to fulfilment warehouse).

Authentication (Sanctum):

Authorization:

Example request:
curl --request GET \
    --get "https://localhost/api/warehouses/fulfillment/warehouses/1/client-warehouses" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://localhost/api/warehouses/fulfillment/warehouses/1/client-warehouses"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Successful):


{
    "data": [
        {
            "id": 10,
            "name": "Client warehouse Sofia",
            "domain_id": 10
        }
    ]
}
 

Example response (403, Forbidden):


{
    "message": "Forbidden: only admin or warehouse_manager"
}
 

Example response (403, Domain mismatch):


{
    "message": "Forbidden: domain mismatch"
}
 

Example response (404, Not found):


{
    "message": "No query results for model ..."
}
 

Request      

GET api/warehouses/fulfillment/warehouses/{ffWarehouseId}/client-warehouses

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

ffWarehouseId   integer     

Fulfilment warehouse ID (wh_id). Example: 1