syntax = "proto3"; package dingtalkservice.dingtalkv1; import "validate/validate.proto"; option go_package = "./dingtalk/dingtalkv1;dingtalkv1"; // 审批 service Approval { // 创建审批单 rpc Create (ReqApprovalCreate) returns (RespApprovalDetail) {} // 获取详情 rpc GetDetail(ReqApprovalGetDetail) returns(RespApprovalGetDetail) {} // 获取附件下载链接 rpc GetDownload(ReqApprovalGetDownload) returns(RespApprovalReqApprovalGetDownload) {} // 通过手机号获取用户id rpc GetUserIdByMobile(ReqGetUserIdByMobile) returns(RespGetUserIdByMobile) {} // 创建审批单 rpc CreateByBusinessCode (ReqApprovalCreateByBusinessCode) returns (RespApprovalDetail) {} } message ReqApprovalCreateByBusinessCode { // 用户id int32 userId = 1; // 外部关联id,审批回调时会携带此参数 int64 outId = 2; // 审批模板内容 Body body = 3 [(validate.rules).message.required = true]; // 公司主体id int32 companyId = 4; // 业务编码 string business_code = 5; // 是否需要审批单号 bool is_need_business_id = 6; // 请求的 body 参数,对应钉钉文档中的 body 参数 json_encode后 https://open.dingtalk.com/document/orgapp/initiate-approval message Body { // string process_code = 1 [(validate.rules).string.min_len = 1]; //这里不传此参数要,由业务编码动态决策用哪一个模板ID // 发起人的钉钉ID string originator_user_id = 2 [(validate.rules).string.min_len = 1]; // 部门ID int32 dept_id = 3 [(validate.rules).int32.gte = -1]; // 表单参数 repeated FormComponentValue form_component_values = 4 [(validate.rules).repeated.min_items = 1]; // 指定审批单的执行流程,最大列表长度20,会覆盖审批单在OA后台设置的默认流程。 repeated ProcessInstanceApproverVo approvers_v2 = 5 [(validate.rules).repeated.max_items = 20]; // 自定义节点操作人列表,流程预测结果中节点规则上必填的自选操作人列表,最大列表长度:20,使用此参数时将使用钉钉新版本接口,https://open.dingtalk.com/document/orgapp/create-an-approval-instance repeated TargetSelectActionersVo target_select_actioners = 6[(validate.rules).repeated.max_items = 20]; } message FormComponentValue { string name = 1 [(validate.rules).string.min_len = 1]; string value = 2; string ext_value = 3; } // 审批人列表,最大列表长度20。 message ProcessInstanceApproverVo { string task_action_type = 1; // 会签:AND 或签:OR 单人:NONE repeated string user_ids = 2; // 审批人id 会签/或签 要生效至少两个 } // 使用审批流模板时,流程预测结果中节点规则上必填的自选操作人列表 message TargetSelectActionersVo { string actioner_key = 1; repeated string actioner_user_ids = 2; } } message ReqGetUserIdByMobile { // 手机号 string mobile = 1 [(validate.rules).string.min_len = 1]; // 公司主体id int32 company_id = 2; } message RespGetUserIdByMobile { string userid = 1; } message ReqApprovalGetDownload { string process_instance_id = 1 [(validate.rules).string.min_len = 1]; string file_id = 2 [(validate.rules).string.min_len = 1]; // 公司主体id int32 company_id = 3; } message RespApprovalReqApprovalGetDownload { string download_uri = 1; // 文件下载地址有效期15分钟 } message ReqApprovalGetDetail { // 审批单id string process_instance_id = 1 [(validate.rules).string.min_len = 1]; // 公司主体id int32 company_id = 2; } // 返回的结果,详情见https://open.dingtalk.com/document/orgapp/obtains-the-details-of-a-single-approval-instance#h2-n2q-pvq-r2s message RespApprovalGetDetail { string title = 1; string process_instance_id = 2; // 完成时间,示例:2020-12-21 15:30:27 string finish_time = 3; string originator_userid = 4; string originator_dept_id = 5; string status = 6; string result = 7; repeated FormComponentValue form_component_values = 8; string business_id = 9; repeated Task Tasks = 10; repeated operationRecord operationRecords = 11; // 完成时间,unix时间戳 int32 finish_time_unix = 12; // "":正在处理 "agree":同意 "refuse":拒绝 "terminate":终止 "delete":删除 string final_result = 13; message operationRecord { string date = 1; string userid = 2; string remark = 3; repeated Attachment attachments = 4; // operation_result 操作结果 // AGREE:同意 // REFUSE:拒绝 // NONE string operation_result = 5; // operation_type 操作类型。 //EXECUTE_TASK_NORMAL:正常执行任务 //EXECUTE_TASK_AGENT:代理人执行任务 //APPEND_TASK_BEFORE:前加签任务 //APPEND_TASK_AFTER:后加签任务 //REDIRECT_TASK:转交任务 //START_PROCESS_INSTANCE:发起流程实例 //TERMINATE_PROCESS_INSTANCE:终止(撤销)流程实例 //FINISH_PROCESS_INSTANCE:结束流程实例 //ADD_REMARK:添加评论 //REDIRECT_PROCESS:审批退回 //PROCESS_CC:抄送 string operation_type = 6; message Attachment { string file_name = 1; string file_size = 2; string file_id = 3; // 附件ID string file_type = 4; string space_id = 5; } } message FormComponentValue { string name = 1; string value = 2; string ext_value = 3; string component_type = 4; string id = 5; } message Task { string userid = 1; // TaskStatus 处理状态 // NEW:未启动 // RUNNING:处理中 // PAUSED:暂停 // CANCELED:取消 // COMPLETED:完成 // TERMINATED:终止 string task_status = 2; // TaskResult 处理结果 //AGREE:同意 //REFUSE:拒绝 //REDIRECTED:转交 string task_result = 3; string create_time = 4; string finish_time = 5; string task_id = 6; // 活动节点id string activity_id = 8; // string mobile_url = 9; // string pc_url = 10; } } message ReqApprovalCreate { // 我们系统的用户id,不是钉钉的用户ID, int32 user_id = 1; // 外部关联id,审批回调时会携带此参数 int64 out_id = 2; // 请求的 body 参数,对应钉钉文档中的 body 参数 json_encode后 https://open.dingtalk.com/document/orgapp/initiate-approval Body body = 3 [(validate.rules).message.required = true]; // 公司主体id int32 company_id = 4; // 是否需要审批单号 bool is_need_business_id = 5; message Body { // 模板ID string process_code = 1 [(validate.rules).string.min_len = 1]; // 发起人的钉钉ID string originator_user_id = 2 [(validate.rules).string.min_len = 1]; // 部门ID int32 dept_id = 3 [(validate.rules).int32.gte = -1]; // 表单参数 repeated FormComponentValue form_component_values = 4 [(validate.rules).repeated.min_items = 1]; // 指定审批单的执行流程,最大列表长度20,会覆盖审批单在OA后台设置的默认流程。 repeated ProcessInstanceApproverVo approvers_v2 = 5 [(validate.rules).repeated.max_items = 20]; // 自定义节点操作人列表,流程预测结果中节点规则上必填的自选操作人列表,最大列表长度:20,使用此参数时将使用钉钉新版本接口,https://open.dingtalk.com/document/orgapp/create-an-approval-instance repeated TargetSelectActionersVo target_select_actioners = 6[(validate.rules).repeated.max_items = 20]; } message FormComponentValue { string name = 1 [(validate.rules).string.min_len = 1]; string value = 2; string ext_value = 3; } // 审批人列表,最大列表长度20。 message ProcessInstanceApproverVo { string task_action_type = 1; // 会签:AND 或签:OR 单人:NONE repeated string user_ids = 2; // 审批人id 会签/或签 要生效至少两个 } // 使用审批流模板时,流程预测结果中节点规则上必填的自选操作人列表 message TargetSelectActionersVo { string actioner_key = 1; repeated string actioner_user_ids = 2; } } message RespApprovalDetail{ // dingtalkService记录单据中的主键ID int32 id = 1; // 咱们系统的用户ID int32 user_id = 2; // 钉钉模板ID string template_id = 3; // 钉钉流程实例ID string process_instance_id = 4; // 外部关联ID int32 out_id = 5; // 表单数据 string form_data = 6; // 通知数据 string notify_data = 7; // 审批结果:terminate-终止(可能是撤销或删除),agree-同意,refuse-拒绝,空字符串-没有最终结果 string final_result = 8; // 推送地址事件地址 int32 pushed_url = 9; // 创建时间 int32 create_time = 10; // 完成时间戳 int32 finish_time = 11; // 更新时间 int32 update_time = 12; // 状态: 1-审批中,2-已审批,3-已推送 int32 status = 13; // 主体的企业 id string corp_id = 14; // 审批单号 string business_id = 15; }