1. 外部数据回填
智书合同API
  • 智书开放平台概述
  • 开发对接流程
  • 基本概念
    • 应用鉴权
    • 用户身份体系
  • 对接方式
    • 选择对接方式
    • 【识别用户身份】选择自建应用的方式快速对接
    • 智书开平与飞书开平对接差异
      • 智书合同新用户流程差异
      • 从飞书合同迁移到智书合同流程差异
  • API调用指南
    • API列表
    • 频控策略
    • 调用流程
      • 流程概述
      • 获取访问凭证
      • 调用API
  • 事件订阅
    • 事件概述
    • 事件列表
    • 订阅流程
      • 获取 Encrypt Key
      • 获取 Verification Token
      • 添加事件
      • 接收并处理事件
      • 配置订阅方式
  • 认证及授权
    • 获取访问凭证
      • 获取 tenant_access_token
  • 智书合同
    • 合同类型
      • 查询合同类型目录
    • 模版管理
      • 查看模板列表
      • 创建模版实例
      • 查看模版详情
    • 文件管理
      • 上传合同相关文件
      • 下载合同相关文件
    • 合同管理
      • 事件
        • 协商事件
        • 合同信息变更
        • 合同状态变更
        • 合同分享事件
        • 取消合同分享事件
      • form表单、币种、国家说明
        • 合同创建Form组件说明
        • 币种说明
        • 国家地区编码
      • 创建合同
      • 删除草稿合同
      • 提交合同
      • 重新提交合同
      • 更新合同
      • 更新合同字段信息
      • 查看合同详情
      • 搜索合同
      • 根据合同编号查询
      • 合同协商操作记录信息查询
      • 合同电子签转纸质签
      • 查询合同分享记录
    • 付款
      • 事件
        • 合同新建付款
      • 创建付款申请
      • 更新付款信息
      • 查看付款信息
      • 查询付款申请列表
    • 付款计划
      • 同步付款记录
      • 搜索付款计划
    • 付款记录
      • 创建付款记录
      • 更新付款记录
      • 查询付款记录详情
      • 根据付款计划id查询付款记录
    • 审批管理
      • 发起流程审批
      • 查询审批实例详情
    • 合同权限管理
      • 授予合同权限
      • 合同分享
    • 文件
      • 生成合同打印文件
    • 合同协商
      • 查询合同协商邀请链接
    • 电子签
      • 获取个人认证&授权页面链接
      • 获取机构认证&授权页面链接
    • 审批事件
      • 审批-待办任务变更
      • 审批-抄送、知会状态变更
    • 事件ip
      • 获取事件出口IP
    • 审批矩阵
      • 矩阵-预发布规则表配置
      • 矩阵-发布规则表配置
      • 矩阵-查询规则表列表
      • 矩阵-查询规则表列头信息
      • 矩阵-创建规则表行
      • 矩阵-删除规则表行
      • 矩阵-修改规则表行
      • 矩阵-根据行ID查询规则表单行信息
      • 矩阵-根据筛选条件查询规则表行信息列表
      • 矩阵-查询规则表行信息列表
  • 智书主数据
    • 固定汇率
      • 更新固定汇率
      • 查询固定汇率
    • 交易方
      • 事件
        • 交易方-基础信息变更
        • 交易方-公司视图变更
        • 交易方-联系人变更
        • 交易方-经营地址变更
        • 交易方-银行账户变更
      • 创建交易方
      • 更新交易方
      • 获取交易方
      • 获取单个交易方信息
      • 获取交易方全量数据
      • 根据证件id精确查询交易方
      • 字段配置查询
    • 法人实体
      • 创建法人实体
      • 更新法人实体信息
      • 获取法人实体
      • 获取单个法人实体信息
      • 获取法人实体全量数据
    • 文件
      • 下载主数据附件
  • 第三方系统相关配置
    • 关联单据
      • 关联前置单据
    • 外部数据回填
      • 表单字段回填
      • 审批人回填
    • 外部校验
      • 外部校验
  1. 外部数据回填

表单字段回填

外部数据源介绍#

你在什么情况下能用到?#

公司同时使用多个系统(智书合同、人事系统、销售管理系统),需要将其他系统数据同步到智书合同表单中的字段作为数据填写,此时通过配置外部数据源为控件的数据来源,就不需要在多个系统维护同一份数据。
例如:智书合同一个涉及销售的合同审批,销售同学提交审批时需要填写外部客户名单,名单已经维护在销售管理系统中且经常变动,这时就可以通过配置外部数据为单选/多选的选项,销售同学在提交审批时只选择自己已跟进的客户,且当销售管理系统中的数据更新时还能同步更新到审批系统中,无需反复维护。

