Inventory Pro
Skip to main content

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/{wh}/MaterialInMaterial in (audit) records for a warehouse
GET/Inventory/{wh}/MaterialIn/Part/{part}Material in records for a part in a warehouse
GET/Inventory/{wh}/MaterialOutMaterial out (audit) records for a warehouse
GET/Inventory/{wh}/MaterialOut/Part/{part}Material out records for a part in a warehouse
POST/Inventory/ReceiveReceive stock into a warehouse
POST/Inventory/MoveMove stock between locations
POST/Inventory/IssueIssue stock out of a warehouse

Note: the lot-list routes do not support modifiedSince — passing it returns HTTP 400. For incremental sync of inventory activity, poll the per-warehouse Material In / Out audit routes, which do support modifiedSince. See Pagination for the full support matrix.

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.


Material In / Out (Audit Records)

Material in/out audit routes return paginated transaction logs ordered by date (descending). The per-warehouse routes are current:

GET /Inventory/{wh}/MaterialIn
GET /Inventory/{wh}/MaterialIn/Part/{part}
GET /Inventory/{wh}/MaterialOut
GET /Inventory/{wh}/MaterialOut/Part/{part}

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

Operations are scoped to the warehouses assigned to your integration user. Reading or writing data for unassigned warehouses returns 403.

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)

Note: Permission enforcement is applied per endpoint (enforced; see Authentication).