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  }