InventoryPro

Contents

api

Inventory

Inventory

The Inventory endpoint provides lot-level visibility and transaction operations — receiving stock into a warehouse, moving it between locations, and issuing it out.

The Lot Object

{
  "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
}
FieldTypeDescription
recNointegerUnique lot record number
partNointegerItem part number
shortIDstringItem SKU
descriptionstringItem description
associatestringCustomer/owner name (blank = own stock)
warehousestringWarehouse name
wIDintegerWarehouse ID
spotstringBin/location within warehouse
unitsdecimalQuantity in this lot
receiveddatetimeDate received
shippeddatetime or nullDate shipped (null if still in stock)
serialstringSerial/lot number
serial2stringSecondary serial number
rFIDTagstringRFID tag value
remarkstringNotes
holdbooleanWhether lot is on hold
jobIDintegerAssociated job/project ID
jobNamestringJob/project name
activebooleanWhether lot is active

Endpoints

MethodPathDescription
GET/InventoryList all inventory lots
GET/Inventory/{wid}List lots in a warehouse
GET/Inventory/StockLevelsAggregate stock levels (all warehouses)
GET/Inventory/StockLevels/{wid}Aggregate stock levels (one warehouse)
POST/Inventory/ReceiveReceive stock into a warehouse
POST/Inventory/MoveMove stock between locations
POST/Inventory/IssueIssue stock out of a warehouse

List Inventory Lots

GET /Inventory?page=1&pageSize=50

Returns individual inventory lots (receive records) sorted by most recent first.

Response

{
  "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.

List Lots in a Warehouse

GET /Inventory/3?page=1&pageSize=50

Same as the full list, filtered to a specific warehouse by ID.

Stock Levels (Aggregate)

GET /Inventory/StockLevels
GET /Inventory/StockLevels/3

Returns aggregated stock counts per item. Optionally filtered to a single warehouse.

Response

{
  "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
}
FieldTypeDescription
partNointegerItem part number
availabledecimalAvailable for use (inStock - onHold - committed - packed)
inStockdecimalTotal physically in warehouse
onOrderdecimalOn open purchase orders
onHolddecimalIn stock but held (quality, inspection, etc.)
committeddecimalAllocated to shipping orders
packeddecimalPacked and awaiting shipment
aSNdecimalIn transit (advance ship notice)

Receive Stock

POST /Inventory/Receive

Records a positive inventory adjustment — stock coming into the system.

Request Body

{
  "itemID": "BOLT-M8-30",
  "units": 500,
  "wid": 1,
  "reasonCode": 1,
  "spot": "A-01-03",
  "serial": "LOT-2025-002",
  "reference": "PO #4521",
  "remark": "Vendor delivery"
}

Required Fields

FieldTypeDescription
itemIDstringItem ShortID to receive
unitsdecimalQuantity to receive (must be > 0)
widintegerDestination warehouse ID
reasonCodeintegerReason code for the adjustment

Optional Fields

FieldTypeDescription
spotstringBin/location in warehouse
serialstringSerial or lot number
serial2stringSecondary serial
rfidTagstringRFID tag
referencestringExternal reference (PO number, etc.)
remarkstringNotes
netWeightdecimalNet weight
grossWeightdecimalGross weight
pricedecimalUnit cost
expiresdatetimeExpiration date
supplierintegerVendor/supplier ID
lineintegerPO line number (if receiving against a PO)
jobidintegerAssociated job/project ID

Response

Returns the new record number on success.

Error Cases

StatusCause
400Missing required fields or validation failure
403No receive permission, or warehouse out of scope

Move Stock

POST /Inventory/Move

Moves inventory between locations or warehouses.

Request Body

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

Required Fields

FieldTypeDescription
itemIDstringItem ShortID to move
unitsdecimalQuantity to move
widintegerSource warehouse ID

Optional Fields

FieldTypeDescription
fromSpotstringSource bin/location
toSpotstringDestination bin/location
shipToWidintegerDestination warehouse (for inter-warehouse moves)
transitSlipstringTransit slip reference
serialstringSerial/lot to move
serial2stringSecondary serial
rfidTagstringRFID tag
referencestringExternal reference
recnointegerSpecific lot record to move
receivedstringReceived date filter

Response

Returns the result of the move operation on success.

Error Cases

StatusCause
400Missing required fields or validation failure
403No move permission, or warehouse(s) out of scope

Issue Stock

POST /Inventory/Issue

Records a negative inventory adjustment — stock leaving the system.

Request Body

{
  "itemID": "BOLT-M8-30",
  "units": 50,
  "wid": 1,
  "reasonCode": 2,
  "spot": "A-01-03",
  "reference": "Work Order #789"
}

Required Fields

FieldTypeDescription
itemIDstringItem ShortID to issue
unitsdecimalQuantity to issue (must be > 0)
widintegerSource warehouse ID
reasonCodeintegerReason code for the adjustment

Optional Fields

FieldTypeDescription
spotstringBin/location to issue from
serialstringSerial/lot number
serial2stringSecondary serial
rfidTagstringRFID tag
referencestringExternal reference
remarkstringNotes
netWeightdecimalNet weight
shiptointegerShip-to customer ID
prodIDstringProduction/assembly ID
recnointegerSpecific lot record to issue from
lineintegerOrder line number

Response

Returns the result of the issue operation on success.

Error Cases

StatusCause
400Missing required fields or validation failure
403No issue permission, or warehouse out of scope

Warehouse 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.

Permissions

ActionRequired Permission
List lots / stock levelsItem Master List (SecurityID 11)
Receive stockPositive Adjustment (SecurityID 95)
Move stockLocate/Move Units (SecurityID 15)
Issue stockNegative Adjustment (SecurityID 88)

On this page