Skip to content

Warehouses ​

Part of the Inventory API. Base URL https://your-domain.com/admin/api/v1 — replace the host with your own installation and the token placeholder with a real Bearer token (see Authentication).

List warehouses ​

GET /admin/api/v1/inventories/warehouses

Retrieve a paginated list of warehouses with filtering and sorting

🔒 Requires a valid Bearer token.

Query parameters

ParameterTypeRequiredDescriptionExample
includestringNoComma-separated list of relationships to include. Available options: company, partnerAddress, creator, locations, supplierWarehouses, routescompany,partnerAddress
filter[id]stringNoComma-separated list of IDs to filter byarchitecto
filter[name]stringNoFilter by warehouse nameMain
filter[code]stringNoFilter by warehouse codeWH
filter[company_id]stringNoFilter by company IDsarchitecto
filter[partner_address_id]stringNoFilter by partner address IDsarchitecto
sortstringNoSort field-created_at
bash
curl -X GET "https://your-domain.com/admin/api/v1/inventories/warehouses?include=company%2CpartnerAddress&filter%5Bid%5D=architecto&filter%5Bname%5D=Main&filter%5Bcode%5D=WH&filter%5Bcompany_id%5D=architecto&filter%5Bpartner_address_id%5D=architecto&sort=-created_at" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/inventories/warehouses?include=company%2CpartnerAddress&filter%5Bid%5D=architecto&filter%5Bname%5D=Main&filter%5Bcode%5D=WH&filter%5Bcompany_id%5D=architecto&filter%5Bpartner_address_id%5D=architecto&sort=-created_at", {
  method: "GET",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://your-domain.com/admin/api/v1/inventories/warehouses?include=company%2CpartnerAddress&filter%5Bid%5D=architecto&filter%5Bname%5D=Main&filter%5Bcode%5D=WH&filter%5Bcompany_id%5D=architecto&filter%5Bpartner_address_id%5D=architecto&sort=-created_at', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/inventories/warehouses?include=company%2CpartnerAddress&filter%5Bid%5D=architecto&filter%5Bname%5D=Main&filter%5Bcode%5D=WH&filter%5Bcompany_id%5D=architecto&filter%5Bpartner_address_id%5D=architecto&sort=-created_at"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

response = requests.get(url, headers=headers)

data = response.json()
print(data)

Example response 200

json
{
  "data": [
    {
      "id": 1,
      "name": "Your Company",
      "code": "WH",
      "sort": 1,
      "reception_steps": "one_step",
      "delivery_steps": "one_step",
      "created_at": "2026-10-12T09:59:23.000000Z",
      "updated_at": "2026-10-12T09:59:23.000000Z",
      "deleted_at": null
    },
    {
      "id": 1,
      "name": "Your Company",
      "code": "WH",
      "sort": 1,
      "reception_steps": "one_step",
      "delivery_steps": "one_step",
      "created_at": "2026-10-12T09:59:23.000000Z",
      "updated_at": "2026-10-12T09:59:23.000000Z",
      "deleted_at": null
    }
  ],
  "links": {
    "first": "/?page=1",
    "last": "/?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "links": [
      {
        "url": null,
        "label": "&laquo; Previous",
        "page": null,
        "active": false
      },
      {
        "url": "/?page=1",
        "label": "1",
        "page": 1,
        "active": true
      },
      {
        "url": null,
        "label": "Next &raquo;",
        "page": null,
        "active": false
      }
    ],
    "path": "/",
    "per_page": 10,
    "to": 2,
    "total": 2
  }
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Create warehouse ​

POST /admin/api/v1/inventories/warehouses

Create a new warehouse

🔒 Requires a valid Bearer token.

Body parameters