可以帮你解决什么问题?#

该功能可以调用外部API,并将API调用结果绑定到合同的字段上,从而避免在多个系统重复进行更新、修改,避免重复劳动。

使用指南#

事前准备#

开发同学需根据「技术文档」一节的要求,开发相应API

配置API#

1.
前往系统管理 - 合同流程管理 - 点击自定义配置,并点击添加对接项
image.png
2. 填入对接项名称,名称应保持可读,并点击编辑按钮
image.png
3. 第二步执行完成后,将会弹出数据源配置:
image.png
这个配置页面复杂,下面分段解释:

3.1 设置触发时机#

这部分页面主要用于配置调用API的条件。
image.png
填入项作用详情描述
触发时机指定在何时调用外部,当触发时机满足配置时,才会调用API- 表单字段变化时:监听当前表单中某些字段,当字段的内容发生变化时
- 鼠标点击字段时:指定字段被点击时
监听字段和触发时机配合使用举个例子,如下配置表示:当“合同名称”这个字段发生变化时,就去调用API
image.png

3.2 数据源获取#

这部分内容用于定义如何请求一个API。
image.png
填入项作用详情描述
请选择指定HTTP请求方法目前支持HTTP常用的请求方法
请输入Url指定API的请求地址-
TokenToken主要是为了确保数据安全,防止接口被恶意调用token会以名为“token”的header传输
动态Token允许调用一个API,从而获取Token详见技术文档一节
请求头这部分请求会放在HTTP header中传输- 入参名称:待传递的header名称
- 请选择:支持如下选项
- 表单字段:从表单字段中取值
- 固定值:你可以填写一个任意的值
- 表达式:可以编写表达式。目前表达式只是初步支持,功能不够完善,不建议使用,近期会增强
- “选择表单字段”:
- 当选择“表单字段”时,可以将表单字段绑定到参数上;
- 当选择“固定值”时,可将用户填写的值绑定到参数上;
- 当选择“表达式”时,可将表达式解析后的值绑定到参数上
例如:
image.png
那么,调用API时,传输的header如下:
param1=当前合同名称的值
param2=123
请求体这部分请求会序列化成JSON结构体,放在HTTP请求体中传输- 入参名称:待传递的请求体名称
- 请选择:支持如下选项
- 表单字段:从表单字段中取值
- 固定值:你可以填写一个任意的值
- 表达式:可以编写表达式。目前表达式只是初步支持,功能不够完善,不建议使用,近期会增强
- “选择表单字段”:
- 当选择“表单字段”时,可以将表单字段绑定到参数上;
- 当选择“固定值”时,可将用户填写的值绑定到参数上;
- 当选择“表达式”时,可将表达式解析后的值绑定到参数上
下面举几个例子:
- 对于普通的字段类型,例如:
image.png
那么在调用API时,将传输如下的请求体:
{
"param1": "当前合同名称的值",
"param2": 3
}
- 对于人员、部门类型,例如:
image.png
那么在调用API时,将传输如下的请求体:
{
"employeeExtraInfo": [
{
"openId": "智书openId",
"userId": "智书userId",
"employeeId": "员工id",
"employeeCode": "员工编码",
"name": "员工名称"
}
],
"partmentExtraInfo": [
{
"departmentId": "部门id",
"openDepartmentId": "部门openId",
"realDepartmentId": "部门department_id,示例值:D096",
"code": "部门编码",
"name": "部门名称"
}
]
}
目前审批人回填功能还未支持上述的人员、部门请求体的格式构造,请求格式如下:
{
"partment": "员工的employeeId"
}
- 对于交易方字段、我方字段,例如:
image.png
那么在调用API时,将传输如下的请求体:
{
"legalEntity": [
{
"legalEntityName": "我方-名称",
"legalEntityCode": "我方-编码"
}
],
"tradingParty": [
{
"tradingPartyCode": "交易方-编码",
"partyName": "交易方-名称"
}
]
}
目前审批人回填功能还未支持上述交易方字段、我方字段的格式构造,请求格式如下:
{
"legalEntity": "我方-编码",
"tradingParty": "交易方-编码"
}
- 对于相关单据,例如:
image.png
那么在调用API时,将传输如下的请求体:
{
"param": [
{
"serialId": "10001"
}
]
}
Query参数这部分会作为HTTP Query String传输配置方式类似请求头、请求体
例如:
image.png
那么,传输的参数如下:
?param1=合同名称的值&param2=123
路径参数这部分会作为HTTP路径参数传输路径参数用于应对Url中路径存在占位符的场景。
例如:
image.png
如图,一些Url是动态的,{{path}}需要动态取值。路径参数可解决问题。
- Url中的占位符使用{{名称}}的形式占位,例如{{path}}
- 路径参数名称需要和{{}}中的内容相同,例如path
这样,在请求时,将会构造如下地址:
http://www.foo.bar/some-path/合同名称的值

