gitee.com/larksuite/oapi-sdk-go/v3@v3.0.3/service/contact/v3/api.go (about) 1 // Package contact code generated by oapi sdk gen 2 /* 3 * MIT License 4 * 5 * Copyright (c) 2022 Lark Technologies Pte. Ltd. 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 8 * 9 * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software. 10 * 11 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 12 */ 13 14 package larkcontact 15 16 import ( 17 "context" 18 "net/http" 19 20 "gitee.com/larksuite/oapi-sdk-go/v3/core" 21 ) 22 23 func NewService(config *larkcore.Config) *ContactService { 24 c := &ContactService{config: config} 25 c.CustomAttr = &customAttr{service: c} 26 c.CustomAttrEvent = &customAttrEvent{service: c} 27 c.Department = &department{service: c} 28 c.EmployeeTypeEnum = &employeeTypeEnum{service: c} 29 c.Group = &group{service: c} 30 c.GroupMember = &groupMember{service: c} 31 c.Scope = &scope{service: c} 32 c.Unit = &unit{service: c} 33 c.User = &user{service: c} 34 return c 35 } 36 37 type ContactService struct { 38 config *larkcore.Config 39 CustomAttr *customAttr // 自定义用户字段 40 CustomAttrEvent *customAttrEvent // 事件 41 Department *department // 部门 42 EmployeeTypeEnum *employeeTypeEnum // 人员类型 43 Group *group // 用户组 44 GroupMember *groupMember // 用户组成员 45 Scope *scope // 通讯录权限范围 46 Unit *unit // 单位 47 User *user // 用户 48 } 49 50 type customAttr struct { 51 service *ContactService 52 } 53 type customAttrEvent struct { 54 service *ContactService 55 } 56 type department struct { 57 service *ContactService 58 } 59 type employeeTypeEnum struct { 60 service *ContactService 61 } 62 type group struct { 63 service *ContactService 64 } 65 type groupMember struct { 66 service *ContactService 67 } 68 type scope struct { 69 service *ContactService 70 } 71 type unit struct { 72 service *ContactService 73 } 74 type user struct { 75 service *ContactService 76 } 77 78 // 获取企业自定义用户字段 79 // 80 // - 获取企业自定义的用户字段配置信息 81 // 82 // - 调用该接口前,需要先确认[企业管理员](https://www.feishu.cn/hc/zh-CN/articles/360049067822)在[企业管理后台 - 组织架构 - 成员字段管理](http://www.feishu.cn/admin/contacts/employee-field-new/custom) 自定义字段管理栏开启了“允许开放平台API调用“。;; 83 // 84 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/custom_attr/list 85 // 86 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/list_customAttr.go 87 func (c *customAttr) List(ctx context.Context, req *ListCustomAttrReq, options ...larkcore.RequestOptionFunc) (*ListCustomAttrResp, error) { 88 // 发起请求 89 apiReq := req.apiReq 90 apiReq.ApiPath = "/open-apis/contact/v3/custom_attrs" 91 apiReq.HttpMethod = http.MethodGet 92 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 93 apiResp, err := larkcore.Request(ctx, apiReq, c.service.config, options...) 94 if err != nil { 95 return nil, err 96 } 97 // 反序列响应结果 98 resp := &ListCustomAttrResp{ApiResp: apiResp} 99 err = apiResp.JSONUnmarshalBody(resp) 100 if err != nil { 101 return nil, err 102 } 103 return resp, err 104 } 105 func (c *customAttr) ListByIterator(ctx context.Context, req *ListCustomAttrReq, options ...larkcore.RequestOptionFunc) (*ListCustomAttrIterator, error) { 106 return &ListCustomAttrIterator{ 107 ctx: ctx, 108 req: req, 109 listFunc: c.List, 110 options: options, 111 limit: req.Limit}, nil 112 } 113 114 // 获取子部门列表 115 // 116 // - 通过部门ID获取部门的子部门列表。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 117 // 118 // - - 使用 user_access_token 时,返回该用户组织架构可见性范围([登陆企业管理后台进行权限配置](https://www.feishu.cn/admin/security/permission/visibility))内的所有可见部门。当进行递归查询时,最多1000个部门对该用户可见。;;- 使用 ; tenant_access_token 则基于应用的通讯录权限范围进行权限校验与过滤。;如果部门ID为0,会检验应用是否有全员通讯录权限,如果是非0 部门ID,则会校验应用是否有该部门的通讯录权限。无部门权限返回无部门通讯录权限错误码,有权限则返回部门下子部门列表(根据fetch_child决定是否递归)。 119 // 120 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/children 121 // 122 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/children_department.go 123 func (d *department) Children(ctx context.Context, req *ChildrenDepartmentReq, options ...larkcore.RequestOptionFunc) (*ChildrenDepartmentResp, error) { 124 // 发起请求 125 apiReq := req.apiReq 126 apiReq.ApiPath = "/open-apis/contact/v3/departments/:department_id/children" 127 apiReq.HttpMethod = http.MethodGet 128 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser} 129 apiResp, err := larkcore.Request(ctx, apiReq, d.service.config, options...) 130 if err != nil { 131 return nil, err 132 } 133 // 反序列响应结果 134 resp := &ChildrenDepartmentResp{ApiResp: apiResp} 135 err = apiResp.JSONUnmarshalBody(resp) 136 if err != nil { 137 return nil, err 138 } 139 return resp, err 140 } 141 func (d *department) ChildrenByIterator(ctx context.Context, req *ChildrenDepartmentReq, options ...larkcore.RequestOptionFunc) (*ChildrenDepartmentIterator, error) { 142 return &ChildrenDepartmentIterator{ 143 ctx: ctx, 144 req: req, 145 listFunc: d.Children, 146 options: options, 147 limit: req.Limit}, nil 148 } 149 150 // 创建部门 151 // 152 // - 该接口用于向通讯录中创建部门。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 153 // 154 // - 只可在应用的通讯录权限范围内的部门下创建部门。若需要在根部门下创建子部门,则应用通讯录权限范围需要设置为“全部成员”。应用商店应用无权限调用此接口。 155 // 156 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/create 157 // 158 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/create_department.go 159 func (d *department) Create(ctx context.Context, req *CreateDepartmentReq, options ...larkcore.RequestOptionFunc) (*CreateDepartmentResp, error) { 160 // 发起请求 161 apiReq := req.apiReq 162 apiReq.ApiPath = "/open-apis/contact/v3/departments" 163 apiReq.HttpMethod = http.MethodPost 164 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 165 apiResp, err := larkcore.Request(ctx, apiReq, d.service.config, options...) 166 if err != nil { 167 return nil, err 168 } 169 // 反序列响应结果 170 resp := &CreateDepartmentResp{ApiResp: apiResp} 171 err = apiResp.JSONUnmarshalBody(resp) 172 if err != nil { 173 return nil, err 174 } 175 return resp, err 176 } 177 178 // 删除部门 179 // 180 // - 该接口用于向通讯录中删除部门。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 181 // 182 // - 应用需要同时拥有待删除部门及其父部门的通讯录授权。应用商店应用无权限调用该接口。 183 // 184 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/delete 185 // 186 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/delete_department.go 187 func (d *department) Delete(ctx context.Context, req *DeleteDepartmentReq, options ...larkcore.RequestOptionFunc) (*DeleteDepartmentResp, error) { 188 // 发起请求 189 apiReq := req.apiReq 190 apiReq.ApiPath = "/open-apis/contact/v3/departments/:department_id" 191 apiReq.HttpMethod = http.MethodDelete 192 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 193 apiResp, err := larkcore.Request(ctx, apiReq, d.service.config, options...) 194 if err != nil { 195 return nil, err 196 } 197 // 反序列响应结果 198 resp := &DeleteDepartmentResp{ApiResp: apiResp} 199 err = apiResp.JSONUnmarshalBody(resp) 200 if err != nil { 201 return nil, err 202 } 203 return resp, err 204 } 205 206 // 获取单个部门信息 207 // 208 // - 该接口用于向通讯录获取单个部门信息。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 209 // 210 // - 使用tenant_access_token时,应用需要拥有待查询部门的通讯录授权。如果需要获取根部门信息,则需要拥有全员权限。;使用user_access_token时,用户需要有待查询部门的可见性,如果需要获取根部门信息,则要求员工可见所有人。 211 // 212 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/get 213 // 214 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/get_department.go 215 func (d *department) Get(ctx context.Context, req *GetDepartmentReq, options ...larkcore.RequestOptionFunc) (*GetDepartmentResp, error) { 216 // 发起请求 217 apiReq := req.apiReq 218 apiReq.ApiPath = "/open-apis/contact/v3/departments/:department_id" 219 apiReq.HttpMethod = http.MethodGet 220 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser} 221 apiResp, err := larkcore.Request(ctx, apiReq, d.service.config, options...) 222 if err != nil { 223 return nil, err 224 } 225 // 反序列响应结果 226 resp := &GetDepartmentResp{ApiResp: apiResp} 227 err = apiResp.JSONUnmarshalBody(resp) 228 if err != nil { 229 return nil, err 230 } 231 return resp, err 232 } 233 234 // 获取部门信息列表 235 // 236 // - 该接口用于获取当前部门子部门列表。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 237 // 238 // - - 使用 user_access_token 时,返回该用户组织架构可见性范围([登陆企业管理后台进行权限配置](https://www.feishu.cn/admin/security/permission/visibility))内的所有可见部门。当进行递归查询时,只筛查最多1000个部门的可见性。;;- 使用 ; tenant_access_token 则基于应用的通讯录权限范围进行权限校验与过滤。由于 ; parent_department_id 是非必填参数,填与不填存在<b>两种数据权限校验与返回</b>情况:;<br> <br>1、请求设置了 ; parent_department_id 为A(根部门0),会检验A是否在通讯录权限内,若在( parent_department_id=0 时会校验是否为全员权限),则返回部门下子部门列表(根据fetch_child决定是否递归),否则返回无部门通讯录权限错误码。;<br> <br>2、请求未带 ; parent_department_id 参数,如通讯录范围为全员权限,只返回根部门ID(部门ID为0),否则返回根据通讯录范围配置的部门ID及子部门(根据 ; fetch_child 决定是否递归)。 239 // 240 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/list 241 // 242 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/list_department.go 243 func (d *department) List(ctx context.Context, req *ListDepartmentReq, options ...larkcore.RequestOptionFunc) (*ListDepartmentResp, error) { 244 // 发起请求 245 apiReq := req.apiReq 246 apiReq.ApiPath = "/open-apis/contact/v3/departments" 247 apiReq.HttpMethod = http.MethodGet 248 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser} 249 apiResp, err := larkcore.Request(ctx, apiReq, d.service.config, options...) 250 if err != nil { 251 return nil, err 252 } 253 // 反序列响应结果 254 resp := &ListDepartmentResp{ApiResp: apiResp} 255 err = apiResp.JSONUnmarshalBody(resp) 256 if err != nil { 257 return nil, err 258 } 259 return resp, err 260 } 261 func (d *department) ListByIterator(ctx context.Context, req *ListDepartmentReq, options ...larkcore.RequestOptionFunc) (*ListDepartmentIterator, error) { 262 return &ListDepartmentIterator{ 263 ctx: ctx, 264 req: req, 265 listFunc: d.List, 266 options: options, 267 limit: req.Limit}, nil 268 } 269 270 // 获取父部门信息 271 // 272 // - 该接口用来递归获取部门父部门的信息,并按照由子到父的顺序返回有权限的父部门信息列表。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 273 // 274 // - 使用tenant_access_token时,该接口只返回可见性范围内的父部门信息;;例如:A >>B>>C>>D四级部门,通讯录权限只到B,那么查询D部门的parent,会返回B和C两级部门。;使用user_access_token时,该接口只返回对于用户可见的父部门信息 275 // 276 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/parent 277 // 278 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/parent_department.go 279 func (d *department) Parent(ctx context.Context, req *ParentDepartmentReq, options ...larkcore.RequestOptionFunc) (*ParentDepartmentResp, error) { 280 // 发起请求 281 apiReq := req.apiReq 282 apiReq.ApiPath = "/open-apis/contact/v3/departments/parent" 283 apiReq.HttpMethod = http.MethodGet 284 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser} 285 apiResp, err := larkcore.Request(ctx, apiReq, d.service.config, options...) 286 if err != nil { 287 return nil, err 288 } 289 // 反序列响应结果 290 resp := &ParentDepartmentResp{ApiResp: apiResp} 291 err = apiResp.JSONUnmarshalBody(resp) 292 if err != nil { 293 return nil, err 294 } 295 return resp, err 296 } 297 func (d *department) ParentByIterator(ctx context.Context, req *ParentDepartmentReq, options ...larkcore.RequestOptionFunc) (*ParentDepartmentIterator, error) { 298 return &ParentDepartmentIterator{ 299 ctx: ctx, 300 req: req, 301 listFunc: d.Parent, 302 options: options, 303 limit: req.Limit}, nil 304 } 305 306 // 修改部分部门信息 307 // 308 // - 该接口用于更新通讯录中部门的信息中的任一个字段。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 309 // 310 // - 调用该接口需要具有该部门以及更新操作涉及的部门的通讯录权限。应用商店应用无权限调用此接口。 311 // 312 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/patch 313 // 314 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/patch_department.go 315 func (d *department) Patch(ctx context.Context, req *PatchDepartmentReq, options ...larkcore.RequestOptionFunc) (*PatchDepartmentResp, error) { 316 // 发起请求 317 apiReq := req.apiReq 318 apiReq.ApiPath = "/open-apis/contact/v3/departments/:department_id" 319 apiReq.HttpMethod = http.MethodPatch 320 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 321 apiResp, err := larkcore.Request(ctx, apiReq, d.service.config, options...) 322 if err != nil { 323 return nil, err 324 } 325 // 反序列响应结果 326 resp := &PatchDepartmentResp{ApiResp: apiResp} 327 err = apiResp.JSONUnmarshalBody(resp) 328 if err != nil { 329 return nil, err 330 } 331 return resp, err 332 } 333 334 // 搜索部门 335 // 336 // - 搜索部门,用户通过关键词查询可见的部门数据,部门可见性需要管理员在后台配置。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 337 // 338 // - 部门存在,但用户搜索不到并不一定是搜索有问题,可能是管理员在后台配置了权限控制,导致用户无法搜索到该部门 339 // 340 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/search 341 // 342 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/search_department.go 343 func (d *department) Search(ctx context.Context, req *SearchDepartmentReq, options ...larkcore.RequestOptionFunc) (*SearchDepartmentResp, error) { 344 // 发起请求 345 apiReq := req.apiReq 346 apiReq.ApiPath = "/open-apis/contact/v3/departments/search" 347 apiReq.HttpMethod = http.MethodPost 348 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser} 349 apiResp, err := larkcore.Request(ctx, apiReq, d.service.config, options...) 350 if err != nil { 351 return nil, err 352 } 353 // 反序列响应结果 354 resp := &SearchDepartmentResp{ApiResp: apiResp} 355 err = apiResp.JSONUnmarshalBody(resp) 356 if err != nil { 357 return nil, err 358 } 359 return resp, err 360 } 361 func (d *department) SearchByIterator(ctx context.Context, req *SearchDepartmentReq, options ...larkcore.RequestOptionFunc) (*SearchDepartmentIterator, error) { 362 return &SearchDepartmentIterator{ 363 ctx: ctx, 364 req: req, 365 listFunc: d.Search, 366 options: options, 367 limit: req.Limit}, nil 368 } 369 370 // 部门群转为普通群 371 // 372 // - 通过该接口将部门群转为普通群。 373 // 374 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/unbind_department_chat 375 // 376 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/unbindDepartmentChat_department.go 377 func (d *department) UnbindDepartmentChat(ctx context.Context, req *UnbindDepartmentChatDepartmentReq, options ...larkcore.RequestOptionFunc) (*UnbindDepartmentChatDepartmentResp, error) { 378 // 发起请求 379 apiReq := req.apiReq 380 apiReq.ApiPath = "/open-apis/contact/v3/departments/unbind_department_chat" 381 apiReq.HttpMethod = http.MethodPost 382 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 383 apiResp, err := larkcore.Request(ctx, apiReq, d.service.config, options...) 384 if err != nil { 385 return nil, err 386 } 387 // 反序列响应结果 388 resp := &UnbindDepartmentChatDepartmentResp{ApiResp: apiResp} 389 err = apiResp.JSONUnmarshalBody(resp) 390 if err != nil { 391 return nil, err 392 } 393 return resp, err 394 } 395 396 // 更新部门所有信息 397 // 398 // - 该接口用于更新当前部门所有信息。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 399 // 400 // - - 调用该接口需要具有该部门以及更新操作涉及的部门的通讯录权限。应用商店应用无权限调用此接口。;; - 没有填写的字段会被置为空值(order字段除外)。 401 // 402 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/update 403 // 404 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/update_department.go 405 func (d *department) Update(ctx context.Context, req *UpdateDepartmentReq, options ...larkcore.RequestOptionFunc) (*UpdateDepartmentResp, error) { 406 // 发起请求 407 apiReq := req.apiReq 408 apiReq.ApiPath = "/open-apis/contact/v3/departments/:department_id" 409 apiReq.HttpMethod = http.MethodPut 410 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 411 apiResp, err := larkcore.Request(ctx, apiReq, d.service.config, options...) 412 if err != nil { 413 return nil, err 414 } 415 // 反序列响应结果 416 resp := &UpdateDepartmentResp{ApiResp: apiResp} 417 err = apiResp.JSONUnmarshalBody(resp) 418 if err != nil { 419 return nil, err 420 } 421 return resp, err 422 } 423 424 // 新增人员类型 425 // 426 // - 新增自定义人员类型 427 // 428 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/employee_type_enum/create 429 // 430 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/create_employeeTypeEnum.go 431 func (e *employeeTypeEnum) Create(ctx context.Context, req *CreateEmployeeTypeEnumReq, options ...larkcore.RequestOptionFunc) (*CreateEmployeeTypeEnumResp, error) { 432 // 发起请求 433 apiReq := req.apiReq 434 apiReq.ApiPath = "/open-apis/contact/v3/employee_type_enums" 435 apiReq.HttpMethod = http.MethodPost 436 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 437 apiResp, err := larkcore.Request(ctx, apiReq, e.service.config, options...) 438 if err != nil { 439 return nil, err 440 } 441 // 反序列响应结果 442 resp := &CreateEmployeeTypeEnumResp{ApiResp: apiResp} 443 err = apiResp.JSONUnmarshalBody(resp) 444 if err != nil { 445 return nil, err 446 } 447 return resp, err 448 } 449 450 // 删除人员类型 451 // 452 // - 删除自定义人员类型 453 // 454 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/employee_type_enum/delete 455 // 456 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/delete_employeeTypeEnum.go 457 func (e *employeeTypeEnum) Delete(ctx context.Context, req *DeleteEmployeeTypeEnumReq, options ...larkcore.RequestOptionFunc) (*DeleteEmployeeTypeEnumResp, error) { 458 // 发起请求 459 apiReq := req.apiReq 460 apiReq.ApiPath = "/open-apis/contact/v3/employee_type_enums/:enum_id" 461 apiReq.HttpMethod = http.MethodDelete 462 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 463 apiResp, err := larkcore.Request(ctx, apiReq, e.service.config, options...) 464 if err != nil { 465 return nil, err 466 } 467 // 反序列响应结果 468 resp := &DeleteEmployeeTypeEnumResp{ApiResp: apiResp} 469 err = apiResp.JSONUnmarshalBody(resp) 470 if err != nil { 471 return nil, err 472 } 473 return resp, err 474 } 475 476 // 查询人员类型 477 // 478 // - 该接口用于获取员工的人员类型 479 // 480 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/employee_type_enum/list 481 // 482 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/list_employeeTypeEnum.go 483 func (e *employeeTypeEnum) List(ctx context.Context, req *ListEmployeeTypeEnumReq, options ...larkcore.RequestOptionFunc) (*ListEmployeeTypeEnumResp, error) { 484 // 发起请求 485 apiReq := req.apiReq 486 apiReq.ApiPath = "/open-apis/contact/v3/employee_type_enums" 487 apiReq.HttpMethod = http.MethodGet 488 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 489 apiResp, err := larkcore.Request(ctx, apiReq, e.service.config, options...) 490 if err != nil { 491 return nil, err 492 } 493 // 反序列响应结果 494 resp := &ListEmployeeTypeEnumResp{ApiResp: apiResp} 495 err = apiResp.JSONUnmarshalBody(resp) 496 if err != nil { 497 return nil, err 498 } 499 return resp, err 500 } 501 func (e *employeeTypeEnum) ListByIterator(ctx context.Context, req *ListEmployeeTypeEnumReq, options ...larkcore.RequestOptionFunc) (*ListEmployeeTypeEnumIterator, error) { 502 return &ListEmployeeTypeEnumIterator{ 503 ctx: ctx, 504 req: req, 505 listFunc: e.List, 506 options: options, 507 limit: req.Limit}, nil 508 } 509 510 // 更新人员类型 511 // 512 // - 更新自定义人员类型 513 // 514 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/employee_type_enum/update 515 // 516 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/update_employeeTypeEnum.go 517 func (e *employeeTypeEnum) Update(ctx context.Context, req *UpdateEmployeeTypeEnumReq, options ...larkcore.RequestOptionFunc) (*UpdateEmployeeTypeEnumResp, error) { 518 // 发起请求 519 apiReq := req.apiReq 520 apiReq.ApiPath = "/open-apis/contact/v3/employee_type_enums/:enum_id" 521 apiReq.HttpMethod = http.MethodPut 522 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 523 apiResp, err := larkcore.Request(ctx, apiReq, e.service.config, options...) 524 if err != nil { 525 return nil, err 526 } 527 // 反序列响应结果 528 resp := &UpdateEmployeeTypeEnumResp{ApiResp: apiResp} 529 err = apiResp.JSONUnmarshalBody(resp) 530 if err != nil { 531 return nil, err 532 } 533 return resp, err 534 } 535 536 // 创建用户组 537 // 538 // - 使用该接口创建用户组,请注意创建用户组时应用的通讯录权限范围需为“全部员工”,否则会创建失败,[点击了解通讯录权限范围](/ssl:ttdoc/ukTMukTMukTM/uETNz4SM1MjLxUzM/v3/guides/scope_authority)。 539 // 540 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/group/create 541 // 542 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/create_group.go 543 func (g *group) Create(ctx context.Context, req *CreateGroupReq, options ...larkcore.RequestOptionFunc) (*CreateGroupResp, error) { 544 // 发起请求 545 apiReq := req.apiReq 546 apiReq.ApiPath = "/open-apis/contact/v3/group" 547 apiReq.HttpMethod = http.MethodPost 548 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 549 apiResp, err := larkcore.Request(ctx, apiReq, g.service.config, options...) 550 if err != nil { 551 return nil, err 552 } 553 // 反序列响应结果 554 resp := &CreateGroupResp{ApiResp: apiResp} 555 err = apiResp.JSONUnmarshalBody(resp) 556 if err != nil { 557 return nil, err 558 } 559 return resp, err 560 } 561 562 // 删除用户组 563 // 564 // - 通过该接口可删除企业中的用户组,请注意删除用户组时应用的通讯录权限范围需为“全部员工”,否则会删除失败,[点击了解通讯录权限范围](/ssl:ttdoc/ukTMukTMukTM/uETNz4SM1MjLxUzM/v3/guides/scope_authority)。 565 // 566 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/group/delete 567 // 568 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/delete_group.go 569 func (g *group) Delete(ctx context.Context, req *DeleteGroupReq, options ...larkcore.RequestOptionFunc) (*DeleteGroupResp, error) { 570 // 发起请求 571 apiReq := req.apiReq 572 apiReq.ApiPath = "/open-apis/contact/v3/group/:group_id" 573 apiReq.HttpMethod = http.MethodDelete 574 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 575 apiResp, err := larkcore.Request(ctx, apiReq, g.service.config, options...) 576 if err != nil { 577 return nil, err 578 } 579 // 反序列响应结果 580 resp := &DeleteGroupResp{ApiResp: apiResp} 581 err = apiResp.JSONUnmarshalBody(resp) 582 if err != nil { 583 return nil, err 584 } 585 return resp, err 586 } 587 588 // 查询用户组 589 // 590 // - 根据用户组 ID 查询某个用户组的基本信息,支持查询普通用户组和动态用户组。请确保应用的通讯录权限范围里包括该用户组或者是“全部员工”,[点击了解通讯录权限范围](/ssl:ttdoc/ukTMukTMukTM/uETNz4SM1MjLxUzM/v3/guides/scope_authority)。 591 // 592 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/group/get 593 // 594 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/get_group.go 595 func (g *group) Get(ctx context.Context, req *GetGroupReq, options ...larkcore.RequestOptionFunc) (*GetGroupResp, error) { 596 // 发起请求 597 apiReq := req.apiReq 598 apiReq.ApiPath = "/open-apis/contact/v3/group/:group_id" 599 apiReq.HttpMethod = http.MethodGet 600 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 601 apiResp, err := larkcore.Request(ctx, apiReq, g.service.config, options...) 602 if err != nil { 603 return nil, err 604 } 605 // 反序列响应结果 606 resp := &GetGroupResp{ApiResp: apiResp} 607 err = apiResp.JSONUnmarshalBody(resp) 608 if err != nil { 609 return nil, err 610 } 611 return resp, err 612 } 613 614 // 查询用户所属用户组 615 // 616 // - 通过该接口可查询该用户所属的用户组列表,可分别查询普通用户组和动态用户组。如果应用的通讯录权限范围是“全部员工”,则可获取该员工所属的全部用户组列表。如果应用的通讯录权限范围不是“全部员工”,则仅可获取通讯录权限范围内该员工所属的用户组。[点击了解通讯录权限范围](/ssl:ttdoc/ukTMukTMukTM/uETNz4SM1MjLxUzM/v3/guides/scope_authority)。 617 // 618 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/group/member_belong 619 // 620 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/memberBelong_group.go 621 func (g *group) MemberBelong(ctx context.Context, req *MemberBelongGroupReq, options ...larkcore.RequestOptionFunc) (*MemberBelongGroupResp, error) { 622 // 发起请求 623 apiReq := req.apiReq 624 apiReq.ApiPath = "/open-apis/contact/v3/group/member_belong" 625 apiReq.HttpMethod = http.MethodGet 626 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 627 apiResp, err := larkcore.Request(ctx, apiReq, g.service.config, options...) 628 if err != nil { 629 return nil, err 630 } 631 // 反序列响应结果 632 resp := &MemberBelongGroupResp{ApiResp: apiResp} 633 err = apiResp.JSONUnmarshalBody(resp) 634 if err != nil { 635 return nil, err 636 } 637 return resp, err 638 } 639 640 // 更新用户组 641 // 642 // - 使用该接口更新用户组信息,请注意更新用户组时应用的通讯录权限范围需为“全部员工”,否则会更新失败。[点击了解通讯录权限范围](/ssl:ttdoc/ukTMukTMukTM/uETNz4SM1MjLxUzM/v3/guides/scope_authority)。 643 // 644 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/group/patch 645 // 646 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/patch_group.go 647 func (g *group) Patch(ctx context.Context, req *PatchGroupReq, options ...larkcore.RequestOptionFunc) (*PatchGroupResp, error) { 648 // 发起请求 649 apiReq := req.apiReq 650 apiReq.ApiPath = "/open-apis/contact/v3/group/:group_id" 651 apiReq.HttpMethod = http.MethodPatch 652 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 653 apiResp, err := larkcore.Request(ctx, apiReq, g.service.config, options...) 654 if err != nil { 655 return nil, err 656 } 657 // 反序列响应结果 658 resp := &PatchGroupResp{ApiResp: apiResp} 659 err = apiResp.JSONUnmarshalBody(resp) 660 if err != nil { 661 return nil, err 662 } 663 return resp, err 664 } 665 666 // 查询用户组列表 667 // 668 // - 通过该接口可查询企业的用户组列表,可分别查询普通用户组或动态用户组。如果应用的通讯录权限范围是“全部员工”,则可获取企业全部用户组列表。如果应用的通讯录权限范围不是“全部员工”,则仅可获取通讯录权限范围内的用户组。[点击了解通讯录权限范围](/ssl:ttdoc/ukTMukTMukTM/uETNz4SM1MjLxUzM/v3/guides/scope_authority)。 669 // 670 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/group/simplelist 671 // 672 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/simplelist_group.go 673 func (g *group) Simplelist(ctx context.Context, req *SimplelistGroupReq, options ...larkcore.RequestOptionFunc) (*SimplelistGroupResp, error) { 674 // 发起请求 675 apiReq := req.apiReq 676 apiReq.ApiPath = "/open-apis/contact/v3/group/simplelist" 677 apiReq.HttpMethod = http.MethodGet 678 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 679 apiResp, err := larkcore.Request(ctx, apiReq, g.service.config, options...) 680 if err != nil { 681 return nil, err 682 } 683 // 反序列响应结果 684 resp := &SimplelistGroupResp{ApiResp: apiResp} 685 err = apiResp.JSONUnmarshalBody(resp) 686 if err != nil { 687 return nil, err 688 } 689 return resp, err 690 } 691 func (g *group) SimplelistByIterator(ctx context.Context, req *SimplelistGroupReq, options ...larkcore.RequestOptionFunc) (*SimplelistGroupIterator, error) { 692 return &SimplelistGroupIterator{ 693 ctx: ctx, 694 req: req, 695 listFunc: g.Simplelist, 696 options: options, 697 limit: req.Limit}, nil 698 } 699 700 // 添加用户组成员 701 // 702 // - 向用户组中添加成员(目前成员仅支持用户,未来会支持部门),如果应用的通讯录权限范围是“全部员工”,则可将任何成员添加到任何用户组。如果应用的通讯录权限范围不是“全部员工”,则仅可将通讯录权限范围中的成员添加到通讯录权限范围的用户组中,[点击了解通讯录权限范围](/ssl:ttdoc/ukTMukTMukTM/uETNz4SM1MjLxUzM/v3/guides/scope_authority)。 703 // 704 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/group-member/add 705 // 706 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/add_groupMember.go 707 func (g *groupMember) Add(ctx context.Context, req *AddGroupMemberReq, options ...larkcore.RequestOptionFunc) (*AddGroupMemberResp, error) { 708 // 发起请求 709 apiReq := req.apiReq 710 apiReq.ApiPath = "/open-apis/contact/v3/group/:group_id/member/add" 711 apiReq.HttpMethod = http.MethodPost 712 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 713 apiResp, err := larkcore.Request(ctx, apiReq, g.service.config, options...) 714 if err != nil { 715 return nil, err 716 } 717 // 反序列响应结果 718 resp := &AddGroupMemberResp{ApiResp: apiResp} 719 err = apiResp.JSONUnmarshalBody(resp) 720 if err != nil { 721 return nil, err 722 } 723 return resp, err 724 } 725 726 // 批量添加用户组成员 727 // 728 // - 向普通用户组中批量添加成员(目前仅支持添加用户,暂不支持添加部门),如果应用的通讯录权限范围是“全部员工”,则可将任何成员添加到任何用户组。如果应用的通讯录权限范围不是“全部员工”,则仅可将通讯录权限范围中的成员添加到通讯录权限范围的用户组中,[点击了解通讯录权限范围](/ssl:ttdoc/ukTMukTMukTM/uETNz4SM1MjLxUzM/v3/guides/scope_authority)。 729 // 730 // - 请求体中的member_type,目前仅支持user, 未来将支持department。 731 // 732 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/group-member/batch_add 733 // 734 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/batchAdd_groupMember.go 735 func (g *groupMember) BatchAdd(ctx context.Context, req *BatchAddGroupMemberReq, options ...larkcore.RequestOptionFunc) (*BatchAddGroupMemberResp, error) { 736 // 发起请求 737 apiReq := req.apiReq 738 apiReq.ApiPath = "/open-apis/contact/v3/group/:group_id/member/batch_add" 739 apiReq.HttpMethod = http.MethodPost 740 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 741 apiResp, err := larkcore.Request(ctx, apiReq, g.service.config, options...) 742 if err != nil { 743 return nil, err 744 } 745 // 反序列响应结果 746 resp := &BatchAddGroupMemberResp{ApiResp: apiResp} 747 err = apiResp.JSONUnmarshalBody(resp) 748 if err != nil { 749 return nil, err 750 } 751 return resp, err 752 } 753 754 // 批量移除用户组成员 755 // 756 // - 从普通用户组中批量移除成员 (目前仅支持移除用户,暂不支持移除部门)。如果应用的通讯录权限范围是“全部员工”,则可将任何成员移出任何用户组。如果应用的通讯录权限范围不是“全部员工”,则仅可将通讯录权限范围中的成员从通讯录权限范围的用户组中移除, [点击了解通讯录权限范围](/ssl:ttdoc/ukTMukTMukTM/uETNz4SM1MjLxUzM/v3/guides/scope_authority)。 757 // 758 // - 请求体中的member_type,目前仅支持user, 未来将支持department。 759 // 760 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/group-member/batch_remove 761 // 762 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/batchRemove_groupMember.go 763 func (g *groupMember) BatchRemove(ctx context.Context, req *BatchRemoveGroupMemberReq, options ...larkcore.RequestOptionFunc) (*BatchRemoveGroupMemberResp, error) { 764 // 发起请求 765 apiReq := req.apiReq 766 apiReq.ApiPath = "/open-apis/contact/v3/group/:group_id/member/batch_remove" 767 apiReq.HttpMethod = http.MethodPost 768 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 769 apiResp, err := larkcore.Request(ctx, apiReq, g.service.config, options...) 770 if err != nil { 771 return nil, err 772 } 773 // 反序列响应结果 774 resp := &BatchRemoveGroupMemberResp{ApiResp: apiResp} 775 err = apiResp.JSONUnmarshalBody(resp) 776 if err != nil { 777 return nil, err 778 } 779 return resp, err 780 } 781 782 // 移除用户组成员 783 // 784 // - 从用户组中移除成员 (目前成员仅支持用户,未来会支持部门),如果应用的通讯录权限范围是“全部员工”,则可将任何成员移出任何用户组。如果应用的通讯录权限范围不是“全部员工”,则仅可将通讯录权限范围中的成员从通讯录权限范围的用户组中移除, [点击了解通讯录权限范围](/ssl:ttdoc/ukTMukTMukTM/uETNz4SM1MjLxUzM/v3/guides/scope_authority)。 785 // 786 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/group-member/remove 787 // 788 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/remove_groupMember.go 789 func (g *groupMember) Remove(ctx context.Context, req *RemoveGroupMemberReq, options ...larkcore.RequestOptionFunc) (*RemoveGroupMemberResp, error) { 790 // 发起请求 791 apiReq := req.apiReq 792 apiReq.ApiPath = "/open-apis/contact/v3/group/:group_id/member/remove" 793 apiReq.HttpMethod = http.MethodPost 794 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 795 apiResp, err := larkcore.Request(ctx, apiReq, g.service.config, options...) 796 if err != nil { 797 return nil, err 798 } 799 // 反序列响应结果 800 resp := &RemoveGroupMemberResp{ApiResp: apiResp} 801 err = apiResp.JSONUnmarshalBody(resp) 802 if err != nil { 803 return nil, err 804 } 805 return resp, err 806 } 807 808 // 查询用户组成员列表 809 // 810 // - 通过该接口可查询某个用户组的成员列表(支持查询成员中的用户和部门), 本接口支持普通用户组和动态用户组。如果应用的通讯录权限范围是“全部员工”,则可查询企业内任何用户组的成员列表。如果应用的通讯录权限范围不是“全部员工”,则仅可查询通讯录权限范围中的用户组的成员列表,[点击了解通讯录权限范围](/ssl:ttdoc/ukTMukTMukTM/uETNz4SM1MjLxUzM/v3/guides/scope_authority)。 811 // 812 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/group-member/simplelist 813 // 814 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/simplelist_groupMember.go 815 func (g *groupMember) Simplelist(ctx context.Context, req *SimplelistGroupMemberReq, options ...larkcore.RequestOptionFunc) (*SimplelistGroupMemberResp, error) { 816 // 发起请求 817 apiReq := req.apiReq 818 apiReq.ApiPath = "/open-apis/contact/v3/group/:group_id/member/simplelist" 819 apiReq.HttpMethod = http.MethodGet 820 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 821 apiResp, err := larkcore.Request(ctx, apiReq, g.service.config, options...) 822 if err != nil { 823 return nil, err 824 } 825 // 反序列响应结果 826 resp := &SimplelistGroupMemberResp{ApiResp: apiResp} 827 err = apiResp.JSONUnmarshalBody(resp) 828 if err != nil { 829 return nil, err 830 } 831 return resp, err 832 } 833 834 // 获取通讯录授权范围 835 // 836 // - 该接口用于获取应用被授权可访问的通讯录范围,包括可访问的部门列表、用户列表和用户组列表。;授权范围为全员时,返回的部门列表为该企业所有的一级部门;否则返回的部门为管理员在设置授权范围时勾选的部门(不包含勾选部门的子部门)。 837 // 838 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/scope/list 839 // 840 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/list_scope.go 841 func (s *scope) List(ctx context.Context, req *ListScopeReq, options ...larkcore.RequestOptionFunc) (*ListScopeResp, error) { 842 // 发起请求 843 apiReq := req.apiReq 844 apiReq.ApiPath = "/open-apis/contact/v3/scopes" 845 apiReq.HttpMethod = http.MethodGet 846 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 847 apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...) 848 if err != nil { 849 return nil, err 850 } 851 // 反序列响应结果 852 resp := &ListScopeResp{ApiResp: apiResp} 853 err = apiResp.JSONUnmarshalBody(resp) 854 if err != nil { 855 return nil, err 856 } 857 return resp, err 858 } 859 860 // 建立部门与单位的绑定关系 861 // 862 // - 通过该接口建立部门与单位的绑定关系,需更新单位的权限,需对应部门的通讯录权限。由于单位是旗舰版付费功能,企业需开通相关版本,否则会绑定失败 863 // 864 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/unit/bind_department 865 // 866 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/bindDepartment_unit.go 867 func (u *unit) BindDepartment(ctx context.Context, req *BindDepartmentUnitReq, options ...larkcore.RequestOptionFunc) (*BindDepartmentUnitResp, error) { 868 // 发起请求 869 apiReq := req.apiReq 870 apiReq.ApiPath = "/open-apis/contact/v3/unit/bind_department" 871 apiReq.HttpMethod = http.MethodPost 872 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 873 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 874 if err != nil { 875 return nil, err 876 } 877 // 反序列响应结果 878 resp := &BindDepartmentUnitResp{ApiResp: apiResp} 879 err = apiResp.JSONUnmarshalBody(resp) 880 if err != nil { 881 return nil, err 882 } 883 return resp, err 884 } 885 886 // 创建单位 887 // 888 // - 使用该接口创建单位,需要有更新单位的权限。注意:单位功能属于旗舰版付费功能,企业需开通对应版本才可以创建单位。 889 // 890 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/unit/create 891 // 892 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/create_unit.go 893 func (u *unit) Create(ctx context.Context, req *CreateUnitReq, options ...larkcore.RequestOptionFunc) (*CreateUnitResp, error) { 894 // 发起请求 895 apiReq := req.apiReq 896 apiReq.ApiPath = "/open-apis/contact/v3/unit" 897 apiReq.HttpMethod = http.MethodPost 898 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 899 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 900 if err != nil { 901 return nil, err 902 } 903 // 反序列响应结果 904 resp := &CreateUnitResp{ApiResp: apiResp} 905 err = apiResp.JSONUnmarshalBody(resp) 906 if err != nil { 907 return nil, err 908 } 909 return resp, err 910 } 911 912 // 删除单位 913 // 914 // - 使用该接口删除单位,需要有更新单位的权限。注意:如果单位的单位类型被其它的业务使用,不允许删除。 915 // 916 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/unit/delete 917 // 918 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/delete_unit.go 919 func (u *unit) Delete(ctx context.Context, req *DeleteUnitReq, options ...larkcore.RequestOptionFunc) (*DeleteUnitResp, error) { 920 // 发起请求 921 apiReq := req.apiReq 922 apiReq.ApiPath = "/open-apis/contact/v3/unit/:unit_id" 923 apiReq.HttpMethod = http.MethodDelete 924 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 925 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 926 if err != nil { 927 return nil, err 928 } 929 // 反序列响应结果 930 resp := &DeleteUnitResp{ApiResp: apiResp} 931 err = apiResp.JSONUnmarshalBody(resp) 932 if err != nil { 933 return nil, err 934 } 935 return resp, err 936 } 937 938 // 获取单位信息 939 // 940 // - 调用该接口获取单位信息,需有获取单位的权限 941 // 942 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/unit/get 943 // 944 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/get_unit.go 945 func (u *unit) Get(ctx context.Context, req *GetUnitReq, options ...larkcore.RequestOptionFunc) (*GetUnitResp, error) { 946 // 发起请求 947 apiReq := req.apiReq 948 apiReq.ApiPath = "/open-apis/contact/v3/unit/:unit_id" 949 apiReq.HttpMethod = http.MethodGet 950 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 951 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 952 if err != nil { 953 return nil, err 954 } 955 // 反序列响应结果 956 resp := &GetUnitResp{ApiResp: apiResp} 957 err = apiResp.JSONUnmarshalBody(resp) 958 if err != nil { 959 return nil, err 960 } 961 return resp, err 962 } 963 964 // 批量获取单位列表 965 // 966 // - 通过该接口获取企业的单位列表,需获取单位的权限 967 // 968 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/unit/list 969 // 970 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/list_unit.go 971 func (u *unit) List(ctx context.Context, req *ListUnitReq, options ...larkcore.RequestOptionFunc) (*ListUnitResp, error) { 972 // 发起请求 973 apiReq := req.apiReq 974 apiReq.ApiPath = "/open-apis/contact/v3/unit" 975 apiReq.HttpMethod = http.MethodGet 976 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 977 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 978 if err != nil { 979 return nil, err 980 } 981 // 反序列响应结果 982 resp := &ListUnitResp{ApiResp: apiResp} 983 err = apiResp.JSONUnmarshalBody(resp) 984 if err != nil { 985 return nil, err 986 } 987 return resp, err 988 } 989 990 // 获取单位绑定的部门列表 991 // 992 // - 通过该接口获取单位绑定的部门列表,需具有获取单位的权限 993 // 994 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/unit/list_department 995 // 996 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/listDepartment_unit.go 997 func (u *unit) ListDepartment(ctx context.Context, req *ListDepartmentUnitReq, options ...larkcore.RequestOptionFunc) (*ListDepartmentUnitResp, error) { 998 // 发起请求 999 apiReq := req.apiReq 1000 apiReq.ApiPath = "/open-apis/contact/v3/unit/list_department" 1001 apiReq.HttpMethod = http.MethodGet 1002 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 1003 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 1004 if err != nil { 1005 return nil, err 1006 } 1007 // 反序列响应结果 1008 resp := &ListDepartmentUnitResp{ApiResp: apiResp} 1009 err = apiResp.JSONUnmarshalBody(resp) 1010 if err != nil { 1011 return nil, err 1012 } 1013 return resp, err 1014 } 1015 1016 // 修改单位信息 1017 // 1018 // - 调用该接口,需要有更新单位的权限。注意:单位功能属于旗舰版付费功能,企业需开通对应版本才可以修改单位 1019 // 1020 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/unit/patch 1021 // 1022 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/patch_unit.go 1023 func (u *unit) Patch(ctx context.Context, req *PatchUnitReq, options ...larkcore.RequestOptionFunc) (*PatchUnitResp, error) { 1024 // 发起请求 1025 apiReq := req.apiReq 1026 apiReq.ApiPath = "/open-apis/contact/v3/unit/:unit_id" 1027 apiReq.HttpMethod = http.MethodPatch 1028 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 1029 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 1030 if err != nil { 1031 return nil, err 1032 } 1033 // 反序列响应结果 1034 resp := &PatchUnitResp{ApiResp: apiResp} 1035 err = apiResp.JSONUnmarshalBody(resp) 1036 if err != nil { 1037 return nil, err 1038 } 1039 return resp, err 1040 } 1041 1042 // 解除部门与单位的绑定关系 1043 // 1044 // - 通过该接口解除部门与单位的绑定关系,需更新单位的权限,需对应部门的通讯录权限。由于单位是旗舰版付费功能,企业需开通相关功能,否则会解绑失败 1045 // 1046 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/unit/unbind_department 1047 // 1048 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/unbindDepartment_unit.go 1049 func (u *unit) UnbindDepartment(ctx context.Context, req *UnbindDepartmentUnitReq, options ...larkcore.RequestOptionFunc) (*UnbindDepartmentUnitResp, error) { 1050 // 发起请求 1051 apiReq := req.apiReq 1052 apiReq.ApiPath = "/open-apis/contact/v3/unit/unbind_department" 1053 apiReq.HttpMethod = http.MethodPost 1054 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 1055 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 1056 if err != nil { 1057 return nil, err 1058 } 1059 // 反序列响应结果 1060 resp := &UnbindDepartmentUnitResp{ApiResp: apiResp} 1061 err = apiResp.JSONUnmarshalBody(resp) 1062 if err != nil { 1063 return nil, err 1064 } 1065 return resp, err 1066 } 1067 1068 // 通过手机号或邮箱获取用户 ID 1069 // 1070 // - 通过该接口,可使用手机号/邮箱获取用户的 ID 信息,具体获取支持的 ID 类型包括 open_id、user_id、union_id,可通过查询参数指定。 1071 // 1072 // - 如果查询的手机号、邮箱不存在,或者无权限查看对应的用户,则返回的用户ID列表为空。 1073 // 1074 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/batch_get_id 1075 // 1076 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/batchGetId_user.go 1077 func (u *user) BatchGetId(ctx context.Context, req *BatchGetIdUserReq, options ...larkcore.RequestOptionFunc) (*BatchGetIdUserResp, error) { 1078 // 发起请求 1079 apiReq := req.apiReq 1080 apiReq.ApiPath = "/open-apis/contact/v3/users/batch_get_id" 1081 apiReq.HttpMethod = http.MethodPost 1082 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 1083 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 1084 if err != nil { 1085 return nil, err 1086 } 1087 // 反序列响应结果 1088 resp := &BatchGetIdUserResp{ApiResp: apiResp} 1089 err = apiResp.JSONUnmarshalBody(resp) 1090 if err != nil { 1091 return nil, err 1092 } 1093 return resp, err 1094 } 1095 1096 // 创建用户 1097 // 1098 // - 使用该接口向通讯录创建一个用户,可以理解为员工入职。创建用户后只返回有数据权限的数据。具体的数据权限的与字段的对应关系请参照[应用权限](/ssl:ttdoc/ukTMukTMukTM/uQjN3QjL0YzN04CN2cDN)。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 1099 // 1100 // - - 新增用户的所有部门必须都在当前应用的通讯录授权范围内才允许新增用户,如果想要在根部门下新增用户,必须要有全员权限。;- 应用商店应用无权限调用此接口。;- 创建用户后,会给用户发送邀请短信/邮件,用户在操作同意后才可访问团队。;- 返回数据中不返回手机号,如果需要请重新查询用户信息获取手机号。 1101 // 1102 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/create 1103 // 1104 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/create_user.go 1105 func (u *user) Create(ctx context.Context, req *CreateUserReq, options ...larkcore.RequestOptionFunc) (*CreateUserResp, error) { 1106 // 发起请求 1107 apiReq := req.apiReq 1108 apiReq.ApiPath = "/open-apis/contact/v3/users" 1109 apiReq.HttpMethod = http.MethodPost 1110 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 1111 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 1112 if err != nil { 1113 return nil, err 1114 } 1115 // 反序列响应结果 1116 resp := &CreateUserResp{ApiResp: apiResp} 1117 err = apiResp.JSONUnmarshalBody(resp) 1118 if err != nil { 1119 return nil, err 1120 } 1121 return resp, err 1122 } 1123 1124 // 删除用户 1125 // 1126 // - 该接口向通讯录删除一个用户信息,可以理解为员工离职。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 1127 // 1128 // - 若用户归属部门A、部门B,应用的通讯录权限范围必须包括部门A和部门B才可以删除用户。应用商店应用无权限调用接口。用户可以在删除员工时设置删除员工数据的接收者,如果不设置则由其leader接收,如果该员工没有leader,则会将该员工的数据删除。 1129 // 1130 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/delete 1131 // 1132 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/delete_user.go 1133 func (u *user) Delete(ctx context.Context, req *DeleteUserReq, options ...larkcore.RequestOptionFunc) (*DeleteUserResp, error) { 1134 // 发起请求 1135 apiReq := req.apiReq 1136 apiReq.ApiPath = "/open-apis/contact/v3/users/:user_id" 1137 apiReq.HttpMethod = http.MethodDelete 1138 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 1139 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 1140 if err != nil { 1141 return nil, err 1142 } 1143 // 反序列响应结果 1144 resp := &DeleteUserResp{ApiResp: apiResp} 1145 err = apiResp.JSONUnmarshalBody(resp) 1146 if err != nil { 1147 return nil, err 1148 } 1149 return resp, err 1150 } 1151 1152 // 获取部门直属用户列表 1153 // 1154 // - 基于部门ID获取部门直属用户列表。;[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN). 1155 // 1156 // - - 使用 user_access_token 情况下根据个人组织架构的通讯录可见范围进行权限过滤,返回个人组织架构通讯录范围([登录企业管理后台进行权限配置](https://www.feishu.cn/admin/security/permission/visibility))内可见的用户数据。;- 使用tenant_access_token,会根据应用通讯录的范围进行权限过滤。 如果请求的部门ID为0,则校验应用是否具有全员通讯录权限; 如果是非0的部门ID,则会验证应用是否具有该部门的通讯录权限。 无权限返回无权限错误码,有权限则返回对应部门下的直接用户列表。 1157 // 1158 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/find_by_department 1159 // 1160 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/findByDepartment_user.go 1161 func (u *user) FindByDepartment(ctx context.Context, req *FindByDepartmentUserReq, options ...larkcore.RequestOptionFunc) (*FindByDepartmentUserResp, error) { 1162 // 发起请求 1163 apiReq := req.apiReq 1164 apiReq.ApiPath = "/open-apis/contact/v3/users/find_by_department" 1165 apiReq.HttpMethod = http.MethodGet 1166 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser} 1167 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 1168 if err != nil { 1169 return nil, err 1170 } 1171 // 反序列响应结果 1172 resp := &FindByDepartmentUserResp{ApiResp: apiResp} 1173 err = apiResp.JSONUnmarshalBody(resp) 1174 if err != nil { 1175 return nil, err 1176 } 1177 return resp, err 1178 } 1179 func (u *user) FindByDepartmentByIterator(ctx context.Context, req *FindByDepartmentUserReq, options ...larkcore.RequestOptionFunc) (*FindByDepartmentUserIterator, error) { 1180 return &FindByDepartmentUserIterator{ 1181 ctx: ctx, 1182 req: req, 1183 listFunc: u.FindByDepartment, 1184 options: options, 1185 limit: req.Limit}, nil 1186 } 1187 1188 // 获取单个用户信息 1189 // 1190 // - 该接口用于获取通讯录中[单个用户的信息](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/field-overview)。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 1191 // 1192 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get 1193 // 1194 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/get_user.go 1195 func (u *user) Get(ctx context.Context, req *GetUserReq, options ...larkcore.RequestOptionFunc) (*GetUserResp, error) { 1196 // 发起请求 1197 apiReq := req.apiReq 1198 apiReq.ApiPath = "/open-apis/contact/v3/users/:user_id" 1199 apiReq.HttpMethod = http.MethodGet 1200 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser} 1201 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 1202 if err != nil { 1203 return nil, err 1204 } 1205 // 反序列响应结果 1206 resp := &GetUserResp{ApiResp: apiResp} 1207 err = apiResp.JSONUnmarshalBody(resp) 1208 if err != nil { 1209 return nil, err 1210 } 1211 return resp, err 1212 } 1213 1214 // 获取用户列表 1215 // 1216 // - 基于部门ID获取部门下直属用户列表。;[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 1217 // 1218 // - - 使用 user_access_token 情况下根据个人组织架构的通讯录可见范围进行权限过滤,返回个人组织架构通讯录范围([登陆企业管理后台进行权限配置](https://www.feishu.cn/admin/security/permission/visibility))内可见的用户数据。;- tenant_access_token 基于应用通讯录范围进行权限鉴定。由于 department_id 是非必填参数,填与不填存在<b>两种数据权限校验与返回</b>情况:<br>1、请求设置了 department_id ;(根部门为0),会检验所带部门ID是否具有通讯录权限(如果带上 ; department_id=0 会校验是否有全员权限),有则返回部门下直属的成员列表, 否则提示无部门权限的错误码返回。<br>2、请求未带 ; department_id 参数,则会返回权限范围内的独立用户(权限范围直接包含了某用户,则该用户视为权限范围内的独立用户)。 1219 // 1220 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/list 1221 // 1222 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/list_user.go 1223 func (u *user) List(ctx context.Context, req *ListUserReq, options ...larkcore.RequestOptionFunc) (*ListUserResp, error) { 1224 // 发起请求 1225 apiReq := req.apiReq 1226 apiReq.ApiPath = "/open-apis/contact/v3/users" 1227 apiReq.HttpMethod = http.MethodGet 1228 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser} 1229 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 1230 if err != nil { 1231 return nil, err 1232 } 1233 // 反序列响应结果 1234 resp := &ListUserResp{ApiResp: apiResp} 1235 err = apiResp.JSONUnmarshalBody(resp) 1236 if err != nil { 1237 return nil, err 1238 } 1239 return resp, err 1240 } 1241 func (u *user) ListByIterator(ctx context.Context, req *ListUserReq, options ...larkcore.RequestOptionFunc) (*ListUserIterator, error) { 1242 return &ListUserIterator{ 1243 ctx: ctx, 1244 req: req, 1245 listFunc: u.List, 1246 options: options, 1247 limit: req.Limit}, nil 1248 } 1249 1250 // 修改用户部分信息 1251 // 1252 // - 该接口用于更新通讯录中用户的字段,未传递的参数不会更新。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 1253 // 1254 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/patch 1255 // 1256 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/patch_user.go 1257 func (u *user) Patch(ctx context.Context, req *PatchUserReq, options ...larkcore.RequestOptionFunc) (*PatchUserResp, error) { 1258 // 发起请求 1259 apiReq := req.apiReq 1260 apiReq.ApiPath = "/open-apis/contact/v3/users/:user_id" 1261 apiReq.HttpMethod = http.MethodPatch 1262 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser} 1263 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 1264 if err != nil { 1265 return nil, err 1266 } 1267 // 反序列响应结果 1268 resp := &PatchUserResp{ApiResp: apiResp} 1269 err = apiResp.JSONUnmarshalBody(resp) 1270 if err != nil { 1271 return nil, err 1272 } 1273 return resp, err 1274 } 1275 1276 // 更新用户所有信息 1277 // 1278 // - 该接口用于更新通讯录中用户的字段。[常见问题答疑](/ssl:ttdoc/ugTN1YjL4UTN24CO1UjN/uQzN1YjL0cTN24CN3UjN)。 1279 // 1280 // - ;应用需要拥有待更新用户的通讯录授权,如果涉及到用户部门变更,还需要同时拥有所有新部门的通讯录授权。应用商店应用无权限调用此接口。 1281 // 1282 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/update 1283 // 1284 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/contactv3/update_user.go 1285 func (u *user) Update(ctx context.Context, req *UpdateUserReq, options ...larkcore.RequestOptionFunc) (*UpdateUserResp, error) { 1286 // 发起请求 1287 apiReq := req.apiReq 1288 apiReq.ApiPath = "/open-apis/contact/v3/users/:user_id" 1289 apiReq.HttpMethod = http.MethodPut 1290 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 1291 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 1292 if err != nil { 1293 return nil, err 1294 } 1295 // 反序列响应结果 1296 resp := &UpdateUserResp{ApiResp: apiResp} 1297 err = apiResp.JSONUnmarshalBody(resp) 1298 if err != nil { 1299 return nil, err 1300 } 1301 return resp, err 1302 }