Contents
The Inventory endpoint provides lot-level visibility and transaction operations — receiving stock into a warehouse, moving it between locations, and issuing it out.
{
"recNo": 15234,
"partNo": 42,
"shortID": "BOLT-M8-30",
"description": "Hex Bolt M8x30mm",
"associate": "Acme Corp",
"warehouse": "Main",
"wID": 1,
"spot": "A-01-03",
"units": 500.0,
"received": "2025-01-15T09:30:00Z",
"shipped": null,
"serial": "LOT-2025-001",
"serial2": null,
"rFIDTag": null,
"remark": "PO #4521",
"hold": false,
"jobID": 0,
"jobName": null,
"active": true
}| Field | Type | Description |
|---|---|---|
recNo | integer | Unique lot record number |
partNo | integer | Item part number |
shortID | string | Item SKU |
description | string | Item description |
associate | string | Customer/owner name (blank = own stock) |
warehouse | string | Warehouse name |
wID | integer | Warehouse ID |
spot | string | Bin/location within warehouse |
units | decimal | Quantity in this lot |
received | datetime | Date received |
shipped | datetime or null | Date shipped (null if still in stock) |
serial | string | Serial/lot number |
serial2 | string | Secondary serial number |
rFIDTag | string | RFID tag value |
remark | string | Notes |
hold | boolean | Whether lot is on hold |
jobID | integer | Associated job/project ID |
jobName | string | Job/project name |
active | boolean | Whether lot is active |
| Method | Path | Description |
|---|---|---|
| GET | /Inventory | List all inventory lots |
| GET | /Inventory/{wid} | List lots in a warehouse |
| GET | /Inventory/StockLevels | Aggregate stock levels (all warehouses) |
| GET | /Inventory/StockLevels/{wid} | Aggregate stock levels (one warehouse) |
| POST | /Inventory/Receive | Receive stock into a warehouse |
| POST | /Inventory/Move | Move stock between locations |
| POST | /Inventory/Issue | Issue stock out of a warehouse |
GET /Inventory?page=1&pageSize=50Returns individual inventory lots (receive records) sorted by most recent first.
{
"value": [
{
"recNo": 15234,
"partNo": 42,
"shortID": "BOLT-M8-30",
"description": "Hex Bolt M8x30mm",
"associate": "Acme Corp",
"warehouse": "Main",
"wID": 1,
"spot": "A-01-03",
"units": 500.0,
"received": "2025-01-15T09:30:00Z",
"shipped": null,
"serial": "LOT-2025-001",
"serial2": null,
"rFIDTag": null,
"remark": "PO #4521",
"hold": false,
"jobID": 0,
"jobName": null,
"active": true
}
],
"totalCount": 8420,
"page": 1,
"pageSize": 50,
"pageCount": 169,
"hasMore": true
}Each lot in value contains the fields documented in The Lot Object above.
GET /Inventory/3?page=1&pageSize=50Same as the full list, filtered to a specific warehouse by ID.
GET /Inventory/StockLevels
GET /Inventory/StockLevels/3Returns aggregated stock counts per item. Optionally filtered to a single warehouse.
{
"value": [
{
"partNo": 42,
"available": 1200.0,
"inStock": 1500.0,
"onOrder": 500.0,
"onHold": 300.0,
"committed": 0.0,
"packed": 0.0,
"aSN": 0.0
}
],
"totalCount": 2340,
"page": 1,
"pageSize": 25,
"pageCount": 94,
"hasMore": true
}| Field | Type | Description |
|---|---|---|
partNo | integer | Item part number |
available | decimal | Available for use (inStock - onHold - committed - packed) |
inStock | decimal | Total physically in warehouse |
onOrder | decimal | On open purchase orders |
onHold | decimal | In stock but held (quality, inspection, etc.) |
committed | decimal | Allocated to shipping orders |
packed | decimal | Packed and awaiting shipment |
aSN | decimal | In transit (advance ship notice) |
POST /Inventory/ReceiveRecords a positive inventory adjustment — stock coming into the system.
{
"itemID": "BOLT-M8-30",
"units": 500,
"wid": 1,
"reasonCode": 1,
"spot": "A-01-03",
"serial": "LOT-2025-002",
"reference": "PO #4521",
"remark": "Vendor delivery"
}| Field | Type | Description |
|---|---|---|
itemID | string | Item ShortID to receive |
units | decimal | Quantity to receive (must be > 0) |
wid | integer | Destination warehouse ID |
reasonCode | integer | Reason code for the adjustment |
| Field | Type | Description |
|---|---|---|
spot | string | Bin/location in warehouse |
serial | string | Serial or lot number |
serial2 | string | Secondary serial |
rfidTag | string | RFID tag |
reference | string | External reference (PO number, etc.) |
remark | string | Notes |
netWeight | decimal | Net weight |
grossWeight | decimal | Gross weight |
price | decimal | Unit cost |
expires | datetime | Expiration date |
supplier | integer | Vendor/supplier ID |
line | integer | PO line number (if receiving against a PO) |
jobid | integer | Associated job/project ID |
Returns the new record number on success.
| Status | Cause |
|---|---|
| 400 | Missing required fields or validation failure |
| 403 | No receive permission, or warehouse out of scope |
POST /Inventory/MoveMoves inventory between locations or warehouses.
{
"itemID": "BOLT-M8-30",
"units": 100,
"wid": 1,
"fromSpot": "A-01-03",
"toSpot": "B-02-01"
}For inter-warehouse moves, include shipToWid:
{
"itemID": "BOLT-M8-30",
"units": 100,
"wid": 1,
"shipToWid": 3,
"transitSlip": "TS-2025-042"
}| Field | Type | Description |
|---|---|---|
itemID | string | Item ShortID to move |
units | decimal | Quantity to move |
wid | integer | Source warehouse ID |
| Field | Type | Description |
|---|---|---|
fromSpot | string | Source bin/location |
toSpot | string | Destination bin/location |
shipToWid | integer | Destination warehouse (for inter-warehouse moves) |
transitSlip | string | Transit slip reference |
serial | string | Serial/lot to move |
serial2 | string | Secondary serial |
rfidTag | string | RFID tag |
reference | string | External reference |
recno | integer | Specific lot record to move |
received | string | Received date filter |
Returns the result of the move operation on success.
| Status | Cause |
|---|---|
| 400 | Missing required fields or validation failure |
| 403 | No move permission, or warehouse(s) out of scope |
POST /Inventory/IssueRecords a negative inventory adjustment — stock leaving the system.
{
"itemID": "BOLT-M8-30",
"units": 50,
"wid": 1,
"reasonCode": 2,
"spot": "A-01-03",
"reference": "Work Order #789"
}| Field | Type | Description |
|---|---|---|
itemID | string | Item ShortID to issue |
units | decimal | Quantity to issue (must be > 0) |
wid | integer | Source warehouse ID |
reasonCode | integer | Reason code for the adjustment |
| Field | Type | Description |
|---|---|---|
spot | string | Bin/location to issue from |
serial | string | Serial/lot number |
serial2 | string | Secondary serial |
rfidTag | string | RFID tag |
reference | string | External reference |
remark | string | Notes |
netWeight | decimal | Net weight |
shipto | integer | Ship-to customer ID |
prodID | string | Production/assembly ID |
recno | integer | Specific lot record to issue from |
line | integer | Order line number |
Returns the result of the issue operation on success.
| Status | Cause |
|---|---|
| 400 | Missing required fields or validation failure |
| 403 | No issue permission, or warehouse out of scope |
All inventory operations enforce warehouse scope. Your API credentials are assigned to specific warehouses. If you attempt to read or write inventory in a warehouse outside your scope, you’ll receive a 403 error.
For inter-warehouse moves, both the source (wid) and destination (shipToWid) must be in your authorized scope.
| Action | Required Permission |
|---|---|
| List lots / stock levels | Item Master List (SecurityID 11) |
| Receive stock | Positive Adjustment (SecurityID 95) |
| Move stock | Locate/Move Units (SecurityID 15) |
| Issue stock | Negative Adjustment (SecurityID 88) |
On this page