跳到主要内容

Open Warehouse Execution Management System API 文档

版本:v1.0
最后更新:2025-08-01

本文档描述了客户端系统如何主动调用 WES,以发出入库、出库等关键任务,以及容器任务回调的处理方式。

🔐 认证

所有 API 请求必须在请求头中包含 API 密钥:

X-API-KEY: <your_api_key>

认证错误

状态码描述解决方法
401无效的 API 密钥获取正确的 API 密钥

🌐 基本信息

基础 URLhttps://${url}:${port}/api-platform/api
接口地址POST /execute
Content-Typeapplication/json

📝 请求格式

通用请求头

Content-Type: application/json
X-Tenant-Id: <your_tenant_id> // SaaS 服务必填
X-API-KEY: <your_api_key>
X-Request-ID: <unique_request_id>

通用参数

参数名类型是否必填描述
apiTypeStringAPI 类型标识符
bodyJSON请求体(根据 apiType 变化)

上游调用 API(WMS/ERP/MES → WES)

SKU 管理

apiType: SKU_CREATE

创建新的 SKU(库存单位)

请求体结构:

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

字段说明

字段名类型是否必填描述
skuCodestringSKU 编码,最大长度 64
warehouseCodestring仓库编码,最大长度 64
ownerCodestring货主编码,最大长度 64
skuNamestringSKU 名称,最大长度 128
stylestringSKU 款式
colorstringSKU 颜色
sizestringSKU 尺码
brandstringSKU 品牌
weightobject重量信息
volumeDTOobject体积信息
skuAttributeobjectSKU 属性
skuConfigobjectSKU 配置
skuPackageobjectSKU 包装
skuBarcodeobjectSKU 条码

体积信息(VolumeDTO)

字段名类型是否必填描述
volumelong体积,单位:立方毫米,≥0
heightlong高度,单位:毫米,≥0
widthlong宽度,单位:毫米,≥0
lengthlong长度,单位:毫米,≥0

SKU 属性(SkuAttributeDTO)

字段名类型是否必填描述
imageUrlstringSKU 图片地址
unitstringSKU 单位
skuFirstCategorystring一级分类
skuSecondCategorystring二级分类
skuThirdCategorystring三级分类
skuAttributeCategorystring属性分类
skuAttributeSubCategorystring属性子分类

SKU 包装(SkuPackageDTO)

字段名类型是否必填描述
skuPackageDetailsarray包装明细列表
包装明细
字段名类型是否必填描述
levelinteger包装层级
packageCodestring包装编码
unitstring包装单位
enableSplitboolean是否允许拆分
heightlong包装高度(毫米)≥0
widthlong包装宽度(毫米)≥0
lengthlong包装长度(毫米)≥0
weightinteger包装重量(毫克)≥0

SKU 条码(BarcodeDTO)

字段名类型是否必填描述
barcodesarray条码列表(需唯一)

成功响应:

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

入库管理

apiType: ORDER_INBOUND_CREATE

请求体结构:

[
{
"customerOrderNo": "CUST-ORDER-001",
"lpnCode": "LPN123456",
"warehouseCode": "WH01",
"customerOrderType": "PURCHASE|RETURN|TRANSFER",
"storageType": "STORAGE|OVERSTOCK|IN_TRANSIT",
"sender": "供应商 A",
"carrier": "顺丰速运",
"shippingMethod": "陆运",
"trackingNumber": "SF123456789",
"estimatedArrivalDate": 1672531200000,
"remark": "易碎品,轻拿轻放",
"extendFields": {
"customField1": "value1",
"customField2": 100
},
"details": [
{
"ownerCode": "OWNER01",
"boxNo": "BOX001",
"qtyRestocked": 100,
"skuCode": "SKU001",
"skuName": "产品 A",
"style": "2023 新款",
"color": "红色",
"size": "XL",
"brand": "品牌 A",
"batchAttributes": {
"batchNo": "BATCH2023",
"productionDate": "2023-01-01"
},
"extendFields": {
"qualityGrade": "A"
}
}
]
}
]

字段说明

主订单字段

字段名类型是否必填描述
customerOrderNostring客户订单号,最大长度 64
lpnCodestringLPN 编码,最大长度 64
warehouseCodestring仓库编码,最大长度 64
customerOrderTypestring入库订单计划类型
storageTypestring存储类型(STORAGE/OVERSTOCK/IN_TRANSIT)
senderstring发货方,最大长度 128
carrierstring物流公司,最大长度 128
shippingMethodstring运输方式,最大长度 128
trackingNumberstring物流单号,最大长度 128
estimatedArrivalDatelong预计到达时间(时间戳)
remarkstring备注,最大长度 255
extendFieldsobject扩展字段(键值对格式)
detailsarray入库明细列表

明细字段

字段名类型是否必填描述
ownerCodestring货主编码,最大长度 64
boxNostring箱号,最大长度 64
qtyRestockedinteger入库数量(≥1)
skuCodestringSKU 编码,最大长度 64
skuNamestring商品名称
stylestring商品款式
colorstring商品颜色
sizestring商品尺码
brandstring商品品牌
batchAttributesobject批次属性(键值对)
extendFieldsobject扩展属性(键值对)