ParameterTypeRequiredDescription
namestringYesWarehouse name. Must not be greater than 255 characters.
codestringYesWarehouse code. Must not be greater than 255 characters.
company_idintegerYesCompany ID. Must match an existing stored value.
partner_address_idintegerNoPartner address ID. Must match an existing stored value.
reception_stepsstringNoIncoming shipment workflow step value.
delivery_stepsstringNoOutgoing shipment workflow step value.
supplier_warehousesinteger[]NoMust match an existing stored value.
bash
curl -X POST "https://your-domain.com/admin/api/v1/inventories/warehouses" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Main Warehouse",
  "code": "WH-MAIN",
  "company_id": 1,
  "partner_address_id": 10,
  "reception_steps": "one_step",
  "delivery_steps": "one_step",
  "supplier_warehouses": [
    16
  ]
}'
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/inventories/warehouses", {
  method: "POST",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "name": "Main Warehouse",
  "code": "WH-MAIN",
  "company_id": 1,
  "partner_address_id": 10,
  "reception_steps": "one_step",
  "delivery_steps": "one_step",
  "supplier_warehouses": [
    16
  ]
}),
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://your-domain.com/admin/api/v1/inventories/warehouses', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
    'json' => [
    'name' => 'Main Warehouse',
    'code' => 'WH-MAIN',
    'company_id' => 1,
    'partner_address_id' => 10,
    'reception_steps' => 'one_step',
    'delivery_steps' => 'one_step',
    'supplier_warehouses' => [
      16,
    ],
  ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/inventories/warehouses"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

payload = {
    "name": "Main Warehouse",
    "code": "WH-MAIN",
    "company_id": 1,
    "partner_address_id": 10,
    "reception_steps": "one_step",
    "delivery_steps": "one_step",
    "supplier_warehouses": [
        16,
    ],
}

response = requests.post(url, headers=headers, json=payload)

data = response.json()
print(data)

Example response 201

json
{
  "data": {
    "id": 1,
    "name": "Your Company",
    "code": "WH",
    "sort": 1,
    "reception_steps": "one_step",
    "delivery_steps": "one_step",
    "created_at": "2026-10-12T09:59:23.000000Z",
    "updated_at": "2026-10-12T09:59:23.000000Z",
    "deleted_at": null
  },
  "message": "Warehouse created successfully."
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Show warehouse ​

GET /admin/api/v1/inventories/warehouses/{id}

Retrieve a specific warehouse by ID

🔒 Requires a valid Bearer token.

Path parameters

ParameterTypeRequiredDescription
idintegerYesThe warehouse ID

Query parameters

ParameterTypeRequiredDescriptionExample
includestringNoComma-separated list of relationships to include. Available options: company, partnerAddress, creator, locations, supplierWarehouses, routescompany,locations
bash
curl -X GET "https://your-domain.com/admin/api/v1/inventories/warehouses/{id}?include=company%2Clocations" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/inventories/warehouses/{id}?include=company%2Clocations", {
  method: "GET",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://your-domain.com/admin/api/v1/inventories/warehouses/{id}?include=company%2Clocations', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/inventories/warehouses/{id}?include=company%2Clocations"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

response = requests.get(url, headers=headers)

data = response.json()
print(data)

Example response 200

json
{
  "data": {
    "id": 1,
    "name": "Your Company",
    "code": "WH",
    "sort": 1,
    "reception_steps": "one_step",
    "delivery_steps": "one_step",
    "created_at": "2026-10-12T09:59:23.000000Z",
    "updated_at": "2026-10-12T09:59:23.000000Z",
    "deleted_at": null
  }
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Update warehouse ​

PUT /admin/api/v1/inventories/warehouses/{id}

Update an existing warehouse

🔒 Requires a valid Bearer token.

Path parameters

ParameterTypeRequiredDescription
idintegerYesThe warehouse ID

Body parameters

ParameterTypeRequiredDescription
namestringNoWarehouse name. Must not be greater than 255 characters.
codestringNoWarehouse code. Must not be greater than 255 characters.
company_idintegerNoCompany ID. Must match an existing stored value.
partner_address_idintegerNoPartner address ID. Must match an existing stored value.
reception_stepsstringNoIncoming shipment workflow step value.
delivery_stepsstringNoOutgoing shipment workflow step value.
supplier_warehousesinteger[]NoMust match an existing stored value.
bash
curl -X PUT "https://your-domain.com/admin/api/v1/inventories/warehouses/{id}" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Main Warehouse",
  "code": "WH-MAIN",
  "company_id": 1,
  "partner_address_id": 10,
  "reception_steps": "one_step",
  "delivery_steps": "one_step",
  "supplier_warehouses": [
    16
  ]
}'
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/inventories/warehouses/{id}", {
  method: "PUT",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "name": "Main Warehouse",
  "code": "WH-MAIN",
  "company_id": 1,
  "partner_address_id": 10,
  "reception_steps": "one_step",
  "delivery_steps": "one_step",
  "supplier_warehouses": [
    16
  ]
}),
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://your-domain.com/admin/api/v1/inventories/warehouses/{id}', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
    'json' => [
    'name' => 'Main Warehouse',
    'code' => 'WH-MAIN',
    'company_id' => 1,
    'partner_address_id' => 10,
    'reception_steps' => 'one_step',
    'delivery_steps' => 'one_step',
    'supplier_warehouses' => [
      16,
    ],
  ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/inventories/warehouses/{id}"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

payload = {
    "name": "Main Warehouse",
    "code": "WH-MAIN",
    "company_id": 1,
    "partner_address_id": 10,
    "reception_steps": "one_step",
    "delivery_steps": "one_step",
    "supplier_warehouses": [
        16,
    ],
}

response = requests.put(url, headers=headers, json=payload)

data = response.json()
print(data)

Example response 200

json
{
  "data": {
    "id": 1,
    "name": "Your Company",
    "code": "WH",
    "sort": 1,
    "reception_steps": "one_step",
    "delivery_steps": "one_step",
    "created_at": "2026-10-12T09:59:23.000000Z",
    "updated_at": "2026-10-12T09:59:23.000000Z",
    "deleted_at": null
  },
  "message": "Warehouse updated successfully."
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Delete warehouse ​

DELETE /admin/api/v1/inventories/warehouses/{id}

Soft delete a warehouse

🔒 Requires a valid Bearer token.

Path parameters

ParameterTypeRequiredDescription
idintegerYesThe warehouse ID
bash
curl -X DELETE "https://your-domain.com/admin/api/v1/inventories/warehouses/{id}" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/inventories/warehouses/{id}", {
  method: "DELETE",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('DELETE', 'https://your-domain.com/admin/api/v1/inventories/warehouses/{id}', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/inventories/warehouses/{id}"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

response = requests.delete(url, headers=headers)

data = response.json()
print(data)

Example response 200

json
{
  "message": "Warehouse deleted successfully."
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Restore warehouse ​

POST /admin/api/v1/inventories/warehouses/{id}/restore

Restore a soft deleted warehouse

🔒 Requires a valid Bearer token.

Path parameters

ParameterTypeRequiredDescription
idintegerYesThe warehouse ID
bash
curl -X POST "https://your-domain.com/admin/api/v1/inventories/warehouses/{id}/restore" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/inventories/warehouses/{id}/restore", {
  method: "POST",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://your-domain.com/admin/api/v1/inventories/warehouses/{id}/restore', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/inventories/warehouses/{id}/restore"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

response = requests.post(url, headers=headers)

data = response.json()
print(data)

Example response 200

json
{
  "data": {
    "id": 1,
    "name": "Your Company",
    "code": "WH",
    "sort": 1,
    "reception_steps": "one_step",
    "delivery_steps": "one_step",
    "created_at": "2026-10-12T09:59:23.000000Z",
    "updated_at": "2026-10-12T09:59:23.000000Z",
    "deleted_at": null
  },
  "message": "Warehouse restored successfully."
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Force delete warehouse ​

DELETE /admin/api/v1/inventories/warehouses/{id}/force

Permanently delete a warehouse

🔒 Requires a valid Bearer token.

Path parameters

ParameterTypeRequiredDescription
idintegerYesThe warehouse ID
bash
curl -X DELETE "https://your-domain.com/admin/api/v1/inventories/warehouses/{id}/force" \
  -H "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"
javascript
const response = await fetch("https://your-domain.com/admin/api/v1/inventories/warehouses/{id}/force", {
  method: "DELETE",
  headers: {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
  },
});

const data = await response.json();
console.log(data);
php
<?php

$client = new \GuzzleHttp\Client();

$response = $client->request('DELETE', 'https://your-domain.com/admin/api/v1/inventories/warehouses/{id}/force', [
    'headers' => [
        'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
]);

$data = json_decode($response->getBody(), true);
python
import requests

url = "https://your-domain.com/admin/api/v1/inventories/warehouses/{id}/force"

headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Accept": "application/json",
    "Content-Type": "application/json",
}

response = requests.delete(url, headers=headers)

data = response.json()
print(data)

Example response 200

json
{
  "message": "Warehouse permanently deleted successfully."
}
Error response — 401
json
{
  "message": "Unauthenticated."
}

Released under the MIT License.