通用数据同步 API 方案
用于 合作伙伴 向 Lenovo 同步数据的统一 API 方案,对接前请了解 API 接入流程
请求地址
公共请求参数
调用前,请先获取 Token
参数位置 | 参数名称 | 描述 | 备注 |
---|---|---|---|
Http Method | 遵循 REST API 规范 | 新增:POST、修改:PUT、删除:DELETE、全量覆盖:PATCH(清除历史数据,然后写入当前数据) | |
- | - | - | - |
Header | Authorization | Bearer + 空格 + Token | Bearer aa**************** |
Header | Content-Type | 数据的格式 json/xml | application/json (default) application/xml |
Header | Accept | 接受的格式 json/xml | application/json (default) application/xml |
- | - | - | - |
Url Path | data_category | 数据分类 | 参考具体数据接口 URL |
Url Path | biz_key | 业务关键字 | 参考具体数据接口 URL |
公共请求参数
位置 | 名称 | 必填 | 类型 | 长度 | 描述 |
---|---|---|---|---|---|
Body | appName | String | 10 | 合作伙伴简称,非必须 | |
Body | batch_id | Y | String | 16 | 批次 ID,合作伙伴生成,保证批次唯一性 |
Body | batch_size | Y | Number | --- | 批次内,总数据量 |
Body | seq_id | Y | String | 批次内,每次序号 | |
Body | seq_size | Y | Number | --- | 每次,要推送的数据量 500 >= size >= 1 |
- 举例说明 batch_id是本次发送数据的一个标识。batch_size是总共要发送的数据量。 为了提升单个请求性能,所以要求每个请求发送的数据量为500,超过500就需要拆分为多个请求。 如果本次发送数据总量1400,则拆分为三个请求,如下:
请求 | batch_id | batch_size | seq_id | seq_size |
---|---|---|---|---|
请求1 | 2024082201 | 1400 | 1 | 500 |
请求2 | 2024082201 | 1400 | 2 | 500 |
请求3 | 2024082201 | 1400 | 3 | 400 |
公共响应参数
位置 | 名称 | 必填 | 类型 | 格式 | 描述 | 示例 |
---|---|---|---|---|---|---|
Body | code | Y | String | --- | 状态码 | "0"代表成功,其他失败可参考返回码 |
Body | msg | N | String | --- | 提示消息 | 非"0"时,会提示错误消息 |
Body | result | N | object/array | --- | 数据体 |
请求示例
https://api-cn-t.lenovo.com/uat/v1.0/supply_chain/scc_data_pipeline/push/abcd/DemoData
Header Authorization = Bearer aa*******019d
json
json
{
"batch_id": "202206230001",
"batch_size": "2",
"seq_id": "1",
"seq_size": "2",
"data": [
{
"LENOVO_PN": "pn_1",
"PLANT": "1111",
"QTY": "22"
},
{
"LENOVO_PN": "pn_2",
"PLANT": "1111",
"QTY": "33"
}
]
}
xml
xml
<?xml version="1.0" encoding="UTF-8" ?>
<Req>
<batch_id>202206230001</batch_id>
<batch_size>2</batch_size>
<seq_id>1</seq_id>
<seq_size>2</seq_size>
<data>
<LENOVO_PN>pn_1</LENOVO_PN>
<PLANT>xxxx</PLANT>
<QTY>1</QTY>
</data>
<data>
<LENOVO_PN>pn_2</LENOVO_PN>
<PLANT>xxxx</PLANT>
<QTY>1</QTY>
</data>
</Req>
- 响应示例
json
json
{
"code": "0",
"msg": "request success"
}
xml
xml
<Resp>
<code>0</code>
<msg>request success!</msg>
<result>request success!</result>
</Resp>
- 异常示例
json
json
{
"code": "E00V00",
"msg": "data verification failed!",
"result": [{
"row": {
"odm": "ABCD",
...
},
"verify": [{
"type": "value length exceed",
"fields": "version"
}]
}]
}
xml
xml
<Resp>
<code>E00V00</code>
<msg>data verification failed!</msg>
<result>
<verify>
<type>value length exceed</type>
<fields>version</fields>
</verify>
<row>
<odm>ABCD</odm>
...
</row>
</result>
<result>
<verify>
<type>value length exceed</type>
<fields>version</fields>
</verify>
<row>
<odm>ABCD</odm>
...
</row>
</result>
</Resp>
通用错误码说明
参数位置 | Value | 描述 |
---|---|---|
httpcode | 200 | 正常返回结果 |
httpcode | 401 | Token 错误/签名错误 |
httpcode | 404 | 访问的路径不存在 |
httpcode | 500 | 服务器错误 |
body.code | "0" | 成功 |
body.code | "-1" | 系统错误 |
body.code | "E00A00" | 该序列数据已经成功消费 |
body.code | "E00P00" | 重试到达上限 |
body.code | "E00V00" | 数据包验证失败,result 中会体现详细内容 |
body.code | "E00W00" | 写入异常,违反唯一约束 |
body.code | "E00M00" | 多个异常情况,result 中包含多个code和message |