Skip to main content

Open Warehouse Execution Management System API Documentation

Version: v1.0
Last Updated: 2025-08-01

This document describes how client systems actively call WES to issue critical tasks such as inbound/outbound and container task callbacks.

πŸ” Authentication​

All API requests must include an api key in the header:

X-API-KEY: <your_api_key>

Authentication Errors​

Status CodeDescriptionSolution
401Invalid API KeyGet the correct API key

🌐 Base Information​

Base URL: https://${url}:${port}/api-platform/api
Endpoint: POST /execute
Content-Type: application/json

πŸ“ Request Format​

Common Headers​

Content-Type: application/json
X-Tenant-Id: <your_tenant_id> //Required for SaaS services
X-API-KEY: <your_api_key>
X-Request-ID: <unique_request_id>

Common Parameters​

ParameterTypeRequiredDescription
apiTypeStringβœ…API type identifier
bodyJSONβœ…Request body (varies by apiType)

Upstream Call APIs (WMS/ERP/MES β†’ WES )​

SKU Management​

apiType: SKU_CREATE​

Creates a new SKU (Stock Keeping Unit)

Request Body Schema:

[
{
"skuCode": "SKU-2023-001",
"warehouseCode": "WH-EAST-01",
"ownerCode": "ACME_CORP",
"skuName": "Premium Laptop",
"color": "Space Gray",
"brand": "OpenWES",
"volumeDTO": {
"volume": 1500000,
"height": 150,
"width": 100,
"length": 100
},
"skuAttribute": {
"imageUrl": "https://storage.example.com/sku123.jpg",
"skuFirstCategory": "Electronics",
"skuSecondCategory": "Computers"
},
"skuPackage": {
"skuPackageDetails": [
{
"level": 1,
"packageCode": "LP-BOX-01",
"unit": "box",
"height": 200,
"width": 300,
"length": 400,
"weight": 1500
}
]
},
"skuBarcode": {
"barcodes": [
"1234567890123",
"2345678901234"
]
}
}
]

Field Descriptions​

FieldTypeRequiredDescription
skuCodestringYesSKU code, max length 64
warehouseCodestringYesWarehouse code, max length 64
ownerCodestringYesOwner code, max length 64
skuNamestringYesSKU name, max length 128
stylestringNoSKU style
colorstringNoSKU color
sizestringNoSKU size
brandstringNoSKU brand
weightobjectNoWeight information
volumeDTOobjectNoVolume information
skuAttributeobjectNoSKU attributes
skuConfigobjectNoSKU configuration
skuPackageobjectNoSKU packaging
skuBarcodeobjectNoSKU barcodes

Volume Information (VolumeDTO)​

FieldTypeRequiredDescription
volumelongYesVolume in cubic millimeters, β‰₯0
heightlongYesHeight in millimeters, β‰₯0
widthlongYesWidth in millimeters, β‰₯0
lengthlongYesLength in millimeters, β‰₯0

SKU Attributes (SkuAttributeDTO)​

FieldTypeRequiredDescription
imageUrlstringNoSKU image URL
unitstringNoSKU unit
skuFirstCategorystringNoFirst-level category
skuSecondCategorystringNoSecond-level category
skuThirdCategorystringNoThird-level category
skuAttributeCategorystringNoAttribute category
skuAttributeSubCategorystringNoAttribute sub-category

SKU Packaging (SkuPackageDTO)​

FieldTypeRequiredDescription
skuPackageDetailsarrayNoPackaging details list
Packaging Detail​
FieldTypeRequiredDescription
levelintegerYesPackaging level
packageCodestringYesPackage code
unitstringYesPackage unit
enableSplitbooleanNoWhether split is allowed
heightlongYesPackage height(mm) β‰₯0
widthlongYesPackage width(mm) β‰₯0
lengthlongYesPackage length(mm) β‰₯0
weightintegerYesPackage weight(mg) β‰₯0

SKU Barcode (BarcodeDTO)​

FieldTypeRequiredDescription
barcodesarrayNoBarcode list (must be unique)

Success Response:

{
"code": "0",
"msg": "success"
}

Inbound Management​

apiType: ORDER_INBOUND_CREATE​

Request Body Schema:

[
{
"customerOrderNo": "CUST-ORDER-001",
"lpnCode": "LPN123456",
"warehouseCode": "WH01",
"customerOrderType": "PURCHASE|RETURN|TRANSFER",
"storageType": "STORAGE|OVERSTOCK|IN_TRANSIT",
"sender": "Supplier A",
"carrier": "SF Express",
"shippingMethod": "Land Transport",
"trackingNumber": "SF123456789",
"estimatedArrivalDate": 1672531200000,
"remark": "Fragile goods, handle with care",
"extendFields": {
"customField1": "value1",
"customField2": 100
},
"details": [
{
"ownerCode": "OWNER01",
"boxNo": "BOX001",
"qtyRestocked": 100,
"skuCode": "SKU001",
"skuName": "Product A",
"style": "2023 New Style",
"color": "Red",
"size": "XL",
"brand": "Brand A",
"batchAttributes": {
"batchNo": "BATCH2023",
"productionDate": "2023-01-01"
},
"extendFields": {
"qualityGrade": "A"
}
}
]
}
]