3.3 数据源回填#

用于将API的响应结果,绑定到合同字段上。响应需按照要求返回,详见 技术文档 - Response 一节。
这块比较简单,举个例子,API的响应如下:
{
    "param1": "aaaaa",
    "param2": "bbbbb"
}
那么就可以配置成如下:
image.png
这表示将“aaaaa”绑定到字段收支类型上;“bbbbb”绑定到字段计价方式上。
4.
校验接口
数据源配置完成后,用户可进行模拟,调用API,从而验证接口配置是否正确。
如果正确,点击保存按钮即可添加该数据源。
image.png

技术文档#

请求#

本节探讨用户请求相关注意点与细节。

请求头 - 静态token认证#

image.png
如图配置,会传递一个名为token,值为 a-test-token 的header。
TIPS:发送请求时,Token的默认名称为token,如果希望以其他名称发送,请发起oncall,并联系我们的技术同学修改

请求头 - 动态token认证#

配置动态token的URL
image.png
API调用过程中会获取上面的 URL (https://example.com/getToken)来获取token,并将从接口获得的值,放到header中传递。
暂时无法在飞书文档外展示此内容
TIPS:
上图中,如果右侧的{"key":"value"} 为空,则会以GET方式请求URL;如果不为空,则会以POST方式请求URL
发送请求时,Token的默认名称为token,如果希望以其他名称发送,请发起oncall,并联系我们的技术同学修改

请求体#

请求体不仅可传递文本型的字段(数字、字符串类型),也支持传递结构体。下面举几个例子:
对于普通的字段类型,例如:
image.png
那么在调用API时,将传输如下的请求体:
{
    "param1": "当前合同名称的值",
    "param2": 3
}
对于人员、部门类型,例如:
image.png
那么在调用API时,将传输如下的请求体:
{
    "employeeExtraInfo": [
        {
            "openId": "智书openId",
            "userId": "智书userId",
            "employeeId": "员工id",
            "employeeCode": "员工编码",
            "name": "员工名称"
        }
    ],
    "partmentExtraInfo": [
        {
            "departmentId": "部门id",
            "openDepartmentId": "部门openId",
            "realDepartmentId": "部门department_id,示例值:D096",
            "code": "部门编码",
            "name": "部门名称"
        }
    ]
}
对于交易方字段、我方字段,例如:
image.png
那么在调用API时,将传输如下的请求体:
{
    "legalEntity": [
        {
            "legalEntityName": "我方-名称",
            "legalEntityCode": "我方-编码"
        }
    ],
    "tradingParty": [
        {
            "tradingPartyCode": "交易方-编码",
            "partyName": "交易方-名称"
        }
    ]
}
对于相关单据,例如:
image.png
那么在调用API时,将传输如下的请求体:
{
    "param": [
        {
            "serialId": "10001"
        }
    ]
}

默认传递字段#

除页面上配置的字段外,还会额外传输一些默认字段,如下(只有在合同提交页面才存在):
字段名称含义传输位置
contractId合同id请求体
contractNumber合同编号请求体
belongedDepartmentId合同所属部门id请求体
applier申请人id请求体
submitterUserId提交人id- 请求体
- query参数
- 路径参数
- header参数
submitterEmployeeCode提交人工号- 请求体
- query参数
- 路径参数
- header参数

响应#

响应字段类型#

WARNING
响应结果必须符合示例要求,否则前端组件将无法渲染。

响应字段类型说明#

字段类型值类型示例说明
数字字段number123456整数
单行/多行文本字段string"文本值"字符串
日期区间字段array["2021-10-13","2021-10-22"]字符串数组
日期字段string2021-10-01字符串
金额json{"amount": "33545", "currency": 1}
amount为字符串,currency为整数
常见币种类型国际编码:
CNY(1, "人民币元", "CNY", "¥"),
USD(2, "美元", "USD", ""),<br/>JPY(3,"日元","JPY","J¥"),<br/>EUR(4,"欧元","EUR","€"),<br/>GBP(5,"英镑","GBP","£"),<br/>SGD(6,"新加坡元","SGD","S"),
THB(7, "泰铢", "THB", "฿"),
HKD(10, "港币", "HKD", "HK$"),
KRW(8,"韩元","KRW","₩")
链接object{
"url": "https://www.bytedance.com/",
"title": "字节跳动"
}
url为字符串,title为字符串
-
单选/多选字段object/arrayCase 1仅回填选项:
[
{
"label": "自定义1",
"labelCn":"自定义1 - 中文",
"labelEn":"自定义1 - 英文",
"labelJp":"自定义1 - 日文",
"value": "v1"
},
{
"label": "自定义2",
"labelCn":"自定义2 - 中文",
"labelEn":"自定义2 - 英文",
"labelJp":"自定义2 - 日文",
"value": "v2"
}
]
[
{
"label": "自定义1",
"value": "v1"
},
{
"label": "自定义2",
"value": "v2"
}]
Case 2回填选项 + 选中默认值:
- 单选
{
"value": "v2", //选中的默认值
"options": [
{
"label": "自定义1",
"value": "v1" // value必须为字符串
},
{
"label": "自定义2",
"value": "v2"
}]
}
- 多选
{
"value": ["v2"], //选中的默认值
"options": [
{
"label": "自定义1",
"value": "v1" // value必须为字符串
},
{
"label": "自定义2",
"value": "v2"
}]
}
- value类型是字符串
- value为空则清空用户选中值
- 如果选中的默认值在新列表中不存在则清空用户选中的值
- 列表不支持回填options
-
明细字段object[][{
"numberType": 123456,
"textType": "asdfads",
"stringType": "第一行",
"dateType": [
"2021-10-13",
"2021-10-22"
],
"singleDateType": "2021-10-01",
"amountType": {
"amount": "33545",
"currency": 4
},
"selectType": "1"
}]
数组中的值参考其他类型的格式
-
树形字段object/array[{
"label": "人力成本",
"value": "MDBS00000005",
"children": [
{
"label": "人力成本 - 保险",
"value": "MDBS00000196",
"children": null
},
{
"label": "人力成本 - 补偿金",
"value": "MDBS00000197",
"children": null
}
]
},
{
"label": "市场费",
"value": "MDBS00000181",
"children": [
{
"label": "品牌市场费",
"value": "MDBS00000003",
"children": null
},
{
"label": "拉新市场费",
"value": "MDBS00000004",
"children": null
}
]
}]
树形中的所有字段的value不能相同,否则组件将无法渲染
-
对方/我方字段object/array[
{
"type": "trading_party",
"code": "V00225001"
},
{
"type": "legal_entity",
"code": "L00178002"
}
]
type - 字段类型:
- trading_party:对方字段类型
- legal_entity:我方字段类型
code - 主数据编码
-
人员类型/人员多选类型object/array[
{
"type": "userId",
"userId": "12345678"
},
{
"type": "employeeId",
"employeeId": "87654321"
},
{
"type": "larkId",
"larkId":"56781234"
}
]
- type: Id类型
- userId、employeeId、larkId: Id值
-
审批人回填array{
"userId":["1111","2222"]
}
对象,userId字段是字符串数组
-
付款计划 / 收款计划 - 付款时间 / 收款时间object{
"reminderDate": "2023-07-31",
"reminderDateTypeCode": 2,
"intervalDays": 1,
"intervalDayTypeCode": 1
}
reminderDateTypeCode:
- 0 - 固定时间,1 - 不固定时间,2 - 履约条件完成后, 默认值为0,固定时间
reminderDate:
- 付款时间类型=固定时间(reminderDateTypeCode = 0),必填
- 付款时间类型=不固定时间、履约条件完成后(reminderDateTypeCode = 1,2),不可填,如果传入则自动清空
intervalDayTypeCode:
- 间隔日的天数单位:1 - 工作日, 2 - 自然日
- 付款时间类型=履约条件完成后(payment_date_type_code = 2),必填
- 付款时间类型=固定时间、不固定时间(payment_date_type_code = 0,1),不可填,如果传入则自动清空
intervalDays:
- 履约条件完成到付款日之间的间隔时间,单位为 (自然日/工作日),单位由interval_day_type_code字段决定
- 付款时间类型=履约条件完成后(payment_date_type_code = 2),必填
- 付款时间类型=固定时间、不固定时间(payment_date_type_code = 0,1),不可填,如果传入则自动清空
-
履约类型number0或1
- 0 - 需付款,1 - 无需付款
-
履约事项string"文本值"字符串
有无发票booltrue或false
- true - 有发票,false - 无发票
-
付款金额 / 收款金额json{"amount": "33545", "currency": 1}
同上述金额字段。当履约类型为无需付款时,该字段不可填
-
付款说明 / 收款说明string"文本值"字符串
银行账户number123456整数
付款对象 / 收款对象不支持回填-
部门不支持回填-

示例#

错误码#

错误码说明
0正确
110345token校验失败
110343数据不存在
110342系统异常
修改于 2025-11-11 11:05:56
上一页
关联前置单据
下一页
审批人回填
Built with