Skip to content

Product Stock Sync

Synchronize product stock levels between WCS and WMS.

Direction WCS → WMS

HTTP Method POST

Path /product-stock-sync/sync

Field notes:

Field NameData TypeDescriptionNotes
productIdStringA unique product identifier for the product
batchIdStringThe batch identifier for a specific batch-managed product
expiryStringThe expiry date for a specific date-managed product
stockOwnerStringThe stock owner identifier for a specific owner-managed
subBinIdStringThe location identifier for the physical bin-compartment (sub-bin) within the Autostore
binsObject ArrayArray of bin objects
bins.binIdStringPhysical bin identifier within the Autostore
bins.subBinIdStringSubbin (compartment) identifier within the bin
bins.contentCodeStringContent code for the bin
bins.markedNotEmptyBooleanIndicates if the subbin is marked as not empty
bins.productMisMatchBooleanIndicates if there is a product mismatch in the subbin
bins.markedEmptyAtPickBooleanIndicates if the subbin was marked empty during a pick operation
bins.heldExternallyBooleanIndicates if the subbin is held/locked externally
bins.binLinesObject ArrayArray of individual product lines in the bin
bins.binLines.subBinIdStringSubbin identifier for this line
bins.binLines.productIdStringProduct identifier for this line
bins.binLines.batchIdStringBatch identifier for this line
bins.binLines.expiryDateStringExpiry date for this line
bins.binLines.stockOwnerStringStock owner for this line
bins.binLines.availableQuantityDoubleAvailable quantity for this line
bins.binLines.allocatedQuantityDoubleAllocated quantity for this line
allocationsObject ArrayCan be null if not present
allocations.allocationReference
allocations.binId
allocations.subBinId
allocations.productId
allocations.batchId
allocations.expiry
allocations.stockOwner
allocations.quantity
tasksObject ArrayIf allocations is null, tasks will also be null
tasks.taskId
tasks.externalReference
tasks.status
tasks.productId
tasks.batchId
tasks.expiry
tasks.stockOwner
tasks.requestedQuantity
tasks.allocatedQuantity
tasks.pickedQuantity
hardSyncboolean
portIdStringPort/workstation identifier
operatorStringOperator who performed inspection/internal wcs process that made the adjustment.
createdAtLongTimestamp as Unix epoch milliseconds indicating when the sync event was created
stockLabelKeyStringThe stock label/bucket to move stock into (e.g. available, damaged, held, qcInvestigation)Valid values: available, qcInvestigation, qaInvestigation, positiveRelease, damaged, damagedOnArrival, damagedAtPick, damagedAtRebin, damagedAtPack, damagedAtSinglesPack, kitting, productionRecall, productRework, warehouseTransfer, inboundDiscrepancy, held

Example Request Body

{
"productId": "ABC123",
"batchId": "BATCH-2024-11",
"expiry": "2025-06-01",
"stockOwner": "THG",
"subBinId": "1234-11",
"hardSync": false,
"portId": "1",
"operator": "john.doe",
"createdAt": 1701432000000,
"stockLabelKey": "available",
"bins": [
{
"binId": "1234",
"subBinId": "1234-11",
"contentCode": "11",
"markedNotEmpty": false,
"productMisMatch": false,
"markedEmptyAtPick": false,
"heldExternally": false,
"binLines": [
{
"subBinId": "1234-11",
"productId": "ABC123",
"batchId": "BATCH-2024-11",
"expiryDate": "2025-06-01",
"stockOwner": "THG",
"availableQuantity": 485.0,
"allocatedQuantity": 23.0
}
]
}
],
"allocations": [
{
"allocationReference": "ALLOC-001",
"binId": "1234",
"subBinId": "1234-11",
"productId": "ABC123",
"batchId": "BATCH-2024-11",
"expiry": "2025-06-01",
"stockOwner": "THG",
"quantity": 23.0
}
],
"tasks": [
{
"taskId": "123456",
"externalReference": "EXT-REF-001",
"status": "ALLOCATED",
"productId": "ABC123",
"batchId": "BATCH-2024-11",
"expiry": "2025-06-01",
"stockOwner": "THG",
"requestedQuantity": 25.0,
"allocatedQuantity": 23.0,
"pickedQuantity": 0.0
}
]
}

200: Stock sync accepted

{
"message": "Success"
}

400: Invalid request data

{
"message": "Bad Request"
}

401: Authentication failed

{
"message": "Unauthorized"
}