轻易云集成平台对外部开放集成相关API接口 ,用户可以自定义应用授权,设置授权范围与白名单。
接口规范
- REST风格的API,使用HTTPS协议发送POST、GET请求调用接口。
- HTTPS请求头类型为 content-type: application/json
- 报文为UTF8编码,支持半角、中文、英文、数字、基本标点符号
请保持1分钟内60次的频率。如果接口响应请求太频繁,则5分钟后重新调用
接口文档说明
接口说明
用于接口描述、接口级别注意事项、敏感数据,以及建议调用方式等。
- 调用场景
用于说明接口适用对接的系统。
- 请求参数说明
描述了请求报文所有输入参数的含义及注意事项。
- 请求地址(url)
接口文档该部分描述了每个接口的测试和正式环境请求地址,注:不同接口变更“接口服务名”即可。
https://pro-service.xxxxx.xxxx
- 公共请求参数
每个接口都必须输入的参数。接口文档该部分阐述了请求报文中公共请求参数的含义及注意事项,参数详见下述表格。
- 业务请求参数
可根据业务不同,选择输入的参数。接口文档该部分阐述了请求报文中业务请求参数的含义及注意事项。
- 响应参数
接口文档该部分描述了所有响应参数的含义及注意事项
- 公共响应参数
接口文档该部分描述了,请求的当前接口,不论请求失败还是成功,一定会返回的参数,文档该部分描述了公共响应参数的含义。
- 业务响应参数
根据请求的参数输入值不同,做不同响应的参数,文档该部分描述了业务响应参数的含义
- 响应示例
调用接口后返回的json格式数据 ,需要使用json解析函数进行解析,使用Unicode转换具体的字段含义解释,并且给出了正常响应和异常响应两种响应示例。
目前已开发功能
- 自定义应用授权
- access_token认证
- 写入(更新)集成方案数据
- 查询集成方案数据
- 激活源调度者
-
规划中功能
IP白名单
- 按方案设置权限
- 请求日志记录
- 访问速率控制
生成应用授权
一、进入菜单【API网关】【应用授权】可以开始新增应用授权
二、填写应用授权信息后保存,即可获得 app_key app_secret
轻易云开放API
access_token 认证
- 请求地址:http://{{host}}/v2/oauth
- 请求方式:POST
- Headers:content-type:application/json
- Body:raw json
- 需要访问令牌:否
请求参数
| 请求参数 | 数据类型 | 是否必要 | 参数说明 | | —- | —- | —- | —- | | app_key | string | 是 | 应用授权的 12位 字符串 | | app_secret | string | 是 | 应用授权密钥的 20位 字符串 |
响应参数
响应参数 | 数据类型 | 参数说明 |
---|---|---|
success | bool | 公共响应参,接口是否调用成功 |
code | int | 公共响应参,接口是否调用成功,成功则为0 |
message | string | 公共响应参,接口提示信息 |
content | object/array | 公共响应参,接口返回的具体内容 |
content.access_token | string | 访问令牌 |
content.expires_in | int | 令牌有效期(单位秒) |
java-OkHttp 请求示例
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"app_key\": \"012345678911\",\r\n \"app_secret\": \"11111111115555555555\"\r\n}");
Request request = new Request.Builder()
.url("http://www.ddhc.com/v2/oauth")
.method("POST", body)
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
向集成平台写入数据
- 请求地址:http://{{host}}/v2/open-api/business/**{方案id}**/store?access_token=**{access_token}**
- 请求方式:POST
- Headers:content-type:application/json
- Body:raw json
- 需要访问令牌:是
请求参数
| 请求参数 | 数据类型 | 是否必要 | 参数说明 | | —- | —- | —- | —- | | content | array | 是 | 向集成平台写入的数据内容,必须是数组。可以在数组内装载多个数据。 | | content[].field_1 | string | ?? | 具体写入的内容,根据集成平台的源平台请求参数自定义。 | | content[].field_2 | int | ?? | | | content[].field_3 | date | ?? | |
在集成平台可以定义请求参数是否必填。只有定义了必填项接口才会去检验检查。 如果不在集成平台定义该字段,接口仍然可以写入此数据
响应参数
响应参数 | 数据类型 | 参数说明 |
---|---|---|
success | bool | 公共响应参,接口是否调用成功 |
code | int | 公共响应参,接口是否调用成功,成功则为0 |
message | string | 公共响应参,接口提示信息 |
content | object/array | 公共响应参,接口返回的具体内容 |
java-OkHttp 请求示例
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"content\": [\r\n {\r\n \"FStockId\": \"123123\",\r\n \"FNumber\": \"123123123\",\r\n \"FName\": \"123123\",\r\n \"arr\": [\r\n {\r\n \"gag\": \"233\"\r\n }\r\n ],\r\n \"obj\": {\r\n \"fsadfsdf\": \"dasd\"\r\n }\r\n }\r\n ]\r\n}");
Request request = new Request.Builder()
.url("http://www.ddhc.com/v2/open-api/business/0166a725-2b9a-30e4-91c5-3529176302c4/store?access_token=PSJthMmsVmc62d4c8528567be9b92435f0266cde05")
.method("POST", body)
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
从集成平台查询数据(列表)
- 请求地址:http://{{host}}/v2/open-api/business/**{方案id}**/query?access_token=**{access_token}**
- 请求方式:POST
- Headers:content-type:application/json
- Body:raw json
- 需要访问令牌:是
请求参数
| 请求参数 | 数据类型 | 是否必要 | 参数说明 | | —- | —- | —- | —- | | page | int | 是 | 从1开始,每页10行数据 | | pageSize | int | 是 | 1-100 | | begin_at | unix_timestamp | 是 | 集成平台的创建时间戳开始(秒) | | end_at | unix_timestamp | 是 | 集成平台的创建时间戳结束(秒) | | CONTENT_field1 | string | ?? | 根据mongodb数据内容自定义过滤条件
如果传入的是字符串,则会在mongodb进行模糊搜索 | | CONTENT_field2 | object | ?? | 可以参照mongodb查询语法自定义过滤条件 | | CONTENT_field3 | object | ?? | { $gte : 10000 } | | | | | 参考
https://www.runoob.com/mongodb/mongodb-query.html |
响应参数
响应参数 | 数据类型 | 参数说明 |
---|---|---|
success | bool | 公共响应参,接口是否调用成功 |
code | int | 公共响应参,接口是否调用成功,成功则为0 |
message | string | 公共响应参,接口提示信息 |
content | array | 公共响应参,接口返回的具体内容 |
content[].field | string | 方案中返回的字段 |
从集成平台查询数据(链路)
- 请求地址:http://{{host}}/v2/open-api/business/**{方案id}**/data-link?access_token=**{access_token}**
- 请求方式:POST
- Headers:content-type:application/json
- Body:raw json
- 需要访问令牌:是
请求参数
| 请求参数 | 数据类型 | 是否必要 | 参数说明 | | —- | —- | —- | —- | | page | int | 是 | 从1开始,每页10行数据 | | pageSize | int | 是 | 1-100 | | begin_at | unix_timestamp | 是 | 集成平台的创建时间戳开始(秒) | | end_at | unix_timestamp | 是 | 集成平台的创建时间戳结束(秒) | | CONTENT_field1 | string | 否 | 根据mongodb数据内容自定义过滤条件
如果传入的是字符串,则会在mongodb进行模糊搜索 | | CONTENT_field2 | object | 否 | 可以参照mongodb查询语法自定义过滤条件 | | CONTENT_field3 | object | 否 | { $gte : 10000 } | | | | | 参考
https://www.runoob.com/mongodb/mongodb-query.html |
响应参数
响应参数 | 数据类型 | 参数说明 |
---|---|---|
success | bool | 公共响应参,接口是否调用成功 |
code | int | 公共响应参,接口是否调用成功,成功则为0 |
message | string | 公共响应参,接口提示信息 |
content | object | 公共响应参,接口返回的具体内容 |
content.links | array | 方案中返回的字段 |
content.links[].source | object | 源系统信息 |
content.links[].source.dispatch | object | 源系统-调度者信息 |
content.links[].source.job | object | 源系统-队列任务信息 |
content.links[].source.response | object | 源系统-队列任务响应信息 |
content.links[].target | object | 目标系统信息 |
content.links[].target.dispatch | object | 目标系统-调度者信息 |
content.links[].target.job | object | 目标系统-队列任务信息 |
content.links[].target.response | object | 目标系统-队列任务响应信息 |
content.total | int | 数据总行数 |
content.condition | object | mongodb 查询条件 |
响应示例
{
"success": true,
"code": 0,
"message": "success",
"content": {
"links": [
{
"source": {
"dispatch": {
"trigger_begin": 0,
"adapter_class": "\\Adapter\\XXXX\\XXXXAdapter",
"trigger_end": 1646892733.15547
},
"job": {
"created_at": 1646892733.15547,
"handle_at": 1646892733.430782,
"response_at": 1646892733.425977,
"protocol": "http",
"SDK": "\\Adapter\\XXXXX\\SDK\\XXXXSDK",
"api": "/api/uri/test",
"exec": {
"url": "",
"method": "GET",
"header": {
"content-type": "application/json"
},
"content": {
"id": 100000000
}
}
},
"response": {
"code": "200",
"message": "操作成功",
"data": {},
"url": "https://api.xxxxxxxxxxxxxxxxxxx"
}
},
"target": {
"dispatch": {
"trigger_begin": 1646892733.612526,
"adapter_class": "\\Adapter\\XXXX\\XXXXAdapter",
"trigger_end": 1646892733.656357
},
"job": {
"created_at": 1646892733.656357,
"handle_at": 1646892733.93131,
"response_at": 1646892733.926631,
"protocol": "http",
"SDK": "\\Adapter\\XXXXX\\SDK\\XXXXSDK",
"api": "API.TEST",
"exec": {
"url": "http://xxxxx.com/xxxx/xxxx",
"method": "POST",
"header": [
"Content-Type: application/x-www-form-urlencoded",
"Content-length: 546"
],
"content": {
"goods_list":"",
"sid": "xxxxx",
"app_key": "xxxxxxxx",
"target_app_key": "xxxxxxx",
"timestamp": "2022-03-10 16:09:28",
"v": "2.0",
"format": "json",
"sign_method": "md5",
"method": "xxxxxxxxxxxxx",
"sign": "EC21D8E1285AF91992883C8229BC5B1E"
}
}
},
"response": {
"flag": "failure",
"code": 40,
"message": "Missing required arguments:goods_list.goods_no",
"request_id": "xxxxxxxxxxx"
}
}
}
],
"total": 1,
"condition": []
}
}
根据主键查询单个数据
- 请求地址:http://{{host}}/v2/open-api/business/**{方案id}**/find-one/**{数据主键}**?access_token=**{access_token}**
- 请求方式:GET
- Headers:content-type:application/json
- Body:raw json
- 需要访问令牌:是
请求参数
| 请求参数 | 数据类型 | 是否必要 | 参数说明 | | —- | —- | —- | —- | | 数据主键 | ?? | 是 | 在集成平台中定义的数据id主键 |
激活源平台调度者
- 请求地址:http://{{host}}/v2/open-api/business/**{方案id}**/dispatch-source?access_token=**{access_token}**
- 请求方式:GET
- Headers:content-type:application/json
- Body:raw json
-
激活目标平台调度者
请求地址:http://{{host}}/v2/open-api/business/**{方案id}**/dispatch-target?access_token=**{access_token}**
- 请求方式:GET
- Headers:content-type:application/json
- Body:raw json
- 需要访问令牌:是