Field Descriptions​

Main Order Fields​

FieldTypeRequiredDescription
customerOrderNostringYesCustomer order number, max length 64
lpnCodestringNoLPN code, max length 64
warehouseCodestringYesWarehouse code, max length 64
customerOrderTypestringYesInbound order plan type
storageTypestringYesStorage type (STORAGE/OVERSTOCK/IN_TRANSIT)
senderstringNoSender, max length 128
carrierstringNoLogistics company, max length 128
shippingMethodstringNoShipping method, max length 128
trackingNumberstringNoTracking number, max length 128
estimatedArrivalDatelongNoEstimated arrival date (timestamp)
remarkstringNoRemarks, max length 255
extendFieldsobjectNoExtended fields (key-value format)
detailsarrayYesInbound details list

Detail Fields​

FieldTypeRequiredDescription
ownerCodestringYesOwner code, max length 64
boxNostringNoBox number, max length 64
qtyRestockedintegerYesInbound quantity (β‰₯1)
skuCodestringYesSKU code, max length 64
skuNamestringNoProduct name
stylestringNoProduct style
colorstringNoProduct color
sizestringNoProduct size
brandstringNoProduct brand
batchAttributesobjectNoBatch attributes (key-value)
extendFieldsobjectNoExtended attributes (key-value)

Storage Type Enumeration​

ValueDescription
STORAGEStorage
OVERSTOCKCross-dock
IN_TRANSITIn-transit

Success Response:

{
"code": "0",
"msg": "success"
}

apiType: ORDER_INBOUND_CANCEL​

Request Body Schema:

{
"identifyNos": [
"INB-2023001",
"INB-2023002"
],
"warehouseCode": "WH01"
}

Field Descriptions​

FieldTypeRequiredDescription
identifyNosarrayYesList of inbound order numbers to cancel (batch support)
warehouseCodestringYesWarehouse code (for permission verification)

Success Response​

{
"code": "0",
"msg": "success"
}

Outbound Management​

apiType: ORDER_OUTBOUND_CREATE​

Creates one or more outbound plan orders

Request Body Schema:

[
{
"warehouseCode": "WH-EAST-01",
"customerWaveNo": "WAVE-2023-001",
"customerOrderNo": "CUST-ORDER-001",
"customerOrderType": "SALES",
"carrierCode": "SF-EXPRESS",
"waybillNo": "SF123456789",
"origPlatformCode": "TMALL",
"expiredTime": 1672531200000,
"priority": 100,
"shortOutbound": false,
"shortWaiting": false,
"orderNo": "ORD-2023-001",
"destinations": ["SHELF-A1", "SHELF-A2"],
"extendFields": {
"deliveryType": "express",
"specialInstructions": "handle with care"
},
"details": [
{
"ownerCode": "ACME_CORP",
"skuCode": "SKU-2023-001",
"skuName": "Premium Laptop",
"batchAttributes": {
"batchNo": "BATCH2023",
"productionDate": "2023-01-01",
"expirationDate": "2025-01-01"
},
"qtyRequired": 10,
"qtyAllocated": 0,
"qtyActual": 0,
"extendFields": {
"qualityGrade": "A",
"remark": "fragile"
}
}
]
}
]

Field Descriptions​

Main Order Fields​

FieldTypeRequiredDescription
warehouseCodestringYesWarehouse code, max length 64
customerWaveNostringNoExternal wave number
customerOrderNostringYesCustomer order number, max length 64
customerOrderTypestringNoOutbound order type
carrierCodestringNoCarrier code
waybillNostringNoWaybill number
origPlatformCodestringNoOriginal platform code
expiredTimelongNoCut-off time (timestamp)
priorityintegerNoPriority, higher value = higher priority
shortOutboundbooleanNoWhether short-shipping allowed, default false
shortWaitingbooleanNoWhether backorder waiting allowed, default false
orderNostringYesOrder number, generated according to system rules
destinationsarrayNoContainer destination list
extendFieldsobjectNoExtended fields (key-value format)
detailsarrayYesOutbound plan order details list

Detail Fields (OutboundPlanOrderDetailDTO)​

FieldTypeRequiredDescription
ownerCodestringYesOwner code, max length 64
skuCodestringYesSKU code, max length 64
skuNamestringNoSKU name, max length 128
batchAttributesobjectNoBatch attributes (key-value)
qtyRequiredintegerYesRequired outbound quantity (β‰₯1)
qtyAllocatedintegerNoPre-allocated batch stock quantity
qtyActualintegerNoActual outbound quantity
extendFieldsobjectNoExtended fields (key-value)

