From e2aeb6e75d574291a1af95dbae43c70a192b14e3 Mon Sep 17 00:00:00 2001 From: chyroc Date: Tue, 10 Jan 2023 10:04:41 +0800 Subject: [PATCH] codegen - add: BatchCreateMailGroupMember - add: BatchCreateMailGroupPermissionMember - add: BatchCreatePublicMailboxMember - add: BatchDeleteMailGroupMember - add: BatchDeleteMailGroupPermissionMember - add: BatchDeletePublicMailboxMember - add: GetDriveMemberPermissionListOld - add: TransferDriveOwnerPermission - add: CheckDriveMemberPermissionOld - add: UpdateHireJob - feat: Send() && Reply() support UUID to set send msg uuid - update: CheckDriveMemberPermission( **break change** ) - update: GetHelpdeskTicket - update: GetHelpdeskTicketList - update: EventV2HelpdeskTicketMessageCreatedV1Ticket - update: CreateHireJob - update: GetHireJob --- README.md | 26 +- README_CN.md | 26 +- api_admin_badge_get.go | 2 +- api_admin_badge_grant_delete.go | 2 +- api_admin_badge_grant_get.go | 2 +- api_admin_badge_grant_update.go | 2 +- api_admin_badge_image_upload.go | 2 +- api_admin_badge_update.go | 2 +- api_admin_password_reset.go | 2 +- api_chat_create.go | 2 +- api_drive_permission_member_check.go | 18 +- api_drive_permission_member_check_old.go | 78 +++++ api_drive_permission_member_create.go | 10 +- api_drive_permission_member_delete.go | 2 +- api_drive_permission_member_list.go | 2 +- api_drive_permission_member_list_old.go | 85 +++++ api_drive_permission_member_transfer.go | 2 + api_drive_permission_member_update.go | 6 +- api_drive_permission_owner_transfer.go | 78 +++++ api_drive_permission_public_get.go | 4 +- api_drive_permission_public_patch.go | 4 +- ...allback_v2_calendar_calendar_changed_v4.go | 2 +- ...k_v2_helpdesk_ticket_message_created_v1.go | 37 ++- api_helpdesk_ticket_get.go | 59 ++-- api_helpdesk_ticket_get_list.go | 59 ++-- api_hire_job_create.go | 20 +- api_hire_job_get.go | 17 +- api_hire_job_update.go | 301 ++++++++++++++++++ api_human_auth_face_verify_crop_image.go | 2 +- api_human_auth_face_verify_get_auth_result.go | 2 +- api_human_auth_face_verify_upload_image.go | 2 +- api_human_auth_identity.go | 2 +- api_mail_mail_group_member_batch_create.go | 94 ++++++ api_mail_mail_group_member_batch_delete.go | 73 +++++ ...il_group_permission_member_batch_create.go | 94 ++++++ ...il_group_permission_member_batch_delete.go | 73 +++++ ...mail_public_mailbox_member_batch_create.go | 89 ++++++ ...mail_public_mailbox_member_batch_delete.go | 73 +++++ api_message_get_file.go | 2 +- api_message_send.go | 4 +- api_message_send_wrap.go | 16 + api_search_data_source_item_create.go | 2 +- api_search_data_source_item_get.go | 2 +- larkext/folder_impl_permission.go | 10 +- mock.go | 24 +- test/drive_sample_test.go | 206 ++++++++---- test/hire_sample_test.go | 34 +- test/mail_sample_test.go | 212 +++++++++++- 48 files changed, 1640 insertions(+), 228 deletions(-) create mode 100644 api_drive_permission_member_check_old.go create mode 100644 api_drive_permission_member_list_old.go create mode 100644 api_drive_permission_owner_transfer.go create mode 100644 api_hire_job_update.go create mode 100644 api_mail_mail_group_member_batch_create.go create mode 100644 api_mail_mail_group_member_batch_delete.go create mode 100644 api_mail_mail_group_permission_member_batch_create.go create mode 100644 api_mail_mail_group_permission_member_batch_delete.go create mode 100644 api_mail_public_mailbox_member_batch_create.go create mode 100644 api_mail_public_mailbox_member_batch_delete.go diff --git a/README.md b/README.md index 2fc249d1..d125b187 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ https://godoc.org/github.com/chyroc/lark ## Support APIs -API Count: 693, Event Count: 99 +API Count: 703, Event Count: 99
@@ -401,14 +401,13 @@ API Count: 693, Event Count: 99 - PartUploadDriveFile - FinishUploadDriveFile - CreateDriveMemberPermissionOld - - TransferDriveMemberPermission + - TransferDriveOwnerPermission + - CheckDriveMemberPermission - GetDriveMemberPermissionList + - GetDriveMemberPermissionListOld - CreateDriveMemberPermission - - DeleteDriveMemberPermission - - DeleteDriveMemberPermissionOld - - UpdateDriveMemberPermissionOld - UpdateDriveMemberPermission - - CheckDriveMemberPermission + - DeleteDriveMemberPermission - GetDrivePublicPermissionOld - GetDrivePublicPermission - UpdateDrivePublicPermission @@ -501,6 +500,10 @@ API Count: 693, Event Count: 99 - GetWikiNode - MoveDocsToWiki - GetWikiTask + - DeleteDriveMemberPermissionOld + - UpdateDriveMemberPermissionOld + - TransferDriveMemberPermission + - CheckDriveMemberPermissionOld - EHR - GetEHREmployeeList - DownloadEHRAttachments @@ -665,6 +668,7 @@ API Count: 693, Event Count: 99 - Hire - GetHireJobConfig - CreateHireJob + - UpdateHireJob - UpdateHireJobConfig - GetHireJob - GetHireJobManager @@ -706,13 +710,17 @@ API Count: 693, Event Count: 99 - UpdateMailGroup - DeleteMailGroup - CreateMailGroupMember + - DeleteMailGroupMember - GetMailGroupMember - GetMailGroupMemberList - - DeleteMailGroupMember + - BatchCreateMailGroupMember + - BatchDeleteMailGroupMember - CreateMailGroupPermissionMember + - DeleteMailGroupPermissionMember - GetMailGroupPermissionMember - GetMailGroupPermissionMemberList - - DeleteMailGroupPermissionMember + - BatchCreateMailGroupPermissionMember + - BatchDeleteMailGroupPermissionMember - CreateMailGroupAlias - GetMailGroupAliasList - DeleteMailGroupAlias @@ -725,6 +733,8 @@ API Count: 693, Event Count: 99 - CreatePublicMailboxMember - GetPublicMailboxMember - GetPublicMailboxMemberList + - BatchCreatePublicMailboxMember + - BatchDeletePublicMailboxMember - DeletePublicMailboxMember - ClearPublicMailboxMember - CreateMailPublicMailboxAlias diff --git a/README_CN.md b/README_CN.md index c4353dc6..0e8be3c7 100644 --- a/README_CN.md +++ b/README_CN.md @@ -38,7 +38,7 @@ https://godoc.org/github.com/chyroc/lark ## 支持的接口 -API 总数: 693, 事件总数: 99 +API 总数: 703, 事件总数: 99
@@ -401,14 +401,13 @@ API 总数: 693, 事件总数: 99 - PartUploadDriveFile - FinishUploadDriveFile - CreateDriveMemberPermissionOld - - TransferDriveMemberPermission + - TransferDriveOwnerPermission + - CheckDriveMemberPermission - GetDriveMemberPermissionList + - GetDriveMemberPermissionListOld - CreateDriveMemberPermission - - DeleteDriveMemberPermission - - DeleteDriveMemberPermissionOld - - UpdateDriveMemberPermissionOld - UpdateDriveMemberPermission - - CheckDriveMemberPermission + - DeleteDriveMemberPermission - GetDrivePublicPermissionOld - GetDrivePublicPermission - UpdateDrivePublicPermission @@ -501,6 +500,10 @@ API 总数: 693, 事件总数: 99 - GetWikiNode - MoveDocsToWiki - GetWikiTask + - DeleteDriveMemberPermissionOld + - UpdateDriveMemberPermissionOld + - TransferDriveMemberPermission + - CheckDriveMemberPermissionOld - EHR - GetEHREmployeeList - DownloadEHRAttachments @@ -665,6 +668,7 @@ API 总数: 693, 事件总数: 99 - Hire - GetHireJobConfig - CreateHireJob + - UpdateHireJob - UpdateHireJobConfig - GetHireJob - GetHireJobManager @@ -706,13 +710,17 @@ API 总数: 693, 事件总数: 99 - UpdateMailGroup - DeleteMailGroup - CreateMailGroupMember + - DeleteMailGroupMember - GetMailGroupMember - GetMailGroupMemberList - - DeleteMailGroupMember + - BatchCreateMailGroupMember + - BatchDeleteMailGroupMember - CreateMailGroupPermissionMember + - DeleteMailGroupPermissionMember - GetMailGroupPermissionMember - GetMailGroupPermissionMemberList - - DeleteMailGroupPermissionMember + - BatchCreateMailGroupPermissionMember + - BatchDeleteMailGroupPermissionMember - CreateMailGroupAlias - GetMailGroupAliasList - DeleteMailGroupAlias @@ -725,6 +733,8 @@ API 总数: 693, 事件总数: 99 - CreatePublicMailboxMember - GetPublicMailboxMember - GetPublicMailboxMemberList + - BatchCreatePublicMailboxMember + - BatchDeletePublicMailboxMember - DeletePublicMailboxMember - ClearPublicMailboxMember - CreateMailPublicMailboxAlias diff --git a/api_admin_badge_get.go b/api_admin_badge_get.go index 2fff5efd..ba47e4ef 100644 --- a/api_admin_badge_get.go +++ b/api_admin_badge_get.go @@ -21,7 +21,7 @@ import ( "context" ) -// GetAdminBadge 可以通过该接口查询勋章的详情 +// GetAdminBadge 可以通过该接口查询勋章的详情。 // // doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/admin-v1/badge/get func (r *AdminService) GetAdminBadge(ctx context.Context, request *GetAdminBadgeReq, options ...MethodOptionFunc) (*GetAdminBadgeResp, *Response, error) { diff --git a/api_admin_badge_grant_delete.go b/api_admin_badge_grant_delete.go index b0b92c60..640d4144 100644 --- a/api_admin_badge_grant_delete.go +++ b/api_admin_badge_grant_delete.go @@ -21,7 +21,7 @@ import ( "context" ) -// DeleteAdminBadgeGrant 通过该接口可以删除特定授予名单的信息 +// DeleteAdminBadgeGrant 通过该接口可以删除特定授予名单的信息。 // // doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/admin-v1/badge-grant/delete func (r *AdminService) DeleteAdminBadgeGrant(ctx context.Context, request *DeleteAdminBadgeGrantReq, options ...MethodOptionFunc) (*DeleteAdminBadgeGrantResp, *Response, error) { diff --git a/api_admin_badge_grant_get.go b/api_admin_badge_grant_get.go index 192ca55d..036e1279 100644 --- a/api_admin_badge_grant_get.go +++ b/api_admin_badge_grant_get.go @@ -21,7 +21,7 @@ import ( "context" ) -// GetAdminBadgeGrant 通过该接口可以获取特定授予名单的信息 +// GetAdminBadgeGrant 通过该接口可以获取特定授予名单的信息。 // // doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/admin-v1/badge-grant/get func (r *AdminService) GetAdminBadgeGrant(ctx context.Context, request *GetAdminBadgeGrantReq, options ...MethodOptionFunc) (*GetAdminBadgeGrantResp, *Response, error) { diff --git a/api_admin_badge_grant_update.go b/api_admin_badge_grant_update.go index c85fac57..2e2b833e 100644 --- a/api_admin_badge_grant_update.go +++ b/api_admin_badge_grant_update.go @@ -21,7 +21,7 @@ import ( "context" ) -// UpdateAdminBadgeGrant 通过该接口可以修改特定授予名单的相关信息 +// UpdateAdminBadgeGrant 通过该接口可以修改特定授予名单的相关信息。 // // doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/admin-v1/badge-grant/update func (r *AdminService) UpdateAdminBadgeGrant(ctx context.Context, request *UpdateAdminBadgeGrantReq, options ...MethodOptionFunc) (*UpdateAdminBadgeGrantResp, *Response, error) { diff --git a/api_admin_badge_image_upload.go b/api_admin_badge_image_upload.go index 84359f26..1ec934c1 100644 --- a/api_admin_badge_image_upload.go +++ b/api_admin_badge_image_upload.go @@ -22,7 +22,7 @@ import ( "io" ) -// UploadAdminBadgeImage 通过该接口可以上传勋章详情图、挂饰图的文件, 获取对应的文件key +// UploadAdminBadgeImage 通过该接口可以上传勋章详情图、挂饰图的文件, 获取对应的文件key。 // // doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/admin-v1/badge_image/create func (r *AdminService) UploadAdminBadgeImage(ctx context.Context, request *UploadAdminBadgeImageReq, options ...MethodOptionFunc) (*UploadAdminBadgeImageResp, *Response, error) { diff --git a/api_admin_badge_update.go b/api_admin_badge_update.go index c1244860..d760ed8c 100644 --- a/api_admin_badge_update.go +++ b/api_admin_badge_update.go @@ -21,7 +21,7 @@ import ( "context" ) -// UpdateAdminBadge 通过该接口可以修改勋章的信息 +// UpdateAdminBadge 通过该接口可以修改勋章的信息。 // // doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/admin-v1/badge/update func (r *AdminService) UpdateAdminBadge(ctx context.Context, request *UpdateAdminBadgeReq, options ...MethodOptionFunc) (*UpdateAdminBadgeResp, *Response, error) { diff --git a/api_admin_password_reset.go b/api_admin_password_reset.go index ccfbf36c..df99cfb4 100644 --- a/api_admin_password_reset.go +++ b/api_admin_password_reset.go @@ -23,7 +23,7 @@ import ( // AdminResetPassword 重置用户的企业邮箱密码, 仅当用户的邮箱和企业邮箱(别名)一致时生效, 可用于处理飞书企业邮箱登录死锁的问题。 // -// 邮箱死锁: 当用户的登录凭证与飞书企业邮箱一致时, 目前飞书登录流程要求用户输入验证码, 由于飞书邮箱无单独的帐号体系, 则未登录时无法收取邮箱验证码, 即陷入死锁 +// 邮箱死锁: 当用户的登录凭证与飞书企业邮箱一致时, 目前飞书登录流程要求用户输入验证码, 由于飞书邮箱无单独的帐号体系, 则未登录时无法收取邮箱验证码, 即陷入死锁。 // // doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/admin-v1/password/reset func (r *AdminService) AdminResetPassword(ctx context.Context, request *AdminResetPasswordReq, options ...MethodOptionFunc) (*AdminResetPasswordResp, *Response, error) { diff --git a/api_chat_create.go b/api_chat_create.go index 32215ca0..81a9407a 100644 --- a/api_chat_create.go +++ b/api_chat_create.go @@ -70,7 +70,7 @@ type CreateChatReq struct { I18nNames *I18nNames `json:"i18n_names,omitempty"` // 群国际化名称 OwnerID *string `json:"owner_id,omitempty"` // 创建群时指定的群主, 不填时指定建群的机器人为群主。群主 ID值应与查询参数中的 [user_id_type] 对应;推荐使用 OpenID, 获取方式可参考文档[如何获取 Open ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid), 示例值: "ou_7d8a6e6df7621556ce0d21922b676706ccs" UserIDList []string `json:"user_id_list,omitempty"` // 创建群时邀请的群成员, ID 类型在查询参数 [user_id_type] 中指定;推荐使用 OpenID, 获取方式可参考文档[如何获取 Open ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid), 注意: 最多同时邀请 50 个用户, 为便于在客户端查看效果, 建议调试接口时加入开发者自身ID, 示例值: ["ou_7d8a6e6df7621556ce0d21922b676706ccs"], 最大长度: `50` - BotIDList []string `json:"bot_id_list,omitempty"` // 创建群时邀请的群机器人;可参考[如何获取应用的 App ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-app-id)来获取应用的App ID, 注意: 拉机器人入群请使用`app_id`, 最多同时邀请5个机器人, 并且群组最多容纳 15 个机器人, 示例值: ["cli_a10fbf7e94b8d01d"], 最大长度: `5` + BotIDList []string `json:"bot_id_list,omitempty"` // 创建群时邀请的群机器人;可参考[如何获取应用的 App ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-app-id)来获取应用的App ID, 注意: 操作此接口的机器人会自动入群, 无需重复填写, 拉机器人入群请使用`app_id`, 最多同时邀请5个机器人, 并且群组最多容纳 15 个机器人, 示例值: ["cli_a10fbf7e94b8d01d"], 最大长度: `5` ChatMode *ChatMode `json:"chat_mode,omitempty"` // 群模式, 可选值有: `group`: 群组, 示例值: "group", 默认值: `group` ChatType *ChatType `json:"chat_type,omitempty"` // 群类型, 可选值有: `private`: 私有群, `public`: 公开群, 示例值: "private", 默认值: `private` External *bool `json:"external,omitempty"` // 是否是外部群;若群组需要邀请不同租户的用户或机器人, 请指定为外部群;, 示例值: false, 默认值: `false` diff --git a/api_drive_permission_member_check.go b/api_drive_permission_member_check.go index 98a56c94..3c744690 100644 --- a/api_drive_permission_member_check.go +++ b/api_drive_permission_member_check.go @@ -23,7 +23,7 @@ import ( // CheckDriveMemberPermission 该接口用于根据 filetoken 判断当前登录用户是否具有某权限。 // -// doc: https://open.feishu.cn/document/ukTMukTMukTM/uYzN3UjL2czN14iN3cTN +// doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/permission-member/auth func (r *DriveService) CheckDriveMemberPermission(ctx context.Context, request *CheckDriveMemberPermissionReq, options ...MethodOptionFunc) (*CheckDriveMemberPermissionResp, *Response, error) { if r.cli.mock.mockDriveCheckDriveMemberPermission != nil { r.cli.log(ctx, LogLevelDebug, "[lark] Drive#CheckDriveMemberPermission mock enable") @@ -33,8 +33,8 @@ func (r *DriveService) CheckDriveMemberPermission(ctx context.Context, request * req := &RawRequestReq{ Scope: "Drive", API: "CheckDriveMemberPermission", - Method: "POST", - URL: r.cli.openBaseURL + "/open-apis/drive/permission/member/permitted", + Method: "GET", + URL: r.cli.openBaseURL + "/open-apis/drive/v1/permissions/:token/members/auth", Body: request, MethodOption: newMethodOption(options), NeedTenantAccessToken: true, @@ -58,19 +58,19 @@ func (r *Mock) UnMockDriveCheckDriveMemberPermission() { // CheckDriveMemberPermissionReq ... type CheckDriveMemberPermissionReq struct { - Token string `json:"token,omitempty"` // 文件的 token, 获取方式见 [如何获取云文档资源相关 token](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN#08bb5df6) - Type string `json:"type,omitempty"` // 文档类型, 可选 doc、docx、sheet、bitable、file - Perm string `json:"perm,omitempty"` // 权限, "view" or "edit" or "share" + Token string `path:"token" json:"-"` // 文件的 token, 示例值: "doccnBKgoMyY5OMbUG6FioTXuBe" + Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档, mindnote: 思维笔记, minutes: 妙记 + Action string `query:"action" json:"-"` // 需要判断的权限, 示例值: "view", 可选值有: view: 阅读, edit: 编辑, share: 分享, comment: 评论, export: 导出, copy: 拷贝, print: 打印 } // CheckDriveMemberPermissionResp ... type CheckDriveMemberPermissionResp struct { - IsPermitted bool `json:"is_permitted,omitempty"` // 是否具有指定权限 + AuthResult bool `json:"auth_result,omitempty"` // 是否有权限 } // checkDriveMemberPermissionResp ... type checkDriveMemberPermissionResp struct { - Code int64 `json:"code,omitempty"` - Msg string `json:"msg,omitempty"` + Code int64 `json:"code,omitempty"` // 错误码, 非 0 表示失败 + Msg string `json:"msg,omitempty"` // 错误描述 Data *CheckDriveMemberPermissionResp `json:"data,omitempty"` } diff --git a/api_drive_permission_member_check_old.go b/api_drive_permission_member_check_old.go new file mode 100644 index 00000000..9c1f8901 --- /dev/null +++ b/api_drive_permission_member_check_old.go @@ -0,0 +1,78 @@ +// 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" +) + +// CheckDriveMemberPermissionOld 该接口用于根据 filetoken 判断当前登录用户是否具有某权限。 +// +// doc: https://open.feishu.cn/document/ukTMukTMukTM/uYzN3UjL2czN14iN3cTN +// +// Deprecated +func (r *DriveService) CheckDriveMemberPermissionOld(ctx context.Context, request *CheckDriveMemberPermissionOldReq, options ...MethodOptionFunc) (*CheckDriveMemberPermissionOldResp, *Response, error) { + if r.cli.mock.mockDriveCheckDriveMemberPermissionOld != nil { + r.cli.log(ctx, LogLevelDebug, "[lark] Drive#CheckDriveMemberPermissionOld mock enable") + return r.cli.mock.mockDriveCheckDriveMemberPermissionOld(ctx, request, options...) + } + + req := &RawRequestReq{ + Scope: "Drive", + API: "CheckDriveMemberPermissionOld", + Method: "POST", + URL: r.cli.openBaseURL + "/open-apis/drive/permission/member/permitted", + Body: request, + MethodOption: newMethodOption(options), + NeedTenantAccessToken: true, + NeedUserAccessToken: true, + } + resp := new(checkDriveMemberPermissionOldResp) + + response, err := r.cli.RawRequest(ctx, req, resp) + return resp.Data, response, err +} + +// MockDriveCheckDriveMemberPermissionOld mock DriveCheckDriveMemberPermissionOld method +func (r *Mock) MockDriveCheckDriveMemberPermissionOld(f func(ctx context.Context, request *CheckDriveMemberPermissionOldReq, options ...MethodOptionFunc) (*CheckDriveMemberPermissionOldResp, *Response, error)) { + r.mockDriveCheckDriveMemberPermissionOld = f +} + +// UnMockDriveCheckDriveMemberPermissionOld un-mock DriveCheckDriveMemberPermissionOld method +func (r *Mock) UnMockDriveCheckDriveMemberPermissionOld() { + r.mockDriveCheckDriveMemberPermissionOld = nil +} + +// CheckDriveMemberPermissionOldReq ... +type CheckDriveMemberPermissionOldReq struct { + Token string `json:"token,omitempty"` // 文件的 token, 获取方式见 [如何获取云文档资源相关 token](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN#08bb5df6) + Type string `json:"type,omitempty"` // 文档类型, 可选 doc、docx、sheet、bitable、file + Perm string `json:"perm,omitempty"` // 权限, "view" or "edit" or "share" +} + +// CheckDriveMemberPermissionOldResp ... +type CheckDriveMemberPermissionOldResp struct { + IsPermitted bool `json:"is_permitted,omitempty"` // 是否具有指定权限 +} + +// checkDriveMemberPermissionOldResp ... +type checkDriveMemberPermissionOldResp struct { + Code int64 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + Data *CheckDriveMemberPermissionOldResp `json:"data,omitempty"` +} diff --git a/api_drive_permission_member_create.go b/api_drive_permission_member_create.go index 9d9375c7..94b77ba8 100644 --- a/api_drive_permission_member_create.go +++ b/api_drive_permission_member_create.go @@ -59,11 +59,11 @@ func (r *Mock) UnMockDriveCreateDriveMemberPermission() { // CreateDriveMemberPermissionReq ... type CreateDriveMemberPermissionReq struct { Token string `path:"token" json:"-"` // 文件的 token, 获取方式见 [如何获取云文档资源相关 token](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN#08bb5df6), 示例值: "doccnBKgoMyY5OMbUG6FioTXuBe" - Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档, folder: 文件夹, mindnote: 思维笔记 - NeedNotification *bool `query:"need_notification" json:"-"` // 添加权限后是否通知对方, 示例值: false, 默认值: `false` + Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档, folder: 文件夹, mindnote: 思维笔记, minutes: 妙记 + NeedNotification *bool `query:"need_notification" json:"-"` // 添加权限后是否通知对方, 注意: 使用`tenant_access_token`访问不支持该参数, 示例值: false, 默认值: `false` MemberType string `json:"member_type,omitempty"` // 协作者 ID 类型, 与协作者 ID 需要对应, 示例值: "openid", 可选值有: email: 飞书邮箱, openid: 开放平台ID, openchat: 开放平台群组ID, opendepartmentid: 开放平台部门ID, userid: 用户自定义ID - MemberID string `json:"member_id,omitempty"` // 协作者 ID, 与协作者 ID 类型需要对应, 示例值: "string" - Perm string `json:"perm,omitempty"` // 协作者对应的权限角色, 示例值: "view", 可选值有: view: 可阅读角色, edit: 可编辑角色, full_access: 可管理角色 + MemberID string `json:"member_id,omitempty"` // 协作者 ID, 与协作者 ID 类型需要对应, 示例值: "ou_67e5ecb64ce1c0bd94612c17999db411" + Perm string `json:"perm,omitempty"` // 协作者对应的权限角色, 注意: 妙记还不支持可管理角色, 示例值: "view", 可选值有: view: 可阅读角色, edit: 可编辑角色, full_access: 可管理角色 } // CreateDriveMemberPermissionResp ... @@ -75,7 +75,7 @@ type CreateDriveMemberPermissionResp struct { type CreateDriveMemberPermissionRespMember struct { MemberType string `json:"member_type,omitempty"` // 协作者 ID 类型, 与协作者 ID 需要对应, 可选值有: email: 飞书邮箱, openid: 开放平台ID, openchat: 开放平台群组ID, opendepartmentid: 开放平台部门ID, userid: 用户自定义ID MemberID string `json:"member_id,omitempty"` // 协作者 ID, 与协作者 ID 类型需要对应 - Perm string `json:"perm,omitempty"` // 协作者对应的权限角色, 可选值有: view: 可阅读角色, edit: 可编辑角色, full_access: 可管理角色 + Perm string `json:"perm,omitempty"` // 协作者对应的权限角色, 注意: 妙记还不支持可管理角色, 可选值有: view: 可阅读角色, edit: 可编辑角色, full_access: 可管理角色 } // createDriveMemberPermissionResp ... diff --git a/api_drive_permission_member_delete.go b/api_drive_permission_member_delete.go index 89ce8e5c..63e6a027 100644 --- a/api_drive_permission_member_delete.go +++ b/api_drive_permission_member_delete.go @@ -60,7 +60,7 @@ func (r *Mock) UnMockDriveDeleteDriveMemberPermission() { type DeleteDriveMemberPermissionReq struct { Token string `path:"token" json:"-"` // 文件的 token, 获取方式见 [如何获取云文档资源相关 token](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN#08bb5df6), 示例值: "doccnBKgoMyY5OMbUG6FioTXuBe" MemberID string `path:"member_id" json:"-"` // 协作者 ID, 与协作者 ID 类型需要对应, 示例值: "ou_7dab8a3d3cdcc9da365777c7ad535d62" - Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档, folder: 文件夹, mindnote: 思维笔记 + Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档, folder: 文件夹, mindnote: 思维笔记, minutes: 妙记 MemberType string `query:"member_type" json:"-"` // 协作者 ID 类型, 与协作者 ID 需要对应, 示例值: "openid", 可选值有: email: 邮箱地址, openid: [开放平台ID](https://open.feishu.cn/document/home/user-identity-introduction/how-to-get), openchat: [开放平台群组](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/chat-id-description), opendepartmentid: [开放平台部门ID](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/field-overview), userid: [用户自定义ID](https://open.feishu.cn/document/home/user-identity-introduction/how-to-get) } diff --git a/api_drive_permission_member_list.go b/api_drive_permission_member_list.go index c1c4d41a..371ded7e 100644 --- a/api_drive_permission_member_list.go +++ b/api_drive_permission_member_list.go @@ -62,7 +62,7 @@ func (r *Mock) UnMockDriveGetDriveMemberPermissionList() { // GetDriveMemberPermissionListReq ... type GetDriveMemberPermissionListReq struct { Token string `path:"token" json:"-"` // 文件的 token, 获取方式见 [如何获取云文档资源相关 token](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN#08bb5df6), 示例值: "doccnBKgoMyY5OMbUG6FioTXuBe" - Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档, mindnote: 思维笔记 + Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档, mindnote: 思维笔记, minutes: 妙记 Fields *string `query:"fields" json:"-"` // 指定返回的协作者字段信息, 如无指定则默认不返回, 可选值有: `name`: 协作者名, `type`: 协作者类型, `avatar`: 头像, `external_label`: 外部标签, 注意: 你可以使用特殊值`*`指定返回目前支持的所有字段, 你可以使用`, `分隔若干个你想指定返回的字段, 如: `name, avatar`, 按需指定返回字段接口性能更好, 示例值: "*" } diff --git a/api_drive_permission_member_list_old.go b/api_drive_permission_member_list_old.go new file mode 100644 index 00000000..105ef126 --- /dev/null +++ b/api_drive_permission_member_list_old.go @@ -0,0 +1,85 @@ +// 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" +) + +// GetDriveMemberPermissionListOld 该接口用于根据 filetoken 查询协作者, 目前包括人("user")和群("chat") 。 +// +// 你能获取到协作者列表的前提是你对该文档有分享权限 +// +// doc: https://open.feishu.cn/document/ukTMukTMukTM/uATN3UjLwUzN14CM1cTN +func (r *DriveService) GetDriveMemberPermissionListOld(ctx context.Context, request *GetDriveMemberPermissionListOldReq, options ...MethodOptionFunc) (*GetDriveMemberPermissionListOldResp, *Response, error) { + if r.cli.mock.mockDriveGetDriveMemberPermissionListOld != nil { + r.cli.log(ctx, LogLevelDebug, "[lark] Drive#GetDriveMemberPermissionListOld mock enable") + return r.cli.mock.mockDriveGetDriveMemberPermissionListOld(ctx, request, options...) + } + + req := &RawRequestReq{ + Scope: "Drive", + API: "GetDriveMemberPermissionListOld", + Method: "POST", + URL: r.cli.openBaseURL + "/open-apis/drive/permission/member/list", + Body: request, + MethodOption: newMethodOption(options), + NeedTenantAccessToken: true, + NeedUserAccessToken: true, + } + resp := new(getDriveMemberPermissionListOldResp) + + response, err := r.cli.RawRequest(ctx, req, resp) + return resp.Data, response, err +} + +// MockDriveGetDriveMemberPermissionListOld mock DriveGetDriveMemberPermissionListOld method +func (r *Mock) MockDriveGetDriveMemberPermissionListOld(f func(ctx context.Context, request *GetDriveMemberPermissionListOldReq, options ...MethodOptionFunc) (*GetDriveMemberPermissionListOldResp, *Response, error)) { + r.mockDriveGetDriveMemberPermissionListOld = f +} + +// UnMockDriveGetDriveMemberPermissionListOld un-mock DriveGetDriveMemberPermissionListOld method +func (r *Mock) UnMockDriveGetDriveMemberPermissionListOld() { + r.mockDriveGetDriveMemberPermissionListOld = nil +} + +// GetDriveMemberPermissionListOldReq ... +type GetDriveMemberPermissionListOldReq struct { + Token string `json:"token,omitempty"` // 文件的 token, 获取方式见 [如何获取云文档资源相关 token](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN#08bb5df6) + Type string `json:"type,omitempty"` // 文档类型, 可选 doc、docx、sheet、bitable、file +} + +// GetDriveMemberPermissionListOldResp ... +type GetDriveMemberPermissionListOldResp struct { + Members []*GetDriveMemberPermissionListOldRespMember `json:"members,omitempty"` // 协作者列表 +} + +// GetDriveMemberPermissionListOldRespMember ... +type GetDriveMemberPermissionListOldRespMember struct { + MemberType string `json:"member_type,omitempty"` // 协作者类型 "user" or "chat" + MemberOpenID string `json:"member_open_id,omitempty"` // 协作者openid + MemberUserID string `json:"member_user_id,omitempty"` // 协作者userid(仅当member_type="user"时有效) + Perm string `json:"perm,omitempty"` // 协作者权限 (注意: 有"edit"权限的协作者一定有"view"权限) +} + +// getDriveMemberPermissionListOldResp ... +type getDriveMemberPermissionListOldResp struct { + Code int64 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + Data *GetDriveMemberPermissionListOldResp `json:"data,omitempty"` +} diff --git a/api_drive_permission_member_transfer.go b/api_drive_permission_member_transfer.go index 1c2aa869..e6e6be5d 100644 --- a/api_drive_permission_member_transfer.go +++ b/api_drive_permission_member_transfer.go @@ -24,6 +24,8 @@ import ( // TransferDriveMemberPermission 该接口用于根据文档信息和用户信息转移文档的所有者。 // // doc: https://open.feishu.cn/document/ukTMukTMukTM/uQzNzUjL0czM14CN3MTN +// +// Deprecated func (r *DriveService) TransferDriveMemberPermission(ctx context.Context, request *TransferDriveMemberPermissionReq, options ...MethodOptionFunc) (*TransferDriveMemberPermissionResp, *Response, error) { if r.cli.mock.mockDriveTransferDriveMemberPermission != nil { r.cli.log(ctx, LogLevelDebug, "[lark] Drive#TransferDriveMemberPermission mock enable") diff --git a/api_drive_permission_member_update.go b/api_drive_permission_member_update.go index b2fe61ce..fb168910 100644 --- a/api_drive_permission_member_update.go +++ b/api_drive_permission_member_update.go @@ -63,9 +63,9 @@ type UpdateDriveMemberPermissionReq struct { Token string `path:"token" json:"-"` // 文件的 token, 获取方式见 [如何获取云文档资源相关 token](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN#08bb5df6), 示例值: "doccnBKgoMyY5OMbUG6FioTXuBe" MemberID string `path:"member_id" json:"-"` // 协作者 ID, 与协作者 ID 类型需要对应, 示例值: "ou_7dab8a3d3cdcc9da365777c7ad535d62" NeedNotification *bool `query:"need_notification" json:"-"` // 更新权限后是否通知对方, 注意: 使用`tenant_access_token`访问不支持该参数, 示例值: false, 默认值: `false` - Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档, mindnote: 思维笔记 + Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档, mindnote: 思维笔记, minutes: 妙记 MemberType string `json:"member_type,omitempty"` // 协作者 ID 类型, 与协作者 ID 需要对应, 示例值: "openid", 可选值有: email: 飞书邮箱, openid: 开放平台ID, openchat: 开放平台群组ID, opendepartmentid: 开放平台部门ID, userid: 用户自定义ID - Perm string `json:"perm,omitempty"` // 协作者对应的权限角色, 示例值: "view", 可选值有: view: 可阅读角色, edit: 可编辑角色, full_access: 可管理角色 + Perm string `json:"perm,omitempty"` // 协作者对应的权限角色, 注意: 妙记还不支持可管理角色, 示例值: "view", 可选值有: view: 可阅读角色, edit: 可编辑角色, full_access: 可管理角色 } // UpdateDriveMemberPermissionResp ... @@ -77,7 +77,7 @@ type UpdateDriveMemberPermissionResp struct { type UpdateDriveMemberPermissionRespMember struct { MemberType string `json:"member_type,omitempty"` // 协作者 ID 类型, 与协作者 ID 需要对应, 可选值有: email: 飞书邮箱, openid: 开放平台ID, openchat: 开放平台群组ID, opendepartmentid: 开放平台部门ID, userid: 用户自定义ID MemberID string `json:"member_id,omitempty"` // 协作者 ID, 与协作者 ID 类型需要对应 - Perm string `json:"perm,omitempty"` // 协作者对应的权限角色, 可选值有: view: 可阅读角色, edit: 可编辑角色, full_access: 可管理角色 + Perm string `json:"perm,omitempty"` // 协作者对应的权限角色, 注意: 妙记还不支持可管理角色, 可选值有: view: 可阅读角色, edit: 可编辑角色, full_access: 可管理角色 } // updateDriveMemberPermissionResp ... diff --git a/api_drive_permission_owner_transfer.go b/api_drive_permission_owner_transfer.go new file mode 100644 index 00000000..574bd5ed --- /dev/null +++ b/api_drive_permission_owner_transfer.go @@ -0,0 +1,78 @@ +// 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" +) + +// TransferDriveOwnerPermission 该接口用于根据 filetoken 和用户信息转移文件的所有者。 +// +// doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/permission-member/transfer_owner +func (r *DriveService) TransferDriveOwnerPermission(ctx context.Context, request *TransferDriveOwnerPermissionReq, options ...MethodOptionFunc) (*TransferDriveOwnerPermissionResp, *Response, error) { + if r.cli.mock.mockDriveTransferDriveOwnerPermission != nil { + r.cli.log(ctx, LogLevelDebug, "[lark] Drive#TransferDriveOwnerPermission mock enable") + return r.cli.mock.mockDriveTransferDriveOwnerPermission(ctx, request, options...) + } + + req := &RawRequestReq{ + Scope: "Drive", + API: "TransferDriveOwnerPermission", + Method: "POST", + URL: r.cli.openBaseURL + "/open-apis/drive/v1/permissions/:token/members/transfer_owner", + Body: request, + MethodOption: newMethodOption(options), + NeedTenantAccessToken: true, + NeedUserAccessToken: true, + } + resp := new(transferDriveOwnerPermissionResp) + + response, err := r.cli.RawRequest(ctx, req, resp) + return resp.Data, response, err +} + +// MockDriveTransferDriveOwnerPermission mock DriveTransferDriveOwnerPermission method +func (r *Mock) MockDriveTransferDriveOwnerPermission(f func(ctx context.Context, request *TransferDriveOwnerPermissionReq, options ...MethodOptionFunc) (*TransferDriveOwnerPermissionResp, *Response, error)) { + r.mockDriveTransferDriveOwnerPermission = f +} + +// UnMockDriveTransferDriveOwnerPermission un-mock DriveTransferDriveOwnerPermission method +func (r *Mock) UnMockDriveTransferDriveOwnerPermission() { + r.mockDriveTransferDriveOwnerPermission = nil +} + +// TransferDriveOwnerPermissionReq ... +type TransferDriveOwnerPermissionReq struct { + Token string `path:"token" json:"-"` // 文件的 token, 示例值: "doccnBKgoMyY5OMbUG6FioTXuBe" + Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档, mindnote: 思维笔记, minutes: 妙记 + NeedNotification *bool `query:"need_notification" json:"-"` // 是否需要通知新的文件所有者, 示例值: true, 默认值: `true` + RemoveOldOwner *bool `query:"remove_old_owner" json:"-"` // 转移后是否需要移除原文件所有者的权限, 示例值: false, 默认值: `false` + MemberType string `json:"member_type,omitempty"` // 文件所有者的 ID 类型, 示例值: "openid", 可选值有: email: 飞书邮箱, openid: 开放平台ID, userid: 用户自定义ID + MemberID string `json:"member_id,omitempty"` // 文件所有者的 ID, 与文件所有者的 ID 类型需要对应, 示例值: "ou_67e5ecb64ce1c0bd94612c17999db411" +} + +// TransferDriveOwnerPermissionResp ... +type TransferDriveOwnerPermissionResp struct { +} + +// transferDriveOwnerPermissionResp ... +type transferDriveOwnerPermissionResp struct { + Code int64 `json:"code,omitempty"` // 错误码, 非 0 表示失败 + Msg string `json:"msg,omitempty"` // 错误描述 + Data *TransferDriveOwnerPermissionResp `json:"data,omitempty"` +} diff --git a/api_drive_permission_public_get.go b/api_drive_permission_public_get.go index dde85206..ae1bd51e 100644 --- a/api_drive_permission_public_get.go +++ b/api_drive_permission_public_get.go @@ -59,7 +59,7 @@ func (r *Mock) UnMockDriveGetDrivePublicPermission() { // GetDrivePublicPermissionReq ... type GetDrivePublicPermissionReq struct { Token string `path:"token" json:"-"` // 文件的 token, 获取方式见 [如何获取云文档资源相关 token](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN#08bb5df6), 示例值: "doccnBKgoMyY5OMbUG6FioTXuBe" - Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档 + Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档, mindnote: 思维笔记, minutes: 妙记 } // GetDrivePublicPermissionResp ... @@ -73,7 +73,7 @@ type GetDrivePublicPermissionRespPermissionPublic struct { SecurityEntity string `json:"security_entity,omitempty"` // 谁可以复制内容、创建副本、打印、下载, 可选值有: anyone_can_view: 拥有可阅读权限的用户, anyone_can_edit: 拥有可编辑权限的用户, only_full_access: 拥有可管理权限(包括我)的用户 CommentEntity string `json:"comment_entity,omitempty"` // 可评论设置, 可选值有: anyone_can_view: 拥有可阅读权限的用户, anyone_can_edit: 拥有可编辑权限的用户 ShareEntity string `json:"share_entity,omitempty"` // 谁可以添加和管理协作者, 可选值有: anyone: 所有可阅读或编辑此文档的用户, same_tenant: 组织内所有可阅读或编辑此文档的用户, only_full_access: 拥有可管理权限(包括我)的用户 - LinkShareEntity string `json:"link_share_entity,omitempty"` // 链接分享设置, 可选值有: tenant_readable: 组织内获得链接的人可阅读, tenant_editable: 组织内获得链接的人可编辑, anyone_readable: 互联网上获得链接的任何人可阅读, anyone_editable: 互联网上获得链接的任何人可编辑, closed: 关闭链接分享 注意: 使用`tenant_access_token`访问不支持该参数 + LinkShareEntity string `json:"link_share_entity,omitempty"` // 链接分享设置, 可选值有: tenant_readable: 组织内获得链接的人可阅读, tenant_editable: 组织内获得链接的人可编辑, anyone_readable: 互联网上获得链接的任何人可阅读, anyone_editable: 互联网上获得链接的任何人可编辑, closed: 关闭链接分享 InviteExternal bool `json:"invite_external,omitempty"` // 允许非「可管理权限」的人分享到组织外 LockSwitch bool `json:"lock_switch,omitempty"` // 节点加锁状态 } diff --git a/api_drive_permission_public_patch.go b/api_drive_permission_public_patch.go index 5b846d48..fa2559f3 100644 --- a/api_drive_permission_public_patch.go +++ b/api_drive_permission_public_patch.go @@ -59,7 +59,7 @@ func (r *Mock) UnMockDriveUpdateDrivePublicPermission() { // UpdateDrivePublicPermissionReq ... type UpdateDrivePublicPermissionReq struct { Token string `path:"token" json:"-"` // 文件的 token, 获取方式见 [如何获取云文档资源相关 token](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN#08bb5df6), 示例值: "doccnBKgoMyY5OMbUG6FioTXuBe" - Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档 + Type string `query:"type" json:"-"` // 文件类型, 需要与文件的 token 相匹配, 示例值: "doc", 可选值有: doc: 文档, sheet: 电子表格, file: 云空间文件, wiki: 知识库节点, bitable: 多维表格, docx: 新版文档, mindnote: 思维笔记, minutes: 妙记 ExternalAccess *bool `json:"external_access,omitempty"` // 允许内容被分享到组织外, 示例值: true SecurityEntity *string `json:"security_entity,omitempty"` // 谁可以复制内容、创建副本、打印、下载, 示例值: "anyone_can_view", 可选值有: anyone_can_view: 拥有可阅读权限的用户, anyone_can_edit: 拥有可编辑权限的用户, only_full_access: 拥有可管理权限(包括我)的用户 CommentEntity *string `json:"comment_entity,omitempty"` // 谁可以评论, 示例值: "anyone_can_view", 可选值有: anyone_can_view: 拥有可阅读权限的用户, anyone_can_edit: 拥有可编辑权限的用户 @@ -79,7 +79,7 @@ type UpdateDrivePublicPermissionRespPermissionPublic struct { SecurityEntity string `json:"security_entity,omitempty"` // 谁可以复制内容、创建副本、打印、下载, 可选值有: anyone_can_view: 拥有可阅读权限的用户, anyone_can_edit: 拥有可编辑权限的用户, only_full_access: 拥有可管理权限(包括我)的用户 CommentEntity string `json:"comment_entity,omitempty"` // 可评论设置, 可选值有: anyone_can_view: 拥有可阅读权限的用户, anyone_can_edit: 拥有可编辑权限的用户 ShareEntity string `json:"share_entity,omitempty"` // 谁可以添加和管理协作者, 可选值有: anyone: 所有可阅读或编辑此文档的用户, same_tenant: 组织内所有可阅读或编辑此文档的用户, only_full_access: 拥有可管理权限(包括我)的用户 - LinkShareEntity string `json:"link_share_entity,omitempty"` // 链接分享设置, 可选值有: tenant_readable: 组织内获得链接的人可阅读, tenant_editable: 组织内获得链接的人可编辑, anyone_readable: 互联网上获得链接的任何人可阅读, anyone_editable: 互联网上获得链接的任何人可编辑, closed: 关闭链接分享 注意: 使用`tenant_access_token`访问不支持该参数 + LinkShareEntity string `json:"link_share_entity,omitempty"` // 链接分享设置, 可选值有: tenant_readable: 组织内获得链接的人可阅读, tenant_editable: 组织内获得链接的人可编辑, anyone_readable: 互联网上获得链接的任何人可阅读, anyone_editable: 互联网上获得链接的任何人可编辑, closed: 关闭链接分享 InviteExternal bool `json:"invite_external,omitempty"` // 允许非「可管理权限」的人分享到组织外 LockSwitch bool `json:"lock_switch,omitempty"` // 节点加锁状态 } diff --git a/api_event_callback_v2_calendar_calendar_changed_v4.go b/api_event_callback_v2_calendar_calendar_changed_v4.go index bf7cf408..30f6ddc8 100644 --- a/api_event_callback_v2_calendar_calendar_changed_v4.go +++ b/api_event_callback_v2_calendar_calendar_changed_v4.go @@ -23,7 +23,7 @@ import ( // EventV2CalendarCalendarChangedV4 当订阅用户的日历列表有日历变动时触发此事件。{使用示例}(url=/api/tools/api_explore/api_explore_config?project=calendar&version=v4&resource=calendar&event=changed) // -// 应用首先需要调用上述接口建立订阅关系。应用收到该事件后, 使用事件的 user_list 字段中的用户对应的 user_access_token 调用[获取日历列表](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/calendar-v4/calendar/list)接口拉取增量的变更数据 +// 应用首先需要调用上述接口建立订阅关系。应用收到该事件后, 使用事件的 user_id_list 字段中的用户对应的 user_access_token 调用[获取日历列表](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/calendar-v4/calendar/list)接口拉取增量的变更数据 // // doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/calendar-v4/calendar/events/changed func (r *EventCallbackService) HandlerEventV2CalendarCalendarChangedV4(f EventV2CalendarCalendarChangedV4Handler) { diff --git a/api_event_callback_v2_helpdesk_ticket_message_created_v1.go b/api_event_callback_v2_helpdesk_ticket_message_created_v1.go index c6ff1bc6..99c692a9 100644 --- a/api_event_callback_v2_helpdesk_ticket_message_created_v1.go +++ b/api_event_callback_v2_helpdesk_ticket_message_created_v1.go @@ -63,21 +63,21 @@ type EventV2HelpdeskTicketMessageCreatedV1SenderID struct { // EventV2HelpdeskTicketMessageCreatedV1Ticket ... type EventV2HelpdeskTicketMessageCreatedV1Ticket struct { - TicketID string `json:"ticket_id,omitempty"` // 工单ID, [可以从工单列表里面取](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list), [也可以订阅工单创建事件获取](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/events/created) - Comments *EventV2HelpdeskTicketMessageCreatedV1TicketComments `json:"comments,omitempty"` // 备注 - TicketType int64 `json:"ticket_type,omitempty"` // 工单阶段: 1. 机器人 2. 人工 - Status int64 `json:"status,omitempty"` // 工单状态, 1: 已创建 2: 处理中 3: 排队中 4: 待定 5: 待用户响应 50: 被机器人关闭 51: 被客服关闭 52: 用户自己关闭 - DissatisfactionReason []string `json:"dissatisfaction_reason,omitempty"` // 不满意原因 - CustomizedFields []*EventV2HelpdeskTicketMessageCreatedV1TicketCustomizedField `json:"customized_fields,omitempty"` // 自定义字段列表, 没有值时不设置, 下拉菜单的value对应工单字段里面的children.display_name, [获取全部工单自定义字段](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/list-ticket-customized-fields) - AgentServiceDuration float64 `json:"agent_service_duration,omitempty"` // 客服服务时长, 客服最后一次回复时间距离客服进入时间间隔, 单位分钟 - AgentFirstResponseDuration int64 `json:"agent_first_response_duration,omitempty"` // 客服首次回复时间距离客服进入时间的间隔(秒) - BotServiceDuration int64 `json:"bot_service_duration,omitempty"` // 机器人服务时间: 客服进入时间距离工单创建时间的间隔, 单位秒 - AgentResolutionTime int64 `json:"agent_resolution_time,omitempty"` // 客服解决时长, 关单时间距离客服进入时间的间隔, 单位秒 - ActualProcessingTime int64 `json:"actual_processing_time,omitempty"` // 工单实际处理时间: 从客服进入到关单, 单位秒 - AgentEntryTime int64 `json:"agent_entry_time,omitempty"` // 客服进入时间, 单位毫秒 - AgentFirstResponseTime int64 `json:"agent_first_response_time,omitempty"` // 客服首次回复时间, 单位毫秒 - AgentLastResponseTime int64 `json:"agent_last_response_time,omitempty"` // 客服最后回复时间, 单位毫秒 - AgentOwner *EventV2HelpdeskTicketMessageCreatedV1TicketAgentOwner `json:"agent_owner,omitempty"` // 主责客服 + TicketID string `json:"ticket_id,omitempty"` // 工单ID, [可以从工单列表里面取](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list), [也可以订阅工单创建事件获取](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/events/created) + Comments *EventV2HelpdeskTicketMessageCreatedV1TicketComments `json:"comments,omitempty"` // 备注 + TicketType int64 `json:"ticket_type,omitempty"` // 工单阶段: 1. 机器人 2. 人工 + Status int64 `json:"status,omitempty"` // 工单状态, 1: 已创建 2: 处理中 3: 排队中 4: 待定 5: 待用户响应 50: 被机器人关闭 51: 被客服关闭 52: 用户自己关闭 + DissatisfactionReason *EventV2HelpdeskTicketMessageCreatedV1TicketDissatisfactionReason `json:"dissatisfaction_reason,omitempty"` // 不满意原因 + CustomizedFields []*EventV2HelpdeskTicketMessageCreatedV1TicketCustomizedField `json:"customized_fields,omitempty"` // 自定义字段列表, 没有值时不设置, 下拉菜单的value对应工单字段里面的children.display_name, [获取全部工单自定义字段](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/list-ticket-customized-fields) + AgentServiceDuration float64 `json:"agent_service_duration,omitempty"` // 客服服务时长, 客服最后一次回复时间距离客服进入时间间隔, 单位分钟 + AgentFirstResponseDuration int64 `json:"agent_first_response_duration,omitempty"` // 客服首次回复时间距离客服进入时间的间隔(秒) + BotServiceDuration int64 `json:"bot_service_duration,omitempty"` // 机器人服务时间: 客服进入时间距离工单创建时间的间隔, 单位秒 + AgentResolutionTime int64 `json:"agent_resolution_time,omitempty"` // 客服解决时长, 关单时间距离客服进入时间的间隔, 单位秒 + ActualProcessingTime int64 `json:"actual_processing_time,omitempty"` // 工单实际处理时间: 从客服进入到关单, 单位秒 + AgentEntryTime int64 `json:"agent_entry_time,omitempty"` // 客服进入时间, 单位毫秒 + AgentFirstResponseTime int64 `json:"agent_first_response_time,omitempty"` // 客服首次回复时间, 单位毫秒 + AgentLastResponseTime int64 `json:"agent_last_response_time,omitempty"` // 客服最后回复时间, 单位毫秒 + AgentOwner *EventV2HelpdeskTicketMessageCreatedV1TicketAgentOwner `json:"agent_owner,omitempty"` // 主责客服 } // EventV2HelpdeskTicketMessageCreatedV1TicketAgentOwner ... @@ -111,3 +111,10 @@ type EventV2HelpdeskTicketMessageCreatedV1TicketCustomizedField struct { Required bool `json:"required,omitempty"` // 是否必填 Editable bool `json:"editable,omitempty"` // 是否可修改 } + +// EventV2HelpdeskTicketMessageCreatedV1TicketDissatisfactionReason ... +type EventV2HelpdeskTicketMessageCreatedV1TicketDissatisfactionReason struct { + ZhCn string `json:"zh_cn,omitempty"` // 中文描述 + EnUs string `json:"en_us,omitempty"` // 英文描述 + JaJp string `json:"ja_jp,omitempty"` // 日文描述 +} diff --git a/api_helpdesk_ticket_get.go b/api_helpdesk_ticket_get.go index 44ee6869..86929790 100644 --- a/api_helpdesk_ticket_get.go +++ b/api_helpdesk_ticket_get.go @@ -68,32 +68,32 @@ type GetHelpdeskTicketResp struct { // GetHelpdeskTicketRespTicket ... type GetHelpdeskTicketRespTicket struct { - TicketID string `json:"ticket_id,omitempty"` // 工单ID, [可以从工单列表里面取](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list), [也可以订阅工单创建事件获取](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/events/created) - HelpdeskID string `json:"helpdesk_id,omitempty"` // 服务台ID - Guest *GetHelpdeskTicketRespTicketGuest `json:"guest,omitempty"` // 工单创建用户 - Comments *GetHelpdeskTicketRespTicketComments `json:"comments,omitempty"` // 备注 - TicketType int64 `json:"ticket_type,omitempty"` // 工单阶段: 1. 机器人 2. 人工 - Status int64 `json:"status,omitempty"` // 工单状态, 1: 已创建 2: 处理中 3: 排队中 4: 待定 5: 待用户响应 50: 被机器人关闭 51: 被客服关闭 52: 用户自己关闭 - Score int64 `json:"score,omitempty"` // 工单评分, 1: 不满意, 2:一般, 3:满意 - CreatedAt int64 `json:"created_at,omitempty"` // 工单创建时间 - UpdatedAt int64 `json:"updated_at,omitempty"` // 工单更新时间, 没有值时为-1 - ClosedAt int64 `json:"closed_at,omitempty"` // 工单结束时间 - DissatisfactionReason []string `json:"dissatisfaction_reason,omitempty"` // 不满意原因 - Agents []*GetHelpdeskTicketRespTicketAgent `json:"agents,omitempty"` // 工单客服 - Channel int64 `json:"channel,omitempty"` // 工单渠道, 描述: 9: Open API 2: 二维码 14: 分享 13: 搜索 其他数字: 其他渠道 - Solve int64 `json:"solve,omitempty"` // 工单是否解决 1:没解决 2:已解决 - ClosedBy *GetHelpdeskTicketRespTicketClosedBy `json:"closed_by,omitempty"` // 关单用户ID - Collaborators []*GetHelpdeskTicketRespTicketCollaborator `json:"collaborators,omitempty"` // 工单协作者 - CustomizedFields []*GetHelpdeskTicketRespTicketCustomizedField `json:"customized_fields,omitempty"` // 自定义字段列表, 没有值时不设置, 下拉菜单的value对应工单字段里面的children.display_name, [获取全部工单自定义字段](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/list-ticket-customized-fields) - AgentServiceDuration float64 `json:"agent_service_duration,omitempty"` // 客服服务时长, 客服最后一次回复时间距离客服进入时间间隔, 单位分钟 - AgentFirstResponseDuration int64 `json:"agent_first_response_duration,omitempty"` // 客服首次回复时间距离客服进入时间的间隔(秒) - BotServiceDuration int64 `json:"bot_service_duration,omitempty"` // 机器人服务时间: 客服进入时间距离工单创建时间的间隔, 单位秒 - AgentResolutionTime int64 `json:"agent_resolution_time,omitempty"` // 客服解决时长, 关单时间距离客服进入时间的间隔, 单位秒 - ActualProcessingTime int64 `json:"actual_processing_time,omitempty"` // 工单实际处理时间: 从客服进入到关单, 单位秒 - AgentEntryTime int64 `json:"agent_entry_time,omitempty"` // 客服进入时间, 单位毫秒 - AgentFirstResponseTime int64 `json:"agent_first_response_time,omitempty"` // 客服首次回复时间, 单位毫秒 - AgentLastResponseTime int64 `json:"agent_last_response_time,omitempty"` // 客服最后回复时间, 单位毫秒 - AgentOwner *GetHelpdeskTicketRespTicketAgentOwner `json:"agent_owner,omitempty"` // 主责客服 + TicketID string `json:"ticket_id,omitempty"` // 工单ID, [可以从工单列表里面取](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list), [也可以订阅工单创建事件获取](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/events/created) + HelpdeskID string `json:"helpdesk_id,omitempty"` // 服务台ID + Guest *GetHelpdeskTicketRespTicketGuest `json:"guest,omitempty"` // 工单创建用户 + Comments *GetHelpdeskTicketRespTicketComments `json:"comments,omitempty"` // 备注 + TicketType int64 `json:"ticket_type,omitempty"` // 工单阶段: 1. 机器人 2. 人工 + Status int64 `json:"status,omitempty"` // 工单状态, 1: 已创建 2: 处理中 3: 排队中 4: 待定 5: 待用户响应 50: 被机器人关闭 51: 被客服关闭 52: 用户自己关闭 + Score int64 `json:"score,omitempty"` // 工单评分, 1: 不满意, 2:一般, 3:满意 + CreatedAt int64 `json:"created_at,omitempty"` // 工单创建时间 + UpdatedAt int64 `json:"updated_at,omitempty"` // 工单更新时间, 没有值时为-1 + ClosedAt int64 `json:"closed_at,omitempty"` // 工单结束时间 + DissatisfactionReason *GetHelpdeskTicketRespTicketDissatisfactionReason `json:"dissatisfaction_reason,omitempty"` // 不满意原因 + Agents []*GetHelpdeskTicketRespTicketAgent `json:"agents,omitempty"` // 工单客服 + Channel int64 `json:"channel,omitempty"` // 工单渠道, 描述: 9: Open API 2: 二维码 14: 分享 13: 搜索 其他数字: 其他渠道 + Solve int64 `json:"solve,omitempty"` // 工单是否解决 1:没解决 2:已解决 + ClosedBy *GetHelpdeskTicketRespTicketClosedBy `json:"closed_by,omitempty"` // 关单用户ID + Collaborators []*GetHelpdeskTicketRespTicketCollaborator `json:"collaborators,omitempty"` // 工单协作者 + CustomizedFields []*GetHelpdeskTicketRespTicketCustomizedField `json:"customized_fields,omitempty"` // 自定义字段列表, 没有值时不设置, 下拉菜单的value对应工单字段里面的children.display_name, [获取全部工单自定义字段](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/list-ticket-customized-fields) + AgentServiceDuration float64 `json:"agent_service_duration,omitempty"` // 客服服务时长, 客服最后一次回复时间距离客服进入时间间隔, 单位分钟 + AgentFirstResponseDuration int64 `json:"agent_first_response_duration,omitempty"` // 客服首次回复时间距离客服进入时间的间隔(秒) + BotServiceDuration int64 `json:"bot_service_duration,omitempty"` // 机器人服务时间: 客服进入时间距离工单创建时间的间隔, 单位秒 + AgentResolutionTime int64 `json:"agent_resolution_time,omitempty"` // 客服解决时长, 关单时间距离客服进入时间的间隔, 单位秒 + ActualProcessingTime int64 `json:"actual_processing_time,omitempty"` // 工单实际处理时间: 从客服进入到关单, 单位秒 + AgentEntryTime int64 `json:"agent_entry_time,omitempty"` // 客服进入时间, 单位毫秒 + AgentFirstResponseTime int64 `json:"agent_first_response_time,omitempty"` // 客服首次回复时间, 单位毫秒 + AgentLastResponseTime int64 `json:"agent_last_response_time,omitempty"` // 客服最后回复时间, 单位毫秒 + AgentOwner *GetHelpdeskTicketRespTicketAgentOwner `json:"agent_owner,omitempty"` // 主责客服 } // GetHelpdeskTicketRespTicketAgent ... @@ -161,6 +161,13 @@ type GetHelpdeskTicketRespTicketCustomizedField struct { Editable bool `json:"editable,omitempty"` // 是否可修改 } +// GetHelpdeskTicketRespTicketDissatisfactionReason ... +type GetHelpdeskTicketRespTicketDissatisfactionReason struct { + ZhCn string `json:"zh_cn,omitempty"` // 中文描述 + EnUs string `json:"en_us,omitempty"` // 英文描述 + JaJp string `json:"ja_jp,omitempty"` // 日文描述 +} + // GetHelpdeskTicketRespTicketGuest ... type GetHelpdeskTicketRespTicketGuest struct { ID string `json:"id,omitempty"` // 用户ID diff --git a/api_helpdesk_ticket_get_list.go b/api_helpdesk_ticket_get_list.go index 43a7cca7..726689d4 100644 --- a/api_helpdesk_ticket_get_list.go +++ b/api_helpdesk_ticket_get_list.go @@ -85,32 +85,32 @@ type GetHelpdeskTicketListResp struct { // GetHelpdeskTicketListRespTicket ... type GetHelpdeskTicketListRespTicket struct { - TicketID string `json:"ticket_id,omitempty"` // 工单ID, [可以从工单列表里面取](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list), [也可以订阅工单创建事件获取](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/events/created) - HelpdeskID string `json:"helpdesk_id,omitempty"` // 服务台ID - Guest *GetHelpdeskTicketListRespTicketGuest `json:"guest,omitempty"` // 工单创建用户 - Comments *GetHelpdeskTicketListRespTicketComments `json:"comments,omitempty"` // 备注 - TicketType int64 `json:"ticket_type,omitempty"` // 工单阶段: 1. 机器人 2. 人工 - Status int64 `json:"status,omitempty"` // 工单状态, 1: 已创建 2: 处理中 3: 排队中 4: 待定 5: 待用户响应 50: 被机器人关闭 51: 被客服关闭 52: 用户自己关闭 - Score int64 `json:"score,omitempty"` // 工单评分, 1: 不满意, 2:一般, 3:满意 - CreatedAt int64 `json:"created_at,omitempty"` // 工单创建时间 - UpdatedAt int64 `json:"updated_at,omitempty"` // 工单更新时间, 没有值时为-1 - ClosedAt int64 `json:"closed_at,omitempty"` // 工单结束时间 - DissatisfactionReason []string `json:"dissatisfaction_reason,omitempty"` // 不满意原因 - Agents []*GetHelpdeskTicketListRespTicketAgent `json:"agents,omitempty"` // 工单客服 - Channel int64 `json:"channel,omitempty"` // 工单渠道, 描述: 9: Open API 2: 二维码 14: 分享 13: 搜索 其他数字: 其他渠道 - Solve int64 `json:"solve,omitempty"` // 工单是否解决 1:没解决 2:已解决 - ClosedBy *GetHelpdeskTicketListRespTicketClosedBy `json:"closed_by,omitempty"` // 关单用户ID - Collaborators []*GetHelpdeskTicketListRespTicketCollaborator `json:"collaborators,omitempty"` // 工单协作者 - CustomizedFields []*GetHelpdeskTicketListRespTicketCustomizedField `json:"customized_fields,omitempty"` // 自定义字段列表, 没有值时不设置, 下拉菜单的value对应工单字段里面的children.display_name, [获取全部工单自定义字段](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/list-ticket-customized-fields) - AgentServiceDuration float64 `json:"agent_service_duration,omitempty"` // 客服服务时长, 客服最后一次回复时间距离客服进入时间间隔, 单位分钟 - AgentFirstResponseDuration int64 `json:"agent_first_response_duration,omitempty"` // 客服首次回复时间距离客服进入时间的间隔(秒) - BotServiceDuration int64 `json:"bot_service_duration,omitempty"` // 机器人服务时间: 客服进入时间距离工单创建时间的间隔, 单位秒 - AgentResolutionTime int64 `json:"agent_resolution_time,omitempty"` // 客服解决时长, 关单时间距离客服进入时间的间隔, 单位秒 - ActualProcessingTime int64 `json:"actual_processing_time,omitempty"` // 工单实际处理时间: 从客服进入到关单, 单位秒 - AgentEntryTime int64 `json:"agent_entry_time,omitempty"` // 客服进入时间, 单位毫秒 - AgentFirstResponseTime int64 `json:"agent_first_response_time,omitempty"` // 客服首次回复时间, 单位毫秒 - AgentLastResponseTime int64 `json:"agent_last_response_time,omitempty"` // 客服最后回复时间, 单位毫秒 - AgentOwner *GetHelpdeskTicketListRespTicketAgentOwner `json:"agent_owner,omitempty"` // 主责客服 + TicketID string `json:"ticket_id,omitempty"` // 工单ID, [可以从工单列表里面取](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list), [也可以订阅工单创建事件获取](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/events/created) + HelpdeskID string `json:"helpdesk_id,omitempty"` // 服务台ID + Guest *GetHelpdeskTicketListRespTicketGuest `json:"guest,omitempty"` // 工单创建用户 + Comments *GetHelpdeskTicketListRespTicketComments `json:"comments,omitempty"` // 备注 + TicketType int64 `json:"ticket_type,omitempty"` // 工单阶段: 1. 机器人 2. 人工 + Status int64 `json:"status,omitempty"` // 工单状态, 1: 已创建 2: 处理中 3: 排队中 4: 待定 5: 待用户响应 50: 被机器人关闭 51: 被客服关闭 52: 用户自己关闭 + Score int64 `json:"score,omitempty"` // 工单评分, 1: 不满意, 2:一般, 3:满意 + CreatedAt int64 `json:"created_at,omitempty"` // 工单创建时间 + UpdatedAt int64 `json:"updated_at,omitempty"` // 工单更新时间, 没有值时为-1 + ClosedAt int64 `json:"closed_at,omitempty"` // 工单结束时间 + DissatisfactionReason *GetHelpdeskTicketListRespTicketDissatisfactionReason `json:"dissatisfaction_reason,omitempty"` // 不满意原因 + Agents []*GetHelpdeskTicketListRespTicketAgent `json:"agents,omitempty"` // 工单客服 + Channel int64 `json:"channel,omitempty"` // 工单渠道, 描述: 9: Open API 2: 二维码 14: 分享 13: 搜索 其他数字: 其他渠道 + Solve int64 `json:"solve,omitempty"` // 工单是否解决 1:没解决 2:已解决 + ClosedBy *GetHelpdeskTicketListRespTicketClosedBy `json:"closed_by,omitempty"` // 关单用户ID + Collaborators []*GetHelpdeskTicketListRespTicketCollaborator `json:"collaborators,omitempty"` // 工单协作者 + CustomizedFields []*GetHelpdeskTicketListRespTicketCustomizedField `json:"customized_fields,omitempty"` // 自定义字段列表, 没有值时不设置, 下拉菜单的value对应工单字段里面的children.display_name, [获取全部工单自定义字段](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/list-ticket-customized-fields) + AgentServiceDuration float64 `json:"agent_service_duration,omitempty"` // 客服服务时长, 客服最后一次回复时间距离客服进入时间间隔, 单位分钟 + AgentFirstResponseDuration int64 `json:"agent_first_response_duration,omitempty"` // 客服首次回复时间距离客服进入时间的间隔(秒) + BotServiceDuration int64 `json:"bot_service_duration,omitempty"` // 机器人服务时间: 客服进入时间距离工单创建时间的间隔, 单位秒 + AgentResolutionTime int64 `json:"agent_resolution_time,omitempty"` // 客服解决时长, 关单时间距离客服进入时间的间隔, 单位秒 + ActualProcessingTime int64 `json:"actual_processing_time,omitempty"` // 工单实际处理时间: 从客服进入到关单, 单位秒 + AgentEntryTime int64 `json:"agent_entry_time,omitempty"` // 客服进入时间, 单位毫秒 + AgentFirstResponseTime int64 `json:"agent_first_response_time,omitempty"` // 客服首次回复时间, 单位毫秒 + AgentLastResponseTime int64 `json:"agent_last_response_time,omitempty"` // 客服最后回复时间, 单位毫秒 + AgentOwner *GetHelpdeskTicketListRespTicketAgentOwner `json:"agent_owner,omitempty"` // 主责客服 } // GetHelpdeskTicketListRespTicketAgent ... @@ -178,6 +178,13 @@ type GetHelpdeskTicketListRespTicketCustomizedField struct { Editable bool `json:"editable,omitempty"` // 是否可修改 } +// GetHelpdeskTicketListRespTicketDissatisfactionReason ... +type GetHelpdeskTicketListRespTicketDissatisfactionReason struct { + ZhCn string `json:"zh_cn,omitempty"` // 中文描述 + EnUs string `json:"en_us,omitempty"` // 英文描述 + JaJp string `json:"ja_jp,omitempty"` // 日文描述 +} + // GetHelpdeskTicketListRespTicketGuest ... type GetHelpdeskTicketListRespTicketGuest struct { ID string `json:"id,omitempty"` // 用户ID diff --git a/api_hire_job_create.go b/api_hire_job_create.go index fc3b5fe4..9e3257c5 100644 --- a/api_hire_job_create.go +++ b/api_hire_job_create.go @@ -61,7 +61,7 @@ type CreateHireJobReq struct { DepartmentIDType *DepartmentIDType `query:"department_id_type" json:"-"` // 此次调用中使用的部门 ID 的类型, 示例值: "此次调用中使用的部门 ID 的类型", 可选值有: open_department_id: 以 open_department_id 来标识部门, department_id: 以 department_id 来标识部门, 默认值: `open_department_id` Code *string `json:"code,omitempty"` // 职位编号, 可传入职位的「职位编号」、「职位 ID」或者「职位序号」, 将以传入的参数作为职位编号, 以便双方系统的数据映射, 示例值: "R18" Experience *int64 `json:"experience,omitempty"` // 工作年限, 示例值: 1, 可选值有: 1: 不限, 2: 应届毕业生, 3: 1年以下, 4: 1-3年, 5: 3-5年, 6: 5-7年, 7: 7-10年, 8: 10年以上 - ExpiryTime int64 `json:"expiry_time,omitempty"` // 到期日期, 示例值: 1622484739955 + ExpiryTime *int64 `json:"expiry_time,omitempty"` // 到期日期 请使用expiry_timestamp, 示例值: 1622484739 CustomizedDataList []*CreateHireJobReqCustomizedData `json:"customized_data_list,omitempty"` // 自定义字段 MinLevelID *string `json:"min_level_id,omitempty"` // 最低职级, 枚举通过接口「获取职级列表」获取, 示例值: "6960663240925956547" MinSalary *int64 `json:"min_salary,omitempty"` // 最低薪资, 单位: k, 示例值: 1000 @@ -82,10 +82,11 @@ type CreateHireJobReq struct { JobTypeID string `json:"job_type_id,omitempty"` // 职位类别, 示例值: "6960663240925956551" MaxLevelID *string `json:"max_level_id,omitempty"` // 最高职级, 枚举通过接口「获取职级列表」获取, 示例值: "6960663240925956548" RecruitmentTypeID string `json:"recruitment_type_id,omitempty"` // 雇佣类型, 示例值: "102" - RequiredDegree *int64 `json:"required_degree,omitempty"` // 学历要求, 示例值: 1, 可选值有: 1: 小学及以上, 2: 初中及以上, 3: 专职及以上, 4: 高中及以上, 5: 大专及以上, 6: 本科及以上, 7: 硕士及以上, 8: 博士及以上, 20: 不限 + RequiredDegree *int64 `json:"required_degree,omitempty"` // 学历要求, 示例值: 20, 可选值有: 1: 小学及以上, 2: 初中及以上, 3: 专职及以上, 4: 高中及以上, 5: 大专及以上, 6: 本科及以上, 7: 硕士及以上, 8: 博士及以上, 20: 不限 JobCategoryID *string `json:"job_category_id,omitempty"` // 序列, 示例值: "6960663240925956550" AddressIDList []string `json:"address_id_list,omitempty"` // 工作地点, 枚举通过接口「获取地址列表」获取, 选择地点用途为「职位地址」, 示例值: 7035374761602959660 - JobAttribute *int64 `json:"job_attribute,omitempty"` // 职位属性, 1是实体职位, 2是虚拟职位, 示例值: 职位类别 + JobAttribute *int64 `json:"job_attribute,omitempty"` // 职位属性, 1是实体职位, 2是虚拟职位, 示例值: 职位类别, 可选值有: 1: 实体职位, 2: 虚拟职位 + ExpiryTimestamp *string `json:"expiry_timestamp,omitempty"` // 到期日期的毫秒时间戳, 示例值: "1622484739955" } // CreateHireJobReqCustomizedData ... @@ -131,8 +132,8 @@ type CreateHireJobRespJob struct { JobType *CreateHireJobRespJobJobType `json:"job_type,omitempty"` // 职位类别 ActiveStatus int64 `json:"active_status,omitempty"` // 启用状态, 可选值有: 1: 启用, 2: 未启用 CreateUserID string `json:"create_user_id,omitempty"` // 创建人ID, 若为空则为系统或其他对接系统创建 - CreateTime int64 `json:"create_time,omitempty"` // 创建时间 - UpdateTime int64 `json:"update_time,omitempty"` // 更新时间 + CreateTime int64 `json:"create_time,omitempty"` // 创建时间 请使用create_timestamp + UpdateTime int64 `json:"update_time,omitempty"` // 更新时间 请使用update_timestamp ProcessType int64 `json:"process_type,omitempty"` // 招聘流程类型, 可选值有: 1: 社招流程, 2: 校招流程 ProcessID string `json:"process_id,omitempty"` // 招聘流程 ID ProcessName string `json:"process_name,omitempty"` // 招聘流程中文名称 @@ -142,12 +143,15 @@ type CreateHireJobRespJob struct { Subject *CreateHireJobRespJobSubject `json:"subject,omitempty"` // 职位项目 HeadCount int64 `json:"head_count,omitempty"` // 招聘数量 Experience int64 `json:"experience,omitempty"` // 工作年限, 可选值有: 1: 不限, 2: 应届毕业生, 3: 1年以下, 4: 1-3年, 5: 3-5年, 6: 5-7年, 7: 7-10年, 8: 10年以上 - ExpiryTime int64 `json:"expiry_time,omitempty"` // 到期日期 + ExpiryTime int64 `json:"expiry_time,omitempty"` // 到期日期 请使用expiry_timestamp MinSalary int64 `json:"min_salary,omitempty"` // 最低薪资, 单位:k MaxSalary int64 `json:"max_salary,omitempty"` // 最高薪资, 单位:k - RequiredDegree int64 `json:"required_degree,omitempty"` // 学历要求, 可选值有: 1: 小学及以上, 2: 初中及以上, 3: 专职及以上, 4: 高中及以上, 5: 大专及以上, 6: 本科及以上, 7: 硕士及以上, 8: 博士及以上, 20: 不限 + RequiredDegree int64 `json:"required_degree,omitempty"` // 学历要求, 可选值有: 1: JuniorMiddleSchoolEducation, 2: 初中及以上, 3: 专职及以上, 4: 高中及以上, 5: 大专及以上, 6: 本科及以上, 7: 硕士及以上, 8: 博士及以上, 20: 不限 CityList []*CreateHireJobRespJobCity `json:"city_list,omitempty"` // 工作地点列表 - JobAttribute int64 `json:"job_attribute,omitempty"` // 职位属性, 1是实体职位, 2是虚拟职位 + JobAttribute int64 `json:"job_attribute,omitempty"` // 职位属性, 1是实体职位, 2是虚拟职位, 可选值有: 1: 实体职位, 2: 虚拟职位 + CreateTimestamp string `json:"create_timestamp,omitempty"` // 创建时间戳 + UpdateTimestamp string `json:"update_timestamp,omitempty"` // 更新时间戳 + ExpiryTimestamp string `json:"expiry_timestamp,omitempty"` // 到期时间戳 } // CreateHireJobRespJobCity ... diff --git a/api_hire_job_get.go b/api_hire_job_get.go index 7379f46b..2541e57e 100644 --- a/api_hire_job_get.go +++ b/api_hire_job_get.go @@ -57,8 +57,9 @@ func (r *Mock) UnMockHireGetHireJob() { // GetHireJobReq ... type GetHireJobReq struct { - JobID int64 `path:"job_id" json:"-"` // 职位 ID, 请求Path中, 示例值: 6001 - UserIDType *IDType `query:"user_id_type" json:"-"` // 用户 ID 类型, 示例值: "open_id", 可选值有: open_id: 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。[了解更多: 如何获取 Open ID](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid), union_id: 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的, 在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID, 应用开发商可以把同个用户在多个应用中的身份关联起来。[了解更多: 如何获取 Union ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-union-id), user_id: 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内, 一个用户的 User ID 在所有应用(包括商店应用)中都保持一致。User ID 主要用于在不同的应用间打通用户数据。[了解更多: 如何获取 User ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-user-id), people_admin_id: 以people_admin_id来识别用户, 默认值: `open_id`, 当值为 `user_id`, 字段权限要求: 获取用户 user ID + JobID string `path:"job_id" json:"-"` // 职位 ID, 请求Path中, 示例值: "6001" + UserIDType *IDType `query:"user_id_type" json:"-"` // 用户 ID 类型, 示例值: "open_id", 可选值有: open_id: 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。[了解更多: 如何获取 Open ID](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid), union_id: 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的, 在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID, 应用开发商可以把同个用户在多个应用中的身份关联起来。[了解更多: 如何获取 Union ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-union-id), user_id: 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内, 一个用户的 User ID 在所有应用(包括商店应用)中都保持一致。User ID 主要用于在不同的应用间打通用户数据。[了解更多: 如何获取 User ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-user-id), people_admin_id: 以people_admin_id来识别用户, 默认值: `open_id`, 当值为 `user_id`, 字段权限要求: 获取用户 user ID + DepartmentIDType *DepartmentIDType `query:"department_id_type" json:"-"` // 部门ID类型, 示例值: "open_department_id", 可选值有: open_department_id: 开放平台部门ID, department_id: 内部部门ID, 默认值: `open_department_id` } // GetHireJobResp ... @@ -83,8 +84,8 @@ type GetHireJobRespJob struct { JobType *GetHireJobRespJobJobType `json:"job_type,omitempty"` // 职位类别 ActiveStatus int64 `json:"active_status,omitempty"` // 启用状态, 可选值有: 1: 启用, 2: 未启用 CreateUserID string `json:"create_user_id,omitempty"` // 创建人ID, 若为空则为系统或其他对接系统创建 - CreateTime int64 `json:"create_time,omitempty"` // 创建时间 - UpdateTime int64 `json:"update_time,omitempty"` // 更新时间 + CreateTime int64 `json:"create_time,omitempty"` // 创建时间 请使用create_timestamp + UpdateTime int64 `json:"update_time,omitempty"` // 更新时间 请使用update_timestamp ProcessType int64 `json:"process_type,omitempty"` // 招聘流程类型, 可选值有: 1: 社招流程, 2: 校招流程 ProcessID string `json:"process_id,omitempty"` // 招聘流程 ID ProcessName string `json:"process_name,omitempty"` // 招聘流程中文名称 @@ -94,11 +95,15 @@ type GetHireJobRespJob struct { Subject *GetHireJobRespJobSubject `json:"subject,omitempty"` // 职位项目 HeadCount int64 `json:"head_count,omitempty"` // 招聘数量 Experience int64 `json:"experience,omitempty"` // 工作年限, 可选值有: 1: 不限, 2: 应届毕业生, 3: 1年以下, 4: 1-3年, 5: 3-5年, 6: 5-7年, 7: 7-10年, 8: 10年以上 - ExpiryTime int64 `json:"expiry_time,omitempty"` // 到期日期 + ExpiryTime int64 `json:"expiry_time,omitempty"` // 到期日期 请使用expiry_timestamp MinSalary int64 `json:"min_salary,omitempty"` // 最低薪资, 单位:k MaxSalary int64 `json:"max_salary,omitempty"` // 最高薪资, 单位:k - RequiredDegree int64 `json:"required_degree,omitempty"` // 学历要求, 可选值有: 1: 小学及以上, 2: 初中及以上, 3: 专职及以上, 4: 高中及以上, 5: 大专及以上, 6: 本科及以上, 7: 硕士及以上, 8: 博士及以上, 20: 不限 + RequiredDegree int64 `json:"required_degree,omitempty"` // 学历要求, 可选值有: 1: JuniorMiddleSchoolEducation, 2: 初中及以上, 3: 专职及以上, 4: 高中及以上, 5: 大专及以上, 6: 本科及以上, 7: 硕士及以上, 8: 博士及以上, 20: 不限 CityList []*GetHireJobRespJobCity `json:"city_list,omitempty"` // 工作地点列表 + JobAttribute int64 `json:"job_attribute,omitempty"` // 职位属性, 1是实体职位, 2是虚拟职位, 可选值有: 1: 实体职位, 2: 虚拟职位 + CreateTimestamp string `json:"create_timestamp,omitempty"` // 创建时间戳 + UpdateTimestamp string `json:"update_timestamp,omitempty"` // 更新时间戳 + ExpiryTimestamp string `json:"expiry_timestamp,omitempty"` // 到期时间戳 } // GetHireJobRespJobCity ... diff --git a/api_hire_job_update.go b/api_hire_job_update.go new file mode 100644 index 00000000..73a35693 --- /dev/null +++ b/api_hire_job_update.go @@ -0,0 +1,301 @@ +// 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" +) + +// UpdateHireJob 更新职位信息, 该接口为全量更新, 若字段没有返回值, 则原有值将会被清空。字段的是否必填, 将以系统中的「职位字段管理」中的设置为准。 +// +// doc: https://open.feishu.cn/document/ukTMukTMukTM/uMzM1YjLzMTN24yMzUjN/hire-v1/job/combined_update +func (r *HireService) UpdateHireJob(ctx context.Context, request *UpdateHireJobReq, options ...MethodOptionFunc) (*UpdateHireJobResp, *Response, error) { + if r.cli.mock.mockHireUpdateHireJob != nil { + r.cli.log(ctx, LogLevelDebug, "[lark] Hire#UpdateHireJob mock enable") + return r.cli.mock.mockHireUpdateHireJob(ctx, request, options...) + } + + req := &RawRequestReq{ + Scope: "Hire", + API: "UpdateHireJob", + Method: "POST", + URL: r.cli.openBaseURL + "/open-apis/hire/v1/jobs/:job_id/combined_update", + Body: request, + MethodOption: newMethodOption(options), + NeedTenantAccessToken: true, + } + resp := new(updateHireJobResp) + + response, err := r.cli.RawRequest(ctx, req, resp) + return resp.Data, response, err +} + +// MockHireUpdateHireJob mock HireUpdateHireJob method +func (r *Mock) MockHireUpdateHireJob(f func(ctx context.Context, request *UpdateHireJobReq, options ...MethodOptionFunc) (*UpdateHireJobResp, *Response, error)) { + r.mockHireUpdateHireJob = f +} + +// UnMockHireUpdateHireJob un-mock HireUpdateHireJob method +func (r *Mock) UnMockHireUpdateHireJob() { + r.mockHireUpdateHireJob = nil +} + +// UpdateHireJobReq ... +type UpdateHireJobReq struct { + JobID string `path:"job_id" json:"-"` // 职位 ID, 示例值: "6960663240925956660" + UserIDType *IDType `query:"user_id_type" json:"-"` // 用户 ID 类型, 示例值: "open_id", 可选值有: open_id: 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。[了解更多: 如何获取 Open ID](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid), union_id: 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的, 在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID, 应用开发商可以把同个用户在多个应用中的身份关联起来。[了解更多: 如何获取 Union ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-union-id), user_id: 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内, 一个用户的 User ID 在所有应用(包括商店应用)中都保持一致。User ID 主要用于在不同的应用间打通用户数据。[了解更多: 如何获取 User ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-user-id), 默认值: `open_id`, 当值为 `user_id`, 字段权限要求: 获取用户 user ID + DepartmentIDType *DepartmentIDType `query:"department_id_type" json:"-"` // 此次调用中使用的部门 ID 的类型, 示例值: "open_department_id", 可选值有: open_department_id: 以 open_department_id 来标识部门, department_id: 以 department_id 来标识部门, 默认值: `open_department_id` + ID *string `json:"id,omitempty"` // 职位 ID, 示例值: "6960663240925956576" + Experience *int64 `json:"experience,omitempty"` // 工作年限, 示例值: 1, 可选值有: 1: 不限, 2: 应届毕业生, 3: 1年以下, 4: 1-3年, 5: 3-5年, 6: 5-7年, 7: 7-10年, 8: 10年以上 + ExpiryTime *int64 `json:"expiry_time,omitempty"` // 到期日期 请使用expiry_timestamp, 示例值: 1622484739 + CustomizedDataList []*UpdateHireJobReqCustomizedData `json:"customized_data_list,omitempty"` // 自定义字段 + MinLevelID *string `json:"min_level_id,omitempty"` // 最低职级, 枚举通过接口「获取职级列表」获取, 示例值: "6960663240925956547" + MinSalary *int64 `json:"min_salary,omitempty"` // 最低薪资, 单位: k, 示例值: 1000 + Title *string `json:"title,omitempty"` // 职位名称, 示例值: "后端研发" + JobManagers *UpdateHireJobReqJobManagers `json:"job_managers,omitempty"` // 职位的招聘团队 + JobProcessID *string `json:"job_process_id,omitempty"` // 招聘流程, 枚举通过接口「获取招聘流程信息」获取, 示例值: "6960663240925956554" + SubjectID *string `json:"subject_id,omitempty"` // 项目, 枚举通过「获取项目列表」接口, 示例值: "6960663240925956555" + JobFunctionID *string `json:"job_function_id,omitempty"` // 职能分类, 通过「获取职能分类」获取, 示例值: "6960663240925956555" + DepartmentID *string `json:"department_id,omitempty"` // 部门 ID, 须传入open_department_id, 格式为"od-xxxx"。可通过「获取部门信息列表」获取, 示例值: "od-b2fafdce6fc5800b574ba5b0e2798b36" + HeadCount *int64 `json:"head_count,omitempty"` // 招聘数量, 示例值: 100 + IsNeverExpired bool `json:"is_never_expired,omitempty"` // 是否长期有效, 示例值: false + MaxSalary *int64 `json:"max_salary,omitempty"` // 最高薪资, 单位: k, 示例值: 2000 + Requirement *string `json:"requirement,omitempty"` // 职位要求, 示例值: "熟悉后端研发" + AddressID *string `json:"address_id,omitempty"` // 工作地点, 枚举通过接口「获取地址列表」获取, 选择地点用途为「职位地址」, 示例值: "6960663240925956553" + Description *string `json:"description,omitempty"` // 职位描述, 示例值: "后端研发岗位描述" + HighlightList []string `json:"highlight_list,omitempty"` // 职位亮点, 示例值: 6960663240925956554 + JobTypeID string `json:"job_type_id,omitempty"` // 职位类别, 示例值: "6960663240925956551" + MaxLevelID *string `json:"max_level_id,omitempty"` // 最高职级, 枚举通过接口「获取职级列表」获取, 示例值: "6960663240925956548" + RequiredDegree *int64 `json:"required_degree,omitempty"` // 学历要求, 示例值: 20, 可选值有: 1: 小学及以上, 2: 初中及以上, 3: 专职及以上, 4: 高中及以上, 5: 大专及以上, 6: 本科及以上, 7: 硕士及以上, 8: 博士及以上, 20: 不限 + JobCategoryID *string `json:"job_category_id,omitempty"` // 序列, 示例值: "6960663240925956550" + AddressIDList []string `json:"address_id_list,omitempty"` // 工作地点, 枚举通过接口「获取地址列表」获取, 选择地点用途为「职位地址」, 示例值: 7035374761602959660 + JobAttribute *int64 `json:"job_attribute,omitempty"` // 职位属性, 1是实体职位, 2是虚拟职位, 示例值: 职位类别, 可选值有: 1: 实体职位, 2: 虚拟职位 + ExpiryTimestamp *string `json:"expiry_timestamp,omitempty"` // 到期日期的毫秒时间戳, 示例值: "1622484739955" +} + +// UpdateHireJobReqCustomizedData ... +type UpdateHireJobReqCustomizedData struct { + ObjectID *string `json:"object_id,omitempty"` // 结构 ID, 示例值: "6960663240925956549" + Value *string `json:"value,omitempty"` // 结构值, 示例值: "测试" +} + +// UpdateHireJobReqJobManagers ... +type UpdateHireJobReqJobManagers struct { + ID *string `json:"id,omitempty"` // 职位 ID, 示例值: "1618209327096" + RecruiterID string `json:"recruiter_id,omitempty"` // 招聘负责人 ID, 仅一位, 可通过用户相关接口获取用户 ID, 示例值: "ou_efk39117c300506837def50545420c6a" + HiringManagerIDList []string `json:"hiring_manager_id_list,omitempty"` // 用人经理 ID 列表, 示例值: 6960663240925956554 + AssistantIDList []string `json:"assistant_id_list,omitempty"` // 协助人 ID 列表, 示例值: 6960663240925956554 +} + +// UpdateHireJobResp ... +type UpdateHireJobResp struct { + DefaultJobPost *UpdateHireJobRespDefaultJobPost `json:"default_job_post,omitempty"` // 职位广告 + Job *UpdateHireJobRespJob `json:"job,omitempty"` // 职位 + JobManager *UpdateHireJobRespJobManager `json:"job_manager,omitempty"` // 职位负责人 +} + +// UpdateHireJobRespDefaultJobPost ... +type UpdateHireJobRespDefaultJobPost struct { + ID string `json:"id,omitempty"` // 默认职位广告的 ID, 用以发布至招聘渠道的内容 +} + +// UpdateHireJobRespJob ... +type UpdateHireJobRespJob struct { + ID string `json:"id,omitempty"` // 职位 ID + Title string `json:"title,omitempty"` // 职位名称 + Description string `json:"description,omitempty"` // 职位描述 + Code string `json:"code,omitempty"` // 职位编号 + Requirement string `json:"requirement,omitempty"` // 职位要求 + RecruitmentType *UpdateHireJobRespJobRecruitmentType `json:"recruitment_type,omitempty"` // 雇佣类型 + Department *UpdateHireJobRespJobDepartment `json:"department,omitempty"` // 部门 + City *UpdateHireJobRespJobCity `json:"city,omitempty"` // 工作地点 + MinJobLevel *UpdateHireJobRespJobMinJobLevel `json:"min_job_level,omitempty"` // 最低职级 + MaxJobLevel *UpdateHireJobRespJobMaxJobLevel `json:"max_job_level,omitempty"` // 最高职级 + HighlightList []*UpdateHireJobRespJobHighlight `json:"highlight_list,omitempty"` // 职位亮点 + JobCategory *UpdateHireJobRespJobJobCategory `json:"job_category,omitempty"` // 职位序列 + JobType *UpdateHireJobRespJobJobType `json:"job_type,omitempty"` // 职位类别 + ActiveStatus int64 `json:"active_status,omitempty"` // 启用状态, 可选值有: 1: 启用, 2: 未启用 + CreateUserID string `json:"create_user_id,omitempty"` // 创建人ID, 若为空则为系统或其他对接系统创建 + CreateTime int64 `json:"create_time,omitempty"` // 创建时间 请使用create_timestamp + UpdateTime int64 `json:"update_time,omitempty"` // 更新时间 请使用update_timestamp + ProcessType int64 `json:"process_type,omitempty"` // 招聘流程类型, 可选值有: 1: 社招流程, 2: 校招流程 + ProcessID string `json:"process_id,omitempty"` // 招聘流程 ID + ProcessName string `json:"process_name,omitempty"` // 招聘流程中文名称 + ProcessEnName string `json:"process_en_name,omitempty"` // 招聘流程英文名称 + CustomizedDataList []*UpdateHireJobRespJobCustomizedData `json:"customized_data_list,omitempty"` // 自定义字段列表 + JobFunction *UpdateHireJobRespJobJobFunction `json:"job_function,omitempty"` // 职能分类 + Subject *UpdateHireJobRespJobSubject `json:"subject,omitempty"` // 职位项目 + HeadCount int64 `json:"head_count,omitempty"` // 招聘数量 + Experience int64 `json:"experience,omitempty"` // 工作年限, 可选值有: 1: 不限, 2: 应届毕业生, 3: 1年以下, 4: 1-3年, 5: 3-5年, 6: 5-7年, 7: 7-10年, 8: 10年以上 + ExpiryTime int64 `json:"expiry_time,omitempty"` // 到期日期 请使用expiry_timestamp + MinSalary int64 `json:"min_salary,omitempty"` // 最低薪资, 单位:k + MaxSalary int64 `json:"max_salary,omitempty"` // 最高薪资, 单位:k + RequiredDegree int64 `json:"required_degree,omitempty"` // 学历要求, 可选值有: 1: JuniorMiddleSchoolEducation, 2: 初中及以上, 3: 专职及以上, 4: 高中及以上, 5: 大专及以上, 6: 本科及以上, 7: 硕士及以上, 8: 博士及以上, 20: 不限 + CityList []*UpdateHireJobRespJobCity `json:"city_list,omitempty"` // 工作地点列表 + JobAttribute int64 `json:"job_attribute,omitempty"` // 职位属性, 1是实体职位, 2是虚拟职位, 可选值有: 1: 实体职位, 2: 虚拟职位 + CreateTimestamp string `json:"create_timestamp,omitempty"` // 创建时间戳 + UpdateTimestamp string `json:"update_timestamp,omitempty"` // 更新时间戳 + ExpiryTimestamp string `json:"expiry_timestamp,omitempty"` // 到期时间戳 +} + +// UpdateHireJobRespJobCity ... +type UpdateHireJobRespJobCity struct { + CityCode string `json:"city_code,omitempty"` // 工作地点城市代码 + ZhName string `json:"zh_name,omitempty"` // 工作地点中文名称 + EnName string `json:"en_name,omitempty"` // 工作地点英文名称 +} + +// UpdateHireJobRespJobCityName ... +type UpdateHireJobRespJobCityName struct { + ZhCn string `json:"zh_cn,omitempty"` // 中文 + EnUs string `json:"en_us,omitempty"` // 英文 +} + +// UpdateHireJobRespJobCustomizedData ... +type UpdateHireJobRespJobCustomizedData struct { + ObjectID string `json:"object_id,omitempty"` // 自定义字段 ID + Name *UpdateHireJobRespJobCustomizedDataName `json:"name,omitempty"` // 字段名称 + ObjectType int64 `json:"object_type,omitempty"` // 字段类型, 可选值有: 1: 单行文本, 2: 多行文本, 3: 单选, 4: 多选, 5: 日期, 6: 月份选择, 7: 年份选择, 8: 时间段, 9: 数字, 10: 默认字段, 11: 模块 + Value *UpdateHireJobRespJobCustomizedDataValue `json:"value,omitempty"` // 自定义字段值 +} + +// UpdateHireJobRespJobCustomizedDataName ... +type UpdateHireJobRespJobCustomizedDataName struct { + ZhCn string `json:"zh_cn,omitempty"` // 中文 + EnUs string `json:"en_us,omitempty"` // 英文 +} + +// UpdateHireJobRespJobCustomizedDataValue ... +type UpdateHireJobRespJobCustomizedDataValue struct { + Content string `json:"content,omitempty"` // 当字段类型为单行文本、多行文本、模块、默认字段时, 从此字段取值 + Option *UpdateHireJobRespJobCustomizedDataValueOption `json:"option,omitempty"` // 当字段类型为单选时, 从此字段取值 + OptionList []*UpdateHireJobRespJobCustomizedDataValueOption `json:"option_list,omitempty"` // 当字段类型为多选时, 从此字段取值 + TimeRange *UpdateHireJobRespJobCustomizedDataValueTimeRange `json:"time_range,omitempty"` // 当字段类型为时间段时, 从此字段取值 + Time string `json:"time,omitempty"` // 当字段类型为日期选择、月份选择、年份选择时, 从此字段取值, 该字段是毫秒级时间戳 + Number string `json:"number,omitempty"` // 当字段类型为数字时, 从此字段取值 +} + +// UpdateHireJobRespJobCustomizedDataValueOption ... +type UpdateHireJobRespJobCustomizedDataValueOption struct { + Key string `json:"key,omitempty"` // 选项 ID + Name *UpdateHireJobRespJobCustomizedDataValueOptionName `json:"name,omitempty"` // 选项名称 +} + +// UpdateHireJobRespJobCustomizedDataValueOptionName ... +type UpdateHireJobRespJobCustomizedDataValueOptionName struct { + ZhCn string `json:"zh_cn,omitempty"` // 中文 + EnUs string `json:"en_us,omitempty"` // 英文 +} + +// UpdateHireJobRespJobCustomizedDataValueTimeRange ... +type UpdateHireJobRespJobCustomizedDataValueTimeRange struct { + StartTime string `json:"start_time,omitempty"` // 开始时间 + EndTime string `json:"end_time,omitempty"` // 结束时间 +} + +// UpdateHireJobRespJobDepartment ... +type UpdateHireJobRespJobDepartment struct { + ID string `json:"id,omitempty"` // 部门 ID + ZhName string `json:"zh_name,omitempty"` // 部门中文名称 + EnName string `json:"en_name,omitempty"` // 部门英文名称 +} + +// UpdateHireJobRespJobHighlight ... +type UpdateHireJobRespJobHighlight struct { + ID string `json:"id,omitempty"` // 职位亮点 ID + ZhName string `json:"zh_name,omitempty"` // 职位亮点中文名称 + EnName string `json:"en_name,omitempty"` // 职位亮点英文名称 +} + +// UpdateHireJobRespJobJobCategory ... +type UpdateHireJobRespJobJobCategory struct { + ID string `json:"id,omitempty"` // 职位序列 ID + ZhName string `json:"zh_name,omitempty"` // 职位序列中文名称 + EnName string `json:"en_name,omitempty"` // 职位序列英文名称 + ActiveStatus int64 `json:"active_status,omitempty"` // 职位序列启用状态, 可选值有: 1: 启用, 2: 未启用 +} + +// UpdateHireJobRespJobJobFunction ... +type UpdateHireJobRespJobJobFunction struct { + ID string `json:"id,omitempty"` // ID + Name *UpdateHireJobRespJobJobFunctionName `json:"name,omitempty"` // 名称 +} + +// UpdateHireJobRespJobJobFunctionName ... +type UpdateHireJobRespJobJobFunctionName struct { + ZhCn string `json:"zh_cn,omitempty"` // 中文 + EnUs string `json:"en_us,omitempty"` // 英文 +} + +// UpdateHireJobRespJobJobType ... +type UpdateHireJobRespJobJobType struct { + ID string `json:"id,omitempty"` // 职位类别 ID + ZhName string `json:"zh_name,omitempty"` // 职位类别中文名称 + EnName string `json:"en_name,omitempty"` // 职位类别英文名称 +} + +// UpdateHireJobRespJobManager ... +type UpdateHireJobRespJobManager struct { + ID string `json:"id,omitempty"` // 职位 ID + RecruiterID string `json:"recruiter_id,omitempty"` // 招聘负责人 ID, 仅一位, 可通过用户相关接口获取用户 ID + HiringManagerIDList []string `json:"hiring_manager_id_list,omitempty"` // 用人经理 ID 列表 + AssistantIDList []string `json:"assistant_id_list,omitempty"` // 协助人 ID 列表 +} + +// UpdateHireJobRespJobMaxJobLevel ... +type UpdateHireJobRespJobMaxJobLevel struct { + ID string `json:"id,omitempty"` // 职级 ID + ZhName string `json:"zh_name,omitempty"` // 职级中文名称 + EnName string `json:"en_name,omitempty"` // 职级英文名称 + ActiveStatus int64 `json:"active_status,omitempty"` // 职级启用状态, 可选值有: 1: 启用, 2: 未启用 +} + +// UpdateHireJobRespJobMinJobLevel ... +type UpdateHireJobRespJobMinJobLevel struct { + ID string `json:"id,omitempty"` // 职级 ID + ZhName string `json:"zh_name,omitempty"` // 职级中文名称 + EnName string `json:"en_name,omitempty"` // 职级英文名称 + ActiveStatus int64 `json:"active_status,omitempty"` // 职级启用状态, 可选值有: 1: 启用, 2: 未启用 +} + +// UpdateHireJobRespJobRecruitmentType ... +type UpdateHireJobRespJobRecruitmentType struct { + ID string `json:"id,omitempty"` // 雇佣类型 ID + ZhName string `json:"zh_name,omitempty"` // 雇佣类型中文名称 + EnName string `json:"en_name,omitempty"` // 雇佣类型英文名称 + ActiveStatus int64 `json:"active_status,omitempty"` // 雇佣类型启用状态, 可选值有: 1: 启用, 2: 未启用 +} + +// UpdateHireJobRespJobSubject ... +type UpdateHireJobRespJobSubject struct { + ID string `json:"id,omitempty"` // ID + Name *UpdateHireJobRespJobSubjectName `json:"name,omitempty"` // 名称 +} + +// UpdateHireJobRespJobSubjectName ... +type UpdateHireJobRespJobSubjectName struct { + ZhCn string `json:"zh_cn,omitempty"` // 中文 + EnUs string `json:"en_us,omitempty"` // 英文 +} + +// updateHireJobResp ... +type updateHireJobResp struct { + Code int64 `json:"code,omitempty"` // 错误码, 非 0 表示失败 + Msg string `json:"msg,omitempty"` // 错误描述 + Data *UpdateHireJobResp `json:"data,omitempty"` +} diff --git a/api_human_auth_face_verify_crop_image.go b/api_human_auth_face_verify_crop_image.go index 8dfa88bf..80b151a2 100644 --- a/api_human_auth_face_verify_crop_image.go +++ b/api_human_auth_face_verify_crop_image.go @@ -25,7 +25,7 @@ import ( // CropFaceVerifyImage 无源人脸比对流程, 开发者后台通过调用此接口对基准图片做规范校验及处理。 // // ::: note -// 无源人脸比对接入需申请白名单, 接入前请联系飞书开放平台工作人员, 邮箱: openplatform@bytedance.com。 +// 无源人脸比对接入需申请白名单, 接入前请联系飞书开放平台工作人员, 邮箱: open-platform@bytedance.com。 // // doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/human_authentication-v1/face/facial-image-cropping func (r *HumanAuthService) CropFaceVerifyImage(ctx context.Context, request *CropFaceVerifyImageReq, options ...MethodOptionFunc) (*CropFaceVerifyImageResp, *Response, error) { diff --git a/api_human_auth_face_verify_get_auth_result.go b/api_human_auth_face_verify_get_auth_result.go index 56221a17..2b67af9a 100644 --- a/api_human_auth_face_verify_get_auth_result.go +++ b/api_human_auth_face_verify_get_auth_result.go @@ -24,7 +24,7 @@ import ( // GetFaceVerifyAuthResult 无源人脸比对流程, 开发者后台通过调用此接口请求飞书后台, 对本次活体比对结果做校验。 // // ::: note -// 无源人脸比对接入需申请白名单, 接入前请联系飞书开放平台工作人员, 邮箱: openplatform@bytedance.com。 +// 无源人脸比对接入需申请白名单, 接入前请联系飞书开放平台工作人员, 邮箱: open-platform@bytedance.com。 // // doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/human_authentication-v1/face/query-recognition-result func (r *HumanAuthService) GetFaceVerifyAuthResult(ctx context.Context, request *GetFaceVerifyAuthResultReq, options ...MethodOptionFunc) (*GetFaceVerifyAuthResultResp, *Response, error) { diff --git a/api_human_auth_face_verify_upload_image.go b/api_human_auth_face_verify_upload_image.go index 5e586750..4d177283 100644 --- a/api_human_auth_face_verify_upload_image.go +++ b/api_human_auth_face_verify_upload_image.go @@ -25,7 +25,7 @@ import ( // UploadFaceVerifyImage 无源人脸比对流程, 开发者后台通过调用此接口将基准图片上传到飞书后台, 做检测时的对比使用。 // // ::: note -// 无源人脸比对接入需申请白名单, 接入前请联系飞书开放平台工作人员, 邮箱: openplatform@bytedance.com。 +// 无源人脸比对接入需申请白名单, 接入前请联系飞书开放平台工作人员, 邮箱: open-platform@bytedance.com。 // // doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/human_authentication-v1/face/upload-facial-reference-image func (r *HumanAuthService) UploadFaceVerifyImage(ctx context.Context, request *UploadFaceVerifyImageReq, options ...MethodOptionFunc) (*UploadFaceVerifyImageResp, *Response, error) { diff --git a/api_human_auth_identity.go b/api_human_auth_identity.go index ee6452de..81d32300 100644 --- a/api_human_auth_identity.go +++ b/api_human_auth_identity.go @@ -23,7 +23,7 @@ import ( // CreateIdentity 该接口用于录入实名认证的身份信息, 在唤起有源活体认证前, 需要使用该接口进行实名认证。 // -// 实名认证接口会有计费管理, 接入前请联系飞书开放平台工作人员, 邮箱: openplatform@bytedance.com。 +// 实名认证接口会有计费管理, 接入前请联系飞书开放平台工作人员, 邮箱: open-platform@bytedance.com。 // 仅通过计费申请的应用, 才能在[开发者后台](https://open.feishu.cn/app)查找并申请该接口的权限。 // // doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/human_authentication-v1/identity/create diff --git a/api_mail_mail_group_member_batch_create.go b/api_mail_mail_group_member_batch_create.go new file mode 100644 index 00000000..7a9d7793 --- /dev/null +++ b/api_mail_mail_group_member_batch_create.go @@ -0,0 +1,94 @@ +// 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" +) + +// BatchCreateMailGroupMember 一次请求可以给一个邮件组添加多个成员。 +// +// doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/mail-v1/mailgroup-member/batch_create +func (r *MailService) BatchCreateMailGroupMember(ctx context.Context, request *BatchCreateMailGroupMemberReq, options ...MethodOptionFunc) (*BatchCreateMailGroupMemberResp, *Response, error) { + if r.cli.mock.mockMailBatchCreateMailGroupMember != nil { + r.cli.log(ctx, LogLevelDebug, "[lark] Mail#BatchCreateMailGroupMember mock enable") + return r.cli.mock.mockMailBatchCreateMailGroupMember(ctx, request, options...) + } + + req := &RawRequestReq{ + Scope: "Mail", + API: "BatchCreateMailGroupMember", + Method: "POST", + URL: r.cli.openBaseURL + "/open-apis/mail/v1/mailgroups/:mailgroup_id/members/batch_create", + Body: request, + MethodOption: newMethodOption(options), + NeedTenantAccessToken: true, + } + resp := new(batchCreateMailGroupMemberResp) + + response, err := r.cli.RawRequest(ctx, req, resp) + return resp.Data, response, err +} + +// MockMailBatchCreateMailGroupMember mock MailBatchCreateMailGroupMember method +func (r *Mock) MockMailBatchCreateMailGroupMember(f func(ctx context.Context, request *BatchCreateMailGroupMemberReq, options ...MethodOptionFunc) (*BatchCreateMailGroupMemberResp, *Response, error)) { + r.mockMailBatchCreateMailGroupMember = f +} + +// UnMockMailBatchCreateMailGroupMember un-mock MailBatchCreateMailGroupMember method +func (r *Mock) UnMockMailBatchCreateMailGroupMember() { + r.mockMailBatchCreateMailGroupMember = nil +} + +// BatchCreateMailGroupMemberReq ... +type BatchCreateMailGroupMemberReq struct { + MailGroupID string `path:"mailgroup_id" json:"-"` // The unique ID or email address of a mail group, 示例值: "xxxxxxxxxxxxxxx or test_mail_group@xxx.xx" + UserIDType *IDType `query:"user_id_type" json:"-"` // 用户 ID 类型, 示例值: "open_id", 可选值有: open_id: 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。[了解更多: 如何获取 Open ID](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid), union_id: 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的, 在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID, 应用开发商可以把同个用户在多个应用中的身份关联起来。[了解更多: 如何获取 Union ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-union-id), user_id: 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内, 一个用户的 User ID 在所有应用(包括商店应用)中都保持一致。User ID 主要用于在不同的应用间打通用户数据。[了解更多: 如何获取 User ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-user-id), 默认值: `open_id`, 当值为 `user_id`, 字段权限要求: 获取用户 user ID + DepartmentIDType *DepartmentIDType `query:"department_id_type" json:"-"` // 此次调用中使用的部门ID的类型, 示例值: "open_department_id", 可选值有: department_id: 以自定义department_id来标识部门, open_department_id: 以open_department_id来标识部门 + Items []*BatchCreateMailGroupMemberReqItem `json:"items,omitempty"` // 本次添加的邮件组成员列表, 长度范围: `1` ~ `200` +} + +// BatchCreateMailGroupMemberReqItem ... +type BatchCreateMailGroupMemberReqItem struct { + MemberID *string `json:"member_id,omitempty"` // 邮件组内成员唯一标识(在请求体中不用填), 示例值: "xxxxxxxxxxxxxxx" + Email *string `json:"email,omitempty"` // 成员邮箱地址(当成员类型是EXTERNAL_USER/MAIL_GROUP/OTHER_MEMBER时有值), 示例值: "test_memeber@xxx.xx" + UserID *string `json:"user_id,omitempty"` // 租户内用户的唯一标识(当成员类型是USER时有值), 示例值: "xxxxxxxxxx" + DepartmentID *string `json:"department_id,omitempty"` // 租户内部门的唯一标识(当成员类型是DEPARTMENT时有值), 示例值: "xxxxxxxxxx" + Type *MailUserType `json:"type,omitempty"` // 成员类型, 示例值: "USER", 可选值有: USER: 内部用户, DEPARTMENT: 部门, COMPANY: 全员, EXTERNAL_USER: 外部用户, MAIL_GROUP: 邮件组, PUBLIC_MAILBOX: member is a public mailbox, OTHER_MEMBER: 内部成员 +} + +// BatchCreateMailGroupMemberResp ... +type BatchCreateMailGroupMemberResp struct { + Items []*BatchCreateMailGroupMemberRespItem `json:"items,omitempty"` // 添加成功后的邮件组成员信息列表 +} + +// BatchCreateMailGroupMemberRespItem ... +type BatchCreateMailGroupMemberRespItem struct { + MemberID string `json:"member_id,omitempty"` // 邮件组内成员唯一标识(在请求体中不用填) + Email string `json:"email,omitempty"` // 成员邮箱地址(当成员类型是EXTERNAL_USER/MAIL_GROUP/OTHER_MEMBER时有值) + UserID string `json:"user_id,omitempty"` // 租户内用户的唯一标识(当成员类型是USER时有值) + DepartmentID string `json:"department_id,omitempty"` // 租户内部门的唯一标识(当成员类型是DEPARTMENT时有值) + Type MailUserType `json:"type,omitempty"` // 成员类型, 可选值有: USER: 内部用户, DEPARTMENT: 部门, COMPANY: 全员, EXTERNAL_USER: 外部用户, MAIL_GROUP: 邮件组, PUBLIC_MAILBOX: member is a public mailbox, OTHER_MEMBER: 内部成员 +} + +// batchCreateMailGroupMemberResp ... +type batchCreateMailGroupMemberResp struct { + Code int64 `json:"code,omitempty"` // 错误码, 非 0 表示失败 + Msg string `json:"msg,omitempty"` // 错误描述 + Data *BatchCreateMailGroupMemberResp `json:"data,omitempty"` +} diff --git a/api_mail_mail_group_member_batch_delete.go b/api_mail_mail_group_member_batch_delete.go new file mode 100644 index 00000000..805644b8 --- /dev/null +++ b/api_mail_mail_group_member_batch_delete.go @@ -0,0 +1,73 @@ +// 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" +) + +// BatchDeleteMailGroupMember 一次请求可以删除一个邮件组中的多个成员。 +// +// doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/mail-v1/mailgroup-member/batch_delete +func (r *MailService) BatchDeleteMailGroupMember(ctx context.Context, request *BatchDeleteMailGroupMemberReq, options ...MethodOptionFunc) (*BatchDeleteMailGroupMemberResp, *Response, error) { + if r.cli.mock.mockMailBatchDeleteMailGroupMember != nil { + r.cli.log(ctx, LogLevelDebug, "[lark] Mail#BatchDeleteMailGroupMember mock enable") + return r.cli.mock.mockMailBatchDeleteMailGroupMember(ctx, request, options...) + } + + req := &RawRequestReq{ + Scope: "Mail", + API: "BatchDeleteMailGroupMember", + Method: "DELETE", + URL: r.cli.openBaseURL + "/open-apis/mail/v1/mailgroups/:mailgroup_id/members/batch_delete", + Body: request, + MethodOption: newMethodOption(options), + NeedTenantAccessToken: true, + } + resp := new(batchDeleteMailGroupMemberResp) + + response, err := r.cli.RawRequest(ctx, req, resp) + return resp.Data, response, err +} + +// MockMailBatchDeleteMailGroupMember mock MailBatchDeleteMailGroupMember method +func (r *Mock) MockMailBatchDeleteMailGroupMember(f func(ctx context.Context, request *BatchDeleteMailGroupMemberReq, options ...MethodOptionFunc) (*BatchDeleteMailGroupMemberResp, *Response, error)) { + r.mockMailBatchDeleteMailGroupMember = f +} + +// UnMockMailBatchDeleteMailGroupMember un-mock MailBatchDeleteMailGroupMember method +func (r *Mock) UnMockMailBatchDeleteMailGroupMember() { + r.mockMailBatchDeleteMailGroupMember = nil +} + +// BatchDeleteMailGroupMemberReq ... +type BatchDeleteMailGroupMemberReq struct { + MailGroupID string `path:"mailgroup_id" json:"-"` // The unique ID or email address of a mail group, 示例值: "xxxxxxxxxxxxxxx or test_mail_group@xxx.xx" + MemberIDList []string `json:"member_id_list,omitempty"` // 本次调用删除的成员ID列表, 示例值: ["xxxxxxx", "yyyyyyy"], 长度范围: `1` ~ `200` +} + +// BatchDeleteMailGroupMemberResp ... +type BatchDeleteMailGroupMemberResp struct { +} + +// batchDeleteMailGroupMemberResp ... +type batchDeleteMailGroupMemberResp struct { + Code int64 `json:"code,omitempty"` // 错误码, 非 0 表示失败 + Msg string `json:"msg,omitempty"` // 错误描述 + Data *BatchDeleteMailGroupMemberResp `json:"data,omitempty"` +} diff --git a/api_mail_mail_group_permission_member_batch_create.go b/api_mail_mail_group_permission_member_batch_create.go new file mode 100644 index 00000000..b9108888 --- /dev/null +++ b/api_mail_mail_group_permission_member_batch_create.go @@ -0,0 +1,94 @@ +// 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" +) + +// BatchCreateMailGroupPermissionMember 一次请求可以给一个邮件组添加多个权限成员。 +// +// doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/mail-v1/mailgroup-permission_member/batch_create +func (r *MailService) BatchCreateMailGroupPermissionMember(ctx context.Context, request *BatchCreateMailGroupPermissionMemberReq, options ...MethodOptionFunc) (*BatchCreateMailGroupPermissionMemberResp, *Response, error) { + if r.cli.mock.mockMailBatchCreateMailGroupPermissionMember != nil { + r.cli.log(ctx, LogLevelDebug, "[lark] Mail#BatchCreateMailGroupPermissionMember mock enable") + return r.cli.mock.mockMailBatchCreateMailGroupPermissionMember(ctx, request, options...) + } + + req := &RawRequestReq{ + Scope: "Mail", + API: "BatchCreateMailGroupPermissionMember", + Method: "POST", + URL: r.cli.openBaseURL + "/open-apis/mail/v1/mailgroups/:mailgroup_id/permission_members/batch_create", + Body: request, + MethodOption: newMethodOption(options), + NeedTenantAccessToken: true, + } + resp := new(batchCreateMailGroupPermissionMemberResp) + + response, err := r.cli.RawRequest(ctx, req, resp) + return resp.Data, response, err +} + +// MockMailBatchCreateMailGroupPermissionMember mock MailBatchCreateMailGroupPermissionMember method +func (r *Mock) MockMailBatchCreateMailGroupPermissionMember(f func(ctx context.Context, request *BatchCreateMailGroupPermissionMemberReq, options ...MethodOptionFunc) (*BatchCreateMailGroupPermissionMemberResp, *Response, error)) { + r.mockMailBatchCreateMailGroupPermissionMember = f +} + +// UnMockMailBatchCreateMailGroupPermissionMember un-mock MailBatchCreateMailGroupPermissionMember method +func (r *Mock) UnMockMailBatchCreateMailGroupPermissionMember() { + r.mockMailBatchCreateMailGroupPermissionMember = nil +} + +// BatchCreateMailGroupPermissionMemberReq ... +type BatchCreateMailGroupPermissionMemberReq struct { + MailGroupID string `path:"mailgroup_id" json:"-"` // The unique ID or email address of a mail group, 示例值: "xxxxxxxxxxxxxxx or test_mail_group@xxx.xx" + UserIDType *IDType `query:"user_id_type" json:"-"` // 用户 ID 类型, 示例值: "open_id", 可选值有: open_id: 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。[了解更多: 如何获取 Open ID](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid), union_id: 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的, 在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID, 应用开发商可以把同个用户在多个应用中的身份关联起来。[了解更多: 如何获取 Union ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-union-id), user_id: 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内, 一个用户的 User ID 在所有应用(包括商店应用)中都保持一致。User ID 主要用于在不同的应用间打通用户数据。[了解更多: 如何获取 User ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-user-id), 默认值: `open_id`, 当值为 `user_id`, 字段权限要求: 获取用户 user ID + DepartmentIDType *DepartmentIDType `query:"department_id_type" json:"-"` // 此次调用中使用的部门ID的类型, 示例值: "open_department_id", 可选值有: department_id: 以自定义department_id来标识部门, open_department_id: 以open_department_id来标识部门, 默认值: `open_department_id` + Items []*BatchCreateMailGroupPermissionMemberReqItem `json:"items,omitempty"` // 本次添加的邮件组权限成员列表, 长度范围: `1` ~ `200` +} + +// BatchCreateMailGroupPermissionMemberReqItem ... +type BatchCreateMailGroupPermissionMemberReqItem struct { + PermissionMemberID *string `json:"permission_member_id,omitempty"` // 权限组内成员唯一标识(在请求体中不用填), 示例值: "xxxxxxxxxxxxxxx" + UserID *string `json:"user_id,omitempty"` // 租户内用户的唯一标识(当成员类型是USER时有值), 示例值: "xxxxxxxxxx" + DepartmentID *string `json:"department_id,omitempty"` // 租户内部门的唯一标识(当成员类型是DEPARTMENT时有值), 示例值: "xxxxxxxxxx" + Email *string `json:"email,omitempty"` // 成员邮箱地址(当成员类型是MAIL_GROUP/PUBLIC_MAILBOX时有值), 示例值: "xxx@xx.x" + Type *MailUserType `json:"type,omitempty"` // 成员类型, 示例值: "USER", 可选值有: USER: 内部用户, DEPARTMENT: 部门, MAIL_GROUP: 邮件组, PUBLIC_MAILBOX: 公共邮箱 +} + +// BatchCreateMailGroupPermissionMemberResp ... +type BatchCreateMailGroupPermissionMemberResp struct { + Items []*BatchCreateMailGroupPermissionMemberRespItem `json:"items,omitempty"` // 添加成功后的邮件组权限成员信息列表 +} + +// BatchCreateMailGroupPermissionMemberRespItem ... +type BatchCreateMailGroupPermissionMemberRespItem struct { + PermissionMemberID string `json:"permission_member_id,omitempty"` // 权限组内成员唯一标识(在请求体中不用填) + UserID string `json:"user_id,omitempty"` // 租户内用户的唯一标识(当成员类型是USER时有值) + DepartmentID string `json:"department_id,omitempty"` // 租户内部门的唯一标识(当成员类型是DEPARTMENT时有值) + Email string `json:"email,omitempty"` // 成员邮箱地址(当成员类型是MAIL_GROUP/PUBLIC_MAILBOX时有值) + Type MailUserType `json:"type,omitempty"` // 成员类型, 可选值有: USER: 内部用户, DEPARTMENT: 部门, MAIL_GROUP: 邮件组, PUBLIC_MAILBOX: 公共邮箱 +} + +// batchCreateMailGroupPermissionMemberResp ... +type batchCreateMailGroupPermissionMemberResp struct { + Code int64 `json:"code,omitempty"` // 错误码, 非 0 表示失败 + Msg string `json:"msg,omitempty"` // 错误描述 + Data *BatchCreateMailGroupPermissionMemberResp `json:"data,omitempty"` +} diff --git a/api_mail_mail_group_permission_member_batch_delete.go b/api_mail_mail_group_permission_member_batch_delete.go new file mode 100644 index 00000000..4a2f101d --- /dev/null +++ b/api_mail_mail_group_permission_member_batch_delete.go @@ -0,0 +1,73 @@ +// 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" +) + +// BatchDeleteMailGroupPermissionMember 一次请求可以删除一个邮件组中的多个权限成员。 +// +// doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/mail-v1/mailgroup-permission_member/batch_delete +func (r *MailService) BatchDeleteMailGroupPermissionMember(ctx context.Context, request *BatchDeleteMailGroupPermissionMemberReq, options ...MethodOptionFunc) (*BatchDeleteMailGroupPermissionMemberResp, *Response, error) { + if r.cli.mock.mockMailBatchDeleteMailGroupPermissionMember != nil { + r.cli.log(ctx, LogLevelDebug, "[lark] Mail#BatchDeleteMailGroupPermissionMember mock enable") + return r.cli.mock.mockMailBatchDeleteMailGroupPermissionMember(ctx, request, options...) + } + + req := &RawRequestReq{ + Scope: "Mail", + API: "BatchDeleteMailGroupPermissionMember", + Method: "DELETE", + URL: r.cli.openBaseURL + "/open-apis/mail/v1/mailgroups/:mailgroup_id/permission_members/batch_delete", + Body: request, + MethodOption: newMethodOption(options), + NeedTenantAccessToken: true, + } + resp := new(batchDeleteMailGroupPermissionMemberResp) + + response, err := r.cli.RawRequest(ctx, req, resp) + return resp.Data, response, err +} + +// MockMailBatchDeleteMailGroupPermissionMember mock MailBatchDeleteMailGroupPermissionMember method +func (r *Mock) MockMailBatchDeleteMailGroupPermissionMember(f func(ctx context.Context, request *BatchDeleteMailGroupPermissionMemberReq, options ...MethodOptionFunc) (*BatchDeleteMailGroupPermissionMemberResp, *Response, error)) { + r.mockMailBatchDeleteMailGroupPermissionMember = f +} + +// UnMockMailBatchDeleteMailGroupPermissionMember un-mock MailBatchDeleteMailGroupPermissionMember method +func (r *Mock) UnMockMailBatchDeleteMailGroupPermissionMember() { + r.mockMailBatchDeleteMailGroupPermissionMember = nil +} + +// BatchDeleteMailGroupPermissionMemberReq ... +type BatchDeleteMailGroupPermissionMemberReq struct { + MailGroupID string `path:"mailgroup_id" json:"-"` // The unique ID or email address of a mail group, 示例值: "xxxxxxxxxxxxxxx or test_mail_group@xxx.xx" + PermissionMemberIDList []string `json:"permission_member_id_list,omitempty"` // 本次调用删除的权限成员ID列表, 示例值: ["xxxxxxx", "yyyyyyy"], 长度范围: `1` ~ `200` +} + +// BatchDeleteMailGroupPermissionMemberResp ... +type BatchDeleteMailGroupPermissionMemberResp struct { +} + +// batchDeleteMailGroupPermissionMemberResp ... +type batchDeleteMailGroupPermissionMemberResp struct { + Code int64 `json:"code,omitempty"` // 错误码, 非 0 表示失败 + Msg string `json:"msg,omitempty"` // 错误描述 + Data *BatchDeleteMailGroupPermissionMemberResp `json:"data,omitempty"` +} diff --git a/api_mail_public_mailbox_member_batch_create.go b/api_mail_public_mailbox_member_batch_create.go new file mode 100644 index 00000000..b4dded42 --- /dev/null +++ b/api_mail_public_mailbox_member_batch_create.go @@ -0,0 +1,89 @@ +// 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" +) + +// BatchCreatePublicMailboxMember 一次请求可以给一个公共邮箱添加多个成员。 +// +// doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/mail-v1/public_mailbox-member/batch_create +func (r *MailService) BatchCreatePublicMailboxMember(ctx context.Context, request *BatchCreatePublicMailboxMemberReq, options ...MethodOptionFunc) (*BatchCreatePublicMailboxMemberResp, *Response, error) { + if r.cli.mock.mockMailBatchCreatePublicMailboxMember != nil { + r.cli.log(ctx, LogLevelDebug, "[lark] Mail#BatchCreatePublicMailboxMember mock enable") + return r.cli.mock.mockMailBatchCreatePublicMailboxMember(ctx, request, options...) + } + + req := &RawRequestReq{ + Scope: "Mail", + API: "BatchCreatePublicMailboxMember", + Method: "POST", + URL: r.cli.openBaseURL + "/open-apis/mail/v1/public_mailboxes/:public_mailbox_id/members/batch_create", + Body: request, + MethodOption: newMethodOption(options), + NeedTenantAccessToken: true, + } + resp := new(batchCreatePublicMailboxMemberResp) + + response, err := r.cli.RawRequest(ctx, req, resp) + return resp.Data, response, err +} + +// MockMailBatchCreatePublicMailboxMember mock MailBatchCreatePublicMailboxMember method +func (r *Mock) MockMailBatchCreatePublicMailboxMember(f func(ctx context.Context, request *BatchCreatePublicMailboxMemberReq, options ...MethodOptionFunc) (*BatchCreatePublicMailboxMemberResp, *Response, error)) { + r.mockMailBatchCreatePublicMailboxMember = f +} + +// UnMockMailBatchCreatePublicMailboxMember un-mock MailBatchCreatePublicMailboxMember method +func (r *Mock) UnMockMailBatchCreatePublicMailboxMember() { + r.mockMailBatchCreatePublicMailboxMember = nil +} + +// BatchCreatePublicMailboxMemberReq ... +type BatchCreatePublicMailboxMemberReq struct { + PublicMailboxID string `path:"public_mailbox_id" json:"-"` // The unique ID or email address of a public mailbox, 示例值: "xxxxxxxxxxxxxxx or test_public_mailbox@xxx.xx" + UserIDType *IDType `query:"user_id_type" json:"-"` // 用户 ID 类型, 示例值: "open_id", 可选值有: open_id: 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。[了解更多: 如何获取 Open ID](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid), union_id: 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的, 在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID, 应用开发商可以把同个用户在多个应用中的身份关联起来。[了解更多: 如何获取 Union ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-union-id), user_id: 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内, 一个用户的 User ID 在所有应用(包括商店应用)中都保持一致。User ID 主要用于在不同的应用间打通用户数据。[了解更多: 如何获取 User ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-user-id), 默认值: `open_id`, 当值为 `user_id`, 字段权限要求: 获取用户 user ID + Items []*BatchCreatePublicMailboxMemberReqItem `json:"items,omitempty"` // 本次调用添加的公共邮箱成员列表, 长度范围: `1` ~ `200` +} + +// BatchCreatePublicMailboxMemberReqItem ... +type BatchCreatePublicMailboxMemberReqItem struct { + MemberID *string `json:"member_id,omitempty"` // 公共邮箱内成员唯一标识(在请求体中不用填), 示例值: "xxxxxxxxxxxxxxx" + UserID *string `json:"user_id,omitempty"` // 租户内用户的唯一标识(当成员类型是USER时有值), 示例值: "xxxxxxxxxx" + Type *MailUserType `json:"type,omitempty"` // 成员类型, 示例值: "USER", 可选值有: USER: 内部用户 +} + +// BatchCreatePublicMailboxMemberResp ... +type BatchCreatePublicMailboxMemberResp struct { + Items []*BatchCreatePublicMailboxMemberRespItem `json:"items,omitempty"` // 添加成功后的公共邮箱成员信息列表 +} + +// BatchCreatePublicMailboxMemberRespItem ... +type BatchCreatePublicMailboxMemberRespItem struct { + MemberID string `json:"member_id,omitempty"` // 公共邮箱内成员唯一标识(在请求体中不用填) + UserID string `json:"user_id,omitempty"` // 租户内用户的唯一标识(当成员类型是USER时有值) + Type MailUserType `json:"type,omitempty"` // 成员类型, 可选值有: USER: 内部用户 +} + +// batchCreatePublicMailboxMemberResp ... +type batchCreatePublicMailboxMemberResp struct { + Code int64 `json:"code,omitempty"` // 错误码, 非 0 表示失败 + Msg string `json:"msg,omitempty"` // 错误描述 + Data *BatchCreatePublicMailboxMemberResp `json:"data,omitempty"` +} diff --git a/api_mail_public_mailbox_member_batch_delete.go b/api_mail_public_mailbox_member_batch_delete.go new file mode 100644 index 00000000..1db8c71e --- /dev/null +++ b/api_mail_public_mailbox_member_batch_delete.go @@ -0,0 +1,73 @@ +// 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" +) + +// BatchDeletePublicMailboxMember 一次请求可以删除一个公共邮箱中的多个成员。 +// +// doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/mail-v1/public_mailbox-member/batch_delete +func (r *MailService) BatchDeletePublicMailboxMember(ctx context.Context, request *BatchDeletePublicMailboxMemberReq, options ...MethodOptionFunc) (*BatchDeletePublicMailboxMemberResp, *Response, error) { + if r.cli.mock.mockMailBatchDeletePublicMailboxMember != nil { + r.cli.log(ctx, LogLevelDebug, "[lark] Mail#BatchDeletePublicMailboxMember mock enable") + return r.cli.mock.mockMailBatchDeletePublicMailboxMember(ctx, request, options...) + } + + req := &RawRequestReq{ + Scope: "Mail", + API: "BatchDeletePublicMailboxMember", + Method: "DELETE", + URL: r.cli.openBaseURL + "/open-apis/mail/v1/public_mailboxes/:public_mailbox_id/members/batch_delete", + Body: request, + MethodOption: newMethodOption(options), + NeedTenantAccessToken: true, + } + resp := new(batchDeletePublicMailboxMemberResp) + + response, err := r.cli.RawRequest(ctx, req, resp) + return resp.Data, response, err +} + +// MockMailBatchDeletePublicMailboxMember mock MailBatchDeletePublicMailboxMember method +func (r *Mock) MockMailBatchDeletePublicMailboxMember(f func(ctx context.Context, request *BatchDeletePublicMailboxMemberReq, options ...MethodOptionFunc) (*BatchDeletePublicMailboxMemberResp, *Response, error)) { + r.mockMailBatchDeletePublicMailboxMember = f +} + +// UnMockMailBatchDeletePublicMailboxMember un-mock MailBatchDeletePublicMailboxMember method +func (r *Mock) UnMockMailBatchDeletePublicMailboxMember() { + r.mockMailBatchDeletePublicMailboxMember = nil +} + +// BatchDeletePublicMailboxMemberReq ... +type BatchDeletePublicMailboxMemberReq struct { + PublicMailboxID string `path:"public_mailbox_id" json:"-"` // The unique ID or email address of a public mailbox, 示例值: "xxxxxxxxxxxxxxx or test_public_mailbox@xxx.xx" + MemberIDList []string `json:"member_id_list,omitempty"` // 本次调用删除的公共邮箱成员ID列表, 示例值: ["xxxxxxx", "yyyyyyy"], 长度范围: `1` ~ `200` +} + +// BatchDeletePublicMailboxMemberResp ... +type BatchDeletePublicMailboxMemberResp struct { +} + +// batchDeletePublicMailboxMemberResp ... +type batchDeletePublicMailboxMemberResp struct { + Code int64 `json:"code,omitempty"` // 错误码, 非 0 表示失败 + Msg string `json:"msg,omitempty"` // 错误描述 + Data *BatchDeletePublicMailboxMemberResp `json:"data,omitempty"` +} diff --git a/api_message_get_file.go b/api_message_get_file.go index 1b358b37..09466daa 100644 --- a/api_message_get_file.go +++ b/api_message_get_file.go @@ -65,7 +65,7 @@ func (r *Mock) UnMockMessageGetMessageFile() { type GetMessageFileReq struct { MessageID string `path:"message_id" json:"-"` // 待查询资源对应的消息ID, 示例值: "om_dc13264520392913993dd051dba21dcf" FileKey string `path:"file_key" json:"-"` // 待查询资源的key, 注意: 请求的 file_key 和 message_id 需要匹配, 示例值: "file_456a92d6-c6ea-4de4-ac3f-7afcf44ac78g" - Type string `query:"type" json:"-"` // 资源类型, 可选"image, file“; image对应消息中的 图片, 富文本消息中的图片。 file对应消息中的 文件、音频、视频、(表情包除外), 示例值: "image" + Type string `query:"type" json:"-"` // 资源类型, 可选值有: `image`: 对应消息中的图片或富文本消息中的图片, `file`: 对应消息中的 文件、音频、视频(表情包除外), 示例值: "image" } // getMessageFileResp ... diff --git a/api_message_send.go b/api_message_send.go index 93d771d7..8fbf5b78 100644 --- a/api_message_send.go +++ b/api_message_send.go @@ -65,8 +65,8 @@ type SendRawMessageReq struct { ReceiveIDType IDType `query:"receive_id_type" json:"-"` // 消息接收者id类型 open_id/user_id/union_id/email/chat_id, 示例值: "open_id", 可选值有: open_id: 标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。[了解更多: 如何获取 Open ID](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid), user_id: 标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内, 一个用户的 User ID 在所有应用(包括商店应用)中都保持一致。User ID 主要用于在不同的应用间打通用户数据。[了解更多: 如何获取 User ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-user-id), union_id: 标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的, 在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID, 应用开发商可以把同个用户在多个应用中的身份关联起来。[了解更多: 如何获取 Union ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-union-id), email: 以用户的真实邮箱来标识用户。, chat_id: 以群ID来标识群聊。[了解更多: 如何获取群ID ](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/chat-id-description) ReceiveID string `json:"receive_id,omitempty"` // 消息接收者的ID, ID类型应与查询参数[receive_id_type] 对应;推荐使用 OpenID, 获取方式可参考文档[如何获取 Open ID?](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid), 示例值: "ou_7d8a6e6df7621556ce0d21922b676706ccs" MsgType MsgType `json:"msg_type,omitempty"` // 消息类型 包括: text、post、image、file、audio、media、sticker、interactive、share_chat、share_user等, 类型定义请参考[发送消息Content](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/im-v1/message/create_json), 示例值: "text" - Content string `json:"content,omitempty"` // 消息内容, json结构序列化后的字符串。不同msg_type对应不同内容。消息类型 包括: text、post、image、file、audio、media、sticker、interactive、share_chat、share_user等, 具体格式说明参考: [发送消息Content](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/im-v1/message/create_json), 请求体大小限制: 文本消息请求体最大不能超过150KB, 卡片及富文本消息请求体最大不能超过30KB, 示例值: "{\"text\":\"Tom test content\"}" - UUID *string `json:"uuid,omitempty"` // 由开发者生成的唯一字符串序列, 用于发送消息请求去重;持有相同uuid的请求1小时内至多成功执行一次, 示例值: "a0d69e20-1dd1-458b-k525-dfeca4015204", 最大长度: `50` 字符 + Content string `json:"content,omitempty"` // 消息内容, JSON结构序列化后的字符串。不同msg_type对应不同内容, 具体格式说明参考: [发送消息Content](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/im-v1/message/create_json), 注意: JSON字符串需进行转义, 如换行符转义后为`\\n`, 文本消息请求体最大不能超过150KB, 卡片及富文本消息请求体最大不能超过30KB, 示例值: "{\"text\":\"test content\"}" + UUID *string `json:"uuid,omitempty"` // 由开发者生成的唯一字符串序列, 用于发送消息请求去重;持有相同uuid的请求1小时内至多成功发送一条消息, 示例值: "a0d69e20-1dd1-458b-k525-dfeca4015204", 最大长度: `50` 字符 } // SendRawMessageResp ... diff --git a/api_message_send_wrap.go b/api_message_send_wrap.go index ec9edb4b..656df121 100644 --- a/api_message_send_wrap.go +++ b/api_message_send_wrap.go @@ -32,6 +32,7 @@ type MessageSendAPI struct { msgAPI *MessageService receiveID string receiveIDType IDType + uuid *string } // Send ... @@ -72,6 +73,12 @@ func (r *MessageSendAPI) ToEmail(id string) *MessageSendAPI { return r.to(id, IDTypeEmail) } +// UUID ... +func (r *MessageSendAPI) UUID(uuid string) *MessageSendAPI { + r.uuid = &uuid + return r +} + func (r *MessageSendAPI) to(receiveID string, receiveIDType IDType) *MessageSendAPI { r.receiveID = receiveID r.receiveIDType = receiveIDType @@ -159,6 +166,7 @@ type MessageReplyAPI struct { cli *Lark msgAPI *MessageService messageID string + uuid *string } // Reply ... @@ -170,6 +178,12 @@ func (r *MessageService) Reply(messageID string) *MessageReplyAPI { } } +// UUID ... +func (r *MessageReplyAPI) UUID(uuid string) *MessageReplyAPI { + r.uuid = &uuid + return r +} + // SendText ... func (r *MessageReplyAPI) SendText(ctx context.Context, text string) (*ReplyRawMessageResp, *Response, error) { return r.reply(ctx, MsgTypeText, `{"text":%q}`, text) @@ -232,6 +246,7 @@ func (r *MessageSendAPI) send(ctx context.Context, msgType MsgType, format strin ReceiveID: r.receiveID, Content: formatString(format, args...), MsgType: msgType, + UUID: r.uuid, }) } @@ -240,6 +255,7 @@ func (r *MessageReplyAPI) reply(ctx context.Context, msgType MsgType, format str MessageID: r.messageID, Content: formatString(format, args...), MsgType: msgType, + UUID: r.uuid, }) } diff --git a/api_search_data_source_item_create.go b/api_search_data_source_item_create.go index e02d2f90..6be4eb9f 100644 --- a/api_search_data_source_item_create.go +++ b/api_search_data_source_item_create.go @@ -61,7 +61,7 @@ type CreateSearchDataSourceItemReq struct { ID string `json:"id,omitempty"` // item 在 datasource 中的唯一标识, 示例值: "01010111", 最大长度: `128` 字符 ACL []*CreateSearchDataSourceItemReqACL `json:"acl,omitempty"` // item 的访问权限控制。 acl 字段为空数组, 则默认数据不可见。如果数据是全员可见, 需要设置 access="allow"; type="user"; value="everyone" Metadata *CreateSearchDataSourceItemReqMetadata `json:"metadata,omitempty"` // item 的元信息 - StructuredData string `json:"structured_data,omitempty"` // 结构化数据(以 json 字符串传递), 这些字段是搜索结果的展示字段(特殊字段无须在此另外指定);具体格式可参参考 [通用模块接入指南](/uAjLw4CM/ukTMukTMukTM/search-v2/common-template-intergration-handbook) 请求创建数据项部分, 示例值: "{\"key\":\"value\"}" + StructuredData string `json:"structured_data,omitempty"` // 结构化数据(以 json 字符串传递), 这些字段是搜索结果的展示字段(特殊字段无须在此另外指定);具体格式可参参考 [接入指南](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/search-v2/common-template-intergration-handbook) 请求创建数据项部分, 示例值: "{\"key\":\"value\"}" Content *CreateSearchDataSourceItemReqContent `json:"content,omitempty"` // 非结构化数据, 如文档文本, 飞书搜索会用来做召回 } diff --git a/api_search_data_source_item_get.go b/api_search_data_source_item_get.go index e6967589..04bd076b 100644 --- a/api_search_data_source_item_get.go +++ b/api_search_data_source_item_get.go @@ -71,7 +71,7 @@ type GetSearchDataSourceItemRespItem struct { ID string `json:"id,omitempty"` // item 在 datasource 中的唯一标识 ACL []*GetSearchDataSourceItemRespItemACL `json:"acl,omitempty"` // item 的访问权限控制。 acl 字段为空数组, 则默认数据不可见。如果数据是全员可见, 需要设置 access="allow"; type="user"; value="everyone" Metadata *GetSearchDataSourceItemRespItemMetadata `json:"metadata,omitempty"` // item 的元信息 - StructuredData string `json:"structured_data,omitempty"` // 结构化数据(以 json 字符串传递), 这些字段是搜索结果的展示字段(特殊字段无须在此另外指定);具体格式可参参考 [通用模块接入指南](/uAjLw4CM/ukTMukTMukTM/search-v2/common-template-intergration-handbook) 请求创建数据项部分 + StructuredData string `json:"structured_data,omitempty"` // 结构化数据(以 json 字符串传递), 这些字段是搜索结果的展示字段(特殊字段无须在此另外指定);具体格式可参参考 [接入指南](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/search-v2/common-template-intergration-handbook) 请求创建数据项部分 Content *GetSearchDataSourceItemRespItemContent `json:"content,omitempty"` // 非结构化数据, 如文档文本, 飞书搜索会用来做召回 } diff --git a/larkext/folder_impl_permission.go b/larkext/folder_impl_permission.go index af880412..a0b6c949 100644 --- a/larkext/folder_impl_permission.go +++ b/larkext/folder_impl_permission.go @@ -103,7 +103,7 @@ func (r *Permission) FullAccessPerm() *Permission { return r } -// Create 添加权限 +// GetList ... func (r *Permission) GetList(ctx context.Context) ([]*lark.GetDriveMemberPermissionListRespItem, error) { resp, _, err := r.client.Drive.GetDriveMemberPermissionList(ctx, &lark.GetDriveMemberPermissionListReq{ Type: r.typ, @@ -176,14 +176,14 @@ func (r *Permission) Update(ctx context.Context) (*lark.UpdateDriveMemberPermiss // Check 检查权限 func (r *Permission) Check(ctx context.Context) (bool, error) { resp, _, err := r.client.Drive.CheckDriveMemberPermission(ctx, &lark.CheckDriveMemberPermissionReq{ - Type: r.typ, - Token: r.token, - Perm: r.perm, + Type: r.typ, + Token: r.token, + Action: r.perm, }, r.ops...) if err != nil { return false, err } - return resp.IsPermitted, nil + return resp.AuthResult, nil } // GetPublic 获取公共权限 diff --git a/mock.go b/mock.go index bbc56869..94364b31 100644 --- a/mock.go +++ b/mock.go @@ -350,14 +350,13 @@ type Mock struct { mockDrivePartUploadDriveFile func(ctx context.Context, request *PartUploadDriveFileReq, options ...MethodOptionFunc) (*PartUploadDriveFileResp, *Response, error) mockDriveFinishUploadDriveFile func(ctx context.Context, request *FinishUploadDriveFileReq, options ...MethodOptionFunc) (*FinishUploadDriveFileResp, *Response, error) mockDriveCreateDriveMemberPermissionOld func(ctx context.Context, request *CreateDriveMemberPermissionOldReq, options ...MethodOptionFunc) (*CreateDriveMemberPermissionOldResp, *Response, error) - mockDriveTransferDriveMemberPermission func(ctx context.Context, request *TransferDriveMemberPermissionReq, options ...MethodOptionFunc) (*TransferDriveMemberPermissionResp, *Response, error) + mockDriveTransferDriveOwnerPermission func(ctx context.Context, request *TransferDriveOwnerPermissionReq, options ...MethodOptionFunc) (*TransferDriveOwnerPermissionResp, *Response, error) + mockDriveCheckDriveMemberPermission func(ctx context.Context, request *CheckDriveMemberPermissionReq, options ...MethodOptionFunc) (*CheckDriveMemberPermissionResp, *Response, error) mockDriveGetDriveMemberPermissionList func(ctx context.Context, request *GetDriveMemberPermissionListReq, options ...MethodOptionFunc) (*GetDriveMemberPermissionListResp, *Response, error) + mockDriveGetDriveMemberPermissionListOld func(ctx context.Context, request *GetDriveMemberPermissionListOldReq, options ...MethodOptionFunc) (*GetDriveMemberPermissionListOldResp, *Response, error) mockDriveCreateDriveMemberPermission func(ctx context.Context, request *CreateDriveMemberPermissionReq, options ...MethodOptionFunc) (*CreateDriveMemberPermissionResp, *Response, error) - mockDriveDeleteDriveMemberPermission func(ctx context.Context, request *DeleteDriveMemberPermissionReq, options ...MethodOptionFunc) (*DeleteDriveMemberPermissionResp, *Response, error) - mockDriveDeleteDriveMemberPermissionOld func(ctx context.Context, request *DeleteDriveMemberPermissionOldReq, options ...MethodOptionFunc) (*DeleteDriveMemberPermissionOldResp, *Response, error) - mockDriveUpdateDriveMemberPermissionOld func(ctx context.Context, request *UpdateDriveMemberPermissionOldReq, options ...MethodOptionFunc) (*UpdateDriveMemberPermissionOldResp, *Response, error) mockDriveUpdateDriveMemberPermission func(ctx context.Context, request *UpdateDriveMemberPermissionReq, options ...MethodOptionFunc) (*UpdateDriveMemberPermissionResp, *Response, error) - mockDriveCheckDriveMemberPermission func(ctx context.Context, request *CheckDriveMemberPermissionReq, options ...MethodOptionFunc) (*CheckDriveMemberPermissionResp, *Response, error) + mockDriveDeleteDriveMemberPermission func(ctx context.Context, request *DeleteDriveMemberPermissionReq, options ...MethodOptionFunc) (*DeleteDriveMemberPermissionResp, *Response, error) mockDriveGetDrivePublicPermissionOld func(ctx context.Context, request *GetDrivePublicPermissionOldReq, options ...MethodOptionFunc) (*GetDrivePublicPermissionOldResp, *Response, error) mockDriveGetDrivePublicPermission func(ctx context.Context, request *GetDrivePublicPermissionReq, options ...MethodOptionFunc) (*GetDrivePublicPermissionResp, *Response, error) mockDriveUpdateDrivePublicPermission func(ctx context.Context, request *UpdateDrivePublicPermissionReq, options ...MethodOptionFunc) (*UpdateDrivePublicPermissionResp, *Response, error) @@ -450,6 +449,10 @@ type Mock struct { mockDriveGetWikiNode func(ctx context.Context, request *GetWikiNodeReq, options ...MethodOptionFunc) (*GetWikiNodeResp, *Response, error) mockDriveMoveDocsToWiki func(ctx context.Context, request *MoveDocsToWikiReq, options ...MethodOptionFunc) (*MoveDocsToWikiResp, *Response, error) mockDriveGetWikiTask func(ctx context.Context, request *GetWikiTaskReq, options ...MethodOptionFunc) (*GetWikiTaskResp, *Response, error) + mockDriveDeleteDriveMemberPermissionOld func(ctx context.Context, request *DeleteDriveMemberPermissionOldReq, options ...MethodOptionFunc) (*DeleteDriveMemberPermissionOldResp, *Response, error) + mockDriveUpdateDriveMemberPermissionOld func(ctx context.Context, request *UpdateDriveMemberPermissionOldReq, options ...MethodOptionFunc) (*UpdateDriveMemberPermissionOldResp, *Response, error) + mockDriveTransferDriveMemberPermission func(ctx context.Context, request *TransferDriveMemberPermissionReq, options ...MethodOptionFunc) (*TransferDriveMemberPermissionResp, *Response, error) + mockDriveCheckDriveMemberPermissionOld func(ctx context.Context, request *CheckDriveMemberPermissionOldReq, options ...MethodOptionFunc) (*CheckDriveMemberPermissionOldResp, *Response, error) mockEHRGetEHREmployeeList func(ctx context.Context, request *GetEHREmployeeListReq, options ...MethodOptionFunc) (*GetEHREmployeeListResp, *Response, error) mockEHRDownloadEHRAttachments func(ctx context.Context, request *DownloadEHRAttachmentsReq, options ...MethodOptionFunc) (*DownloadEHRAttachmentsResp, *Response, error) mockEventGetEventOutboundIpList func(ctx context.Context, request *GetEventOutboundIpListReq, options ...MethodOptionFunc) (*GetEventOutboundIpListResp, *Response, error) @@ -509,6 +512,7 @@ type Mock struct { mockHelpdeskUnsubscribeHelpdeskEvent func(ctx context.Context, request *UnsubscribeHelpdeskEventReq, options ...MethodOptionFunc) (*UnsubscribeHelpdeskEventResp, *Response, error) mockHireGetHireJobConfig func(ctx context.Context, request *GetHireJobConfigReq, options ...MethodOptionFunc) (*GetHireJobConfigResp, *Response, error) mockHireCreateHireJob func(ctx context.Context, request *CreateHireJobReq, options ...MethodOptionFunc) (*CreateHireJobResp, *Response, error) + mockHireUpdateHireJob func(ctx context.Context, request *UpdateHireJobReq, options ...MethodOptionFunc) (*UpdateHireJobResp, *Response, error) mockHireUpdateHireJobConfig func(ctx context.Context, request *UpdateHireJobConfigReq, options ...MethodOptionFunc) (*UpdateHireJobConfigResp, *Response, error) mockHireGetHireJob func(ctx context.Context, request *GetHireJobReq, options ...MethodOptionFunc) (*GetHireJobResp, *Response, error) mockHireGetHireJobManager func(ctx context.Context, request *GetHireJobManagerReq, options ...MethodOptionFunc) (*GetHireJobManagerResp, *Response, error) @@ -547,13 +551,17 @@ type Mock struct { mockMailUpdateMailGroup func(ctx context.Context, request *UpdateMailGroupReq, options ...MethodOptionFunc) (*UpdateMailGroupResp, *Response, error) mockMailDeleteMailGroup func(ctx context.Context, request *DeleteMailGroupReq, options ...MethodOptionFunc) (*DeleteMailGroupResp, *Response, error) mockMailCreateMailGroupMember func(ctx context.Context, request *CreateMailGroupMemberReq, options ...MethodOptionFunc) (*CreateMailGroupMemberResp, *Response, error) + mockMailDeleteMailGroupMember func(ctx context.Context, request *DeleteMailGroupMemberReq, options ...MethodOptionFunc) (*DeleteMailGroupMemberResp, *Response, error) mockMailGetMailGroupMember func(ctx context.Context, request *GetMailGroupMemberReq, options ...MethodOptionFunc) (*GetMailGroupMemberResp, *Response, error) mockMailGetMailGroupMemberList func(ctx context.Context, request *GetMailGroupMemberListReq, options ...MethodOptionFunc) (*GetMailGroupMemberListResp, *Response, error) - mockMailDeleteMailGroupMember func(ctx context.Context, request *DeleteMailGroupMemberReq, options ...MethodOptionFunc) (*DeleteMailGroupMemberResp, *Response, error) + mockMailBatchCreateMailGroupMember func(ctx context.Context, request *BatchCreateMailGroupMemberReq, options ...MethodOptionFunc) (*BatchCreateMailGroupMemberResp, *Response, error) + mockMailBatchDeleteMailGroupMember func(ctx context.Context, request *BatchDeleteMailGroupMemberReq, options ...MethodOptionFunc) (*BatchDeleteMailGroupMemberResp, *Response, error) mockMailCreateMailGroupPermissionMember func(ctx context.Context, request *CreateMailGroupPermissionMemberReq, options ...MethodOptionFunc) (*CreateMailGroupPermissionMemberResp, *Response, error) + mockMailDeleteMailGroupPermissionMember func(ctx context.Context, request *DeleteMailGroupPermissionMemberReq, options ...MethodOptionFunc) (*DeleteMailGroupPermissionMemberResp, *Response, error) mockMailGetMailGroupPermissionMember func(ctx context.Context, request *GetMailGroupPermissionMemberReq, options ...MethodOptionFunc) (*GetMailGroupPermissionMemberResp, *Response, error) mockMailGetMailGroupPermissionMemberList func(ctx context.Context, request *GetMailGroupPermissionMemberListReq, options ...MethodOptionFunc) (*GetMailGroupPermissionMemberListResp, *Response, error) - mockMailDeleteMailGroupPermissionMember func(ctx context.Context, request *DeleteMailGroupPermissionMemberReq, options ...MethodOptionFunc) (*DeleteMailGroupPermissionMemberResp, *Response, error) + mockMailBatchCreateMailGroupPermissionMember func(ctx context.Context, request *BatchCreateMailGroupPermissionMemberReq, options ...MethodOptionFunc) (*BatchCreateMailGroupPermissionMemberResp, *Response, error) + mockMailBatchDeleteMailGroupPermissionMember func(ctx context.Context, request *BatchDeleteMailGroupPermissionMemberReq, options ...MethodOptionFunc) (*BatchDeleteMailGroupPermissionMemberResp, *Response, error) mockMailCreateMailGroupAlias func(ctx context.Context, request *CreateMailGroupAliasReq, options ...MethodOptionFunc) (*CreateMailGroupAliasResp, *Response, error) mockMailGetMailGroupAliasList func(ctx context.Context, request *GetMailGroupAliasListReq, options ...MethodOptionFunc) (*GetMailGroupAliasListResp, *Response, error) mockMailDeleteMailGroupAlias func(ctx context.Context, request *DeleteMailGroupAliasReq, options ...MethodOptionFunc) (*DeleteMailGroupAliasResp, *Response, error) @@ -566,6 +574,8 @@ type Mock struct { mockMailCreatePublicMailboxMember func(ctx context.Context, request *CreatePublicMailboxMemberReq, options ...MethodOptionFunc) (*CreatePublicMailboxMemberResp, *Response, error) mockMailGetPublicMailboxMember func(ctx context.Context, request *GetPublicMailboxMemberReq, options ...MethodOptionFunc) (*GetPublicMailboxMemberResp, *Response, error) mockMailGetPublicMailboxMemberList func(ctx context.Context, request *GetPublicMailboxMemberListReq, options ...MethodOptionFunc) (*GetPublicMailboxMemberListResp, *Response, error) + mockMailBatchCreatePublicMailboxMember func(ctx context.Context, request *BatchCreatePublicMailboxMemberReq, options ...MethodOptionFunc) (*BatchCreatePublicMailboxMemberResp, *Response, error) + mockMailBatchDeletePublicMailboxMember func(ctx context.Context, request *BatchDeletePublicMailboxMemberReq, options ...MethodOptionFunc) (*BatchDeletePublicMailboxMemberResp, *Response, error) mockMailDeletePublicMailboxMember func(ctx context.Context, request *DeletePublicMailboxMemberReq, options ...MethodOptionFunc) (*DeletePublicMailboxMemberResp, *Response, error) mockMailClearPublicMailboxMember func(ctx context.Context, request *ClearPublicMailboxMemberReq, options ...MethodOptionFunc) (*ClearPublicMailboxMemberResp, *Response, error) mockMailCreateMailPublicMailboxAlias func(ctx context.Context, request *CreateMailPublicMailboxAliasReq, options ...MethodOptionFunc) (*CreateMailPublicMailboxAliasResp, *Response, error) diff --git a/test/drive_sample_test.go b/test/drive_sample_test.go index 2d5699da..4fa5e5a5 100644 --- a/test/drive_sample_test.go +++ b/test/drive_sample_test.go @@ -555,72 +555,60 @@ func Test_Drive_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - cli.Mock().MockDriveTransferDriveMemberPermission(func(ctx context.Context, request *lark.TransferDriveMemberPermissionReq, options ...lark.MethodOptionFunc) (*lark.TransferDriveMemberPermissionResp, *lark.Response, error) { - return nil, nil, fmt.Errorf("mock-failed") - }) - defer cli.Mock().UnMockDriveTransferDriveMemberPermission() - - _, _, err := moduleCli.TransferDriveMemberPermission(ctx, &lark.TransferDriveMemberPermissionReq{}) - as.NotNil(err) - as.Equal(err.Error(), "mock-failed") - }) - - t.Run("", func(t *testing.T) { - - cli.Mock().MockDriveGetDriveMemberPermissionList(func(ctx context.Context, request *lark.GetDriveMemberPermissionListReq, options ...lark.MethodOptionFunc) (*lark.GetDriveMemberPermissionListResp, *lark.Response, error) { + cli.Mock().MockDriveTransferDriveOwnerPermission(func(ctx context.Context, request *lark.TransferDriveOwnerPermissionReq, options ...lark.MethodOptionFunc) (*lark.TransferDriveOwnerPermissionResp, *lark.Response, error) { return nil, nil, fmt.Errorf("mock-failed") }) - defer cli.Mock().UnMockDriveGetDriveMemberPermissionList() + defer cli.Mock().UnMockDriveTransferDriveOwnerPermission() - _, _, err := moduleCli.GetDriveMemberPermissionList(ctx, &lark.GetDriveMemberPermissionListReq{}) + _, _, err := moduleCli.TransferDriveOwnerPermission(ctx, &lark.TransferDriveOwnerPermissionReq{}) as.NotNil(err) as.Equal(err.Error(), "mock-failed") }) t.Run("", func(t *testing.T) { - cli.Mock().MockDriveCreateDriveMemberPermission(func(ctx context.Context, request *lark.CreateDriveMemberPermissionReq, options ...lark.MethodOptionFunc) (*lark.CreateDriveMemberPermissionResp, *lark.Response, error) { + cli.Mock().MockDriveCheckDriveMemberPermission(func(ctx context.Context, request *lark.CheckDriveMemberPermissionReq, options ...lark.MethodOptionFunc) (*lark.CheckDriveMemberPermissionResp, *lark.Response, error) { return nil, nil, fmt.Errorf("mock-failed") }) - defer cli.Mock().UnMockDriveCreateDriveMemberPermission() + defer cli.Mock().UnMockDriveCheckDriveMemberPermission() - _, _, err := moduleCli.CreateDriveMemberPermission(ctx, &lark.CreateDriveMemberPermissionReq{}) + _, _, err := moduleCli.CheckDriveMemberPermission(ctx, &lark.CheckDriveMemberPermissionReq{}) as.NotNil(err) as.Equal(err.Error(), "mock-failed") }) t.Run("", func(t *testing.T) { - cli.Mock().MockDriveDeleteDriveMemberPermission(func(ctx context.Context, request *lark.DeleteDriveMemberPermissionReq, options ...lark.MethodOptionFunc) (*lark.DeleteDriveMemberPermissionResp, *lark.Response, error) { + cli.Mock().MockDriveGetDriveMemberPermissionList(func(ctx context.Context, request *lark.GetDriveMemberPermissionListReq, options ...lark.MethodOptionFunc) (*lark.GetDriveMemberPermissionListResp, *lark.Response, error) { return nil, nil, fmt.Errorf("mock-failed") }) - defer cli.Mock().UnMockDriveDeleteDriveMemberPermission() + defer cli.Mock().UnMockDriveGetDriveMemberPermissionList() - _, _, err := moduleCli.DeleteDriveMemberPermission(ctx, &lark.DeleteDriveMemberPermissionReq{}) + _, _, err := moduleCli.GetDriveMemberPermissionList(ctx, &lark.GetDriveMemberPermissionListReq{}) as.NotNil(err) as.Equal(err.Error(), "mock-failed") }) t.Run("", func(t *testing.T) { - cli.Mock().MockDriveDeleteDriveMemberPermissionOld(func(ctx context.Context, request *lark.DeleteDriveMemberPermissionOldReq, options ...lark.MethodOptionFunc) (*lark.DeleteDriveMemberPermissionOldResp, *lark.Response, error) { + cli.Mock().MockDriveGetDriveMemberPermissionListOld(func(ctx context.Context, request *lark.GetDriveMemberPermissionListOldReq, options ...lark.MethodOptionFunc) (*lark.GetDriveMemberPermissionListOldResp, *lark.Response, error) { return nil, nil, fmt.Errorf("mock-failed") }) - defer cli.Mock().UnMockDriveDeleteDriveMemberPermissionOld() + defer cli.Mock().UnMockDriveGetDriveMemberPermissionListOld() - _, _, err := moduleCli.DeleteDriveMemberPermissionOld(ctx, &lark.DeleteDriveMemberPermissionOldReq{}) + _, _, err := moduleCli.GetDriveMemberPermissionListOld(ctx, &lark.GetDriveMemberPermissionListOldReq{}) as.NotNil(err) as.Equal(err.Error(), "mock-failed") }) t.Run("", func(t *testing.T) { - cli.Mock().MockDriveUpdateDriveMemberPermissionOld(func(ctx context.Context, request *lark.UpdateDriveMemberPermissionOldReq, options ...lark.MethodOptionFunc) (*lark.UpdateDriveMemberPermissionOldResp, *lark.Response, error) { + cli.Mock().MockDriveCreateDriveMemberPermission(func(ctx context.Context, request *lark.CreateDriveMemberPermissionReq, options ...lark.MethodOptionFunc) (*lark.CreateDriveMemberPermissionResp, *lark.Response, error) { return nil, nil, fmt.Errorf("mock-failed") }) - defer cli.Mock().UnMockDriveUpdateDriveMemberPermissionOld() + defer cli.Mock().UnMockDriveCreateDriveMemberPermission() - _, _, err := moduleCli.UpdateDriveMemberPermissionOld(ctx, &lark.UpdateDriveMemberPermissionOldReq{}) + _, _, err := moduleCli.CreateDriveMemberPermission(ctx, &lark.CreateDriveMemberPermissionReq{}) as.NotNil(err) as.Equal(err.Error(), "mock-failed") }) @@ -639,12 +627,12 @@ func Test_Drive_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - cli.Mock().MockDriveCheckDriveMemberPermission(func(ctx context.Context, request *lark.CheckDriveMemberPermissionReq, options ...lark.MethodOptionFunc) (*lark.CheckDriveMemberPermissionResp, *lark.Response, error) { + cli.Mock().MockDriveDeleteDriveMemberPermission(func(ctx context.Context, request *lark.DeleteDriveMemberPermissionReq, options ...lark.MethodOptionFunc) (*lark.DeleteDriveMemberPermissionResp, *lark.Response, error) { return nil, nil, fmt.Errorf("mock-failed") }) - defer cli.Mock().UnMockDriveCheckDriveMemberPermission() + defer cli.Mock().UnMockDriveDeleteDriveMemberPermission() - _, _, err := moduleCli.CheckDriveMemberPermission(ctx, &lark.CheckDriveMemberPermissionReq{}) + _, _, err := moduleCli.DeleteDriveMemberPermission(ctx, &lark.DeleteDriveMemberPermissionReq{}) as.NotNil(err) as.Equal(err.Error(), "mock-failed") }) @@ -1753,6 +1741,54 @@ func Test_Drive_Sample_Failed(t *testing.T) { as.Equal(err.Error(), "mock-failed") }) + t.Run("", func(t *testing.T) { + + cli.Mock().MockDriveDeleteDriveMemberPermissionOld(func(ctx context.Context, request *lark.DeleteDriveMemberPermissionOldReq, options ...lark.MethodOptionFunc) (*lark.DeleteDriveMemberPermissionOldResp, *lark.Response, error) { + return nil, nil, fmt.Errorf("mock-failed") + }) + defer cli.Mock().UnMockDriveDeleteDriveMemberPermissionOld() + + _, _, err := moduleCli.DeleteDriveMemberPermissionOld(ctx, &lark.DeleteDriveMemberPermissionOldReq{}) + as.NotNil(err) + as.Equal(err.Error(), "mock-failed") + }) + + t.Run("", func(t *testing.T) { + + cli.Mock().MockDriveUpdateDriveMemberPermissionOld(func(ctx context.Context, request *lark.UpdateDriveMemberPermissionOldReq, options ...lark.MethodOptionFunc) (*lark.UpdateDriveMemberPermissionOldResp, *lark.Response, error) { + return nil, nil, fmt.Errorf("mock-failed") + }) + defer cli.Mock().UnMockDriveUpdateDriveMemberPermissionOld() + + _, _, err := moduleCli.UpdateDriveMemberPermissionOld(ctx, &lark.UpdateDriveMemberPermissionOldReq{}) + as.NotNil(err) + as.Equal(err.Error(), "mock-failed") + }) + + t.Run("", func(t *testing.T) { + + cli.Mock().MockDriveTransferDriveMemberPermission(func(ctx context.Context, request *lark.TransferDriveMemberPermissionReq, options ...lark.MethodOptionFunc) (*lark.TransferDriveMemberPermissionResp, *lark.Response, error) { + return nil, nil, fmt.Errorf("mock-failed") + }) + defer cli.Mock().UnMockDriveTransferDriveMemberPermission() + + _, _, err := moduleCli.TransferDriveMemberPermission(ctx, &lark.TransferDriveMemberPermissionReq{}) + as.NotNil(err) + as.Equal(err.Error(), "mock-failed") + }) + + t.Run("", func(t *testing.T) { + + cli.Mock().MockDriveCheckDriveMemberPermissionOld(func(ctx context.Context, request *lark.CheckDriveMemberPermissionOldReq, options ...lark.MethodOptionFunc) (*lark.CheckDriveMemberPermissionOldResp, *lark.Response, error) { + return nil, nil, fmt.Errorf("mock-failed") + }) + defer cli.Mock().UnMockDriveCheckDriveMemberPermissionOld() + + _, _, err := moduleCli.CheckDriveMemberPermissionOld(ctx, &lark.CheckDriveMemberPermissionOldReq{}) + as.NotNil(err) + as.Equal(err.Error(), "mock-failed") + }) + }) t.Run("response is failed", func(t *testing.T) { @@ -2112,14 +2148,7 @@ func Test_Drive_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.TransferDriveMemberPermission(ctx, &lark.TransferDriveMemberPermissionReq{}) - as.NotNil(err) - as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) - }) - - t.Run("", func(t *testing.T) { - - _, _, err := moduleCli.GetDriveMemberPermissionList(ctx, &lark.GetDriveMemberPermissionListReq{ + _, _, err := moduleCli.TransferDriveOwnerPermission(ctx, &lark.TransferDriveOwnerPermissionReq{ Token: "x", }) as.NotNil(err) @@ -2128,7 +2157,7 @@ func Test_Drive_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.CreateDriveMemberPermission(ctx, &lark.CreateDriveMemberPermissionReq{ + _, _, err := moduleCli.CheckDriveMemberPermission(ctx, &lark.CheckDriveMemberPermissionReq{ Token: "x", }) as.NotNil(err) @@ -2137,9 +2166,8 @@ func Test_Drive_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.DeleteDriveMemberPermission(ctx, &lark.DeleteDriveMemberPermissionReq{ - Token: "x", - MemberID: "x", + _, _, err := moduleCli.GetDriveMemberPermissionList(ctx, &lark.GetDriveMemberPermissionListReq{ + Token: "x", }) as.NotNil(err) as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) @@ -2147,14 +2175,16 @@ func Test_Drive_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.DeleteDriveMemberPermissionOld(ctx, &lark.DeleteDriveMemberPermissionOldReq{}) + _, _, err := moduleCli.GetDriveMemberPermissionListOld(ctx, &lark.GetDriveMemberPermissionListOldReq{}) as.NotNil(err) as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) }) t.Run("", func(t *testing.T) { - _, _, err := moduleCli.UpdateDriveMemberPermissionOld(ctx, &lark.UpdateDriveMemberPermissionOldReq{}) + _, _, err := moduleCli.CreateDriveMemberPermission(ctx, &lark.CreateDriveMemberPermissionReq{ + Token: "x", + }) as.NotNil(err) as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) }) @@ -2171,7 +2201,10 @@ func Test_Drive_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.CheckDriveMemberPermission(ctx, &lark.CheckDriveMemberPermissionReq{}) + _, _, err := moduleCli.DeleteDriveMemberPermission(ctx, &lark.DeleteDriveMemberPermissionReq{ + Token: "x", + MemberID: "x", + }) as.NotNil(err) as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) }) @@ -3038,6 +3071,34 @@ func Test_Drive_Sample_Failed(t *testing.T) { as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) }) + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.DeleteDriveMemberPermissionOld(ctx, &lark.DeleteDriveMemberPermissionOldReq{}) + as.NotNil(err) + as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) + }) + + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.UpdateDriveMemberPermissionOld(ctx, &lark.UpdateDriveMemberPermissionOldReq{}) + as.NotNil(err) + as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) + }) + + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.TransferDriveMemberPermission(ctx, &lark.TransferDriveMemberPermissionReq{}) + as.NotNil(err) + as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) + }) + + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.CheckDriveMemberPermissionOld(ctx, &lark.CheckDriveMemberPermissionOldReq{}) + as.NotNil(err) + as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) + }) + }) t.Run("fake request is failed", func(t *testing.T) { @@ -3400,14 +3461,7 @@ func Test_Drive_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.TransferDriveMemberPermission(ctx, &lark.TransferDriveMemberPermissionReq{}) - as.NotNil(err) - as.Equal("fake raw request", err.Error()) - }) - - t.Run("", func(t *testing.T) { - - _, _, err := moduleCli.GetDriveMemberPermissionList(ctx, &lark.GetDriveMemberPermissionListReq{ + _, _, err := moduleCli.TransferDriveOwnerPermission(ctx, &lark.TransferDriveOwnerPermissionReq{ Token: "x", }) as.NotNil(err) @@ -3416,7 +3470,7 @@ func Test_Drive_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.CreateDriveMemberPermission(ctx, &lark.CreateDriveMemberPermissionReq{ + _, _, err := moduleCli.CheckDriveMemberPermission(ctx, &lark.CheckDriveMemberPermissionReq{ Token: "x", }) as.NotNil(err) @@ -3425,9 +3479,8 @@ func Test_Drive_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.DeleteDriveMemberPermission(ctx, &lark.DeleteDriveMemberPermissionReq{ - Token: "x", - MemberID: "x", + _, _, err := moduleCli.GetDriveMemberPermissionList(ctx, &lark.GetDriveMemberPermissionListReq{ + Token: "x", }) as.NotNil(err) as.Equal("fake raw request", err.Error()) @@ -3435,14 +3488,16 @@ func Test_Drive_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.DeleteDriveMemberPermissionOld(ctx, &lark.DeleteDriveMemberPermissionOldReq{}) + _, _, err := moduleCli.GetDriveMemberPermissionListOld(ctx, &lark.GetDriveMemberPermissionListOldReq{}) as.NotNil(err) as.Equal("fake raw request", err.Error()) }) t.Run("", func(t *testing.T) { - _, _, err := moduleCli.UpdateDriveMemberPermissionOld(ctx, &lark.UpdateDriveMemberPermissionOldReq{}) + _, _, err := moduleCli.CreateDriveMemberPermission(ctx, &lark.CreateDriveMemberPermissionReq{ + Token: "x", + }) as.NotNil(err) as.Equal("fake raw request", err.Error()) }) @@ -3459,7 +3514,10 @@ func Test_Drive_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.CheckDriveMemberPermission(ctx, &lark.CheckDriveMemberPermissionReq{}) + _, _, err := moduleCli.DeleteDriveMemberPermission(ctx, &lark.DeleteDriveMemberPermissionReq{ + Token: "x", + MemberID: "x", + }) as.NotNil(err) as.Equal("fake raw request", err.Error()) }) @@ -4326,5 +4384,33 @@ func Test_Drive_Sample_Failed(t *testing.T) { as.Equal("fake raw request", err.Error()) }) + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.DeleteDriveMemberPermissionOld(ctx, &lark.DeleteDriveMemberPermissionOldReq{}) + as.NotNil(err) + as.Equal("fake raw request", err.Error()) + }) + + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.UpdateDriveMemberPermissionOld(ctx, &lark.UpdateDriveMemberPermissionOldReq{}) + as.NotNil(err) + as.Equal("fake raw request", err.Error()) + }) + + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.TransferDriveMemberPermission(ctx, &lark.TransferDriveMemberPermissionReq{}) + as.NotNil(err) + as.Equal("fake raw request", err.Error()) + }) + + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.CheckDriveMemberPermissionOld(ctx, &lark.CheckDriveMemberPermissionOldReq{}) + as.NotNil(err) + as.Equal("fake raw request", err.Error()) + }) + }) } diff --git a/test/hire_sample_test.go b/test/hire_sample_test.go index 1158719f..b66846b9 100644 --- a/test/hire_sample_test.go +++ b/test/hire_sample_test.go @@ -73,6 +73,18 @@ func Test_Hire_Sample_Failed(t *testing.T) { as.Equal(err.Error(), "mock-failed") }) + t.Run("", func(t *testing.T) { + + cli.Mock().MockHireUpdateHireJob(func(ctx context.Context, request *lark.UpdateHireJobReq, options ...lark.MethodOptionFunc) (*lark.UpdateHireJobResp, *lark.Response, error) { + return nil, nil, fmt.Errorf("mock-failed") + }) + defer cli.Mock().UnMockHireUpdateHireJob() + + _, _, err := moduleCli.UpdateHireJob(ctx, &lark.UpdateHireJobReq{}) + as.NotNil(err) + as.Equal(err.Error(), "mock-failed") + }) + t.Run("", func(t *testing.T) { cli.Mock().MockHireUpdateHireJobConfig(func(ctx context.Context, request *lark.UpdateHireJobConfigReq, options ...lark.MethodOptionFunc) (*lark.UpdateHireJobConfigResp, *lark.Response, error) { @@ -395,6 +407,15 @@ func Test_Hire_Sample_Failed(t *testing.T) { as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) }) + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.UpdateHireJob(ctx, &lark.UpdateHireJobReq{ + JobID: "x", + }) + as.NotNil(err) + as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) + }) + t.Run("", func(t *testing.T) { _, _, err := moduleCli.UpdateHireJobConfig(ctx, &lark.UpdateHireJobConfigReq{ @@ -407,7 +428,7 @@ func Test_Hire_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { _, _, err := moduleCli.GetHireJob(ctx, &lark.GetHireJobReq{ - JobID: 1, + JobID: "x", }) as.NotNil(err) as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) @@ -630,6 +651,15 @@ func Test_Hire_Sample_Failed(t *testing.T) { as.Equal("fake raw request", err.Error()) }) + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.UpdateHireJob(ctx, &lark.UpdateHireJobReq{ + JobID: "x", + }) + as.NotNil(err) + as.Equal("fake raw request", err.Error()) + }) + t.Run("", func(t *testing.T) { _, _, err := moduleCli.UpdateHireJobConfig(ctx, &lark.UpdateHireJobConfigReq{ @@ -642,7 +672,7 @@ func Test_Hire_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { _, _, err := moduleCli.GetHireJob(ctx, &lark.GetHireJobReq{ - JobID: 1, + JobID: "x", }) as.NotNil(err) as.Equal("fake raw request", err.Error()) diff --git a/test/mail_sample_test.go b/test/mail_sample_test.go index f2ccb184..93ba6e70 100644 --- a/test/mail_sample_test.go +++ b/test/mail_sample_test.go @@ -145,6 +145,18 @@ func Test_Mail_Sample_Failed(t *testing.T) { as.Equal(err.Error(), "mock-failed") }) + t.Run("", func(t *testing.T) { + + cli.Mock().MockMailDeleteMailGroupMember(func(ctx context.Context, request *lark.DeleteMailGroupMemberReq, options ...lark.MethodOptionFunc) (*lark.DeleteMailGroupMemberResp, *lark.Response, error) { + return nil, nil, fmt.Errorf("mock-failed") + }) + defer cli.Mock().UnMockMailDeleteMailGroupMember() + + _, _, err := moduleCli.DeleteMailGroupMember(ctx, &lark.DeleteMailGroupMemberReq{}) + as.NotNil(err) + as.Equal(err.Error(), "mock-failed") + }) + t.Run("", func(t *testing.T) { cli.Mock().MockMailGetMailGroupMember(func(ctx context.Context, request *lark.GetMailGroupMemberReq, options ...lark.MethodOptionFunc) (*lark.GetMailGroupMemberResp, *lark.Response, error) { @@ -171,12 +183,24 @@ func Test_Mail_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - cli.Mock().MockMailDeleteMailGroupMember(func(ctx context.Context, request *lark.DeleteMailGroupMemberReq, options ...lark.MethodOptionFunc) (*lark.DeleteMailGroupMemberResp, *lark.Response, error) { + cli.Mock().MockMailBatchCreateMailGroupMember(func(ctx context.Context, request *lark.BatchCreateMailGroupMemberReq, options ...lark.MethodOptionFunc) (*lark.BatchCreateMailGroupMemberResp, *lark.Response, error) { return nil, nil, fmt.Errorf("mock-failed") }) - defer cli.Mock().UnMockMailDeleteMailGroupMember() + defer cli.Mock().UnMockMailBatchCreateMailGroupMember() - _, _, err := moduleCli.DeleteMailGroupMember(ctx, &lark.DeleteMailGroupMemberReq{}) + _, _, err := moduleCli.BatchCreateMailGroupMember(ctx, &lark.BatchCreateMailGroupMemberReq{}) + as.NotNil(err) + as.Equal(err.Error(), "mock-failed") + }) + + t.Run("", func(t *testing.T) { + + cli.Mock().MockMailBatchDeleteMailGroupMember(func(ctx context.Context, request *lark.BatchDeleteMailGroupMemberReq, options ...lark.MethodOptionFunc) (*lark.BatchDeleteMailGroupMemberResp, *lark.Response, error) { + return nil, nil, fmt.Errorf("mock-failed") + }) + defer cli.Mock().UnMockMailBatchDeleteMailGroupMember() + + _, _, err := moduleCli.BatchDeleteMailGroupMember(ctx, &lark.BatchDeleteMailGroupMemberReq{}) as.NotNil(err) as.Equal(err.Error(), "mock-failed") }) @@ -193,6 +217,18 @@ func Test_Mail_Sample_Failed(t *testing.T) { as.Equal(err.Error(), "mock-failed") }) + t.Run("", func(t *testing.T) { + + cli.Mock().MockMailDeleteMailGroupPermissionMember(func(ctx context.Context, request *lark.DeleteMailGroupPermissionMemberReq, options ...lark.MethodOptionFunc) (*lark.DeleteMailGroupPermissionMemberResp, *lark.Response, error) { + return nil, nil, fmt.Errorf("mock-failed") + }) + defer cli.Mock().UnMockMailDeleteMailGroupPermissionMember() + + _, _, err := moduleCli.DeleteMailGroupPermissionMember(ctx, &lark.DeleteMailGroupPermissionMemberReq{}) + as.NotNil(err) + as.Equal(err.Error(), "mock-failed") + }) + t.Run("", func(t *testing.T) { cli.Mock().MockMailGetMailGroupPermissionMember(func(ctx context.Context, request *lark.GetMailGroupPermissionMemberReq, options ...lark.MethodOptionFunc) (*lark.GetMailGroupPermissionMemberResp, *lark.Response, error) { @@ -219,12 +255,24 @@ func Test_Mail_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - cli.Mock().MockMailDeleteMailGroupPermissionMember(func(ctx context.Context, request *lark.DeleteMailGroupPermissionMemberReq, options ...lark.MethodOptionFunc) (*lark.DeleteMailGroupPermissionMemberResp, *lark.Response, error) { + cli.Mock().MockMailBatchCreateMailGroupPermissionMember(func(ctx context.Context, request *lark.BatchCreateMailGroupPermissionMemberReq, options ...lark.MethodOptionFunc) (*lark.BatchCreateMailGroupPermissionMemberResp, *lark.Response, error) { return nil, nil, fmt.Errorf("mock-failed") }) - defer cli.Mock().UnMockMailDeleteMailGroupPermissionMember() + defer cli.Mock().UnMockMailBatchCreateMailGroupPermissionMember() - _, _, err := moduleCli.DeleteMailGroupPermissionMember(ctx, &lark.DeleteMailGroupPermissionMemberReq{}) + _, _, err := moduleCli.BatchCreateMailGroupPermissionMember(ctx, &lark.BatchCreateMailGroupPermissionMemberReq{}) + as.NotNil(err) + as.Equal(err.Error(), "mock-failed") + }) + + t.Run("", func(t *testing.T) { + + cli.Mock().MockMailBatchDeleteMailGroupPermissionMember(func(ctx context.Context, request *lark.BatchDeleteMailGroupPermissionMemberReq, options ...lark.MethodOptionFunc) (*lark.BatchDeleteMailGroupPermissionMemberResp, *lark.Response, error) { + return nil, nil, fmt.Errorf("mock-failed") + }) + defer cli.Mock().UnMockMailBatchDeleteMailGroupPermissionMember() + + _, _, err := moduleCli.BatchDeleteMailGroupPermissionMember(ctx, &lark.BatchDeleteMailGroupPermissionMemberReq{}) as.NotNil(err) as.Equal(err.Error(), "mock-failed") }) @@ -373,6 +421,30 @@ func Test_Mail_Sample_Failed(t *testing.T) { as.Equal(err.Error(), "mock-failed") }) + t.Run("", func(t *testing.T) { + + cli.Mock().MockMailBatchCreatePublicMailboxMember(func(ctx context.Context, request *lark.BatchCreatePublicMailboxMemberReq, options ...lark.MethodOptionFunc) (*lark.BatchCreatePublicMailboxMemberResp, *lark.Response, error) { + return nil, nil, fmt.Errorf("mock-failed") + }) + defer cli.Mock().UnMockMailBatchCreatePublicMailboxMember() + + _, _, err := moduleCli.BatchCreatePublicMailboxMember(ctx, &lark.BatchCreatePublicMailboxMemberReq{}) + as.NotNil(err) + as.Equal(err.Error(), "mock-failed") + }) + + t.Run("", func(t *testing.T) { + + cli.Mock().MockMailBatchDeletePublicMailboxMember(func(ctx context.Context, request *lark.BatchDeletePublicMailboxMemberReq, options ...lark.MethodOptionFunc) (*lark.BatchDeletePublicMailboxMemberResp, *lark.Response, error) { + return nil, nil, fmt.Errorf("mock-failed") + }) + defer cli.Mock().UnMockMailBatchDeletePublicMailboxMember() + + _, _, err := moduleCli.BatchDeletePublicMailboxMember(ctx, &lark.BatchDeletePublicMailboxMemberReq{}) + as.NotNil(err) + as.Equal(err.Error(), "mock-failed") + }) + t.Run("", func(t *testing.T) { cli.Mock().MockMailDeletePublicMailboxMember(func(ctx context.Context, request *lark.DeletePublicMailboxMemberReq, options ...lark.MethodOptionFunc) (*lark.DeletePublicMailboxMemberResp, *lark.Response, error) { @@ -553,6 +625,16 @@ func Test_Mail_Sample_Failed(t *testing.T) { as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) }) + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.DeleteMailGroupMember(ctx, &lark.DeleteMailGroupMemberReq{ + MailGroupID: "x", + MemberID: "x", + }) + as.NotNil(err) + as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) + }) + t.Run("", func(t *testing.T) { _, _, err := moduleCli.GetMailGroupMember(ctx, &lark.GetMailGroupMemberReq{ @@ -574,9 +656,17 @@ func Test_Mail_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.DeleteMailGroupMember(ctx, &lark.DeleteMailGroupMemberReq{ + _, _, err := moduleCli.BatchCreateMailGroupMember(ctx, &lark.BatchCreateMailGroupMemberReq{ + MailGroupID: "x", + }) + as.NotNil(err) + as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) + }) + + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.BatchDeleteMailGroupMember(ctx, &lark.BatchDeleteMailGroupMemberReq{ MailGroupID: "x", - MemberID: "x", }) as.NotNil(err) as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) @@ -591,6 +681,16 @@ func Test_Mail_Sample_Failed(t *testing.T) { as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) }) + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.DeleteMailGroupPermissionMember(ctx, &lark.DeleteMailGroupPermissionMemberReq{ + MailGroupID: "x", + PermissionMemberID: "x", + }) + as.NotNil(err) + as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) + }) + t.Run("", func(t *testing.T) { _, _, err := moduleCli.GetMailGroupPermissionMember(ctx, &lark.GetMailGroupPermissionMemberReq{ @@ -612,9 +712,17 @@ func Test_Mail_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.DeleteMailGroupPermissionMember(ctx, &lark.DeleteMailGroupPermissionMemberReq{ - MailGroupID: "x", - PermissionMemberID: "x", + _, _, err := moduleCli.BatchCreateMailGroupPermissionMember(ctx, &lark.BatchCreateMailGroupPermissionMemberReq{ + MailGroupID: "x", + }) + as.NotNil(err) + as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) + }) + + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.BatchDeleteMailGroupPermissionMember(ctx, &lark.BatchDeleteMailGroupPermissionMemberReq{ + MailGroupID: "x", }) as.NotNil(err) as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) @@ -726,6 +834,24 @@ func Test_Mail_Sample_Failed(t *testing.T) { as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) }) + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.BatchCreatePublicMailboxMember(ctx, &lark.BatchCreatePublicMailboxMemberReq{ + PublicMailboxID: "x", + }) + as.NotNil(err) + as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) + }) + + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.BatchDeletePublicMailboxMember(ctx, &lark.BatchDeletePublicMailboxMemberReq{ + PublicMailboxID: "x", + }) + as.NotNil(err) + as.True(lark.GetErrorCode(err) > 0, fmt.Sprintf("need get lark err, but get %s", err)) + }) + t.Run("", func(t *testing.T) { _, _, err := moduleCli.DeletePublicMailboxMember(ctx, &lark.DeletePublicMailboxMemberReq{ @@ -885,6 +1011,16 @@ func Test_Mail_Sample_Failed(t *testing.T) { as.Equal("fake raw request", err.Error()) }) + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.DeleteMailGroupMember(ctx, &lark.DeleteMailGroupMemberReq{ + MailGroupID: "x", + MemberID: "x", + }) + as.NotNil(err) + as.Equal("fake raw request", err.Error()) + }) + t.Run("", func(t *testing.T) { _, _, err := moduleCli.GetMailGroupMember(ctx, &lark.GetMailGroupMemberReq{ @@ -906,9 +1042,17 @@ func Test_Mail_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.DeleteMailGroupMember(ctx, &lark.DeleteMailGroupMemberReq{ + _, _, err := moduleCli.BatchCreateMailGroupMember(ctx, &lark.BatchCreateMailGroupMemberReq{ + MailGroupID: "x", + }) + as.NotNil(err) + as.Equal("fake raw request", err.Error()) + }) + + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.BatchDeleteMailGroupMember(ctx, &lark.BatchDeleteMailGroupMemberReq{ MailGroupID: "x", - MemberID: "x", }) as.NotNil(err) as.Equal("fake raw request", err.Error()) @@ -923,6 +1067,16 @@ func Test_Mail_Sample_Failed(t *testing.T) { as.Equal("fake raw request", err.Error()) }) + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.DeleteMailGroupPermissionMember(ctx, &lark.DeleteMailGroupPermissionMemberReq{ + MailGroupID: "x", + PermissionMemberID: "x", + }) + as.NotNil(err) + as.Equal("fake raw request", err.Error()) + }) + t.Run("", func(t *testing.T) { _, _, err := moduleCli.GetMailGroupPermissionMember(ctx, &lark.GetMailGroupPermissionMemberReq{ @@ -944,9 +1098,17 @@ func Test_Mail_Sample_Failed(t *testing.T) { t.Run("", func(t *testing.T) { - _, _, err := moduleCli.DeleteMailGroupPermissionMember(ctx, &lark.DeleteMailGroupPermissionMemberReq{ - MailGroupID: "x", - PermissionMemberID: "x", + _, _, err := moduleCli.BatchCreateMailGroupPermissionMember(ctx, &lark.BatchCreateMailGroupPermissionMemberReq{ + MailGroupID: "x", + }) + as.NotNil(err) + as.Equal("fake raw request", err.Error()) + }) + + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.BatchDeleteMailGroupPermissionMember(ctx, &lark.BatchDeleteMailGroupPermissionMemberReq{ + MailGroupID: "x", }) as.NotNil(err) as.Equal("fake raw request", err.Error()) @@ -1058,6 +1220,24 @@ func Test_Mail_Sample_Failed(t *testing.T) { as.Equal("fake raw request", err.Error()) }) + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.BatchCreatePublicMailboxMember(ctx, &lark.BatchCreatePublicMailboxMemberReq{ + PublicMailboxID: "x", + }) + as.NotNil(err) + as.Equal("fake raw request", err.Error()) + }) + + t.Run("", func(t *testing.T) { + + _, _, err := moduleCli.BatchDeletePublicMailboxMember(ctx, &lark.BatchDeletePublicMailboxMemberReq{ + PublicMailboxID: "x", + }) + as.NotNil(err) + as.Equal("fake raw request", err.Error()) + }) + t.Run("", func(t *testing.T) { _, _, err := moduleCli.DeletePublicMailboxMember(ctx, &lark.DeletePublicMailboxMemberReq{