// Code generated by lark_sdk_gen. DO NOT EDIT.
/**
 * Copyright 2022 chyroc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package lark

import (
	"context"
)

// BatchGetCalendarMeetingRoomSummary 调用该接口使用日程的 Uid 和 Original time 查询会议室日程主题与详情。
//
// 日程 ID（event_id）格式为 `<Uid>_<Original time>`, 因此你可以通过 event_id 获取日程的 Uid 和 Original time。例如, 日程 ID 为 `c32537e6-e0a8-4506-b42f-47440655cdb4_0`, 则 Uid 为 `c32537e6-e0a8-4506-b42f-47440655cdb4`、Original time 为 `0`。
//
// doc: https://open.feishu.cn/document/ukTMukTMukTM/uIjM5UjLyITO14iMykTN/
// new doc: https://open.feishu.cn/document/server-docs/calendar-v4/meeting-room-event/
func (r *CalendarService) BatchGetCalendarMeetingRoomSummary(ctx context.Context, request *BatchGetCalendarMeetingRoomSummaryReq, options ...MethodOptionFunc) (*BatchGetCalendarMeetingRoomSummaryResp, *Response, error) {
	if r.cli.mock.mockCalendarBatchGetCalendarMeetingRoomSummary != nil {
		r.cli.Log(ctx, LogLevelDebug, "[lark] Calendar#BatchGetCalendarMeetingRoomSummary mock enable")
		return r.cli.mock.mockCalendarBatchGetCalendarMeetingRoomSummary(ctx, request, options...)
	}

	req := &RawRequestReq{
		Scope:                 "Calendar",
		API:                   "BatchGetCalendarMeetingRoomSummary",
		Method:                "POST",
		URL:                   r.cli.openBaseURL + "/open-apis/meeting_room/summary/batch_get",
		Body:                  request,
		MethodOption:          newMethodOption(options),
		NeedTenantAccessToken: true,
	}
	resp := new(batchGetCalendarMeetingRoomSummaryResp)

	response, err := r.cli.RawRequest(ctx, req, resp)
	return resp.Data, response, err
}

// MockCalendarBatchGetCalendarMeetingRoomSummary mock CalendarBatchGetCalendarMeetingRoomSummary method
func (r *Mock) MockCalendarBatchGetCalendarMeetingRoomSummary(f func(ctx context.Context, request *BatchGetCalendarMeetingRoomSummaryReq, options ...MethodOptionFunc) (*BatchGetCalendarMeetingRoomSummaryResp, *Response, error)) {
	r.mockCalendarBatchGetCalendarMeetingRoomSummary = f
}

// UnMockCalendarBatchGetCalendarMeetingRoomSummary un-mock CalendarBatchGetCalendarMeetingRoomSummary method
func (r *Mock) UnMockCalendarBatchGetCalendarMeetingRoomSummary() {
	r.mockCalendarBatchGetCalendarMeetingRoomSummary = nil
}

// BatchGetCalendarMeetingRoomSummaryReq ...
type BatchGetCalendarMeetingRoomSummaryReq struct {
	EventUids []*BatchGetCalendarMeetingRoomSummaryReqEventUid `json:"EventUids,omitempty"` // 需要查询的日程 Uid 和 Original time 列表。
}

// BatchGetCalendarMeetingRoomSummaryReqEventUid ...
type BatchGetCalendarMeetingRoomSummaryReqEventUid struct {
	Uid          string `json:"uid,omitempty"`           // 日程的唯一 ID。
	OriginalTime int64  `json:"original_time,omitempty"` // 日程实例原始时间。非重复性日程和重复性日程, 此处传 0；重复性日程的例外日程, 需要传入对应的 original_time 值（时间戳类型）。
}

// BatchGetCalendarMeetingRoomSummaryResp ...
type BatchGetCalendarMeetingRoomSummaryResp struct {
	EventInfos     []*BatchGetCalendarMeetingRoomSummaryRespEventInfo     `json:"EventInfos,omitempty"`     // 查询到的日程信息。
	ErrorEventUids []*BatchGetCalendarMeetingRoomSummaryRespErrorEventUid `json:"ErrorEventUids,omitempty"` // 没有查询到的日程信息。
}

// BatchGetCalendarMeetingRoomSummaryRespErrorEventUid ...
type BatchGetCalendarMeetingRoomSummaryRespErrorEventUid struct {
	Uid          string `json:"uid,omitempty"`           // 日程的唯一 ID。
	OriginalTime int64  `json:"original_time,omitempty"` // 日程实例原始时间。非重复性日程和重复性日程, 此处为 0；重复性日程的例外日程, 此处为对应的 original_time 值（时间戳类型）。
	ErrorMsg     string `json:"error_msg,omitempty"`     // 错误信息。
}

// BatchGetCalendarMeetingRoomSummaryRespEventInfo ...
type BatchGetCalendarMeetingRoomSummaryRespEventInfo struct {
	Uid          string                                                `json:"uid,omitempty"`           // 日程的唯一 ID。
	OriginalTime int64                                                 `json:"original_time,omitempty"` // 日程实例原始时间。非重复性日程和重复性日程, 此处为 0；重复性日程的例外日程, 此处为对应的 original_time 值（时间戳类型）。
	Summary      string                                                `json:"summary,omitempty"`       // 日程主题。
	Vchat        *BatchGetCalendarMeetingRoomSummaryRespEventInfoVchat `json:"vchat,omitempty"`         // 视频会议信息。
}

// BatchGetCalendarMeetingRoomSummaryRespEventInfoVchat ...
type BatchGetCalendarMeetingRoomSummaryRespEventInfoVchat struct {
	VCType      string `json:"vc_type,omitempty"`     // 视频会议类型。   可选值有: - `vc`: 飞书视频会议。取该类型时, vchat 内的其他字段均无效。  - `third_party`: 第三方链接视频会议。取该类型时, 仅生效 vchat 内的 icon_type、description、meeting_url 字段。  - `no_meeting`: 无视频会议。取该类型时, vchat 内的其他字段均无效。 - `lark_live`: 飞书直播。该值用于客户端, 只读参数。 - `unknown`: 未知类型。该值用于客户端做兼容使用, 只读参数。
	IconType    string `json:"icon_type,omitempty"`   // 第三方视频会议 icon 类型。  可选值有: - `vc`: 飞书视频会议 icon - `live`: 直播视频会议 icon  -  `default`: 默认 icon
	Description string `json:"description,omitempty"` // 第三方视频会议文案。
	MeetingURL  string `json:"meeting_url,omitempty"` // 视频会议 URL。
}

// batchGetCalendarMeetingRoomSummaryResp ...
type batchGetCalendarMeetingRoomSummaryResp struct {
	Code  int64                                   `json:"code,omitempty"` // 返回码, 非 0 表示失败。
	Msg   string                                  `json:"msg,omitempty"`  // 返回码的描述, `success` 表示成功, 其他为错误提示信息。
	Data  *BatchGetCalendarMeetingRoomSummaryResp `json:"data,omitempty"` // 返回信息。
	Error *ErrorDetail                            `json:"error,omitempty"`
}
