十四、开放接口-伙伴集成
0. 开发前必读
基本概念
- appId: 第三方应用 id,需要跟平台申请,可以操作一个或多个工作区的数据
- appSecret: 第三方应用的密钥
- accessToken: 请求令牌,有效期一天,过期前需要使用 refreshToken 刷新
- refreshToken: 用于刷新 accessToken, 有效期为一个月,过期前需要通过 appId 和 appSecret 重新获取
- grantType: 请求令牌类型(目前只支持 access token 类型的鉴权)
- accountId: 帐号 id,系统内唯一的身份,跟工作区无关 (使用某一个用户身份处理业务时必传)
- wsn: 工作区编码 (调用工作区内相关接口时必传)
- 帐号: 整个 SaaS 系统内的唯一身份标识
- 工作区: 用于存储某个租户的数据,工作区之间数据是隔离开的,互相访问不了
- 用户: 一个帐号可以加入多个工作区,加入工作区之后就成为了工作区内的用户,具体业务是以用户身份开展的
特别说明
基础路径:https://api.yidayun.com/openApi/
通用的请求 body 结构说明:
{
// 请求参数
"params": {},
// 当前环境上下文
"context": {
"tz": "时区,默认 GMT+8",
"lang": "语言,默认 zh-CN"
}
}
- 统一的返回结果说明:
{
// true 成功、false 失败
"success": true,
// 返回数据,可以是对象、数组、数字、字符串、布尔值等
"data": {
"total": 100,
"list": []
},
// 错误码
"errorCode": 1000,
// 错误消息(显示给用户看的)
"errorMessage": "xxxxx",
// 错误信息展示方式 0 静默,不显示信息、1 警告、2 报错、4 提示、9 跳转 exception 页面
"showType": 1,
// 问题追踪的 id,用于问题查找
"traceId": "xxxxx",
}
- 其他说明:
- 系统内的所有 id 长度较长,考虑到前端 js 精度问题,参数值使用字符串来传输,包括提交和返回
调用流程
- 1、通过平台颁发的 appId 和 appSecret 换取 accessToken\refreshToken,接下来所有请求都要带 accessToken
- 2、使用手机号创建用户帐号,会返回 account 信息,需要第三方应用自行维护本地帐号和 accountId 的关系
- 3、使用 accountId 创建工作区,会返回工作区信息,并自动将帐号添加到当前工作区
- 4、操作某个工作区的业务数据时,wsn(工作区编码)必传,accountId 根据特定接口需要来传输,表明是谁做的本次数据处理
1.身份验证
1.1 获取 accessToken
详细描述:获取 access_token 令牌接口
请求地址:https://api.yidayun.com/oauth/outside/accessToken?appId=param1&appSecret=param2&state=param3
参数说明:
参数 参数名 备注 appId 第三方获取的appId 必填 appSecret 第三方获取的appSecret 必填 state 返回的参数 非必填 请求方式:GET
返回结果
{
"success": true,
"data": {
"appId": "25cb3095e03f4d14adea4c347d793983",
// 用作接口访问的 accessToken
"accessToken": "6fae7818d50f4543ac8bb99be697db56",
// 用作刷新的 refreshToken
"refreshToken": "308688922656495eb47e1c19d56af961",
// 过期时间 时间戳 超过这个时间将过期需要调用刷新接口或重新获取
"expire": 1686125876003,
// 令牌查询范围 scope_all
"scope": "scope_all",
// 令牌访问方式
"grantType": "client_credentials",
// 返回输入的数值
"state": "xxxx"
},
"errorMessage": "",
"errorCode": 0,
"showType": 0,
"traceId": null
}
1.2 刷新 accessToken
详细描述:刷新 access_token 令牌接口
请求地址:https://api.yidayun.com/oauth/outside/refreshToken?accessToken=param1&refreshToken=param2&state=param3
参数说明:
参数 参数名 备注 accessToken 接口访问的令牌 必填 refreshToken 接口刷新的令牌 必填 state 返回的参数 非必填 请求方式:GET
返回结果
{
"success": true,
"data": {
"appId": "25cb3095e03f4d14adea4c347d793983",
// 用作接口访问的 accessToken
"accessToken": "6fae7818d50f4543ac8bb99be697db56",
// 用作刷新的 refreshToken
"refreshToken": "308688922656495eb47e1c19d56af961",
// 过期时间 时间戳 超过这个时间将过期需要调用刷新接口或重新获取
"expire": 1686125876003,
// 令牌查询范围 scope_all
"scope": "scope_all",
// 令牌访问方式
"grantType": "client_credentials",
// 返回输入的数值
"state": "aa"
},
"errorMessage": "",
"errorCode": 0,
"showType": 0,
"traceId": null
}
2. 账号管理
2.1 创建账号
- 详细描述:通用方法,创建易搭云账号
- 请求地址:/account/createAccount
- 请求方式:POST
- Header:
accessToken: 令牌
- Body:
{
"params": {
// 注册电话或邮箱
"account": "",
// 注册名称
"name": "",
// 密码
"password": ""
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 唯一标识,主键
"id": "",
// 名称
"name": "",
// 手机号
"phone":"",
// 邮箱
"email":""
}
}
2.2 获取员工列表
- 详细描述:通用方法,获取员工列表
- 请求地址:/account/getUserList
- 请求方式:POST
- Header:
accessToken: 令牌
userId 工作区编码
externalId
- Body:
无入参
- 返回结果:
{
"success": true,
"data":{
// 列表总数
"size": 1 ,
// 工作区 number
"workspaceNumber":"",
// 用户列表
"users": [
{
// 唯一标识 用户 id
"id":"",
// 账户 id
"accountId":"",
// 名称
"name":"",
// 用户 number
"number":"",
// 电话
"phone":"",
// 邮箱
"email":"",
// 部门名称
"deptName":[
""
],
// 部门编码
"deptNumber":[
""
],
// 员工状态名称
"userStateName":"",
// 员工状态
"userStateNumber":""
}
]
}
}
2.3 根据电话获取账号信息
- 详细描述:通用方法,根据电话获取账号信息
- 请求地址:/account/getAccountByPhone
- 请求方式:POST
- Header:
accessToken: 令牌
- Body:
{
"params": {
// 注册电话
"phone": ""
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 唯一标识,主键
"id": "",
// 名称
"name": "",
// 手机号
"phone":"",
// 邮箱
"email":""
}
}
3. 工作区管理
3.1创建工作区
- 详细描述:通用方法,创建工作区
- 请求地址:/workspace/createWorkspace
- 请求方式:POST
- Header:
accessToken: 令牌
accountId 账号id
- Body:
{
"params": {
// 工作区名称
"workspaceName": "",
// 员工编码
"userId" :""
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 工作区名称
"workspaceName": "",
// 工作区编码
"workspaceNumber":"",
}
}
3.2创建员工
- 详细描述:通用方法,创建员工
- 请求地址:/workspace/createUser
- 请求方式:POST
- Header:
accessToken: 令牌
wsn 工作区编码
- Body:
{
"params": {
// 注册电话或邮箱
"account": "",
// 注册名称
"name": "",
// 密码
"password": "",
// 员工编码
"userId": ""
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 员工编码
"number": "",
// 员工名称
"name": "",
// 员工电话
"phone": "",
// 员工邮箱
"email": ""
}
}
3.3获取工作区列表
- 详细描述:通用方法,获取工作区列表
- 请求地址:/workspace/getWorkspaceList
- 请求方式:POST
- Header:
accessToken: 令牌
- Body:
{
"params": {
// 注册电话或邮箱
"account": "",
// 密码
"password": ""
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":[
{
// 工作区名称
"workspaceName": "",
// 工作区编码
"workspaceNumber": ""
}
]
}
4. 元数据管理
4.1 获取对象结构
- 详细描述:获取某个业务功能的完整对象结构
- 请求地址:metadata/getObjectDetail
- 请求方式:POST
- Header:
// 令牌
accessToken: ""
// 工作区编码
wsn: ""
- Body:
{
"params": {
// 业务功能 key
"objectNumber": "",
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 应用唯一标识
"appNumber": "xxx",
// 功能名称
"name": "采购订单",
// 功能唯一标识
"number": "xxx",
// 功能类型,基础资料 objectBase、表单 objectBill、报表 objectReport 等
"objectType": "objectBase",
// 特殊配置,暂时用不到
"options": {},
// 功能下的模型字典
"modelMap": {
// key 为表头或者表体模型的唯一标识
// value 为模型的详细描述,参考 getModelDetail 接口返回值
"xxxx": {}
}
}
}
4.2 获取模型结构
- 详细描述:获取某个业务功能的某个模型的结构
- 请求地址:metadata/getModelDetail
- 请求方式:POST
- Header:
// 令牌
accessToken: ""
// 工作区编码
wsn: ""
- Body:
{
"params": {
// 模型唯一 key
"modelNumber": "",
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 功能唯一标识
"objectNumber": "xxx",
// 模型名称
"name": "采购订单",
// 模型唯一标识
"number": "xxx",
// 模型类型,表头 modelHeader、表体 modelEntry、子表体 modelSubEntry
"modelType": "modelHeader",
// 表体、子表体对应的父级模型的唯一标识
"parentModelNumber": "xxx",
// 当前模型上,用于关联父级模型的字段(例如:parentId)
"parentIdDbName": "parentId",
// 特殊配置,暂时用不到
"options": {},
// 层级 (header 1, 表体 2,子表体 3)
"level": 1,
// 模型上的字段字典
"fieldMap": {
// key 为数据库字段名
// value 字段配置
"xxxx": {
// 字段显示名称
"name": "采购订单",
// 字段唯一标识,随机生成的
"number": "xxx",
// 数据库字段名,可自定义
"dbName": "xxx",
// 字段类型,表头 modelHeader、表体 modelEntry、子表体 modelSubEntry
"fieldType": "modelHeader",
// 字段描述
"description": "xxx",
// 字段组的主字段,比如物料的 id\name\number 是一组,则主字段为 id
"mainFieldDbName": "id",
// 表达的是当前这个字段的值是从哪个功能
"relatedObjectNumber": "xxx",
// 来源于哪个模型
"relatedModelNumber": "xxxHeader",
// 来源于哪个字段,常用的有 id\name\number
"relatedFieldDbName": "id",
// 字段长度
"size": 0,
// 是否必录,业务字段的动态必录不在这里
"required": false,
// 精度配置
"precision": {},
// 特殊配置,暂时用不到
"options": {},
// 下拉字段才需要的下拉选项
"auxiliaryItemList": [
{
// 自动生成的选项唯一 key
"id": "xxx",
// 显示名称
"name": "黑色",
// 自定义的标识
"number": "xxx",
// 图标
"icon": "xxx",
// 颜色
"color": "xxx",
// 顺序
"seq": 0,
}
]
}
}
}
}
4.3 获取用户操作权限
- 详细描述:获取某个用户的所有表单操作权限
- 请求地址:metadata/getPermissionList
- 请求方式:GET
- Header:
// 令牌
accessToken: ""
// 帐号 id 字符串
accountId: ""
// 工作区编码
wsn: ""
- 返回结果:
{
"success": true,
"data": {
// 功能编码
"riz3bpnmbwu": [
{
// 菜单名称
"name": "菜单权限",
// 菜单编码
"number": "hcdakkgxdh2",
// 是否有权
"flag": false
},
{
// 按钮名称
"name": "创建",
// 按钮事件编号
"number": "create",
// 是否有权
"flag": false
},
{
"name": "编辑",
"number": "edit",
"flag": false
},
{
"name": "提交",
"number": "submit",
"flag": false
},
{
"name": "撤销",
"number": "revoke",
"flag": false
},
{
"name": "删除",
"number": "delete",
"flag": false
},
{
"name": "导入",
"number": "import",
"flag": false
},
{
"name": "导出",
"number": "export",
"flag": false
},
{
"name": "暂存",
"number": "hold",
"flag": false
},
{
"name": "自定义",
"number": "g9ae7y6m76z",
"flag": false
}
]
}
}
4.4 操作权限校验
- 详细描述:对某个用户的操作权限进行校验
- 请求地址:metadata/checkPermission
- 请求方式:POST
- Header:
// 令牌
accessToken: ""
// 帐号 id 字符串
accountId: ""
// 工作区编码
wsn: ""
- Body:
{
"params": {
// 功能唯一标识
"objectNumber": "cnn6vf3c7ah",
// 按钮事件编码
// 创建 对应 create 编辑 对应 edit 提交 对应 submit
// 导入 对应 import 导出 对应 export 暂存 对应 hold
"operateNumber": "create"
},
"context": {}
}
- 返回结果:
{
"success": true,
// 有无权限
"data": true
}
5. 业务数据管理
5.1 获取数据详情
- 详细描述:通用方法,获取某个业务功能的某条数据详情
- 不传用户信息表示有权查看,传了则按照数据权限进行处理
- 请求地址:runtime/getDetail
- 请求方式:POST
- Header:
// 令牌
accessToken: ""
// 帐号 id 字符串
accountId: ""
// 工作区编码
wsn: ""
- Body:
{
"params": {
// 业务功能 key
"objectNumber": "",
// 业务数据 id,防止前端精度丢失,使用字符串接收
"id": "1580815145323565056"
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 唯一标识
"id": "1580815145323565056",
// key 为表头上的数据库字段名
// value 为对应值,可以是数字、字符串、布尔、列表、对象等
"xxx": "xxx",
// 表头上的第一个表体的字段名,值为列表对象
"f_entry1": [
// 一个对象为表体行数据
{
// 唯一标识
"id": "1580815145323565056",
// key 为表体数据库字段名,value 为对应值
"xxx": "xxx",
// 表体里嵌套的一个子表体,暂不支持
"f_subentry1": [
{
"id": "1580815145323565056",
"xxx": "xxx",
}
]
}
],
// 表头上的第二个表体的字段名,值为列表对象
"f_entry2": [
{
"id": "1580815145323565056",
"xxx": "xxx",
}
]
}
}
5.2 获取数据列表
- 详细描述:通用方法,获取某个业务功能的数据列表
- 暂不支持查表体
- 不传用户信息表示拉取全部,传了则按照数据权限进行处理
- 请求地址:runtime/getList
- 请求方式:POST
- Header:
// 令牌
accessToken: ""
// 帐号 id 字符串
accountId: ""
// 工作区编码
wsn: ""
- Body:
{
"params": {
// 业务功能 key
"objectNumber": "",
// 当前页码
"page": 1,
// 每页行数
"size": 100,
// 过滤条件,还未处理完
"filter": {},
// 排序条件
"sort": [
{
// 字段名
"field": "",
// 查询哪个模型,表头、表体、子表体的模型
"modelNumber": "",
// 排序方式 desc\asc
"order": "asc"
}
]
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 总行数
"total": 100,
// 表头上的第一个表体的字段名,值为列表对象
"records": [
// 一个对象为一条业务数据
{
// key 为表头数据库字段名,value 为对应值
"xxx": "xxx",
}
]
}
}
5.3 暂存 (不包含提交)
- 详细描述:通用方法,暂存某个业务功能的表单
- 暂存不做任何校验
- 编辑时可以部分提交,会先从系统中取出跟现有的数据进行合并,执行字段规则后更新入库
- 不传用户信息表示有权,传了则按照数据权限进行处理
- 请求地址:runtime/hold
- 请求方式:POST
- Header:
// 令牌
accessToken: ""
// 帐号 id 字符串
accountId: ""
// 工作区编码
wsn: ""
- Body:
{
"params": {
// 业务功能 key
"objectNumber": "",
// 表单数据,参考 getDetail 返回结果
"data": {
// 唯一标识,新增数据时不用传,会自动生成,编辑时必传
"id": "1580815145323565056",
// key 为表头上的数据库字段名
// value 可以是数字、字符串、布尔、列表、对象等
"xxx": "xxxx",
// 表体,可以有多个表体,暂不支持子表体
"f_entry1": [
{
// 删除行时必填,值为 delete
"command": "",
// 唯一标识,新增行时不用传,会自动生成,更新\删除时必传
"id": "1580815145323565056",
// key 为表体上的数据库字段名
// value 可以是数字、字符串、布尔、列表、对象等
"xxx": "xxxx"
}
]
},
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 表单数据
"data": {}
}
}
5.4 更新 (不包含提交)
- 详细描述:通用方法,更新某个业务功能的某条数据
- 与暂存不同,会走必录校验和执行相关的事件节点
- 可以部分提交,会先从系统中取出跟现有的数据进行合并,执行字段规则后更新入库
- 不传用户信息表示有权,传了则按照数据权限进行处理
- 请求地址:runtime/update
- 请求方式:POST
- Header:
// 令牌
accessToken: ""
// 帐号 id 字符串
accountId: ""
// 工作区编码
wsn: ""
- Body:
{
"params": {
// 业务功能 key
"objectNumber": "",
// 表单数据,参考 getDetail 返回结果
"data": {
// 唯一标识,必传
"id": "1580815145323565056",
// key 为表头上的数据库字段名
// value 可以是数字、字符串、布尔、列表、对象等
"xxx": "xxxx",
// 表体,可以有多个表体,暂不支持子表体
"f_entry1": [
{
// 删除行时必填,值为 delete
"command": "",
// 唯一标识,新增行时不用传,会自动生成,更新\删除时必传
"id": "1580815145323565056",
// key 为表体上的数据库字段名
// value 可以是数字、字符串、布尔、列表、对象等
"xxx": "xxxx"
}
]
},
// 弹出预警提醒框时,在点击确定后继续执行时需要提交的参数
// 值来源于上一次 save 的结果
"warningKey": "xxxx"
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 表单数据
"data": {},
// 弹出预警提醒框时,在点击确定后继续执行时需要提交的参数,暂不支持
"warningKey": "xxxx"
}
}
5.5 暂存(或更新)且提交
- 详细描述:通用方法,暂存(或更新)且提交某个业务功能表单
- 不传用户信息表示有权,传了则按照数据权限进行处理
- 如果不符合提交控制,则有可能会报错,例如:执行中的流程不能重复提交
- 请求地址:runtime/saveAndSubmit
- 请求方式:POST
- Header:
// 令牌
accessToken: ""
// 帐号 id 字符串
accountId: ""
// 工作区编码
wsn: ""
- Body:
{
"params": {
// 业务功能 key
"objectNumber": "",
// 表单数据,参考 getDetail 返回结果
"data": {
// 唯一标识,新增数据时不用传,会自动生成,编辑时必传
"id": "1580815145323565056",
// key 为表头上的数据库字段名
// value 可以是数字、字符串、布尔、列表、对象等
"xxx": "xxxx",
// 表体,可以有多个表体,暂不支持子表体
"f_entry1": [
{
// 删除行时必填,值为 delete
"command": "",
// 唯一标识,新增行时不用传,会自动生成,更新\删除时必传
"id": "1580815145323565056",
// key 为表体上的数据库字段名
// value 可以是数字、字符串、布尔、列表、对象等
"xxx": "xxxx"
}
]
},
// 弹出预警提醒框时,在点击确定后继续执行时需要提交的参数
// 值来源于上一次 save 的结果
"warningKey": "xxxx"
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 表单数据
"data": {},
// 弹出预警提醒框时,在点击确定后继续执行时需要提交的参数,暂不支持
"warningKey": "xxxx"
}
}
5.6 删除
- 详细描述:通用方法,删除某个业务功能的某几条数据
- 不传用户信息表示有权,传了则按照数据权限进行处理
- 请求地址:runtime/delete
- 请求方式:POST
- Header:
// 令牌
accessToken: ""
// 帐号 id 字符串
accountId: ""
// 工作区编码
wsn: ""
- Body:
{
"params": {
// 业务功能 key
"objectNumber": "",
// 待处理的表单唯一标识
"ids": [],
// 弹出预警提醒框时,在点击确定后继续执行时需要提交的参数
// 值来源于上一次 save 的结果
"warningKey": "xxxx"
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 每条数据的操作结果
"result": [
{
// 待处理的表单 id
"id": "",
// 此条数据操作结果,成功或者失败
"success": true,
// 错误码
"code": 0,
// 成功或错误的消息
"msg": ""
}
],
// 弹出预警提醒框时,在点击确定后继续执行时需要提交的参数,暂不支持
"warningKey": "xxxx"
}
}
5.7 提交
- 详细描述:通用方法,提交某个业务功能的某几条数据
- 不传用户信息表示有权,传了则按照数据权限进行处理
- 请求地址:runtime/submit
- 请求方式:POST
- Header:
// 令牌
accessToken: ""
// 帐号 id 字符串
accountId: ""
// 工作区编码
wsn: ""
- Body:
{
"params": {
// 业务功能 key
"objectNumber": "",
// 待处理的表单唯一标识
"ids": [],
// 弹出预警提醒框时,在点击确定后继续执行时需要提交的参数
// 值来源于上一次 submit 的结果
"warningKey": "xxxx"
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 每条数据的操作结果
"result": [
{
// 待处理的表单 id
"id": "",
// 此条数据操作结果,成功或者失败
"success": true,
// 错误码
"code": 0,
// 成功或错误的消息
"msg": ""
}
],
// 弹出预警提醒框时,在点击确定后继续执行时需要提交的参数,暂不支持
"warningKey": "xxxx"
}
}
5.8 撤销
- 详细描述:通用方法,撤销某个业务功能的某几条数据
- 不传用户信息表示有权,传了则按照数据权限进行处理
- 请求地址:runtime/revoke
- 请求方式:POST
- Header:
// 令牌
accessToken: ""
// 帐号 id 字符串
accountId: ""
// 工作区编码
wsn: ""
- Body:
{
"params": {
// 业务功能 key
"objectNumber": "",
// 待处理的表单唯一标识
"ids": [],
// 弹出预警提醒框时,在点击确定后继续执行时需要提交的参数
// 值来源于上一次 revoke 的结果
"warningKey": "xxxx",
},
"context": {}
}
- 返回结果:
{
"success": true,
"data":{
// 每条数据的操作结果
"result": [
{
// 待处理的表单 id
"id": "",
// 此条数据操作结果,成功或者失败
"success": true,
// 错误码
"code": 0,
// 成功或错误的消息
"msg": ""
}
],
// 弹出预警提醒框时,在点击确定后继续执行时需要提交的参数,暂不支持
"warningKey": "xxxx"
}
}
6. OSS 文件
6.1 附件上传
- 详细描述:单据附件字段对应文件上传
- 请求地址:oss/uploadAttachment
- 请求方式:POST
- Header:
// 令牌
accessToken: ""
// 帐号 id 字符串
accountId: ""
// 工作区编码
wsn: ""
- Body:
{
// 文件
"file": "",
// 组件类型
// 图片组件 image 附件组件 attachment
"fileCategoryKey": "attachment"
}
- 返回结果:
{
"success": true,
"data": {
// 文件伪地址
"dummyUrl": "Minio-attachment://1632982566912049152ce36fk",
// 前缀
"prefix": "Minio",
// 文件桶名称
"bucketName": "attachment",
// 文件key
"fileKey": null,
// 文件预览URL
"fileUrlList": [
"https://oss.dev.renxiaoyun.com/attachment/1632982566912049152ce36fk?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20230307%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230307T055238Z&X-Amz-Expires=259200&X-Amz-SignedHeaders=host&X-Amz-Signature=adfdf96cc8537102542865f409257dcd7cd90e6d76d1c160db03b03f46651133"
],
// 文件名称
"fileName": "test.jpg",
// 文件大小
"size": 601865,
// 文件contentType
"contentType": "image/jpeg",
// 文件类型
"fileType": "jpg"
},
"errorMessage": "",
"errorCode": 0,
"showType": 0,
"traceId": "buca798pap55qwv"
}
6.2 附件下载
- 详细描述:附件下载
- 请求地址:oss/downloadFile
- 请求方式:GET
- Header:
// 令牌
accessToken: ""
// 帐号 id 字符串
accountId: ""
// 工作区编码
wsn: ""
- Body:
{
// 文件伪地址
"dummyUrl": "Minio-attachment://1632982566912049152ce36fk"
}
- 返回结果: 文件