轻易云集成平台对外部开放集成相关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网关】【应用授权】可以开始新增应用授权
    1653278416(1).png

二、填写应用授权信息后保存,即可获得 app_key app_secret
1653278499(1).png

轻易云开放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 请求示例

  1. OkHttpClient client = new OkHttpClient().newBuilder()
  2. .build();
  3. MediaType mediaType = MediaType.parse("application/json");
  4. RequestBody body = RequestBody.create(mediaType, "{\r\n \"app_key\": \"012345678911\",\r\n \"app_secret\": \"11111111115555555555\"\r\n}");
  5. Request request = new Request.Builder()
  6. .url("http://www.ddhc.com/v2/oauth")
  7. .method("POST", body)
  8. .addHeader("content-type", "application/json")
  9. .build();
  10. 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 | ?? | |

在集成平台可以定义请求参数是否必填。只有定义了必填项接口才会去检验检查。 如果不在集成平台定义该字段,接口仍然可以写入此数据

企业微信截图_16532794109034.png

响应参数

响应参数 数据类型 参数说明
success bool 公共响应参,接口是否调用成功
code int 公共响应参,接口是否调用成功,成功则为0
message string 公共响应参,接口提示信息
content object/array 公共响应参,接口返回的具体内容

java-OkHttp 请求示例

  1. OkHttpClient client = new OkHttpClient().newBuilder()
  2. .build();
  3. MediaType mediaType = MediaType.parse("application/json");
  4. 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}");
  5. Request request = new Request.Builder()
  6. .url("http://www.ddhc.com/v2/open-api/business/0166a725-2b9a-30e4-91c5-3529176302c4/store?access_token=PSJthMmsVmc62d4c8528567be9b92435f0266cde05")
  7. .method("POST", body)
  8. .addHeader("content-type", "application/json")
  9. .build();
  10. 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 查询条件

响应示例

  1. {
  2. "success": true,
  3. "code": 0,
  4. "message": "success",
  5. "content": {
  6. "links": [
  7. {
  8. "source": {
  9. "dispatch": {
  10. "trigger_begin": 0,
  11. "adapter_class": "\\Adapter\\XXXX\\XXXXAdapter",
  12. "trigger_end": 1646892733.15547
  13. },
  14. "job": {
  15. "created_at": 1646892733.15547,
  16. "handle_at": 1646892733.430782,
  17. "response_at": 1646892733.425977,
  18. "protocol": "http",
  19. "SDK": "\\Adapter\\XXXXX\\SDK\\XXXXSDK",
  20. "api": "/api/uri/test",
  21. "exec": {
  22. "url": "",
  23. "method": "GET",
  24. "header": {
  25. "content-type": "application/json"
  26. },
  27. "content": {
  28. "id": 100000000
  29. }
  30. }
  31. },
  32. "response": {
  33. "code": "200",
  34. "message": "操作成功",
  35. "data": {},
  36. "url": "https://api.xxxxxxxxxxxxxxxxxxx"
  37. }
  38. },
  39. "target": {
  40. "dispatch": {
  41. "trigger_begin": 1646892733.612526,
  42. "adapter_class": "\\Adapter\\XXXX\\XXXXAdapter",
  43. "trigger_end": 1646892733.656357
  44. },
  45. "job": {
  46. "created_at": 1646892733.656357,
  47. "handle_at": 1646892733.93131,
  48. "response_at": 1646892733.926631,
  49. "protocol": "http",
  50. "SDK": "\\Adapter\\XXXXX\\SDK\\XXXXSDK",
  51. "api": "API.TEST",
  52. "exec": {
  53. "url": "http://xxxxx.com/xxxx/xxxx",
  54. "method": "POST",
  55. "header": [
  56. "Content-Type: application/x-www-form-urlencoded",
  57. "Content-length: 546"
  58. ],
  59. "content": {
  60. "goods_list":"",
  61. "sid": "xxxxx",
  62. "app_key": "xxxxxxxx",
  63. "target_app_key": "xxxxxxx",
  64. "timestamp": "2022-03-10 16:09:28",
  65. "v": "2.0",
  66. "format": "json",
  67. "sign_method": "md5",
  68. "method": "xxxxxxxxxxxxx",
  69. "sign": "EC21D8E1285AF91992883C8229BC5B1E"
  70. }
  71. }
  72. },
  73. "response": {
  74. "flag": "failure",
  75. "code": 40,
  76. "message": "Missing required arguments:goods_list.goods_no",
  77. "request_id": "xxxxxxxxxxx"
  78. }
  79. }
  80. }
  81. ],
  82. "total": 1,
  83. "condition": []
  84. }
  85. }

根据主键查询单个数据

激活源平台调度者