gitee.com/larksuite/oapi-sdk-go/v3@v3.0.3/service/vc/v1/api.go (about) 1 // Package vc 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 larkvc 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) *VcService { 24 v := &VcService{config: config} 25 v.Export = &export{service: v} 26 v.Meeting = &meeting{service: v} 27 v.MeetingRecording = &meetingRecording{service: v} 28 v.Report = &report{service: v} 29 v.Reserve = &reserve{service: v} 30 v.RoomConfig = &roomConfig{service: v} 31 return v 32 } 33 34 type VcService struct { 35 config *larkcore.Config 36 Export *export // 导出 37 Meeting *meeting // 会议 38 MeetingRecording *meetingRecording // 录制 39 Report *report // 会议报告 40 Reserve *reserve // 预约 41 RoomConfig *roomConfig // 会议室配置 42 } 43 44 type export struct { 45 service *VcService 46 } 47 type meeting struct { 48 service *VcService 49 } 50 type meetingRecording struct { 51 service *VcService 52 } 53 type report struct { 54 service *VcService 55 } 56 type reserve struct { 57 service *VcService 58 } 59 type roomConfig struct { 60 service *VcService 61 } 62 63 // 查询导出任务结果 64 // 65 // - 查看异步导出的进度 66 // 67 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/export/get 68 // 69 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/get_export.go 70 func (e *export) Get(ctx context.Context, req *GetExportReq, options ...larkcore.RequestOptionFunc) (*GetExportResp, error) { 71 // 发起请求 72 apiReq := req.apiReq 73 apiReq.ApiPath = "/open-apis/vc/v1/exports/:task_id" 74 apiReq.HttpMethod = http.MethodGet 75 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser} 76 apiResp, err := larkcore.Request(ctx, apiReq, e.service.config, options...) 77 if err != nil { 78 return nil, err 79 } 80 // 反序列响应结果 81 resp := &GetExportResp{ApiResp: apiResp} 82 err = apiResp.JSONUnmarshalBody(resp) 83 if err != nil { 84 return nil, err 85 } 86 return resp, err 87 } 88 89 // 导出会议明细 90 // 91 // - 导出会议明细 92 // 93 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/export/meeting_list 94 // 95 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/meetingList_export.go 96 func (e *export) MeetingList(ctx context.Context, req *MeetingListExportReq, options ...larkcore.RequestOptionFunc) (*MeetingListExportResp, error) { 97 // 发起请求 98 apiReq := req.apiReq 99 apiReq.ApiPath = "/open-apis/vc/v1/exports/meeting_list" 100 apiReq.HttpMethod = http.MethodPost 101 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser} 102 apiResp, err := larkcore.Request(ctx, apiReq, e.service.config, options...) 103 if err != nil { 104 return nil, err 105 } 106 // 反序列响应结果 107 resp := &MeetingListExportResp{ApiResp: apiResp} 108 err = apiResp.JSONUnmarshalBody(resp) 109 if err != nil { 110 return nil, err 111 } 112 return resp, err 113 } 114 115 // 导出参会人明细 116 // 117 // - 导出某个会议的参会人详情列表 118 // 119 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/export/participant_list 120 // 121 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/participantList_export.go 122 func (e *export) ParticipantList(ctx context.Context, req *ParticipantListExportReq, options ...larkcore.RequestOptionFunc) (*ParticipantListExportResp, error) { 123 // 发起请求 124 apiReq := req.apiReq 125 apiReq.ApiPath = "/open-apis/vc/v1/exports/participant_list" 126 apiReq.HttpMethod = http.MethodPost 127 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser} 128 apiResp, err := larkcore.Request(ctx, apiReq, e.service.config, options...) 129 if err != nil { 130 return nil, err 131 } 132 // 反序列响应结果 133 resp := &ParticipantListExportResp{ApiResp: apiResp} 134 err = apiResp.JSONUnmarshalBody(resp) 135 if err != nil { 136 return nil, err 137 } 138 return resp, err 139 } 140 141 // 导出参会人会议质量数据 142 // 143 // - 导出某场会议某个参会人的音视频&共享质量数据 144 // 145 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/export/participant_quality_list 146 // 147 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/participantQualityList_export.go 148 func (e *export) ParticipantQualityList(ctx context.Context, req *ParticipantQualityListExportReq, options ...larkcore.RequestOptionFunc) (*ParticipantQualityListExportResp, error) { 149 // 发起请求 150 apiReq := req.apiReq 151 apiReq.ApiPath = "/open-apis/vc/v1/exports/participant_quality_list" 152 apiReq.HttpMethod = http.MethodPost 153 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser} 154 apiResp, err := larkcore.Request(ctx, apiReq, e.service.config, options...) 155 if err != nil { 156 return nil, err 157 } 158 // 反序列响应结果 159 resp := &ParticipantQualityListExportResp{ApiResp: apiResp} 160 err = apiResp.JSONUnmarshalBody(resp) 161 if err != nil { 162 return nil, err 163 } 164 return resp, err 165 } 166 167 // 结束会议 168 // 169 // - 结束一个进行中的会议 170 // 171 // - 会议正在进行中,且操作者须具有相应的权限(如果操作者为用户,必须是会中当前主持人) 172 // 173 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/meeting/end 174 // 175 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/end_meeting.go 176 func (m *meeting) End(ctx context.Context, req *EndMeetingReq, options ...larkcore.RequestOptionFunc) (*EndMeetingResp, error) { 177 // 发起请求 178 apiReq := req.apiReq 179 apiReq.ApiPath = "/open-apis/vc/v1/meetings/:meeting_id/end" 180 apiReq.HttpMethod = http.MethodPatch 181 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser} 182 apiResp, err := larkcore.Request(ctx, apiReq, m.service.config, options...) 183 if err != nil { 184 return nil, err 185 } 186 // 反序列响应结果 187 resp := &EndMeetingResp{ApiResp: apiResp} 188 err = apiResp.JSONUnmarshalBody(resp) 189 if err != nil { 190 return nil, err 191 } 192 return resp, err 193 } 194 195 // 获取会议详情 196 // 197 // - 获取一个会议的详细数据 198 // 199 // - 只能获取归属于自己的会议,支持查询最近90天内的会议 200 // 201 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/meeting/get 202 // 203 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/get_meeting.go 204 func (m *meeting) Get(ctx context.Context, req *GetMeetingReq, options ...larkcore.RequestOptionFunc) (*GetMeetingResp, error) { 205 // 发起请求 206 apiReq := req.apiReq 207 apiReq.ApiPath = "/open-apis/vc/v1/meetings/:meeting_id" 208 apiReq.HttpMethod = http.MethodGet 209 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant} 210 apiResp, err := larkcore.Request(ctx, apiReq, m.service.config, options...) 211 if err != nil { 212 return nil, err 213 } 214 // 反序列响应结果 215 resp := &GetMeetingResp{ApiResp: apiResp} 216 err = apiResp.JSONUnmarshalBody(resp) 217 if err != nil { 218 return nil, err 219 } 220 return resp, err 221 } 222 223 // 邀请参会人 224 // 225 // - 邀请参会人进入会议 226 // 227 // - 发起邀请的操作者必须具有相应的权限(如果操作者为用户,则必须在会中),如果会议被锁定、或参会人数如果达到上限,则会邀请失败 228 // 229 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/meeting/invite 230 // 231 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/invite_meeting.go 232 func (m *meeting) Invite(ctx context.Context, req *InviteMeetingReq, options ...larkcore.RequestOptionFunc) (*InviteMeetingResp, error) { 233 // 发起请求 234 apiReq := req.apiReq 235 apiReq.ApiPath = "/open-apis/vc/v1/meetings/:meeting_id/invite" 236 apiReq.HttpMethod = http.MethodPatch 237 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser} 238 apiResp, err := larkcore.Request(ctx, apiReq, m.service.config, options...) 239 if err != nil { 240 return nil, err 241 } 242 // 反序列响应结果 243 resp := &InviteMeetingResp{ApiResp: apiResp} 244 err = apiResp.JSONUnmarshalBody(resp) 245 if err != nil { 246 return nil, err 247 } 248 return resp, err 249 } 250 251 // 移除参会人 252 // 253 // - 将参会人从会议中移除 254 // 255 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/meeting/kickout 256 // 257 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/kickout_meeting.go 258 func (m *meeting) Kickout(ctx context.Context, req *KickoutMeetingReq, options ...larkcore.RequestOptionFunc) (*KickoutMeetingResp, error) { 259 // 发起请求 260 apiReq := req.apiReq 261 apiReq.ApiPath = "/open-apis/vc/v1/meetings/:meeting_id/kickout" 262 apiReq.HttpMethod = http.MethodPost 263 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 264 apiResp, err := larkcore.Request(ctx, apiReq, m.service.config, options...) 265 if err != nil { 266 return nil, err 267 } 268 // 反序列响应结果 269 resp := &KickoutMeetingResp{ApiResp: apiResp} 270 err = apiResp.JSONUnmarshalBody(resp) 271 if err != nil { 272 return nil, err 273 } 274 return resp, err 275 } 276 277 // 获取与会议号相关联的会议列表 278 // 279 // - 获取指定时间范围(90天内)会议号关联的会议简要信息列表 280 // 281 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/meeting/list_by_no 282 // 283 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/listByNo_meeting.go 284 func (m *meeting) ListByNo(ctx context.Context, req *ListByNoMeetingReq, options ...larkcore.RequestOptionFunc) (*ListByNoMeetingResp, error) { 285 // 发起请求 286 apiReq := req.apiReq 287 apiReq.ApiPath = "/open-apis/vc/v1/meetings/list_by_no" 288 apiReq.HttpMethod = http.MethodGet 289 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant} 290 apiResp, err := larkcore.Request(ctx, apiReq, m.service.config, options...) 291 if err != nil { 292 return nil, err 293 } 294 // 反序列响应结果 295 resp := &ListByNoMeetingResp{ApiResp: apiResp} 296 err = apiResp.JSONUnmarshalBody(resp) 297 if err != nil { 298 return nil, err 299 } 300 return resp, err 301 } 302 func (m *meeting) ListByNoByIterator(ctx context.Context, req *ListByNoMeetingReq, options ...larkcore.RequestOptionFunc) (*ListByNoMeetingIterator, error) { 303 return &ListByNoMeetingIterator{ 304 ctx: ctx, 305 req: req, 306 listFunc: m.ListByNo, 307 options: options, 308 limit: req.Limit}, nil 309 } 310 311 // 设置主持人 312 // 313 // - 设置会议的主持人 314 // 315 // - 发起设置主持人的操作者必须具有相应的权限(如果操作者为用户,必须是会中当前主持人);该操作使用CAS并发安全机制,需传入会中当前主持人,如果操作失败可使用返回的最新数据重试 316 // 317 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/meeting/set_host 318 // 319 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/setHost_meeting.go 320 func (m *meeting) SetHost(ctx context.Context, req *SetHostMeetingReq, options ...larkcore.RequestOptionFunc) (*SetHostMeetingResp, error) { 321 // 发起请求 322 apiReq := req.apiReq 323 apiReq.ApiPath = "/open-apis/vc/v1/meetings/:meeting_id/set_host" 324 apiReq.HttpMethod = http.MethodPatch 325 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant} 326 apiResp, err := larkcore.Request(ctx, apiReq, m.service.config, options...) 327 if err != nil { 328 return nil, err 329 } 330 // 反序列响应结果 331 resp := &SetHostMeetingResp{ApiResp: apiResp} 332 err = apiResp.JSONUnmarshalBody(resp) 333 if err != nil { 334 return nil, err 335 } 336 return resp, err 337 } 338 339 // 获取录制文件 340 // 341 // - 获取一个会议的录制文件。 342 // 343 // - 会议结束后并且收到了"录制完成"的事件方可获取录制文件;只有会议owner(通过开放平台预约的会议即为预约人)有权限获取;录制时间太短(<5s)有可能无法生成录制文件 344 // 345 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/meeting-recording/get 346 // 347 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/get_meetingRecording.go 348 func (m *meetingRecording) Get(ctx context.Context, req *GetMeetingRecordingReq, options ...larkcore.RequestOptionFunc) (*GetMeetingRecordingResp, error) { 349 // 发起请求 350 apiReq := req.apiReq 351 apiReq.ApiPath = "/open-apis/vc/v1/meetings/:meeting_id/recording" 352 apiReq.HttpMethod = http.MethodGet 353 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser} 354 apiResp, err := larkcore.Request(ctx, apiReq, m.service.config, options...) 355 if err != nil { 356 return nil, err 357 } 358 // 反序列响应结果 359 resp := &GetMeetingRecordingResp{ApiResp: apiResp} 360 err = apiResp.JSONUnmarshalBody(resp) 361 if err != nil { 362 return nil, err 363 } 364 return resp, err 365 } 366 367 // 授权录制文件 368 // 369 // - 将一个会议的录制文件授权给组织、用户或公开到公网 370 // 371 // - 会议结束后并且收到了"录制完成"的事件方可进行授权;会议owner(通过开放平台预约的会议即为预约人)才有权限操作 372 // 373 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/meeting-recording/set_permission 374 // 375 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/setPermission_meetingRecording.go 376 func (m *meetingRecording) SetPermission(ctx context.Context, req *SetPermissionMeetingRecordingReq, options ...larkcore.RequestOptionFunc) (*SetPermissionMeetingRecordingResp, error) { 377 // 发起请求 378 apiReq := req.apiReq 379 apiReq.ApiPath = "/open-apis/vc/v1/meetings/:meeting_id/recording/set_permission" 380 apiReq.HttpMethod = http.MethodPatch 381 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser} 382 apiResp, err := larkcore.Request(ctx, apiReq, m.service.config, options...) 383 if err != nil { 384 return nil, err 385 } 386 // 反序列响应结果 387 resp := &SetPermissionMeetingRecordingResp{ApiResp: apiResp} 388 err = apiResp.JSONUnmarshalBody(resp) 389 if err != nil { 390 return nil, err 391 } 392 return resp, err 393 } 394 395 // 开始录制 396 // 397 // - 在会议中开始录制。 398 // 399 // - 会议正在进行中,且操作者具有相应权限(如果操作者为用户,必须是会中当前主持人) 400 // 401 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/meeting-recording/start 402 // 403 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/start_meetingRecording.go 404 func (m *meetingRecording) Start(ctx context.Context, req *StartMeetingRecordingReq, options ...larkcore.RequestOptionFunc) (*StartMeetingRecordingResp, error) { 405 // 发起请求 406 apiReq := req.apiReq 407 apiReq.ApiPath = "/open-apis/vc/v1/meetings/:meeting_id/recording/start" 408 apiReq.HttpMethod = http.MethodPatch 409 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser} 410 apiResp, err := larkcore.Request(ctx, apiReq, m.service.config, options...) 411 if err != nil { 412 return nil, err 413 } 414 // 反序列响应结果 415 resp := &StartMeetingRecordingResp{ApiResp: apiResp} 416 err = apiResp.JSONUnmarshalBody(resp) 417 if err != nil { 418 return nil, err 419 } 420 return resp, err 421 } 422 423 // 停止录制 424 // 425 // - 在会议中停止录制。 426 // 427 // - 会议正在录制中,且操作者具有相应权限(如果操作者为用户,必须是会中当前主持人) 428 // 429 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/meeting-recording/stop 430 // 431 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/stop_meetingRecording.go 432 func (m *meetingRecording) Stop(ctx context.Context, req *StopMeetingRecordingReq, options ...larkcore.RequestOptionFunc) (*StopMeetingRecordingResp, error) { 433 // 发起请求 434 apiReq := req.apiReq 435 apiReq.ApiPath = "/open-apis/vc/v1/meetings/:meeting_id/recording/stop" 436 apiReq.HttpMethod = http.MethodPatch 437 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser} 438 apiResp, err := larkcore.Request(ctx, apiReq, m.service.config, options...) 439 if err != nil { 440 return nil, err 441 } 442 // 反序列响应结果 443 resp := &StopMeetingRecordingResp{ApiResp: apiResp} 444 err = apiResp.JSONUnmarshalBody(resp) 445 if err != nil { 446 return nil, err 447 } 448 return resp, err 449 } 450 451 // 获取会议报告 452 // 453 // - 获取一段时间内组织的每日会议使用报告。 454 // 455 // - 支持最近90天内的数据查询 456 // 457 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/report/get_daily 458 // 459 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/getDaily_report.go 460 func (r *report) GetDaily(ctx context.Context, req *GetDailyReportReq, options ...larkcore.RequestOptionFunc) (*GetDailyReportResp, error) { 461 // 发起请求 462 apiReq := req.apiReq 463 apiReq.ApiPath = "/open-apis/vc/v1/reports/get_daily" 464 apiReq.HttpMethod = http.MethodGet 465 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 466 apiResp, err := larkcore.Request(ctx, apiReq, r.service.config, options...) 467 if err != nil { 468 return nil, err 469 } 470 // 反序列响应结果 471 resp := &GetDailyReportResp{ApiResp: apiResp} 472 err = apiResp.JSONUnmarshalBody(resp) 473 if err != nil { 474 return nil, err 475 } 476 return resp, err 477 } 478 479 // 获取top用户列表 480 // 481 // - 获取一段时间内组织内会议使用的top用户列表。 482 // 483 // - 支持最近90天内的数据查询;默认返回前10位,最多可查询前100位 484 // 485 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/report/get_top_user 486 // 487 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/getTopUser_report.go 488 func (r *report) GetTopUser(ctx context.Context, req *GetTopUserReportReq, options ...larkcore.RequestOptionFunc) (*GetTopUserReportResp, error) { 489 // 发起请求 490 apiReq := req.apiReq 491 apiReq.ApiPath = "/open-apis/vc/v1/reports/get_top_user" 492 apiReq.HttpMethod = http.MethodGet 493 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 494 apiResp, err := larkcore.Request(ctx, apiReq, r.service.config, options...) 495 if err != nil { 496 return nil, err 497 } 498 // 反序列响应结果 499 resp := &GetTopUserReportResp{ApiResp: apiResp} 500 err = apiResp.JSONUnmarshalBody(resp) 501 if err != nil { 502 return nil, err 503 } 504 return resp, err 505 } 506 507 // 预约会议 508 // 509 // - 创建一个会议预约。 510 // 511 // - 支持预约最近30天内的会议(到期时间距离当前时间不超过30天),预约到期后会议号将被释放,如需继续使用可通过"更新预约"接口进行续期;预约会议时可配置参会人在会中的权限,以达到控制会议的目的 512 // 513 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/reserve/apply 514 // 515 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/apply_reserve.go 516 func (r *reserve) Apply(ctx context.Context, req *ApplyReserveReq, options ...larkcore.RequestOptionFunc) (*ApplyReserveResp, error) { 517 // 发起请求 518 apiReq := req.apiReq 519 apiReq.ApiPath = "/open-apis/vc/v1/reserves/apply" 520 apiReq.HttpMethod = http.MethodPost 521 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser} 522 apiResp, err := larkcore.Request(ctx, apiReq, r.service.config, options...) 523 if err != nil { 524 return nil, err 525 } 526 // 反序列响应结果 527 resp := &ApplyReserveResp{ApiResp: apiResp} 528 err = apiResp.JSONUnmarshalBody(resp) 529 if err != nil { 530 return nil, err 531 } 532 return resp, err 533 } 534 535 // 删除预约 536 // 537 // - 删除一个预约 538 // 539 // - 只能删除归属于自己的预约;删除后数据不可恢复 540 // 541 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/reserve/delete 542 // 543 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/delete_reserve.go 544 func (r *reserve) Delete(ctx context.Context, req *DeleteReserveReq, options ...larkcore.RequestOptionFunc) (*DeleteReserveResp, error) { 545 // 发起请求 546 apiReq := req.apiReq 547 apiReq.ApiPath = "/open-apis/vc/v1/reserves/:reserve_id" 548 apiReq.HttpMethod = http.MethodDelete 549 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser} 550 apiResp, err := larkcore.Request(ctx, apiReq, r.service.config, options...) 551 if err != nil { 552 return nil, err 553 } 554 // 反序列响应结果 555 resp := &DeleteReserveResp{ApiResp: apiResp} 556 err = apiResp.JSONUnmarshalBody(resp) 557 if err != nil { 558 return nil, err 559 } 560 return resp, err 561 } 562 563 // 获取预约 564 // 565 // - 获取一个预约的详情 566 // 567 // - 只能获取归属于自己的预约 568 // 569 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/reserve/get 570 // 571 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/get_reserve.go 572 func (r *reserve) Get(ctx context.Context, req *GetReserveReq, options ...larkcore.RequestOptionFunc) (*GetReserveResp, error) { 573 // 发起请求 574 apiReq := req.apiReq 575 apiReq.ApiPath = "/open-apis/vc/v1/reserves/:reserve_id" 576 apiReq.HttpMethod = http.MethodGet 577 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser} 578 apiResp, err := larkcore.Request(ctx, apiReq, r.service.config, options...) 579 if err != nil { 580 return nil, err 581 } 582 // 反序列响应结果 583 resp := &GetReserveResp{ApiResp: apiResp} 584 err = apiResp.JSONUnmarshalBody(resp) 585 if err != nil { 586 return nil, err 587 } 588 return resp, err 589 } 590 591 // 获取活跃会议 592 // 593 // - 获取一个预约的当前活跃会议 594 // 595 // - 只能获取归属于自己的预约的活跃会议(一个预约最多有一个正在进行中的会议) 596 // 597 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/reserve/get_active_meeting 598 // 599 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/getActiveMeeting_reserve.go 600 func (r *reserve) GetActiveMeeting(ctx context.Context, req *GetActiveMeetingReserveReq, options ...larkcore.RequestOptionFunc) (*GetActiveMeetingReserveResp, error) { 601 // 发起请求 602 apiReq := req.apiReq 603 apiReq.ApiPath = "/open-apis/vc/v1/reserves/:reserve_id/get_active_meeting" 604 apiReq.HttpMethod = http.MethodGet 605 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser} 606 apiResp, err := larkcore.Request(ctx, apiReq, r.service.config, options...) 607 if err != nil { 608 return nil, err 609 } 610 // 反序列响应结果 611 resp := &GetActiveMeetingReserveResp{ApiResp: apiResp} 612 err = apiResp.JSONUnmarshalBody(resp) 613 if err != nil { 614 return nil, err 615 } 616 return resp, err 617 } 618 619 // 更新预约 620 // 621 // - 更新一个预约 622 // 623 // - 只能更新归属于自己的预约,不需要更新的字段不传(如果传空则会被更新为空);可用于续期操作,到期时间距离当前时间不超过30天 624 // 625 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/reserve/update 626 // 627 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/update_reserve.go 628 func (r *reserve) Update(ctx context.Context, req *UpdateReserveReq, options ...larkcore.RequestOptionFunc) (*UpdateReserveResp, error) { 629 // 发起请求 630 apiReq := req.apiReq 631 apiReq.ApiPath = "/open-apis/vc/v1/reserves/:reserve_id" 632 apiReq.HttpMethod = http.MethodPut 633 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser} 634 apiResp, err := larkcore.Request(ctx, apiReq, r.service.config, options...) 635 if err != nil { 636 return nil, err 637 } 638 // 反序列响应结果 639 resp := &UpdateReserveResp{ApiResp: apiResp} 640 err = apiResp.JSONUnmarshalBody(resp) 641 if err != nil { 642 return nil, err 643 } 644 return resp, err 645 } 646 647 // 查询会议室配置 648 // 649 // - 查询一个范围内的会议室配置。 650 // 651 // - 根据查询范围传入对应的参数 652 // 653 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/room_config/query 654 // 655 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/query_roomConfig.go 656 func (r *roomConfig) Query(ctx context.Context, req *QueryRoomConfigReq, options ...larkcore.RequestOptionFunc) (*QueryRoomConfigResp, error) { 657 // 发起请求 658 apiReq := req.apiReq 659 apiReq.ApiPath = "/open-apis/vc/v1/room_configs/query" 660 apiReq.HttpMethod = http.MethodGet 661 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 662 apiResp, err := larkcore.Request(ctx, apiReq, r.service.config, options...) 663 if err != nil { 664 return nil, err 665 } 666 // 反序列响应结果 667 resp := &QueryRoomConfigResp{ApiResp: apiResp} 668 err = apiResp.JSONUnmarshalBody(resp) 669 if err != nil { 670 return nil, err 671 } 672 return resp, err 673 } 674 675 // 设置会议室配置 676 // 677 // - 设置一个范围内的会议室配置。 678 // 679 // - 根据设置范围传入对应的参数 680 // 681 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/vc-v1/room_config/set 682 // 683 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/vcv1/set_roomConfig.go 684 func (r *roomConfig) Set(ctx context.Context, req *SetRoomConfigReq, options ...larkcore.RequestOptionFunc) (*SetRoomConfigResp, error) { 685 // 发起请求 686 apiReq := req.apiReq 687 apiReq.ApiPath = "/open-apis/vc/v1/room_configs/set" 688 apiReq.HttpMethod = http.MethodPost 689 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 690 apiResp, err := larkcore.Request(ctx, apiReq, r.service.config, options...) 691 if err != nil { 692 return nil, err 693 } 694 // 反序列响应结果 695 resp := &SetRoomConfigResp{ApiResp: apiResp} 696 err = apiResp.JSONUnmarshalBody(resp) 697 if err != nil { 698 return nil, err 699 } 700 return resp, err 701 }