-
-
Notifications
You must be signed in to change notification settings - Fork 71
/
Copy pathapi_approval_instance_create.go
126 lines (110 loc) · 9.65 KB
/
api_approval_instance_create.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// Code generated by lark_sdk_gen. DO NOT EDIT.
/**
* Copyright 2022 chyroc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package lark
import (
"context"
)
// CreateApprovalInstance 创建一个审批实例, 调用方需对审批定义的表单有详细了解, 将按照定义的表单结构, 将表单 Value 通过接口传入。
//
// doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/approval-v4/instance/create
// new doc: https://open.feishu.cn/document/server-docs/approval-v4/instance/create
func (r *ApprovalService) CreateApprovalInstance(ctx context.Context, request *CreateApprovalInstanceReq, options ...MethodOptionFunc) (*CreateApprovalInstanceResp, *Response, error) {
if r.cli.mock.mockApprovalCreateApprovalInstance != nil {
r.cli.Log(ctx, LogLevelDebug, "[lark] Approval#CreateApprovalInstance mock enable")
return r.cli.mock.mockApprovalCreateApprovalInstance(ctx, request, options...)
}
req := &RawRequestReq{
Scope: "Approval",
API: "CreateApprovalInstance",
Method: "POST",
URL: r.cli.openBaseURL + "/open-apis/approval/v4/instances",
Body: request,
MethodOption: newMethodOption(options),
NeedTenantAccessToken: true,
}
resp := new(createApprovalInstanceResp)
response, err := r.cli.RawRequest(ctx, req, resp)
return resp.Data, response, err
}
// MockApprovalCreateApprovalInstance mock ApprovalCreateApprovalInstance method
func (r *Mock) MockApprovalCreateApprovalInstance(f func(ctx context.Context, request *CreateApprovalInstanceReq, options ...MethodOptionFunc) (*CreateApprovalInstanceResp, *Response, error)) {
r.mockApprovalCreateApprovalInstance = f
}
// UnMockApprovalCreateApprovalInstance un-mock ApprovalCreateApprovalInstance method
func (r *Mock) UnMockApprovalCreateApprovalInstance() {
r.mockApprovalCreateApprovalInstance = nil
}
// CreateApprovalInstanceReq ...
type CreateApprovalInstanceReq struct {
ApprovalCode string `json:"approval_code,omitempty"` // 审批定义 code, 示例值: "7C468A54-8745-2245-9675-08B7C63E7A85"
UserID *string `json:"user_id,omitempty"` // 发起审批用户的 user_id, 与 open_id 必须传入其中一个。如果传入了 user_id 则优先使用 user_id, 示例值: "f7cb567e"
OpenID *string `json:"open_id,omitempty"` // 发起审批用户的 open_id, 与 user_id 必须传入其中一个。如果传入了 user_id 则优先使用 user_id, 示例值: "ou_3cda9c969f737aaa05e6915dce306cb9"
DepartmentID *string `json:"department_id,omitempty"` // 发起审批用户部门id, 如果用户只属于一个部门, 可以不填。如果属于多个部门, 默认会选择部门列表第一个部门, 示例值: "9293493ccacbdb9a"
Form ApprovalWidgetList `json:"form,omitempty"` // json 数组(需压缩转义成string), 控件值, 示例值: "[{\"id\":\"111\", \"type\": \"input\", \"value\":\"test\"}]"
NodeApproverUserIDList []*CreateApprovalInstanceReqNodeApproverUserIDList `json:"node_approver_user_id_list,omitempty"` // 如果有发起人自选节点, 则需要填写对应节点的审批人
NodeApproverOpenIDList []*CreateApprovalInstanceReqNodeApproverOpenIDList `json:"node_approver_open_id_list,omitempty"` // 审批人发起人自选 open id, 与上述node_approver_user_id_list字段取并集
NodeCcUserIDList []*CreateApprovalInstanceReqNodeCcUserIDList `json:"node_cc_user_id_list,omitempty"` // 如果有发起人自选节点, 则可填写对应节点的抄送人, 单个节点最多选择20位抄送人, 最大长度: `20`
NodeCcOpenIDList []*CreateApprovalInstanceReqNodeCcOpenIDList `json:"node_cc_open_id_list,omitempty"` // 抄送人发起人自选 open id 单个节点最多选择20位抄送人, 最大长度: `20`
UUID *string `json:"uuid,omitempty"` // 审批实例 uuid, 用于幂等操作, 每个租户下面的唯一key, 同一个 uuid 只能用于创建一个审批实例, 如果冲突, 返回错误码 60012, 格式建议为 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, 不区分大小写, 示例值: "7C468A54-8745-2245-9675-08B7C63E7A87", 长度范围: `1` ~ `64` 字符
AllowResubmit *bool `json:"allow_resubmit,omitempty"` // 可配置“提交”按钮, 该操作适用于审批人退回场景, 提单人在同一实例提交单据, 示例值: true
AllowSubmitAgain *bool `json:"allow_submit_again,omitempty"` // 可配置是否可以再次提交, 适用于周期性提单场景, 按照当前表单内容再次发起一个新实例, 示例值: true
CancelBotNotification *string `json:"cancel_bot_notification,omitempty"` // 取消指定的 bot 推送通知。可选值: 1: 取消通过推送, 2: 取消拒绝推送, 4: 取消实例取消推送, 支持同时取消多个 bot 推送通知。位运算, 即如需取消 1 和 2 两种通知, 则需要传入加和值 3, 示例值: "1"
ForbidRevoke *bool `json:"forbid_revoke,omitempty"` // 配置是否可以禁止撤销, 示例值: false, 默认值: `false`
I18nResources []*CreateApprovalInstanceReqI18nResource `json:"i18n_resources,omitempty"` // 国际化文案。目前只支单行、多行文本的值。
}
// CreateApprovalInstanceReqI18nResource ...
type CreateApprovalInstanceReqI18nResource struct {
Locale string `json:"locale,omitempty"` // 语言, 示例值: "zh-CN", 可选值有: zh-CN: 中文, en-US: 英文, ja-JP: 日文
Texts []*CreateApprovalInstanceReqI18nResourceText `json:"texts,omitempty"` // 文案 key, value, i18n key 以 @i18n@ 开头; 该字段主要用于做国际化, 允许用户同时传多个语言的文案, 审批中心会根据用户当前的语音环境使用对应的文案, 如果没有传用户当前的语音环境文案, 则会使用默认的语言文案, 示例值: { "@i18n@1": "权限申请", "@i18n@2": "OA审批", "@i18n@3": "Permission" }
IsDefault bool `json:"is_default,omitempty"` // 是否默认语言, 默认语言需要包含所有key, 非默认语言如果key不存在会使用默认语言代替, 示例值: true
}
// CreateApprovalInstanceReqI18nResourceText ...
type CreateApprovalInstanceReqI18nResourceText struct {
Key string `json:"key,omitempty"` // 文案key, 示例值: "@i18n@1"
Value string `json:"value,omitempty"` // 文案, 示例值: "people"
}
// CreateApprovalInstanceReqNodeApproverOpenIDList ...
type CreateApprovalInstanceReqNodeApproverOpenIDList struct {
Key *string `json:"key,omitempty"` // node id 或 custom node id, 通过 [查看审批定义](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/approval-v4/approval/get) 获取, 示例值: "46e6d96cfa756980907209209ec03b64"
Value []string `json:"value,omitempty"` // value: 审批人列表, 示例值: ["f7cb567e"]
}
// CreateApprovalInstanceReqNodeApproverUserIDList ...
type CreateApprovalInstanceReqNodeApproverUserIDList struct {
Key *string `json:"key,omitempty"` // node id 或 custom node id, 通过 [查看审批定义](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/approval-v4/approval/get) 获取, 示例值: "46e6d96cfa756980907209209ec03b64"
Value []string `json:"value,omitempty"` // value: 审批人列表, 示例值: ["f7cb567e"]
}
// CreateApprovalInstanceReqNodeCcOpenIDList ...
type CreateApprovalInstanceReqNodeCcOpenIDList struct {
Key *string `json:"key,omitempty"` // node id, 通过 [查看审批定义](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/approval-v4/approval/get) 获取, 示例值: "46e6d96cfa756980907209209ec03b75"
Value []string `json:"value,omitempty"` // value: 审批人列表, 示例值: ["f7cb567e"]
}
// CreateApprovalInstanceReqNodeCcUserIDList ...
type CreateApprovalInstanceReqNodeCcUserIDList struct {
Key *string `json:"key,omitempty"` // node id, 通过 [查看审批定义](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/approval-v4/approval/get) 获取, 示例值: "46e6d96cfa756980907209209ec03b75"
Value []string `json:"value,omitempty"` // value: 审批人列表, 示例值: ["f7cb567e"]
}
// CreateApprovalInstanceResp ...
type CreateApprovalInstanceResp struct {
InstanceCode string `json:"instance_code,omitempty"` // 审批实例 Code
}
// createApprovalInstanceResp ...
type createApprovalInstanceResp struct {
Code int64 `json:"code,omitempty"` // 错误码, 非 0 表示失败
Msg string `json:"msg,omitempty"` // 错误描述
Data *CreateApprovalInstanceResp `json:"data,omitempty"`
Error *ErrorDetail `json:"error,omitempty"`
}