新增用户授权

  • 接口:/delegation/save
  • Method:POST
  • 数据格式:JSON
  • 接口说明:该接口用于新增一条授权关系;仅支持新增,不支持更新;授权人支持在职/离职员工;被授权人必须是在职员工;单次最多处理 100 条数据;接口响应数据会被整体加密,详见 加密说明
接口参数

顶层参数

参数 类型 必须 默认值 主键 描述
delegationCode string N 授权业务编码;不填则系统生成 24 位唯一编码;若填写且数据库中已存在则请求被拒绝(仅支持新增,不支持更新)
delegaterEmployeeId string Y 授权人工号(员工工号,非系统 userCode),支持在职/离职员工
delegateeEmployeeIds array Y 被授权人工号列表(员工工号,非系统 userCode),全部必须是在职员工,至少 1 个
authorizations array Y 授权内容列表(按类型分条),至少 1 条;详见下方「authorizations 子结构」
expireDate string(yyyy-MM-dd) N 不限制 授权截止日期;不填或 null 表示永不过期;填值则必须 ≥ 当天(按 UTC+8 零点对齐)
enabled bool N true 是否启用,新增一条授权关系默认开启

authorizations[i](每条授权内容)

参数 类型 必须 默认值 主键 描述
type int Y 授权类型:1代审批 / 2代报销 / 3代申请 / 4代预定 / 5代处理对公业务
formSubTypeCodes array N 全部 该类型下可操作的单据小类编码列表;不传/空时服务端按授权类型拉全量单据小类(代报销只含 REIMBURSE、代申请只含 PRECONSUME、代处理对公只含 CORP_REIMBURSE、代审批/代预定排除还款类)
approvalScope object type=1 时必填 代审批适用范围
reimburseScope object type=2 时必填 代报销适用范围
consumeScope object type=3 时必填 代申请适用范围
corpReimburseScope object type=5 时必填 代处理对公业务适用范围

代审批适用范围(approvalScope)

参数 类型 必须 默认值 描述
visibility string N OPEN 适用范围:OPEN 全部 / WHITE_LIST 限定(业务实体或部门);不传默认 OPEN(全公司可审批)
subsidiaryCodes array visibility=WHITE_LIST 时非空 可审批业务实体编码列表;与 departmentCodes 至少一个非空
departmentCodes array visibility=WHITE_LIST 时非空 可审批部门编码列表;与 subsidiaryCodes 至少一个非空
amountRange object N 任意金额 金额范围,详见下方「amountRange 子结构」

金额范围(amountRange)

参数 类型 必须 默认值 描述
opType string Y 比较类型:GT 大于 / GTE 大于等于 / LT 小于 / LTE 小于等于 / ANY 任意
currency string opType≠ANY 时必填 币种编码(如 CNY/USD),必须在授权人/适用范围所属业务实体的可报销币种并集范围内
amount number opType≠ANY 时必填 金额

代报销适用范围(reimburseScope)

参数 类型 必须 默认值 描述
needConfirmAfterSubmit bool Y 提单后是否需授权人确认
fullProxy bool Y 是否由被授权人全权代理
selectDelegaterBankcard bool Y 是否可以选择授权人银行卡用于收款

代申请适用范围(consumeScope)

参数 类型 必须 默认值 描述
needConfirmAfterSubmit bool Y 提单后是否需授权人确认

代处理对公业务适用范围(corpReimburseScope)

参数 类型 必须 默认值 描述
formSubTypeCodes array N 全部 可处理的对公单据小类编码列表;不传/空时服务端拉全部 CORP_REIMBURSE 单据小类
返回数据
字段 类型 描述
delegationCode string 系统生成的授权业务编码
delegaterEmployeeId string 授权人工号(回执)
异常说明
异常 触发条件 code
必传参数未传 delegaterEmployeeId / delegateeEmployeeIds / authorizations 任一为空 NACK
授权人不存在 授权人工号在系统中不存在 NACK
被授权人不存在 任一被授权人工号在系统中不存在 NACK
被授权人已离职 任一被授权人工号状态非在职(离职/停用) NACK
授权人与被授权人相同 任一被授权人工号等于授权人工号 NACK
币种不在规定范围内 amountRange.currency 不在授权人 + 适用范围所属业务实体的可报销币种并集内 NACK
截止日期早于当前日期 expireDate 不为空且早于今天 NACK
授权编号已存在 客户端传入的 delegationCode 在数据库中已存在 NACK
单据小类不存在 formSubTypeCodes 含未配置的小类编码 NACK
类型值非法 type 不在 {1,2,3,4,5} NACK
适用范围必填字段缺失 type 与对应 scope 子对象未匹配 / visibility=WHITE_LIST 时 subsidiaryCodes+departmentCodes 同时空(不传 visibility 默认 OPEN 表示全公司可审批) NACK
金额必填 opType≠ANY 时 currencyamount 为空,或 amount < 0 NACK
必填字段不能为空 type=2/3 时对应 boolean 字段为 null(未传) NACK
备注
  • 本接口采用单条失败的处理方式,即整批数据中,如果只有其中的几条因为各种原因失败,那么只有那几条数据不会被保存;其它的数据仍然会被正常处理;错误数据的主键(delegationCode 若已传入,否则 delegaterEmployeeId)会被放在 errorData 里面,类似 {"<pk>": "<错误信息>"};具体参见失败示例;如果有错误信息,则返回的 code 为 NACK,然后错误信息会放在 errorData 里,只有全部成功返回的 code 为 ACK。
  • 后续操作必须将 entCode 和 tokenId 放入请求 header 中。
  • 接口响应数据会被整体加密,详见 加密说明
  • 完整的鉴权流程参见 认证 / 接口简介
示例

请求数据

{
    "timestamp": 1700000000000,
    "data": [
        {
            "delegaterEmployeeId": "A001",
            "delegateeEmployeeIds": ["B002", "B003"],
            "authorizations": [
                {
                    "type": 1,
                    "formSubTypeCodes": [],
                    "approvalScope": {
                        "visibility": "WHITE_LIST",
                        "subsidiaryCodes": ["SUB01"],
                        "departmentCodes": [],
                        "amountRange": {
                            "opType": "GT",
                            "currency": "CNY",
                            "amount": 1000
                        }
                    }
                },
                {
                    "type": 2,
                    "formSubTypeCodes": ["FS_REIMBURSE_DAILY"],
                    "reimburseScope": {
                        "needConfirmAfterSubmit": true,
                        "fullProxy": false,
                        "selectDelegaterBankcard": false
                    }
                },
                {
                    "type": 5,
                    "corpReimburseScope": {
                        "formSubTypeCodes": []
                    }
                }
            ],
            "expireDate": "2026-12-31",
            "enabled": true
        }
    ]
}

返回数据(成功)

{
    "code": "ACK",
    "message": "",
    "data": [
        {
            "delegationCode": "DLG2026ABCDEF123456",
            "delegaterEmployeeId": "A001"
        }
    ],
    "errorData": {}
}

返回数据(部分失败)

{
    "code": "NACK",
    "message": null,
    "data": [],
    "errorData": {
        "A001": "被授权人已离职:B003"
    }
}

返回数据(整体失败)

{
    "code": "NACK",
    "message": "授权编号已存在",
    "data": null,
    "errorData": {}
}

results matching ""

    No results matching ""