Success Response:

{
"code": "0",
"msg": "success"
}

apiType: ORDER_OUTBOUND_CANCEL​

Cancels outbound plan orders based on customer order numbers

Request Body Schema:

{
"customerOrderNos": [
"CUST-ORDER-001",
"CUST-ORDER-002"
]
}

Field Descriptions​

FieldTypeRequiredDescription
customerOrderNosarrayYesList of customer order numbers to cancel (batch support)

Success Response​

{
"code": "0",
"msg": "success"
}

RCS -> WES​

Container TASK Management​

apiType: CONTAINER_ARRIVE​

Notify the system that a container has arrived at a workstation to trigger subsequent operations.

Request Body Schema:

[
{
"workLocationCode": "WS-001-A",
"workLocationType": "STATION",
"workStationId": 1001,
"warehouseAreaId": 2001,
"containerDetails": [
{
"containerCode": "C-2023-001",
"face": "A",
"robotCode": "RBT-001",
"robotType": "KIVA",
"level": 2,
"bay": 3,
"locationCode": "LOC-A-01",
"forwardFace": "FRONT",
"groupCode": "GRP-001",
"containerAttributes": {
"weight": "10.5",
"fragile": true,
"priority": "high"
},
"taskCodes": ["TASK-001", "TASK-002"]
}
]
}
]

Field Descriptions​

Main Fields​

FieldTypeRequiredDescription
workLocationCodestringYesWork location code (e.g., workstation, picking location)
workLocationTypeenumNoWork location type (see enumeration)
workStationIdlongNoWorkstation ID
warehouseAreaIdlongNoWarehouse area ID
containerDetailsarrayYesContainer details list

Container Detail Fields​

FieldTypeRequiredDescription
containerCodestringYesContainer code (e.g., tote, pallet)
facestringNoContainer face (for KIVA rack faces like A/B/C/D)
robotCodestringNoRobot code (e.g., AGV ID)
robotTypestringNoRobot type (e.g., KIVA, AGV, AMR)
levelintegerNoLevel of container in rack
bayintegerNoBay of container in rack
locationCodestringYesCurrent location code of container (location, workstation)
forwardFacestringNoForward face of container (A/B for tote orientation)
groupCodestringYesContainer group code (e.g., wave, task group)
containerAttributesobjectNoContainer extended attributes (weight, fragile, priority, etc.)
taskCodesarrayNoList of task codes associated with this container

Work Location Type Enumeration (WorkLocationTypeEnum)​

ValueDescription
BUFFER_SHELVINGBuffer shelving workstation
ROBOTRobot
CONVEYORConveyor

Success Response:

{
"code": "0",
"msg": "success"
}

apiType: CONTAINER_TASK_STATUS_UPDATE​

Update container task execution status for external systems like WCS/RCS to report task progress.

Request Body Schema:

[
{
"taskCode": "TASK-2023-001",
"taskStatus": "EXECUTING",
"robotCode": "RBT-AGV-01",
"containerCode": "C-2023-001",
"workStationId": 1001,
"locationCode": "LOC-A-01"
}
]

Field Descriptions​

FieldTypeRequiredDescription
taskCodestringYesTask code, globally unique
taskStatusContainerTaskStatusEnumYesCurrent task status, see table below
robotCodestringNoRobot code executing the task (AGV/KIVA ID)
containerCodestringNoContainer code bound to the task (tote, pallet)
workStationIdlongNoTask workstation or target workstation ID
locationCodestringNoTask or target location code (location, picking station, dock, etc.)

Task Status Enumeration (ContainerTaskStatusEnum)​

ValueDescription
NEWNew
PROCESSINGIn progress
WCS_SUCCEEDEDCompleted
WCS_FAILEDFailed

Success Response:

{
"code": "0",
"msg": "success"
}

⚠️ Error Handling​

Common Error Codes​

CodeStatusDescription
200SuccessRequest processed successfully
400Bad RequestInvalid parameters or request body
401UnauthorizedMissing or invalid authentication
403ForbiddenInsufficient permissions
404Not FoundResource not found
429Too Many RequestsRate limit exceeded
500Internal Server ErrorServer-side error

Error Response Example​

{
"code": "400",
"msg": "Invalid request parameters"
}

πŸ“ˆ Rate Limiting​

The API implements rate limiting per token:

  • 1000 requests per minute per IP
  • 500000 requests per hour per token

When rate limit is exceeded, the API returns:

{
"success": false,
"code": "429",
"message": "Rate limit exceeded. Please try again in 60 seconds",
"requestId": "req-123456",
"timestamp": "2024-02-11T10:30:00Z"
}