存储类型枚举

描述
STORAGE存储
OVERSTOCK越库
IN_TRANSIT在途

成功响应:

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

apiType: ORDER_INBOUND_CANCEL

请求体结构:

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

字段说明

字段名类型是否必填描述
identifyNosarray要取消的入库订单号列表(支持批量)
warehouseCodestring仓库编码(用于权限校验)

成功响应

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

出库管理

apiType: ORDER_OUTBOUND_CREATE

创建一个或多个出库计划订单

请求体结构:

[
{
"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": "轻拿轻放"
},
"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": "易碎"
}
}
]
}
]

字段说明

主订单字段

字段名类型是否必填描述
warehouseCodestring仓库编码,最大长度 64
customerWaveNostring外部波次号
customerOrderNostring客户订单号,最大长度 64
customerOrderTypestring出库订单类型
carrierCodestring承运商编码
waybillNostring运单号
origPlatformCodestring原始平台编码
expiredTimelong截止时间(时间戳)
priorityinteger优先级,值越高优先级越高
shortOutboundboolean是否允许缺量出库,默认 false
shortWaitingboolean是否允许等待补货,默认 false
orderNostring订单号,按系统规则生成
destinationsarray容器目的地列表
extendFieldsobject扩展字段(键值对格式)
detailsarray出库计划订单明细列表

明细字段

字段名类型是否必填描述
ownerCodestring货主编码,最大长度 64
skuCodestringSKU 编码,最大长度 64
skuNamestringSKU 名称,最大长度 128
batchAttributesobject批次属性(键值对)
qtyRequiredinteger需求出库数量(≥1)
qtyAllocatedinteger预分配批次库存数量
qtyActualinteger实际出库数量
extendFieldsobject扩展字段(键值对)

成功响应:

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

apiType: ORDER_OUTBOUND_CANCEL

根据客户订单号取消出库计划订单

请求体结构:

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

字段说明

字段名类型是否必填描述
customerOrderNosarray要取消的客户订单号列表(支持批量)

成功响应

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

RCS -> WES

容器任务管理

apiType: CONTAINER_ARRIVE

通知系统容器已到达工作站,以触发后续操作。

请求体结构:

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

字段说明

主字段

字段名类型是否必填描述
workLocationCodestring工作位置编码(如工作站、拣货位)
workLocationTypeenum工作位置类型(见枚举)
workStationIdlong工作站 ID
warehouseAreaIdlong库区 ID
containerDetailsarray容器详情列表

容器详情字段

字段名类型是否必填描述
containerCodestring容器编码(如周转箱、托盘)
facestring容器面(如 KIVA 货架面 A/B/C/D)
robotCodestring机器人编码(如 AGV 编号)
robotTypestring机器人类型(如 KIVA、AGV、AMR)
levelinteger容器在货架中的层
bayinteger容器在货架中的列
locationCodestring容器当前位置编码(库位、工作站)
forwardFacestring容器朝向(A/B 表示周转箱朝向)
groupCodestring容器组编码(如波次、任务组)
containerAttributesobject容器扩展属性(重量、易碎、优先级等)
taskCodesarray与此容器关联的任务编码列表

工作位置类型枚举(WorkLocationTypeEnum)

描述
BUFFER_SHELVING缓冲上架工作站
ROBOT机器人
CONVEYOR输送线

成功响应:

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

apiType: CONTAINER_TASK_STATUS_UPDATE

更新容器任务执行状态,供 WCS/RCS 等外部系统上报任务进度。

请求体结构:

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

字段说明

字段名类型是否必填描述
taskCodestring任务编码,全局唯一
taskStatusContainerTaskStatusEnum当前任务状态,见下表
robotCodestring执行任务的机器人编码(AGV/KIVA 编号)
containerCodestring与任务绑定的容器编码(周转箱、托盘)
workStationIdlong任务工作站或目标工作站 ID
locationCodestring任务或目标位置编码(库位、拣货位、月台等)

任务状态枚举(ContainerTaskStatusEnum)

描述
NEW新建
PROCESSING进行中
WCS_SUCCEEDED已完成
WCS_FAILED失败

成功响应:

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

⚠️ 错误处理

常见错误码

状态码描述说明
200成功请求处理成功
400请求错误参数无效或请求体错误
401未授权认证失败或缺失
403禁止访问权限不足
404未找到资源不存在
429请求过多超过频率限制
500服务器错误服务端异常

错误响应示例

{
"code": "400",
"msg": "请求参数无效"
}

📈 频率限制

API 对每个 token 实施频率限制:

  • 每个 IP 每分钟最多 1000 次请求
  • 每个 token 每小时最多 500000 次请求

当超出频率限制时,API 返回:

{
"success": false,
"code": "429",
"message": "频率超限,请 60 秒后重试",
"requestId": "req-123456",
"timestamp": "2024-02-11T10:30:00Z"
}