// Package vc code generated by oapi sdk gen
/*
 * MIT License
 *
 * Copyright (c) 2022 Lark Technologies Pte. Ltd.
 *
 * 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:
 *
 * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
 *
 * 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.
 */

package larkvc

import (
	"io"

	"io/ioutil"

	"fmt"

	"context"
	"errors"

	"github.com/larksuite/oapi-sdk-go/v3/event"

	"github.com/larksuite/oapi-sdk-go/v3/core"
)

const (
	GetAlertHistoryQueryTypeRoom = 1 // 会议室
	GetAlertHistoryQueryTypeErc  = 2 // erc
	GetAlertHistoryQueryTypeSip  = 3 // SIP会议室系统

)

const (
	MeetingStatusTypeOngoing = 1 // 进行中
	MeetingStatusTypePast    = 2 // 已结束
	MeetingStatusTypeFuture  = 3 // 待召开

)

const (
	MeetingTypeAll         = 1 // 全部类型（默认）
	MeetingTypeMeeting     = 2 // 视频会议
	MeetingTypeShareScreen = 3 // 本地投屏

)

const (
	ExportMeetingListUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	ExportMeetingListUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	ExportMeetingListUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	MeetingStatusTypeParticipantListExportOngoing = 1 // 进行中
	MeetingStatusTypeParticipantListExportPast    = 2 // 已结束
	MeetingStatusTypeParticipantListExportFuture  = 3 // 待召开

)

const (
	ExportParticipantListUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	ExportParticipantListUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	ExportParticipantListUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	ExportParticipantQualityListUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	ExportParticipantQualityListUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	ExportParticipantQualityListUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	GetMeetingByIDUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetMeetingByIDUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetMeetingByIDUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	GetMeetingByIdQueryModeGetOnlyMeeting          = 0 // 只查询会议信息（默认）
	GetMeetingByIdQueryModeGetOnlyRelatedArtifacts = 1 // 只查询会议产物（纪要、逐字稿）

)

const (
	InviteParticipantUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	InviteParticipantUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	InviteParticipantUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	KickoutParticipantUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	KickoutParticipantUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	KickoutParticipantUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	SetHostUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	SetHostUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	SetHostUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	SetRecordingPermissionActionTypeAuthorize = 0 // 授权
	SetRecordingPermissionActionTypeRevoke    = 1 // 取消授权

)

const (
	SetRecordingPermissionUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	SetRecordingPermissionUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	SetRecordingPermissionUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	MeetingStatusTypeGetMeetingListOngoing = 1 // 进行中
	MeetingStatusTypeGetMeetingListPast    = 2 // 已结束
	MeetingStatusTypeGetMeetingListFuture  = 3 // 待召开

)

const (
	MeetingTypeGetMeetingListAll         = 1 // 全部类型（默认）
	MeetingTypeGetMeetingListMeeting     = 2 // 视频会议
	MeetingTypeGetMeetingListShareScreen = 3 // 本地投屏

)

const (
	GetMeetingListUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetMeetingListUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetMeetingListUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	MeetingStatusTypeGetParticipantListOngoing = 1 // 进行中
	MeetingStatusTypeGetParticipantListPast    = 2 // 已结束
	MeetingStatusTypeGetParticipantListFuture  = 3 // 待召开

)

const (
	GetParticipantListUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetParticipantListUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetParticipantListUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	GetParticipantQualityListUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetParticipantQualityListUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetParticipantQualityListUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	UnitTypeCN = 0 // 中国大陆
	UnitTypeVA = 1 // 美国
	UnitTypeSG = 2 // 新加坡
	UnitTypeJP = 3 // 日本

)

const (
	TopUserOrderByMeetingCount    = 1 // 会议数量
	TopUserOrderByMeetingDuration = 2 // 会议时长

)

const (
	UnitTypeGetTopUserReportCN = 0 // 中国大陆
	UnitTypeGetTopUserReportVA = 1 // 美国
	UnitTypeGetTopUserReportSG = 2 // 新加坡
	UnitTypeGetTopUserReportJP = 3 // 日本

)

const (
	GetTopUserReportUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetTopUserReportUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetTopUserReportUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	ApplyReserveUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	ApplyReserveUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	ApplyReserveUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	GetReserveByIDUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetReserveByIDUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetReserveByIDUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	GetActiveMeetingByReserveIDUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetActiveMeetingByReserveIDUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetActiveMeetingByReserveIDUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	UpdateReserveUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	UpdateReserveUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	UpdateReserveUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	SetReserveScopeUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	SetReserveScopeUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	SetReserveScopeUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	GetReserveScopeUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetReserveScopeUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetReserveScopeUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	GetReserveAdminUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetReserveAdminUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetReserveAdminUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	SetReserveAdminUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	SetReserveAdminUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	SetReserveAdminUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	GetDisableInformUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetDisableInformUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetDisableInformUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	SetDisableInformUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	SetDisableInformUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	SetDisableInformUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	GetReserveFormUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetReserveFormUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetReserveFormUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	SetReserveFormUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	SetReserveFormUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	SetReserveFormUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户
)

const (
	CreateRoomUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	CreateRoomUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	CreateRoomUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	GetRoomByIDUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetRoomByIDUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetRoomByIDUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	ListRoomUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	ListRoomUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	ListRoomUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	MGetRoomByIDsUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	MGetRoomByIDsUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	MGetRoomByIDsUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	UpdateRoomByIDUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	UpdateRoomByIDUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	UpdateRoomByIDUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	SearchRoomUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	SearchRoomUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	SearchRoomUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	NodeScopeTenant          = 1 // 租户
	NodeScopeCountryDistrict = 2 // 国家/地区
	NodeScopeCity            = 3 // 城市
	NodeScopeBuilding        = 4 // 建筑
	NodeScopeFloor           = 5 // 楼层
	NodeScopeRoom            = 6 // 会议室

)

const (
	GetRoomConfigUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetRoomConfigUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetRoomConfigUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	NodeScopeSetRoomConfigTenant          = 1 // 租户
	NodeScopeSetRoomConfigCountryDistrict = 2 // 国家/地区
	NodeScopeSetRoomConfigCity            = 3 // 城市
	NodeScopeSetRoomConfigBuilding        = 4 // 建筑
	NodeScopeSetRoomConfigFloor           = 5 // 楼层
	NodeScopeSetRoomConfigRoom            = 6 // 会议室

)

const (
	SetRoomConfigUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	SetRoomConfigUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	SetRoomConfigUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	NodeScopeSetCheckboardAccessCodeRoomConfigTenant          = 1 // 租户
	NodeScopeSetCheckboardAccessCodeRoomConfigCountryDistrict = 2 // 国家/地区
	NodeScopeSetCheckboardAccessCodeRoomConfigCity            = 3 // 城市
	NodeScopeSetCheckboardAccessCodeRoomConfigBuilding        = 4 // 建筑
	NodeScopeSetCheckboardAccessCodeRoomConfigFloor           = 5 // 楼层
	NodeScopeSetCheckboardAccessCodeRoomConfigRoom            = 6 // 会议室

)

const (
	ValidDayTypeDay   = 1  // 1天
	ValidDayTypeWeek  = 7  // 7天
	ValidDayTypeMonth = 30 // 30天

)

const (
	NodeScopeSetRoomAccessCodeRoomConfigTenant          = 1 // 租户
	NodeScopeSetRoomAccessCodeRoomConfigCountryDistrict = 2 // 国家/地区
	NodeScopeSetRoomAccessCodeRoomConfigCity            = 3 // 城市
	NodeScopeSetRoomAccessCodeRoomConfigBuilding        = 4 // 建筑
	NodeScopeSetRoomAccessCodeRoomConfigFloor           = 5 // 楼层
	NodeScopeSetRoomAccessCodeRoomConfigRoom            = 6 // 会议室

)

const (
	ValidDayTypeSetRoomAccessCodeRoomConfigDay   = 1  // 1天
	ValidDayTypeSetRoomAccessCodeRoomConfigWeek  = 7  // 7天
	ValidDayTypeSetRoomAccessCodeRoomConfigMonth = 30 // 30天

)

const (
	ScopeTypeRoomLevel = 1 // 会议室层级
	ScopeTypeRoom      = 2 // 会议室

)

const (
	SetScopeConfigUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	SetScopeConfigUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	SetScopeConfigUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

const (
	ScopeTypeGetScopeConfigRoomLevel = 1 // 会议室层级
	ScopeTypeGetScopeConfigRoom      = 2 // 会议室

)

const (
	GetScopeConfigUserIDTypeUserId  = "user_id"  // 以user_id来识别用户
	GetScopeConfigUserIDTypeUnionId = "union_id" // 以union_id来识别用户
	GetScopeConfigUserIDTypeOpenId  = "open_id"  // 以open_id来识别用户（推荐）
)

type Alert struct {
	AlertId *string `json:"alert_id,omitempty"` // 告警ID

	ResourceScope *string `json:"resource_scope,omitempty"` // 触发告警规则的会议室/服务器具体的名称

	MonitorTarget *int `json:"monitor_target,omitempty"` // 触发告警规则的监控对象

	AlertStrategy *string `json:"alert_strategy,omitempty"` // 告警规则的规则描述

	AlertTime *string `json:"alert_time,omitempty"` // 告警通知发生时间（unix时间，单位sec）

	AlertLevel *int `json:"alert_level,omitempty"` // 告警等级：严重/警告/提醒

	Contacts []*Contact `json:"contacts,omitempty"` // 告警联系人

	NotifyMethods []int `json:"notifyMethods,omitempty"` // 通知方式

	AlertRule *string `json:"alertRule,omitempty"` // 规则名称

	ProcessTime *string `json:"process_time,omitempty"` // 处理时间

	RecoverTime *string `json:"recover_time,omitempty"` // 恢复时间

	ProcessStatus *int `json:"process_status,omitempty"` // 处理状态：待处理/处理中/已恢复

	AlertRuleId *string `json:"alert_rule_id,omitempty"` // 告警规则ID

	MonitorTargetRoomId *string `json:"monitor_target_room_id,omitempty"` // 触发告警规则的会议室ID，当触发告警规则的是会议室时返回该信息

	MonitorTargetRoomMac *string `json:"monitor_target_room_mac,omitempty"` // 触发告警规则的会议室主机Mac地址，当monitor_target=1时返回该信息
}

type AlertBuilder struct {
	alertId     string // 告警ID
	alertIdFlag bool

	resourceScope     string // 触发告警规则的会议室/服务器具体的名称
	resourceScopeFlag bool

	monitorTarget     int // 触发告警规则的监控对象
	monitorTargetFlag bool

	alertStrategy     string // 告警规则的规则描述
	alertStrategyFlag bool

	alertTime     string // 告警通知发生时间（unix时间，单位sec）
	alertTimeFlag bool

	alertLevel     int // 告警等级：严重/警告/提醒
	alertLevelFlag bool

	contacts     []*Contact // 告警联系人
	contactsFlag bool

	notifyMethods     []int // 通知方式
	notifyMethodsFlag bool

	alertRule     string // 规则名称
	alertRuleFlag bool

	processTime     string // 处理时间
	processTimeFlag bool

	recoverTime     string // 恢复时间
	recoverTimeFlag bool

	processStatus     int // 处理状态：待处理/处理中/已恢复
	processStatusFlag bool

	alertRuleId     string // 告警规则ID
	alertRuleIdFlag bool

	monitorTargetRoomId     string // 触发告警规则的会议室ID，当触发告警规则的是会议室时返回该信息
	monitorTargetRoomIdFlag bool

	monitorTargetRoomMac     string // 触发告警规则的会议室主机Mac地址，当monitor_target=1时返回该信息
	monitorTargetRoomMacFlag bool
}

func NewAlertBuilder() *AlertBuilder {
	builder := &AlertBuilder{}
	return builder
}

// 告警ID
//
// 示例值：7115030004018184212
func (builder *AlertBuilder) AlertId(alertId string) *AlertBuilder {
	builder.alertId = alertId
	builder.alertIdFlag = true
	return builder
}

// 触发告警规则的会议室/服务器具体的名称
//
// 示例值：XX层级
func (builder *AlertBuilder) ResourceScope(resourceScope string) *AlertBuilder {
	builder.resourceScope = resourceScope
	builder.resourceScopeFlag = true
	return builder
}

// 触发告警规则的监控对象
//
// 示例值：2
func (builder *AlertBuilder) MonitorTarget(monitorTarget int) *AlertBuilder {
	builder.monitorTarget = monitorTarget
	builder.monitorTargetFlag = true
	return builder
}

// 告警规则的规则描述
//
// 示例值：连续1个周期（共1分钟），控制器电量 < 50%，则告警
func (builder *AlertBuilder) AlertStrategy(alertStrategy string) *AlertBuilder {
	builder.alertStrategy = alertStrategy
	builder.alertStrategyFlag = true
	return builder
}

// 告警通知发生时间（unix时间，单位sec）
//
// 示例值：1656914944
func (builder *AlertBuilder) AlertTime(alertTime string) *AlertBuilder {
	builder.alertTime = alertTime
	builder.alertTimeFlag = true
	return builder
}

// 告警等级：严重/警告/提醒
//
// 示例值：2
func (builder *AlertBuilder) AlertLevel(alertLevel int) *AlertBuilder {
	builder.alertLevel = alertLevel
	builder.alertLevelFlag = true
	return builder
}

// 告警联系人
//
// 示例值：
func (builder *AlertBuilder) Contacts(contacts []*Contact) *AlertBuilder {
	builder.contacts = contacts
	builder.contactsFlag = true
	return builder
}

// 通知方式
//
// 示例值：[0,1]
func (builder *AlertBuilder) NotifyMethods(notifyMethods []int) *AlertBuilder {
	builder.notifyMethods = notifyMethods
	builder.notifyMethodsFlag = true
	return builder
}

// 规则名称
//
// 示例值：签到板断开连接
func (builder *AlertBuilder) AlertRule(alertRule string) *AlertBuilder {
	builder.alertRule = alertRule
	builder.alertRuleFlag = true
	return builder
}

// 处理时间
//
// 示例值：1656914944
func (builder *AlertBuilder) ProcessTime(processTime string) *AlertBuilder {
	builder.processTime = processTime
	builder.processTimeFlag = true
	return builder
}

// 恢复时间
//
// 示例值：1656914944
func (builder *AlertBuilder) RecoverTime(recoverTime string) *AlertBuilder {
	builder.recoverTime = recoverTime
	builder.recoverTimeFlag = true
	return builder
}

// 处理状态：待处理/处理中/已恢复
//
// 示例值：2
func (builder *AlertBuilder) ProcessStatus(processStatus int) *AlertBuilder {
	builder.processStatus = processStatus
	builder.processStatusFlag = true
	return builder
}

// 告警规则ID
//
// 示例值：100
func (builder *AlertBuilder) AlertRuleId(alertRuleId string) *AlertBuilder {
	builder.alertRuleId = alertRuleId
	builder.alertRuleIdFlag = true
	return builder
}

// 触发告警规则的会议室ID，当触发告警规则的是会议室时返回该信息
//
// 示例值：omm_4de32cf10a4358788ff4e09e37ebbf9b
func (builder *AlertBuilder) MonitorTargetRoomId(monitorTargetRoomId string) *AlertBuilder {
	builder.monitorTargetRoomId = monitorTargetRoomId
	builder.monitorTargetRoomIdFlag = true
	return builder
}

// 触发告警规则的会议室主机Mac地址，当monitor_target=1时返回该信息
//
// 示例值：52:60:19:9c:97:21
func (builder *AlertBuilder) MonitorTargetRoomMac(monitorTargetRoomMac string) *AlertBuilder {
	builder.monitorTargetRoomMac = monitorTargetRoomMac
	builder.monitorTargetRoomMacFlag = true
	return builder
}

func (builder *AlertBuilder) Build() *Alert {
	req := &Alert{}
	if builder.alertIdFlag {
		req.AlertId = &builder.alertId

	}
	if builder.resourceScopeFlag {
		req.ResourceScope = &builder.resourceScope

	}
	if builder.monitorTargetFlag {
		req.MonitorTarget = &builder.monitorTarget

	}
	if builder.alertStrategyFlag {
		req.AlertStrategy = &builder.alertStrategy

	}
	if builder.alertTimeFlag {
		req.AlertTime = &builder.alertTime

	}
	if builder.alertLevelFlag {
		req.AlertLevel = &builder.alertLevel

	}
	if builder.contactsFlag {
		req.Contacts = builder.contacts
	}
	if builder.notifyMethodsFlag {
		req.NotifyMethods = builder.notifyMethods
	}
	if builder.alertRuleFlag {
		req.AlertRule = &builder.alertRule

	}
	if builder.processTimeFlag {
		req.ProcessTime = &builder.processTime

	}
	if builder.recoverTimeFlag {
		req.RecoverTime = &builder.recoverTime

	}
	if builder.processStatusFlag {
		req.ProcessStatus = &builder.processStatus

	}
	if builder.alertRuleIdFlag {
		req.AlertRuleId = &builder.alertRuleId

	}
	if builder.monitorTargetRoomIdFlag {
		req.MonitorTargetRoomId = &builder.monitorTargetRoomId

	}
	if builder.monitorTargetRoomMacFlag {
		req.MonitorTargetRoomMac = &builder.monitorTargetRoomMac

	}
	return req
}

type ApprovalConfig struct {
	ApprovalSwitch *int `json:"approval_switch,omitempty"` // 预定审批开关：0 代表关闭，1 代表打开。;<b>说明</b>：;1.  未设置值时不更新原开关的值，但此时必填  approval_condition;2.  设置值为 1 时，必填  approval_condition<br>								 ;3.  设置值为 0 时整个 ;approval_config 其他字段均可省略。

	ApprovalCondition *int `json:"approval_condition,omitempty"` // 预定审批条件：0 代表所有预定均需审批，1 代表满足条件的需审批;<b>说明</b>：为 1 时必填 meeting_duration

	MeetingDuration *float64 `json:"meeting_duration,omitempty"` // 超过 meeting_duration;的预定需要审批（单位：小时，取值范围[0.1-99]）;;<b>说明</b>：;1.  当 approval_condition ; 为 0 ，更新时如果未设置值，默认更新为 99 .;2.  传入的值小数点后超过 2 位，自动四舍五入保留两位。

	Approvers []*SubscribeUser `json:"approvers,omitempty"` // 审批人列表，当打开审批开关时，至少需要设置一位审批人
}

type ApprovalConfigBuilder struct {
	approvalSwitch     int // 预定审批开关：0 代表关闭，1 代表打开。;<b>说明</b>：;1.  未设置值时不更新原开关的值，但此时必填  approval_condition;2.  设置值为 1 时，必填  approval_condition<br>								 ;3.  设置值为 0 时整个 ;approval_config 其他字段均可省略。
	approvalSwitchFlag bool

	approvalCondition     int // 预定审批条件：0 代表所有预定均需审批，1 代表满足条件的需审批;<b>说明</b>：为 1 时必填 meeting_duration
	approvalConditionFlag bool

	meetingDuration     float64 // 超过 meeting_duration;的预定需要审批（单位：小时，取值范围[0.1-99]）;;<b>说明</b>：;1.  当 approval_condition ; 为 0 ，更新时如果未设置值，默认更新为 99 .;2.  传入的值小数点后超过 2 位，自动四舍五入保留两位。
	meetingDurationFlag bool

	approvers     []*SubscribeUser // 审批人列表，当打开审批开关时，至少需要设置一位审批人
	approversFlag bool
}

func NewApprovalConfigBuilder() *ApprovalConfigBuilder {
	builder := &ApprovalConfigBuilder{}
	return builder
}

// 预定审批开关：0 代表关闭，1 代表打开。;<b>说明</b>：;1.  未设置值时不更新原开关的值，但此时必填  approval_condition;2.  设置值为 1 时，必填  approval_condition<br>								 ;3.  设置值为 0 时整个 ;approval_config 其他字段均可省略。
//
// 示例值：1
func (builder *ApprovalConfigBuilder) ApprovalSwitch(approvalSwitch int) *ApprovalConfigBuilder {
	builder.approvalSwitch = approvalSwitch
	builder.approvalSwitchFlag = true
	return builder
}

// 预定审批条件：0 代表所有预定均需审批，1 代表满足条件的需审批;<b>说明</b>：为 1 时必填 meeting_duration
//
// 示例值：1
func (builder *ApprovalConfigBuilder) ApprovalCondition(approvalCondition int) *ApprovalConfigBuilder {
	builder.approvalCondition = approvalCondition
	builder.approvalConditionFlag = true
	return builder
}

// 超过 meeting_duration;的预定需要审批（单位：小时，取值范围[0.1-99]）;;<b>说明</b>：;1.  当 approval_condition ; 为 0 ，更新时如果未设置值，默认更新为 99 .;2.  传入的值小数点后超过 2 位，自动四舍五入保留两位。
//
// 示例值：3
func (builder *ApprovalConfigBuilder) MeetingDuration(meetingDuration float64) *ApprovalConfigBuilder {
	builder.meetingDuration = meetingDuration
	builder.meetingDurationFlag = true
	return builder
}

// 审批人列表，当打开审批开关时，至少需要设置一位审批人
//
// 示例值：[{user_id:"ou_e8bce6c3935ef1fc1b432992fd9d3db8"}]
func (builder *ApprovalConfigBuilder) Approvers(approvers []*SubscribeUser) *ApprovalConfigBuilder {
	builder.approvers = approvers
	builder.approversFlag = true
	return builder
}

func (builder *ApprovalConfigBuilder) Build() *ApprovalConfig {
	req := &ApprovalConfig{}
	if builder.approvalSwitchFlag {
		req.ApprovalSwitch = &builder.approvalSwitch

	}
	if builder.approvalConditionFlag {
		req.ApprovalCondition = &builder.approvalCondition

	}
	if builder.meetingDurationFlag {
		req.MeetingDuration = &builder.meetingDuration

	}
	if builder.approversFlag {
		req.Approvers = builder.approvers
	}
	return req
}

type ApprovalConfigEvent struct {
	ApprovalSwitch *int `json:"approval_switch,omitempty"` // 预定审批开关，0关闭，1打开

	ApprovalCondition *int `json:"approval_condition,omitempty"` // 预定审批条件，0所有预定需要审批，1满足条件需审批

	MeetingDuration *float64 `json:"meeting_duration,omitempty"` // 超过 meeting_duration小时需要审批

	Approvers []*SubscribeUserEvent `json:"approvers,omitempty"` // 审批人列表
}

type ApprovalConfigEventBuilder struct {
	approvalSwitch     int // 预定审批开关，0关闭，1打开
	approvalSwitchFlag bool

	approvalCondition     int // 预定审批条件，0所有预定需要审批，1满足条件需审批
	approvalConditionFlag bool

	meetingDuration     float64 // 超过 meeting_duration小时需要审批
	meetingDurationFlag bool

	approvers     []*SubscribeUserEvent // 审批人列表
	approversFlag bool
}

func NewApprovalConfigEventBuilder() *ApprovalConfigEventBuilder {
	builder := &ApprovalConfigEventBuilder{}
	return builder
}

// 预定审批开关，0关闭，1打开
//
// 示例值：0
func (builder *ApprovalConfigEventBuilder) ApprovalSwitch(approvalSwitch int) *ApprovalConfigEventBuilder {
	builder.approvalSwitch = approvalSwitch
	builder.approvalSwitchFlag = true
	return builder
}

// 预定审批条件，0所有预定需要审批，1满足条件需审批
//
// 示例值：0
func (builder *ApprovalConfigEventBuilder) ApprovalCondition(approvalCondition int) *ApprovalConfigEventBuilder {
	builder.approvalCondition = approvalCondition
	builder.approvalConditionFlag = true
	return builder
}

// 超过 meeting_duration小时需要审批
//
// 示例值：1
func (builder *ApprovalConfigEventBuilder) MeetingDuration(meetingDuration float64) *ApprovalConfigEventBuilder {
	builder.meetingDuration = meetingDuration
	builder.meetingDurationFlag = true
	return builder
}

// 审批人列表
//
// 示例值：[{user_id:"ou_e8bce6c3935ef1fc1b432992fd9d3db8"}]
func (builder *ApprovalConfigEventBuilder) Approvers(approvers []*SubscribeUserEvent) *ApprovalConfigEventBuilder {
	builder.approvers = approvers
	builder.approversFlag = true
	return builder
}

func (builder *ApprovalConfigEventBuilder) Build() *ApprovalConfigEvent {
	req := &ApprovalConfigEvent{}
	if builder.approvalSwitchFlag {
		req.ApprovalSwitch = &builder.approvalSwitch

	}
	if builder.approvalConditionFlag {
		req.ApprovalCondition = &builder.approvalCondition

	}
	if builder.meetingDurationFlag {
		req.MeetingDuration = &builder.meetingDuration

	}
	if builder.approversFlag {
		req.Approvers = builder.approvers
	}
	return req
}

type Conditions struct {
	CustomKey *string `json:"custom_key,omitempty"` // 自定义题目的key

	OptionKeys []string `json:"option_keys,omitempty"` // 自定义选项的key
}

type ConditionsBuilder struct {
	customKey     string // 自定义题目的key
	customKeyFlag bool

	optionKeys     []string // 自定义选项的key
	optionKeysFlag bool
}

func NewConditionsBuilder() *ConditionsBuilder {
	builder := &ConditionsBuilder{}
	return builder
}

// 自定义题目的key
//
// 示例值：167383928372636
func (builder *ConditionsBuilder) CustomKey(customKey string) *ConditionsBuilder {
	builder.customKey = customKey
	builder.customKeyFlag = true
	return builder
}

// 自定义选项的key
//
// 示例值：
func (builder *ConditionsBuilder) OptionKeys(optionKeys []string) *ConditionsBuilder {
	builder.optionKeys = optionKeys
	builder.optionKeysFlag = true
	return builder
}

func (builder *ConditionsBuilder) Build() *Conditions {
	req := &Conditions{}
	if builder.customKeyFlag {
		req.CustomKey = &builder.customKey

	}
	if builder.optionKeysFlag {
		req.OptionKeys = builder.optionKeys
	}
	return req
}

type Contact struct {
	ContactType *int `json:"contact_type,omitempty"` // 联系人类型

	ContactName *string `json:"contact_name,omitempty"` // 联系人名
}

type ContactBuilder struct {
	contactType     int // 联系人类型
	contactTypeFlag bool

	contactName     string // 联系人名
	contactNameFlag bool
}

func NewContactBuilder() *ContactBuilder {
	builder := &ContactBuilder{}
	return builder
}

// 联系人类型
//
// 示例值：1
func (builder *ContactBuilder) ContactType(contactType int) *ContactBuilder {
	builder.contactType = contactType
	builder.contactTypeFlag = true
	return builder
}

// 联系人名
//
// 示例值：张三
func (builder *ContactBuilder) ContactName(contactName string) *ContactBuilder {
	builder.contactName = contactName
	builder.contactNameFlag = true
	return builder
}

func (builder *ContactBuilder) Build() *Contact {
	req := &Contact{}
	if builder.contactTypeFlag {
		req.ContactType = &builder.contactType

	}
	if builder.contactNameFlag {
		req.ContactName = &builder.contactName

	}
	return req
}

type CustomList struct {
	CustomType *int `json:"custom_type,omitempty"` // 问题类型

	Key *string `json:"key,omitempty"` // 自定义题目的key，用于设置显示条件

	NeedFill *bool `json:"need_fill,omitempty"` // 题目是否必填

	Title *string `json:"title,omitempty"` // 题目标题

	Placeholder *string `json:"placeholder,omitempty"` // 文本框题目对应的输入提示

	Options []*Options `json:"options,omitempty"` // 选项配置，单选多选时使用

	Conditions []*Conditions `json:"conditions,omitempty"` // 条件设置，满足某条件才显示某问题
}

type CustomListBuilder struct {
	customType     int // 问题类型
	customTypeFlag bool

	key     string // 自定义题目的key，用于设置显示条件
	keyFlag bool

	needFill     bool // 题目是否必填
	needFillFlag bool

	title     string // 题目标题
	titleFlag bool

	placeholder     string // 文本框题目对应的输入提示
	placeholderFlag bool

	options     []*Options // 选项配置，单选多选时使用
	optionsFlag bool

	conditions     []*Conditions // 条件设置，满足某条件才显示某问题
	conditionsFlag bool
}

func NewCustomListBuilder() *CustomListBuilder {
	builder := &CustomListBuilder{}
	return builder
}

// 问题类型
//
// 示例值：1
func (builder *CustomListBuilder) CustomType(customType int) *CustomListBuilder {
	builder.customType = customType
	builder.customTypeFlag = true
	return builder
}

// 自定义题目的key，用于设置显示条件
//
// 示例值：238281272
func (builder *CustomListBuilder) Key(key string) *CustomListBuilder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// 题目是否必填
//
// 示例值：false
func (builder *CustomListBuilder) NeedFill(needFill bool) *CustomListBuilder {
	builder.needFill = needFill
	builder.needFillFlag = true
	return builder
}

// 题目标题
//
// 示例值：第一题
func (builder *CustomListBuilder) Title(title string) *CustomListBuilder {
	builder.title = title
	builder.titleFlag = true
	return builder
}

// 文本框题目对应的输入提示
//
// 示例值：请输入
func (builder *CustomListBuilder) Placeholder(placeholder string) *CustomListBuilder {
	builder.placeholder = placeholder
	builder.placeholderFlag = true
	return builder
}

// 选项配置，单选多选时使用
//
// 示例值：
func (builder *CustomListBuilder) Options(options []*Options) *CustomListBuilder {
	builder.options = options
	builder.optionsFlag = true
	return builder
}

// 条件设置，满足某条件才显示某问题
//
// 示例值：
func (builder *CustomListBuilder) Conditions(conditions []*Conditions) *CustomListBuilder {
	builder.conditions = conditions
	builder.conditionsFlag = true
	return builder
}

func (builder *CustomListBuilder) Build() *CustomList {
	req := &CustomList{}
	if builder.customTypeFlag {
		req.CustomType = &builder.customType

	}
	if builder.keyFlag {
		req.Key = &builder.key

	}
	if builder.needFillFlag {
		req.NeedFill = &builder.needFill

	}
	if builder.titleFlag {
		req.Title = &builder.title

	}
	if builder.placeholderFlag {
		req.Placeholder = &builder.placeholder

	}
	if builder.optionsFlag {
		req.Options = builder.options
	}
	if builder.conditionsFlag {
		req.Conditions = builder.conditions
	}
	return req
}

type DepartmentId struct {
	DepartmentId *string `json:"department_id,omitempty"` //

	OpenDepartmentId *string `json:"open_department_id,omitempty"` //
}

type DepartmentIdBuilder struct {
	departmentId     string //
	departmentIdFlag bool

	openDepartmentId     string //
	openDepartmentIdFlag bool
}

func NewDepartmentIdBuilder() *DepartmentIdBuilder {
	builder := &DepartmentIdBuilder{}
	return builder
}

//
//
// 示例值：
func (builder *DepartmentIdBuilder) DepartmentId(departmentId string) *DepartmentIdBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

//
//
// 示例值：
func (builder *DepartmentIdBuilder) OpenDepartmentId(openDepartmentId string) *DepartmentIdBuilder {
	builder.openDepartmentId = openDepartmentId
	builder.openDepartmentIdFlag = true
	return builder
}

func (builder *DepartmentIdBuilder) Build() *DepartmentId {
	req := &DepartmentId{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.openDepartmentIdFlag {
		req.OpenDepartmentId = &builder.openDepartmentId

	}
	return req
}

type Device struct {
	Name *string `json:"name,omitempty"` // 设施名称
}

type DeviceBuilder struct {
	name     string // 设施名称
	nameFlag bool
}

func NewDeviceBuilder() *DeviceBuilder {
	builder := &DeviceBuilder{}
	return builder
}

// 设施名称
//
// 示例值：电话
func (builder *DeviceBuilder) Name(name string) *DeviceBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

func (builder *DeviceBuilder) Build() *Device {
	req := &Device{}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	return req
}

type DisableInformConfig struct {
	IfCoverChildScope *bool `json:"if_cover_child_scope,omitempty"` // 是否覆盖子层级及会议室

	IfInform *bool `json:"if_inform,omitempty"` // 禁用状态变更通知开关

	InformedUsers []*SubscribeUser `json:"informed_users,omitempty"` // 通知成员列表

	InformedDepts []*SubscribeDepartment `json:"informed_depts,omitempty"` // 通知部门列表
}

type DisableInformConfigBuilder struct {
	ifCoverChildScope     bool // 是否覆盖子层级及会议室
	ifCoverChildScopeFlag bool

	ifInform     bool // 禁用状态变更通知开关
	ifInformFlag bool

	informedUsers     []*SubscribeUser // 通知成员列表
	informedUsersFlag bool

	informedDepts     []*SubscribeDepartment // 通知部门列表
	informedDeptsFlag bool
}

func NewDisableInformConfigBuilder() *DisableInformConfigBuilder {
	builder := &DisableInformConfigBuilder{}
	return builder
}

// 是否覆盖子层级及会议室
//
// 示例值：true
func (builder *DisableInformConfigBuilder) IfCoverChildScope(ifCoverChildScope bool) *DisableInformConfigBuilder {
	builder.ifCoverChildScope = ifCoverChildScope
	builder.ifCoverChildScopeFlag = true
	return builder
}

// 禁用状态变更通知开关
//
// 示例值：false
func (builder *DisableInformConfigBuilder) IfInform(ifInform bool) *DisableInformConfigBuilder {
	builder.ifInform = ifInform
	builder.ifInformFlag = true
	return builder
}

// 通知成员列表
//
// 示例值：
func (builder *DisableInformConfigBuilder) InformedUsers(informedUsers []*SubscribeUser) *DisableInformConfigBuilder {
	builder.informedUsers = informedUsers
	builder.informedUsersFlag = true
	return builder
}

// 通知部门列表
//
// 示例值：
func (builder *DisableInformConfigBuilder) InformedDepts(informedDepts []*SubscribeDepartment) *DisableInformConfigBuilder {
	builder.informedDepts = informedDepts
	builder.informedDeptsFlag = true
	return builder
}

func (builder *DisableInformConfigBuilder) Build() *DisableInformConfig {
	req := &DisableInformConfig{}
	if builder.ifCoverChildScopeFlag {
		req.IfCoverChildScope = &builder.ifCoverChildScope

	}
	if builder.ifInformFlag {
		req.IfInform = &builder.ifInform

	}
	if builder.informedUsersFlag {
		req.InformedUsers = builder.informedUsers
	}
	if builder.informedDeptsFlag {
		req.InformedDepts = builder.informedDepts
	}
	return req
}

type KeyPoint struct {
	Name *string `json:"name,omitempty"` // 关键点

	Description *string `json:"description,omitempty"` // 关键点描述
}

type KeyPointBuilder struct {
	name     string // 关键点
	nameFlag bool

	description     string // 关键点描述
	descriptionFlag bool
}

func NewKeyPointBuilder() *KeyPointBuilder {
	builder := &KeyPointBuilder{}
	return builder
}

// 关键点
//
// 示例值：飞书
func (builder *KeyPointBuilder) Name(name string) *KeyPointBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 关键点描述
//
// 示例值：字节跳动的IM软件
func (builder *KeyPointBuilder) Description(description string) *KeyPointBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

func (builder *KeyPointBuilder) Build() *KeyPoint {
	req := &KeyPoint{}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	return req
}

type KeyPointMatchDetail struct {
	StartTimestamp *string `json:"start_timestamp,omitempty"` // 开始时间戳

	MatchedText *string `json:"matched_text,omitempty"` // 匹配到的文本
}

type KeyPointMatchDetailBuilder struct {
	startTimestamp     string // 开始时间戳
	startTimestampFlag bool

	matchedText     string // 匹配到的文本
	matchedTextFlag bool
}

func NewKeyPointMatchDetailBuilder() *KeyPointMatchDetailBuilder {
	builder := &KeyPointMatchDetailBuilder{}
	return builder
}

// 开始时间戳
//
// 示例值：1
func (builder *KeyPointMatchDetailBuilder) StartTimestamp(startTimestamp string) *KeyPointMatchDetailBuilder {
	builder.startTimestamp = startTimestamp
	builder.startTimestampFlag = true
	return builder
}

// 匹配到的文本
//
// 示例值：1
func (builder *KeyPointMatchDetailBuilder) MatchedText(matchedText string) *KeyPointMatchDetailBuilder {
	builder.matchedText = matchedText
	builder.matchedTextFlag = true
	return builder
}

func (builder *KeyPointMatchDetailBuilder) Build() *KeyPointMatchDetail {
	req := &KeyPointMatchDetail{}
	if builder.startTimestampFlag {
		req.StartTimestamp = &builder.startTimestamp

	}
	if builder.matchedTextFlag {
		req.MatchedText = &builder.matchedText

	}
	return req
}

type KeyPointMatchDetails struct {
	KeyPointMatchDetails []*KeyPointMatchDetail `json:"key_point_match_details,omitempty"` // detail列表
}

type KeyPointMatchDetailsBuilder struct {
	keyPointMatchDetails     []*KeyPointMatchDetail // detail列表
	keyPointMatchDetailsFlag bool
}

func NewKeyPointMatchDetailsBuilder() *KeyPointMatchDetailsBuilder {
	builder := &KeyPointMatchDetailsBuilder{}
	return builder
}

// detail列表
//
// 示例值：
func (builder *KeyPointMatchDetailsBuilder) KeyPointMatchDetails(keyPointMatchDetails []*KeyPointMatchDetail) *KeyPointMatchDetailsBuilder {
	builder.keyPointMatchDetails = keyPointMatchDetails
	builder.keyPointMatchDetailsFlag = true
	return builder
}

func (builder *KeyPointMatchDetailsBuilder) Build() *KeyPointMatchDetails {
	req := &KeyPointMatchDetails{}
	if builder.keyPointMatchDetailsFlag {
		req.KeyPointMatchDetails = builder.keyPointMatchDetails
	}
	return req
}

type Material struct {
	Name *string `json:"name,omitempty"` // 素材名称

	FileToken *string `json:"file_token,omitempty"` // 文件上传drive后的token

	FileSize *int `json:"file_size,omitempty"` // 文件大小(KB)

	DeviceType *int `json:"device_type,omitempty"` // 素材适用设备类型

	MaterialType *int `json:"material_type,omitempty"` // 素材类型

	ReviewResult *int `json:"review_result,omitempty"` // 审核结果

	MaterialSource *int `json:"material_source,omitempty"` // 素材来源
}

type MaterialBuilder struct {
	name     string // 素材名称
	nameFlag bool

	fileToken     string // 文件上传drive后的token
	fileTokenFlag bool

	fileSize     int // 文件大小(KB)
	fileSizeFlag bool

	deviceType     int // 素材适用设备类型
	deviceTypeFlag bool

	materialType     int // 素材类型
	materialTypeFlag bool

	reviewResult     int // 审核结果
	reviewResultFlag bool

	materialSource     int // 素材来源
	materialSourceFlag bool
}

func NewMaterialBuilder() *MaterialBuilder {
	builder := &MaterialBuilder{}
	return builder
}

// 素材名称
//
// 示例值：green
func (builder *MaterialBuilder) Name(name string) *MaterialBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 文件上传drive后的token
//
// 示例值：u8ajdjadau8wqu
func (builder *MaterialBuilder) FileToken(fileToken string) *MaterialBuilder {
	builder.fileToken = fileToken
	builder.fileTokenFlag = true
	return builder
}

// 文件大小(KB)
//
// 示例值：1024
func (builder *MaterialBuilder) FileSize(fileSize int) *MaterialBuilder {
	builder.fileSize = fileSize
	builder.fileSizeFlag = true
	return builder
}

// 素材适用设备类型
//
// 示例值：2
func (builder *MaterialBuilder) DeviceType(deviceType int) *MaterialBuilder {
	builder.deviceType = deviceType
	builder.deviceTypeFlag = true
	return builder
}

// 素材类型
//
// 示例值：2
func (builder *MaterialBuilder) MaterialType(materialType int) *MaterialBuilder {
	builder.materialType = materialType
	builder.materialTypeFlag = true
	return builder
}

// 审核结果
//
// 示例值：2
func (builder *MaterialBuilder) ReviewResult(reviewResult int) *MaterialBuilder {
	builder.reviewResult = reviewResult
	builder.reviewResultFlag = true
	return builder
}

// 素材来源
//
// 示例值：2
func (builder *MaterialBuilder) MaterialSource(materialSource int) *MaterialBuilder {
	builder.materialSource = materialSource
	builder.materialSourceFlag = true
	return builder
}

func (builder *MaterialBuilder) Build() *Material {
	req := &Material{}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.fileTokenFlag {
		req.FileToken = &builder.fileToken

	}
	if builder.fileSizeFlag {
		req.FileSize = &builder.fileSize

	}
	if builder.deviceTypeFlag {
		req.DeviceType = &builder.deviceType

	}
	if builder.materialTypeFlag {
		req.MaterialType = &builder.materialType

	}
	if builder.reviewResultFlag {
		req.ReviewResult = &builder.reviewResult

	}
	if builder.materialSourceFlag {
		req.MaterialSource = &builder.materialSource

	}
	return req
}

type MaterialDeleteResult struct {
	FileToken *string `json:"file_token,omitempty"` // 文件上传drive后的token

	Result *int `json:"result,omitempty"` // 删除结果
}

type MaterialDeleteResultBuilder struct {
	fileToken     string // 文件上传drive后的token
	fileTokenFlag bool

	result     int // 删除结果
	resultFlag bool
}

func NewMaterialDeleteResultBuilder() *MaterialDeleteResultBuilder {
	builder := &MaterialDeleteResultBuilder{}
	return builder
}

// 文件上传drive后的token
//
// 示例值：u8ajdjadau8wqu
func (builder *MaterialDeleteResultBuilder) FileToken(fileToken string) *MaterialDeleteResultBuilder {
	builder.fileToken = fileToken
	builder.fileTokenFlag = true
	return builder
}

// 删除结果
//
// 示例值：1
func (builder *MaterialDeleteResultBuilder) Result(result int) *MaterialDeleteResultBuilder {
	builder.result = result
	builder.resultFlag = true
	return builder
}

func (builder *MaterialDeleteResultBuilder) Build() *MaterialDeleteResult {
	req := &MaterialDeleteResult{}
	if builder.fileTokenFlag {
		req.FileToken = &builder.fileToken

	}
	if builder.resultFlag {
		req.Result = &builder.result

	}
	return req
}

type MaterialReviewResult struct {
	FileToken *string `json:"file_token,omitempty"` // 文件上传drive后的token

	Result *int `json:"result,omitempty"` // 审核结果
}

type MaterialReviewResultBuilder struct {
	fileToken     string // 文件上传drive后的token
	fileTokenFlag bool

	result     int // 审核结果
	resultFlag bool
}

func NewMaterialReviewResultBuilder() *MaterialReviewResultBuilder {
	builder := &MaterialReviewResultBuilder{}
	return builder
}

// 文件上传drive后的token
//
// 示例值：u8ajdjadau8wqu
func (builder *MaterialReviewResultBuilder) FileToken(fileToken string) *MaterialReviewResultBuilder {
	builder.fileToken = fileToken
	builder.fileTokenFlag = true
	return builder
}

// 审核结果
//
// 示例值：1
func (builder *MaterialReviewResultBuilder) Result(result int) *MaterialReviewResultBuilder {
	builder.result = result
	builder.resultFlag = true
	return builder
}

func (builder *MaterialReviewResultBuilder) Build() *MaterialReviewResult {
	req := &MaterialReviewResult{}
	if builder.fileTokenFlag {
		req.FileToken = &builder.fileToken

	}
	if builder.resultFlag {
		req.Result = &builder.result

	}
	return req
}

type MaterialUploadResult struct {
	FileToken *string `json:"file_token,omitempty"` // 文件上传drive后的token

	Result *int `json:"result,omitempty"` // 上传结果
}

type MaterialUploadResultBuilder struct {
	fileToken     string // 文件上传drive后的token
	fileTokenFlag bool

	result     int // 上传结果
	resultFlag bool
}

func NewMaterialUploadResultBuilder() *MaterialUploadResultBuilder {
	builder := &MaterialUploadResultBuilder{}
	return builder
}

// 文件上传drive后的token
//
// 示例值：u8ajdjadau8wqu
func (builder *MaterialUploadResultBuilder) FileToken(fileToken string) *MaterialUploadResultBuilder {
	builder.fileToken = fileToken
	builder.fileTokenFlag = true
	return builder
}

// 上传结果
//
// 示例值：1
func (builder *MaterialUploadResultBuilder) Result(result int) *MaterialUploadResultBuilder {
	builder.result = result
	builder.resultFlag = true
	return builder
}

func (builder *MaterialUploadResultBuilder) Build() *MaterialUploadResult {
	req := &MaterialUploadResult{}
	if builder.fileTokenFlag {
		req.FileToken = &builder.fileToken

	}
	if builder.resultFlag {
		req.Result = &builder.result

	}
	return req
}

type Meeting struct {
	Id *string `json:"id,omitempty"` // 会议ID（视频会议的唯一标识，视频会议开始后才会产生）

	Topic *string `json:"topic,omitempty"` // 会议主题

	Url *string `json:"url,omitempty"` // 会议链接（飞书用户可通过点击会议链接快捷入会）

	MeetingNo *string `json:"meeting_no,omitempty"` // 会议号

	Password *string `json:"password,omitempty"` // 会议密码

	CreateTime *string `json:"create_time,omitempty"` // 会议创建时间（unix时间，单位sec）

	StartTime *string `json:"start_time,omitempty"` // 会议开始时间（unix时间，单位sec）

	EndTime *string `json:"end_time,omitempty"` // 会议结束时间（unix时间，单位sec）

	HostUser *MeetingUser `json:"host_user,omitempty"` // 主持人

	MeetingConnect *bool `json:"meeting_connect,omitempty"` // 该会议是否支持互通

	Status *int `json:"status,omitempty"` // 会议状态

	ParticipantCount *string `json:"participant_count,omitempty"` // 参会峰值人数

	ParticipantCountAccumulated *string `json:"participant_count_accumulated,omitempty"` // 累计参会人数

	Participants []*MeetingParticipant `json:"participants,omitempty"` // 参会人列表

	Ability *MeetingAbility `json:"ability,omitempty"` // 会中使用的能力
}

type MeetingBuilder struct {
	id     string // 会议ID（视频会议的唯一标识，视频会议开始后才会产生）
	idFlag bool

	topic     string // 会议主题
	topicFlag bool

	url     string // 会议链接（飞书用户可通过点击会议链接快捷入会）
	urlFlag bool

	meetingNo     string // 会议号
	meetingNoFlag bool

	password     string // 会议密码
	passwordFlag bool

	createTime     string // 会议创建时间（unix时间，单位sec）
	createTimeFlag bool

	startTime     string // 会议开始时间（unix时间，单位sec）
	startTimeFlag bool

	endTime     string // 会议结束时间（unix时间，单位sec）
	endTimeFlag bool

	hostUser     *MeetingUser // 主持人
	hostUserFlag bool

	meetingConnect     bool // 该会议是否支持互通
	meetingConnectFlag bool

	status     int // 会议状态
	statusFlag bool

	participantCount     string // 参会峰值人数
	participantCountFlag bool

	participantCountAccumulated     string // 累计参会人数
	participantCountAccumulatedFlag bool

	participants     []*MeetingParticipant // 参会人列表
	participantsFlag bool

	ability     *MeetingAbility // 会中使用的能力
	abilityFlag bool
}

func NewMeetingBuilder() *MeetingBuilder {
	builder := &MeetingBuilder{}
	return builder
}

// 会议ID（视频会议的唯一标识，视频会议开始后才会产生）
//
// 示例值：6911188411934433028
func (builder *MeetingBuilder) Id(id string) *MeetingBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 会议主题
//
// 示例值：my meeting
func (builder *MeetingBuilder) Topic(topic string) *MeetingBuilder {
	builder.topic = topic
	builder.topicFlag = true
	return builder
}

// 会议链接（飞书用户可通过点击会议链接快捷入会）
//
// 示例值：https://vc.feishu.cn/j/337736498
func (builder *MeetingBuilder) Url(url string) *MeetingBuilder {
	builder.url = url
	builder.urlFlag = true
	return builder
}

// 会议号
//
// 示例值：123456789
func (builder *MeetingBuilder) MeetingNo(meetingNo string) *MeetingBuilder {
	builder.meetingNo = meetingNo
	builder.meetingNoFlag = true
	return builder
}

// 会议密码
//
// 示例值：971024
func (builder *MeetingBuilder) Password(password string) *MeetingBuilder {
	builder.password = password
	builder.passwordFlag = true
	return builder
}

// 会议创建时间（unix时间，单位sec）
//
// 示例值：1608885566
func (builder *MeetingBuilder) CreateTime(createTime string) *MeetingBuilder {
	builder.createTime = createTime
	builder.createTimeFlag = true
	return builder
}

// 会议开始时间（unix时间，单位sec）
//
// 示例值：1608883322
func (builder *MeetingBuilder) StartTime(startTime string) *MeetingBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 会议结束时间（unix时间，单位sec）
//
// 示例值：1608888867
func (builder *MeetingBuilder) EndTime(endTime string) *MeetingBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 主持人
//
// 示例值：
func (builder *MeetingBuilder) HostUser(hostUser *MeetingUser) *MeetingBuilder {
	builder.hostUser = hostUser
	builder.hostUserFlag = true
	return builder
}

// 该会议是否支持互通
//
// 示例值：true
func (builder *MeetingBuilder) MeetingConnect(meetingConnect bool) *MeetingBuilder {
	builder.meetingConnect = meetingConnect
	builder.meetingConnectFlag = true
	return builder
}

// 会议状态
//
// 示例值：2
func (builder *MeetingBuilder) Status(status int) *MeetingBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 参会峰值人数
//
// 示例值：10
func (builder *MeetingBuilder) ParticipantCount(participantCount string) *MeetingBuilder {
	builder.participantCount = participantCount
	builder.participantCountFlag = true
	return builder
}

// 累计参会人数
//
// 示例值：10
func (builder *MeetingBuilder) ParticipantCountAccumulated(participantCountAccumulated string) *MeetingBuilder {
	builder.participantCountAccumulated = participantCountAccumulated
	builder.participantCountAccumulatedFlag = true
	return builder
}

// 参会人列表
//
// 示例值：
func (builder *MeetingBuilder) Participants(participants []*MeetingParticipant) *MeetingBuilder {
	builder.participants = participants
	builder.participantsFlag = true
	return builder
}

// 会中使用的能力
//
// 示例值：
func (builder *MeetingBuilder) Ability(ability *MeetingAbility) *MeetingBuilder {
	builder.ability = ability
	builder.abilityFlag = true
	return builder
}

func (builder *MeetingBuilder) Build() *Meeting {
	req := &Meeting{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.topicFlag {
		req.Topic = &builder.topic

	}
	if builder.urlFlag {
		req.Url = &builder.url

	}
	if builder.meetingNoFlag {
		req.MeetingNo = &builder.meetingNo

	}
	if builder.passwordFlag {
		req.Password = &builder.password

	}
	if builder.createTimeFlag {
		req.CreateTime = &builder.createTime

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.hostUserFlag {
		req.HostUser = builder.hostUser
	}
	if builder.meetingConnectFlag {
		req.MeetingConnect = &builder.meetingConnect

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.participantCountFlag {
		req.ParticipantCount = &builder.participantCount

	}
	if builder.participantCountAccumulatedFlag {
		req.ParticipantCountAccumulated = &builder.participantCountAccumulated

	}
	if builder.participantsFlag {
		req.Participants = builder.participants
	}
	if builder.abilityFlag {
		req.Ability = builder.ability
	}
	return req
}

type MeetingRecording struct {
	Id *string `json:"id,omitempty"` // 录制ID

	MeetingId *string `json:"meeting_id,omitempty"` // 会议ID

	Url *string `json:"url,omitempty"` // 录制文件URL

	Duration *string `json:"duration,omitempty"` // 录制总时长（单位msec）
}

type MeetingRecordingBuilder struct {
	id     string // 录制ID
	idFlag bool

	meetingId     string // 会议ID
	meetingIdFlag bool

	url     string // 录制文件URL
	urlFlag bool

	duration     string // 录制总时长（单位msec）
	durationFlag bool
}

func NewMeetingRecordingBuilder() *MeetingRecordingBuilder {
	builder := &MeetingRecordingBuilder{}
	return builder
}

// 录制ID
//
// 示例值：6911188411932033028
func (builder *MeetingRecordingBuilder) Id(id string) *MeetingRecordingBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 会议ID
//
// 示例值：6911188411932033028
func (builder *MeetingRecordingBuilder) MeetingId(meetingId string) *MeetingRecordingBuilder {
	builder.meetingId = meetingId
	builder.meetingIdFlag = true
	return builder
}

// 录制文件URL
//
// 示例值：https://meetings.feishu.cn/minutes/obcn37dxcftoc3656rgyejm7
func (builder *MeetingRecordingBuilder) Url(url string) *MeetingRecordingBuilder {
	builder.url = url
	builder.urlFlag = true
	return builder
}

// 录制总时长（单位msec）
//
// 示例值：30000
func (builder *MeetingRecordingBuilder) Duration(duration string) *MeetingRecordingBuilder {
	builder.duration = duration
	builder.durationFlag = true
	return builder
}

func (builder *MeetingRecordingBuilder) Build() *MeetingRecording {
	req := &MeetingRecording{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.meetingIdFlag {
		req.MeetingId = &builder.meetingId

	}
	if builder.urlFlag {
		req.Url = &builder.url

	}
	if builder.durationFlag {
		req.Duration = &builder.duration

	}
	return req
}

type MeetingAbility struct {
	UseVideo *bool `json:"use_video,omitempty"` // 是否使用视频

	UseAudio *bool `json:"use_audio,omitempty"` // 是否使用音频

	UseShareScreen *bool `json:"use_share_screen,omitempty"` // 是否使用共享屏幕

	UseFollowScreen *bool `json:"use_follow_screen,omitempty"` // 是否使用妙享（magic share）

	UseRecording *bool `json:"use_recording,omitempty"` // 是否使用录制

	UsePstn *bool `json:"use_pstn,omitempty"` // 是否使用PSTN
}

type MeetingAbilityBuilder struct {
	useVideo     bool // 是否使用视频
	useVideoFlag bool

	useAudio     bool // 是否使用音频
	useAudioFlag bool

	useShareScreen     bool // 是否使用共享屏幕
	useShareScreenFlag bool

	useFollowScreen     bool // 是否使用妙享（magic share）
	useFollowScreenFlag bool

	useRecording     bool // 是否使用录制
	useRecordingFlag bool

	usePstn     bool // 是否使用PSTN
	usePstnFlag bool
}

func NewMeetingAbilityBuilder() *MeetingAbilityBuilder {
	builder := &MeetingAbilityBuilder{}
	return builder
}

// 是否使用视频
//
// 示例值：true
func (builder *MeetingAbilityBuilder) UseVideo(useVideo bool) *MeetingAbilityBuilder {
	builder.useVideo = useVideo
	builder.useVideoFlag = true
	return builder
}

// 是否使用音频
//
// 示例值：true
func (builder *MeetingAbilityBuilder) UseAudio(useAudio bool) *MeetingAbilityBuilder {
	builder.useAudio = useAudio
	builder.useAudioFlag = true
	return builder
}

// 是否使用共享屏幕
//
// 示例值：true
func (builder *MeetingAbilityBuilder) UseShareScreen(useShareScreen bool) *MeetingAbilityBuilder {
	builder.useShareScreen = useShareScreen
	builder.useShareScreenFlag = true
	return builder
}

// 是否使用妙享（magic share）
//
// 示例值：true
func (builder *MeetingAbilityBuilder) UseFollowScreen(useFollowScreen bool) *MeetingAbilityBuilder {
	builder.useFollowScreen = useFollowScreen
	builder.useFollowScreenFlag = true
	return builder
}

// 是否使用录制
//
// 示例值：true
func (builder *MeetingAbilityBuilder) UseRecording(useRecording bool) *MeetingAbilityBuilder {
	builder.useRecording = useRecording
	builder.useRecordingFlag = true
	return builder
}

// 是否使用PSTN
//
// 示例值：true
func (builder *MeetingAbilityBuilder) UsePstn(usePstn bool) *MeetingAbilityBuilder {
	builder.usePstn = usePstn
	builder.usePstnFlag = true
	return builder
}

func (builder *MeetingAbilityBuilder) Build() *MeetingAbility {
	req := &MeetingAbility{}
	if builder.useVideoFlag {
		req.UseVideo = &builder.useVideo

	}
	if builder.useAudioFlag {
		req.UseAudio = &builder.useAudio

	}
	if builder.useShareScreenFlag {
		req.UseShareScreen = &builder.useShareScreen

	}
	if builder.useFollowScreenFlag {
		req.UseFollowScreen = &builder.useFollowScreen

	}
	if builder.useRecordingFlag {
		req.UseRecording = &builder.useRecording

	}
	if builder.usePstnFlag {
		req.UsePstn = &builder.usePstn

	}
	return req
}

type MeetingAnalyzeOutput struct {
	MeetingId *string `json:"meeting_id,omitempty"` // 会议号

	CheckStatusCode *int `json:"check_status_code,omitempty"` // 状态码

	ObjectiveCheckOutput *ObjectiveCheckOutput `json:"objective_check_output,omitempty"` // 客观分析结果

	SubjectiveCheckOutput *SubjectiveCheckOutput `json:"subjective_check_output,omitempty"` // 主观分析结果
}

type MeetingAnalyzeOutputBuilder struct {
	meetingId     string // 会议号
	meetingIdFlag bool

	checkStatusCode     int // 状态码
	checkStatusCodeFlag bool

	objectiveCheckOutput     *ObjectiveCheckOutput // 客观分析结果
	objectiveCheckOutputFlag bool

	subjectiveCheckOutput     *SubjectiveCheckOutput // 主观分析结果
	subjectiveCheckOutputFlag bool
}

func NewMeetingAnalyzeOutputBuilder() *MeetingAnalyzeOutputBuilder {
	builder := &MeetingAnalyzeOutputBuilder{}
	return builder
}

// 会议号
//
// 示例值：1
func (builder *MeetingAnalyzeOutputBuilder) MeetingId(meetingId string) *MeetingAnalyzeOutputBuilder {
	builder.meetingId = meetingId
	builder.meetingIdFlag = true
	return builder
}

// 状态码
//
// 示例值：0
func (builder *MeetingAnalyzeOutputBuilder) CheckStatusCode(checkStatusCode int) *MeetingAnalyzeOutputBuilder {
	builder.checkStatusCode = checkStatusCode
	builder.checkStatusCodeFlag = true
	return builder
}

// 客观分析结果
//
// 示例值：
func (builder *MeetingAnalyzeOutputBuilder) ObjectiveCheckOutput(objectiveCheckOutput *ObjectiveCheckOutput) *MeetingAnalyzeOutputBuilder {
	builder.objectiveCheckOutput = objectiveCheckOutput
	builder.objectiveCheckOutputFlag = true
	return builder
}

// 主观分析结果
//
// 示例值：
func (builder *MeetingAnalyzeOutputBuilder) SubjectiveCheckOutput(subjectiveCheckOutput *SubjectiveCheckOutput) *MeetingAnalyzeOutputBuilder {
	builder.subjectiveCheckOutput = subjectiveCheckOutput
	builder.subjectiveCheckOutputFlag = true
	return builder
}

func (builder *MeetingAnalyzeOutputBuilder) Build() *MeetingAnalyzeOutput {
	req := &MeetingAnalyzeOutput{}
	if builder.meetingIdFlag {
		req.MeetingId = &builder.meetingId

	}
	if builder.checkStatusCodeFlag {
		req.CheckStatusCode = &builder.checkStatusCode

	}
	if builder.objectiveCheckOutputFlag {
		req.ObjectiveCheckOutput = builder.objectiveCheckOutput
	}
	if builder.subjectiveCheckOutputFlag {
		req.SubjectiveCheckOutput = builder.subjectiveCheckOutput
	}
	return req
}

type MeetingEventMeeting struct {
	Id *string `json:"id,omitempty"` // 会议ID（视频会议的唯一标识，视频会议开始后才会产生）

	Topic *string `json:"topic,omitempty"` // 会议主题

	MeetingNo *string `json:"meeting_no,omitempty"` // 9位会议号（飞书用户可通过输入9位会议号快捷入会）

	MeetingSource *int `json:"meeting_source,omitempty"` // 会议创建源

	StartTime *string `json:"start_time,omitempty"` // 会议开始时间（unix时间，单位sec）

	EndTime *string `json:"end_time,omitempty"` // 会议结束时间（unix时间，单位sec）

	HostUser *MeetingEventUser `json:"host_user,omitempty"` // 会议主持人

	Owner *MeetingEventUser `json:"owner,omitempty"` // 会议拥有者

	CalendarEventId *string `json:"calendar_event_id,omitempty"` // 日程实体的唯一标志

	MeetingSubType *int `json:"meeting_sub_type,omitempty"` // 会议子类型

	SecuritySetting *MeetingSecuritySetting `json:"security_setting,omitempty"` // 会议安全设置

	WebinarSetting *MeetingWebinarSetting `json:"webinar_setting,omitempty"` // 研讨会相关设置
}

type MeetingEventMeetingBuilder struct {
	id     string // 会议ID（视频会议的唯一标识，视频会议开始后才会产生）
	idFlag bool

	topic     string // 会议主题
	topicFlag bool

	meetingNo     string // 9位会议号（飞书用户可通过输入9位会议号快捷入会）
	meetingNoFlag bool

	meetingSource     int // 会议创建源
	meetingSourceFlag bool

	startTime     string // 会议开始时间（unix时间，单位sec）
	startTimeFlag bool

	endTime     string // 会议结束时间（unix时间，单位sec）
	endTimeFlag bool

	hostUser     *MeetingEventUser // 会议主持人
	hostUserFlag bool

	owner     *MeetingEventUser // 会议拥有者
	ownerFlag bool

	calendarEventId     string // 日程实体的唯一标志
	calendarEventIdFlag bool

	meetingSubType     int // 会议子类型
	meetingSubTypeFlag bool

	securitySetting     *MeetingSecuritySetting // 会议安全设置
	securitySettingFlag bool

	webinarSetting     *MeetingWebinarSetting // 研讨会相关设置
	webinarSettingFlag bool
}

func NewMeetingEventMeetingBuilder() *MeetingEventMeetingBuilder {
	builder := &MeetingEventMeetingBuilder{}
	return builder
}

// 会议ID（视频会议的唯一标识，视频会议开始后才会产生）
//
// 示例值：6911188411934433028
func (builder *MeetingEventMeetingBuilder) Id(id string) *MeetingEventMeetingBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 会议主题
//
// 示例值：my meeting
func (builder *MeetingEventMeetingBuilder) Topic(topic string) *MeetingEventMeetingBuilder {
	builder.topic = topic
	builder.topicFlag = true
	return builder
}

// 9位会议号（飞书用户可通过输入9位会议号快捷入会）
//
// 示例值：235812466
func (builder *MeetingEventMeetingBuilder) MeetingNo(meetingNo string) *MeetingEventMeetingBuilder {
	builder.meetingNo = meetingNo
	builder.meetingNoFlag = true
	return builder
}

// 会议创建源
//
// 示例值：1
func (builder *MeetingEventMeetingBuilder) MeetingSource(meetingSource int) *MeetingEventMeetingBuilder {
	builder.meetingSource = meetingSource
	builder.meetingSourceFlag = true
	return builder
}

// 会议开始时间（unix时间，单位sec）
//
// 示例值：1608883322
func (builder *MeetingEventMeetingBuilder) StartTime(startTime string) *MeetingEventMeetingBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 会议结束时间（unix时间，单位sec）
//
// 示例值：1608883899
func (builder *MeetingEventMeetingBuilder) EndTime(endTime string) *MeetingEventMeetingBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 会议主持人
//
// 示例值：
func (builder *MeetingEventMeetingBuilder) HostUser(hostUser *MeetingEventUser) *MeetingEventMeetingBuilder {
	builder.hostUser = hostUser
	builder.hostUserFlag = true
	return builder
}

// 会议拥有者
//
// 示例值：
func (builder *MeetingEventMeetingBuilder) Owner(owner *MeetingEventUser) *MeetingEventMeetingBuilder {
	builder.owner = owner
	builder.ownerFlag = true
	return builder
}

// 日程实体的唯一标志
//
// 示例值：efa67a98-06a8-4df5-8559-746c8f4477ef_0
func (builder *MeetingEventMeetingBuilder) CalendarEventId(calendarEventId string) *MeetingEventMeetingBuilder {
	builder.calendarEventId = calendarEventId
	builder.calendarEventIdFlag = true
	return builder
}

// 会议子类型
//
// 示例值：1
func (builder *MeetingEventMeetingBuilder) MeetingSubType(meetingSubType int) *MeetingEventMeetingBuilder {
	builder.meetingSubType = meetingSubType
	builder.meetingSubTypeFlag = true
	return builder
}

// 会议安全设置
//
// 示例值：
func (builder *MeetingEventMeetingBuilder) SecuritySetting(securitySetting *MeetingSecuritySetting) *MeetingEventMeetingBuilder {
	builder.securitySetting = securitySetting
	builder.securitySettingFlag = true
	return builder
}

// 研讨会相关设置
//
// 示例值：
func (builder *MeetingEventMeetingBuilder) WebinarSetting(webinarSetting *MeetingWebinarSetting) *MeetingEventMeetingBuilder {
	builder.webinarSetting = webinarSetting
	builder.webinarSettingFlag = true
	return builder
}

func (builder *MeetingEventMeetingBuilder) Build() *MeetingEventMeeting {
	req := &MeetingEventMeeting{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.topicFlag {
		req.Topic = &builder.topic

	}
	if builder.meetingNoFlag {
		req.MeetingNo = &builder.meetingNo

	}
	if builder.meetingSourceFlag {
		req.MeetingSource = &builder.meetingSource

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.hostUserFlag {
		req.HostUser = builder.hostUser
	}
	if builder.ownerFlag {
		req.Owner = builder.owner
	}
	if builder.calendarEventIdFlag {
		req.CalendarEventId = &builder.calendarEventId

	}
	if builder.meetingSubTypeFlag {
		req.MeetingSubType = &builder.meetingSubType

	}
	if builder.securitySettingFlag {
		req.SecuritySetting = builder.securitySetting
	}
	if builder.webinarSettingFlag {
		req.WebinarSetting = builder.webinarSetting
	}
	return req
}

type MeetingEventUser struct {
	Id *UserId `json:"id,omitempty"` // 用户 ID

	UserRole *int `json:"user_role,omitempty"` // 用户会中角色

	UserType *int `json:"user_type,omitempty"` // 用户类型
}

type MeetingEventUserBuilder struct {
	id     *UserId // 用户 ID
	idFlag bool

	userRole     int // 用户会中角色
	userRoleFlag bool

	userType     int // 用户类型
	userTypeFlag bool
}

func NewMeetingEventUserBuilder() *MeetingEventUserBuilder {
	builder := &MeetingEventUserBuilder{}
	return builder
}

// 用户 ID
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *MeetingEventUserBuilder) Id(id *UserId) *MeetingEventUserBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 用户会中角色
//
// 示例值：1
func (builder *MeetingEventUserBuilder) UserRole(userRole int) *MeetingEventUserBuilder {
	builder.userRole = userRole
	builder.userRoleFlag = true
	return builder
}

// 用户类型
//
// 示例值：1
func (builder *MeetingEventUserBuilder) UserType(userType int) *MeetingEventUserBuilder {
	builder.userType = userType
	builder.userTypeFlag = true
	return builder
}

func (builder *MeetingEventUserBuilder) Build() *MeetingEventUser {
	req := &MeetingEventUser{}
	if builder.idFlag {
		req.Id = builder.id
	}
	if builder.userRoleFlag {
		req.UserRole = &builder.userRole

	}
	if builder.userTypeFlag {
		req.UserType = &builder.userType

	}
	return req
}

type MeetingInfo struct {
	MeetingId *string `json:"meeting_id,omitempty"` // 9位会议号

	MeetingTopic *string `json:"meeting_topic,omitempty"` // 会议主题

	MeetingType *int `json:"meeting_type,omitempty"` // 会议类型

	Organizer *string `json:"organizer,omitempty"` // 组织者

	Department *string `json:"department,omitempty"` // 部门

	UserId *string `json:"user_id,omitempty"` // 用户ID

	EmployeeId *string `json:"employee_id,omitempty"` // 工号

	Email *string `json:"email,omitempty"` // 邮箱

	Mobile *string `json:"mobile,omitempty"` // 手机

	MeetingStartTime *string `json:"meeting_start_time,omitempty"` // 会议开始时间

	MeetingEndTime *string `json:"meeting_end_time,omitempty"` // 会议结束时间

	MeetingDuration *string `json:"meeting_duration,omitempty"` // 会议持续时间

	NumberOfParticipants *string `json:"number_of_participants,omitempty"` // 参会人数（网络研讨会时，为嘉宾人数）

	NumberOfDevices *string `json:"number_of_devices,omitempty"` // 累计入会设备数

	Audio *bool `json:"audio,omitempty"` // 音频

	Video *bool `json:"video,omitempty"` // 视频

	Sharing *bool `json:"sharing,omitempty"` // 共享

	Recording *bool `json:"recording,omitempty"` // 录制

	Telephone *bool `json:"telephone,omitempty"` // 电话

	ReservedRooms []*ReservedRoom `json:"reserved_rooms,omitempty"` // 关联会议室列表

	HasRelatedDocument *bool `json:"has_related_document,omitempty"` // 是否有关联文档和纪要

	AiNote *bool `json:"ai_note,omitempty"` // 是否使用AI纪要

	IsExternal *bool `json:"is_external,omitempty"` // 是否为外部会议

	MeetingSubtype *int `json:"meeting_subtype,omitempty"` // 会议子类型

	MeetingInstanceId *string `json:"meeting_instance_id,omitempty"` // 唯一会议ID

	NumberOfWebinarViewers *string `json:"number_of_webinar_viewers,omitempty"` // 网络研讨会观众人数
}

type MeetingInfoBuilder struct {
	meetingId     string // 9位会议号
	meetingIdFlag bool

	meetingTopic     string // 会议主题
	meetingTopicFlag bool

	meetingType     int // 会议类型
	meetingTypeFlag bool

	organizer     string // 组织者
	organizerFlag bool

	department     string // 部门
	departmentFlag bool

	userId     string // 用户ID
	userIdFlag bool

	employeeId     string // 工号
	employeeIdFlag bool

	email     string // 邮箱
	emailFlag bool

	mobile     string // 手机
	mobileFlag bool

	meetingStartTime     string // 会议开始时间
	meetingStartTimeFlag bool

	meetingEndTime     string // 会议结束时间
	meetingEndTimeFlag bool

	meetingDuration     string // 会议持续时间
	meetingDurationFlag bool

	numberOfParticipants     string // 参会人数（网络研讨会时，为嘉宾人数）
	numberOfParticipantsFlag bool

	numberOfDevices     string // 累计入会设备数
	numberOfDevicesFlag bool

	audio     bool // 音频
	audioFlag bool

	video     bool // 视频
	videoFlag bool

	sharing     bool // 共享
	sharingFlag bool

	recording     bool // 录制
	recordingFlag bool

	telephone     bool // 电话
	telephoneFlag bool

	reservedRooms     []*ReservedRoom // 关联会议室列表
	reservedRoomsFlag bool

	hasRelatedDocument     bool // 是否有关联文档和纪要
	hasRelatedDocumentFlag bool

	aiNote     bool // 是否使用AI纪要
	aiNoteFlag bool

	isExternal     bool // 是否为外部会议
	isExternalFlag bool

	meetingSubtype     int // 会议子类型
	meetingSubtypeFlag bool

	meetingInstanceId     string // 唯一会议ID
	meetingInstanceIdFlag bool

	numberOfWebinarViewers     string // 网络研讨会观众人数
	numberOfWebinarViewersFlag bool
}

func NewMeetingInfoBuilder() *MeetingInfoBuilder {
	builder := &MeetingInfoBuilder{}
	return builder
}

// 9位会议号
//
// 示例值：705605196
func (builder *MeetingInfoBuilder) MeetingId(meetingId string) *MeetingInfoBuilder {
	builder.meetingId = meetingId
	builder.meetingIdFlag = true
	return builder
}

// 会议主题
//
// 示例值：讨论会
func (builder *MeetingInfoBuilder) MeetingTopic(meetingTopic string) *MeetingInfoBuilder {
	builder.meetingTopic = meetingTopic
	builder.meetingTopicFlag = true
	return builder
}

// 会议类型
//
// 示例值：1
func (builder *MeetingInfoBuilder) MeetingType(meetingType int) *MeetingInfoBuilder {
	builder.meetingType = meetingType
	builder.meetingTypeFlag = true
	return builder
}

// 组织者
//
// 示例值：kehan
func (builder *MeetingInfoBuilder) Organizer(organizer string) *MeetingInfoBuilder {
	builder.organizer = organizer
	builder.organizerFlag = true
	return builder
}

// 部门
//
// 示例值：development
func (builder *MeetingInfoBuilder) Department(department string) *MeetingInfoBuilder {
	builder.department = department
	builder.departmentFlag = true
	return builder
}

// 用户ID
//
// 示例值：92f879
func (builder *MeetingInfoBuilder) UserId(userId string) *MeetingInfoBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 工号
//
// 示例值：202105149765
func (builder *MeetingInfoBuilder) EmployeeId(employeeId string) *MeetingInfoBuilder {
	builder.employeeId = employeeId
	builder.employeeIdFlag = true
	return builder
}

// 邮箱
//
// 示例值：xxxx@163.com
func (builder *MeetingInfoBuilder) Email(email string) *MeetingInfoBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 手机
//
// 示例值：021-673288
func (builder *MeetingInfoBuilder) Mobile(mobile string) *MeetingInfoBuilder {
	builder.mobile = mobile
	builder.mobileFlag = true
	return builder
}

// 会议开始时间
//
// 示例值：2022.12.23 11:16:59 (GMT+08:00)
func (builder *MeetingInfoBuilder) MeetingStartTime(meetingStartTime string) *MeetingInfoBuilder {
	builder.meetingStartTime = meetingStartTime
	builder.meetingStartTimeFlag = true
	return builder
}

// 会议结束时间
//
// 示例值：2022.12.23 11:18:51 (GMT+08:00)
func (builder *MeetingInfoBuilder) MeetingEndTime(meetingEndTime string) *MeetingInfoBuilder {
	builder.meetingEndTime = meetingEndTime
	builder.meetingEndTimeFlag = true
	return builder
}

// 会议持续时间
//
// 示例值：00:01:52
func (builder *MeetingInfoBuilder) MeetingDuration(meetingDuration string) *MeetingInfoBuilder {
	builder.meetingDuration = meetingDuration
	builder.meetingDurationFlag = true
	return builder
}

// 参会人数（网络研讨会时，为嘉宾人数）
//
// 示例值：1
func (builder *MeetingInfoBuilder) NumberOfParticipants(numberOfParticipants string) *MeetingInfoBuilder {
	builder.numberOfParticipants = numberOfParticipants
	builder.numberOfParticipantsFlag = true
	return builder
}

// 累计入会设备数
//
// 示例值：1
func (builder *MeetingInfoBuilder) NumberOfDevices(numberOfDevices string) *MeetingInfoBuilder {
	builder.numberOfDevices = numberOfDevices
	builder.numberOfDevicesFlag = true
	return builder
}

// 音频
//
// 示例值：true
func (builder *MeetingInfoBuilder) Audio(audio bool) *MeetingInfoBuilder {
	builder.audio = audio
	builder.audioFlag = true
	return builder
}

// 视频
//
// 示例值：true
func (builder *MeetingInfoBuilder) Video(video bool) *MeetingInfoBuilder {
	builder.video = video
	builder.videoFlag = true
	return builder
}

// 共享
//
// 示例值：false
func (builder *MeetingInfoBuilder) Sharing(sharing bool) *MeetingInfoBuilder {
	builder.sharing = sharing
	builder.sharingFlag = true
	return builder
}

// 录制
//
// 示例值：false
func (builder *MeetingInfoBuilder) Recording(recording bool) *MeetingInfoBuilder {
	builder.recording = recording
	builder.recordingFlag = true
	return builder
}

// 电话
//
// 示例值：false
func (builder *MeetingInfoBuilder) Telephone(telephone bool) *MeetingInfoBuilder {
	builder.telephone = telephone
	builder.telephoneFlag = true
	return builder
}

// 关联会议室列表
//
// 示例值：
func (builder *MeetingInfoBuilder) ReservedRooms(reservedRooms []*ReservedRoom) *MeetingInfoBuilder {
	builder.reservedRooms = reservedRooms
	builder.reservedRoomsFlag = true
	return builder
}

// 是否有关联文档和纪要
//
// 示例值：false
func (builder *MeetingInfoBuilder) HasRelatedDocument(hasRelatedDocument bool) *MeetingInfoBuilder {
	builder.hasRelatedDocument = hasRelatedDocument
	builder.hasRelatedDocumentFlag = true
	return builder
}

// 是否使用AI纪要
//
// 示例值：false
func (builder *MeetingInfoBuilder) AiNote(aiNote bool) *MeetingInfoBuilder {
	builder.aiNote = aiNote
	builder.aiNoteFlag = true
	return builder
}

// 是否为外部会议
//
// 示例值：false
func (builder *MeetingInfoBuilder) IsExternal(isExternal bool) *MeetingInfoBuilder {
	builder.isExternal = isExternal
	builder.isExternalFlag = true
	return builder
}

// 会议子类型
//
// 示例值：1
func (builder *MeetingInfoBuilder) MeetingSubtype(meetingSubtype int) *MeetingInfoBuilder {
	builder.meetingSubtype = meetingSubtype
	builder.meetingSubtypeFlag = true
	return builder
}

// 唯一会议ID
//
// 示例值：7529416531681214468
func (builder *MeetingInfoBuilder) MeetingInstanceId(meetingInstanceId string) *MeetingInfoBuilder {
	builder.meetingInstanceId = meetingInstanceId
	builder.meetingInstanceIdFlag = true
	return builder
}

// 网络研讨会观众人数
//
// 示例值：1
func (builder *MeetingInfoBuilder) NumberOfWebinarViewers(numberOfWebinarViewers string) *MeetingInfoBuilder {
	builder.numberOfWebinarViewers = numberOfWebinarViewers
	builder.numberOfWebinarViewersFlag = true
	return builder
}

func (builder *MeetingInfoBuilder) Build() *MeetingInfo {
	req := &MeetingInfo{}
	if builder.meetingIdFlag {
		req.MeetingId = &builder.meetingId

	}
	if builder.meetingTopicFlag {
		req.MeetingTopic = &builder.meetingTopic

	}
	if builder.meetingTypeFlag {
		req.MeetingType = &builder.meetingType

	}
	if builder.organizerFlag {
		req.Organizer = &builder.organizer

	}
	if builder.departmentFlag {
		req.Department = &builder.department

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.employeeIdFlag {
		req.EmployeeId = &builder.employeeId

	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.mobileFlag {
		req.Mobile = &builder.mobile

	}
	if builder.meetingStartTimeFlag {
		req.MeetingStartTime = &builder.meetingStartTime

	}
	if builder.meetingEndTimeFlag {
		req.MeetingEndTime = &builder.meetingEndTime

	}
	if builder.meetingDurationFlag {
		req.MeetingDuration = &builder.meetingDuration

	}
	if builder.numberOfParticipantsFlag {
		req.NumberOfParticipants = &builder.numberOfParticipants

	}
	if builder.numberOfDevicesFlag {
		req.NumberOfDevices = &builder.numberOfDevices

	}
	if builder.audioFlag {
		req.Audio = &builder.audio

	}
	if builder.videoFlag {
		req.Video = &builder.video

	}
	if builder.sharingFlag {
		req.Sharing = &builder.sharing

	}
	if builder.recordingFlag {
		req.Recording = &builder.recording

	}
	if builder.telephoneFlag {
		req.Telephone = &builder.telephone

	}
	if builder.reservedRoomsFlag {
		req.ReservedRooms = builder.reservedRooms
	}
	if builder.hasRelatedDocumentFlag {
		req.HasRelatedDocument = &builder.hasRelatedDocument

	}
	if builder.aiNoteFlag {
		req.AiNote = &builder.aiNote

	}
	if builder.isExternalFlag {
		req.IsExternal = &builder.isExternal

	}
	if builder.meetingSubtypeFlag {
		req.MeetingSubtype = &builder.meetingSubtype

	}
	if builder.meetingInstanceIdFlag {
		req.MeetingInstanceId = &builder.meetingInstanceId

	}
	if builder.numberOfWebinarViewersFlag {
		req.NumberOfWebinarViewers = &builder.numberOfWebinarViewers

	}
	return req
}

type MeetingInviteStatus struct {
	Id *string `json:"id,omitempty"` // 用户ID

	UserType *int `json:"user_type,omitempty"` // 用户类型

	Status *int `json:"status,omitempty"` // 邀请结果
}

type MeetingInviteStatusBuilder struct {
	id     string // 用户ID
	idFlag bool

	userType     int // 用户类型
	userTypeFlag bool

	status     int // 邀请结果
	statusFlag bool
}

func NewMeetingInviteStatusBuilder() *MeetingInviteStatusBuilder {
	builder := &MeetingInviteStatusBuilder{}
	return builder
}

// 用户ID
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *MeetingInviteStatusBuilder) Id(id string) *MeetingInviteStatusBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 用户类型
//
// 示例值：1
func (builder *MeetingInviteStatusBuilder) UserType(userType int) *MeetingInviteStatusBuilder {
	builder.userType = userType
	builder.userTypeFlag = true
	return builder
}

// 邀请结果
//
// 示例值：1
func (builder *MeetingInviteStatusBuilder) Status(status int) *MeetingInviteStatusBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

func (builder *MeetingInviteStatusBuilder) Build() *MeetingInviteStatus {
	req := &MeetingInviteStatus{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.userTypeFlag {
		req.UserType = &builder.userType

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	return req
}

type MeetingNamedUser struct {
	Id *string `json:"id,omitempty"` // 用户ID

	UserType *int `json:"user_type,omitempty"` // 用户类型

	InMeetingName *string `json:"in_meeting_name,omitempty"` // 会中修改的名字
}

type MeetingNamedUserBuilder struct {
	id     string // 用户ID
	idFlag bool

	userType     int // 用户类型
	userTypeFlag bool

	inMeetingName     string // 会中修改的名字
	inMeetingNameFlag bool
}

func NewMeetingNamedUserBuilder() *MeetingNamedUserBuilder {
	builder := &MeetingNamedUserBuilder{}
	return builder
}

// 用户ID
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *MeetingNamedUserBuilder) Id(id string) *MeetingNamedUserBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 用户类型
//
// 示例值：1
func (builder *MeetingNamedUserBuilder) UserType(userType int) *MeetingNamedUserBuilder {
	builder.userType = userType
	builder.userTypeFlag = true
	return builder
}

// 会中修改的名字
//
// 示例值：指挥官
func (builder *MeetingNamedUserBuilder) InMeetingName(inMeetingName string) *MeetingNamedUserBuilder {
	builder.inMeetingName = inMeetingName
	builder.inMeetingNameFlag = true
	return builder
}

func (builder *MeetingNamedUserBuilder) Build() *MeetingNamedUser {
	req := &MeetingNamedUser{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.userTypeFlag {
		req.UserType = &builder.userType

	}
	if builder.inMeetingNameFlag {
		req.InMeetingName = &builder.inMeetingName

	}
	return req
}

type MeetingParticipant struct {
	Id *string `json:"id,omitempty"` // 用户ID

	FirstJoinTime *string `json:"first_join_time,omitempty"` // 首次入会时间，秒级Unix时间戳

	FinalLeaveTime *string `json:"final_leave_time,omitempty"` // 最终离会时间，秒级Unix时间戳

	InMeetingDuration *string `json:"in_meeting_duration,omitempty"` // 累计在会中时间，时间单位：秒

	UserType *int `json:"user_type,omitempty"` // 用户类型

	IsHost *bool `json:"is_host,omitempty"` // 是否为主持人

	IsCohost *bool `json:"is_cohost,omitempty"` // 是否为联席主持人

	IsExternal *bool `json:"is_external,omitempty"` // 是否为外部参会人

	Status *int `json:"status,omitempty"` // 参会人状态
}

type MeetingParticipantBuilder struct {
	id     string // 用户ID
	idFlag bool

	firstJoinTime     string // 首次入会时间，秒级Unix时间戳
	firstJoinTimeFlag bool

	finalLeaveTime     string // 最终离会时间，秒级Unix时间戳
	finalLeaveTimeFlag bool

	inMeetingDuration     string // 累计在会中时间，时间单位：秒
	inMeetingDurationFlag bool

	userType     int // 用户类型
	userTypeFlag bool

	isHost     bool // 是否为主持人
	isHostFlag bool

	isCohost     bool // 是否为联席主持人
	isCohostFlag bool

	isExternal     bool // 是否为外部参会人
	isExternalFlag bool

	status     int // 参会人状态
	statusFlag bool
}

func NewMeetingParticipantBuilder() *MeetingParticipantBuilder {
	builder := &MeetingParticipantBuilder{}
	return builder
}

// 用户ID
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *MeetingParticipantBuilder) Id(id string) *MeetingParticipantBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 首次入会时间，秒级Unix时间戳
//
// 示例值：1624438144
func (builder *MeetingParticipantBuilder) FirstJoinTime(firstJoinTime string) *MeetingParticipantBuilder {
	builder.firstJoinTime = firstJoinTime
	builder.firstJoinTimeFlag = true
	return builder
}

// 最终离会时间，秒级Unix时间戳
//
// 示例值：1624438144
func (builder *MeetingParticipantBuilder) FinalLeaveTime(finalLeaveTime string) *MeetingParticipantBuilder {
	builder.finalLeaveTime = finalLeaveTime
	builder.finalLeaveTimeFlag = true
	return builder
}

// 累计在会中时间，时间单位：秒
//
// 示例值：123
func (builder *MeetingParticipantBuilder) InMeetingDuration(inMeetingDuration string) *MeetingParticipantBuilder {
	builder.inMeetingDuration = inMeetingDuration
	builder.inMeetingDurationFlag = true
	return builder
}

// 用户类型
//
// 示例值：1
func (builder *MeetingParticipantBuilder) UserType(userType int) *MeetingParticipantBuilder {
	builder.userType = userType
	builder.userTypeFlag = true
	return builder
}

// 是否为主持人
//
// 示例值：true
func (builder *MeetingParticipantBuilder) IsHost(isHost bool) *MeetingParticipantBuilder {
	builder.isHost = isHost
	builder.isHostFlag = true
	return builder
}

// 是否为联席主持人
//
// 示例值：false
func (builder *MeetingParticipantBuilder) IsCohost(isCohost bool) *MeetingParticipantBuilder {
	builder.isCohost = isCohost
	builder.isCohostFlag = true
	return builder
}

// 是否为外部参会人
//
// 示例值：false
func (builder *MeetingParticipantBuilder) IsExternal(isExternal bool) *MeetingParticipantBuilder {
	builder.isExternal = isExternal
	builder.isExternalFlag = true
	return builder
}

// 参会人状态
//
// 示例值：2
func (builder *MeetingParticipantBuilder) Status(status int) *MeetingParticipantBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

func (builder *MeetingParticipantBuilder) Build() *MeetingParticipant {
	req := &MeetingParticipant{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.firstJoinTimeFlag {
		req.FirstJoinTime = &builder.firstJoinTime

	}
	if builder.finalLeaveTimeFlag {
		req.FinalLeaveTime = &builder.finalLeaveTime

	}
	if builder.inMeetingDurationFlag {
		req.InMeetingDuration = &builder.inMeetingDuration

	}
	if builder.userTypeFlag {
		req.UserType = &builder.userType

	}
	if builder.isHostFlag {
		req.IsHost = &builder.isHost

	}
	if builder.isCohostFlag {
		req.IsCohost = &builder.isCohost

	}
	if builder.isExternalFlag {
		req.IsExternal = &builder.isExternal

	}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	return req
}

type MeetingParticipantResult struct {
	Id *string `json:"id,omitempty"` // 用户ID

	UserType *int `json:"user_type,omitempty"` // 用户类型

	Result *int `json:"result,omitempty"` // 移除结果
}

type MeetingParticipantResultBuilder struct {
	id     string // 用户ID
	idFlag bool

	userType     int // 用户类型
	userTypeFlag bool

	result     int // 移除结果
	resultFlag bool
}

func NewMeetingParticipantResultBuilder() *MeetingParticipantResultBuilder {
	builder := &MeetingParticipantResultBuilder{}
	return builder
}

// 用户ID
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *MeetingParticipantResultBuilder) Id(id string) *MeetingParticipantResultBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 用户类型
//
// 示例值：1
func (builder *MeetingParticipantResultBuilder) UserType(userType int) *MeetingParticipantResultBuilder {
	builder.userType = userType
	builder.userTypeFlag = true
	return builder
}

// 移除结果
//
// 示例值：1
func (builder *MeetingParticipantResultBuilder) Result(result int) *MeetingParticipantResultBuilder {
	builder.result = result
	builder.resultFlag = true
	return builder
}

func (builder *MeetingParticipantResultBuilder) Build() *MeetingParticipantResult {
	req := &MeetingParticipantResult{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.userTypeFlag {
		req.UserType = &builder.userType

	}
	if builder.resultFlag {
		req.Result = &builder.result

	}
	return req
}

type MeetingRelatedArtifacts struct {
	NoteDocToken *string `json:"note_doc_token,omitempty"` // 会议纪要Doc Token

	VerbatimDocToken *string `json:"verbatim_doc_token,omitempty"` // 会议逐字稿Doc Token
}

type MeetingRelatedArtifactsBuilder struct {
	noteDocToken     string // 会议纪要Doc Token
	noteDocTokenFlag bool

	verbatimDocToken     string // 会议逐字稿Doc Token
	verbatimDocTokenFlag bool
}

func NewMeetingRelatedArtifactsBuilder() *MeetingRelatedArtifactsBuilder {
	builder := &MeetingRelatedArtifactsBuilder{}
	return builder
}

// 会议纪要Doc Token
//
// 示例值：J1X5wG7bFilbFDk42VNdhfS6n6g
func (builder *MeetingRelatedArtifactsBuilder) NoteDocToken(noteDocToken string) *MeetingRelatedArtifactsBuilder {
	builder.noteDocToken = noteDocToken
	builder.noteDocTokenFlag = true
	return builder
}

// 会议逐字稿Doc Token
//
// 示例值：J1X5wG7bFilbFDk42VNdhfS6n6g
func (builder *MeetingRelatedArtifactsBuilder) VerbatimDocToken(verbatimDocToken string) *MeetingRelatedArtifactsBuilder {
	builder.verbatimDocToken = verbatimDocToken
	builder.verbatimDocTokenFlag = true
	return builder
}

func (builder *MeetingRelatedArtifactsBuilder) Build() *MeetingRelatedArtifacts {
	req := &MeetingRelatedArtifacts{}
	if builder.noteDocTokenFlag {
		req.NoteDocToken = &builder.noteDocToken

	}
	if builder.verbatimDocTokenFlag {
		req.VerbatimDocToken = &builder.verbatimDocToken

	}
	return req
}

type MeetingSecuritySetting struct {
	SecurityLevel *int `json:"security_level,omitempty"` // 安全级别

	GroupIds []string `json:"group_ids,omitempty"` // 允许入会的群组ID列表

	UserIds []*UserId `json:"user_ids,omitempty"` // 允许入会的用户ID列表

	RoomIds []string `json:"room_ids,omitempty"` // 允许入会的会议室ID列表

	HasSetSecurityContactsAndGroup *bool `json:"has_set_security_contacts_and_group,omitempty"` // 是否设置了仅指定联系人和群组可参会
}

type MeetingSecuritySettingBuilder struct {
	securityLevel     int // 安全级别
	securityLevelFlag bool

	groupIds     []string // 允许入会的群组ID列表
	groupIdsFlag bool

	userIds     []*UserId // 允许入会的用户ID列表
	userIdsFlag bool

	roomIds     []string // 允许入会的会议室ID列表
	roomIdsFlag bool

	hasSetSecurityContactsAndGroup     bool // 是否设置了仅指定联系人和群组可参会
	hasSetSecurityContactsAndGroupFlag bool
}

func NewMeetingSecuritySettingBuilder() *MeetingSecuritySettingBuilder {
	builder := &MeetingSecuritySettingBuilder{}
	return builder
}

// 安全级别
//
// 示例值：1
func (builder *MeetingSecuritySettingBuilder) SecurityLevel(securityLevel int) *MeetingSecuritySettingBuilder {
	builder.securityLevel = securityLevel
	builder.securityLevelFlag = true
	return builder
}

// 允许入会的群组ID列表
//
// 示例值：
func (builder *MeetingSecuritySettingBuilder) GroupIds(groupIds []string) *MeetingSecuritySettingBuilder {
	builder.groupIds = groupIds
	builder.groupIdsFlag = true
	return builder
}

// 允许入会的用户ID列表
//
// 示例值：
func (builder *MeetingSecuritySettingBuilder) UserIds(userIds []*UserId) *MeetingSecuritySettingBuilder {
	builder.userIds = userIds
	builder.userIdsFlag = true
	return builder
}

// 允许入会的会议室ID列表
//
// 示例值：
func (builder *MeetingSecuritySettingBuilder) RoomIds(roomIds []string) *MeetingSecuritySettingBuilder {
	builder.roomIds = roomIds
	builder.roomIdsFlag = true
	return builder
}

// 是否设置了仅指定联系人和群组可参会
//
// 示例值：true
func (builder *MeetingSecuritySettingBuilder) HasSetSecurityContactsAndGroup(hasSetSecurityContactsAndGroup bool) *MeetingSecuritySettingBuilder {
	builder.hasSetSecurityContactsAndGroup = hasSetSecurityContactsAndGroup
	builder.hasSetSecurityContactsAndGroupFlag = true
	return builder
}

func (builder *MeetingSecuritySettingBuilder) Build() *MeetingSecuritySetting {
	req := &MeetingSecuritySetting{}
	if builder.securityLevelFlag {
		req.SecurityLevel = &builder.securityLevel

	}
	if builder.groupIdsFlag {
		req.GroupIds = builder.groupIds
	}
	if builder.userIdsFlag {
		req.UserIds = builder.userIds
	}
	if builder.roomIdsFlag {
		req.RoomIds = builder.roomIds
	}
	if builder.hasSetSecurityContactsAndGroupFlag {
		req.HasSetSecurityContactsAndGroup = &builder.hasSetSecurityContactsAndGroup

	}
	return req
}

type MeetingSubtitle struct {
	Content *string `json:"content,omitempty"` // 字幕文本内容

	Language *string `json:"language,omitempty"` // 语种

	SpeakerUserId *int `json:"speaker_user_id,omitempty"` // 用户 ID

	SpeakerDeviceId *int `json:"speaker_device_id,omitempty"` // 用户 DID

	SsdSpeaker *MeetingSubtitleSsdSpeaker `json:"ssd_speaker,omitempty"` // 说话人信息
}

type MeetingSubtitleBuilder struct {
	content     string // 字幕文本内容
	contentFlag bool

	language     string // 语种
	languageFlag bool

	speakerUserId     int // 用户 ID
	speakerUserIdFlag bool

	speakerDeviceId     int // 用户 DID
	speakerDeviceIdFlag bool

	ssdSpeaker     *MeetingSubtitleSsdSpeaker // 说话人信息
	ssdSpeakerFlag bool
}

func NewMeetingSubtitleBuilder() *MeetingSubtitleBuilder {
	builder := &MeetingSubtitleBuilder{}
	return builder
}

// 字幕文本内容
//
// 示例值：你好。
func (builder *MeetingSubtitleBuilder) Content(content string) *MeetingSubtitleBuilder {
	builder.content = content
	builder.contentFlag = true
	return builder
}

// 语种
//
// 示例值：zh
func (builder *MeetingSubtitleBuilder) Language(language string) *MeetingSubtitleBuilder {
	builder.language = language
	builder.languageFlag = true
	return builder
}

// 用户 ID
//
// 示例值：123456789
func (builder *MeetingSubtitleBuilder) SpeakerUserId(speakerUserId int) *MeetingSubtitleBuilder {
	builder.speakerUserId = speakerUserId
	builder.speakerUserIdFlag = true
	return builder
}

// 用户 DID
//
// 示例值：987654321
func (builder *MeetingSubtitleBuilder) SpeakerDeviceId(speakerDeviceId int) *MeetingSubtitleBuilder {
	builder.speakerDeviceId = speakerDeviceId
	builder.speakerDeviceIdFlag = true
	return builder
}

// 说话人信息
//
// 示例值：
func (builder *MeetingSubtitleBuilder) SsdSpeaker(ssdSpeaker *MeetingSubtitleSsdSpeaker) *MeetingSubtitleBuilder {
	builder.ssdSpeaker = ssdSpeaker
	builder.ssdSpeakerFlag = true
	return builder
}

func (builder *MeetingSubtitleBuilder) Build() *MeetingSubtitle {
	req := &MeetingSubtitle{}
	if builder.contentFlag {
		req.Content = &builder.content

	}
	if builder.languageFlag {
		req.Language = &builder.language

	}
	if builder.speakerUserIdFlag {
		req.SpeakerUserId = &builder.speakerUserId

	}
	if builder.speakerDeviceIdFlag {
		req.SpeakerDeviceId = &builder.speakerDeviceId

	}
	if builder.ssdSpeakerFlag {
		req.SsdSpeaker = builder.ssdSpeaker
	}
	return req
}

type MeetingSubtitleData struct {
	SegId *int `json:"seg_id,omitempty"` // 时间戳

	Subtitle *MeetingSubtitle `json:"subtitle,omitempty"` // 字幕
}

type MeetingSubtitleDataBuilder struct {
	segId     int // 时间戳
	segIdFlag bool

	subtitle     *MeetingSubtitle // 字幕
	subtitleFlag bool
}

func NewMeetingSubtitleDataBuilder() *MeetingSubtitleDataBuilder {
	builder := &MeetingSubtitleDataBuilder{}
	return builder
}

// 时间戳
//
// 示例值：9223372036854775807
func (builder *MeetingSubtitleDataBuilder) SegId(segId int) *MeetingSubtitleDataBuilder {
	builder.segId = segId
	builder.segIdFlag = true
	return builder
}

// 字幕
//
// 示例值：
func (builder *MeetingSubtitleDataBuilder) Subtitle(subtitle *MeetingSubtitle) *MeetingSubtitleDataBuilder {
	builder.subtitle = subtitle
	builder.subtitleFlag = true
	return builder
}

func (builder *MeetingSubtitleDataBuilder) Build() *MeetingSubtitleData {
	req := &MeetingSubtitleData{}
	if builder.segIdFlag {
		req.SegId = &builder.segId

	}
	if builder.subtitleFlag {
		req.Subtitle = builder.subtitle
	}
	return req
}

type MeetingSubtitleSsdSpeaker struct {
	UserId *string `json:"user_id,omitempty"` // 用户id

	SpeakerId *int `json:"speaker_id,omitempty"` // 说话人聚类结果

	SpeakerIdType *int `json:"speaker_id_type,omitempty"` // 说话人类型
}

type MeetingSubtitleSsdSpeakerBuilder struct {
	userId     string // 用户id
	userIdFlag bool

	speakerId     int // 说话人聚类结果
	speakerIdFlag bool

	speakerIdType     int // 说话人类型
	speakerIdTypeFlag bool
}

func NewMeetingSubtitleSsdSpeakerBuilder() *MeetingSubtitleSsdSpeakerBuilder {
	builder := &MeetingSubtitleSsdSpeakerBuilder{}
	return builder
}

// 用户id
//
// 示例值：
func (builder *MeetingSubtitleSsdSpeakerBuilder) UserId(userId string) *MeetingSubtitleSsdSpeakerBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 说话人聚类结果
//
// 示例值：1
func (builder *MeetingSubtitleSsdSpeakerBuilder) SpeakerId(speakerId int) *MeetingSubtitleSsdSpeakerBuilder {
	builder.speakerId = speakerId
	builder.speakerIdFlag = true
	return builder
}

// 说话人类型
//
// 示例值：
func (builder *MeetingSubtitleSsdSpeakerBuilder) SpeakerIdType(speakerIdType int) *MeetingSubtitleSsdSpeakerBuilder {
	builder.speakerIdType = speakerIdType
	builder.speakerIdTypeFlag = true
	return builder
}

func (builder *MeetingSubtitleSsdSpeakerBuilder) Build() *MeetingSubtitleSsdSpeaker {
	req := &MeetingSubtitleSsdSpeaker{}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.speakerIdFlag {
		req.SpeakerId = &builder.speakerId

	}
	if builder.speakerIdTypeFlag {
		req.SpeakerIdType = &builder.speakerIdType

	}
	return req
}

type MeetingUser struct {
	Id *string `json:"id,omitempty"` // 用户ID

	UserType *int `json:"user_type,omitempty"` // 用户类型
}

type MeetingUserBuilder struct {
	id     string // 用户ID
	idFlag bool

	userType     int // 用户类型
	userTypeFlag bool
}

func NewMeetingUserBuilder() *MeetingUserBuilder {
	builder := &MeetingUserBuilder{}
	return builder
}

// 用户ID
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *MeetingUserBuilder) Id(id string) *MeetingUserBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 用户类型
//
// 示例值：1
func (builder *MeetingUserBuilder) UserType(userType int) *MeetingUserBuilder {
	builder.userType = userType
	builder.userTypeFlag = true
	return builder
}

func (builder *MeetingUserBuilder) Build() *MeetingUser {
	req := &MeetingUser{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.userTypeFlag {
		req.UserType = &builder.userType

	}
	return req
}

type MeetingWebinarSetting struct {
	WebinarType *int `json:"webinar_type,omitempty"` // 网络研讨会类型
}

type MeetingWebinarSettingBuilder struct {
	webinarType     int // 网络研讨会类型
	webinarTypeFlag bool
}

func NewMeetingWebinarSettingBuilder() *MeetingWebinarSettingBuilder {
	builder := &MeetingWebinarSettingBuilder{}
	return builder
}

// 网络研讨会类型
//
// 示例值：1
func (builder *MeetingWebinarSettingBuilder) WebinarType(webinarType int) *MeetingWebinarSettingBuilder {
	builder.webinarType = webinarType
	builder.webinarTypeFlag = true
	return builder
}

func (builder *MeetingWebinarSettingBuilder) Build() *MeetingWebinarSetting {
	req := &MeetingWebinarSetting{}
	if builder.webinarTypeFlag {
		req.WebinarType = &builder.webinarType

	}
	return req
}

type MyAiAvPluginCardStatus struct {
	FromStatus *string `json:"from_status,omitempty"` // card from status

	ToStatus *string `json:"to_status,omitempty"` // card to status
}

type MyAiAvPluginCardStatusBuilder struct {
	fromStatus     string // card from status
	fromStatusFlag bool

	toStatus     string // card to status
	toStatusFlag bool
}

func NewMyAiAvPluginCardStatusBuilder() *MyAiAvPluginCardStatusBuilder {
	builder := &MyAiAvPluginCardStatusBuilder{}
	return builder
}

// card from status
//
// 示例值：CREATED
func (builder *MyAiAvPluginCardStatusBuilder) FromStatus(fromStatus string) *MyAiAvPluginCardStatusBuilder {
	builder.fromStatus = fromStatus
	builder.fromStatusFlag = true
	return builder
}

// card to status
//
// 示例值：INVALIDATED
func (builder *MyAiAvPluginCardStatusBuilder) ToStatus(toStatus string) *MyAiAvPluginCardStatusBuilder {
	builder.toStatus = toStatus
	builder.toStatusFlag = true
	return builder
}

func (builder *MyAiAvPluginCardStatusBuilder) Build() *MyAiAvPluginCardStatus {
	req := &MyAiAvPluginCardStatus{}
	if builder.fromStatusFlag {
		req.FromStatus = &builder.fromStatus

	}
	if builder.toStatusFlag {
		req.ToStatus = &builder.toStatus

	}
	return req
}

type MyAiAvPluginCardVariables struct {
	Content *string `json:"content,omitempty"` // content
}

type MyAiAvPluginCardVariablesBuilder struct {
	content     string // content
	contentFlag bool
}

func NewMyAiAvPluginCardVariablesBuilder() *MyAiAvPluginCardVariablesBuilder {
	builder := &MyAiAvPluginCardVariablesBuilder{}
	return builder
}

// content
//
// 示例值：{"tag": "markdown","content": "请稍等，正在生成妙记中，预计需要3分钟;"}
func (builder *MyAiAvPluginCardVariablesBuilder) Content(content string) *MyAiAvPluginCardVariablesBuilder {
	builder.content = content
	builder.contentFlag = true
	return builder
}

func (builder *MyAiAvPluginCardVariablesBuilder) Build() *MyAiAvPluginCardVariables {
	req := &MyAiAvPluginCardVariables{}
	if builder.contentFlag {
		req.Content = &builder.content

	}
	return req
}

type MyAiAvPluginCardVaribales struct {
	Content *string `json:"content,omitempty"` // content
}

type MyAiAvPluginCardVaribalesBuilder struct {
	content     string // content
	contentFlag bool
}

func NewMyAiAvPluginCardVaribalesBuilder() *MyAiAvPluginCardVaribalesBuilder {
	builder := &MyAiAvPluginCardVaribalesBuilder{}
	return builder
}

// content
//
// 示例值：{"tag": "markdown","content": "请稍等，正在生成妙记中，预计需要3分钟;"}
func (builder *MyAiAvPluginCardVaribalesBuilder) Content(content string) *MyAiAvPluginCardVaribalesBuilder {
	builder.content = content
	builder.contentFlag = true
	return builder
}

func (builder *MyAiAvPluginCardVaribalesBuilder) Build() *MyAiAvPluginCardVaribales {
	req := &MyAiAvPluginCardVaribales{}
	if builder.contentFlag {
		req.Content = &builder.content

	}
	return req
}

type MyAiAvPluginContextSystemInfo struct {
	Lang *string `json:"lang,omitempty"` // 语言

	Brand *string `json:"brand,omitempty"` // 品牌

	Locale *string `json:"locale,omitempty"` // 客户端语言

	SessionId *string `json:"session_id,omitempty"` // 会话ID

	AppVersion *string `json:"app_version,omitempty"` // app version
}

type MyAiAvPluginContextSystemInfoBuilder struct {
	lang     string // 语言
	langFlag bool

	brand     string // 品牌
	brandFlag bool

	locale     string // 客户端语言
	localeFlag bool

	sessionId     string // 会话ID
	sessionIdFlag bool

	appVersion     string // app version
	appVersionFlag bool
}

func NewMyAiAvPluginContextSystemInfoBuilder() *MyAiAvPluginContextSystemInfoBuilder {
	builder := &MyAiAvPluginContextSystemInfoBuilder{}
	return builder
}

// 语言
//
// 示例值：zh
func (builder *MyAiAvPluginContextSystemInfoBuilder) Lang(lang string) *MyAiAvPluginContextSystemInfoBuilder {
	builder.lang = lang
	builder.langFlag = true
	return builder
}

// 品牌
//
// 示例值：lark
func (builder *MyAiAvPluginContextSystemInfoBuilder) Brand(brand string) *MyAiAvPluginContextSystemInfoBuilder {
	builder.brand = brand
	builder.brandFlag = true
	return builder
}

// 客户端语言
//
// 示例值：zh_cn
func (builder *MyAiAvPluginContextSystemInfoBuilder) Locale(locale string) *MyAiAvPluginContextSystemInfoBuilder {
	builder.locale = locale
	builder.localeFlag = true
	return builder
}

// 会话ID
//
// 示例值：7291019243332730998
func (builder *MyAiAvPluginContextSystemInfoBuilder) SessionId(sessionId string) *MyAiAvPluginContextSystemInfoBuilder {
	builder.sessionId = sessionId
	builder.sessionIdFlag = true
	return builder
}

// app version
//
// 示例值：7.4.0
func (builder *MyAiAvPluginContextSystemInfoBuilder) AppVersion(appVersion string) *MyAiAvPluginContextSystemInfoBuilder {
	builder.appVersion = appVersion
	builder.appVersionFlag = true
	return builder
}

func (builder *MyAiAvPluginContextSystemInfoBuilder) Build() *MyAiAvPluginContextSystemInfo {
	req := &MyAiAvPluginContextSystemInfo{}
	if builder.langFlag {
		req.Lang = &builder.lang

	}
	if builder.brandFlag {
		req.Brand = &builder.brand

	}
	if builder.localeFlag {
		req.Locale = &builder.locale

	}
	if builder.sessionIdFlag {
		req.SessionId = &builder.sessionId

	}
	if builder.appVersionFlag {
		req.AppVersion = &builder.appVersion

	}
	return req
}

type MyAiAvPluginPresentInfo struct {
	Type *string `json:"type,omitempty"` // present type

	CardTemplateId *string `json:"card_template_id,omitempty"` // card template id

	Body *string `json:"body,omitempty"` // body

	CardVariables *MyAiAvPluginCardVariables `json:"card_variables,omitempty"` //

	CallbackInfo *string `json:"callback_info,omitempty"` // callback info
}

type MyAiAvPluginPresentInfoBuilder struct {
	type_    string // present type
	typeFlag bool

	cardTemplateId     string // card template id
	cardTemplateIdFlag bool

	body     string // body
	bodyFlag bool

	cardVariables     *MyAiAvPluginCardVariables //
	cardVariablesFlag bool

	callbackInfo     string // callback info
	callbackInfoFlag bool
}

func NewMyAiAvPluginPresentInfoBuilder() *MyAiAvPluginPresentInfoBuilder {
	builder := &MyAiAvPluginPresentInfoBuilder{}
	return builder
}

// present type
//
// 示例值：template_card
func (builder *MyAiAvPluginPresentInfoBuilder) Type(type_ string) *MyAiAvPluginPresentInfoBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// card template id
//
// 示例值：1232323232
func (builder *MyAiAvPluginPresentInfoBuilder) CardTemplateId(cardTemplateId string) *MyAiAvPluginPresentInfoBuilder {
	builder.cardTemplateId = cardTemplateId
	builder.cardTemplateIdFlag = true
	return builder
}

// body
//
// 示例值：text message
func (builder *MyAiAvPluginPresentInfoBuilder) Body(body string) *MyAiAvPluginPresentInfoBuilder {
	builder.body = body
	builder.bodyFlag = true
	return builder
}

//
//
// 示例值：
func (builder *MyAiAvPluginPresentInfoBuilder) CardVariables(cardVariables *MyAiAvPluginCardVariables) *MyAiAvPluginPresentInfoBuilder {
	builder.cardVariables = cardVariables
	builder.cardVariablesFlag = true
	return builder
}

// callback info
//
// 示例值：callback info
func (builder *MyAiAvPluginPresentInfoBuilder) CallbackInfo(callbackInfo string) *MyAiAvPluginPresentInfoBuilder {
	builder.callbackInfo = callbackInfo
	builder.callbackInfoFlag = true
	return builder
}

func (builder *MyAiAvPluginPresentInfoBuilder) Build() *MyAiAvPluginPresentInfo {
	req := &MyAiAvPluginPresentInfo{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.cardTemplateIdFlag {
		req.CardTemplateId = &builder.cardTemplateId

	}
	if builder.bodyFlag {
		req.Body = &builder.body

	}
	if builder.cardVariablesFlag {
		req.CardVariables = builder.cardVariables
	}
	if builder.callbackInfoFlag {
		req.CallbackInfo = &builder.callbackInfo

	}
	return req
}

type MyAiAvPluginScenarioContext struct {
	Plugins []*MyAiPluginContext `json:"plugins,omitempty"` // 会话选择的插件列表

	WorkMode *int `json:"work_mode,omitempty"` // 会话所处的业务模式

	Scenario *string `json:"scenario,omitempty"` // 会话所处的业务场景

	SessionId *string `json:"session_id,omitempty"` // 会话ID

	UploadObjects []*MyAiAvPluginUploadObject `json:"upload_objects,omitempty"` // upload objects

	SystemInfo *MyAiAvPluginContextSystemInfo `json:"system_info,omitempty"` // system info
}

type MyAiAvPluginScenarioContextBuilder struct {
	plugins     []*MyAiPluginContext // 会话选择的插件列表
	pluginsFlag bool

	workMode     int // 会话所处的业务模式
	workModeFlag bool

	scenario     string // 会话所处的业务场景
	scenarioFlag bool

	sessionId     string // 会话ID
	sessionIdFlag bool

	uploadObjects     []*MyAiAvPluginUploadObject // upload objects
	uploadObjectsFlag bool

	systemInfo     *MyAiAvPluginContextSystemInfo // system info
	systemInfoFlag bool
}

func NewMyAiAvPluginScenarioContextBuilder() *MyAiAvPluginScenarioContextBuilder {
	builder := &MyAiAvPluginScenarioContextBuilder{}
	return builder
}

// 会话选择的插件列表
//
// 示例值：
func (builder *MyAiAvPluginScenarioContextBuilder) Plugins(plugins []*MyAiPluginContext) *MyAiAvPluginScenarioContextBuilder {
	builder.plugins = plugins
	builder.pluginsFlag = true
	return builder
}

// 会话所处的业务模式
//
// 示例值：1
func (builder *MyAiAvPluginScenarioContextBuilder) WorkMode(workMode int) *MyAiAvPluginScenarioContextBuilder {
	builder.workMode = workMode
	builder.workModeFlag = true
	return builder
}

// 会话所处的业务场景
//
// 示例值：MediaView
func (builder *MyAiAvPluginScenarioContextBuilder) Scenario(scenario string) *MyAiAvPluginScenarioContextBuilder {
	builder.scenario = scenario
	builder.scenarioFlag = true
	return builder
}

// 会话ID
//
// 示例值：ssss
func (builder *MyAiAvPluginScenarioContextBuilder) SessionId(sessionId string) *MyAiAvPluginScenarioContextBuilder {
	builder.sessionId = sessionId
	builder.sessionIdFlag = true
	return builder
}

// upload objects
//
// 示例值：
func (builder *MyAiAvPluginScenarioContextBuilder) UploadObjects(uploadObjects []*MyAiAvPluginUploadObject) *MyAiAvPluginScenarioContextBuilder {
	builder.uploadObjects = uploadObjects
	builder.uploadObjectsFlag = true
	return builder
}

// system info
//
// 示例值：
func (builder *MyAiAvPluginScenarioContextBuilder) SystemInfo(systemInfo *MyAiAvPluginContextSystemInfo) *MyAiAvPluginScenarioContextBuilder {
	builder.systemInfo = systemInfo
	builder.systemInfoFlag = true
	return builder
}

func (builder *MyAiAvPluginScenarioContextBuilder) Build() *MyAiAvPluginScenarioContext {
	req := &MyAiAvPluginScenarioContext{}
	if builder.pluginsFlag {
		req.Plugins = builder.plugins
	}
	if builder.workModeFlag {
		req.WorkMode = &builder.workMode

	}
	if builder.scenarioFlag {
		req.Scenario = &builder.scenario

	}
	if builder.sessionIdFlag {
		req.SessionId = &builder.sessionId

	}
	if builder.uploadObjectsFlag {
		req.UploadObjects = builder.uploadObjects
	}
	if builder.systemInfoFlag {
		req.SystemInfo = builder.systemInfo
	}
	return req
}

type MyAiAvPluginUploadObject struct {
	BizId *string `json:"biz_id,omitempty"` // 业务ID

	Type *string `json:"type,omitempty"` // 类型
}

type MyAiAvPluginUploadObjectBuilder struct {
	bizId     string // 业务ID
	bizIdFlag bool

	type_    string // 类型
	typeFlag bool
}

func NewMyAiAvPluginUploadObjectBuilder() *MyAiAvPluginUploadObjectBuilder {
	builder := &MyAiAvPluginUploadObjectBuilder{}
	return builder
}

// 业务ID
//
// 示例值：obcnxxxxxxx
func (builder *MyAiAvPluginUploadObjectBuilder) BizId(bizId string) *MyAiAvPluginUploadObjectBuilder {
	builder.bizId = bizId
	builder.bizIdFlag = true
	return builder
}

// 类型
//
// 示例值：MEETING_MINUTE
func (builder *MyAiAvPluginUploadObjectBuilder) Type(type_ string) *MyAiAvPluginUploadObjectBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

func (builder *MyAiAvPluginUploadObjectBuilder) Build() *MyAiAvPluginUploadObject {
	req := &MyAiAvPluginUploadObject{}
	if builder.bizIdFlag {
		req.BizId = &builder.bizId

	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	return req
}

type MyAiCallbackAction struct {
	Value *MyAiCallbackActionValue `json:"value,omitempty"` // 卡片交互回调的value

	Tag *string `json:"tag,omitempty"` // 交互的类型
}

type MyAiCallbackActionBuilder struct {
	value     *MyAiCallbackActionValue // 卡片交互回调的value
	valueFlag bool

	tag     string // 交互的类型
	tagFlag bool
}

func NewMyAiCallbackActionBuilder() *MyAiCallbackActionBuilder {
	builder := &MyAiCallbackActionBuilder{}
	return builder
}

// 卡片交互回调的value
//
// 示例值：
func (builder *MyAiCallbackActionBuilder) Value(value *MyAiCallbackActionValue) *MyAiCallbackActionBuilder {
	builder.value = value
	builder.valueFlag = true
	return builder
}

// 交互的类型
//
// 示例值：button
func (builder *MyAiCallbackActionBuilder) Tag(tag string) *MyAiCallbackActionBuilder {
	builder.tag = tag
	builder.tagFlag = true
	return builder
}

func (builder *MyAiCallbackActionBuilder) Build() *MyAiCallbackAction {
	req := &MyAiCallbackAction{}
	if builder.valueFlag {
		req.Value = builder.value
	}
	if builder.tagFlag {
		req.Tag = &builder.tag

	}
	return req
}

type MyAiCallbackActionValue struct {
	Body *string `json:"body,omitempty"` // myai卡片交互回调的value

	Handle *string `json:"handle,omitempty"` // 用户的交互操作
}

type MyAiCallbackActionValueBuilder struct {
	body     string // myai卡片交互回调的value
	bodyFlag bool

	handle     string // 用户的交互操作
	handleFlag bool
}

func NewMyAiCallbackActionValueBuilder() *MyAiCallbackActionValueBuilder {
	builder := &MyAiCallbackActionValueBuilder{}
	return builder
}

// myai卡片交互回调的value
//
// 示例值：struct
func (builder *MyAiCallbackActionValueBuilder) Body(body string) *MyAiCallbackActionValueBuilder {
	builder.body = body
	builder.bodyFlag = true
	return builder
}

// 用户的交互操作
//
// 示例值：confirm
func (builder *MyAiCallbackActionValueBuilder) Handle(handle string) *MyAiCallbackActionValueBuilder {
	builder.handle = handle
	builder.handleFlag = true
	return builder
}

func (builder *MyAiCallbackActionValueBuilder) Build() *MyAiCallbackActionValue {
	req := &MyAiCallbackActionValue{}
	if builder.bodyFlag {
		req.Body = &builder.body

	}
	if builder.handleFlag {
		req.Handle = &builder.handle

	}
	return req
}

type MyAiObjectContext struct {
	Type *string `json:"type,omitempty"` // 会话所在实体类型

	BizId *string `json:"biz_id,omitempty"` // 业务资源 ID
}

type MyAiObjectContextBuilder struct {
	type_    string // 会话所在实体类型
	typeFlag bool

	bizId     string // 业务资源 ID
	bizIdFlag bool
}

func NewMyAiObjectContextBuilder() *MyAiObjectContextBuilder {
	builder := &MyAiObjectContextBuilder{}
	return builder
}

// 会话所在实体类型
//
// 示例值：DOC
func (builder *MyAiObjectContextBuilder) Type(type_ string) *MyAiObjectContextBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 业务资源 ID
//
// 示例值：ou_xxx
func (builder *MyAiObjectContextBuilder) BizId(bizId string) *MyAiObjectContextBuilder {
	builder.bizId = bizId
	builder.bizIdFlag = true
	return builder
}

func (builder *MyAiObjectContextBuilder) Build() *MyAiObjectContext {
	req := &MyAiObjectContext{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.bizIdFlag {
		req.BizId = &builder.bizId

	}
	return req
}

type MyAiPluginContext struct {
	Key *string `json:"key,omitempty"` // 插件名称
}

type MyAiPluginContextBuilder struct {
	key     string // 插件名称
	keyFlag bool
}

func NewMyAiPluginContextBuilder() *MyAiPluginContextBuilder {
	builder := &MyAiPluginContextBuilder{}
	return builder
}

// 插件名称
//
// 示例值：Calendar
func (builder *MyAiPluginContextBuilder) Key(key string) *MyAiPluginContextBuilder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

func (builder *MyAiPluginContextBuilder) Build() *MyAiPluginContext {
	req := &MyAiPluginContext{}
	if builder.keyFlag {
		req.Key = &builder.key

	}
	return req
}

type MyAiResponsePresent struct {
	Type *string `json:"type,omitempty"` // 类型

	Body *string `json:"body,omitempty"` // 透传消息体

	Interactable *bool `json:"interactable,omitempty"` // 是否可交互

	OperationType *string `json:"operation_type,omitempty"` // tool对卡片交互的响应

	OperationUrl *string `json:"operation_url,omitempty"` // 卡片后续链路交互的请求地址

	CallbackUrl *string `json:"callback_url,omitempty"` // 透传数据上屏后,回调业务方的url;支持Open API 与 rpc 两种方式。由业务方提供。

	CallbackInfo *string `json:"callback_info,omitempty"` // 回调信息
}

type MyAiResponsePresentBuilder struct {
	type_    string // 类型
	typeFlag bool

	body     string // 透传消息体
	bodyFlag bool

	interactable     bool // 是否可交互
	interactableFlag bool

	operationType     string // tool对卡片交互的响应
	operationTypeFlag bool

	operationUrl     string // 卡片后续链路交互的请求地址
	operationUrlFlag bool

	callbackUrl     string // 透传数据上屏后,回调业务方的url;支持Open API 与 rpc 两种方式。由业务方提供。
	callbackUrlFlag bool

	callbackInfo     string // 回调信息
	callbackInfoFlag bool
}

func NewMyAiResponsePresentBuilder() *MyAiResponsePresentBuilder {
	builder := &MyAiResponsePresentBuilder{}
	return builder
}

// 类型
//
// 示例值：2
func (builder *MyAiResponsePresentBuilder) Type(type_ string) *MyAiResponsePresentBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 透传消息体
//
// 示例值：json字符串
func (builder *MyAiResponsePresentBuilder) Body(body string) *MyAiResponsePresentBuilder {
	builder.body = body
	builder.bodyFlag = true
	return builder
}

// 是否可交互
//
// 示例值：true
func (builder *MyAiResponsePresentBuilder) Interactable(interactable bool) *MyAiResponsePresentBuilder {
	builder.interactable = interactable
	builder.interactableFlag = true
	return builder
}

// tool对卡片交互的响应
//
// 示例值：update
func (builder *MyAiResponsePresentBuilder) OperationType(operationType string) *MyAiResponsePresentBuilder {
	builder.operationType = operationType
	builder.operationTypeFlag = true
	return builder
}

// 卡片后续链路交互的请求地址
//
// 示例值：https://open.feishu-boe.cn/open-apis/lark_ai/operation
func (builder *MyAiResponsePresentBuilder) OperationUrl(operationUrl string) *MyAiResponsePresentBuilder {
	builder.operationUrl = operationUrl
	builder.operationUrlFlag = true
	return builder
}

// 透传数据上屏后,回调业务方的url;支持Open API 与 rpc 两种方式。由业务方提供。
//
// 示例值：https://open.feishu-boe.cn/open-apis/lark_ai/callback
func (builder *MyAiResponsePresentBuilder) CallbackUrl(callbackUrl string) *MyAiResponsePresentBuilder {
	builder.callbackUrl = callbackUrl
	builder.callbackUrlFlag = true
	return builder
}

// 回调信息
//
// 示例值：call back raw data
func (builder *MyAiResponsePresentBuilder) CallbackInfo(callbackInfo string) *MyAiResponsePresentBuilder {
	builder.callbackInfo = callbackInfo
	builder.callbackInfoFlag = true
	return builder
}

func (builder *MyAiResponsePresentBuilder) Build() *MyAiResponsePresent {
	req := &MyAiResponsePresent{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.bodyFlag {
		req.Body = &builder.body

	}
	if builder.interactableFlag {
		req.Interactable = &builder.interactable

	}
	if builder.operationTypeFlag {
		req.OperationType = &builder.operationType

	}
	if builder.operationUrlFlag {
		req.OperationUrl = &builder.operationUrl

	}
	if builder.callbackUrlFlag {
		req.CallbackUrl = &builder.callbackUrl

	}
	if builder.callbackInfoFlag {
		req.CallbackInfo = &builder.callbackInfo

	}
	return req
}

type MyAiRoomCommonResult struct {
	RoomReply *string `json:"room_reply,omitempty"` // 通用回复

	OpenapiResponse *MyAiRoomOpenapiResponse `json:"openapi_response,omitempty"` // openapi 响应结果
}

type MyAiRoomCommonResultBuilder struct {
	roomReply     string // 通用回复
	roomReplyFlag bool

	openapiResponse     *MyAiRoomOpenapiResponse // openapi 响应结果
	openapiResponseFlag bool
}

func NewMyAiRoomCommonResultBuilder() *MyAiRoomCommonResultBuilder {
	builder := &MyAiRoomCommonResultBuilder{}
	return builder
}

// 通用回复
//
// 示例值：OK
func (builder *MyAiRoomCommonResultBuilder) RoomReply(roomReply string) *MyAiRoomCommonResultBuilder {
	builder.roomReply = roomReply
	builder.roomReplyFlag = true
	return builder
}

// openapi 响应结果
//
// 示例值：
func (builder *MyAiRoomCommonResultBuilder) OpenapiResponse(openapiResponse *MyAiRoomOpenapiResponse) *MyAiRoomCommonResultBuilder {
	builder.openapiResponse = openapiResponse
	builder.openapiResponseFlag = true
	return builder
}

func (builder *MyAiRoomCommonResultBuilder) Build() *MyAiRoomCommonResult {
	req := &MyAiRoomCommonResult{}
	if builder.roomReplyFlag {
		req.RoomReply = &builder.roomReply

	}
	if builder.openapiResponseFlag {
		req.OpenapiResponse = builder.openapiResponse
	}
	return req
}

type MyAiRoomOpenapiResponse struct {
	ResponseType *int `json:"response_type,omitempty"` // openapi 返回的意图类型，不同 tool 的不同值都不一样

	ScheduleEventId *string `json:"schedule_event_id,omitempty"` // 日程 id

	OtherMsg *string `json:"other_msg,omitempty"` // 其他信息

	OapiMsg *string `json:"oapi_msg,omitempty"` // oapi 传递的消息，用于缓存
}

type MyAiRoomOpenapiResponseBuilder struct {
	responseType     int // openapi 返回的意图类型，不同 tool 的不同值都不一样
	responseTypeFlag bool

	scheduleEventId     string // 日程 id
	scheduleEventIdFlag bool

	otherMsg     string // 其他信息
	otherMsgFlag bool

	oapiMsg     string // oapi 传递的消息，用于缓存
	oapiMsgFlag bool
}

func NewMyAiRoomOpenapiResponseBuilder() *MyAiRoomOpenapiResponseBuilder {
	builder := &MyAiRoomOpenapiResponseBuilder{}
	return builder
}

// openapi 返回的意图类型，不同 tool 的不同值都不一样
//
// 示例值：0
func (builder *MyAiRoomOpenapiResponseBuilder) ResponseType(responseType int) *MyAiRoomOpenapiResponseBuilder {
	builder.responseType = responseType
	builder.responseTypeFlag = true
	return builder
}

// 日程 id
//
// 示例值：111111111
func (builder *MyAiRoomOpenapiResponseBuilder) ScheduleEventId(scheduleEventId string) *MyAiRoomOpenapiResponseBuilder {
	builder.scheduleEventId = scheduleEventId
	builder.scheduleEventIdFlag = true
	return builder
}

// 其他信息
//
// 示例值：{}
func (builder *MyAiRoomOpenapiResponseBuilder) OtherMsg(otherMsg string) *MyAiRoomOpenapiResponseBuilder {
	builder.otherMsg = otherMsg
	builder.otherMsgFlag = true
	return builder
}

// oapi 传递的消息，用于缓存
//
// 示例值：{}
func (builder *MyAiRoomOpenapiResponseBuilder) OapiMsg(oapiMsg string) *MyAiRoomOpenapiResponseBuilder {
	builder.oapiMsg = oapiMsg
	builder.oapiMsgFlag = true
	return builder
}

func (builder *MyAiRoomOpenapiResponseBuilder) Build() *MyAiRoomOpenapiResponse {
	req := &MyAiRoomOpenapiResponse{}
	if builder.responseTypeFlag {
		req.ResponseType = &builder.responseType

	}
	if builder.scheduleEventIdFlag {
		req.ScheduleEventId = &builder.scheduleEventId

	}
	if builder.otherMsgFlag {
		req.OtherMsg = &builder.otherMsg

	}
	if builder.oapiMsgFlag {
		req.OapiMsg = &builder.oapiMsg

	}
	return req
}

type MyAiSipCardVariables struct {
	Text *string `json:"text,omitempty"` // 占位符类型为TEXT时对应的值

	ImageKey *string `json:"image_key,omitempty"` // 占位符类型为IMAGE时对应的值
}

type MyAiSipCardVariablesBuilder struct {
	text     string // 占位符类型为TEXT时对应的值
	textFlag bool

	imageKey     string // 占位符类型为IMAGE时对应的值
	imageKeyFlag bool
}

func NewMyAiSipCardVariablesBuilder() *MyAiSipCardVariablesBuilder {
	builder := &MyAiSipCardVariablesBuilder{}
	return builder
}

// 占位符类型为TEXT时对应的值
//
// 示例值：{}
func (builder *MyAiSipCardVariablesBuilder) Text(text string) *MyAiSipCardVariablesBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

// 占位符类型为IMAGE时对应的值
//
// 示例值：img_v3_0275_6ffaa4b5-2d6a-4caf-b754-4a37db40160j
func (builder *MyAiSipCardVariablesBuilder) ImageKey(imageKey string) *MyAiSipCardVariablesBuilder {
	builder.imageKey = imageKey
	builder.imageKeyFlag = true
	return builder
}

func (builder *MyAiSipCardVariablesBuilder) Build() *MyAiSipCardVariables {
	req := &MyAiSipCardVariables{}
	if builder.textFlag {
		req.Text = &builder.text

	}
	if builder.imageKeyFlag {
		req.ImageKey = &builder.imageKey

	}
	return req
}

type MyAiSipImageProperty struct {
	Theme *string `json:"theme,omitempty"` // 图像主题

	Number *int `json:"number,omitempty"` // 图像张数

	Size *string `json:"size,omitempty"` // 图像尺寸
}

type MyAiSipImagePropertyBuilder struct {
	theme     string // 图像主题
	themeFlag bool

	number     int // 图像张数
	numberFlag bool

	size     string // 图像尺寸
	sizeFlag bool
}

func NewMyAiSipImagePropertyBuilder() *MyAiSipImagePropertyBuilder {
	builder := &MyAiSipImagePropertyBuilder{}
	return builder
}

// 图像主题
//
// 示例值：中国农历新年户外场景
func (builder *MyAiSipImagePropertyBuilder) Theme(theme string) *MyAiSipImagePropertyBuilder {
	builder.theme = theme
	builder.themeFlag = true
	return builder
}

// 图像张数
//
// 示例值：4
func (builder *MyAiSipImagePropertyBuilder) Number(number int) *MyAiSipImagePropertyBuilder {
	builder.number = number
	builder.numberFlag = true
	return builder
}

// 图像尺寸
//
// 示例值：128x128
func (builder *MyAiSipImagePropertyBuilder) Size(size string) *MyAiSipImagePropertyBuilder {
	builder.size = size
	builder.sizeFlag = true
	return builder
}

func (builder *MyAiSipImagePropertyBuilder) Build() *MyAiSipImageProperty {
	req := &MyAiSipImageProperty{}
	if builder.themeFlag {
		req.Theme = &builder.theme

	}
	if builder.numberFlag {
		req.Number = &builder.number

	}
	if builder.sizeFlag {
		req.Size = &builder.size

	}
	return req
}

type MyAiSipPresent struct {
	Type *string `json:"type,omitempty"` // 透传数据类型

	Body *string `json:"body,omitempty"` // 透传消息体

	OperationType *string `json:"operation_type,omitempty"` // 在交互卡片的场景下，完成交互，对交互行为做出的响应

	Interactable *bool `json:"interactable,omitempty"` // 是否为交互卡片

	OperationUrl *string `json:"operation_url,omitempty"` // 卡片后续链路交互的请求地址

	CallbackUrl *string `json:"callback_url,omitempty"` // 透传数据上屏后，回调业务方的url，支持open API、RPC两种方式

	CallbackInfo *string `json:"callback_info,omitempty"` // 透传数据上屏后，回调给业务方的数据（适用开放平台卡片）

	CardTemplateId *string `json:"card_template_id,omitempty"` // 模版信息（适用于模版卡片）

	CardVariables *MyAiSipCardVariables `json:"card_variables,omitempty"` // 模版变量信息（适用于模版卡片）
}

type MyAiSipPresentBuilder struct {
	type_    string // 透传数据类型
	typeFlag bool

	body     string // 透传消息体
	bodyFlag bool

	operationType     string // 在交互卡片的场景下，完成交互，对交互行为做出的响应
	operationTypeFlag bool

	interactable     bool // 是否为交互卡片
	interactableFlag bool

	operationUrl     string // 卡片后续链路交互的请求地址
	operationUrlFlag bool

	callbackUrl     string // 透传数据上屏后，回调业务方的url，支持open API、RPC两种方式
	callbackUrlFlag bool

	callbackInfo     string // 透传数据上屏后，回调给业务方的数据（适用开放平台卡片）
	callbackInfoFlag bool

	cardTemplateId     string // 模版信息（适用于模版卡片）
	cardTemplateIdFlag bool

	cardVariables     *MyAiSipCardVariables // 模版变量信息（适用于模版卡片）
	cardVariablesFlag bool
}

func NewMyAiSipPresentBuilder() *MyAiSipPresentBuilder {
	builder := &MyAiSipPresentBuilder{}
	return builder
}

// 透传数据类型
//
// 示例值：card
func (builder *MyAiSipPresentBuilder) Type(type_ string) *MyAiSipPresentBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 透传消息体
//
// 示例值：{}
func (builder *MyAiSipPresentBuilder) Body(body string) *MyAiSipPresentBuilder {
	builder.body = body
	builder.bodyFlag = true
	return builder
}

// 在交互卡片的场景下，完成交互，对交互行为做出的响应
//
// 示例值：UPDATE
func (builder *MyAiSipPresentBuilder) OperationType(operationType string) *MyAiSipPresentBuilder {
	builder.operationType = operationType
	builder.operationTypeFlag = true
	return builder
}

// 是否为交互卡片
//
// 示例值：true
func (builder *MyAiSipPresentBuilder) Interactable(interactable bool) *MyAiSipPresentBuilder {
	builder.interactable = interactable
	builder.interactableFlag = true
	return builder
}

// 卡片后续链路交互的请求地址
//
// 示例值：https://xxxx
func (builder *MyAiSipPresentBuilder) OperationUrl(operationUrl string) *MyAiSipPresentBuilder {
	builder.operationUrl = operationUrl
	builder.operationUrlFlag = true
	return builder
}

// 透传数据上屏后，回调业务方的url，支持open API、RPC两种方式
//
// 示例值：sd://psm
func (builder *MyAiSipPresentBuilder) CallbackUrl(callbackUrl string) *MyAiSipPresentBuilder {
	builder.callbackUrl = callbackUrl
	builder.callbackUrlFlag = true
	return builder
}

// 透传数据上屏后，回调给业务方的数据（适用开放平台卡片）
//
// 示例值：{}
func (builder *MyAiSipPresentBuilder) CallbackInfo(callbackInfo string) *MyAiSipPresentBuilder {
	builder.callbackInfo = callbackInfo
	builder.callbackInfoFlag = true
	return builder
}

// 模版信息（适用于模版卡片）
//
// 示例值：default
func (builder *MyAiSipPresentBuilder) CardTemplateId(cardTemplateId string) *MyAiSipPresentBuilder {
	builder.cardTemplateId = cardTemplateId
	builder.cardTemplateIdFlag = true
	return builder
}

// 模版变量信息（适用于模版卡片）
//
// 示例值：
func (builder *MyAiSipPresentBuilder) CardVariables(cardVariables *MyAiSipCardVariables) *MyAiSipPresentBuilder {
	builder.cardVariables = cardVariables
	builder.cardVariablesFlag = true
	return builder
}

func (builder *MyAiSipPresentBuilder) Build() *MyAiSipPresent {
	req := &MyAiSipPresent{}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.bodyFlag {
		req.Body = &builder.body

	}
	if builder.operationTypeFlag {
		req.OperationType = &builder.operationType

	}
	if builder.interactableFlag {
		req.Interactable = &builder.interactable

	}
	if builder.operationUrlFlag {
		req.OperationUrl = &builder.operationUrl

	}
	if builder.callbackUrlFlag {
		req.CallbackUrl = &builder.callbackUrl

	}
	if builder.callbackInfoFlag {
		req.CallbackInfo = &builder.callbackInfo

	}
	if builder.cardTemplateIdFlag {
		req.CardTemplateId = &builder.cardTemplateId

	}
	if builder.cardVariablesFlag {
		req.CardVariables = builder.cardVariables
	}
	return req
}

type MyAiVcAnalysisResult struct {
	Reply *string `json:"reply,omitempty"` // result reply
}

type MyAiVcAnalysisResultBuilder struct {
	reply     string // result reply
	replyFlag bool
}

func NewMyAiVcAnalysisResultBuilder() *MyAiVcAnalysisResultBuilder {
	builder := &MyAiVcAnalysisResultBuilder{}
	return builder
}

// result reply
//
// 示例值：this is a reply
func (builder *MyAiVcAnalysisResultBuilder) Reply(reply string) *MyAiVcAnalysisResultBuilder {
	builder.reply = reply
	builder.replyFlag = true
	return builder
}

func (builder *MyAiVcAnalysisResultBuilder) Build() *MyAiVcAnalysisResult {
	req := &MyAiVcAnalysisResult{}
	if builder.replyFlag {
		req.Reply = &builder.reply

	}
	return req
}

type MyAiVcMeetingContentCommonResult struct {
	MeetingContentReply *string `json:"meeting_content_reply,omitempty"` // 会议内容问答for自由对话
}

type MyAiVcMeetingContentCommonResultBuilder struct {
	meetingContentReply     string // 会议内容问答for自由对话
	meetingContentReplyFlag bool
}

func NewMyAiVcMeetingContentCommonResultBuilder() *MyAiVcMeetingContentCommonResultBuilder {
	builder := &MyAiVcMeetingContentCommonResultBuilder{}
	return builder
}

// 会议内容问答for自由对话
//
// 示例值：该会议xxx
func (builder *MyAiVcMeetingContentCommonResultBuilder) MeetingContentReply(meetingContentReply string) *MyAiVcMeetingContentCommonResultBuilder {
	builder.meetingContentReply = meetingContentReply
	builder.meetingContentReplyFlag = true
	return builder
}

func (builder *MyAiVcMeetingContentCommonResultBuilder) Build() *MyAiVcMeetingContentCommonResult {
	req := &MyAiVcMeetingContentCommonResult{}
	if builder.meetingContentReplyFlag {
		req.MeetingContentReply = &builder.meetingContentReply

	}
	return req
}

type MyAiVcMeetingExtra struct {
	VcMeetingId *string `json:"vc_meeting_id,omitempty"` // 会议id

	VcLocale *string `json:"vc_locale,omitempty"` // 客户端语言

	VcApplinkHost *string `json:"vc_applink_host,omitempty"` // applink域名

	VcAppVersion *string `json:"vc_app_version,omitempty"` // app版本

	VcFeatureConfig *string `json:"vc_feature_config,omitempty"` // 功能开关，用于一些功能服务端确认客户端是否可以执行。

	QuickExecuteParamRichTag *string `json:"quick_execute_param_rich_tag,omitempty"` // 端上富文本额外信息
}

type MyAiVcMeetingExtraBuilder struct {
	vcMeetingId     string // 会议id
	vcMeetingIdFlag bool

	vcLocale     string // 客户端语言
	vcLocaleFlag bool

	vcApplinkHost     string // applink域名
	vcApplinkHostFlag bool

	vcAppVersion     string // app版本
	vcAppVersionFlag bool

	vcFeatureConfig     string // 功能开关，用于一些功能服务端确认客户端是否可以执行。
	vcFeatureConfigFlag bool

	quickExecuteParamRichTag     string // 端上富文本额外信息
	quickExecuteParamRichTagFlag bool
}

func NewMyAiVcMeetingExtraBuilder() *MyAiVcMeetingExtraBuilder {
	builder := &MyAiVcMeetingExtraBuilder{}
	return builder
}

// 会议id
//
// 示例值：6909384684539478036
func (builder *MyAiVcMeetingExtraBuilder) VcMeetingId(vcMeetingId string) *MyAiVcMeetingExtraBuilder {
	builder.vcMeetingId = vcMeetingId
	builder.vcMeetingIdFlag = true
	return builder
}

// 客户端语言
//
// 示例值：zh_cn
func (builder *MyAiVcMeetingExtraBuilder) VcLocale(vcLocale string) *MyAiVcMeetingExtraBuilder {
	builder.vcLocale = vcLocale
	builder.vcLocaleFlag = true
	return builder
}

// applink域名
//
// 示例值：applink.feishu.cn
func (builder *MyAiVcMeetingExtraBuilder) VcApplinkHost(vcApplinkHost string) *MyAiVcMeetingExtraBuilder {
	builder.vcApplinkHost = vcApplinkHost
	builder.vcApplinkHostFlag = true
	return builder
}

// app版本
//
// 示例值：7.0.0
func (builder *MyAiVcMeetingExtraBuilder) VcAppVersion(vcAppVersion string) *MyAiVcMeetingExtraBuilder {
	builder.vcAppVersion = vcAppVersion
	builder.vcAppVersionFlag = true
	return builder
}

// 功能开关，用于一些功能服务端确认客户端是否可以执行。
//
// 示例值：recording_status
func (builder *MyAiVcMeetingExtraBuilder) VcFeatureConfig(vcFeatureConfig string) *MyAiVcMeetingExtraBuilder {
	builder.vcFeatureConfig = vcFeatureConfig
	builder.vcFeatureConfigFlag = true
	return builder
}

// 端上富文本额外信息
//
// 示例值：json字符串
func (builder *MyAiVcMeetingExtraBuilder) QuickExecuteParamRichTag(quickExecuteParamRichTag string) *MyAiVcMeetingExtraBuilder {
	builder.quickExecuteParamRichTag = quickExecuteParamRichTag
	builder.quickExecuteParamRichTagFlag = true
	return builder
}

func (builder *MyAiVcMeetingExtraBuilder) Build() *MyAiVcMeetingExtra {
	req := &MyAiVcMeetingExtra{}
	if builder.vcMeetingIdFlag {
		req.VcMeetingId = &builder.vcMeetingId

	}
	if builder.vcLocaleFlag {
		req.VcLocale = &builder.vcLocale

	}
	if builder.vcApplinkHostFlag {
		req.VcApplinkHost = &builder.vcApplinkHost

	}
	if builder.vcAppVersionFlag {
		req.VcAppVersion = &builder.vcAppVersion

	}
	if builder.vcFeatureConfigFlag {
		req.VcFeatureConfig = &builder.vcFeatureConfig

	}
	if builder.quickExecuteParamRichTagFlag {
		req.QuickExecuteParamRichTag = &builder.quickExecuteParamRichTag

	}
	return req
}

type MyAiVcMeetingOperationResult struct {
	MeetingOperationReply *string `json:"meeting_operation_reply,omitempty"` // 会议操作回复
}

type MyAiVcMeetingOperationResultBuilder struct {
	meetingOperationReply     string // 会议操作回复
	meetingOperationReplyFlag bool
}

func NewMyAiVcMeetingOperationResultBuilder() *MyAiVcMeetingOperationResultBuilder {
	builder := &MyAiVcMeetingOperationResultBuilder{}
	return builder
}

// 会议操作回复
//
// 示例值：已成功执行
func (builder *MyAiVcMeetingOperationResultBuilder) MeetingOperationReply(meetingOperationReply string) *MyAiVcMeetingOperationResultBuilder {
	builder.meetingOperationReply = meetingOperationReply
	builder.meetingOperationReplyFlag = true
	return builder
}

func (builder *MyAiVcMeetingOperationResultBuilder) Build() *MyAiVcMeetingOperationResult {
	req := &MyAiVcMeetingOperationResult{}
	if builder.meetingOperationReplyFlag {
		req.MeetingOperationReply = &builder.meetingOperationReply

	}
	return req
}

type MyAiVcMeetingRecapResult struct {
	MeetingRecapOrFailReason *string `json:"meeting_recap_or_fail_reason,omitempty"` // 会议纪要for快捷指令

	MeetingRecap *string `json:"meeting_recap,omitempty"` // 会议纪要for自由对话
}

type MyAiVcMeetingRecapResultBuilder struct {
	meetingRecapOrFailReason     string // 会议纪要for快捷指令
	meetingRecapOrFailReasonFlag bool

	meetingRecap     string // 会议纪要for自由对话
	meetingRecapFlag bool
}

func NewMyAiVcMeetingRecapResultBuilder() *MyAiVcMeetingRecapResultBuilder {
	builder := &MyAiVcMeetingRecapResultBuilder{}
	return builder
}

// 会议纪要for快捷指令
//
// 示例值：会议纪要内容是xxx，或该会议未打开录制，无法生成纪要
func (builder *MyAiVcMeetingRecapResultBuilder) MeetingRecapOrFailReason(meetingRecapOrFailReason string) *MyAiVcMeetingRecapResultBuilder {
	builder.meetingRecapOrFailReason = meetingRecapOrFailReason
	builder.meetingRecapOrFailReasonFlag = true
	return builder
}

// 会议纪要for自由对话
//
// 示例值：会议纪要内容是xxx
func (builder *MyAiVcMeetingRecapResultBuilder) MeetingRecap(meetingRecap string) *MyAiVcMeetingRecapResultBuilder {
	builder.meetingRecap = meetingRecap
	builder.meetingRecapFlag = true
	return builder
}

func (builder *MyAiVcMeetingRecapResultBuilder) Build() *MyAiVcMeetingRecapResult {
	req := &MyAiVcMeetingRecapResult{}
	if builder.meetingRecapOrFailReasonFlag {
		req.MeetingRecapOrFailReason = &builder.meetingRecapOrFailReason

	}
	if builder.meetingRecapFlag {
		req.MeetingRecap = &builder.meetingRecap

	}
	return req
}

type MyAiVcMeetingScenarioContext struct {
	Plugins []*MyAiPluginContext `json:"plugins,omitempty"` // 会话选择的插件列表

	Object *MyAiObjectContext `json:"object,omitempty"` // 会话所在实体的信息

	WorkMode *int `json:"work_mode,omitempty"` // 会话所处的业务模式

	Scenario *string `json:"scenario,omitempty"` // 会话所处的业务场景

	Extra *MyAiVcMeetingExtra `json:"extra,omitempty"` // 透传数据

	SystemInfo *MyAiAvPluginContextSystemInfo `json:"system_info,omitempty"` // system info
}

type MyAiVcMeetingScenarioContextBuilder struct {
	plugins     []*MyAiPluginContext // 会话选择的插件列表
	pluginsFlag bool

	object     *MyAiObjectContext // 会话所在实体的信息
	objectFlag bool

	workMode     int // 会话所处的业务模式
	workModeFlag bool

	scenario     string // 会话所处的业务场景
	scenarioFlag bool

	extra     *MyAiVcMeetingExtra // 透传数据
	extraFlag bool

	systemInfo     *MyAiAvPluginContextSystemInfo // system info
	systemInfoFlag bool
}

func NewMyAiVcMeetingScenarioContextBuilder() *MyAiVcMeetingScenarioContextBuilder {
	builder := &MyAiVcMeetingScenarioContextBuilder{}
	return builder
}

// 会话选择的插件列表
//
// 示例值：
func (builder *MyAiVcMeetingScenarioContextBuilder) Plugins(plugins []*MyAiPluginContext) *MyAiVcMeetingScenarioContextBuilder {
	builder.plugins = plugins
	builder.pluginsFlag = true
	return builder
}

// 会话所在实体的信息
//
// 示例值：
func (builder *MyAiVcMeetingScenarioContextBuilder) Object(object *MyAiObjectContext) *MyAiVcMeetingScenarioContextBuilder {
	builder.object = object
	builder.objectFlag = true
	return builder
}

// 会话所处的业务模式
//
// 示例值：1
func (builder *MyAiVcMeetingScenarioContextBuilder) WorkMode(workMode int) *MyAiVcMeetingScenarioContextBuilder {
	builder.workMode = workMode
	builder.workModeFlag = true
	return builder
}

// 会话所处的业务场景
//
// 示例值：IM
func (builder *MyAiVcMeetingScenarioContextBuilder) Scenario(scenario string) *MyAiVcMeetingScenarioContextBuilder {
	builder.scenario = scenario
	builder.scenarioFlag = true
	return builder
}

// 透传数据
//
// 示例值：
func (builder *MyAiVcMeetingScenarioContextBuilder) Extra(extra *MyAiVcMeetingExtra) *MyAiVcMeetingScenarioContextBuilder {
	builder.extra = extra
	builder.extraFlag = true
	return builder
}

// system info
//
// 示例值：
func (builder *MyAiVcMeetingScenarioContextBuilder) SystemInfo(systemInfo *MyAiAvPluginContextSystemInfo) *MyAiVcMeetingScenarioContextBuilder {
	builder.systemInfo = systemInfo
	builder.systemInfoFlag = true
	return builder
}

func (builder *MyAiVcMeetingScenarioContextBuilder) Build() *MyAiVcMeetingScenarioContext {
	req := &MyAiVcMeetingScenarioContext{}
	if builder.pluginsFlag {
		req.Plugins = builder.plugins
	}
	if builder.objectFlag {
		req.Object = builder.object
	}
	if builder.workModeFlag {
		req.WorkMode = &builder.workMode

	}
	if builder.scenarioFlag {
		req.Scenario = &builder.scenario

	}
	if builder.extraFlag {
		req.Extra = builder.extra
	}
	if builder.systemInfoFlag {
		req.SystemInfo = builder.systemInfo
	}
	return req
}

type MyAiVcMeetingSuggestQuestionResult struct {
	Present *string `json:"present,omitempty"` // 推荐问题的卡片
}

type MyAiVcMeetingSuggestQuestionResultBuilder struct {
	present     string // 推荐问题的卡片
	presentFlag bool
}

func NewMyAiVcMeetingSuggestQuestionResultBuilder() *MyAiVcMeetingSuggestQuestionResultBuilder {
	builder := &MyAiVcMeetingSuggestQuestionResultBuilder{}
	return builder
}

// 推荐问题的卡片
//
// 示例值：{"type": "card","body": "xxxxxx","callback_info": ""}
func (builder *MyAiVcMeetingSuggestQuestionResultBuilder) Present(present string) *MyAiVcMeetingSuggestQuestionResultBuilder {
	builder.present = present
	builder.presentFlag = true
	return builder
}

func (builder *MyAiVcMeetingSuggestQuestionResultBuilder) Build() *MyAiVcMeetingSuggestQuestionResult {
	req := &MyAiVcMeetingSuggestQuestionResult{}
	if builder.presentFlag {
		req.Present = &builder.present

	}
	return req
}

type MyAiVcMeetingTodoTaskResult struct {
	MeetingTodoTaskOrFailReason *string `json:"meeting_todo_task_or_fail_reason,omitempty"` // 会议待办for快捷指令

	MeetingTodoTask *string `json:"meeting_todo_task,omitempty"` // 会议待办for自由对话
}

type MyAiVcMeetingTodoTaskResultBuilder struct {
	meetingTodoTaskOrFailReason     string // 会议待办for快捷指令
	meetingTodoTaskOrFailReasonFlag bool

	meetingTodoTask     string // 会议待办for自由对话
	meetingTodoTaskFlag bool
}

func NewMyAiVcMeetingTodoTaskResultBuilder() *MyAiVcMeetingTodoTaskResultBuilder {
	builder := &MyAiVcMeetingTodoTaskResultBuilder{}
	return builder
}

// 会议待办for快捷指令
//
// 示例值：会议待办是xxx，或因录制未打开，待办未生成
func (builder *MyAiVcMeetingTodoTaskResultBuilder) MeetingTodoTaskOrFailReason(meetingTodoTaskOrFailReason string) *MyAiVcMeetingTodoTaskResultBuilder {
	builder.meetingTodoTaskOrFailReason = meetingTodoTaskOrFailReason
	builder.meetingTodoTaskOrFailReasonFlag = true
	return builder
}

// 会议待办for自由对话
//
// 示例值：会议待办是xxx
func (builder *MyAiVcMeetingTodoTaskResultBuilder) MeetingTodoTask(meetingTodoTask string) *MyAiVcMeetingTodoTaskResultBuilder {
	builder.meetingTodoTask = meetingTodoTask
	builder.meetingTodoTaskFlag = true
	return builder
}

func (builder *MyAiVcMeetingTodoTaskResultBuilder) Build() *MyAiVcMeetingTodoTaskResult {
	req := &MyAiVcMeetingTodoTaskResult{}
	if builder.meetingTodoTaskOrFailReasonFlag {
		req.MeetingTodoTaskOrFailReason = &builder.meetingTodoTaskOrFailReason

	}
	if builder.meetingTodoTaskFlag {
		req.MeetingTodoTask = &builder.meetingTodoTask

	}
	return req
}

type MyAiVcRoomExtra struct {
	CalendarInfo *string `json:"calendar_info,omitempty"` // 日程信息
}

type MyAiVcRoomExtraBuilder struct {
	calendarInfo     string // 日程信息
	calendarInfoFlag bool
}

func NewMyAiVcRoomExtraBuilder() *MyAiVcRoomExtraBuilder {
	builder := &MyAiVcRoomExtraBuilder{}
	return builder
}

// 日程信息
//
// 示例值：json字符串
func (builder *MyAiVcRoomExtraBuilder) CalendarInfo(calendarInfo string) *MyAiVcRoomExtraBuilder {
	builder.calendarInfo = calendarInfo
	builder.calendarInfoFlag = true
	return builder
}

func (builder *MyAiVcRoomExtraBuilder) Build() *MyAiVcRoomExtra {
	req := &MyAiVcRoomExtra{}
	if builder.calendarInfoFlag {
		req.CalendarInfo = &builder.calendarInfo

	}
	return req
}

type MyAiVcRoomRequestCommonParam struct {
	Language *string `json:"language,omitempty"` // 语言类型

	UtcOffset *string `json:"utc_offset,omitempty"` // 时区偏移,单位分钟,480表示东八区

	RoomId *string `json:"room_id,omitempty"` // 会议室 ID

	ClientVersion *string `json:"client_version,omitempty"` // 客户端版本

	OpenapiHistory *MyAiRoomOpenapiResponse `json:"openapi_history,omitempty"` // open api response 历史
}

type MyAiVcRoomRequestCommonParamBuilder struct {
	language     string // 语言类型
	languageFlag bool

	utcOffset     string // 时区偏移,单位分钟,480表示东八区
	utcOffsetFlag bool

	roomId     string // 会议室 ID
	roomIdFlag bool

	clientVersion     string // 客户端版本
	clientVersionFlag bool

	openapiHistory     *MyAiRoomOpenapiResponse // open api response 历史
	openapiHistoryFlag bool
}

func NewMyAiVcRoomRequestCommonParamBuilder() *MyAiVcRoomRequestCommonParamBuilder {
	builder := &MyAiVcRoomRequestCommonParamBuilder{}
	return builder
}

// 语言类型
//
// 示例值：zh-CN
func (builder *MyAiVcRoomRequestCommonParamBuilder) Language(language string) *MyAiVcRoomRequestCommonParamBuilder {
	builder.language = language
	builder.languageFlag = true
	return builder
}

// 时区偏移,单位分钟,480表示东八区
//
// 示例值：480
func (builder *MyAiVcRoomRequestCommonParamBuilder) UtcOffset(utcOffset string) *MyAiVcRoomRequestCommonParamBuilder {
	builder.utcOffset = utcOffset
	builder.utcOffsetFlag = true
	return builder
}

// 会议室 ID
//
// 示例值：12345678
func (builder *MyAiVcRoomRequestCommonParamBuilder) RoomId(roomId string) *MyAiVcRoomRequestCommonParamBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 客户端版本
//
// 示例值：0.0.0-alpha.0
func (builder *MyAiVcRoomRequestCommonParamBuilder) ClientVersion(clientVersion string) *MyAiVcRoomRequestCommonParamBuilder {
	builder.clientVersion = clientVersion
	builder.clientVersionFlag = true
	return builder
}

// open api response 历史
//
// 示例值：
func (builder *MyAiVcRoomRequestCommonParamBuilder) OpenapiHistory(openapiHistory *MyAiRoomOpenapiResponse) *MyAiVcRoomRequestCommonParamBuilder {
	builder.openapiHistory = openapiHistory
	builder.openapiHistoryFlag = true
	return builder
}

func (builder *MyAiVcRoomRequestCommonParamBuilder) Build() *MyAiVcRoomRequestCommonParam {
	req := &MyAiVcRoomRequestCommonParam{}
	if builder.languageFlag {
		req.Language = &builder.language

	}
	if builder.utcOffsetFlag {
		req.UtcOffset = &builder.utcOffset

	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId

	}
	if builder.clientVersionFlag {
		req.ClientVersion = &builder.clientVersion

	}
	if builder.openapiHistoryFlag {
		req.OpenapiHistory = builder.openapiHistory
	}
	return req
}

type MyAiVcRoomScenarioContext struct {
	Plugins []*MyAiPluginContext `json:"plugins,omitempty"` // 会话选择的插件列表

	Extra *MyAiVcRoomExtra `json:"extra,omitempty"` // 透传数据
}

type MyAiVcRoomScenarioContextBuilder struct {
	plugins     []*MyAiPluginContext // 会话选择的插件列表
	pluginsFlag bool

	extra     *MyAiVcRoomExtra // 透传数据
	extraFlag bool
}

func NewMyAiVcRoomScenarioContextBuilder() *MyAiVcRoomScenarioContextBuilder {
	builder := &MyAiVcRoomScenarioContextBuilder{}
	return builder
}

// 会话选择的插件列表
//
// 示例值：
func (builder *MyAiVcRoomScenarioContextBuilder) Plugins(plugins []*MyAiPluginContext) *MyAiVcRoomScenarioContextBuilder {
	builder.plugins = plugins
	builder.pluginsFlag = true
	return builder
}

// 透传数据
//
// 示例值：
func (builder *MyAiVcRoomScenarioContextBuilder) Extra(extra *MyAiVcRoomExtra) *MyAiVcRoomScenarioContextBuilder {
	builder.extra = extra
	builder.extraFlag = true
	return builder
}

func (builder *MyAiVcRoomScenarioContextBuilder) Build() *MyAiVcRoomScenarioContext {
	req := &MyAiVcRoomScenarioContext{}
	if builder.pluginsFlag {
		req.Plugins = builder.plugins
	}
	if builder.extraFlag {
		req.Extra = builder.extra
	}
	return req
}

type ObjectiveCheck struct {
	ObjectiveCheckTypes []int `json:"objective_check_types,omitempty"` // 客观分析类型

	ObjectiveCheckParams []*ObjectiveCheckParam `json:"objective_check_params,omitempty"` // 客观分析参数
}

type ObjectiveCheckBuilder struct {
	objectiveCheckTypes     []int // 客观分析类型
	objectiveCheckTypesFlag bool

	objectiveCheckParams     []*ObjectiveCheckParam // 客观分析参数
	objectiveCheckParamsFlag bool
}

func NewObjectiveCheckBuilder() *ObjectiveCheckBuilder {
	builder := &ObjectiveCheckBuilder{}
	return builder
}

// 客观分析类型
//
// 示例值：
func (builder *ObjectiveCheckBuilder) ObjectiveCheckTypes(objectiveCheckTypes []int) *ObjectiveCheckBuilder {
	builder.objectiveCheckTypes = objectiveCheckTypes
	builder.objectiveCheckTypesFlag = true
	return builder
}

// 客观分析参数
//
// 示例值：
func (builder *ObjectiveCheckBuilder) ObjectiveCheckParams(objectiveCheckParams []*ObjectiveCheckParam) *ObjectiveCheckBuilder {
	builder.objectiveCheckParams = objectiveCheckParams
	builder.objectiveCheckParamsFlag = true
	return builder
}

func (builder *ObjectiveCheckBuilder) Build() *ObjectiveCheck {
	req := &ObjectiveCheck{}
	if builder.objectiveCheckTypesFlag {
		req.ObjectiveCheckTypes = builder.objectiveCheckTypes
	}
	if builder.objectiveCheckParamsFlag {
		req.ObjectiveCheckParams = builder.objectiveCheckParams
	}
	return req
}

type ObjectiveCheckOutput struct {
	FailedLists []int `json:"failed_lists,omitempty"` // 失败列表

	StatusCode *int `json:"status_code,omitempty"` // 状态码
}

type ObjectiveCheckOutputBuilder struct {
	failedLists     []int // 失败列表
	failedListsFlag bool

	statusCode     int // 状态码
	statusCodeFlag bool
}

func NewObjectiveCheckOutputBuilder() *ObjectiveCheckOutputBuilder {
	builder := &ObjectiveCheckOutputBuilder{}
	return builder
}

// 失败列表
//
// 示例值：
func (builder *ObjectiveCheckOutputBuilder) FailedLists(failedLists []int) *ObjectiveCheckOutputBuilder {
	builder.failedLists = failedLists
	builder.failedListsFlag = true
	return builder
}

// 状态码
//
// 示例值：0
func (builder *ObjectiveCheckOutputBuilder) StatusCode(statusCode int) *ObjectiveCheckOutputBuilder {
	builder.statusCode = statusCode
	builder.statusCodeFlag = true
	return builder
}

func (builder *ObjectiveCheckOutputBuilder) Build() *ObjectiveCheckOutput {
	req := &ObjectiveCheckOutput{}
	if builder.failedListsFlag {
		req.FailedLists = builder.failedLists
	}
	if builder.statusCodeFlag {
		req.StatusCode = &builder.statusCode

	}
	return req
}

type ObjectiveCheckParam struct {
	Params []int `json:"params,omitempty"` // 主观分析参数
}

type ObjectiveCheckParamBuilder struct {
	params     []int // 主观分析参数
	paramsFlag bool
}

func NewObjectiveCheckParamBuilder() *ObjectiveCheckParamBuilder {
	builder := &ObjectiveCheckParamBuilder{}
	return builder
}

// 主观分析参数
//
// 示例值：
func (builder *ObjectiveCheckParamBuilder) Params(params []int) *ObjectiveCheckParamBuilder {
	builder.params = params
	builder.paramsFlag = true
	return builder
}

func (builder *ObjectiveCheckParamBuilder) Build() *ObjectiveCheckParam {
	req := &ObjectiveCheckParam{}
	if builder.paramsFlag {
		req.Params = builder.params
	}
	return req
}

type Options struct {
	Text *string `json:"text,omitempty"` // 选项文本名称/其他选项的对应文本

	Key *string `json:"key,omitempty"` // 选项的自定义key

	IsOther *bool `json:"is_other,omitempty"` // 区分是否为其他选项
}

type OptionsBuilder struct {
	text     string // 选项文本名称/其他选项的对应文本
	textFlag bool

	key     string // 选项的自定义key
	keyFlag bool

	isOther     bool // 区分是否为其他选项
	isOtherFlag bool
}

func NewOptionsBuilder() *OptionsBuilder {
	builder := &OptionsBuilder{}
	return builder
}

// 选项文本名称/其他选项的对应文本
//
// 示例值：选项1
func (builder *OptionsBuilder) Text(text string) *OptionsBuilder {
	builder.text = text
	builder.textFlag = true
	return builder
}

// 选项的自定义key
//
// 示例值：23213812938
func (builder *OptionsBuilder) Key(key string) *OptionsBuilder {
	builder.key = key
	builder.keyFlag = true
	return builder
}

// 区分是否为其他选项
//
// 示例值：false
func (builder *OptionsBuilder) IsOther(isOther bool) *OptionsBuilder {
	builder.isOther = isOther
	builder.isOtherFlag = true
	return builder
}

func (builder *OptionsBuilder) Build() *Options {
	req := &Options{}
	if builder.textFlag {
		req.Text = &builder.text

	}
	if builder.keyFlag {
		req.Key = &builder.key

	}
	if builder.isOtherFlag {
		req.IsOther = &builder.isOther

	}
	return req
}

type Participant struct {
	ParticipantName *string `json:"participant_name,omitempty"` // 参会者

	Department *string `json:"department,omitempty"` // 部门

	UserId *string `json:"user_id,omitempty"` // 用户ID

	MeetingRoomId *string `json:"meeting_room_id,omitempty"` // 会议室ID

	EmployeeId *string `json:"employee_id,omitempty"` // 工号

	Phone *string `json:"phone,omitempty"` // 电话

	Email *string `json:"email,omitempty"` // 邮箱

	Device *string `json:"device,omitempty"` // 设备

	AppVersion *string `json:"app_version,omitempty"` // 客户端版本

	PublicIp *string `json:"public_ip,omitempty"` // 公网IP

	InternalIp *string `json:"internal_ip,omitempty"` // 内网IP

	UseRtcProxy *bool `json:"use_rtc_proxy,omitempty"` // 代理服务

	Location *string `json:"location,omitempty"` // 位置

	NetworkType *string `json:"network_type,omitempty"` // 网络类型

	Protocol *string `json:"protocol,omitempty"` // 连接类型

	Microphone *string `json:"microphone,omitempty"` // 麦克风

	Speaker *string `json:"speaker,omitempty"` // 扬声器

	Camera *string `json:"camera,omitempty"` // 摄像头

	Audio *bool `json:"audio,omitempty"` // 音频

	Video *bool `json:"video,omitempty"` // 视频

	Sharing *bool `json:"sharing,omitempty"` // 共享

	JoinTime *string `json:"join_time,omitempty"` // 入会时间

	LeaveTime *string `json:"leave_time,omitempty"` // 离会时间

	TimeInMeeting *string `json:"time_in_meeting,omitempty"` // 参会时长

	LeaveReason *string `json:"leave_reason,omitempty"` // 离会原因

	AcceptStatus *int `json:"accept_status,omitempty"` // 日程响应状态

	IsExternal *bool `json:"is_external,omitempty"` // 是否为外部参会人

	WebinarUserRole *string `json:"webinar_user_role,omitempty"` // 网络研讨会中的角色
}

type ParticipantBuilder struct {
	participantName     string // 参会者
	participantNameFlag bool

	department     string // 部门
	departmentFlag bool

	userId     string // 用户ID
	userIdFlag bool

	meetingRoomId     string // 会议室ID
	meetingRoomIdFlag bool

	employeeId     string // 工号
	employeeIdFlag bool

	phone     string // 电话
	phoneFlag bool

	email     string // 邮箱
	emailFlag bool

	device     string // 设备
	deviceFlag bool

	appVersion     string // 客户端版本
	appVersionFlag bool

	publicIp     string // 公网IP
	publicIpFlag bool

	internalIp     string // 内网IP
	internalIpFlag bool

	useRtcProxy     bool // 代理服务
	useRtcProxyFlag bool

	location     string // 位置
	locationFlag bool

	networkType     string // 网络类型
	networkTypeFlag bool

	protocol     string // 连接类型
	protocolFlag bool

	microphone     string // 麦克风
	microphoneFlag bool

	speaker     string // 扬声器
	speakerFlag bool

	camera     string // 摄像头
	cameraFlag bool

	audio     bool // 音频
	audioFlag bool

	video     bool // 视频
	videoFlag bool

	sharing     bool // 共享
	sharingFlag bool

	joinTime     string // 入会时间
	joinTimeFlag bool

	leaveTime     string // 离会时间
	leaveTimeFlag bool

	timeInMeeting     string // 参会时长
	timeInMeetingFlag bool

	leaveReason     string // 离会原因
	leaveReasonFlag bool

	acceptStatus     int // 日程响应状态
	acceptStatusFlag bool

	isExternal     bool // 是否为外部参会人
	isExternalFlag bool

	webinarUserRole     string // 网络研讨会中的角色
	webinarUserRoleFlag bool
}

func NewParticipantBuilder() *ParticipantBuilder {
	builder := &ParticipantBuilder{}
	return builder
}

// 参会者
//
// 示例值：kehan
func (builder *ParticipantBuilder) ParticipantName(participantName string) *ParticipantBuilder {
	builder.participantName = participantName
	builder.participantNameFlag = true
	return builder
}

// 部门
//
// 示例值：development
func (builder *ParticipantBuilder) Department(department string) *ParticipantBuilder {
	builder.department = department
	builder.departmentFlag = true
	return builder
}

// 用户ID
//
// 示例值：8efq90
func (builder *ParticipantBuilder) UserId(userId string) *ParticipantBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 会议室ID
//
// 示例值：omm_8efq90
func (builder *ParticipantBuilder) MeetingRoomId(meetingRoomId string) *ParticipantBuilder {
	builder.meetingRoomId = meetingRoomId
	builder.meetingRoomIdFlag = true
	return builder
}

// 工号
//
// 示例值：202205789
func (builder *ParticipantBuilder) EmployeeId(employeeId string) *ParticipantBuilder {
	builder.employeeId = employeeId
	builder.employeeIdFlag = true
	return builder
}

// 电话
//
// 示例值：021-883889
func (builder *ParticipantBuilder) Phone(phone string) *ParticipantBuilder {
	builder.phone = phone
	builder.phoneFlag = true
	return builder
}

// 邮箱
//
// 示例值：xxxx@163.com
func (builder *ParticipantBuilder) Email(email string) *ParticipantBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 设备
//
// 示例值：windows
func (builder *ParticipantBuilder) Device(device string) *ParticipantBuilder {
	builder.device = device
	builder.deviceFlag = true
	return builder
}

// 客户端版本
//
// 示例值：5.26.0-alpha.38
func (builder *ParticipantBuilder) AppVersion(appVersion string) *ParticipantBuilder {
	builder.appVersion = appVersion
	builder.appVersionFlag = true
	return builder
}

// 公网IP
//
// 示例值：27.xx.xx.183
func (builder *ParticipantBuilder) PublicIp(publicIp string) *ParticipantBuilder {
	builder.publicIp = publicIp
	builder.publicIpFlag = true
	return builder
}

// 内网IP
//
// 示例值：192.xx.xx.13
func (builder *ParticipantBuilder) InternalIp(internalIp string) *ParticipantBuilder {
	builder.internalIp = internalIp
	builder.internalIpFlag = true
	return builder
}

// 代理服务
//
// 示例值：false
func (builder *ParticipantBuilder) UseRtcProxy(useRtcProxy bool) *ParticipantBuilder {
	builder.useRtcProxy = useRtcProxy
	builder.useRtcProxyFlag = true
	return builder
}

// 位置
//
// 示例值：东莞
func (builder *ParticipantBuilder) Location(location string) *ParticipantBuilder {
	builder.location = location
	builder.locationFlag = true
	return builder
}

// 网络类型
//
// 示例值：wifi
func (builder *ParticipantBuilder) NetworkType(networkType string) *ParticipantBuilder {
	builder.networkType = networkType
	builder.networkTypeFlag = true
	return builder
}

// 连接类型
//
// 示例值：udp
func (builder *ParticipantBuilder) Protocol(protocol string) *ParticipantBuilder {
	builder.protocol = protocol
	builder.protocolFlag = true
	return builder
}

// 麦克风
//
// 示例值：麦克风阵列 (Realtek(R) Audio)
func (builder *ParticipantBuilder) Microphone(microphone string) *ParticipantBuilder {
	builder.microphone = microphone
	builder.microphoneFlag = true
	return builder
}

// 扬声器
//
// 示例值：扬声器 (Realtek(R) Audio)
func (builder *ParticipantBuilder) Speaker(speaker string) *ParticipantBuilder {
	builder.speaker = speaker
	builder.speakerFlag = true
	return builder
}

// 摄像头
//
// 示例值：HD Camera
func (builder *ParticipantBuilder) Camera(camera string) *ParticipantBuilder {
	builder.camera = camera
	builder.cameraFlag = true
	return builder
}

// 音频
//
// 示例值：true
func (builder *ParticipantBuilder) Audio(audio bool) *ParticipantBuilder {
	builder.audio = audio
	builder.audioFlag = true
	return builder
}

// 视频
//
// 示例值：true
func (builder *ParticipantBuilder) Video(video bool) *ParticipantBuilder {
	builder.video = video
	builder.videoFlag = true
	return builder
}

// 共享
//
// 示例值：false
func (builder *ParticipantBuilder) Sharing(sharing bool) *ParticipantBuilder {
	builder.sharing = sharing
	builder.sharingFlag = true
	return builder
}

// 入会时间
//
// 示例值：2022.12.23 11:16:59 (GMT+08:00)
func (builder *ParticipantBuilder) JoinTime(joinTime string) *ParticipantBuilder {
	builder.joinTime = joinTime
	builder.joinTimeFlag = true
	return builder
}

// 离会时间
//
// 示例值：2022.12.23 11:18:51 (GMT+08:00)
func (builder *ParticipantBuilder) LeaveTime(leaveTime string) *ParticipantBuilder {
	builder.leaveTime = leaveTime
	builder.leaveTimeFlag = true
	return builder
}

// 参会时长
//
// 示例值：00:01:52
func (builder *ParticipantBuilder) TimeInMeeting(timeInMeeting string) *ParticipantBuilder {
	builder.timeInMeeting = timeInMeeting
	builder.timeInMeetingFlag = true
	return builder
}

// 离会原因
//
// 示例值：主持人结束会议
func (builder *ParticipantBuilder) LeaveReason(leaveReason string) *ParticipantBuilder {
	builder.leaveReason = leaveReason
	builder.leaveReasonFlag = true
	return builder
}

// 日程响应状态
//
// 示例值：
func (builder *ParticipantBuilder) AcceptStatus(acceptStatus int) *ParticipantBuilder {
	builder.acceptStatus = acceptStatus
	builder.acceptStatusFlag = true
	return builder
}

// 是否为外部参会人
//
// 示例值：false
func (builder *ParticipantBuilder) IsExternal(isExternal bool) *ParticipantBuilder {
	builder.isExternal = isExternal
	builder.isExternalFlag = true
	return builder
}

// 网络研讨会中的角色
//
// 示例值：0
func (builder *ParticipantBuilder) WebinarUserRole(webinarUserRole string) *ParticipantBuilder {
	builder.webinarUserRole = webinarUserRole
	builder.webinarUserRoleFlag = true
	return builder
}

func (builder *ParticipantBuilder) Build() *Participant {
	req := &Participant{}
	if builder.participantNameFlag {
		req.ParticipantName = &builder.participantName

	}
	if builder.departmentFlag {
		req.Department = &builder.department

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.meetingRoomIdFlag {
		req.MeetingRoomId = &builder.meetingRoomId

	}
	if builder.employeeIdFlag {
		req.EmployeeId = &builder.employeeId

	}
	if builder.phoneFlag {
		req.Phone = &builder.phone

	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.deviceFlag {
		req.Device = &builder.device

	}
	if builder.appVersionFlag {
		req.AppVersion = &builder.appVersion

	}
	if builder.publicIpFlag {
		req.PublicIp = &builder.publicIp

	}
	if builder.internalIpFlag {
		req.InternalIp = &builder.internalIp

	}
	if builder.useRtcProxyFlag {
		req.UseRtcProxy = &builder.useRtcProxy

	}
	if builder.locationFlag {
		req.Location = &builder.location

	}
	if builder.networkTypeFlag {
		req.NetworkType = &builder.networkType

	}
	if builder.protocolFlag {
		req.Protocol = &builder.protocol

	}
	if builder.microphoneFlag {
		req.Microphone = &builder.microphone

	}
	if builder.speakerFlag {
		req.Speaker = &builder.speaker

	}
	if builder.cameraFlag {
		req.Camera = &builder.camera

	}
	if builder.audioFlag {
		req.Audio = &builder.audio

	}
	if builder.videoFlag {
		req.Video = &builder.video

	}
	if builder.sharingFlag {
		req.Sharing = &builder.sharing

	}
	if builder.joinTimeFlag {
		req.JoinTime = &builder.joinTime

	}
	if builder.leaveTimeFlag {
		req.LeaveTime = &builder.leaveTime

	}
	if builder.timeInMeetingFlag {
		req.TimeInMeeting = &builder.timeInMeeting

	}
	if builder.leaveReasonFlag {
		req.LeaveReason = &builder.leaveReason

	}
	if builder.acceptStatusFlag {
		req.AcceptStatus = &builder.acceptStatus

	}
	if builder.isExternalFlag {
		req.IsExternal = &builder.isExternal

	}
	if builder.webinarUserRoleFlag {
		req.WebinarUserRole = &builder.webinarUserRole

	}
	return req
}

type ParticipantQuality struct {
	Network *QualityNetwork `json:"network,omitempty"` // 网络

	Audio *QualityAudio `json:"audio,omitempty"` // 音频

	Video *QualityVideoSharing `json:"video,omitempty"` // 视频

	ScreenSharing *QualityVideoSharing `json:"screen_sharing,omitempty"` // 共享屏幕

	CpuUsage *QualityCpuUsage `json:"cpu_usage,omitempty"` // Cpu使用量
}

type ParticipantQualityBuilder struct {
	network     *QualityNetwork // 网络
	networkFlag bool

	audio     *QualityAudio // 音频
	audioFlag bool

	video     *QualityVideoSharing // 视频
	videoFlag bool

	screenSharing     *QualityVideoSharing // 共享屏幕
	screenSharingFlag bool

	cpuUsage     *QualityCpuUsage // Cpu使用量
	cpuUsageFlag bool
}

func NewParticipantQualityBuilder() *ParticipantQualityBuilder {
	builder := &ParticipantQualityBuilder{}
	return builder
}

// 网络
//
// 示例值：
func (builder *ParticipantQualityBuilder) Network(network *QualityNetwork) *ParticipantQualityBuilder {
	builder.network = network
	builder.networkFlag = true
	return builder
}

// 音频
//
// 示例值：
func (builder *ParticipantQualityBuilder) Audio(audio *QualityAudio) *ParticipantQualityBuilder {
	builder.audio = audio
	builder.audioFlag = true
	return builder
}

// 视频
//
// 示例值：
func (builder *ParticipantQualityBuilder) Video(video *QualityVideoSharing) *ParticipantQualityBuilder {
	builder.video = video
	builder.videoFlag = true
	return builder
}

// 共享屏幕
//
// 示例值：
func (builder *ParticipantQualityBuilder) ScreenSharing(screenSharing *QualityVideoSharing) *ParticipantQualityBuilder {
	builder.screenSharing = screenSharing
	builder.screenSharingFlag = true
	return builder
}

// Cpu使用量
//
// 示例值：
func (builder *ParticipantQualityBuilder) CpuUsage(cpuUsage *QualityCpuUsage) *ParticipantQualityBuilder {
	builder.cpuUsage = cpuUsage
	builder.cpuUsageFlag = true
	return builder
}

func (builder *ParticipantQualityBuilder) Build() *ParticipantQuality {
	req := &ParticipantQuality{}
	if builder.networkFlag {
		req.Network = builder.network
	}
	if builder.audioFlag {
		req.Audio = builder.audio
	}
	if builder.videoFlag {
		req.Video = builder.video
	}
	if builder.screenSharingFlag {
		req.ScreenSharing = builder.screenSharing
	}
	if builder.cpuUsageFlag {
		req.CpuUsage = builder.cpuUsage
	}
	return req
}

type PstnSipInfo struct {
	Nickname *string `json:"nickname,omitempty"` // 给pstn/sip用户设置的临时昵称

	MainAddress *string `json:"main_address,omitempty"` // pstn/sip主机号，格式为：[国际冠字]-[电话区号][电话号码]，当前仅支持国内手机及固定电话号码
}

type PstnSipInfoBuilder struct {
	nickname     string // 给pstn/sip用户设置的临时昵称
	nicknameFlag bool

	mainAddress     string // pstn/sip主机号，格式为：[国际冠字]-[电话区号][电话号码]，当前仅支持国内手机及固定电话号码
	mainAddressFlag bool
}

func NewPstnSipInfoBuilder() *PstnSipInfoBuilder {
	builder := &PstnSipInfoBuilder{}
	return builder
}

// 给pstn/sip用户设置的临时昵称
//
// 示例值：dodo
func (builder *PstnSipInfoBuilder) Nickname(nickname string) *PstnSipInfoBuilder {
	builder.nickname = nickname
	builder.nicknameFlag = true
	return builder
}

// pstn/sip主机号，格式为：[国际冠字]-[电话区号][电话号码]，当前仅支持国内手机及固定电话号码
//
// 示例值：+86-02187654321
func (builder *PstnSipInfoBuilder) MainAddress(mainAddress string) *PstnSipInfoBuilder {
	builder.mainAddress = mainAddress
	builder.mainAddressFlag = true
	return builder
}

func (builder *PstnSipInfoBuilder) Build() *PstnSipInfo {
	req := &PstnSipInfo{}
	if builder.nicknameFlag {
		req.Nickname = &builder.nickname

	}
	if builder.mainAddressFlag {
		req.MainAddress = &builder.mainAddress

	}
	return req
}

type QualityAudio struct {
	Time *string `json:"time,omitempty"` // 时间

	MicInputVolume *string `json:"mic_input_volume,omitempty"` // 麦克风采集音量

	SpeakerVolume *string `json:"speaker_volume,omitempty"` // 扬声器播放音量

	BitrateReceived *string `json:"bitrate_received,omitempty"` // 码率（接收）

	LatencyReceived *string `json:"latency_received,omitempty"` // 延迟（接收）

	JitterReceived *string `json:"jitter_received,omitempty"` // 抖动（接收）

	BitrateSent *string `json:"bitrate_sent,omitempty"` // 码率（发送）

	LatencySent *string `json:"latency_sent,omitempty"` // 延迟（发送）

	JitterSent *string `json:"jitter_sent,omitempty"` // 抖动（发送）
}

type QualityAudioBuilder struct {
	time     string // 时间
	timeFlag bool

	micInputVolume     string // 麦克风采集音量
	micInputVolumeFlag bool

	speakerVolume     string // 扬声器播放音量
	speakerVolumeFlag bool

	bitrateReceived     string // 码率（接收）
	bitrateReceivedFlag bool

	latencyReceived     string // 延迟（接收）
	latencyReceivedFlag bool

	jitterReceived     string // 抖动（接收）
	jitterReceivedFlag bool

	bitrateSent     string // 码率（发送）
	bitrateSentFlag bool

	latencySent     string // 延迟（发送）
	latencySentFlag bool

	jitterSent     string // 抖动（发送）
	jitterSentFlag bool
}

func NewQualityAudioBuilder() *QualityAudioBuilder {
	builder := &QualityAudioBuilder{}
	return builder
}

// 时间
//
// 示例值：2022.12.23 11:16:00 (GMT+08:00)
func (builder *QualityAudioBuilder) Time(time string) *QualityAudioBuilder {
	builder.time = time
	builder.timeFlag = true
	return builder
}

// 麦克风采集音量
//
// 示例值：6dB
func (builder *QualityAudioBuilder) MicInputVolume(micInputVolume string) *QualityAudioBuilder {
	builder.micInputVolume = micInputVolume
	builder.micInputVolumeFlag = true
	return builder
}

// 扬声器播放音量
//
// 示例值：8dB
func (builder *QualityAudioBuilder) SpeakerVolume(speakerVolume string) *QualityAudioBuilder {
	builder.speakerVolume = speakerVolume
	builder.speakerVolumeFlag = true
	return builder
}

// 码率（接收）
//
// 示例值：3kbps
func (builder *QualityAudioBuilder) BitrateReceived(bitrateReceived string) *QualityAudioBuilder {
	builder.bitrateReceived = bitrateReceived
	builder.bitrateReceivedFlag = true
	return builder
}

// 延迟（接收）
//
// 示例值：100ms
func (builder *QualityAudioBuilder) LatencyReceived(latencyReceived string) *QualityAudioBuilder {
	builder.latencyReceived = latencyReceived
	builder.latencyReceivedFlag = true
	return builder
}

// 抖动（接收）
//
// 示例值：100ms
func (builder *QualityAudioBuilder) JitterReceived(jitterReceived string) *QualityAudioBuilder {
	builder.jitterReceived = jitterReceived
	builder.jitterReceivedFlag = true
	return builder
}

// 码率（发送）
//
// 示例值：9kbps
func (builder *QualityAudioBuilder) BitrateSent(bitrateSent string) *QualityAudioBuilder {
	builder.bitrateSent = bitrateSent
	builder.bitrateSentFlag = true
	return builder
}

// 延迟（发送）
//
// 示例值：100ms
func (builder *QualityAudioBuilder) LatencySent(latencySent string) *QualityAudioBuilder {
	builder.latencySent = latencySent
	builder.latencySentFlag = true
	return builder
}

// 抖动（发送）
//
// 示例值：100ms
func (builder *QualityAudioBuilder) JitterSent(jitterSent string) *QualityAudioBuilder {
	builder.jitterSent = jitterSent
	builder.jitterSentFlag = true
	return builder
}

func (builder *QualityAudioBuilder) Build() *QualityAudio {
	req := &QualityAudio{}
	if builder.timeFlag {
		req.Time = &builder.time

	}
	if builder.micInputVolumeFlag {
		req.MicInputVolume = &builder.micInputVolume

	}
	if builder.speakerVolumeFlag {
		req.SpeakerVolume = &builder.speakerVolume

	}
	if builder.bitrateReceivedFlag {
		req.BitrateReceived = &builder.bitrateReceived

	}
	if builder.latencyReceivedFlag {
		req.LatencyReceived = &builder.latencyReceived

	}
	if builder.jitterReceivedFlag {
		req.JitterReceived = &builder.jitterReceived

	}
	if builder.bitrateSentFlag {
		req.BitrateSent = &builder.bitrateSent

	}
	if builder.latencySentFlag {
		req.LatencySent = &builder.latencySent

	}
	if builder.jitterSentFlag {
		req.JitterSent = &builder.jitterSent

	}
	return req
}

type QualityCpuUsage struct {
	Time *string `json:"time,omitempty"` // 时间

	ClientAvgCpuUsage *string `json:"client_avg_cpu_usage,omitempty"` // 客户端平均 CPU 占用

	ClientMaxCpuUsage *string `json:"client_max_cpu_usage,omitempty"` // 客户端最大 CPU 占用

	SystemAvgCpuUsage *string `json:"system_avg_cpu_usage,omitempty"` // 系统平均 CPU 占用

	SystemMaxCpuUsage *string `json:"system_max_cpu_usage,omitempty"` // 系统最大 CPU 占用
}

type QualityCpuUsageBuilder struct {
	time     string // 时间
	timeFlag bool

	clientAvgCpuUsage     string // 客户端平均 CPU 占用
	clientAvgCpuUsageFlag bool

	clientMaxCpuUsage     string // 客户端最大 CPU 占用
	clientMaxCpuUsageFlag bool

	systemAvgCpuUsage     string // 系统平均 CPU 占用
	systemAvgCpuUsageFlag bool

	systemMaxCpuUsage     string // 系统最大 CPU 占用
	systemMaxCpuUsageFlag bool
}

func NewQualityCpuUsageBuilder() *QualityCpuUsageBuilder {
	builder := &QualityCpuUsageBuilder{}
	return builder
}

// 时间
//
// 示例值：2022.12.23 11:17:00
func (builder *QualityCpuUsageBuilder) Time(time string) *QualityCpuUsageBuilder {
	builder.time = time
	builder.timeFlag = true
	return builder
}

// 客户端平均 CPU 占用
//
// 示例值：0.8%
func (builder *QualityCpuUsageBuilder) ClientAvgCpuUsage(clientAvgCpuUsage string) *QualityCpuUsageBuilder {
	builder.clientAvgCpuUsage = clientAvgCpuUsage
	builder.clientAvgCpuUsageFlag = true
	return builder
}

// 客户端最大 CPU 占用
//
// 示例值：2.3%
func (builder *QualityCpuUsageBuilder) ClientMaxCpuUsage(clientMaxCpuUsage string) *QualityCpuUsageBuilder {
	builder.clientMaxCpuUsage = clientMaxCpuUsage
	builder.clientMaxCpuUsageFlag = true
	return builder
}

// 系统平均 CPU 占用
//
// 示例值：8.3%
func (builder *QualityCpuUsageBuilder) SystemAvgCpuUsage(systemAvgCpuUsage string) *QualityCpuUsageBuilder {
	builder.systemAvgCpuUsage = systemAvgCpuUsage
	builder.systemAvgCpuUsageFlag = true
	return builder
}

// 系统最大 CPU 占用
//
// 示例值：30%
func (builder *QualityCpuUsageBuilder) SystemMaxCpuUsage(systemMaxCpuUsage string) *QualityCpuUsageBuilder {
	builder.systemMaxCpuUsage = systemMaxCpuUsage
	builder.systemMaxCpuUsageFlag = true
	return builder
}

func (builder *QualityCpuUsageBuilder) Build() *QualityCpuUsage {
	req := &QualityCpuUsage{}
	if builder.timeFlag {
		req.Time = &builder.time

	}
	if builder.clientAvgCpuUsageFlag {
		req.ClientAvgCpuUsage = &builder.clientAvgCpuUsage

	}
	if builder.clientMaxCpuUsageFlag {
		req.ClientMaxCpuUsage = &builder.clientMaxCpuUsage

	}
	if builder.systemAvgCpuUsageFlag {
		req.SystemAvgCpuUsage = &builder.systemAvgCpuUsage

	}
	if builder.systemMaxCpuUsageFlag {
		req.SystemMaxCpuUsage = &builder.systemMaxCpuUsage

	}
	return req
}

type QualityNetwork struct {
	Time *string `json:"time,omitempty"` // 时间

	NetworkDelay *string `json:"network_delay,omitempty"` // 网络延迟

	BitrateReceived *string `json:"bitrate_received,omitempty"` // 码率（接收）

	PacketLossAvgReceived *string `json:"packet_loss_avg_received,omitempty"` // 丢包 - 平均（接收）

	PacketLossMaxReceived *string `json:"packet_loss_max_received,omitempty"` // 丢包 - 最大（接收）

	BitrateSent *string `json:"bitrate_sent,omitempty"` // 码率（发送）

	PacketLossAvgSent *string `json:"packet_loss_avg_sent,omitempty"` // 丢包 - 平均（发送）

	PacketLossMaxSent *string `json:"packet_loss_max_sent,omitempty"` // 丢包 - 最大（发送）
}

type QualityNetworkBuilder struct {
	time     string // 时间
	timeFlag bool

	networkDelay     string // 网络延迟
	networkDelayFlag bool

	bitrateReceived     string // 码率（接收）
	bitrateReceivedFlag bool

	packetLossAvgReceived     string // 丢包 - 平均（接收）
	packetLossAvgReceivedFlag bool

	packetLossMaxReceived     string // 丢包 - 最大（接收）
	packetLossMaxReceivedFlag bool

	bitrateSent     string // 码率（发送）
	bitrateSentFlag bool

	packetLossAvgSent     string // 丢包 - 平均（发送）
	packetLossAvgSentFlag bool

	packetLossMaxSent     string // 丢包 - 最大（发送）
	packetLossMaxSentFlag bool
}

func NewQualityNetworkBuilder() *QualityNetworkBuilder {
	builder := &QualityNetworkBuilder{}
	return builder
}

// 时间
//
// 示例值：2022.12.23 11:16:00 (GMT+08:00)
func (builder *QualityNetworkBuilder) Time(time string) *QualityNetworkBuilder {
	builder.time = time
	builder.timeFlag = true
	return builder
}

// 网络延迟
//
// 示例值：100ms
func (builder *QualityNetworkBuilder) NetworkDelay(networkDelay string) *QualityNetworkBuilder {
	builder.networkDelay = networkDelay
	builder.networkDelayFlag = true
	return builder
}

// 码率（接收）
//
// 示例值：8kbps
func (builder *QualityNetworkBuilder) BitrateReceived(bitrateReceived string) *QualityNetworkBuilder {
	builder.bitrateReceived = bitrateReceived
	builder.bitrateReceivedFlag = true
	return builder
}

// 丢包 - 平均（接收）
//
// 示例值：8%
func (builder *QualityNetworkBuilder) PacketLossAvgReceived(packetLossAvgReceived string) *QualityNetworkBuilder {
	builder.packetLossAvgReceived = packetLossAvgReceived
	builder.packetLossAvgReceivedFlag = true
	return builder
}

// 丢包 - 最大（接收）
//
// 示例值：9%
func (builder *QualityNetworkBuilder) PacketLossMaxReceived(packetLossMaxReceived string) *QualityNetworkBuilder {
	builder.packetLossMaxReceived = packetLossMaxReceived
	builder.packetLossMaxReceivedFlag = true
	return builder
}

// 码率（发送）
//
// 示例值：9kbps
func (builder *QualityNetworkBuilder) BitrateSent(bitrateSent string) *QualityNetworkBuilder {
	builder.bitrateSent = bitrateSent
	builder.bitrateSentFlag = true
	return builder
}

// 丢包 - 平均（发送）
//
// 示例值：8%
func (builder *QualityNetworkBuilder) PacketLossAvgSent(packetLossAvgSent string) *QualityNetworkBuilder {
	builder.packetLossAvgSent = packetLossAvgSent
	builder.packetLossAvgSentFlag = true
	return builder
}

// 丢包 - 最大（发送）
//
// 示例值：10%
func (builder *QualityNetworkBuilder) PacketLossMaxSent(packetLossMaxSent string) *QualityNetworkBuilder {
	builder.packetLossMaxSent = packetLossMaxSent
	builder.packetLossMaxSentFlag = true
	return builder
}

func (builder *QualityNetworkBuilder) Build() *QualityNetwork {
	req := &QualityNetwork{}
	if builder.timeFlag {
		req.Time = &builder.time

	}
	if builder.networkDelayFlag {
		req.NetworkDelay = &builder.networkDelay

	}
	if builder.bitrateReceivedFlag {
		req.BitrateReceived = &builder.bitrateReceived

	}
	if builder.packetLossAvgReceivedFlag {
		req.PacketLossAvgReceived = &builder.packetLossAvgReceived

	}
	if builder.packetLossMaxReceivedFlag {
		req.PacketLossMaxReceived = &builder.packetLossMaxReceived

	}
	if builder.bitrateSentFlag {
		req.BitrateSent = &builder.bitrateSent

	}
	if builder.packetLossAvgSentFlag {
		req.PacketLossAvgSent = &builder.packetLossAvgSent

	}
	if builder.packetLossMaxSentFlag {
		req.PacketLossMaxSent = &builder.packetLossMaxSent

	}
	return req
}

type QualityVideoSharing struct {
	Time *string `json:"time,omitempty"` // 时间

	BitrateReceived *string `json:"bitrate_received,omitempty"` // 码率（接收）

	LatencyReceived *string `json:"latency_received,omitempty"` // 延迟（接收）

	JitterReceived *string `json:"jitter_received,omitempty"` // 抖动（接收）

	MaximumResolutionReceived *string `json:"maximum_resolution_received,omitempty"` // 最大分辨率（接收）

	FramerateReceived *string `json:"framerate_received,omitempty"` // 帧率（接收）

	BitrateSent *string `json:"bitrate_sent,omitempty"` // 码率（发送）

	LatencySent *string `json:"latency_sent,omitempty"` // 延迟（发送）

	JitterSent *string `json:"jitter_sent,omitempty"` // 抖动（发送）

	MaximumResolutionSent *string `json:"maximum_resolution_sent,omitempty"` // 最大分辨率（发送）

	FramerateSent *string `json:"framerate_sent,omitempty"` // 帧率（发送）
}

type QualityVideoSharingBuilder struct {
	time     string // 时间
	timeFlag bool

	bitrateReceived     string // 码率（接收）
	bitrateReceivedFlag bool

	latencyReceived     string // 延迟（接收）
	latencyReceivedFlag bool

	jitterReceived     string // 抖动（接收）
	jitterReceivedFlag bool

	maximumResolutionReceived     string // 最大分辨率（接收）
	maximumResolutionReceivedFlag bool

	framerateReceived     string // 帧率（接收）
	framerateReceivedFlag bool

	bitrateSent     string // 码率（发送）
	bitrateSentFlag bool

	latencySent     string // 延迟（发送）
	latencySentFlag bool

	jitterSent     string // 抖动（发送）
	jitterSentFlag bool

	maximumResolutionSent     string // 最大分辨率（发送）
	maximumResolutionSentFlag bool

	framerateSent     string // 帧率（发送）
	framerateSentFlag bool
}

func NewQualityVideoSharingBuilder() *QualityVideoSharingBuilder {
	builder := &QualityVideoSharingBuilder{}
	return builder
}

// 时间
//
// 示例值：2022.12.23 11:16:00 (GMT+08:00)
func (builder *QualityVideoSharingBuilder) Time(time string) *QualityVideoSharingBuilder {
	builder.time = time
	builder.timeFlag = true
	return builder
}

// 码率（接收）
//
// 示例值：8kbps
func (builder *QualityVideoSharingBuilder) BitrateReceived(bitrateReceived string) *QualityVideoSharingBuilder {
	builder.bitrateReceived = bitrateReceived
	builder.bitrateReceivedFlag = true
	return builder
}

// 延迟（接收）
//
// 示例值：100ms
func (builder *QualityVideoSharingBuilder) LatencyReceived(latencyReceived string) *QualityVideoSharingBuilder {
	builder.latencyReceived = latencyReceived
	builder.latencyReceivedFlag = true
	return builder
}

// 抖动（接收）
//
// 示例值：100ms
func (builder *QualityVideoSharingBuilder) JitterReceived(jitterReceived string) *QualityVideoSharingBuilder {
	builder.jitterReceived = jitterReceived
	builder.jitterReceivedFlag = true
	return builder
}

// 最大分辨率（接收）
//
// 示例值：1080P
func (builder *QualityVideoSharingBuilder) MaximumResolutionReceived(maximumResolutionReceived string) *QualityVideoSharingBuilder {
	builder.maximumResolutionReceived = maximumResolutionReceived
	builder.maximumResolutionReceivedFlag = true
	return builder
}

// 帧率（接收）
//
// 示例值：100fps
func (builder *QualityVideoSharingBuilder) FramerateReceived(framerateReceived string) *QualityVideoSharingBuilder {
	builder.framerateReceived = framerateReceived
	builder.framerateReceivedFlag = true
	return builder
}

// 码率（发送）
//
// 示例值：9kbps
func (builder *QualityVideoSharingBuilder) BitrateSent(bitrateSent string) *QualityVideoSharingBuilder {
	builder.bitrateSent = bitrateSent
	builder.bitrateSentFlag = true
	return builder
}

// 延迟（发送）
//
// 示例值：100ms
func (builder *QualityVideoSharingBuilder) LatencySent(latencySent string) *QualityVideoSharingBuilder {
	builder.latencySent = latencySent
	builder.latencySentFlag = true
	return builder
}

// 抖动（发送）
//
// 示例值：100ms
func (builder *QualityVideoSharingBuilder) JitterSent(jitterSent string) *QualityVideoSharingBuilder {
	builder.jitterSent = jitterSent
	builder.jitterSentFlag = true
	return builder
}

// 最大分辨率（发送）
//
// 示例值：4K
func (builder *QualityVideoSharingBuilder) MaximumResolutionSent(maximumResolutionSent string) *QualityVideoSharingBuilder {
	builder.maximumResolutionSent = maximumResolutionSent
	builder.maximumResolutionSentFlag = true
	return builder
}

// 帧率（发送）
//
// 示例值：90fps
func (builder *QualityVideoSharingBuilder) FramerateSent(framerateSent string) *QualityVideoSharingBuilder {
	builder.framerateSent = framerateSent
	builder.framerateSentFlag = true
	return builder
}

func (builder *QualityVideoSharingBuilder) Build() *QualityVideoSharing {
	req := &QualityVideoSharing{}
	if builder.timeFlag {
		req.Time = &builder.time

	}
	if builder.bitrateReceivedFlag {
		req.BitrateReceived = &builder.bitrateReceived

	}
	if builder.latencyReceivedFlag {
		req.LatencyReceived = &builder.latencyReceived

	}
	if builder.jitterReceivedFlag {
		req.JitterReceived = &builder.jitterReceived

	}
	if builder.maximumResolutionReceivedFlag {
		req.MaximumResolutionReceived = &builder.maximumResolutionReceived

	}
	if builder.framerateReceivedFlag {
		req.FramerateReceived = &builder.framerateReceived

	}
	if builder.bitrateSentFlag {
		req.BitrateSent = &builder.bitrateSent

	}
	if builder.latencySentFlag {
		req.LatencySent = &builder.latencySent

	}
	if builder.jitterSentFlag {
		req.JitterSent = &builder.jitterSent

	}
	if builder.maximumResolutionSentFlag {
		req.MaximumResolutionSent = &builder.maximumResolutionSent

	}
	if builder.framerateSentFlag {
		req.FramerateSent = &builder.framerateSent

	}
	return req
}

type RecordingPermissionObject struct {
	Id *string `json:"id,omitempty"` // 授权对象ID

	Type *int `json:"type,omitempty"` // 授权对象类型

	Permission *int `json:"permission,omitempty"` // 权限
}

type RecordingPermissionObjectBuilder struct {
	id     string // 授权对象ID
	idFlag bool

	type_    int // 授权对象类型
	typeFlag bool

	permission     int // 权限
	permissionFlag bool
}

func NewRecordingPermissionObjectBuilder() *RecordingPermissionObjectBuilder {
	builder := &RecordingPermissionObjectBuilder{}
	return builder
}

// 授权对象ID
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *RecordingPermissionObjectBuilder) Id(id string) *RecordingPermissionObjectBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 授权对象类型
//
// 示例值：1
func (builder *RecordingPermissionObjectBuilder) Type(type_ int) *RecordingPermissionObjectBuilder {
	builder.type_ = type_
	builder.typeFlag = true
	return builder
}

// 权限
//
// 示例值：1
func (builder *RecordingPermissionObjectBuilder) Permission(permission int) *RecordingPermissionObjectBuilder {
	builder.permission = permission
	builder.permissionFlag = true
	return builder
}

func (builder *RecordingPermissionObjectBuilder) Build() *RecordingPermissionObject {
	req := &RecordingPermissionObject{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.typeFlag {
		req.Type = &builder.type_

	}
	if builder.permissionFlag {
		req.Permission = &builder.permission

	}
	return req
}

type Report struct {
	TotalMeetingCount *string `json:"total_meeting_count,omitempty"` // 总会议数量

	TotalMeetingDuration *string `json:"total_meeting_duration,omitempty"` // 总会议时长（单位sec）

	TotalParticipantCount *string `json:"total_participant_count,omitempty"` // 总参会人数

	DailyReport []*ReportMeetingDaily `json:"daily_report,omitempty"` // 每日会议报告列表
}

type ReportBuilder struct {
	totalMeetingCount     string // 总会议数量
	totalMeetingCountFlag bool

	totalMeetingDuration     string // 总会议时长（单位sec）
	totalMeetingDurationFlag bool

	totalParticipantCount     string // 总参会人数
	totalParticipantCountFlag bool

	dailyReport     []*ReportMeetingDaily // 每日会议报告列表
	dailyReportFlag bool
}

func NewReportBuilder() *ReportBuilder {
	builder := &ReportBuilder{}
	return builder
}

// 总会议数量
//
// 示例值：100
func (builder *ReportBuilder) TotalMeetingCount(totalMeetingCount string) *ReportBuilder {
	builder.totalMeetingCount = totalMeetingCount
	builder.totalMeetingCountFlag = true
	return builder
}

// 总会议时长（单位sec）
//
// 示例值：300000
func (builder *ReportBuilder) TotalMeetingDuration(totalMeetingDuration string) *ReportBuilder {
	builder.totalMeetingDuration = totalMeetingDuration
	builder.totalMeetingDurationFlag = true
	return builder
}

// 总参会人数
//
// 示例值：20000
func (builder *ReportBuilder) TotalParticipantCount(totalParticipantCount string) *ReportBuilder {
	builder.totalParticipantCount = totalParticipantCount
	builder.totalParticipantCountFlag = true
	return builder
}

// 每日会议报告列表
//
// 示例值：
func (builder *ReportBuilder) DailyReport(dailyReport []*ReportMeetingDaily) *ReportBuilder {
	builder.dailyReport = dailyReport
	builder.dailyReportFlag = true
	return builder
}

func (builder *ReportBuilder) Build() *Report {
	req := &Report{}
	if builder.totalMeetingCountFlag {
		req.TotalMeetingCount = &builder.totalMeetingCount

	}
	if builder.totalMeetingDurationFlag {
		req.TotalMeetingDuration = &builder.totalMeetingDuration

	}
	if builder.totalParticipantCountFlag {
		req.TotalParticipantCount = &builder.totalParticipantCount

	}
	if builder.dailyReportFlag {
		req.DailyReport = builder.dailyReport
	}
	return req
}

type ReportMeetingDaily struct {
	Date *string `json:"date,omitempty"` // 日期（unix时间，单位sec）

	MeetingCount *string `json:"meeting_count,omitempty"` // 会议数量

	MeetingDuration *string `json:"meeting_duration,omitempty"` // 会议时长（单位sec）

	ParticipantCount *string `json:"participant_count,omitempty"` // 参会人数
}

type ReportMeetingDailyBuilder struct {
	date     string // 日期（unix时间，单位sec）
	dateFlag bool

	meetingCount     string // 会议数量
	meetingCountFlag bool

	meetingDuration     string // 会议时长（单位sec）
	meetingDurationFlag bool

	participantCount     string // 参会人数
	participantCountFlag bool
}

func NewReportMeetingDailyBuilder() *ReportMeetingDailyBuilder {
	builder := &ReportMeetingDailyBuilder{}
	return builder
}

// 日期（unix时间，单位sec）
//
// 示例值：1609113600
func (builder *ReportMeetingDailyBuilder) Date(date string) *ReportMeetingDailyBuilder {
	builder.date = date
	builder.dateFlag = true
	return builder
}

// 会议数量
//
// 示例值：100
func (builder *ReportMeetingDailyBuilder) MeetingCount(meetingCount string) *ReportMeetingDailyBuilder {
	builder.meetingCount = meetingCount
	builder.meetingCountFlag = true
	return builder
}

// 会议时长（单位sec）
//
// 示例值：147680
func (builder *ReportMeetingDailyBuilder) MeetingDuration(meetingDuration string) *ReportMeetingDailyBuilder {
	builder.meetingDuration = meetingDuration
	builder.meetingDurationFlag = true
	return builder
}

// 参会人数
//
// 示例值：2000
func (builder *ReportMeetingDailyBuilder) ParticipantCount(participantCount string) *ReportMeetingDailyBuilder {
	builder.participantCount = participantCount
	builder.participantCountFlag = true
	return builder
}

func (builder *ReportMeetingDailyBuilder) Build() *ReportMeetingDaily {
	req := &ReportMeetingDaily{}
	if builder.dateFlag {
		req.Date = &builder.date

	}
	if builder.meetingCountFlag {
		req.MeetingCount = &builder.meetingCount

	}
	if builder.meetingDurationFlag {
		req.MeetingDuration = &builder.meetingDuration

	}
	if builder.participantCountFlag {
		req.ParticipantCount = &builder.participantCount

	}
	return req
}

type ReportTopUser struct {
	Id *string `json:"id,omitempty"` // 用户ID

	Name *string `json:"name,omitempty"` // 用户名

	UserType *int `json:"user_type,omitempty"` // 用户类型

	MeetingCount *string `json:"meeting_count,omitempty"` // 会议数量

	MeetingDuration *string `json:"meeting_duration,omitempty"` // 会议时长（单位min）
}

type ReportTopUserBuilder struct {
	id     string // 用户ID
	idFlag bool

	name     string // 用户名
	nameFlag bool

	userType     int // 用户类型
	userTypeFlag bool

	meetingCount     string // 会议数量
	meetingCountFlag bool

	meetingDuration     string // 会议时长（单位min）
	meetingDurationFlag bool
}

func NewReportTopUserBuilder() *ReportTopUserBuilder {
	builder := &ReportTopUserBuilder{}
	return builder
}

// 用户ID
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *ReportTopUserBuilder) Id(id string) *ReportTopUserBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 用户名
//
// 示例值：name
func (builder *ReportTopUserBuilder) Name(name string) *ReportTopUserBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 用户类型
//
// 示例值：1
func (builder *ReportTopUserBuilder) UserType(userType int) *ReportTopUserBuilder {
	builder.userType = userType
	builder.userTypeFlag = true
	return builder
}

// 会议数量
//
// 示例值：100
func (builder *ReportTopUserBuilder) MeetingCount(meetingCount string) *ReportTopUserBuilder {
	builder.meetingCount = meetingCount
	builder.meetingCountFlag = true
	return builder
}

// 会议时长（单位min）
//
// 示例值：3000
func (builder *ReportTopUserBuilder) MeetingDuration(meetingDuration string) *ReportTopUserBuilder {
	builder.meetingDuration = meetingDuration
	builder.meetingDurationFlag = true
	return builder
}

func (builder *ReportTopUserBuilder) Build() *ReportTopUser {
	req := &ReportTopUser{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.userTypeFlag {
		req.UserType = &builder.userType

	}
	if builder.meetingCountFlag {
		req.MeetingCount = &builder.meetingCount

	}
	if builder.meetingDurationFlag {
		req.MeetingDuration = &builder.meetingDuration

	}
	return req
}

type Reserve struct {
	Id *string `json:"id,omitempty"` // 预约ID（预约的唯一标识）

	MeetingNo *string `json:"meeting_no,omitempty"` // 9位会议号（飞书用户可通过输入9位会议号快捷入会）

	Password *string `json:"password,omitempty"` // 会议密码

	Url *string `json:"url,omitempty"` // 会议链接（飞书用户可通过点击会议链接快捷入会）

	AppLink *string `json:"app_link,omitempty"` // APPLink用于唤起飞书APP入会。"{?}"为占位符，用于配置入会参数，使用时需替换具体值：0表示关闭，1表示打开。preview为入会前的设置页，mic为麦克风，speaker为扬声器，camera为摄像头

	LiveLink *string `json:"live_link,omitempty"` // 会议转直播链接

	EndTime *string `json:"end_time,omitempty"` // 预约到期时间（unix时间，单位sec）

	ExpireStatus *int `json:"expire_status,omitempty"` // 过期状态

	ReserveUserId *string `json:"reserve_user_id,omitempty"` // 预约人ID

	MeetingSettings *ReserveMeetingSetting `json:"meeting_settings,omitempty"` // 会议设置
}

type ReserveBuilder struct {
	id     string // 预约ID（预约的唯一标识）
	idFlag bool

	meetingNo     string // 9位会议号（飞书用户可通过输入9位会议号快捷入会）
	meetingNoFlag bool

	password     string // 会议密码
	passwordFlag bool

	url     string // 会议链接（飞书用户可通过点击会议链接快捷入会）
	urlFlag bool

	appLink     string // APPLink用于唤起飞书APP入会。"{?}"为占位符，用于配置入会参数，使用时需替换具体值：0表示关闭，1表示打开。preview为入会前的设置页，mic为麦克风，speaker为扬声器，camera为摄像头
	appLinkFlag bool

	liveLink     string // 会议转直播链接
	liveLinkFlag bool

	endTime     string // 预约到期时间（unix时间，单位sec）
	endTimeFlag bool

	expireStatus     int // 过期状态
	expireStatusFlag bool

	reserveUserId     string // 预约人ID
	reserveUserIdFlag bool

	meetingSettings     *ReserveMeetingSetting // 会议设置
	meetingSettingsFlag bool
}

func NewReserveBuilder() *ReserveBuilder {
	builder := &ReserveBuilder{}
	return builder
}

// 预约ID（预约的唯一标识）
//
// 示例值：6911188411934973028
func (builder *ReserveBuilder) Id(id string) *ReserveBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 9位会议号（飞书用户可通过输入9位会议号快捷入会）
//
// 示例值：112000358
func (builder *ReserveBuilder) MeetingNo(meetingNo string) *ReserveBuilder {
	builder.meetingNo = meetingNo
	builder.meetingNoFlag = true
	return builder
}

// 会议密码
//
// 示例值：971024
func (builder *ReserveBuilder) Password(password string) *ReserveBuilder {
	builder.password = password
	builder.passwordFlag = true
	return builder
}

// 会议链接（飞书用户可通过点击会议链接快捷入会）
//
// 示例值：https://vc.feishu.cn/j/337736498
func (builder *ReserveBuilder) Url(url string) *ReserveBuilder {
	builder.url = url
	builder.urlFlag = true
	return builder
}

// APPLink用于唤起飞书APP入会。"{?}"为占位符，用于配置入会参数，使用时需替换具体值：0表示关闭，1表示打开。preview为入会前的设置页，mic为麦克风，speaker为扬声器，camera为摄像头
//
// 示例值：https://applink.feishu.cn/client/videochat/open?source=openplatform&action=join&idtype=reservationid&id={?}&preview={?}&mic={?}&speaker={?}&camera={?}
func (builder *ReserveBuilder) AppLink(appLink string) *ReserveBuilder {
	builder.appLink = appLink
	builder.appLinkFlag = true
	return builder
}

// 会议转直播链接
//
// 示例值：https://meetings.feishu.cn/s/1gub381l4gglv
func (builder *ReserveBuilder) LiveLink(liveLink string) *ReserveBuilder {
	builder.liveLink = liveLink
	builder.liveLinkFlag = true
	return builder
}

// 预约到期时间（unix时间，单位sec）
//
// 示例值：1608883322
func (builder *ReserveBuilder) EndTime(endTime string) *ReserveBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 过期状态
//
// 示例值：0
func (builder *ReserveBuilder) ExpireStatus(expireStatus int) *ReserveBuilder {
	builder.expireStatus = expireStatus
	builder.expireStatusFlag = true
	return builder
}

// 预约人ID
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *ReserveBuilder) ReserveUserId(reserveUserId string) *ReserveBuilder {
	builder.reserveUserId = reserveUserId
	builder.reserveUserIdFlag = true
	return builder
}

// 会议设置
//
// 示例值：
func (builder *ReserveBuilder) MeetingSettings(meetingSettings *ReserveMeetingSetting) *ReserveBuilder {
	builder.meetingSettings = meetingSettings
	builder.meetingSettingsFlag = true
	return builder
}

func (builder *ReserveBuilder) Build() *Reserve {
	req := &Reserve{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.meetingNoFlag {
		req.MeetingNo = &builder.meetingNo

	}
	if builder.passwordFlag {
		req.Password = &builder.password

	}
	if builder.urlFlag {
		req.Url = &builder.url

	}
	if builder.appLinkFlag {
		req.AppLink = &builder.appLink

	}
	if builder.liveLinkFlag {
		req.LiveLink = &builder.liveLink

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.expireStatusFlag {
		req.ExpireStatus = &builder.expireStatus

	}
	if builder.reserveUserIdFlag {
		req.ReserveUserId = &builder.reserveUserId

	}
	if builder.meetingSettingsFlag {
		req.MeetingSettings = builder.meetingSettings
	}
	return req
}

type ReserveActionPermission struct {
	Permission *int `json:"permission,omitempty"` // 权限项

	PermissionCheckers []*ReservePermissionChecker `json:"permission_checkers,omitempty"` // 权限检查器列表，权限检查器之间为"逻辑或"的关系（即 有一个为true则拥有该权限）
}

type ReserveActionPermissionBuilder struct {
	permission     int // 权限项
	permissionFlag bool

	permissionCheckers     []*ReservePermissionChecker // 权限检查器列表，权限检查器之间为"逻辑或"的关系（即 有一个为true则拥有该权限）
	permissionCheckersFlag bool
}

func NewReserveActionPermissionBuilder() *ReserveActionPermissionBuilder {
	builder := &ReserveActionPermissionBuilder{}
	return builder
}

// 权限项
//
// 示例值：1
func (builder *ReserveActionPermissionBuilder) Permission(permission int) *ReserveActionPermissionBuilder {
	builder.permission = permission
	builder.permissionFlag = true
	return builder
}

// 权限检查器列表，权限检查器之间为"逻辑或"的关系（即 有一个为true则拥有该权限）
//
// 示例值：
func (builder *ReserveActionPermissionBuilder) PermissionCheckers(permissionCheckers []*ReservePermissionChecker) *ReserveActionPermissionBuilder {
	builder.permissionCheckers = permissionCheckers
	builder.permissionCheckersFlag = true
	return builder
}

func (builder *ReserveActionPermissionBuilder) Build() *ReserveActionPermission {
	req := &ReserveActionPermission{}
	if builder.permissionFlag {
		req.Permission = &builder.permission

	}
	if builder.permissionCheckersFlag {
		req.PermissionCheckers = builder.permissionCheckers
	}
	return req
}

type ReserveAdminConfig struct {
	Depts []*SubscribeDepartment `json:"depts,omitempty"` // 预定管理部门

	Users []*SubscribeUser `json:"users,omitempty"` // 预定管理用户
}

type ReserveAdminConfigBuilder struct {
	depts     []*SubscribeDepartment // 预定管理部门
	deptsFlag bool

	users     []*SubscribeUser // 预定管理用户
	usersFlag bool
}

func NewReserveAdminConfigBuilder() *ReserveAdminConfigBuilder {
	builder := &ReserveAdminConfigBuilder{}
	return builder
}

// 预定管理部门
//
// 示例值：
func (builder *ReserveAdminConfigBuilder) Depts(depts []*SubscribeDepartment) *ReserveAdminConfigBuilder {
	builder.depts = depts
	builder.deptsFlag = true
	return builder
}

// 预定管理用户
//
// 示例值：
func (builder *ReserveAdminConfigBuilder) Users(users []*SubscribeUser) *ReserveAdminConfigBuilder {
	builder.users = users
	builder.usersFlag = true
	return builder
}

func (builder *ReserveAdminConfigBuilder) Build() *ReserveAdminConfig {
	req := &ReserveAdminConfig{}
	if builder.deptsFlag {
		req.Depts = builder.depts
	}
	if builder.usersFlag {
		req.Users = builder.users
	}
	return req
}

type ReserveAssignHost struct {
	UserType *int `json:"user_type,omitempty"` // 用户类型，仅支持设置同租户下的 Lark 用户

	Id *string `json:"id,omitempty"` // 用户ID
}

type ReserveAssignHostBuilder struct {
	userType     int // 用户类型，仅支持设置同租户下的 Lark 用户
	userTypeFlag bool

	id     string // 用户ID
	idFlag bool
}

func NewReserveAssignHostBuilder() *ReserveAssignHostBuilder {
	builder := &ReserveAssignHostBuilder{}
	return builder
}

// 用户类型，仅支持设置同租户下的 Lark 用户
//
// 示例值：1
func (builder *ReserveAssignHostBuilder) UserType(userType int) *ReserveAssignHostBuilder {
	builder.userType = userType
	builder.userTypeFlag = true
	return builder
}

// 用户ID
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *ReserveAssignHostBuilder) Id(id string) *ReserveAssignHostBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

func (builder *ReserveAssignHostBuilder) Build() *ReserveAssignHost {
	req := &ReserveAssignHost{}
	if builder.userTypeFlag {
		req.UserType = &builder.userType

	}
	if builder.idFlag {
		req.Id = &builder.id

	}
	return req
}

type ReserveCallSetting struct {
	Callee *ReserveCallee `json:"callee,omitempty"` // 被呼叫的用户
}

type ReserveCallSettingBuilder struct {
	callee     *ReserveCallee // 被呼叫的用户
	calleeFlag bool
}

func NewReserveCallSettingBuilder() *ReserveCallSettingBuilder {
	builder := &ReserveCallSettingBuilder{}
	return builder
}

// 被呼叫的用户
//
// 示例值：
func (builder *ReserveCallSettingBuilder) Callee(callee *ReserveCallee) *ReserveCallSettingBuilder {
	builder.callee = callee
	builder.calleeFlag = true
	return builder
}

func (builder *ReserveCallSettingBuilder) Build() *ReserveCallSetting {
	req := &ReserveCallSetting{}
	if builder.calleeFlag {
		req.Callee = builder.callee
	}
	return req
}

type ReserveCallee struct {
	Id *string `json:"id,omitempty"` // 用户ID

	UserType *int `json:"user_type,omitempty"` // 用户类型，当前仅支持用户类型6(pstn用户)

	PstnSipInfo *PstnSipInfo `json:"pstn_sip_info,omitempty"` // pstn/sip信息
}

type ReserveCalleeBuilder struct {
	id     string // 用户ID
	idFlag bool

	userType     int // 用户类型，当前仅支持用户类型6(pstn用户)
	userTypeFlag bool

	pstnSipInfo     *PstnSipInfo // pstn/sip信息
	pstnSipInfoFlag bool
}

func NewReserveCalleeBuilder() *ReserveCalleeBuilder {
	builder := &ReserveCalleeBuilder{}
	return builder
}

// 用户ID
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *ReserveCalleeBuilder) Id(id string) *ReserveCalleeBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 用户类型，当前仅支持用户类型6(pstn用户)
//
// 示例值：1
func (builder *ReserveCalleeBuilder) UserType(userType int) *ReserveCalleeBuilder {
	builder.userType = userType
	builder.userTypeFlag = true
	return builder
}

// pstn/sip信息
//
// 示例值：
func (builder *ReserveCalleeBuilder) PstnSipInfo(pstnSipInfo *PstnSipInfo) *ReserveCalleeBuilder {
	builder.pstnSipInfo = pstnSipInfo
	builder.pstnSipInfoFlag = true
	return builder
}

func (builder *ReserveCalleeBuilder) Build() *ReserveCallee {
	req := &ReserveCallee{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.userTypeFlag {
		req.UserType = &builder.userType

	}
	if builder.pstnSipInfoFlag {
		req.PstnSipInfo = builder.pstnSipInfo
	}
	return req
}

type ReserveCorrectionCheckInfo struct {
	InvalidHostIdList []string `json:"invalid_host_id_list,omitempty"` // 指定主持人无效id列表
}

type ReserveCorrectionCheckInfoBuilder struct {
	invalidHostIdList     []string // 指定主持人无效id列表
	invalidHostIdListFlag bool
}

func NewReserveCorrectionCheckInfoBuilder() *ReserveCorrectionCheckInfoBuilder {
	builder := &ReserveCorrectionCheckInfoBuilder{}
	return builder
}

// 指定主持人无效id列表
//
// 示例值：
func (builder *ReserveCorrectionCheckInfoBuilder) InvalidHostIdList(invalidHostIdList []string) *ReserveCorrectionCheckInfoBuilder {
	builder.invalidHostIdList = invalidHostIdList
	builder.invalidHostIdListFlag = true
	return builder
}

func (builder *ReserveCorrectionCheckInfoBuilder) Build() *ReserveCorrectionCheckInfo {
	req := &ReserveCorrectionCheckInfo{}
	if builder.invalidHostIdListFlag {
		req.InvalidHostIdList = builder.invalidHostIdList
	}
	return req
}

type ReserveFormConfig struct {
	IfCoverChildScope *bool `json:"if_cover_child_scope,omitempty"` // 是否覆盖子层级及会议室

	ReserveForm *bool `json:"reserve_form,omitempty"` // 预定表单开关

	NotifiedUsers []*SubscribeUser `json:"notified_users,omitempty"` // 通知人列表

	NotifiedTime *int `json:"notified_time,omitempty"` // 最晚于会议开始前 notified_time收到通知(单位:分/时/天)

	TimeUnit *int `json:"time_unit,omitempty"` // 时间单位,1为分钟;2为小时;3为天，默认为天

	CustomList []*CustomList `json:"custom_list,omitempty"` // 题目选项配置
}

type ReserveFormConfigBuilder struct {
	ifCoverChildScope     bool // 是否覆盖子层级及会议室
	ifCoverChildScopeFlag bool

	reserveForm     bool // 预定表单开关
	reserveFormFlag bool

	notifiedUsers     []*SubscribeUser // 通知人列表
	notifiedUsersFlag bool

	notifiedTime     int // 最晚于会议开始前 notified_time收到通知(单位:分/时/天)
	notifiedTimeFlag bool

	timeUnit     int // 时间单位,1为分钟;2为小时;3为天，默认为天
	timeUnitFlag bool

	customList     []*CustomList // 题目选项配置
	customListFlag bool
}

func NewReserveFormConfigBuilder() *ReserveFormConfigBuilder {
	builder := &ReserveFormConfigBuilder{}
	return builder
}

// 是否覆盖子层级及会议室
//
// 示例值：true
func (builder *ReserveFormConfigBuilder) IfCoverChildScope(ifCoverChildScope bool) *ReserveFormConfigBuilder {
	builder.ifCoverChildScope = ifCoverChildScope
	builder.ifCoverChildScopeFlag = true
	return builder
}

// 预定表单开关
//
// 示例值：false
func (builder *ReserveFormConfigBuilder) ReserveForm(reserveForm bool) *ReserveFormConfigBuilder {
	builder.reserveForm = reserveForm
	builder.reserveFormFlag = true
	return builder
}

// 通知人列表
//
// 示例值：
func (builder *ReserveFormConfigBuilder) NotifiedUsers(notifiedUsers []*SubscribeUser) *ReserveFormConfigBuilder {
	builder.notifiedUsers = notifiedUsers
	builder.notifiedUsersFlag = true
	return builder
}

// 最晚于会议开始前 notified_time收到通知(单位:分/时/天)
//
// 示例值：3
func (builder *ReserveFormConfigBuilder) NotifiedTime(notifiedTime int) *ReserveFormConfigBuilder {
	builder.notifiedTime = notifiedTime
	builder.notifiedTimeFlag = true
	return builder
}

// 时间单位,1为分钟;2为小时;3为天，默认为天
//
// 示例值：3
func (builder *ReserveFormConfigBuilder) TimeUnit(timeUnit int) *ReserveFormConfigBuilder {
	builder.timeUnit = timeUnit
	builder.timeUnitFlag = true
	return builder
}

// 题目选项配置
//
// 示例值：
func (builder *ReserveFormConfigBuilder) CustomList(customList []*CustomList) *ReserveFormConfigBuilder {
	builder.customList = customList
	builder.customListFlag = true
	return builder
}

func (builder *ReserveFormConfigBuilder) Build() *ReserveFormConfig {
	req := &ReserveFormConfig{}
	if builder.ifCoverChildScopeFlag {
		req.IfCoverChildScope = &builder.ifCoverChildScope

	}
	if builder.reserveFormFlag {
		req.ReserveForm = &builder.reserveForm

	}
	if builder.notifiedUsersFlag {
		req.NotifiedUsers = builder.notifiedUsers
	}
	if builder.notifiedTimeFlag {
		req.NotifiedTime = &builder.notifiedTime

	}
	if builder.timeUnitFlag {
		req.TimeUnit = &builder.timeUnit

	}
	if builder.customListFlag {
		req.CustomList = builder.customList
	}
	return req
}

type ReserveMeetingSetting struct {
	Topic *string `json:"topic,omitempty"` // 会议主题

	ActionPermissions []*ReserveActionPermission `json:"action_permissions,omitempty"` // 会议权限配置列表，如果存在相同的权限配置项则它们之间为"逻辑或"的关系（即 有一个为true则拥有该权限）

	MeetingInitialType *int `json:"meeting_initial_type,omitempty"` // 会议初始类型

	MeetingConnect *bool `json:"meeting_connect,omitempty"` // 该会议是否支持互通，不支持更新（注：该字段内测中）

	CallSetting *ReserveCallSetting `json:"call_setting,omitempty"` // 1v1呼叫相关参数

	AutoRecord *bool `json:"auto_record,omitempty"` // 使用飞书视频会议时，是否开启自动录制，默认false

	AssignHostList []*ReserveAssignHost `json:"assign_host_list,omitempty"` // 指定主持人列表

	Password *string `json:"password,omitempty"` // 设置会议密码，仅支持 4-9 位数字
}

type ReserveMeetingSettingBuilder struct {
	topic     string // 会议主题
	topicFlag bool

	actionPermissions     []*ReserveActionPermission // 会议权限配置列表，如果存在相同的权限配置项则它们之间为"逻辑或"的关系（即 有一个为true则拥有该权限）
	actionPermissionsFlag bool

	meetingInitialType     int // 会议初始类型
	meetingInitialTypeFlag bool

	meetingConnect     bool // 该会议是否支持互通，不支持更新（注：该字段内测中）
	meetingConnectFlag bool

	callSetting     *ReserveCallSetting // 1v1呼叫相关参数
	callSettingFlag bool

	autoRecord     bool // 使用飞书视频会议时，是否开启自动录制，默认false
	autoRecordFlag bool

	assignHostList     []*ReserveAssignHost // 指定主持人列表
	assignHostListFlag bool

	password     string // 设置会议密码，仅支持 4-9 位数字
	passwordFlag bool
}

func NewReserveMeetingSettingBuilder() *ReserveMeetingSettingBuilder {
	builder := &ReserveMeetingSettingBuilder{}
	return builder
}

// 会议主题
//
// 示例值：my meeting
func (builder *ReserveMeetingSettingBuilder) Topic(topic string) *ReserveMeetingSettingBuilder {
	builder.topic = topic
	builder.topicFlag = true
	return builder
}

// 会议权限配置列表，如果存在相同的权限配置项则它们之间为"逻辑或"的关系（即 有一个为true则拥有该权限）
//
// 示例值：
func (builder *ReserveMeetingSettingBuilder) ActionPermissions(actionPermissions []*ReserveActionPermission) *ReserveMeetingSettingBuilder {
	builder.actionPermissions = actionPermissions
	builder.actionPermissionsFlag = true
	return builder
}

// 会议初始类型
//
// 示例值：1
func (builder *ReserveMeetingSettingBuilder) MeetingInitialType(meetingInitialType int) *ReserveMeetingSettingBuilder {
	builder.meetingInitialType = meetingInitialType
	builder.meetingInitialTypeFlag = true
	return builder
}

// 该会议是否支持互通，不支持更新（注：该字段内测中）
//
// 示例值：true
func (builder *ReserveMeetingSettingBuilder) MeetingConnect(meetingConnect bool) *ReserveMeetingSettingBuilder {
	builder.meetingConnect = meetingConnect
	builder.meetingConnectFlag = true
	return builder
}

// 1v1呼叫相关参数
//
// 示例值：
func (builder *ReserveMeetingSettingBuilder) CallSetting(callSetting *ReserveCallSetting) *ReserveMeetingSettingBuilder {
	builder.callSetting = callSetting
	builder.callSettingFlag = true
	return builder
}

// 使用飞书视频会议时，是否开启自动录制，默认false
//
// 示例值：true
func (builder *ReserveMeetingSettingBuilder) AutoRecord(autoRecord bool) *ReserveMeetingSettingBuilder {
	builder.autoRecord = autoRecord
	builder.autoRecordFlag = true
	return builder
}

// 指定主持人列表
//
// 示例值：
func (builder *ReserveMeetingSettingBuilder) AssignHostList(assignHostList []*ReserveAssignHost) *ReserveMeetingSettingBuilder {
	builder.assignHostList = assignHostList
	builder.assignHostListFlag = true
	return builder
}

// 设置会议密码，仅支持 4-9 位数字
//
// 示例值：971024
func (builder *ReserveMeetingSettingBuilder) Password(password string) *ReserveMeetingSettingBuilder {
	builder.password = password
	builder.passwordFlag = true
	return builder
}

func (builder *ReserveMeetingSettingBuilder) Build() *ReserveMeetingSetting {
	req := &ReserveMeetingSetting{}
	if builder.topicFlag {
		req.Topic = &builder.topic

	}
	if builder.actionPermissionsFlag {
		req.ActionPermissions = builder.actionPermissions
	}
	if builder.meetingInitialTypeFlag {
		req.MeetingInitialType = &builder.meetingInitialType

	}
	if builder.meetingConnectFlag {
		req.MeetingConnect = &builder.meetingConnect

	}
	if builder.callSettingFlag {
		req.CallSetting = builder.callSetting
	}
	if builder.autoRecordFlag {
		req.AutoRecord = &builder.autoRecord

	}
	if builder.assignHostListFlag {
		req.AssignHostList = builder.assignHostList
	}
	if builder.passwordFlag {
		req.Password = &builder.password

	}
	return req
}

type ReservePermissionChecker struct {
	CheckField *int `json:"check_field,omitempty"` // 检查字段类型

	CheckMode *int `json:"check_mode,omitempty"` // 检查方式

	CheckList []string `json:"check_list,omitempty"` // 检查字段列表
}

type ReservePermissionCheckerBuilder struct {
	checkField     int // 检查字段类型
	checkFieldFlag bool

	checkMode     int // 检查方式
	checkModeFlag bool

	checkList     []string // 检查字段列表
	checkListFlag bool
}

func NewReservePermissionCheckerBuilder() *ReservePermissionCheckerBuilder {
	builder := &ReservePermissionCheckerBuilder{}
	return builder
}

// 检查字段类型
//
// 示例值：1
func (builder *ReservePermissionCheckerBuilder) CheckField(checkField int) *ReservePermissionCheckerBuilder {
	builder.checkField = checkField
	builder.checkFieldFlag = true
	return builder
}

// 检查方式
//
// 示例值：1
func (builder *ReservePermissionCheckerBuilder) CheckMode(checkMode int) *ReservePermissionCheckerBuilder {
	builder.checkMode = checkMode
	builder.checkModeFlag = true
	return builder
}

// 检查字段列表
//
// 示例值：123
func (builder *ReservePermissionCheckerBuilder) CheckList(checkList []string) *ReservePermissionCheckerBuilder {
	builder.checkList = checkList
	builder.checkListFlag = true
	return builder
}

func (builder *ReservePermissionCheckerBuilder) Build() *ReservePermissionChecker {
	req := &ReservePermissionChecker{}
	if builder.checkFieldFlag {
		req.CheckField = &builder.checkField

	}
	if builder.checkModeFlag {
		req.CheckMode = &builder.checkMode

	}
	if builder.checkListFlag {
		req.CheckList = builder.checkList
	}
	return req
}

type ReserveScopeConfig struct {
	IfCoverChildScope *bool `json:"if_cover_child_scope,omitempty"` // 是否覆盖子层级及会议室

	AllowAllUsers *int `json:"allow_all_users,omitempty"` // 可预定成员范围：0 代表部分成员，1 代表全部成员。;<b>说明</b>：;1.  此值必填。;2.  当设置为 0 时，至少需要 1 个预定部门或预定人

	AllowUsers []*SubscribeUser `json:"allow_users,omitempty"` // 可预定成员列表

	AllowDepts []*SubscribeDepartment `json:"allow_depts,omitempty"` // 可预定部门列表
}

type ReserveScopeConfigBuilder struct {
	ifCoverChildScope     bool // 是否覆盖子层级及会议室
	ifCoverChildScopeFlag bool

	allowAllUsers     int // 可预定成员范围：0 代表部分成员，1 代表全部成员。;<b>说明</b>：;1.  此值必填。;2.  当设置为 0 时，至少需要 1 个预定部门或预定人
	allowAllUsersFlag bool

	allowUsers     []*SubscribeUser // 可预定成员列表
	allowUsersFlag bool

	allowDepts     []*SubscribeDepartment // 可预定部门列表
	allowDeptsFlag bool
}

func NewReserveScopeConfigBuilder() *ReserveScopeConfigBuilder {
	builder := &ReserveScopeConfigBuilder{}
	return builder
}

// 是否覆盖子层级及会议室
//
// 示例值：true
func (builder *ReserveScopeConfigBuilder) IfCoverChildScope(ifCoverChildScope bool) *ReserveScopeConfigBuilder {
	builder.ifCoverChildScope = ifCoverChildScope
	builder.ifCoverChildScopeFlag = true
	return builder
}

// 可预定成员范围：0 代表部分成员，1 代表全部成员。;<b>说明</b>：;1.  此值必填。;2.  当设置为 0 时，至少需要 1 个预定部门或预定人
//
// 示例值：0
func (builder *ReserveScopeConfigBuilder) AllowAllUsers(allowAllUsers int) *ReserveScopeConfigBuilder {
	builder.allowAllUsers = allowAllUsers
	builder.allowAllUsersFlag = true
	return builder
}

// 可预定成员列表
//
// 示例值：[{user_id:"ou_e8bce6c3935ef1fc1b432992fd9d3db8"}]
func (builder *ReserveScopeConfigBuilder) AllowUsers(allowUsers []*SubscribeUser) *ReserveScopeConfigBuilder {
	builder.allowUsers = allowUsers
	builder.allowUsersFlag = true
	return builder
}

// 可预定部门列表
//
// 示例值：[{department_id:"od-5c07f0c117cf8795f25610a69363ce31"}]
func (builder *ReserveScopeConfigBuilder) AllowDepts(allowDepts []*SubscribeDepartment) *ReserveScopeConfigBuilder {
	builder.allowDepts = allowDepts
	builder.allowDeptsFlag = true
	return builder
}

func (builder *ReserveScopeConfigBuilder) Build() *ReserveScopeConfig {
	req := &ReserveScopeConfig{}
	if builder.ifCoverChildScopeFlag {
		req.IfCoverChildScope = &builder.ifCoverChildScope

	}
	if builder.allowAllUsersFlag {
		req.AllowAllUsers = &builder.allowAllUsers

	}
	if builder.allowUsersFlag {
		req.AllowUsers = builder.allowUsers
	}
	if builder.allowDeptsFlag {
		req.AllowDepts = builder.allowDepts
	}
	return req
}

type ReserveScopeConfigEvent struct {
	AllowAllUsers *int `json:"allow_all_users,omitempty"` // 可预定成员范围，0部分成员，1全部成员

	AllowUsers []*SubscribeUserEvent `json:"allow_users,omitempty"` // 可预定成员列表

	AllowDepts []*SubscribeDepartment `json:"allow_depts,omitempty"` // 可预定部门列表
}

type ReserveScopeConfigEventBuilder struct {
	allowAllUsers     int // 可预定成员范围，0部分成员，1全部成员
	allowAllUsersFlag bool

	allowUsers     []*SubscribeUserEvent // 可预定成员列表
	allowUsersFlag bool

	allowDepts     []*SubscribeDepartment // 可预定部门列表
	allowDeptsFlag bool
}

func NewReserveScopeConfigEventBuilder() *ReserveScopeConfigEventBuilder {
	builder := &ReserveScopeConfigEventBuilder{}
	return builder
}

// 可预定成员范围，0部分成员，1全部成员
//
// 示例值：1
func (builder *ReserveScopeConfigEventBuilder) AllowAllUsers(allowAllUsers int) *ReserveScopeConfigEventBuilder {
	builder.allowAllUsers = allowAllUsers
	builder.allowAllUsersFlag = true
	return builder
}

// 可预定成员列表
//
// 示例值：[{user_id:"ou_e8bce6c3935ef1fc1b432992fd9d3db8"}]
func (builder *ReserveScopeConfigEventBuilder) AllowUsers(allowUsers []*SubscribeUserEvent) *ReserveScopeConfigEventBuilder {
	builder.allowUsers = allowUsers
	builder.allowUsersFlag = true
	return builder
}

// 可预定部门列表
//
// 示例值：[{department_id:"od-5c07f0c117cf8795f25610a69363ce31"}]
func (builder *ReserveScopeConfigEventBuilder) AllowDepts(allowDepts []*SubscribeDepartment) *ReserveScopeConfigEventBuilder {
	builder.allowDepts = allowDepts
	builder.allowDeptsFlag = true
	return builder
}

func (builder *ReserveScopeConfigEventBuilder) Build() *ReserveScopeConfigEvent {
	req := &ReserveScopeConfigEvent{}
	if builder.allowAllUsersFlag {
		req.AllowAllUsers = &builder.allowAllUsers

	}
	if builder.allowUsersFlag {
		req.AllowUsers = builder.allowUsers
	}
	if builder.allowDeptsFlag {
		req.AllowDepts = builder.allowDepts
	}
	return req
}

type ReservedRoom struct {
	RoomId *string `json:"room_id,omitempty"` // 会议室ID

	RoomName *string `json:"room_name,omitempty"` // 会议室名称
}

type ReservedRoomBuilder struct {
	roomId     string // 会议室ID
	roomIdFlag bool

	roomName     string // 会议室名称
	roomNameFlag bool
}

func NewReservedRoomBuilder() *ReservedRoomBuilder {
	builder := &ReservedRoomBuilder{}
	return builder
}

// 会议室ID
//
// 示例值：omm_12381298739
func (builder *ReservedRoomBuilder) RoomId(roomId string) *ReservedRoomBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 会议室名称
//
// 示例值：room123
func (builder *ReservedRoomBuilder) RoomName(roomName string) *ReservedRoomBuilder {
	builder.roomName = roomName
	builder.roomNameFlag = true
	return builder
}

func (builder *ReservedRoomBuilder) Build() *ReservedRoom {
	req := &ReservedRoom{}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId

	}
	if builder.roomNameFlag {
		req.RoomName = &builder.roomName

	}
	return req
}

type Room struct {
	RoomId *string `json:"room_id,omitempty"` // 会议室ID

	Name *string `json:"name,omitempty"` // 会议室名称

	Capacity *int `json:"capacity,omitempty"` // 会议室能容纳的人数

	Description *string `json:"description,omitempty"` // 会议室的相关描述

	DisplayId *string `json:"display_id,omitempty"` // 会议室的展示ID

	CustomRoomId *string `json:"custom_room_id,omitempty"` // 自定义的会议室ID

	RoomLevelId *string `json:"room_level_id,omitempty"` // 层级ID

	Path []string `json:"path,omitempty"` // 层级路径

	RoomStatus *RoomStatus `json:"room_status,omitempty"` // 会议室状态

	Device []*Device `json:"device,omitempty"` // 设施信息列表
}

type RoomBuilder struct {
	roomId     string // 会议室ID
	roomIdFlag bool

	name     string // 会议室名称
	nameFlag bool

	capacity     int // 会议室能容纳的人数
	capacityFlag bool

	description     string // 会议室的相关描述
	descriptionFlag bool

	displayId     string // 会议室的展示ID
	displayIdFlag bool

	customRoomId     string // 自定义的会议室ID
	customRoomIdFlag bool

	roomLevelId     string // 层级ID
	roomLevelIdFlag bool

	path     []string // 层级路径
	pathFlag bool

	roomStatus     *RoomStatus // 会议室状态
	roomStatusFlag bool

	device     []*Device // 设施信息列表
	deviceFlag bool
}

func NewRoomBuilder() *RoomBuilder {
	builder := &RoomBuilder{}
	return builder
}

// 会议室ID
//
// 示例值：omm_4de32cf10a4358788ff4e09e37ebbf9b
func (builder *RoomBuilder) RoomId(roomId string) *RoomBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 会议室名称
//
// 示例值：测试会议室
func (builder *RoomBuilder) Name(name string) *RoomBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 会议室能容纳的人数
//
// 示例值：10
func (builder *RoomBuilder) Capacity(capacity int) *RoomBuilder {
	builder.capacity = capacity
	builder.capacityFlag = true
	return builder
}

// 会议室的相关描述
//
// 示例值：测试会议室描述
func (builder *RoomBuilder) Description(description string) *RoomBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 会议室的展示ID
//
// 示例值：LM134742334
func (builder *RoomBuilder) DisplayId(displayId string) *RoomBuilder {
	builder.displayId = displayId
	builder.displayIdFlag = true
	return builder
}

// 自定义的会议室ID
//
// 示例值：1234
func (builder *RoomBuilder) CustomRoomId(customRoomId string) *RoomBuilder {
	builder.customRoomId = customRoomId
	builder.customRoomIdFlag = true
	return builder
}

// 层级ID
//
// 示例值：omb_4ad1a2c7a2fbc5fc9570f38456931293
func (builder *RoomBuilder) RoomLevelId(roomLevelId string) *RoomBuilder {
	builder.roomLevelId = roomLevelId
	builder.roomLevelIdFlag = true
	return builder
}

// 层级路径
//
// 示例值：[omb_8d020b12fe49e82847c2af3c193d5754,omb_8d020b12fe49e82847c2af3c193d5754]
func (builder *RoomBuilder) Path(path []string) *RoomBuilder {
	builder.path = path
	builder.pathFlag = true
	return builder
}

// 会议室状态
//
// 示例值：
func (builder *RoomBuilder) RoomStatus(roomStatus *RoomStatus) *RoomBuilder {
	builder.roomStatus = roomStatus
	builder.roomStatusFlag = true
	return builder
}

// 设施信息列表
//
// 示例值：
func (builder *RoomBuilder) Device(device []*Device) *RoomBuilder {
	builder.device = device
	builder.deviceFlag = true
	return builder
}

func (builder *RoomBuilder) Build() *Room {
	req := &Room{}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.capacityFlag {
		req.Capacity = &builder.capacity

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.displayIdFlag {
		req.DisplayId = &builder.displayId

	}
	if builder.customRoomIdFlag {
		req.CustomRoomId = &builder.customRoomId

	}
	if builder.roomLevelIdFlag {
		req.RoomLevelId = &builder.roomLevelId

	}
	if builder.pathFlag {
		req.Path = builder.path
	}
	if builder.roomStatusFlag {
		req.RoomStatus = builder.roomStatus
	}
	if builder.deviceFlag {
		req.Device = builder.device
	}
	return req
}

type RoomConfig struct {
	RoomBackground *string `json:"room_background,omitempty"` // 飞书会议室背景图

	DisplayBackground *string `json:"display_background,omitempty"` // 飞书签到板背景图

	DigitalSignage *RoomDigitalSignage `json:"digital_signage,omitempty"` // 飞书会议室数字标牌

	RoomBoxDigitalSignage *RoomDigitalSignage `json:"room_box_digital_signage,omitempty"` // 飞书投屏盒子数字标牌

	RoomStatus *RoomStatus `json:"room_status,omitempty"` // 会议室状态
}

type RoomConfigBuilder struct {
	roomBackground     string // 飞书会议室背景图
	roomBackgroundFlag bool

	displayBackground     string // 飞书签到板背景图
	displayBackgroundFlag bool

	digitalSignage     *RoomDigitalSignage // 飞书会议室数字标牌
	digitalSignageFlag bool

	roomBoxDigitalSignage     *RoomDigitalSignage // 飞书投屏盒子数字标牌
	roomBoxDigitalSignageFlag bool

	roomStatus     *RoomStatus // 会议室状态
	roomStatusFlag bool
}

func NewRoomConfigBuilder() *RoomConfigBuilder {
	builder := &RoomConfigBuilder{}
	return builder
}

// 飞书会议室背景图
//
// 示例值：https://lf1-ttcdn-tos.pstatp.com/obj/xxx
func (builder *RoomConfigBuilder) RoomBackground(roomBackground string) *RoomConfigBuilder {
	builder.roomBackground = roomBackground
	builder.roomBackgroundFlag = true
	return builder
}

// 飞书签到板背景图
//
// 示例值：https://lf1-ttcdn-tos.pstatp.com/obj/xxx
func (builder *RoomConfigBuilder) DisplayBackground(displayBackground string) *RoomConfigBuilder {
	builder.displayBackground = displayBackground
	builder.displayBackgroundFlag = true
	return builder
}

// 飞书会议室数字标牌
//
// 示例值：
func (builder *RoomConfigBuilder) DigitalSignage(digitalSignage *RoomDigitalSignage) *RoomConfigBuilder {
	builder.digitalSignage = digitalSignage
	builder.digitalSignageFlag = true
	return builder
}

// 飞书投屏盒子数字标牌
//
// 示例值：
func (builder *RoomConfigBuilder) RoomBoxDigitalSignage(roomBoxDigitalSignage *RoomDigitalSignage) *RoomConfigBuilder {
	builder.roomBoxDigitalSignage = roomBoxDigitalSignage
	builder.roomBoxDigitalSignageFlag = true
	return builder
}

// 会议室状态
//
// 示例值：
func (builder *RoomConfigBuilder) RoomStatus(roomStatus *RoomStatus) *RoomConfigBuilder {
	builder.roomStatus = roomStatus
	builder.roomStatusFlag = true
	return builder
}

func (builder *RoomConfigBuilder) Build() *RoomConfig {
	req := &RoomConfig{}
	if builder.roomBackgroundFlag {
		req.RoomBackground = &builder.roomBackground

	}
	if builder.displayBackgroundFlag {
		req.DisplayBackground = &builder.displayBackground

	}
	if builder.digitalSignageFlag {
		req.DigitalSignage = builder.digitalSignage
	}
	if builder.roomBoxDigitalSignageFlag {
		req.RoomBoxDigitalSignage = builder.roomBoxDigitalSignage
	}
	if builder.roomStatusFlag {
		req.RoomStatus = builder.roomStatus
	}
	return req
}

type RoomDigitalSignage struct {
	IfCoverChildScope *bool `json:"if_cover_child_scope,omitempty"` // 是否覆盖子层级及会议室

	Enable *bool `json:"enable,omitempty"` // 是否开启数字标牌功能

	Mute *bool `json:"mute,omitempty"` // 是否静音播放

	StartDisplay *int `json:"start_display,omitempty"` // 在会议结束n分钟后开始播放，取值1~720（仅对飞书会议室数字标牌生效）

	StopDisplay *int `json:"stop_display,omitempty"` // 在日程会议开始前n分钟停止播放，取值1~720（仅对飞书会议室数字标牌生效）

	Materials []*RoomDigitalSignageMaterial `json:"materials,omitempty"` // 素材列表
}

type RoomDigitalSignageBuilder struct {
	ifCoverChildScope     bool // 是否覆盖子层级及会议室
	ifCoverChildScopeFlag bool

	enable     bool // 是否开启数字标牌功能
	enableFlag bool

	mute     bool // 是否静音播放
	muteFlag bool

	startDisplay     int // 在会议结束n分钟后开始播放，取值1~720（仅对飞书会议室数字标牌生效）
	startDisplayFlag bool

	stopDisplay     int // 在日程会议开始前n分钟停止播放，取值1~720（仅对飞书会议室数字标牌生效）
	stopDisplayFlag bool

	materials     []*RoomDigitalSignageMaterial // 素材列表
	materialsFlag bool
}

func NewRoomDigitalSignageBuilder() *RoomDigitalSignageBuilder {
	builder := &RoomDigitalSignageBuilder{}
	return builder
}

// 是否覆盖子层级及会议室
//
// 示例值：true
func (builder *RoomDigitalSignageBuilder) IfCoverChildScope(ifCoverChildScope bool) *RoomDigitalSignageBuilder {
	builder.ifCoverChildScope = ifCoverChildScope
	builder.ifCoverChildScopeFlag = true
	return builder
}

// 是否开启数字标牌功能
//
// 示例值：true
func (builder *RoomDigitalSignageBuilder) Enable(enable bool) *RoomDigitalSignageBuilder {
	builder.enable = enable
	builder.enableFlag = true
	return builder
}

// 是否静音播放
//
// 示例值：true
func (builder *RoomDigitalSignageBuilder) Mute(mute bool) *RoomDigitalSignageBuilder {
	builder.mute = mute
	builder.muteFlag = true
	return builder
}

// 在会议结束n分钟后开始播放，取值1~720（仅对飞书会议室数字标牌生效）
//
// 示例值：3
func (builder *RoomDigitalSignageBuilder) StartDisplay(startDisplay int) *RoomDigitalSignageBuilder {
	builder.startDisplay = startDisplay
	builder.startDisplayFlag = true
	return builder
}

// 在日程会议开始前n分钟停止播放，取值1~720（仅对飞书会议室数字标牌生效）
//
// 示例值：3
func (builder *RoomDigitalSignageBuilder) StopDisplay(stopDisplay int) *RoomDigitalSignageBuilder {
	builder.stopDisplay = stopDisplay
	builder.stopDisplayFlag = true
	return builder
}

// 素材列表
//
// 示例值：
func (builder *RoomDigitalSignageBuilder) Materials(materials []*RoomDigitalSignageMaterial) *RoomDigitalSignageBuilder {
	builder.materials = materials
	builder.materialsFlag = true
	return builder
}

func (builder *RoomDigitalSignageBuilder) Build() *RoomDigitalSignage {
	req := &RoomDigitalSignage{}
	if builder.ifCoverChildScopeFlag {
		req.IfCoverChildScope = &builder.ifCoverChildScope

	}
	if builder.enableFlag {
		req.Enable = &builder.enable

	}
	if builder.muteFlag {
		req.Mute = &builder.mute

	}
	if builder.startDisplayFlag {
		req.StartDisplay = &builder.startDisplay

	}
	if builder.stopDisplayFlag {
		req.StopDisplay = &builder.stopDisplay

	}
	if builder.materialsFlag {
		req.Materials = builder.materials
	}
	return req
}

type RoomDigitalSignageMaterial struct {
	Id *string `json:"id,omitempty"` // 素材ID，当设置新素材时，无需传递该字段

	Name *string `json:"name,omitempty"` // 素材名称

	MaterialType *int `json:"material_type,omitempty"` // 素材类型

	Url *string `json:"url,omitempty"` // 素材url

	Duration *int `json:"duration,omitempty"` // 播放时长（单位sec），取值1~43200

	Cover *string `json:"cover,omitempty"` // 素材封面url

	Md5 *string `json:"md5,omitempty"` // 素材文件md5

	Vid *string `json:"vid,omitempty"` // 素材文件vid

	Size *string `json:"size,omitempty"` // 素材文件大小（单位byte）
}

type RoomDigitalSignageMaterialBuilder struct {
	id     string // 素材ID，当设置新素材时，无需传递该字段
	idFlag bool

	name     string // 素材名称
	nameFlag bool

	materialType     int // 素材类型
	materialTypeFlag bool

	url     string // 素材url
	urlFlag bool

	duration     int // 播放时长（单位sec），取值1~43200
	durationFlag bool

	cover     string // 素材封面url
	coverFlag bool

	md5     string // 素材文件md5
	md5Flag bool

	vid     string // 素材文件vid
	vidFlag bool

	size     string // 素材文件大小（单位byte）
	sizeFlag bool
}

func NewRoomDigitalSignageMaterialBuilder() *RoomDigitalSignageMaterialBuilder {
	builder := &RoomDigitalSignageMaterialBuilder{}
	return builder
}

// 素材ID，当设置新素材时，无需传递该字段
//
// 示例值：7847784676276
func (builder *RoomDigitalSignageMaterialBuilder) Id(id string) *RoomDigitalSignageMaterialBuilder {
	builder.id = id
	builder.idFlag = true
	return builder
}

// 素材名称
//
// 示例值：name
func (builder *RoomDigitalSignageMaterialBuilder) Name(name string) *RoomDigitalSignageMaterialBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 素材类型
//
// 示例值：0
func (builder *RoomDigitalSignageMaterialBuilder) MaterialType(materialType int) *RoomDigitalSignageMaterialBuilder {
	builder.materialType = materialType
	builder.materialTypeFlag = true
	return builder
}

// 素材url
//
// 示例值：url
func (builder *RoomDigitalSignageMaterialBuilder) Url(url string) *RoomDigitalSignageMaterialBuilder {
	builder.url = url
	builder.urlFlag = true
	return builder
}

// 播放时长（单位sec），取值1~43200
//
// 示例值：15
func (builder *RoomDigitalSignageMaterialBuilder) Duration(duration int) *RoomDigitalSignageMaterialBuilder {
	builder.duration = duration
	builder.durationFlag = true
	return builder
}

// 素材封面url
//
// 示例值：url
func (builder *RoomDigitalSignageMaterialBuilder) Cover(cover string) *RoomDigitalSignageMaterialBuilder {
	builder.cover = cover
	builder.coverFlag = true
	return builder
}

// 素材文件md5
//
// 示例值：md5
func (builder *RoomDigitalSignageMaterialBuilder) Md5(md5 string) *RoomDigitalSignageMaterialBuilder {
	builder.md5 = md5
	builder.md5Flag = true
	return builder
}

// 素材文件vid
//
// 示例值：vid
func (builder *RoomDigitalSignageMaterialBuilder) Vid(vid string) *RoomDigitalSignageMaterialBuilder {
	builder.vid = vid
	builder.vidFlag = true
	return builder
}

// 素材文件大小（单位byte）
//
// 示例值：100
func (builder *RoomDigitalSignageMaterialBuilder) Size(size string) *RoomDigitalSignageMaterialBuilder {
	builder.size = size
	builder.sizeFlag = true
	return builder
}

func (builder *RoomDigitalSignageMaterialBuilder) Build() *RoomDigitalSignageMaterial {
	req := &RoomDigitalSignageMaterial{}
	if builder.idFlag {
		req.Id = &builder.id

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.materialTypeFlag {
		req.MaterialType = &builder.materialType

	}
	if builder.urlFlag {
		req.Url = &builder.url

	}
	if builder.durationFlag {
		req.Duration = &builder.duration

	}
	if builder.coverFlag {
		req.Cover = &builder.cover

	}
	if builder.md5Flag {
		req.Md5 = &builder.md5

	}
	if builder.vidFlag {
		req.Vid = &builder.vid

	}
	if builder.sizeFlag {
		req.Size = &builder.size

	}
	return req
}

type RoomEvent struct {
	RoomId *string `json:"room_id,omitempty"` // 会议室ID

	Name *string `json:"name,omitempty"` // 会议室名称

	Capacity *int `json:"capacity,omitempty"` // 会议室能容纳的人数

	Description *string `json:"description,omitempty"` // 会议室的相关描述

	DisplayId *string `json:"display_id,omitempty"` // 会议室的展示ID

	CustomRoomId *string `json:"custom_room_id,omitempty"` // 自定义的会议室ID

	RoomLevelId *string `json:"room_level_id,omitempty"` // 层级ID

	Path []string `json:"path,omitempty"` // 层级路径

	RoomStatus *RoomStatusEvent `json:"room_status,omitempty"` // 会议室状态

	Device []*Device `json:"device,omitempty"` // 设施信息列表
}

type RoomEventBuilder struct {
	roomId     string // 会议室ID
	roomIdFlag bool

	name     string // 会议室名称
	nameFlag bool

	capacity     int // 会议室能容纳的人数
	capacityFlag bool

	description     string // 会议室的相关描述
	descriptionFlag bool

	displayId     string // 会议室的展示ID
	displayIdFlag bool

	customRoomId     string // 自定义的会议室ID
	customRoomIdFlag bool

	roomLevelId     string // 层级ID
	roomLevelIdFlag bool

	path     []string // 层级路径
	pathFlag bool

	roomStatus     *RoomStatusEvent // 会议室状态
	roomStatusFlag bool

	device     []*Device // 设施信息列表
	deviceFlag bool
}

func NewRoomEventBuilder() *RoomEventBuilder {
	builder := &RoomEventBuilder{}
	return builder
}

// 会议室ID
//
// 示例值：omm_4de32cf10a4358788ff4e09e37ebbf9b
func (builder *RoomEventBuilder) RoomId(roomId string) *RoomEventBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 会议室名称
//
// 示例值：测试会议室
func (builder *RoomEventBuilder) Name(name string) *RoomEventBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 会议室能容纳的人数
//
// 示例值：10
func (builder *RoomEventBuilder) Capacity(capacity int) *RoomEventBuilder {
	builder.capacity = capacity
	builder.capacityFlag = true
	return builder
}

// 会议室的相关描述
//
// 示例值：测试会议室描述
func (builder *RoomEventBuilder) Description(description string) *RoomEventBuilder {
	builder.description = description
	builder.descriptionFlag = true
	return builder
}

// 会议室的展示ID
//
// 示例值：LM134742334
func (builder *RoomEventBuilder) DisplayId(displayId string) *RoomEventBuilder {
	builder.displayId = displayId
	builder.displayIdFlag = true
	return builder
}

// 自定义的会议室ID
//
// 示例值：1234
func (builder *RoomEventBuilder) CustomRoomId(customRoomId string) *RoomEventBuilder {
	builder.customRoomId = customRoomId
	builder.customRoomIdFlag = true
	return builder
}

// 层级ID
//
// 示例值：omb_4ad1a2c7a2fbc5fc9570f38456931293
func (builder *RoomEventBuilder) RoomLevelId(roomLevelId string) *RoomEventBuilder {
	builder.roomLevelId = roomLevelId
	builder.roomLevelIdFlag = true
	return builder
}

// 层级路径
//
// 示例值：[omb_8d020b12fe49e82847c2af3c193d5754,omb_8d020b12fe49e82847c2af3c193d5754]
func (builder *RoomEventBuilder) Path(path []string) *RoomEventBuilder {
	builder.path = path
	builder.pathFlag = true
	return builder
}

// 会议室状态
//
// 示例值：
func (builder *RoomEventBuilder) RoomStatus(roomStatus *RoomStatusEvent) *RoomEventBuilder {
	builder.roomStatus = roomStatus
	builder.roomStatusFlag = true
	return builder
}

// 设施信息列表
//
// 示例值：
func (builder *RoomEventBuilder) Device(device []*Device) *RoomEventBuilder {
	builder.device = device
	builder.deviceFlag = true
	return builder
}

func (builder *RoomEventBuilder) Build() *RoomEvent {
	req := &RoomEvent{}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.capacityFlag {
		req.Capacity = &builder.capacity

	}
	if builder.descriptionFlag {
		req.Description = &builder.description

	}
	if builder.displayIdFlag {
		req.DisplayId = &builder.displayId

	}
	if builder.customRoomIdFlag {
		req.CustomRoomId = &builder.customRoomId

	}
	if builder.roomLevelIdFlag {
		req.RoomLevelId = &builder.roomLevelId

	}
	if builder.pathFlag {
		req.Path = builder.path
	}
	if builder.roomStatusFlag {
		req.RoomStatus = builder.roomStatus
	}
	if builder.deviceFlag {
		req.Device = builder.device
	}
	return req
}

type RoomLevel struct {
	RoomLevelId *string `json:"room_level_id,omitempty"` // 层级ID

	Name *string `json:"name,omitempty"` // 层级名称

	ParentId *string `json:"parent_id,omitempty"` // 父层级ID

	Path []string `json:"path,omitempty"` // 层级路径

	HasChild *bool `json:"has_child,omitempty"` // 是否有子层级

	CustomGroupId *string `json:"custom_group_id,omitempty"` // 自定义层级ID
}

type RoomLevelBuilder struct {
	roomLevelId     string // 层级ID
	roomLevelIdFlag bool

	name     string // 层级名称
	nameFlag bool

	parentId     string // 父层级ID
	parentIdFlag bool

	path     []string // 层级路径
	pathFlag bool

	hasChild     bool // 是否有子层级
	hasChildFlag bool

	customGroupId     string // 自定义层级ID
	customGroupIdFlag bool
}

func NewRoomLevelBuilder() *RoomLevelBuilder {
	builder := &RoomLevelBuilder{}
	return builder
}

// 层级ID
//
// 示例值：层级ID
func (builder *RoomLevelBuilder) RoomLevelId(roomLevelId string) *RoomLevelBuilder {
	builder.roomLevelId = roomLevelId
	builder.roomLevelIdFlag = true
	return builder
}

// 层级名称
//
// 示例值：测试层级
func (builder *RoomLevelBuilder) Name(name string) *RoomLevelBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 父层级ID
//
// 示例值：omb_4ad1a2c7a2fbc5fc9570f38456931293
func (builder *RoomLevelBuilder) ParentId(parentId string) *RoomLevelBuilder {
	builder.parentId = parentId
	builder.parentIdFlag = true
	return builder
}

// 层级路径
//
// 示例值：[omb_8d020b12fe49e82847c2af3c193d5754, omb_8d020b12fe49e82847c2af3c193d5754]
func (builder *RoomLevelBuilder) Path(path []string) *RoomLevelBuilder {
	builder.path = path
	builder.pathFlag = true
	return builder
}

// 是否有子层级
//
// 示例值：false
func (builder *RoomLevelBuilder) HasChild(hasChild bool) *RoomLevelBuilder {
	builder.hasChild = hasChild
	builder.hasChildFlag = true
	return builder
}

// 自定义层级ID
//
// 示例值：10000
func (builder *RoomLevelBuilder) CustomGroupId(customGroupId string) *RoomLevelBuilder {
	builder.customGroupId = customGroupId
	builder.customGroupIdFlag = true
	return builder
}

func (builder *RoomLevelBuilder) Build() *RoomLevel {
	req := &RoomLevel{}
	if builder.roomLevelIdFlag {
		req.RoomLevelId = &builder.roomLevelId

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.parentIdFlag {
		req.ParentId = &builder.parentId

	}
	if builder.pathFlag {
		req.Path = builder.path
	}
	if builder.hasChildFlag {
		req.HasChild = &builder.hasChild

	}
	if builder.customGroupIdFlag {
		req.CustomGroupId = &builder.customGroupId

	}
	return req
}

type RoomMeetingReservation struct {
	RoomId *string `json:"room_id,omitempty"` // 会议室ID

	RoomName *string `json:"room_name,omitempty"` // 会议室名称

	EventTitle *string `json:"event_title,omitempty"` // 会议标题

	Reserver *string `json:"reserver,omitempty"` // 预定人

	ReserverUserId *string `json:"reserver_user_id,omitempty"` // 预定人ID

	DepartmentOfReserver *string `json:"department_of_reserver,omitempty"` // 预定人所属部门

	GuestsNumber *string `json:"guests_number,omitempty"` // 邀约人数

	AcceptedNumber *string `json:"accepted_number,omitempty"` // 接受人数

	EventStartTime *string `json:"event_start_time,omitempty"` // 会议开始时间

	EventEndTime *string `json:"event_end_time,omitempty"` // 会议结束时间

	EventDuration *string `json:"event_duration,omitempty"` // 会议时长

	ReservationStatus *string `json:"reservation_status,omitempty"` // 会议室预定状态

	CheckInDevice *string `json:"check_in_device,omitempty"` // 签到设备

	RoomCheckInStatus *string `json:"room_check_in_status,omitempty"` // 会议室签到状态

	CheckInTime *string `json:"check_in_time,omitempty"` // 会议室签到时间

	IsReleaseEarly *string `json:"is_release_early,omitempty"` // 是否提前释放

	ReleasingPerson *string `json:"releasing_person,omitempty"` // 释放人

	ReleasingTime *string `json:"releasing_time,omitempty"` // 释放时间
}

type RoomMeetingReservationBuilder struct {
	roomId     string // 会议室ID
	roomIdFlag bool

	roomName     string // 会议室名称
	roomNameFlag bool

	eventTitle     string // 会议标题
	eventTitleFlag bool

	reserver     string // 预定人
	reserverFlag bool

	reserverUserId     string // 预定人ID
	reserverUserIdFlag bool

	departmentOfReserver     string // 预定人所属部门
	departmentOfReserverFlag bool

	guestsNumber     string // 邀约人数
	guestsNumberFlag bool

	acceptedNumber     string // 接受人数
	acceptedNumberFlag bool

	eventStartTime     string // 会议开始时间
	eventStartTimeFlag bool

	eventEndTime     string // 会议结束时间
	eventEndTimeFlag bool

	eventDuration     string // 会议时长
	eventDurationFlag bool

	reservationStatus     string // 会议室预定状态
	reservationStatusFlag bool

	checkInDevice     string // 签到设备
	checkInDeviceFlag bool

	roomCheckInStatus     string // 会议室签到状态
	roomCheckInStatusFlag bool

	checkInTime     string // 会议室签到时间
	checkInTimeFlag bool

	isReleaseEarly     string // 是否提前释放
	isReleaseEarlyFlag bool

	releasingPerson     string // 释放人
	releasingPersonFlag bool

	releasingTime     string // 释放时间
	releasingTimeFlag bool
}

func NewRoomMeetingReservationBuilder() *RoomMeetingReservationBuilder {
	builder := &RoomMeetingReservationBuilder{}
	return builder
}

// 会议室ID
//
// 示例值：omm_4de32cf10a4358788ff4e09e37ebbf9b
func (builder *RoomMeetingReservationBuilder) RoomId(roomId string) *RoomMeetingReservationBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 会议室名称
//
// 示例值：VIP Meeting Room
func (builder *RoomMeetingReservationBuilder) RoomName(roomName string) *RoomMeetingReservationBuilder {
	builder.roomName = roomName
	builder.roomNameFlag = true
	return builder
}

// 会议标题
//
// 示例值：飞书邀请的日程
func (builder *RoomMeetingReservationBuilder) EventTitle(eventTitle string) *RoomMeetingReservationBuilder {
	builder.eventTitle = eventTitle
	builder.eventTitleFlag = true
	return builder
}

// 预定人
//
// 示例值：kehan
func (builder *RoomMeetingReservationBuilder) Reserver(reserver string) *RoomMeetingReservationBuilder {
	builder.reserver = reserver
	builder.reserverFlag = true
	return builder
}

// 预定人ID
//
// 示例值：ou_1234567(UserID);cli_123123(BotID)
func (builder *RoomMeetingReservationBuilder) ReserverUserId(reserverUserId string) *RoomMeetingReservationBuilder {
	builder.reserverUserId = reserverUserId
	builder.reserverUserIdFlag = true
	return builder
}

// 预定人所属部门
//
// 示例值：development
func (builder *RoomMeetingReservationBuilder) DepartmentOfReserver(departmentOfReserver string) *RoomMeetingReservationBuilder {
	builder.departmentOfReserver = departmentOfReserver
	builder.departmentOfReserverFlag = true
	return builder
}

// 邀约人数
//
// 示例值：5
func (builder *RoomMeetingReservationBuilder) GuestsNumber(guestsNumber string) *RoomMeetingReservationBuilder {
	builder.guestsNumber = guestsNumber
	builder.guestsNumberFlag = true
	return builder
}

// 接受人数
//
// 示例值：2
func (builder *RoomMeetingReservationBuilder) AcceptedNumber(acceptedNumber string) *RoomMeetingReservationBuilder {
	builder.acceptedNumber = acceptedNumber
	builder.acceptedNumberFlag = true
	return builder
}

// 会议开始时间
//
// 示例值：2022.12.17 21:00:00 (GMT+08:00)
func (builder *RoomMeetingReservationBuilder) EventStartTime(eventStartTime string) *RoomMeetingReservationBuilder {
	builder.eventStartTime = eventStartTime
	builder.eventStartTimeFlag = true
	return builder
}

// 会议结束时间
//
// 示例值：2022.12.17 22:00:00 (GMT+08:00)
func (builder *RoomMeetingReservationBuilder) EventEndTime(eventEndTime string) *RoomMeetingReservationBuilder {
	builder.eventEndTime = eventEndTime
	builder.eventEndTimeFlag = true
	return builder
}

// 会议时长
//
// 示例值：1:00:00
func (builder *RoomMeetingReservationBuilder) EventDuration(eventDuration string) *RoomMeetingReservationBuilder {
	builder.eventDuration = eventDuration
	builder.eventDurationFlag = true
	return builder
}

// 会议室预定状态
//
// 示例值：预定成功
func (builder *RoomMeetingReservationBuilder) ReservationStatus(reservationStatus string) *RoomMeetingReservationBuilder {
	builder.reservationStatus = reservationStatus
	builder.reservationStatusFlag = true
	return builder
}

// 签到设备
//
// 示例值：签到板
func (builder *RoomMeetingReservationBuilder) CheckInDevice(checkInDevice string) *RoomMeetingReservationBuilder {
	builder.checkInDevice = checkInDevice
	builder.checkInDeviceFlag = true
	return builder
}

// 会议室签到状态
//
// 示例值：已签到
func (builder *RoomMeetingReservationBuilder) RoomCheckInStatus(roomCheckInStatus string) *RoomMeetingReservationBuilder {
	builder.roomCheckInStatus = roomCheckInStatus
	builder.roomCheckInStatusFlag = true
	return builder
}

// 会议室签到时间
//
// 示例值：2022.12.09 13:35:30 (GMT+08:00)
func (builder *RoomMeetingReservationBuilder) CheckInTime(checkInTime string) *RoomMeetingReservationBuilder {
	builder.checkInTime = checkInTime
	builder.checkInTimeFlag = true
	return builder
}

// 是否提前释放
//
// 示例值：已释放（手动释放）
func (builder *RoomMeetingReservationBuilder) IsReleaseEarly(isReleaseEarly string) *RoomMeetingReservationBuilder {
	builder.isReleaseEarly = isReleaseEarly
	builder.isReleaseEarlyFlag = true
	return builder
}

// 释放人
//
// 示例值：kehan
func (builder *RoomMeetingReservationBuilder) ReleasingPerson(releasingPerson string) *RoomMeetingReservationBuilder {
	builder.releasingPerson = releasingPerson
	builder.releasingPersonFlag = true
	return builder
}

// 释放时间
//
// 示例值：2022.12.20 11:25:15 (GMT+08:00)
func (builder *RoomMeetingReservationBuilder) ReleasingTime(releasingTime string) *RoomMeetingReservationBuilder {
	builder.releasingTime = releasingTime
	builder.releasingTimeFlag = true
	return builder
}

func (builder *RoomMeetingReservationBuilder) Build() *RoomMeetingReservation {
	req := &RoomMeetingReservation{}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId

	}
	if builder.roomNameFlag {
		req.RoomName = &builder.roomName

	}
	if builder.eventTitleFlag {
		req.EventTitle = &builder.eventTitle

	}
	if builder.reserverFlag {
		req.Reserver = &builder.reserver

	}
	if builder.reserverUserIdFlag {
		req.ReserverUserId = &builder.reserverUserId

	}
	if builder.departmentOfReserverFlag {
		req.DepartmentOfReserver = &builder.departmentOfReserver

	}
	if builder.guestsNumberFlag {
		req.GuestsNumber = &builder.guestsNumber

	}
	if builder.acceptedNumberFlag {
		req.AcceptedNumber = &builder.acceptedNumber

	}
	if builder.eventStartTimeFlag {
		req.EventStartTime = &builder.eventStartTime

	}
	if builder.eventEndTimeFlag {
		req.EventEndTime = &builder.eventEndTime

	}
	if builder.eventDurationFlag {
		req.EventDuration = &builder.eventDuration

	}
	if builder.reservationStatusFlag {
		req.ReservationStatus = &builder.reservationStatus

	}
	if builder.checkInDeviceFlag {
		req.CheckInDevice = &builder.checkInDevice

	}
	if builder.roomCheckInStatusFlag {
		req.RoomCheckInStatus = &builder.roomCheckInStatus

	}
	if builder.checkInTimeFlag {
		req.CheckInTime = &builder.checkInTime

	}
	if builder.isReleaseEarlyFlag {
		req.IsReleaseEarly = &builder.isReleaseEarly

	}
	if builder.releasingPersonFlag {
		req.ReleasingPerson = &builder.releasingPerson

	}
	if builder.releasingTimeFlag {
		req.ReleasingTime = &builder.releasingTime

	}
	return req
}

type RoomStatus struct {
	Status *bool `json:"status,omitempty"` // 是否启用会议室

	ScheduleStatus *bool `json:"schedule_status,omitempty"` // 会议室未来状态为启用或禁用

	DisableStartTime *string `json:"disable_start_time,omitempty"` // 禁用开始时间（unix时间，单位sec）

	DisableEndTime *string `json:"disable_end_time,omitempty"` // 禁用结束时间（unix时间，单位sec，数值0表示永久禁用）

	DisableReason *string `json:"disable_reason,omitempty"` // 禁用原因

	ContactIds []string `json:"contact_ids,omitempty"` // 联系人列表，id类型由user_id_type参数决定

	DisableNotice *bool `json:"disable_notice,omitempty"` // 是否在禁用时发送通知给预定了该会议室的员工

	ResumeNotice *bool `json:"resume_notice,omitempty"` // 是否在恢复启用时发送通知给联系人
}

type RoomStatusBuilder struct {
	status     bool // 是否启用会议室
	statusFlag bool

	scheduleStatus     bool // 会议室未来状态为启用或禁用
	scheduleStatusFlag bool

	disableStartTime     string // 禁用开始时间（unix时间，单位sec）
	disableStartTimeFlag bool

	disableEndTime     string // 禁用结束时间（unix时间，单位sec，数值0表示永久禁用）
	disableEndTimeFlag bool

	disableReason     string // 禁用原因
	disableReasonFlag bool

	contactIds     []string // 联系人列表，id类型由user_id_type参数决定
	contactIdsFlag bool

	disableNotice     bool // 是否在禁用时发送通知给预定了该会议室的员工
	disableNoticeFlag bool

	resumeNotice     bool // 是否在恢复启用时发送通知给联系人
	resumeNoticeFlag bool
}

func NewRoomStatusBuilder() *RoomStatusBuilder {
	builder := &RoomStatusBuilder{}
	return builder
}

// 是否启用会议室
//
// 示例值：true
func (builder *RoomStatusBuilder) Status(status bool) *RoomStatusBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 会议室未来状态为启用或禁用
//
// 示例值：true
func (builder *RoomStatusBuilder) ScheduleStatus(scheduleStatus bool) *RoomStatusBuilder {
	builder.scheduleStatus = scheduleStatus
	builder.scheduleStatusFlag = true
	return builder
}

// 禁用开始时间（unix时间，单位sec）
//
// 示例值：1652356050
func (builder *RoomStatusBuilder) DisableStartTime(disableStartTime string) *RoomStatusBuilder {
	builder.disableStartTime = disableStartTime
	builder.disableStartTimeFlag = true
	return builder
}

// 禁用结束时间（unix时间，单位sec，数值0表示永久禁用）
//
// 示例值：1652442450
func (builder *RoomStatusBuilder) DisableEndTime(disableEndTime string) *RoomStatusBuilder {
	builder.disableEndTime = disableEndTime
	builder.disableEndTimeFlag = true
	return builder
}

// 禁用原因
//
// 示例值：测试占用
func (builder *RoomStatusBuilder) DisableReason(disableReason string) *RoomStatusBuilder {
	builder.disableReason = disableReason
	builder.disableReasonFlag = true
	return builder
}

// 联系人列表，id类型由user_id_type参数决定
//
// 示例值：["ou_3ec3f6a28a0d08c45d895276e8e5e19b"]
func (builder *RoomStatusBuilder) ContactIds(contactIds []string) *RoomStatusBuilder {
	builder.contactIds = contactIds
	builder.contactIdsFlag = true
	return builder
}

// 是否在禁用时发送通知给预定了该会议室的员工
//
// 示例值：true
func (builder *RoomStatusBuilder) DisableNotice(disableNotice bool) *RoomStatusBuilder {
	builder.disableNotice = disableNotice
	builder.disableNoticeFlag = true
	return builder
}

// 是否在恢复启用时发送通知给联系人
//
// 示例值：true
func (builder *RoomStatusBuilder) ResumeNotice(resumeNotice bool) *RoomStatusBuilder {
	builder.resumeNotice = resumeNotice
	builder.resumeNoticeFlag = true
	return builder
}

func (builder *RoomStatusBuilder) Build() *RoomStatus {
	req := &RoomStatus{}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.scheduleStatusFlag {
		req.ScheduleStatus = &builder.scheduleStatus

	}
	if builder.disableStartTimeFlag {
		req.DisableStartTime = &builder.disableStartTime

	}
	if builder.disableEndTimeFlag {
		req.DisableEndTime = &builder.disableEndTime

	}
	if builder.disableReasonFlag {
		req.DisableReason = &builder.disableReason

	}
	if builder.contactIdsFlag {
		req.ContactIds = builder.contactIds
	}
	if builder.disableNoticeFlag {
		req.DisableNotice = &builder.disableNotice

	}
	if builder.resumeNoticeFlag {
		req.ResumeNotice = &builder.resumeNotice

	}
	return req
}

type RoomStatusEvent struct {
	Status *bool `json:"status,omitempty"` // 是否启用会议室

	ScheduleStatus *bool `json:"schedule_status,omitempty"` // 会议室未来状态为启用或禁用

	DisableStartTime *string `json:"disable_start_time,omitempty"` // 禁用开始时间（unix时间，单位sec）

	DisableEndTime *string `json:"disable_end_time,omitempty"` // 禁用结束时间（unix时间，单位sec，数值0表示永久禁用）

	DisableReason *string `json:"disable_reason,omitempty"` // 禁用原因

	ContactIds []*UserId `json:"contact_ids,omitempty"` // 联系人列表

	DisableNotice *bool `json:"disable_notice,omitempty"` // 是否在禁用时发送通知给预定了该会议室的员工

	ResumeNotice *bool `json:"resume_notice,omitempty"` // 是否在恢复启用时发送通知给预定了该会议室的员工
}

type RoomStatusEventBuilder struct {
	status     bool // 是否启用会议室
	statusFlag bool

	scheduleStatus     bool // 会议室未来状态为启用或禁用
	scheduleStatusFlag bool

	disableStartTime     string // 禁用开始时间（unix时间，单位sec）
	disableStartTimeFlag bool

	disableEndTime     string // 禁用结束时间（unix时间，单位sec，数值0表示永久禁用）
	disableEndTimeFlag bool

	disableReason     string // 禁用原因
	disableReasonFlag bool

	contactIds     []*UserId // 联系人列表
	contactIdsFlag bool

	disableNotice     bool // 是否在禁用时发送通知给预定了该会议室的员工
	disableNoticeFlag bool

	resumeNotice     bool // 是否在恢复启用时发送通知给预定了该会议室的员工
	resumeNoticeFlag bool
}

func NewRoomStatusEventBuilder() *RoomStatusEventBuilder {
	builder := &RoomStatusEventBuilder{}
	return builder
}

// 是否启用会议室
//
// 示例值：true
func (builder *RoomStatusEventBuilder) Status(status bool) *RoomStatusEventBuilder {
	builder.status = status
	builder.statusFlag = true
	return builder
}

// 会议室未来状态为启用或禁用
//
// 示例值：true
func (builder *RoomStatusEventBuilder) ScheduleStatus(scheduleStatus bool) *RoomStatusEventBuilder {
	builder.scheduleStatus = scheduleStatus
	builder.scheduleStatusFlag = true
	return builder
}

// 禁用开始时间（unix时间，单位sec）
//
// 示例值：1652356050
func (builder *RoomStatusEventBuilder) DisableStartTime(disableStartTime string) *RoomStatusEventBuilder {
	builder.disableStartTime = disableStartTime
	builder.disableStartTimeFlag = true
	return builder
}

// 禁用结束时间（unix时间，单位sec，数值0表示永久禁用）
//
// 示例值：1652442450
func (builder *RoomStatusEventBuilder) DisableEndTime(disableEndTime string) *RoomStatusEventBuilder {
	builder.disableEndTime = disableEndTime
	builder.disableEndTimeFlag = true
	return builder
}

// 禁用原因
//
// 示例值：测试占用
func (builder *RoomStatusEventBuilder) DisableReason(disableReason string) *RoomStatusEventBuilder {
	builder.disableReason = disableReason
	builder.disableReasonFlag = true
	return builder
}

// 联系人列表
//
// 示例值：
func (builder *RoomStatusEventBuilder) ContactIds(contactIds []*UserId) *RoomStatusEventBuilder {
	builder.contactIds = contactIds
	builder.contactIdsFlag = true
	return builder
}

// 是否在禁用时发送通知给预定了该会议室的员工
//
// 示例值：true
func (builder *RoomStatusEventBuilder) DisableNotice(disableNotice bool) *RoomStatusEventBuilder {
	builder.disableNotice = disableNotice
	builder.disableNoticeFlag = true
	return builder
}

// 是否在恢复启用时发送通知给预定了该会议室的员工
//
// 示例值：true
func (builder *RoomStatusEventBuilder) ResumeNotice(resumeNotice bool) *RoomStatusEventBuilder {
	builder.resumeNotice = resumeNotice
	builder.resumeNoticeFlag = true
	return builder
}

func (builder *RoomStatusEventBuilder) Build() *RoomStatusEvent {
	req := &RoomStatusEvent{}
	if builder.statusFlag {
		req.Status = &builder.status

	}
	if builder.scheduleStatusFlag {
		req.ScheduleStatus = &builder.scheduleStatus

	}
	if builder.disableStartTimeFlag {
		req.DisableStartTime = &builder.disableStartTime

	}
	if builder.disableEndTimeFlag {
		req.DisableEndTime = &builder.disableEndTime

	}
	if builder.disableReasonFlag {
		req.DisableReason = &builder.disableReason

	}
	if builder.contactIdsFlag {
		req.ContactIds = builder.contactIds
	}
	if builder.disableNoticeFlag {
		req.DisableNotice = &builder.disableNotice

	}
	if builder.resumeNoticeFlag {
		req.ResumeNotice = &builder.resumeNotice

	}
	return req
}

type ScopeConfig struct {
	ScopeType *int `json:"scope_type,omitempty"` // 查询节点范围

	ScopeId *string `json:"scope_id,omitempty"` // 查询节点ID：如果scope_type为1，则为层级ID，如果scope_type为2，则为会议室ID

	ScopeConfig *RoomConfig `json:"scope_config,omitempty"` // 节点配置
}

type ScopeConfigBuilder struct {
	scopeType     int // 查询节点范围
	scopeTypeFlag bool

	scopeId     string // 查询节点ID：如果scope_type为1，则为层级ID，如果scope_type为2，则为会议室ID
	scopeIdFlag bool

	scopeConfig     *RoomConfig // 节点配置
	scopeConfigFlag bool
}

func NewScopeConfigBuilder() *ScopeConfigBuilder {
	builder := &ScopeConfigBuilder{}
	return builder
}

// 查询节点范围
//
// 示例值：1
func (builder *ScopeConfigBuilder) ScopeType(scopeType int) *ScopeConfigBuilder {
	builder.scopeType = scopeType
	builder.scopeTypeFlag = true
	return builder
}

// 查询节点ID：如果scope_type为1，则为层级ID，如果scope_type为2，则为会议室ID
//
// 示例值：omm_608d34d82d531b27fa993902d350a307
func (builder *ScopeConfigBuilder) ScopeId(scopeId string) *ScopeConfigBuilder {
	builder.scopeId = scopeId
	builder.scopeIdFlag = true
	return builder
}

// 节点配置
//
// 示例值：
func (builder *ScopeConfigBuilder) ScopeConfig(scopeConfig *RoomConfig) *ScopeConfigBuilder {
	builder.scopeConfig = scopeConfig
	builder.scopeConfigFlag = true
	return builder
}

func (builder *ScopeConfigBuilder) Build() *ScopeConfig {
	req := &ScopeConfig{}
	if builder.scopeTypeFlag {
		req.ScopeType = &builder.scopeType

	}
	if builder.scopeIdFlag {
		req.ScopeId = &builder.scopeId

	}
	if builder.scopeConfigFlag {
		req.ScopeConfig = builder.scopeConfig
	}
	return req
}

type SubjectiveCheck struct {
	KeyPoints []*KeyPoint `json:"key_points,omitempty"` // 关键点

	UserInputPrompts []string `json:"user_input_prompts,omitempty"` // 用户输入prompt
}

type SubjectiveCheckBuilder struct {
	keyPoints     []*KeyPoint // 关键点
	keyPointsFlag bool

	userInputPrompts     []string // 用户输入prompt
	userInputPromptsFlag bool
}

func NewSubjectiveCheckBuilder() *SubjectiveCheckBuilder {
	builder := &SubjectiveCheckBuilder{}
	return builder
}

// 关键点
//
// 示例值：
func (builder *SubjectiveCheckBuilder) KeyPoints(keyPoints []*KeyPoint) *SubjectiveCheckBuilder {
	builder.keyPoints = keyPoints
	builder.keyPointsFlag = true
	return builder
}

// 用户输入prompt
//
// 示例值：
func (builder *SubjectiveCheckBuilder) UserInputPrompts(userInputPrompts []string) *SubjectiveCheckBuilder {
	builder.userInputPrompts = userInputPrompts
	builder.userInputPromptsFlag = true
	return builder
}

func (builder *SubjectiveCheckBuilder) Build() *SubjectiveCheck {
	req := &SubjectiveCheck{}
	if builder.keyPointsFlag {
		req.KeyPoints = builder.keyPoints
	}
	if builder.userInputPromptsFlag {
		req.UserInputPrompts = builder.userInputPrompts
	}
	return req
}

type SubjectiveCheckOutput struct {
	Keypoints []string `json:"keypoints,omitempty"` // 关键点

	KeyPointMatchDetails []*KeyPointMatchDetails `json:"key_point_match_details,omitempty"` // 关键点详情

	UserPromptOutputs []string `json:"user_prompt_outputs,omitempty"` // 用户prompt输出

	StatusCode *int `json:"status_code,omitempty"` // 状态码
}

type SubjectiveCheckOutputBuilder struct {
	keypoints     []string // 关键点
	keypointsFlag bool

	keyPointMatchDetails     []*KeyPointMatchDetails // 关键点详情
	keyPointMatchDetailsFlag bool

	userPromptOutputs     []string // 用户prompt输出
	userPromptOutputsFlag bool

	statusCode     int // 状态码
	statusCodeFlag bool
}

func NewSubjectiveCheckOutputBuilder() *SubjectiveCheckOutputBuilder {
	builder := &SubjectiveCheckOutputBuilder{}
	return builder
}

// 关键点
//
// 示例值：
func (builder *SubjectiveCheckOutputBuilder) Keypoints(keypoints []string) *SubjectiveCheckOutputBuilder {
	builder.keypoints = keypoints
	builder.keypointsFlag = true
	return builder
}

// 关键点详情
//
// 示例值：
func (builder *SubjectiveCheckOutputBuilder) KeyPointMatchDetails(keyPointMatchDetails []*KeyPointMatchDetails) *SubjectiveCheckOutputBuilder {
	builder.keyPointMatchDetails = keyPointMatchDetails
	builder.keyPointMatchDetailsFlag = true
	return builder
}

// 用户prompt输出
//
// 示例值：
func (builder *SubjectiveCheckOutputBuilder) UserPromptOutputs(userPromptOutputs []string) *SubjectiveCheckOutputBuilder {
	builder.userPromptOutputs = userPromptOutputs
	builder.userPromptOutputsFlag = true
	return builder
}

// 状态码
//
// 示例值：0
func (builder *SubjectiveCheckOutputBuilder) StatusCode(statusCode int) *SubjectiveCheckOutputBuilder {
	builder.statusCode = statusCode
	builder.statusCodeFlag = true
	return builder
}

func (builder *SubjectiveCheckOutputBuilder) Build() *SubjectiveCheckOutput {
	req := &SubjectiveCheckOutput{}
	if builder.keypointsFlag {
		req.Keypoints = builder.keypoints
	}
	if builder.keyPointMatchDetailsFlag {
		req.KeyPointMatchDetails = builder.keyPointMatchDetails
	}
	if builder.userPromptOutputsFlag {
		req.UserPromptOutputs = builder.userPromptOutputs
	}
	if builder.statusCodeFlag {
		req.StatusCode = &builder.statusCode

	}
	return req
}

type SubscribeDepartment struct {
	DepartmentId *string `json:"department_id,omitempty"` // 可预定部门id

	DepartmentName *string `json:"department_name,omitempty"` // 预定部门名称
}

type SubscribeDepartmentBuilder struct {
	departmentId     string // 可预定部门id
	departmentIdFlag bool

	departmentName     string // 预定部门名称
	departmentNameFlag bool
}

func NewSubscribeDepartmentBuilder() *SubscribeDepartmentBuilder {
	builder := &SubscribeDepartmentBuilder{}
	return builder
}

// 可预定部门id
//
// 示例值：od-47d8b570b0a011e9679a755efcc5f61a
func (builder *SubscribeDepartmentBuilder) DepartmentId(departmentId string) *SubscribeDepartmentBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

// 预定部门名称
//
// 示例值：
func (builder *SubscribeDepartmentBuilder) DepartmentName(departmentName string) *SubscribeDepartmentBuilder {
	builder.departmentName = departmentName
	builder.departmentNameFlag = true
	return builder
}

func (builder *SubscribeDepartmentBuilder) Build() *SubscribeDepartment {
	req := &SubscribeDepartment{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.departmentNameFlag {
		req.DepartmentName = &builder.departmentName

	}
	return req
}

type SubscribeUser struct {
	UserId *string `json:"user_id,omitempty"` // 审批人/预定人id

	UserName *string `json:"user_name,omitempty"` // 预订人姓名
}

type SubscribeUserBuilder struct {
	userId     string // 审批人/预定人id
	userIdFlag bool

	userName     string // 预订人姓名
	userNameFlag bool
}

func NewSubscribeUserBuilder() *SubscribeUserBuilder {
	builder := &SubscribeUserBuilder{}
	return builder
}

// 审批人/预定人id
//
// 示例值：ou_a27b07a9071d90577c0177bcec98f856
func (builder *SubscribeUserBuilder) UserId(userId string) *SubscribeUserBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 预订人姓名
//
// 示例值：
func (builder *SubscribeUserBuilder) UserName(userName string) *SubscribeUserBuilder {
	builder.userName = userName
	builder.userNameFlag = true
	return builder
}

func (builder *SubscribeUserBuilder) Build() *SubscribeUser {
	req := &SubscribeUser{}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.userNameFlag {
		req.UserName = &builder.userName

	}
	return req
}

type SubscribeUserEvent struct {
	UserId *UserId `json:"user_id,omitempty"` // 预定人/审批人id
}

type SubscribeUserEventBuilder struct {
	userId     *UserId // 预定人/审批人id
	userIdFlag bool
}

func NewSubscribeUserEventBuilder() *SubscribeUserEventBuilder {
	builder := &SubscribeUserEventBuilder{}
	return builder
}

// 预定人/审批人id
//
// 示例值：ou_e8bce6c3935ef1fc1b432992fd9d3db8
func (builder *SubscribeUserEventBuilder) UserId(userId *UserId) *SubscribeUserEventBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

func (builder *SubscribeUserEventBuilder) Build() *SubscribeUserEvent {
	req := &SubscribeUserEvent{}
	if builder.userIdFlag {
		req.UserId = builder.userId
	}
	return req
}

type TimeConfig struct {
	IfCoverChildScope *bool `json:"if_cover_child_scope,omitempty"` // 是否覆盖子层级及会议室

	TimeSwitch *int `json:"time_switch,omitempty"` // 预定时间开关：0 代表关闭，1 代表开启

	DaysInAdvance *int `json:"days_in_advance,omitempty"` // 最早可提前 ; days_in_advance 预定会议室（单位：天，取值范围[1-730]）;<b>说明</b>：不填写时，默认更新为 365

	OpeningHour *string `json:"opening_hour,omitempty"` // 开放当天可于 ; opening_hour 开始预定（单位：秒，取值范围[0,86400]）;<b>说明</b>：;1.  不填写时默认更新为 ; 28800 ;2.  如果填写的值不是 60 ; 的倍数，则自动会更新为离其最近的 60 整数倍的值。

	StartTime *string `json:"start_time,omitempty"` // 每日可预定时间范围的开始时间（单位：秒，取值范围[0,86400]）;<b>说明</b>：;1.  不填写时，默认更新为 0 ，此时填写的  end_time 不得小于 30。;2.  当 start_time 与;  end_time 均填写时，; end_time 至少超过 ; start_time 30 。;3.  如果填写的值不是 60 的倍数，则自动会更新为离其最近的 60 整数倍的值。

	EndTime *string `json:"end_time,omitempty"` // 每日可预定时间范围结束时间（单位：秒，取值范围[0,86400]）;<b>说明</b>：;1.  不填写时，默认更新为 86400 ，此时填写的; start_time 不得大于等于 86370 。;2.  当 start_time 与;  end_time 均填写时，; end_time 至少要超过;  start_time 30。;3.  如果填写的值不是  60 的倍数，则自动会更新为离其最近的 60 整数倍的值。

	MaxDuration *int `json:"max_duration,omitempty"` // 单次会议室可预定时长上限（单位：小时，取值范围[1,99]）;<b>说明</b>：不填写时默认更新为 2
}

type TimeConfigBuilder struct {
	ifCoverChildScope     bool // 是否覆盖子层级及会议室
	ifCoverChildScopeFlag bool

	timeSwitch     int // 预定时间开关：0 代表关闭，1 代表开启
	timeSwitchFlag bool

	daysInAdvance     int // 最早可提前 ; days_in_advance 预定会议室（单位：天，取值范围[1-730]）;<b>说明</b>：不填写时，默认更新为 365
	daysInAdvanceFlag bool

	openingHour     string // 开放当天可于 ; opening_hour 开始预定（单位：秒，取值范围[0,86400]）;<b>说明</b>：;1.  不填写时默认更新为 ; 28800 ;2.  如果填写的值不是 60 ; 的倍数，则自动会更新为离其最近的 60 整数倍的值。
	openingHourFlag bool

	startTime     string // 每日可预定时间范围的开始时间（单位：秒，取值范围[0,86400]）;<b>说明</b>：;1.  不填写时，默认更新为 0 ，此时填写的  end_time 不得小于 30。;2.  当 start_time 与;  end_time 均填写时，; end_time 至少超过 ; start_time 30 。;3.  如果填写的值不是 60 的倍数，则自动会更新为离其最近的 60 整数倍的值。
	startTimeFlag bool

	endTime     string // 每日可预定时间范围结束时间（单位：秒，取值范围[0,86400]）;<b>说明</b>：;1.  不填写时，默认更新为 86400 ，此时填写的; start_time 不得大于等于 86370 。;2.  当 start_time 与;  end_time 均填写时，; end_time 至少要超过;  start_time 30。;3.  如果填写的值不是  60 的倍数，则自动会更新为离其最近的 60 整数倍的值。
	endTimeFlag bool

	maxDuration     int // 单次会议室可预定时长上限（单位：小时，取值范围[1,99]）;<b>说明</b>：不填写时默认更新为 2
	maxDurationFlag bool
}

func NewTimeConfigBuilder() *TimeConfigBuilder {
	builder := &TimeConfigBuilder{}
	return builder
}

// 是否覆盖子层级及会议室
//
// 示例值：true
func (builder *TimeConfigBuilder) IfCoverChildScope(ifCoverChildScope bool) *TimeConfigBuilder {
	builder.ifCoverChildScope = ifCoverChildScope
	builder.ifCoverChildScopeFlag = true
	return builder
}

// 预定时间开关：0 代表关闭，1 代表开启
//
// 示例值：1
func (builder *TimeConfigBuilder) TimeSwitch(timeSwitch int) *TimeConfigBuilder {
	builder.timeSwitch = timeSwitch
	builder.timeSwitchFlag = true
	return builder
}

// 最早可提前 ; days_in_advance 预定会议室（单位：天，取值范围[1-730]）;<b>说明</b>：不填写时，默认更新为 365
//
// 示例值：30
func (builder *TimeConfigBuilder) DaysInAdvance(daysInAdvance int) *TimeConfigBuilder {
	builder.daysInAdvance = daysInAdvance
	builder.daysInAdvanceFlag = true
	return builder
}

// 开放当天可于 ; opening_hour 开始预定（单位：秒，取值范围[0,86400]）;<b>说明</b>：;1.  不填写时默认更新为 ; 28800 ;2.  如果填写的值不是 60 ; 的倍数，则自动会更新为离其最近的 60 整数倍的值。
//
// 示例值：27900
func (builder *TimeConfigBuilder) OpeningHour(openingHour string) *TimeConfigBuilder {
	builder.openingHour = openingHour
	builder.openingHourFlag = true
	return builder
}

// 每日可预定时间范围的开始时间（单位：秒，取值范围[0,86400]）;<b>说明</b>：;1.  不填写时，默认更新为 0 ，此时填写的  end_time 不得小于 30。;2.  当 start_time 与;  end_time 均填写时，; end_time 至少超过 ; start_time 30 。;3.  如果填写的值不是 60 的倍数，则自动会更新为离其最近的 60 整数倍的值。
//
// 示例值：0
func (builder *TimeConfigBuilder) StartTime(startTime string) *TimeConfigBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 每日可预定时间范围结束时间（单位：秒，取值范围[0,86400]）;<b>说明</b>：;1.  不填写时，默认更新为 86400 ，此时填写的; start_time 不得大于等于 86370 。;2.  当 start_time 与;  end_time 均填写时，; end_time 至少要超过;  start_time 30。;3.  如果填写的值不是  60 的倍数，则自动会更新为离其最近的 60 整数倍的值。
//
// 示例值：86400
func (builder *TimeConfigBuilder) EndTime(endTime string) *TimeConfigBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 单次会议室可预定时长上限（单位：小时，取值范围[1,99]）;<b>说明</b>：不填写时默认更新为 2
//
// 示例值：24
func (builder *TimeConfigBuilder) MaxDuration(maxDuration int) *TimeConfigBuilder {
	builder.maxDuration = maxDuration
	builder.maxDurationFlag = true
	return builder
}

func (builder *TimeConfigBuilder) Build() *TimeConfig {
	req := &TimeConfig{}
	if builder.ifCoverChildScopeFlag {
		req.IfCoverChildScope = &builder.ifCoverChildScope

	}
	if builder.timeSwitchFlag {
		req.TimeSwitch = &builder.timeSwitch

	}
	if builder.daysInAdvanceFlag {
		req.DaysInAdvance = &builder.daysInAdvance

	}
	if builder.openingHourFlag {
		req.OpeningHour = &builder.openingHour

	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime

	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime

	}
	if builder.maxDurationFlag {
		req.MaxDuration = &builder.maxDuration

	}
	return req
}

type UserId struct {
	UserId *string `json:"user_id,omitempty"` //

	OpenId *string `json:"open_id,omitempty"` //

	UnionId *string `json:"union_id,omitempty"` //
}

type UserIdBuilder struct {
	userId     string //
	userIdFlag bool

	openId     string //
	openIdFlag bool

	unionId     string //
	unionIdFlag bool
}

func NewUserIdBuilder() *UserIdBuilder {
	builder := &UserIdBuilder{}
	return builder
}

//
//
// 示例值：
func (builder *UserIdBuilder) UserId(userId string) *UserIdBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

//
//
// 示例值：
func (builder *UserIdBuilder) OpenId(openId string) *UserIdBuilder {
	builder.openId = openId
	builder.openIdFlag = true
	return builder
}

//
//
// 示例值：
func (builder *UserIdBuilder) UnionId(unionId string) *UserIdBuilder {
	builder.unionId = unionId
	builder.unionIdFlag = true
	return builder
}

func (builder *UserIdBuilder) Build() *UserId {
	req := &UserId{}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.openIdFlag {
		req.OpenId = &builder.openId

	}
	if builder.unionIdFlag {
		req.UnionId = &builder.unionId

	}
	return req
}

type ListAlertReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListAlertReqBuilder() *ListAlertReqBuilder {
	builder := &ListAlertReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListAlertReqBuilder) Limit(limit int) *ListAlertReqBuilder {
	builder.limit = limit
	return builder
}

// 开始时间（unix时间，单位sec）
//
// 示例值：1608888867
func (builder *ListAlertReqBuilder) StartTime(startTime string) *ListAlertReqBuilder {
	builder.apiReq.QueryParams.Set("start_time", fmt.Sprint(startTime))
	return builder
}

// 结束时间（unix时间，单位sec）
//
// 示例值：1608888867
func (builder *ListAlertReqBuilder) EndTime(endTime string) *ListAlertReqBuilder {
	builder.apiReq.QueryParams.Set("end_time", fmt.Sprint(endTime))
	return builder
}

// 查询对象类型，不填返回所有
//
// 示例值：1
func (builder *ListAlertReqBuilder) QueryType(queryType int) *ListAlertReqBuilder {
	builder.apiReq.QueryParams.Set("query_type", fmt.Sprint(queryType))
	return builder
}

// 查询对象ID
//
// 示例值：6911188411932033028
func (builder *ListAlertReqBuilder) QueryValue(queryValue string) *ListAlertReqBuilder {
	builder.apiReq.QueryParams.Set("query_value", fmt.Sprint(queryValue))
	return builder
}

// 请求期望返回的告警记录数量，不足则返回全部，该值默认为 100，最大为 1000
//
// 示例值：100
func (builder *ListAlertReqBuilder) PageSize(pageSize int) *ListAlertReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：100
func (builder *ListAlertReqBuilder) PageToken(pageToken string) *ListAlertReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

func (builder *ListAlertReqBuilder) Build() *ListAlertReq {
	req := &ListAlertReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListAlertReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListAlertRespData struct {
	HasMore *bool `json:"has_more,omitempty"` // 是否还有数据

	PageToken *string `json:"page_token,omitempty"` // 下一页分页的token，下次请求时传入

	Items []*Alert `json:"items,omitempty"` // 告警记录
}

type ListAlertResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListAlertRespData `json:"data"` // 业务数据
}

func (resp *ListAlertResp) Success() bool {
	return resp.Code == 0
}

type DownloadExportReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDownloadExportReqBuilder() *DownloadExportReqBuilder {
	builder := &DownloadExportReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 文档token
//
// 示例值：6yHu7Igp7Igy62Ez6fLr6IJz7j9i5WMe6fHq5yZeY2Jz6yLqYAMAY46fZfEz64Lr5fYyYQ==
func (builder *DownloadExportReqBuilder) FileToken(fileToken string) *DownloadExportReqBuilder {
	builder.apiReq.QueryParams.Set("file_token", fmt.Sprint(fileToken))
	return builder
}

func (builder *DownloadExportReqBuilder) Build() *DownloadExportReq {
	req := &DownloadExportReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type DownloadExportReq struct {
	apiReq *larkcore.ApiReq
}

type DownloadExportResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	File     io.Reader `json:"-"`
	FileName string    `json:"-"`
}

func (resp *DownloadExportResp) Success() bool {
	return resp.Code == 0
}

func (resp *DownloadExportResp) WriteFile(fileName string) error {
	bs, err := ioutil.ReadAll(resp.File)
	if err != nil {
		return err
	}

	err = ioutil.WriteFile(fileName, bs, 0666)
	if err != nil {
		return err
	}
	return nil
}

type GetExportReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetExportReqBuilder() *GetExportReqBuilder {
	builder := &GetExportReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 任务id
//
// 示例值：7108646852144136212
func (builder *GetExportReqBuilder) TaskId(taskId string) *GetExportReqBuilder {
	builder.apiReq.PathParams.Set("task_id", fmt.Sprint(taskId))
	return builder
}

func (builder *GetExportReqBuilder) Build() *GetExportReq {
	req := &GetExportReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetExportReq struct {
	apiReq *larkcore.ApiReq
}

type GetExportRespData struct {
	Status *int `json:"status,omitempty"` // 任务状态

	Url *string `json:"url,omitempty"` // 文件下载地址

	FileToken *string `json:"file_token,omitempty"` // 文件token

	FailMsg *string `json:"fail_msg,omitempty"` // 失败信息
}

type GetExportResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetExportRespData `json:"data"` // 业务数据
}

func (resp *GetExportResp) Success() bool {
	return resp.Code == 0
}

type MeetingListExportReqBodyBuilder struct {
	startTime     string // 查询开始时间（unix时间，单位sec）
	startTimeFlag bool

	endTime     string // 查询结束时间（unix时间，单位sec）
	endTimeFlag bool

	meetingStatus     int // 会议状态（不传默认为已结束会议）
	meetingStatusFlag bool

	meetingNo     string // 按9位会议号筛选（最多一个筛选条件）
	meetingNoFlag bool

	userId     string // 按参会Lark用户筛选（最多一个筛选条件）
	userIdFlag bool

	roomId     string // 按参会Rooms筛选（最多一个筛选条件）
	roomIdFlag bool

	meetingType     int // 按会议类型筛选（最多一个筛选条件）
	meetingTypeFlag bool
}

func NewMeetingListExportReqBodyBuilder() *MeetingListExportReqBodyBuilder {
	builder := &MeetingListExportReqBodyBuilder{}
	return builder
}

// 查询开始时间（unix时间，单位sec）
//
//示例值：1655276858
func (builder *MeetingListExportReqBodyBuilder) StartTime(startTime string) *MeetingListExportReqBodyBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 查询结束时间（unix时间，单位sec）
//
//示例值：1655276858
func (builder *MeetingListExportReqBodyBuilder) EndTime(endTime string) *MeetingListExportReqBodyBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 会议状态（不传默认为已结束会议）
//
//示例值：2
func (builder *MeetingListExportReqBodyBuilder) MeetingStatus(meetingStatus int) *MeetingListExportReqBodyBuilder {
	builder.meetingStatus = meetingStatus
	builder.meetingStatusFlag = true
	return builder
}

// 按9位会议号筛选（最多一个筛选条件）
//
//示例值：123456789
func (builder *MeetingListExportReqBodyBuilder) MeetingNo(meetingNo string) *MeetingListExportReqBodyBuilder {
	builder.meetingNo = meetingNo
	builder.meetingNoFlag = true
	return builder
}

// 按参会Lark用户筛选（最多一个筛选条件）
//
//示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *MeetingListExportReqBodyBuilder) UserId(userId string) *MeetingListExportReqBodyBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 按参会Rooms筛选（最多一个筛选条件）
//
//示例值：omm_eada1d61a550955240c28757e7dec3af
func (builder *MeetingListExportReqBodyBuilder) RoomId(roomId string) *MeetingListExportReqBodyBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 按会议类型筛选（最多一个筛选条件）
//
//示例值：2
func (builder *MeetingListExportReqBodyBuilder) MeetingType(meetingType int) *MeetingListExportReqBodyBuilder {
	builder.meetingType = meetingType
	builder.meetingTypeFlag = true
	return builder
}

func (builder *MeetingListExportReqBodyBuilder) Build() *MeetingListExportReqBody {
	req := &MeetingListExportReqBody{}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime
	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime
	}
	if builder.meetingStatusFlag {
		req.MeetingStatus = &builder.meetingStatus
	}
	if builder.meetingNoFlag {
		req.MeetingNo = &builder.meetingNo
	}
	if builder.userIdFlag {
		req.UserId = &builder.userId
	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId
	}
	if builder.meetingTypeFlag {
		req.MeetingType = &builder.meetingType
	}
	return req
}

type MeetingListExportPathReqBodyBuilder struct {
	startTime         string
	startTimeFlag     bool
	endTime           string
	endTimeFlag       bool
	meetingStatus     int
	meetingStatusFlag bool
	meetingNo         string
	meetingNoFlag     bool
	userId            string
	userIdFlag        bool
	roomId            string
	roomIdFlag        bool
	meetingType       int
	meetingTypeFlag   bool
}

func NewMeetingListExportPathReqBodyBuilder() *MeetingListExportPathReqBodyBuilder {
	builder := &MeetingListExportPathReqBodyBuilder{}
	return builder
}

// 查询开始时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *MeetingListExportPathReqBodyBuilder) StartTime(startTime string) *MeetingListExportPathReqBodyBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 查询结束时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *MeetingListExportPathReqBodyBuilder) EndTime(endTime string) *MeetingListExportPathReqBodyBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 会议状态（不传默认为已结束会议）
//
// 示例值：2
func (builder *MeetingListExportPathReqBodyBuilder) MeetingStatus(meetingStatus int) *MeetingListExportPathReqBodyBuilder {
	builder.meetingStatus = meetingStatus
	builder.meetingStatusFlag = true
	return builder
}

// 按9位会议号筛选（最多一个筛选条件）
//
// 示例值：123456789
func (builder *MeetingListExportPathReqBodyBuilder) MeetingNo(meetingNo string) *MeetingListExportPathReqBodyBuilder {
	builder.meetingNo = meetingNo
	builder.meetingNoFlag = true
	return builder
}

// 按参会Lark用户筛选（最多一个筛选条件）
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *MeetingListExportPathReqBodyBuilder) UserId(userId string) *MeetingListExportPathReqBodyBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 按参会Rooms筛选（最多一个筛选条件）
//
// 示例值：omm_eada1d61a550955240c28757e7dec3af
func (builder *MeetingListExportPathReqBodyBuilder) RoomId(roomId string) *MeetingListExportPathReqBodyBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 按会议类型筛选（最多一个筛选条件）
//
// 示例值：2
func (builder *MeetingListExportPathReqBodyBuilder) MeetingType(meetingType int) *MeetingListExportPathReqBodyBuilder {
	builder.meetingType = meetingType
	builder.meetingTypeFlag = true
	return builder
}

func (builder *MeetingListExportPathReqBodyBuilder) Build() (*MeetingListExportReqBody, error) {
	req := &MeetingListExportReqBody{}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime
	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime
	}
	if builder.meetingStatusFlag {
		req.MeetingStatus = &builder.meetingStatus
	}
	if builder.meetingNoFlag {
		req.MeetingNo = &builder.meetingNo
	}
	if builder.userIdFlag {
		req.UserId = &builder.userId
	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId
	}
	if builder.meetingTypeFlag {
		req.MeetingType = &builder.meetingType
	}
	return req, nil
}

type MeetingListExportReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *MeetingListExportReqBody
}

func NewMeetingListExportReqBuilder() *MeetingListExportReqBuilder {
	builder := &MeetingListExportReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *MeetingListExportReqBuilder) UserIdType(userIdType string) *MeetingListExportReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 导出会议明细，具体权限要求请参考「导出概述」
func (builder *MeetingListExportReqBuilder) Body(body *MeetingListExportReqBody) *MeetingListExportReqBuilder {
	builder.body = body
	return builder
}

func (builder *MeetingListExportReqBuilder) Build() *MeetingListExportReq {
	req := &MeetingListExportReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type MeetingListExportReqBody struct {
	StartTime *string `json:"start_time,omitempty"` // 查询开始时间（unix时间，单位sec）

	EndTime *string `json:"end_time,omitempty"` // 查询结束时间（unix时间，单位sec）

	MeetingStatus *int `json:"meeting_status,omitempty"` // 会议状态（不传默认为已结束会议）

	MeetingNo *string `json:"meeting_no,omitempty"` // 按9位会议号筛选（最多一个筛选条件）

	UserId *string `json:"user_id,omitempty"` // 按参会Lark用户筛选（最多一个筛选条件）

	RoomId *string `json:"room_id,omitempty"` // 按参会Rooms筛选（最多一个筛选条件）

	MeetingType *int `json:"meeting_type,omitempty"` // 按会议类型筛选（最多一个筛选条件）
}

type MeetingListExportReq struct {
	apiReq *larkcore.ApiReq
	Body   *MeetingListExportReqBody `body:""`
}

type MeetingListExportRespData struct {
	TaskId *string `json:"task_id,omitempty"` // 任务id
}

type MeetingListExportResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *MeetingListExportRespData `json:"data"` // 业务数据
}

func (resp *MeetingListExportResp) Success() bool {
	return resp.Code == 0
}

type ParticipantListExportReqBodyBuilder struct {
	meetingStartTime     string // 会议开始时间（unix时间，单位sec）
	meetingStartTimeFlag bool

	meetingEndTime     string // 会议结束时间（unix时间，单位sec）
	meetingEndTimeFlag bool

	meetingStatus     int // 会议状态（不传默认为已结束会议）
	meetingStatusFlag bool

	meetingNo     string // 9位会议号
	meetingNoFlag bool

	userId     string // 按参会Lark用户筛选（最多一个筛选条件）
	userIdFlag bool

	roomId     string // 按参会Rooms筛选（最多一个筛选条件）
	roomIdFlag bool
}

func NewParticipantListExportReqBodyBuilder() *ParticipantListExportReqBodyBuilder {
	builder := &ParticipantListExportReqBodyBuilder{}
	return builder
}

// 会议开始时间（unix时间，单位sec）
//
//示例值：1655276858
func (builder *ParticipantListExportReqBodyBuilder) MeetingStartTime(meetingStartTime string) *ParticipantListExportReqBodyBuilder {
	builder.meetingStartTime = meetingStartTime
	builder.meetingStartTimeFlag = true
	return builder
}

// 会议结束时间（unix时间，单位sec）
//
//示例值：1655276858
func (builder *ParticipantListExportReqBodyBuilder) MeetingEndTime(meetingEndTime string) *ParticipantListExportReqBodyBuilder {
	builder.meetingEndTime = meetingEndTime
	builder.meetingEndTimeFlag = true
	return builder
}

// 会议状态（不传默认为已结束会议）
//
//示例值：2
func (builder *ParticipantListExportReqBodyBuilder) MeetingStatus(meetingStatus int) *ParticipantListExportReqBodyBuilder {
	builder.meetingStatus = meetingStatus
	builder.meetingStatusFlag = true
	return builder
}

// 9位会议号
//
//示例值：123456789
func (builder *ParticipantListExportReqBodyBuilder) MeetingNo(meetingNo string) *ParticipantListExportReqBodyBuilder {
	builder.meetingNo = meetingNo
	builder.meetingNoFlag = true
	return builder
}

// 按参会Lark用户筛选（最多一个筛选条件）
//
//示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *ParticipantListExportReqBodyBuilder) UserId(userId string) *ParticipantListExportReqBodyBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 按参会Rooms筛选（最多一个筛选条件）
//
//示例值：omm_eada1d61a550955240c28757e7dec3af
func (builder *ParticipantListExportReqBodyBuilder) RoomId(roomId string) *ParticipantListExportReqBodyBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

func (builder *ParticipantListExportReqBodyBuilder) Build() *ParticipantListExportReqBody {
	req := &ParticipantListExportReqBody{}
	if builder.meetingStartTimeFlag {
		req.MeetingStartTime = &builder.meetingStartTime
	}
	if builder.meetingEndTimeFlag {
		req.MeetingEndTime = &builder.meetingEndTime
	}
	if builder.meetingStatusFlag {
		req.MeetingStatus = &builder.meetingStatus
	}
	if builder.meetingNoFlag {
		req.MeetingNo = &builder.meetingNo
	}
	if builder.userIdFlag {
		req.UserId = &builder.userId
	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId
	}
	return req
}

type ParticipantListExportPathReqBodyBuilder struct {
	meetingStartTime     string
	meetingStartTimeFlag bool
	meetingEndTime       string
	meetingEndTimeFlag   bool
	meetingStatus        int
	meetingStatusFlag    bool
	meetingNo            string
	meetingNoFlag        bool
	userId               string
	userIdFlag           bool
	roomId               string
	roomIdFlag           bool
}

func NewParticipantListExportPathReqBodyBuilder() *ParticipantListExportPathReqBodyBuilder {
	builder := &ParticipantListExportPathReqBodyBuilder{}
	return builder
}

// 会议开始时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *ParticipantListExportPathReqBodyBuilder) MeetingStartTime(meetingStartTime string) *ParticipantListExportPathReqBodyBuilder {
	builder.meetingStartTime = meetingStartTime
	builder.meetingStartTimeFlag = true
	return builder
}

// 会议结束时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *ParticipantListExportPathReqBodyBuilder) MeetingEndTime(meetingEndTime string) *ParticipantListExportPathReqBodyBuilder {
	builder.meetingEndTime = meetingEndTime
	builder.meetingEndTimeFlag = true
	return builder
}

// 会议状态（不传默认为已结束会议）
//
// 示例值：2
func (builder *ParticipantListExportPathReqBodyBuilder) MeetingStatus(meetingStatus int) *ParticipantListExportPathReqBodyBuilder {
	builder.meetingStatus = meetingStatus
	builder.meetingStatusFlag = true
	return builder
}

// 9位会议号
//
// 示例值：123456789
func (builder *ParticipantListExportPathReqBodyBuilder) MeetingNo(meetingNo string) *ParticipantListExportPathReqBodyBuilder {
	builder.meetingNo = meetingNo
	builder.meetingNoFlag = true
	return builder
}

// 按参会Lark用户筛选（最多一个筛选条件）
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *ParticipantListExportPathReqBodyBuilder) UserId(userId string) *ParticipantListExportPathReqBodyBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 按参会Rooms筛选（最多一个筛选条件）
//
// 示例值：omm_eada1d61a550955240c28757e7dec3af
func (builder *ParticipantListExportPathReqBodyBuilder) RoomId(roomId string) *ParticipantListExportPathReqBodyBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

func (builder *ParticipantListExportPathReqBodyBuilder) Build() (*ParticipantListExportReqBody, error) {
	req := &ParticipantListExportReqBody{}
	if builder.meetingStartTimeFlag {
		req.MeetingStartTime = &builder.meetingStartTime
	}
	if builder.meetingEndTimeFlag {
		req.MeetingEndTime = &builder.meetingEndTime
	}
	if builder.meetingStatusFlag {
		req.MeetingStatus = &builder.meetingStatus
	}
	if builder.meetingNoFlag {
		req.MeetingNo = &builder.meetingNo
	}
	if builder.userIdFlag {
		req.UserId = &builder.userId
	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId
	}
	return req, nil
}

type ParticipantListExportReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *ParticipantListExportReqBody
}

func NewParticipantListExportReqBuilder() *ParticipantListExportReqBuilder {
	builder := &ParticipantListExportReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *ParticipantListExportReqBuilder) UserIdType(userIdType string) *ParticipantListExportReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 导出某个会议的参会人详情列表，具体权限要求请参考「导出概述」
func (builder *ParticipantListExportReqBuilder) Body(body *ParticipantListExportReqBody) *ParticipantListExportReqBuilder {
	builder.body = body
	return builder
}

func (builder *ParticipantListExportReqBuilder) Build() *ParticipantListExportReq {
	req := &ParticipantListExportReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type ParticipantListExportReqBody struct {
	MeetingStartTime *string `json:"meeting_start_time,omitempty"` // 会议开始时间（unix时间，单位sec）

	MeetingEndTime *string `json:"meeting_end_time,omitempty"` // 会议结束时间（unix时间，单位sec）

	MeetingStatus *int `json:"meeting_status,omitempty"` // 会议状态（不传默认为已结束会议）

	MeetingNo *string `json:"meeting_no,omitempty"` // 9位会议号

	UserId *string `json:"user_id,omitempty"` // 按参会Lark用户筛选（最多一个筛选条件）

	RoomId *string `json:"room_id,omitempty"` // 按参会Rooms筛选（最多一个筛选条件）
}

type ParticipantListExportReq struct {
	apiReq *larkcore.ApiReq
	Body   *ParticipantListExportReqBody `body:""`
}

type ParticipantListExportRespData struct {
	TaskId *string `json:"task_id,omitempty"` // 任务id
}

type ParticipantListExportResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ParticipantListExportRespData `json:"data"` // 业务数据
}

func (resp *ParticipantListExportResp) Success() bool {
	return resp.Code == 0
}

type ParticipantQualityListExportReqBodyBuilder struct {
	meetingStartTime     string // 会议开始时间（unix时间，单位sec）
	meetingStartTimeFlag bool

	meetingEndTime     string // 会议结束时间（unix时间，单位sec）
	meetingEndTimeFlag bool

	meetingNo     string // 9位会议号
	meetingNoFlag bool

	joinTime     string // 参会人入会时间（unix时间，单位sec）
	joinTimeFlag bool

	userId     string // 参会人为Lark用户时填入，room_id和user_id必须只填一个
	userIdFlag bool

	roomId     string // 参会人为Rooms时填入，room_id和user_id必须只填一个
	roomIdFlag bool
}

func NewParticipantQualityListExportReqBodyBuilder() *ParticipantQualityListExportReqBodyBuilder {
	builder := &ParticipantQualityListExportReqBodyBuilder{}
	return builder
}

// 会议开始时间（unix时间，单位sec）
//
//示例值：1655276858
func (builder *ParticipantQualityListExportReqBodyBuilder) MeetingStartTime(meetingStartTime string) *ParticipantQualityListExportReqBodyBuilder {
	builder.meetingStartTime = meetingStartTime
	builder.meetingStartTimeFlag = true
	return builder
}

// 会议结束时间（unix时间，单位sec）
//
//示例值：1655276858
func (builder *ParticipantQualityListExportReqBodyBuilder) MeetingEndTime(meetingEndTime string) *ParticipantQualityListExportReqBodyBuilder {
	builder.meetingEndTime = meetingEndTime
	builder.meetingEndTimeFlag = true
	return builder
}

// 9位会议号
//
//示例值：123456789
func (builder *ParticipantQualityListExportReqBodyBuilder) MeetingNo(meetingNo string) *ParticipantQualityListExportReqBodyBuilder {
	builder.meetingNo = meetingNo
	builder.meetingNoFlag = true
	return builder
}

// 参会人入会时间（unix时间，单位sec）
//
//示例值：1655276858
func (builder *ParticipantQualityListExportReqBodyBuilder) JoinTime(joinTime string) *ParticipantQualityListExportReqBodyBuilder {
	builder.joinTime = joinTime
	builder.joinTimeFlag = true
	return builder
}

// 参会人为Lark用户时填入，room_id和user_id必须只填一个
//
//示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *ParticipantQualityListExportReqBodyBuilder) UserId(userId string) *ParticipantQualityListExportReqBodyBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 参会人为Rooms时填入，room_id和user_id必须只填一个
//
//示例值：omm_eada1d61a550955240c28757e7dec3af
func (builder *ParticipantQualityListExportReqBodyBuilder) RoomId(roomId string) *ParticipantQualityListExportReqBodyBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

func (builder *ParticipantQualityListExportReqBodyBuilder) Build() *ParticipantQualityListExportReqBody {
	req := &ParticipantQualityListExportReqBody{}
	if builder.meetingStartTimeFlag {
		req.MeetingStartTime = &builder.meetingStartTime
	}
	if builder.meetingEndTimeFlag {
		req.MeetingEndTime = &builder.meetingEndTime
	}
	if builder.meetingNoFlag {
		req.MeetingNo = &builder.meetingNo
	}
	if builder.joinTimeFlag {
		req.JoinTime = &builder.joinTime
	}
	if builder.userIdFlag {
		req.UserId = &builder.userId
	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId
	}
	return req
}

type ParticipantQualityListExportPathReqBodyBuilder struct {
	meetingStartTime     string
	meetingStartTimeFlag bool
	meetingEndTime       string
	meetingEndTimeFlag   bool
	meetingNo            string
	meetingNoFlag        bool
	joinTime             string
	joinTimeFlag         bool
	userId               string
	userIdFlag           bool
	roomId               string
	roomIdFlag           bool
}

func NewParticipantQualityListExportPathReqBodyBuilder() *ParticipantQualityListExportPathReqBodyBuilder {
	builder := &ParticipantQualityListExportPathReqBodyBuilder{}
	return builder
}

// 会议开始时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *ParticipantQualityListExportPathReqBodyBuilder) MeetingStartTime(meetingStartTime string) *ParticipantQualityListExportPathReqBodyBuilder {
	builder.meetingStartTime = meetingStartTime
	builder.meetingStartTimeFlag = true
	return builder
}

// 会议结束时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *ParticipantQualityListExportPathReqBodyBuilder) MeetingEndTime(meetingEndTime string) *ParticipantQualityListExportPathReqBodyBuilder {
	builder.meetingEndTime = meetingEndTime
	builder.meetingEndTimeFlag = true
	return builder
}

// 9位会议号
//
// 示例值：123456789
func (builder *ParticipantQualityListExportPathReqBodyBuilder) MeetingNo(meetingNo string) *ParticipantQualityListExportPathReqBodyBuilder {
	builder.meetingNo = meetingNo
	builder.meetingNoFlag = true
	return builder
}

// 参会人入会时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *ParticipantQualityListExportPathReqBodyBuilder) JoinTime(joinTime string) *ParticipantQualityListExportPathReqBodyBuilder {
	builder.joinTime = joinTime
	builder.joinTimeFlag = true
	return builder
}

// 参会人为Lark用户时填入，room_id和user_id必须只填一个
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *ParticipantQualityListExportPathReqBodyBuilder) UserId(userId string) *ParticipantQualityListExportPathReqBodyBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 参会人为Rooms时填入，room_id和user_id必须只填一个
//
// 示例值：omm_eada1d61a550955240c28757e7dec3af
func (builder *ParticipantQualityListExportPathReqBodyBuilder) RoomId(roomId string) *ParticipantQualityListExportPathReqBodyBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

func (builder *ParticipantQualityListExportPathReqBodyBuilder) Build() (*ParticipantQualityListExportReqBody, error) {
	req := &ParticipantQualityListExportReqBody{}
	if builder.meetingStartTimeFlag {
		req.MeetingStartTime = &builder.meetingStartTime
	}
	if builder.meetingEndTimeFlag {
		req.MeetingEndTime = &builder.meetingEndTime
	}
	if builder.meetingNoFlag {
		req.MeetingNo = &builder.meetingNo
	}
	if builder.joinTimeFlag {
		req.JoinTime = &builder.joinTime
	}
	if builder.userIdFlag {
		req.UserId = &builder.userId
	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId
	}
	return req, nil
}

type ParticipantQualityListExportReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *ParticipantQualityListExportReqBody
}

func NewParticipantQualityListExportReqBuilder() *ParticipantQualityListExportReqBuilder {
	builder := &ParticipantQualityListExportReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *ParticipantQualityListExportReqBuilder) UserIdType(userIdType string) *ParticipantQualityListExportReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 导出某场会议某个参会人的音视频&共享质量数据;，具体权限要求请参考「导出概述」
func (builder *ParticipantQualityListExportReqBuilder) Body(body *ParticipantQualityListExportReqBody) *ParticipantQualityListExportReqBuilder {
	builder.body = body
	return builder
}

func (builder *ParticipantQualityListExportReqBuilder) Build() *ParticipantQualityListExportReq {
	req := &ParticipantQualityListExportReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type ParticipantQualityListExportReqBody struct {
	MeetingStartTime *string `json:"meeting_start_time,omitempty"` // 会议开始时间（unix时间，单位sec）

	MeetingEndTime *string `json:"meeting_end_time,omitempty"` // 会议结束时间（unix时间，单位sec）

	MeetingNo *string `json:"meeting_no,omitempty"` // 9位会议号

	JoinTime *string `json:"join_time,omitempty"` // 参会人入会时间（unix时间，单位sec）

	UserId *string `json:"user_id,omitempty"` // 参会人为Lark用户时填入，room_id和user_id必须只填一个

	RoomId *string `json:"room_id,omitempty"` // 参会人为Rooms时填入，room_id和user_id必须只填一个
}

type ParticipantQualityListExportReq struct {
	apiReq *larkcore.ApiReq
	Body   *ParticipantQualityListExportReqBody `body:""`
}

type ParticipantQualityListExportRespData struct {
	TaskId *string `json:"task_id,omitempty"` // 任务id
}

type ParticipantQualityListExportResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ParticipantQualityListExportRespData `json:"data"` // 业务数据
}

func (resp *ParticipantQualityListExportResp) Success() bool {
	return resp.Code == 0
}

type ResourceReservationListExportReqBodyBuilder struct {
	roomLevelId     string // 会议室层级id
	roomLevelIdFlag bool

	needTopic     bool // 是否展示会议主题
	needTopicFlag bool

	startTime     string // 查询开始时间（unix时间，单位sec）
	startTimeFlag bool

	endTime     string // 查询结束时间（unix时间，单位sec）
	endTimeFlag bool

	roomIds     []string // 待筛选的会议室id列表
	roomIdsFlag bool

	isExclude     bool // 若为true表示导出room_ids范围外的会议室，默认为false
	isExcludeFlag bool
}

func NewResourceReservationListExportReqBodyBuilder() *ResourceReservationListExportReqBodyBuilder {
	builder := &ResourceReservationListExportReqBodyBuilder{}
	return builder
}

// 会议室层级id
//
//示例值：omm_608d34d82d531b27fa993902d350a307
func (builder *ResourceReservationListExportReqBodyBuilder) RoomLevelId(roomLevelId string) *ResourceReservationListExportReqBodyBuilder {
	builder.roomLevelId = roomLevelId
	builder.roomLevelIdFlag = true
	return builder
}

// 是否展示会议主题
//
//示例值：true
func (builder *ResourceReservationListExportReqBodyBuilder) NeedTopic(needTopic bool) *ResourceReservationListExportReqBodyBuilder {
	builder.needTopic = needTopic
	builder.needTopicFlag = true
	return builder
}

// 查询开始时间（unix时间，单位sec）
//
//示例值：1655276858
func (builder *ResourceReservationListExportReqBodyBuilder) StartTime(startTime string) *ResourceReservationListExportReqBodyBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 查询结束时间（unix时间，单位sec）
//
//示例值：1655276858
func (builder *ResourceReservationListExportReqBodyBuilder) EndTime(endTime string) *ResourceReservationListExportReqBodyBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 待筛选的会议室id列表
//
//示例值：["omm_eada1d61a550955240c28757e7dec3af"]
func (builder *ResourceReservationListExportReqBodyBuilder) RoomIds(roomIds []string) *ResourceReservationListExportReqBodyBuilder {
	builder.roomIds = roomIds
	builder.roomIdsFlag = true
	return builder
}

// 若为true表示导出room_ids范围外的会议室，默认为false
//
//示例值：false
func (builder *ResourceReservationListExportReqBodyBuilder) IsExclude(isExclude bool) *ResourceReservationListExportReqBodyBuilder {
	builder.isExclude = isExclude
	builder.isExcludeFlag = true
	return builder
}

func (builder *ResourceReservationListExportReqBodyBuilder) Build() *ResourceReservationListExportReqBody {
	req := &ResourceReservationListExportReqBody{}
	if builder.roomLevelIdFlag {
		req.RoomLevelId = &builder.roomLevelId
	}
	if builder.needTopicFlag {
		req.NeedTopic = &builder.needTopic
	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime
	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime
	}
	if builder.roomIdsFlag {
		req.RoomIds = builder.roomIds
	}
	if builder.isExcludeFlag {
		req.IsExclude = &builder.isExclude
	}
	return req
}

type ResourceReservationListExportPathReqBodyBuilder struct {
	roomLevelId     string
	roomLevelIdFlag bool
	needTopic       bool
	needTopicFlag   bool
	startTime       string
	startTimeFlag   bool
	endTime         string
	endTimeFlag     bool
	roomIds         []string
	roomIdsFlag     bool
	isExclude       bool
	isExcludeFlag   bool
}

func NewResourceReservationListExportPathReqBodyBuilder() *ResourceReservationListExportPathReqBodyBuilder {
	builder := &ResourceReservationListExportPathReqBodyBuilder{}
	return builder
}

// 会议室层级id
//
// 示例值：omm_608d34d82d531b27fa993902d350a307
func (builder *ResourceReservationListExportPathReqBodyBuilder) RoomLevelId(roomLevelId string) *ResourceReservationListExportPathReqBodyBuilder {
	builder.roomLevelId = roomLevelId
	builder.roomLevelIdFlag = true
	return builder
}

// 是否展示会议主题
//
// 示例值：true
func (builder *ResourceReservationListExportPathReqBodyBuilder) NeedTopic(needTopic bool) *ResourceReservationListExportPathReqBodyBuilder {
	builder.needTopic = needTopic
	builder.needTopicFlag = true
	return builder
}

// 查询开始时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *ResourceReservationListExportPathReqBodyBuilder) StartTime(startTime string) *ResourceReservationListExportPathReqBodyBuilder {
	builder.startTime = startTime
	builder.startTimeFlag = true
	return builder
}

// 查询结束时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *ResourceReservationListExportPathReqBodyBuilder) EndTime(endTime string) *ResourceReservationListExportPathReqBodyBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 待筛选的会议室id列表
//
// 示例值：["omm_eada1d61a550955240c28757e7dec3af"]
func (builder *ResourceReservationListExportPathReqBodyBuilder) RoomIds(roomIds []string) *ResourceReservationListExportPathReqBodyBuilder {
	builder.roomIds = roomIds
	builder.roomIdsFlag = true
	return builder
}

// 若为true表示导出room_ids范围外的会议室，默认为false
//
// 示例值：false
func (builder *ResourceReservationListExportPathReqBodyBuilder) IsExclude(isExclude bool) *ResourceReservationListExportPathReqBodyBuilder {
	builder.isExclude = isExclude
	builder.isExcludeFlag = true
	return builder
}

func (builder *ResourceReservationListExportPathReqBodyBuilder) Build() (*ResourceReservationListExportReqBody, error) {
	req := &ResourceReservationListExportReqBody{}
	if builder.roomLevelIdFlag {
		req.RoomLevelId = &builder.roomLevelId
	}
	if builder.needTopicFlag {
		req.NeedTopic = &builder.needTopic
	}
	if builder.startTimeFlag {
		req.StartTime = &builder.startTime
	}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime
	}
	if builder.roomIdsFlag {
		req.RoomIds = builder.roomIds
	}
	if builder.isExcludeFlag {
		req.IsExclude = &builder.isExclude
	}
	return req, nil
}

type ResourceReservationListExportReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *ResourceReservationListExportReqBody
}

func NewResourceReservationListExportReqBuilder() *ResourceReservationListExportReqBuilder {
	builder := &ResourceReservationListExportReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 导出会议室预定数据，具体权限要求请参考「导出概述」
func (builder *ResourceReservationListExportReqBuilder) Body(body *ResourceReservationListExportReqBody) *ResourceReservationListExportReqBuilder {
	builder.body = body
	return builder
}

func (builder *ResourceReservationListExportReqBuilder) Build() *ResourceReservationListExportReq {
	req := &ResourceReservationListExportReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type ResourceReservationListExportReqBody struct {
	RoomLevelId *string `json:"room_level_id,omitempty"` // 会议室层级id

	NeedTopic *bool `json:"need_topic,omitempty"` // 是否展示会议主题

	StartTime *string `json:"start_time,omitempty"` // 查询开始时间（unix时间，单位sec）

	EndTime *string `json:"end_time,omitempty"` // 查询结束时间（unix时间，单位sec）

	RoomIds []string `json:"room_ids,omitempty"` // 待筛选的会议室id列表

	IsExclude *bool `json:"is_exclude,omitempty"` // 若为true表示导出room_ids范围外的会议室，默认为false
}

type ResourceReservationListExportReq struct {
	apiReq *larkcore.ApiReq
	Body   *ResourceReservationListExportReqBody `body:""`
}

type ResourceReservationListExportRespData struct {
	TaskId *string `json:"task_id,omitempty"` // 任务id
}

type ResourceReservationListExportResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ResourceReservationListExportRespData `json:"data"` // 业务数据
}

func (resp *ResourceReservationListExportResp) Success() bool {
	return resp.Code == 0
}

type EndMeetingReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewEndMeetingReqBuilder() *EndMeetingReqBuilder {
	builder := &EndMeetingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议ID（视频会议的唯一标识，视频会议开始后才会产生）
//
// 示例值：6911188411932033028
func (builder *EndMeetingReqBuilder) MeetingId(meetingId string) *EndMeetingReqBuilder {
	builder.apiReq.PathParams.Set("meeting_id", fmt.Sprint(meetingId))
	return builder
}

func (builder *EndMeetingReqBuilder) Build() *EndMeetingReq {
	req := &EndMeetingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type EndMeetingReq struct {
	apiReq *larkcore.ApiReq
}

type EndMeetingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *EndMeetingResp) Success() bool {
	return resp.Code == 0
}

type GetMeetingReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetMeetingReqBuilder() *GetMeetingReqBuilder {
	builder := &GetMeetingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议ID（视频会议的唯一标识，视频会议开始后才会产生）
//
// 示例值：6911188411932033028
func (builder *GetMeetingReqBuilder) MeetingId(meetingId string) *GetMeetingReqBuilder {
	builder.apiReq.PathParams.Set("meeting_id", fmt.Sprint(meetingId))
	return builder
}

// 是否需要参会人列表
//
// 示例值：false
func (builder *GetMeetingReqBuilder) WithParticipants(withParticipants bool) *GetMeetingReqBuilder {
	builder.apiReq.QueryParams.Set("with_participants", fmt.Sprint(withParticipants))
	return builder
}

// 是否需要会中使用能力统计（仅限tenant_access_token）
//
// 示例值：false
func (builder *GetMeetingReqBuilder) WithMeetingAbility(withMeetingAbility bool) *GetMeetingReqBuilder {
	builder.apiReq.QueryParams.Set("with_meeting_ability", fmt.Sprint(withMeetingAbility))
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *GetMeetingReqBuilder) UserIdType(userIdType string) *GetMeetingReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 此次查询的查询模式，不传，或传0，只查询会议信息；传1，只查询会议产物
//
// 示例值：
func (builder *GetMeetingReqBuilder) QueryMode(queryMode int) *GetMeetingReqBuilder {
	builder.apiReq.QueryParams.Set("query_mode", fmt.Sprint(queryMode))
	return builder
}

func (builder *GetMeetingReqBuilder) Build() *GetMeetingReq {
	req := &GetMeetingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetMeetingReq struct {
	apiReq *larkcore.ApiReq
}

type GetMeetingRespData struct {
	Meeting *Meeting `json:"meeting,omitempty"` // 会议数据

	RelatedArtifacts *MeetingRelatedArtifacts `json:"related_artifacts,omitempty"` //
}

type GetMeetingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetMeetingRespData `json:"data"` // 业务数据
}

func (resp *GetMeetingResp) Success() bool {
	return resp.Code == 0
}

type InviteMeetingReqBodyBuilder struct {
	invitees     []*MeetingUser // 被邀请的用户列表
	inviteesFlag bool
}

func NewInviteMeetingReqBodyBuilder() *InviteMeetingReqBodyBuilder {
	builder := &InviteMeetingReqBodyBuilder{}
	return builder
}

// 被邀请的用户列表
//
//示例值：
func (builder *InviteMeetingReqBodyBuilder) Invitees(invitees []*MeetingUser) *InviteMeetingReqBodyBuilder {
	builder.invitees = invitees
	builder.inviteesFlag = true
	return builder
}

func (builder *InviteMeetingReqBodyBuilder) Build() *InviteMeetingReqBody {
	req := &InviteMeetingReqBody{}
	if builder.inviteesFlag {
		req.Invitees = builder.invitees
	}
	return req
}

type InviteMeetingPathReqBodyBuilder struct {
	invitees     []*MeetingUser
	inviteesFlag bool
}

func NewInviteMeetingPathReqBodyBuilder() *InviteMeetingPathReqBodyBuilder {
	builder := &InviteMeetingPathReqBodyBuilder{}
	return builder
}

// 被邀请的用户列表
//
// 示例值：
func (builder *InviteMeetingPathReqBodyBuilder) Invitees(invitees []*MeetingUser) *InviteMeetingPathReqBodyBuilder {
	builder.invitees = invitees
	builder.inviteesFlag = true
	return builder
}

func (builder *InviteMeetingPathReqBodyBuilder) Build() (*InviteMeetingReqBody, error) {
	req := &InviteMeetingReqBody{}
	if builder.inviteesFlag {
		req.Invitees = builder.invitees
	}
	return req, nil
}

type InviteMeetingReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *InviteMeetingReqBody
}

func NewInviteMeetingReqBuilder() *InviteMeetingReqBuilder {
	builder := &InviteMeetingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议ID（视频会议的唯一标识，视频会议开始后才会产生）
//
// 示例值：6911188411932033028
func (builder *InviteMeetingReqBuilder) MeetingId(meetingId string) *InviteMeetingReqBuilder {
	builder.apiReq.PathParams.Set("meeting_id", fmt.Sprint(meetingId))
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *InviteMeetingReqBuilder) UserIdType(userIdType string) *InviteMeetingReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 邀请参会人进入会议
func (builder *InviteMeetingReqBuilder) Body(body *InviteMeetingReqBody) *InviteMeetingReqBuilder {
	builder.body = body
	return builder
}

func (builder *InviteMeetingReqBuilder) Build() *InviteMeetingReq {
	req := &InviteMeetingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type InviteMeetingReqBody struct {
	Invitees []*MeetingUser `json:"invitees,omitempty"` // 被邀请的用户列表
}

type InviteMeetingReq struct {
	apiReq *larkcore.ApiReq
	Body   *InviteMeetingReqBody `body:""`
}

type InviteMeetingRespData struct {
	InviteResults []*MeetingInviteStatus `json:"invite_results,omitempty"` // 邀请结果
}

type InviteMeetingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *InviteMeetingRespData `json:"data"` // 业务数据
}

func (resp *InviteMeetingResp) Success() bool {
	return resp.Code == 0
}

type KickoutMeetingReqBodyBuilder struct {
	kickoutUsers     []*MeetingUser // 需移除的用户列表
	kickoutUsersFlag bool
}

func NewKickoutMeetingReqBodyBuilder() *KickoutMeetingReqBodyBuilder {
	builder := &KickoutMeetingReqBodyBuilder{}
	return builder
}

// 需移除的用户列表
//
//示例值：
func (builder *KickoutMeetingReqBodyBuilder) KickoutUsers(kickoutUsers []*MeetingUser) *KickoutMeetingReqBodyBuilder {
	builder.kickoutUsers = kickoutUsers
	builder.kickoutUsersFlag = true
	return builder
}

func (builder *KickoutMeetingReqBodyBuilder) Build() *KickoutMeetingReqBody {
	req := &KickoutMeetingReqBody{}
	if builder.kickoutUsersFlag {
		req.KickoutUsers = builder.kickoutUsers
	}
	return req
}

type KickoutMeetingPathReqBodyBuilder struct {
	kickoutUsers     []*MeetingUser
	kickoutUsersFlag bool
}

func NewKickoutMeetingPathReqBodyBuilder() *KickoutMeetingPathReqBodyBuilder {
	builder := &KickoutMeetingPathReqBodyBuilder{}
	return builder
}

// 需移除的用户列表
//
// 示例值：
func (builder *KickoutMeetingPathReqBodyBuilder) KickoutUsers(kickoutUsers []*MeetingUser) *KickoutMeetingPathReqBodyBuilder {
	builder.kickoutUsers = kickoutUsers
	builder.kickoutUsersFlag = true
	return builder
}

func (builder *KickoutMeetingPathReqBodyBuilder) Build() (*KickoutMeetingReqBody, error) {
	req := &KickoutMeetingReqBody{}
	if builder.kickoutUsersFlag {
		req.KickoutUsers = builder.kickoutUsers
	}
	return req, nil
}

type KickoutMeetingReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *KickoutMeetingReqBody
}

func NewKickoutMeetingReqBuilder() *KickoutMeetingReqBuilder {
	builder := &KickoutMeetingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议ID
//
// 示例值：6911188411932033028
func (builder *KickoutMeetingReqBuilder) MeetingId(meetingId string) *KickoutMeetingReqBuilder {
	builder.apiReq.PathParams.Set("meeting_id", fmt.Sprint(meetingId))
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *KickoutMeetingReqBuilder) UserIdType(userIdType string) *KickoutMeetingReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 将参会人从会议中移除
func (builder *KickoutMeetingReqBuilder) Body(body *KickoutMeetingReqBody) *KickoutMeetingReqBuilder {
	builder.body = body
	return builder
}

func (builder *KickoutMeetingReqBuilder) Build() *KickoutMeetingReq {
	req := &KickoutMeetingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type KickoutMeetingReqBody struct {
	KickoutUsers []*MeetingUser `json:"kickout_users,omitempty"` // 需移除的用户列表
}

type KickoutMeetingReq struct {
	apiReq *larkcore.ApiReq
	Body   *KickoutMeetingReqBody `body:""`
}

type KickoutMeetingRespData struct {
	KickoutResults []*MeetingParticipantResult `json:"kickout_results,omitempty"` // 移除结果
}

type KickoutMeetingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *KickoutMeetingRespData `json:"data"` // 业务数据
}

func (resp *KickoutMeetingResp) Success() bool {
	return resp.Code == 0
}

type ListByNoMeetingReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListByNoMeetingReqBuilder() *ListByNoMeetingReqBuilder {
	builder := &ListByNoMeetingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListByNoMeetingReqBuilder) Limit(limit int) *ListByNoMeetingReqBuilder {
	builder.limit = limit
	return builder
}

// 9位会议号
//
// 示例值：123456789
func (builder *ListByNoMeetingReqBuilder) MeetingNo(meetingNo string) *ListByNoMeetingReqBuilder {
	builder.apiReq.QueryParams.Set("meeting_no", fmt.Sprint(meetingNo))
	return builder
}

// 查询开始时间（unix时间，单位sec）
//
// 示例值：1608888867
func (builder *ListByNoMeetingReqBuilder) StartTime(startTime string) *ListByNoMeetingReqBuilder {
	builder.apiReq.QueryParams.Set("start_time", fmt.Sprint(startTime))
	return builder
}

// 查询结束时间（unix时间，单位sec）
//
// 示例值：1608888867
func (builder *ListByNoMeetingReqBuilder) EndTime(endTime string) *ListByNoMeetingReqBuilder {
	builder.apiReq.QueryParams.Set("end_time", fmt.Sprint(endTime))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该page_token 获取查询结果
//
// 示例值：5
func (builder *ListByNoMeetingReqBuilder) PageToken(pageToken string) *ListByNoMeetingReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 分页大小
//
// 示例值：10
func (builder *ListByNoMeetingReqBuilder) PageSize(pageSize int) *ListByNoMeetingReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

func (builder *ListByNoMeetingReqBuilder) Build() *ListByNoMeetingReq {
	req := &ListByNoMeetingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListByNoMeetingReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListByNoMeetingRespData struct {
	HasMore *bool `json:"has_more,omitempty"` // 是否还有数据

	PageToken *string `json:"page_token,omitempty"` // 下一页分页的token，下次请求时传入

	MeetingBriefs []*Meeting `json:"meeting_briefs,omitempty"` // 会议简要信息列表
}

type ListByNoMeetingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListByNoMeetingRespData `json:"data"` // 业务数据
}

func (resp *ListByNoMeetingResp) Success() bool {
	return resp.Code == 0
}

type SetHostMeetingReqBodyBuilder struct {
	hostUser     *MeetingUser // 将要设置的主持人
	hostUserFlag bool

	oldHostUser     *MeetingUser // 当前主持人（CAS并发安全：如果和会中当前主持人不符则会设置失败，可使用返回的最新数据重新设置）
	oldHostUserFlag bool
}

func NewSetHostMeetingReqBodyBuilder() *SetHostMeetingReqBodyBuilder {
	builder := &SetHostMeetingReqBodyBuilder{}
	return builder
}

// 将要设置的主持人
//
//示例值：
func (builder *SetHostMeetingReqBodyBuilder) HostUser(hostUser *MeetingUser) *SetHostMeetingReqBodyBuilder {
	builder.hostUser = hostUser
	builder.hostUserFlag = true
	return builder
}

// 当前主持人（CAS并发安全：如果和会中当前主持人不符则会设置失败，可使用返回的最新数据重新设置）
//
//示例值：
func (builder *SetHostMeetingReqBodyBuilder) OldHostUser(oldHostUser *MeetingUser) *SetHostMeetingReqBodyBuilder {
	builder.oldHostUser = oldHostUser
	builder.oldHostUserFlag = true
	return builder
}

func (builder *SetHostMeetingReqBodyBuilder) Build() *SetHostMeetingReqBody {
	req := &SetHostMeetingReqBody{}
	if builder.hostUserFlag {
		req.HostUser = builder.hostUser
	}
	if builder.oldHostUserFlag {
		req.OldHostUser = builder.oldHostUser
	}
	return req
}

type SetHostMeetingPathReqBodyBuilder struct {
	hostUser        *MeetingUser
	hostUserFlag    bool
	oldHostUser     *MeetingUser
	oldHostUserFlag bool
}

func NewSetHostMeetingPathReqBodyBuilder() *SetHostMeetingPathReqBodyBuilder {
	builder := &SetHostMeetingPathReqBodyBuilder{}
	return builder
}

// 将要设置的主持人
//
// 示例值：
func (builder *SetHostMeetingPathReqBodyBuilder) HostUser(hostUser *MeetingUser) *SetHostMeetingPathReqBodyBuilder {
	builder.hostUser = hostUser
	builder.hostUserFlag = true
	return builder
}

// 当前主持人（CAS并发安全：如果和会中当前主持人不符则会设置失败，可使用返回的最新数据重新设置）
//
// 示例值：
func (builder *SetHostMeetingPathReqBodyBuilder) OldHostUser(oldHostUser *MeetingUser) *SetHostMeetingPathReqBodyBuilder {
	builder.oldHostUser = oldHostUser
	builder.oldHostUserFlag = true
	return builder
}

func (builder *SetHostMeetingPathReqBodyBuilder) Build() (*SetHostMeetingReqBody, error) {
	req := &SetHostMeetingReqBody{}
	if builder.hostUserFlag {
		req.HostUser = builder.hostUser
	}
	if builder.oldHostUserFlag {
		req.OldHostUser = builder.oldHostUser
	}
	return req, nil
}

type SetHostMeetingReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SetHostMeetingReqBody
}

func NewSetHostMeetingReqBuilder() *SetHostMeetingReqBuilder {
	builder := &SetHostMeetingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议ID（视频会议的唯一标识，视频会议开始后才会产生）
//
// 示例值：6911188411932033028
func (builder *SetHostMeetingReqBuilder) MeetingId(meetingId string) *SetHostMeetingReqBuilder {
	builder.apiReq.PathParams.Set("meeting_id", fmt.Sprint(meetingId))
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *SetHostMeetingReqBuilder) UserIdType(userIdType string) *SetHostMeetingReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 设置会议的主持人
func (builder *SetHostMeetingReqBuilder) Body(body *SetHostMeetingReqBody) *SetHostMeetingReqBuilder {
	builder.body = body
	return builder
}

func (builder *SetHostMeetingReqBuilder) Build() *SetHostMeetingReq {
	req := &SetHostMeetingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SetHostMeetingReqBody struct {
	HostUser *MeetingUser `json:"host_user,omitempty"` // 将要设置的主持人

	OldHostUser *MeetingUser `json:"old_host_user,omitempty"` // 当前主持人（CAS并发安全：如果和会中当前主持人不符则会设置失败，可使用返回的最新数据重新设置）
}

type SetHostMeetingReq struct {
	apiReq *larkcore.ApiReq
	Body   *SetHostMeetingReqBody `body:""`
}

type SetHostMeetingRespData struct {
	HostUser *MeetingUser `json:"host_user,omitempty"` // 会中当前主持人
}

type SetHostMeetingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SetHostMeetingRespData `json:"data"` // 业务数据
}

func (resp *SetHostMeetingResp) Success() bool {
	return resp.Code == 0
}

type GetMeetingRecordingReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetMeetingRecordingReqBuilder() *GetMeetingRecordingReqBuilder {
	builder := &GetMeetingRecordingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议ID（视频会议的唯一标识，视频会议开始后才会产生）
//
// 示例值：6911188411932033028
func (builder *GetMeetingRecordingReqBuilder) MeetingId(meetingId string) *GetMeetingRecordingReqBuilder {
	builder.apiReq.PathParams.Set("meeting_id", fmt.Sprint(meetingId))
	return builder
}

func (builder *GetMeetingRecordingReqBuilder) Build() *GetMeetingRecordingReq {
	req := &GetMeetingRecordingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetMeetingRecordingReq struct {
	apiReq *larkcore.ApiReq
}

type GetMeetingRecordingRespData struct {
	Recording *MeetingRecording `json:"recording,omitempty"` // 录制文件数据
}

type GetMeetingRecordingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetMeetingRecordingRespData `json:"data"` // 业务数据
}

func (resp *GetMeetingRecordingResp) Success() bool {
	return resp.Code == 0
}

type SetPermissionMeetingRecordingReqBodyBuilder struct {
	permissionObjects     []*RecordingPermissionObject // 授权对象列表
	permissionObjectsFlag bool

	actionType     int // 授权或者取消授权，默认授权
	actionTypeFlag bool
}

func NewSetPermissionMeetingRecordingReqBodyBuilder() *SetPermissionMeetingRecordingReqBodyBuilder {
	builder := &SetPermissionMeetingRecordingReqBodyBuilder{}
	return builder
}

// 授权对象列表
//
//示例值：
func (builder *SetPermissionMeetingRecordingReqBodyBuilder) PermissionObjects(permissionObjects []*RecordingPermissionObject) *SetPermissionMeetingRecordingReqBodyBuilder {
	builder.permissionObjects = permissionObjects
	builder.permissionObjectsFlag = true
	return builder
}

// 授权或者取消授权，默认授权
//
//示例值：1
func (builder *SetPermissionMeetingRecordingReqBodyBuilder) ActionType(actionType int) *SetPermissionMeetingRecordingReqBodyBuilder {
	builder.actionType = actionType
	builder.actionTypeFlag = true
	return builder
}

func (builder *SetPermissionMeetingRecordingReqBodyBuilder) Build() *SetPermissionMeetingRecordingReqBody {
	req := &SetPermissionMeetingRecordingReqBody{}
	if builder.permissionObjectsFlag {
		req.PermissionObjects = builder.permissionObjects
	}
	if builder.actionTypeFlag {
		req.ActionType = &builder.actionType
	}
	return req
}

type SetPermissionMeetingRecordingPathReqBodyBuilder struct {
	permissionObjects     []*RecordingPermissionObject
	permissionObjectsFlag bool
	actionType            int
	actionTypeFlag        bool
}

func NewSetPermissionMeetingRecordingPathReqBodyBuilder() *SetPermissionMeetingRecordingPathReqBodyBuilder {
	builder := &SetPermissionMeetingRecordingPathReqBodyBuilder{}
	return builder
}

// 授权对象列表
//
// 示例值：
func (builder *SetPermissionMeetingRecordingPathReqBodyBuilder) PermissionObjects(permissionObjects []*RecordingPermissionObject) *SetPermissionMeetingRecordingPathReqBodyBuilder {
	builder.permissionObjects = permissionObjects
	builder.permissionObjectsFlag = true
	return builder
}

// 授权或者取消授权，默认授权
//
// 示例值：1
func (builder *SetPermissionMeetingRecordingPathReqBodyBuilder) ActionType(actionType int) *SetPermissionMeetingRecordingPathReqBodyBuilder {
	builder.actionType = actionType
	builder.actionTypeFlag = true
	return builder
}

func (builder *SetPermissionMeetingRecordingPathReqBodyBuilder) Build() (*SetPermissionMeetingRecordingReqBody, error) {
	req := &SetPermissionMeetingRecordingReqBody{}
	if builder.permissionObjectsFlag {
		req.PermissionObjects = builder.permissionObjects
	}
	if builder.actionTypeFlag {
		req.ActionType = &builder.actionType
	}
	return req, nil
}

type SetPermissionMeetingRecordingReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SetPermissionMeetingRecordingReqBody
}

func NewSetPermissionMeetingRecordingReqBuilder() *SetPermissionMeetingRecordingReqBuilder {
	builder := &SetPermissionMeetingRecordingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议ID（视频会议的唯一标识，视频会议开始后才会产生）
//
// 示例值：6911188411932033028
func (builder *SetPermissionMeetingRecordingReqBuilder) MeetingId(meetingId string) *SetPermissionMeetingRecordingReqBuilder {
	builder.apiReq.PathParams.Set("meeting_id", fmt.Sprint(meetingId))
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *SetPermissionMeetingRecordingReqBuilder) UserIdType(userIdType string) *SetPermissionMeetingRecordingReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 将一个会议的录制文件授权给组织、用户或公开到公网
func (builder *SetPermissionMeetingRecordingReqBuilder) Body(body *SetPermissionMeetingRecordingReqBody) *SetPermissionMeetingRecordingReqBuilder {
	builder.body = body
	return builder
}

func (builder *SetPermissionMeetingRecordingReqBuilder) Build() *SetPermissionMeetingRecordingReq {
	req := &SetPermissionMeetingRecordingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SetPermissionMeetingRecordingReqBody struct {
	PermissionObjects []*RecordingPermissionObject `json:"permission_objects,omitempty"` // 授权对象列表

	ActionType *int `json:"action_type,omitempty"` // 授权或者取消授权，默认授权
}

type SetPermissionMeetingRecordingReq struct {
	apiReq *larkcore.ApiReq
	Body   *SetPermissionMeetingRecordingReqBody `body:""`
}

type SetPermissionMeetingRecordingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *SetPermissionMeetingRecordingResp) Success() bool {
	return resp.Code == 0
}

type StartMeetingRecordingReqBodyBuilder struct {
	timezone     int // 录制文件时间显示使用的时区[-12,12]
	timezoneFlag bool
}

func NewStartMeetingRecordingReqBodyBuilder() *StartMeetingRecordingReqBodyBuilder {
	builder := &StartMeetingRecordingReqBodyBuilder{}
	return builder
}

// 录制文件时间显示使用的时区[-12,12]
//
//示例值：8
func (builder *StartMeetingRecordingReqBodyBuilder) Timezone(timezone int) *StartMeetingRecordingReqBodyBuilder {
	builder.timezone = timezone
	builder.timezoneFlag = true
	return builder
}

func (builder *StartMeetingRecordingReqBodyBuilder) Build() *StartMeetingRecordingReqBody {
	req := &StartMeetingRecordingReqBody{}
	if builder.timezoneFlag {
		req.Timezone = &builder.timezone
	}
	return req
}

type StartMeetingRecordingPathReqBodyBuilder struct {
	timezone     int
	timezoneFlag bool
}

func NewStartMeetingRecordingPathReqBodyBuilder() *StartMeetingRecordingPathReqBodyBuilder {
	builder := &StartMeetingRecordingPathReqBodyBuilder{}
	return builder
}

// 录制文件时间显示使用的时区[-12,12]
//
// 示例值：8
func (builder *StartMeetingRecordingPathReqBodyBuilder) Timezone(timezone int) *StartMeetingRecordingPathReqBodyBuilder {
	builder.timezone = timezone
	builder.timezoneFlag = true
	return builder
}

func (builder *StartMeetingRecordingPathReqBodyBuilder) Build() (*StartMeetingRecordingReqBody, error) {
	req := &StartMeetingRecordingReqBody{}
	if builder.timezoneFlag {
		req.Timezone = &builder.timezone
	}
	return req, nil
}

type StartMeetingRecordingReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *StartMeetingRecordingReqBody
}

func NewStartMeetingRecordingReqBuilder() *StartMeetingRecordingReqBuilder {
	builder := &StartMeetingRecordingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议ID（视频会议的唯一标识，视频会议开始后才会产生）
//
// 示例值：6911188411932033028
func (builder *StartMeetingRecordingReqBuilder) MeetingId(meetingId string) *StartMeetingRecordingReqBuilder {
	builder.apiReq.PathParams.Set("meeting_id", fmt.Sprint(meetingId))
	return builder
}

// 在会议中开始录制。
func (builder *StartMeetingRecordingReqBuilder) Body(body *StartMeetingRecordingReqBody) *StartMeetingRecordingReqBuilder {
	builder.body = body
	return builder
}

func (builder *StartMeetingRecordingReqBuilder) Build() *StartMeetingRecordingReq {
	req := &StartMeetingRecordingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.Body = builder.body
	return req
}

type StartMeetingRecordingReqBody struct {
	Timezone *int `json:"timezone,omitempty"` // 录制文件时间显示使用的时区[-12,12]
}

type StartMeetingRecordingReq struct {
	apiReq *larkcore.ApiReq
	Body   *StartMeetingRecordingReqBody `body:""`
}

type StartMeetingRecordingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *StartMeetingRecordingResp) Success() bool {
	return resp.Code == 0
}

type StopMeetingRecordingReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewStopMeetingRecordingReqBuilder() *StopMeetingRecordingReqBuilder {
	builder := &StopMeetingRecordingReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议ID（视频会议的唯一标识，视频会议开始后才会产生）
//
// 示例值：6911188411932033028
func (builder *StopMeetingRecordingReqBuilder) MeetingId(meetingId string) *StopMeetingRecordingReqBuilder {
	builder.apiReq.PathParams.Set("meeting_id", fmt.Sprint(meetingId))
	return builder
}

func (builder *StopMeetingRecordingReqBuilder) Build() *StopMeetingRecordingReq {
	req := &StopMeetingRecordingReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type StopMeetingRecordingReq struct {
	apiReq *larkcore.ApiReq
}

type StopMeetingRecordingResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *StopMeetingRecordingResp) Success() bool {
	return resp.Code == 0
}

type GetMeetingListReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewGetMeetingListReqBuilder() *GetMeetingListReqBuilder {
	builder := &GetMeetingListReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *GetMeetingListReqBuilder) Limit(limit int) *GetMeetingListReqBuilder {
	builder.limit = limit
	return builder
}

// 查询开始时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *GetMeetingListReqBuilder) StartTime(startTime string) *GetMeetingListReqBuilder {
	builder.apiReq.QueryParams.Set("start_time", fmt.Sprint(startTime))
	return builder
}

// 查询结束时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *GetMeetingListReqBuilder) EndTime(endTime string) *GetMeetingListReqBuilder {
	builder.apiReq.QueryParams.Set("end_time", fmt.Sprint(endTime))
	return builder
}

// 会议状态
//
// 示例值：2
func (builder *GetMeetingListReqBuilder) MeetingStatus(meetingStatus int) *GetMeetingListReqBuilder {
	builder.apiReq.QueryParams.Set("meeting_status", fmt.Sprint(meetingStatus))
	return builder
}

// 按9位会议号筛选（最多一个筛选条件）
//
// 示例值：123456789
func (builder *GetMeetingListReqBuilder) MeetingNo(meetingNo string) *GetMeetingListReqBuilder {
	builder.apiReq.QueryParams.Set("meeting_no", fmt.Sprint(meetingNo))
	return builder
}

// 按参会Lark用户筛选（最多一个筛选条件）
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *GetMeetingListReqBuilder) UserId(userId string) *GetMeetingListReqBuilder {
	builder.apiReq.QueryParams.Set("user_id", fmt.Sprint(userId))
	return builder
}

// 按参会Rooms筛选（最多一个筛选条件）
//
// 示例值：omm_eada1d61a550955240c28757e7dec3af
func (builder *GetMeetingListReqBuilder) RoomId(roomId string) *GetMeetingListReqBuilder {
	builder.apiReq.QueryParams.Set("room_id", fmt.Sprint(roomId))
	return builder
}

// 按会议类型筛选（最多一个筛选条件）
//
// 示例值：2
func (builder *GetMeetingListReqBuilder) MeetingType(meetingType int) *GetMeetingListReqBuilder {
	builder.apiReq.QueryParams.Set("meeting_type", fmt.Sprint(meetingType))
	return builder
}

// 分页尺寸大小
//
// 示例值：20
func (builder *GetMeetingListReqBuilder) PageSize(pageSize int) *GetMeetingListReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记,第一次请求不填,表示从头开始遍历.下次遍历可采用该 page_token获取查询结果
//
// 示例值：
func (builder *GetMeetingListReqBuilder) PageToken(pageToken string) *GetMeetingListReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 是否查询外部会议（不传默认为不查询）
//
// 示例值：false
func (builder *GetMeetingListReqBuilder) IncludeExternalMeetings(includeExternalMeetings bool) *GetMeetingListReqBuilder {
	builder.apiReq.QueryParams.Set("include_external_meetings", fmt.Sprint(includeExternalMeetings))
	return builder
}

// 是否查询网络研讨会（不传默认为不查询）
//
// 示例值：false
func (builder *GetMeetingListReqBuilder) IncludeWebinar(includeWebinar bool) *GetMeetingListReqBuilder {
	builder.apiReq.QueryParams.Set("include_webinar", fmt.Sprint(includeWebinar))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *GetMeetingListReqBuilder) UserIdType(userIdType string) *GetMeetingListReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetMeetingListReqBuilder) Build() *GetMeetingListReq {
	req := &GetMeetingListReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetMeetingListReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type GetMeetingListRespData struct {
	MeetingList []*MeetingInfo `json:"meeting_list,omitempty"` // 会议列表

	PageToken *string `json:"page_token,omitempty"` // 下一页分页的token，下次请求时传入

	HasMore *bool `json:"has_more,omitempty"` // 是否还有数据
}

type GetMeetingListResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetMeetingListRespData `json:"data"` // 业务数据
}

func (resp *GetMeetingListResp) Success() bool {
	return resp.Code == 0
}

type GetParticipantListReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewGetParticipantListReqBuilder() *GetParticipantListReqBuilder {
	builder := &GetParticipantListReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *GetParticipantListReqBuilder) Limit(limit int) *GetParticipantListReqBuilder {
	builder.limit = limit
	return builder
}

// 会议开始时间（需要精确到一分钟，unix时间，单位sec）
//
// 示例值：1655276858
func (builder *GetParticipantListReqBuilder) MeetingStartTime(meetingStartTime string) *GetParticipantListReqBuilder {
	builder.apiReq.QueryParams.Set("meeting_start_time", fmt.Sprint(meetingStartTime))
	return builder
}

// 会议结束时间（unix时间，单位sec；对于进行中会议则传0）
//
// 示例值：1655276858
func (builder *GetParticipantListReqBuilder) MeetingEndTime(meetingEndTime string) *GetParticipantListReqBuilder {
	builder.apiReq.QueryParams.Set("meeting_end_time", fmt.Sprint(meetingEndTime))
	return builder
}

// 会议状态（不传默认为已结束会议）
//
// 示例值：2
func (builder *GetParticipantListReqBuilder) MeetingStatus(meetingStatus int) *GetParticipantListReqBuilder {
	builder.apiReq.QueryParams.Set("meeting_status", fmt.Sprint(meetingStatus))
	return builder
}

// 9位会议号
//
// 示例值：123456789
func (builder *GetParticipantListReqBuilder) MeetingNo(meetingNo string) *GetParticipantListReqBuilder {
	builder.apiReq.QueryParams.Set("meeting_no", fmt.Sprint(meetingNo))
	return builder
}

// 按参会Lark用户筛选（最多一个筛选条件）
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *GetParticipantListReqBuilder) UserId(userId string) *GetParticipantListReqBuilder {
	builder.apiReq.QueryParams.Set("user_id", fmt.Sprint(userId))
	return builder
}

// 按参会Rooms筛选（最多一个筛选条件）
//
// 示例值：omm_eada1d61a550955240c28757e7dec3af
func (builder *GetParticipantListReqBuilder) RoomId(roomId string) *GetParticipantListReqBuilder {
	builder.apiReq.QueryParams.Set("room_id", fmt.Sprint(roomId))
	return builder
}

// 分页尺寸大小
//
// 示例值：20
func (builder *GetParticipantListReqBuilder) PageSize(pageSize int) *GetParticipantListReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记,第一次请求不填,表示从头开始遍历.下次遍历可采用该 page_token获取查询结果
//
// 示例值：
func (builder *GetParticipantListReqBuilder) PageToken(pageToken string) *GetParticipantListReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 查询网络研讨会时的观众类型,"0"为嘉宾，"3"为观众
//
// 示例值：0
func (builder *GetParticipantListReqBuilder) WebinarUserRole(webinarUserRole string) *GetParticipantListReqBuilder {
	builder.apiReq.QueryParams.Set("webinar_user_role", fmt.Sprint(webinarUserRole))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *GetParticipantListReqBuilder) UserIdType(userIdType string) *GetParticipantListReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetParticipantListReqBuilder) Build() *GetParticipantListReq {
	req := &GetParticipantListReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetParticipantListReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type GetParticipantListRespData struct {
	Participants []*Participant `json:"participants,omitempty"` // 参会人列表

	PageToken *string `json:"page_token,omitempty"` // 下一页分页的token，下次请求时传入

	HasMore *bool `json:"has_more,omitempty"` // 是否还有数据
}

type GetParticipantListResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetParticipantListRespData `json:"data"` // 业务数据
}

func (resp *GetParticipantListResp) Success() bool {
	return resp.Code == 0
}

type GetParticipantQualityListReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewGetParticipantQualityListReqBuilder() *GetParticipantQualityListReqBuilder {
	builder := &GetParticipantQualityListReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *GetParticipantQualityListReqBuilder) Limit(limit int) *GetParticipantQualityListReqBuilder {
	builder.limit = limit
	return builder
}

// 会议开始时间（需要精确到一分钟，unix时间，单位sec）
//
// 示例值：1655276858
func (builder *GetParticipantQualityListReqBuilder) MeetingStartTime(meetingStartTime string) *GetParticipantQualityListReqBuilder {
	builder.apiReq.QueryParams.Set("meeting_start_time", fmt.Sprint(meetingStartTime))
	return builder
}

// 会议结束时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *GetParticipantQualityListReqBuilder) MeetingEndTime(meetingEndTime string) *GetParticipantQualityListReqBuilder {
	builder.apiReq.QueryParams.Set("meeting_end_time", fmt.Sprint(meetingEndTime))
	return builder
}

// 9位会议号
//
// 示例值：123456789
func (builder *GetParticipantQualityListReqBuilder) MeetingNo(meetingNo string) *GetParticipantQualityListReqBuilder {
	builder.apiReq.QueryParams.Set("meeting_no", fmt.Sprint(meetingNo))
	return builder
}

// 参会人入会时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *GetParticipantQualityListReqBuilder) JoinTime(joinTime string) *GetParticipantQualityListReqBuilder {
	builder.apiReq.QueryParams.Set("join_time", fmt.Sprint(joinTime))
	return builder
}

// 参会人为Lark用户时填入
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *GetParticipantQualityListReqBuilder) UserId(userId string) *GetParticipantQualityListReqBuilder {
	builder.apiReq.QueryParams.Set("user_id", fmt.Sprint(userId))
	return builder
}

// 参会人为Rooms时填入
//
// 示例值：omm_eada1d61a550955240c28757e7dec3af
func (builder *GetParticipantQualityListReqBuilder) RoomId(roomId string) *GetParticipantQualityListReqBuilder {
	builder.apiReq.QueryParams.Set("room_id", fmt.Sprint(roomId))
	return builder
}

// 分页尺寸大小
//
// 示例值：20
func (builder *GetParticipantQualityListReqBuilder) PageSize(pageSize int) *GetParticipantQualityListReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记,第一次请求不填,表示从头开始遍历.下次遍历可采用该 page_token获取查询结果
//
// 示例值：
func (builder *GetParticipantQualityListReqBuilder) PageToken(pageToken string) *GetParticipantQualityListReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *GetParticipantQualityListReqBuilder) UserIdType(userIdType string) *GetParticipantQualityListReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetParticipantQualityListReqBuilder) Build() *GetParticipantQualityListReq {
	req := &GetParticipantQualityListReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetParticipantQualityListReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type GetParticipantQualityListRespData struct {
	ParticipantQualityList []*ParticipantQuality `json:"participant_quality_list,omitempty"` // 参会人参会质量列表

	PageToken *string `json:"page_token,omitempty"` // 下一页分页的token，下次请求时传入

	HasMore *bool `json:"has_more,omitempty"` // 是否还有数据
}

type GetParticipantQualityListResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetParticipantQualityListRespData `json:"data"` // 业务数据
}

func (resp *GetParticipantQualityListResp) Success() bool {
	return resp.Code == 0
}

type GetDailyReportReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetDailyReportReqBuilder() *GetDailyReportReqBuilder {
	builder := &GetDailyReportReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 开始时间（unix时间，单位sec）
//
// 示例值：1608888867
func (builder *GetDailyReportReqBuilder) StartTime(startTime string) *GetDailyReportReqBuilder {
	builder.apiReq.QueryParams.Set("start_time", fmt.Sprint(startTime))
	return builder
}

// 结束时间（unix时间，单位sec）
//
// 示例值：1608888966
func (builder *GetDailyReportReqBuilder) EndTime(endTime string) *GetDailyReportReqBuilder {
	builder.apiReq.QueryParams.Set("end_time", fmt.Sprint(endTime))
	return builder
}

// 数据驻留地
//
// 示例值：0
func (builder *GetDailyReportReqBuilder) Unit(unit int) *GetDailyReportReqBuilder {
	builder.apiReq.QueryParams.Set("unit", fmt.Sprint(unit))
	return builder
}

func (builder *GetDailyReportReqBuilder) Build() *GetDailyReportReq {
	req := &GetDailyReportReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetDailyReportReq struct {
	apiReq *larkcore.ApiReq
}

type GetDailyReportRespData struct {
	MeetingReport *Report `json:"meeting_report,omitempty"` // 会议报告
}

type GetDailyReportResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetDailyReportRespData `json:"data"` // 业务数据
}

func (resp *GetDailyReportResp) Success() bool {
	return resp.Code == 0
}

type GetTopUserReportReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetTopUserReportReqBuilder() *GetTopUserReportReqBuilder {
	builder := &GetTopUserReportReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 开始时间（unix时间，单位sec）
//
// 示例值：1608888867
func (builder *GetTopUserReportReqBuilder) StartTime(startTime string) *GetTopUserReportReqBuilder {
	builder.apiReq.QueryParams.Set("start_time", fmt.Sprint(startTime))
	return builder
}

// 结束时间（unix时间，单位sec）
//
// 示例值：1608889966
func (builder *GetTopUserReportReqBuilder) EndTime(endTime string) *GetTopUserReportReqBuilder {
	builder.apiReq.QueryParams.Set("end_time", fmt.Sprint(endTime))
	return builder
}

// 取前多少位
//
// 示例值：10
func (builder *GetTopUserReportReqBuilder) Limit(limit int) *GetTopUserReportReqBuilder {
	builder.apiReq.QueryParams.Set("limit", fmt.Sprint(limit))
	return builder
}

// 排序依据（降序）
//
// 示例值：1
func (builder *GetTopUserReportReqBuilder) OrderBy(orderBy int) *GetTopUserReportReqBuilder {
	builder.apiReq.QueryParams.Set("order_by", fmt.Sprint(orderBy))
	return builder
}

// 数据驻留地
//
// 示例值：0
func (builder *GetTopUserReportReqBuilder) Unit(unit int) *GetTopUserReportReqBuilder {
	builder.apiReq.QueryParams.Set("unit", fmt.Sprint(unit))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *GetTopUserReportReqBuilder) UserIdType(userIdType string) *GetTopUserReportReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetTopUserReportReqBuilder) Build() *GetTopUserReportReq {
	req := &GetTopUserReportReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetTopUserReportReq struct {
	apiReq *larkcore.ApiReq
}

type GetTopUserReportRespData struct {
	TopUserReport []*ReportTopUser `json:"top_user_report,omitempty"` // top用户列表
}

type GetTopUserReportResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetTopUserReportRespData `json:"data"` // 业务数据
}

func (resp *GetTopUserReportResp) Success() bool {
	return resp.Code == 0
}

type ApplyReserveReqBodyBuilder struct {
	endTime     string // 预约到期时间（unix时间，单位sec），多人会议必填
	endTimeFlag bool

	ownerId     string // 指定会议归属人，使用tenant_access_token时生效且必传，使用user_access_token时不生效，必须指定为同租户下的合法lark用户
	ownerIdFlag bool

	meetingSettings     *ReserveMeetingSetting // 会议设置
	meetingSettingsFlag bool
}

func NewApplyReserveReqBodyBuilder() *ApplyReserveReqBodyBuilder {
	builder := &ApplyReserveReqBodyBuilder{}
	return builder
}

// 预约到期时间（unix时间，单位sec），多人会议必填
//
//示例值：1608888867
func (builder *ApplyReserveReqBodyBuilder) EndTime(endTime string) *ApplyReserveReqBodyBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 指定会议归属人，使用tenant_access_token时生效且必传，使用user_access_token时不生效，必须指定为同租户下的合法lark用户
//
//示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *ApplyReserveReqBodyBuilder) OwnerId(ownerId string) *ApplyReserveReqBodyBuilder {
	builder.ownerId = ownerId
	builder.ownerIdFlag = true
	return builder
}

// 会议设置
//
//示例值：
func (builder *ApplyReserveReqBodyBuilder) MeetingSettings(meetingSettings *ReserveMeetingSetting) *ApplyReserveReqBodyBuilder {
	builder.meetingSettings = meetingSettings
	builder.meetingSettingsFlag = true
	return builder
}

func (builder *ApplyReserveReqBodyBuilder) Build() *ApplyReserveReqBody {
	req := &ApplyReserveReqBody{}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime
	}
	if builder.ownerIdFlag {
		req.OwnerId = &builder.ownerId
	}
	if builder.meetingSettingsFlag {
		req.MeetingSettings = builder.meetingSettings
	}
	return req
}

type ApplyReservePathReqBodyBuilder struct {
	endTime             string
	endTimeFlag         bool
	ownerId             string
	ownerIdFlag         bool
	meetingSettings     *ReserveMeetingSetting
	meetingSettingsFlag bool
}

func NewApplyReservePathReqBodyBuilder() *ApplyReservePathReqBodyBuilder {
	builder := &ApplyReservePathReqBodyBuilder{}
	return builder
}

// 预约到期时间（unix时间，单位sec），多人会议必填
//
// 示例值：1608888867
func (builder *ApplyReservePathReqBodyBuilder) EndTime(endTime string) *ApplyReservePathReqBodyBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 指定会议归属人，使用tenant_access_token时生效且必传，使用user_access_token时不生效，必须指定为同租户下的合法lark用户
//
// 示例值：ou_3ec3f6a28a0d08c45d895276e8e5e19b
func (builder *ApplyReservePathReqBodyBuilder) OwnerId(ownerId string) *ApplyReservePathReqBodyBuilder {
	builder.ownerId = ownerId
	builder.ownerIdFlag = true
	return builder
}

// 会议设置
//
// 示例值：
func (builder *ApplyReservePathReqBodyBuilder) MeetingSettings(meetingSettings *ReserveMeetingSetting) *ApplyReservePathReqBodyBuilder {
	builder.meetingSettings = meetingSettings
	builder.meetingSettingsFlag = true
	return builder
}

func (builder *ApplyReservePathReqBodyBuilder) Build() (*ApplyReserveReqBody, error) {
	req := &ApplyReserveReqBody{}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime
	}
	if builder.ownerIdFlag {
		req.OwnerId = &builder.ownerId
	}
	if builder.meetingSettingsFlag {
		req.MeetingSettings = builder.meetingSettings
	}
	return req, nil
}

type ApplyReserveReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *ApplyReserveReqBody
}

func NewApplyReserveReqBuilder() *ApplyReserveReqBuilder {
	builder := &ApplyReserveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *ApplyReserveReqBuilder) UserIdType(userIdType string) *ApplyReserveReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 创建一个会议预约。
func (builder *ApplyReserveReqBuilder) Body(body *ApplyReserveReqBody) *ApplyReserveReqBuilder {
	builder.body = body
	return builder
}

func (builder *ApplyReserveReqBuilder) Build() *ApplyReserveReq {
	req := &ApplyReserveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type ApplyReserveReqBody struct {
	EndTime *string `json:"end_time,omitempty"` // 预约到期时间（unix时间，单位sec），多人会议必填

	OwnerId *string `json:"owner_id,omitempty"` // 指定会议归属人，使用tenant_access_token时生效且必传，使用user_access_token时不生效，必须指定为同租户下的合法lark用户

	MeetingSettings *ReserveMeetingSetting `json:"meeting_settings,omitempty"` // 会议设置
}

type ApplyReserveReq struct {
	apiReq *larkcore.ApiReq
	Body   *ApplyReserveReqBody `body:""`
}

type ApplyReserveRespData struct {
	Reserve *Reserve `json:"reserve,omitempty"` // 预约数据

	ReserveCorrectionCheckInfo *ReserveCorrectionCheckInfo `json:"reserve_correction_check_info,omitempty"` // 预约参数检查信息
}

type ApplyReserveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ApplyReserveRespData `json:"data"` // 业务数据
}

func (resp *ApplyReserveResp) Success() bool {
	return resp.Code == 0
}

type DeleteReserveReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteReserveReqBuilder() *DeleteReserveReqBuilder {
	builder := &DeleteReserveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 预约ID（预约的唯一标识）
//
// 示例值：6911188411932033028
func (builder *DeleteReserveReqBuilder) ReserveId(reserveId string) *DeleteReserveReqBuilder {
	builder.apiReq.PathParams.Set("reserve_id", fmt.Sprint(reserveId))
	return builder
}

func (builder *DeleteReserveReqBuilder) Build() *DeleteReserveReq {
	req := &DeleteReserveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteReserveReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteReserveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteReserveResp) Success() bool {
	return resp.Code == 0
}

type GetReserveReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetReserveReqBuilder() *GetReserveReqBuilder {
	builder := &GetReserveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 预约ID（预约的唯一标识）
//
// 示例值：6911188411932033028
func (builder *GetReserveReqBuilder) ReserveId(reserveId string) *GetReserveReqBuilder {
	builder.apiReq.PathParams.Set("reserve_id", fmt.Sprint(reserveId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *GetReserveReqBuilder) UserIdType(userIdType string) *GetReserveReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetReserveReqBuilder) Build() *GetReserveReq {
	req := &GetReserveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetReserveReq struct {
	apiReq *larkcore.ApiReq
}

type GetReserveRespData struct {
	Reserve *Reserve `json:"reserve,omitempty"` // 预约数据
}

type GetReserveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetReserveRespData `json:"data"` // 业务数据
}

func (resp *GetReserveResp) Success() bool {
	return resp.Code == 0
}

type GetActiveMeetingReserveReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetActiveMeetingReserveReqBuilder() *GetActiveMeetingReserveReqBuilder {
	builder := &GetActiveMeetingReserveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 预约ID（预约的唯一标识）
//
// 示例值：6911188411932033028
func (builder *GetActiveMeetingReserveReqBuilder) ReserveId(reserveId string) *GetActiveMeetingReserveReqBuilder {
	builder.apiReq.PathParams.Set("reserve_id", fmt.Sprint(reserveId))
	return builder
}

// 是否需要参会人列表，默认为false
//
// 示例值：false
func (builder *GetActiveMeetingReserveReqBuilder) WithParticipants(withParticipants bool) *GetActiveMeetingReserveReqBuilder {
	builder.apiReq.QueryParams.Set("with_participants", fmt.Sprint(withParticipants))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *GetActiveMeetingReserveReqBuilder) UserIdType(userIdType string) *GetActiveMeetingReserveReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetActiveMeetingReserveReqBuilder) Build() *GetActiveMeetingReserveReq {
	req := &GetActiveMeetingReserveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetActiveMeetingReserveReq struct {
	apiReq *larkcore.ApiReq
}

type GetActiveMeetingReserveRespData struct {
	Meeting *Meeting `json:"meeting,omitempty"` // 会议数据
}

type GetActiveMeetingReserveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetActiveMeetingReserveRespData `json:"data"` // 业务数据
}

func (resp *GetActiveMeetingReserveResp) Success() bool {
	return resp.Code == 0
}

type UpdateReserveReqBodyBuilder struct {
	endTime     string // 预约到期时间（unix时间，单位sec）
	endTimeFlag bool

	meetingSettings     *ReserveMeetingSetting // 会议设置
	meetingSettingsFlag bool
}

func NewUpdateReserveReqBodyBuilder() *UpdateReserveReqBodyBuilder {
	builder := &UpdateReserveReqBodyBuilder{}
	return builder
}

// 预约到期时间（unix时间，单位sec）
//
//示例值：1608888867
func (builder *UpdateReserveReqBodyBuilder) EndTime(endTime string) *UpdateReserveReqBodyBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 会议设置
//
//示例值：
func (builder *UpdateReserveReqBodyBuilder) MeetingSettings(meetingSettings *ReserveMeetingSetting) *UpdateReserveReqBodyBuilder {
	builder.meetingSettings = meetingSettings
	builder.meetingSettingsFlag = true
	return builder
}

func (builder *UpdateReserveReqBodyBuilder) Build() *UpdateReserveReqBody {
	req := &UpdateReserveReqBody{}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime
	}
	if builder.meetingSettingsFlag {
		req.MeetingSettings = builder.meetingSettings
	}
	return req
}

type UpdateReservePathReqBodyBuilder struct {
	endTime             string
	endTimeFlag         bool
	meetingSettings     *ReserveMeetingSetting
	meetingSettingsFlag bool
}

func NewUpdateReservePathReqBodyBuilder() *UpdateReservePathReqBodyBuilder {
	builder := &UpdateReservePathReqBodyBuilder{}
	return builder
}

// 预约到期时间（unix时间，单位sec）
//
// 示例值：1608888867
func (builder *UpdateReservePathReqBodyBuilder) EndTime(endTime string) *UpdateReservePathReqBodyBuilder {
	builder.endTime = endTime
	builder.endTimeFlag = true
	return builder
}

// 会议设置
//
// 示例值：
func (builder *UpdateReservePathReqBodyBuilder) MeetingSettings(meetingSettings *ReserveMeetingSetting) *UpdateReservePathReqBodyBuilder {
	builder.meetingSettings = meetingSettings
	builder.meetingSettingsFlag = true
	return builder
}

func (builder *UpdateReservePathReqBodyBuilder) Build() (*UpdateReserveReqBody, error) {
	req := &UpdateReserveReqBody{}
	if builder.endTimeFlag {
		req.EndTime = &builder.endTime
	}
	if builder.meetingSettingsFlag {
		req.MeetingSettings = builder.meetingSettings
	}
	return req, nil
}

type UpdateReserveReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *UpdateReserveReqBody
}

func NewUpdateReserveReqBuilder() *UpdateReserveReqBuilder {
	builder := &UpdateReserveReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 预约ID（预约的唯一标识）
//
// 示例值：6911188411932033028
func (builder *UpdateReserveReqBuilder) ReserveId(reserveId string) *UpdateReserveReqBuilder {
	builder.apiReq.PathParams.Set("reserve_id", fmt.Sprint(reserveId))
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *UpdateReserveReqBuilder) UserIdType(userIdType string) *UpdateReserveReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 更新一个预约
func (builder *UpdateReserveReqBuilder) Body(body *UpdateReserveReqBody) *UpdateReserveReqBuilder {
	builder.body = body
	return builder
}

func (builder *UpdateReserveReqBuilder) Build() *UpdateReserveReq {
	req := &UpdateReserveReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type UpdateReserveReqBody struct {
	EndTime *string `json:"end_time,omitempty"` // 预约到期时间（unix时间，单位sec）

	MeetingSettings *ReserveMeetingSetting `json:"meeting_settings,omitempty"` // 会议设置
}

type UpdateReserveReq struct {
	apiReq *larkcore.ApiReq
	Body   *UpdateReserveReqBody `body:""`
}

type UpdateReserveRespData struct {
	Reserve *Reserve `json:"reserve,omitempty"` // 预约数据

	ReserveCorrectionCheckInfo *ReserveCorrectionCheckInfo `json:"reserve_correction_check_info,omitempty"` // 预约参数检查信息
}

type UpdateReserveResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *UpdateReserveRespData `json:"data"` // 业务数据
}

func (resp *UpdateReserveResp) Success() bool {
	return resp.Code == 0
}

type PatchReserveConfigReqBodyBuilder struct {
	scopeType     string // 1 代表层级，2 代表会议室
	scopeTypeFlag bool

	approvalConfig     *ApprovalConfig // 预定审批设置
	approvalConfigFlag bool

	timeConfig     *TimeConfig // 预定时间设置
	timeConfigFlag bool

	reserveScopeConfig     *ReserveScopeConfig // 预定范围设置
	reserveScopeConfigFlag bool
}

func NewPatchReserveConfigReqBodyBuilder() *PatchReserveConfigReqBodyBuilder {
	builder := &PatchReserveConfigReqBodyBuilder{}
	return builder
}

// 1 代表层级，2 代表会议室
//
//示例值：2
func (builder *PatchReserveConfigReqBodyBuilder) ScopeType(scopeType string) *PatchReserveConfigReqBodyBuilder {
	builder.scopeType = scopeType
	builder.scopeTypeFlag = true
	return builder
}

// 预定审批设置
//
//示例值：
func (builder *PatchReserveConfigReqBodyBuilder) ApprovalConfig(approvalConfig *ApprovalConfig) *PatchReserveConfigReqBodyBuilder {
	builder.approvalConfig = approvalConfig
	builder.approvalConfigFlag = true
	return builder
}

// 预定时间设置
//
//示例值：
func (builder *PatchReserveConfigReqBodyBuilder) TimeConfig(timeConfig *TimeConfig) *PatchReserveConfigReqBodyBuilder {
	builder.timeConfig = timeConfig
	builder.timeConfigFlag = true
	return builder
}

// 预定范围设置
//
//示例值：
func (builder *PatchReserveConfigReqBodyBuilder) ReserveScopeConfig(reserveScopeConfig *ReserveScopeConfig) *PatchReserveConfigReqBodyBuilder {
	builder.reserveScopeConfig = reserveScopeConfig
	builder.reserveScopeConfigFlag = true
	return builder
}

func (builder *PatchReserveConfigReqBodyBuilder) Build() *PatchReserveConfigReqBody {
	req := &PatchReserveConfigReqBody{}
	if builder.scopeTypeFlag {
		req.ScopeType = &builder.scopeType
	}
	if builder.approvalConfigFlag {
		req.ApprovalConfig = builder.approvalConfig
	}
	if builder.timeConfigFlag {
		req.TimeConfig = builder.timeConfig
	}
	if builder.reserveScopeConfigFlag {
		req.ReserveScopeConfig = builder.reserveScopeConfig
	}
	return req
}

type PatchReserveConfigPathReqBodyBuilder struct {
	scopeType              string
	scopeTypeFlag          bool
	approvalConfig         *ApprovalConfig
	approvalConfigFlag     bool
	timeConfig             *TimeConfig
	timeConfigFlag         bool
	reserveScopeConfig     *ReserveScopeConfig
	reserveScopeConfigFlag bool
}

func NewPatchReserveConfigPathReqBodyBuilder() *PatchReserveConfigPathReqBodyBuilder {
	builder := &PatchReserveConfigPathReqBodyBuilder{}
	return builder
}

// 1 代表层级，2 代表会议室
//
// 示例值：2
func (builder *PatchReserveConfigPathReqBodyBuilder) ScopeType(scopeType string) *PatchReserveConfigPathReqBodyBuilder {
	builder.scopeType = scopeType
	builder.scopeTypeFlag = true
	return builder
}

// 预定审批设置
//
// 示例值：
func (builder *PatchReserveConfigPathReqBodyBuilder) ApprovalConfig(approvalConfig *ApprovalConfig) *PatchReserveConfigPathReqBodyBuilder {
	builder.approvalConfig = approvalConfig
	builder.approvalConfigFlag = true
	return builder
}

// 预定时间设置
//
// 示例值：
func (builder *PatchReserveConfigPathReqBodyBuilder) TimeConfig(timeConfig *TimeConfig) *PatchReserveConfigPathReqBodyBuilder {
	builder.timeConfig = timeConfig
	builder.timeConfigFlag = true
	return builder
}

// 预定范围设置
//
// 示例值：
func (builder *PatchReserveConfigPathReqBodyBuilder) ReserveScopeConfig(reserveScopeConfig *ReserveScopeConfig) *PatchReserveConfigPathReqBodyBuilder {
	builder.reserveScopeConfig = reserveScopeConfig
	builder.reserveScopeConfigFlag = true
	return builder
}

func (builder *PatchReserveConfigPathReqBodyBuilder) Build() (*PatchReserveConfigReqBody, error) {
	req := &PatchReserveConfigReqBody{}
	if builder.scopeTypeFlag {
		req.ScopeType = &builder.scopeType
	}
	if builder.approvalConfigFlag {
		req.ApprovalConfig = builder.approvalConfig
	}
	if builder.timeConfigFlag {
		req.TimeConfig = builder.timeConfig
	}
	if builder.reserveScopeConfigFlag {
		req.ReserveScopeConfig = builder.reserveScopeConfig
	}
	return req, nil
}

type PatchReserveConfigReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *PatchReserveConfigReqBody
}

func NewPatchReserveConfigReqBuilder() *PatchReserveConfigReqBuilder {
	builder := &PatchReserveConfigReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议室或层级id
//
// 示例值：omm_3c5dd7e09bac0c1758fcf9511bd1a771
func (builder *PatchReserveConfigReqBuilder) ReserveConfigId(reserveConfigId string) *PatchReserveConfigReqBuilder {
	builder.apiReq.PathParams.Set("reserve_config_id", fmt.Sprint(reserveConfigId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *PatchReserveConfigReqBuilder) UserIdType(userIdType string) *PatchReserveConfigReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 更新会议室预定范围
func (builder *PatchReserveConfigReqBuilder) Body(body *PatchReserveConfigReqBody) *PatchReserveConfigReqBuilder {
	builder.body = body
	return builder
}

func (builder *PatchReserveConfigReqBuilder) Build() *PatchReserveConfigReq {
	req := &PatchReserveConfigReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type PatchReserveConfigReqBody struct {
	ScopeType *string `json:"scope_type,omitempty"` // 1 代表层级，2 代表会议室

	ApprovalConfig *ApprovalConfig `json:"approval_config,omitempty"` // 预定审批设置

	TimeConfig *TimeConfig `json:"time_config,omitempty"` // 预定时间设置

	ReserveScopeConfig *ReserveScopeConfig `json:"reserve_scope_config,omitempty"` // 预定范围设置
}

type PatchReserveConfigReq struct {
	apiReq *larkcore.ApiReq
	Body   *PatchReserveConfigReqBody `body:""`
}

type PatchReserveConfigResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchReserveConfigResp) Success() bool {
	return resp.Code == 0
}

type ReserveScopeReserveConfigReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewReserveScopeReserveConfigReqBuilder() *ReserveScopeReserveConfigReqBuilder {
	builder := &ReserveScopeReserveConfigReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议室或层级id
//
// 示例值：omm_3c5dd7e09bac0c1758fcf9511bd1a771
func (builder *ReserveScopeReserveConfigReqBuilder) ScopeId(scopeId string) *ReserveScopeReserveConfigReqBuilder {
	builder.apiReq.QueryParams.Set("scope_id", fmt.Sprint(scopeId))
	return builder
}

// 1 代表层级，2 代表会议室
//
// 示例值：2
func (builder *ReserveScopeReserveConfigReqBuilder) ScopeType(scopeType string) *ReserveScopeReserveConfigReqBuilder {
	builder.apiReq.QueryParams.Set("scope_type", fmt.Sprint(scopeType))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *ReserveScopeReserveConfigReqBuilder) UserIdType(userIdType string) *ReserveScopeReserveConfigReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *ReserveScopeReserveConfigReqBuilder) Build() *ReserveScopeReserveConfigReq {
	req := &ReserveScopeReserveConfigReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ReserveScopeReserveConfigReq struct {
	apiReq *larkcore.ApiReq
}

type ReserveScopeReserveConfigRespData struct {
	ApproveConfig *ApprovalConfig `json:"approve_config,omitempty"` // 预定审批设置

	TimeConfig *TimeConfig `json:"time_config,omitempty"` // 预定时间设置

	ReserveScopeConfig *ReserveScopeConfig `json:"reserve_scope_config,omitempty"` // 预定范围设置
}

type ReserveScopeReserveConfigResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ReserveScopeReserveConfigRespData `json:"data"` // 业务数据
}

func (resp *ReserveScopeReserveConfigResp) Success() bool {
	return resp.Code == 0
}

type GetReserveConfigAdminReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetReserveConfigAdminReqBuilder() *GetReserveConfigAdminReqBuilder {
	builder := &GetReserveConfigAdminReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议室或层级id
//
// 示例值：omm_3c5dd7e09bac0c1758fcf9511bd1a771
func (builder *GetReserveConfigAdminReqBuilder) ReserveConfigId(reserveConfigId string) *GetReserveConfigAdminReqBuilder {
	builder.apiReq.PathParams.Set("reserve_config_id", fmt.Sprint(reserveConfigId))
	return builder
}

// 会议室或层级
//
// 示例值：2
func (builder *GetReserveConfigAdminReqBuilder) ScopeType(scopeType int) *GetReserveConfigAdminReqBuilder {
	builder.apiReq.QueryParams.Set("scope_type", fmt.Sprint(scopeType))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *GetReserveConfigAdminReqBuilder) UserIdType(userIdType string) *GetReserveConfigAdminReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetReserveConfigAdminReqBuilder) Build() *GetReserveConfigAdminReq {
	req := &GetReserveConfigAdminReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetReserveConfigAdminReq struct {
	apiReq *larkcore.ApiReq
}

type GetReserveConfigAdminRespData struct {
	ReserveAdminConfig *ReserveAdminConfig `json:"reserve_admin_config,omitempty"` // 预定管理员/部门
}

type GetReserveConfigAdminResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetReserveConfigAdminRespData `json:"data"` // 业务数据
}

func (resp *GetReserveConfigAdminResp) Success() bool {
	return resp.Code == 0
}

type PatchReserveConfigAdminReqBodyBuilder struct {
	scopeType     int // 1代表层级，2代表会议室
	scopeTypeFlag bool

	reserveAdminConfig     *ReserveAdminConfig // 预定管理员或部门
	reserveAdminConfigFlag bool
}

func NewPatchReserveConfigAdminReqBodyBuilder() *PatchReserveConfigAdminReqBodyBuilder {
	builder := &PatchReserveConfigAdminReqBodyBuilder{}
	return builder
}

// 1代表层级，2代表会议室
//
//示例值：2
func (builder *PatchReserveConfigAdminReqBodyBuilder) ScopeType(scopeType int) *PatchReserveConfigAdminReqBodyBuilder {
	builder.scopeType = scopeType
	builder.scopeTypeFlag = true
	return builder
}

// 预定管理员或部门
//
//示例值：
func (builder *PatchReserveConfigAdminReqBodyBuilder) ReserveAdminConfig(reserveAdminConfig *ReserveAdminConfig) *PatchReserveConfigAdminReqBodyBuilder {
	builder.reserveAdminConfig = reserveAdminConfig
	builder.reserveAdminConfigFlag = true
	return builder
}

func (builder *PatchReserveConfigAdminReqBodyBuilder) Build() *PatchReserveConfigAdminReqBody {
	req := &PatchReserveConfigAdminReqBody{}
	if builder.scopeTypeFlag {
		req.ScopeType = &builder.scopeType
	}
	if builder.reserveAdminConfigFlag {
		req.ReserveAdminConfig = builder.reserveAdminConfig
	}
	return req
}

type PatchReserveConfigAdminPathReqBodyBuilder struct {
	scopeType              int
	scopeTypeFlag          bool
	reserveAdminConfig     *ReserveAdminConfig
	reserveAdminConfigFlag bool
}

func NewPatchReserveConfigAdminPathReqBodyBuilder() *PatchReserveConfigAdminPathReqBodyBuilder {
	builder := &PatchReserveConfigAdminPathReqBodyBuilder{}
	return builder
}

// 1代表层级，2代表会议室
//
// 示例值：2
func (builder *PatchReserveConfigAdminPathReqBodyBuilder) ScopeType(scopeType int) *PatchReserveConfigAdminPathReqBodyBuilder {
	builder.scopeType = scopeType
	builder.scopeTypeFlag = true
	return builder
}

// 预定管理员或部门
//
// 示例值：
func (builder *PatchReserveConfigAdminPathReqBodyBuilder) ReserveAdminConfig(reserveAdminConfig *ReserveAdminConfig) *PatchReserveConfigAdminPathReqBodyBuilder {
	builder.reserveAdminConfig = reserveAdminConfig
	builder.reserveAdminConfigFlag = true
	return builder
}

func (builder *PatchReserveConfigAdminPathReqBodyBuilder) Build() (*PatchReserveConfigAdminReqBody, error) {
	req := &PatchReserveConfigAdminReqBody{}
	if builder.scopeTypeFlag {
		req.ScopeType = &builder.scopeType
	}
	if builder.reserveAdminConfigFlag {
		req.ReserveAdminConfig = builder.reserveAdminConfig
	}
	return req, nil
}

type PatchReserveConfigAdminReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *PatchReserveConfigAdminReqBody
}

func NewPatchReserveConfigAdminReqBuilder() *PatchReserveConfigAdminReqBuilder {
	builder := &PatchReserveConfigAdminReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议室或层级id
//
// 示例值：omm_3c5dd7e09bac0c1758fcf9511bd1a771
func (builder *PatchReserveConfigAdminReqBuilder) ReserveConfigId(reserveConfigId string) *PatchReserveConfigAdminReqBuilder {
	builder.apiReq.PathParams.Set("reserve_config_id", fmt.Sprint(reserveConfigId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *PatchReserveConfigAdminReqBuilder) UserIdType(userIdType string) *PatchReserveConfigAdminReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *PatchReserveConfigAdminReqBuilder) Body(body *PatchReserveConfigAdminReqBody) *PatchReserveConfigAdminReqBuilder {
	builder.body = body
	return builder
}

func (builder *PatchReserveConfigAdminReqBuilder) Build() *PatchReserveConfigAdminReq {
	req := &PatchReserveConfigAdminReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type PatchReserveConfigAdminReqBody struct {
	ScopeType *int `json:"scope_type,omitempty"` // 1代表层级，2代表会议室

	ReserveAdminConfig *ReserveAdminConfig `json:"reserve_admin_config,omitempty"` // 预定管理员或部门
}

type PatchReserveConfigAdminReq struct {
	apiReq *larkcore.ApiReq
	Body   *PatchReserveConfigAdminReqBody `body:""`
}

type PatchReserveConfigAdminResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchReserveConfigAdminResp) Success() bool {
	return resp.Code == 0
}

type GetReserveConfigDisableInformReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetReserveConfigDisableInformReqBuilder() *GetReserveConfigDisableInformReqBuilder {
	builder := &GetReserveConfigDisableInformReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议室或层级ID
//
// 示例值：omm_3c5dd7e09bac0c1758fcf9511bd1a771
func (builder *GetReserveConfigDisableInformReqBuilder) ReserveConfigId(reserveConfigId string) *GetReserveConfigDisableInformReqBuilder {
	builder.apiReq.PathParams.Set("reserve_config_id", fmt.Sprint(reserveConfigId))
	return builder
}

// 1表示层级，2表示会议室
//
// 示例值：2
func (builder *GetReserveConfigDisableInformReqBuilder) ScopeType(scopeType int) *GetReserveConfigDisableInformReqBuilder {
	builder.apiReq.QueryParams.Set("scope_type", fmt.Sprint(scopeType))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *GetReserveConfigDisableInformReqBuilder) UserIdType(userIdType string) *GetReserveConfigDisableInformReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetReserveConfigDisableInformReqBuilder) Build() *GetReserveConfigDisableInformReq {
	req := &GetReserveConfigDisableInformReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetReserveConfigDisableInformReq struct {
	apiReq *larkcore.ApiReq
}

type GetReserveConfigDisableInformRespData struct {
	DisableInform *DisableInformConfig `json:"disable_inform,omitempty"` // 会议室禁用通知配置
}

type GetReserveConfigDisableInformResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetReserveConfigDisableInformRespData `json:"data"` // 业务数据
}

func (resp *GetReserveConfigDisableInformResp) Success() bool {
	return resp.Code == 0
}

type PatchReserveConfigDisableInformReqBodyBuilder struct {
	scopeType     int // 1表示会议室层级，2表示会议室
	scopeTypeFlag bool

	disableInform     *DisableInformConfig // 禁用通知配置
	disableInformFlag bool
}

func NewPatchReserveConfigDisableInformReqBodyBuilder() *PatchReserveConfigDisableInformReqBodyBuilder {
	builder := &PatchReserveConfigDisableInformReqBodyBuilder{}
	return builder
}

// 1表示会议室层级，2表示会议室
//
//示例值：2
func (builder *PatchReserveConfigDisableInformReqBodyBuilder) ScopeType(scopeType int) *PatchReserveConfigDisableInformReqBodyBuilder {
	builder.scopeType = scopeType
	builder.scopeTypeFlag = true
	return builder
}

// 禁用通知配置
//
//示例值：
func (builder *PatchReserveConfigDisableInformReqBodyBuilder) DisableInform(disableInform *DisableInformConfig) *PatchReserveConfigDisableInformReqBodyBuilder {
	builder.disableInform = disableInform
	builder.disableInformFlag = true
	return builder
}

func (builder *PatchReserveConfigDisableInformReqBodyBuilder) Build() *PatchReserveConfigDisableInformReqBody {
	req := &PatchReserveConfigDisableInformReqBody{}
	if builder.scopeTypeFlag {
		req.ScopeType = &builder.scopeType
	}
	if builder.disableInformFlag {
		req.DisableInform = builder.disableInform
	}
	return req
}

type PatchReserveConfigDisableInformPathReqBodyBuilder struct {
	scopeType         int
	scopeTypeFlag     bool
	disableInform     *DisableInformConfig
	disableInformFlag bool
}

func NewPatchReserveConfigDisableInformPathReqBodyBuilder() *PatchReserveConfigDisableInformPathReqBodyBuilder {
	builder := &PatchReserveConfigDisableInformPathReqBodyBuilder{}
	return builder
}

// 1表示会议室层级，2表示会议室
//
// 示例值：2
func (builder *PatchReserveConfigDisableInformPathReqBodyBuilder) ScopeType(scopeType int) *PatchReserveConfigDisableInformPathReqBodyBuilder {
	builder.scopeType = scopeType
	builder.scopeTypeFlag = true
	return builder
}

// 禁用通知配置
//
// 示例值：
func (builder *PatchReserveConfigDisableInformPathReqBodyBuilder) DisableInform(disableInform *DisableInformConfig) *PatchReserveConfigDisableInformPathReqBodyBuilder {
	builder.disableInform = disableInform
	builder.disableInformFlag = true
	return builder
}

func (builder *PatchReserveConfigDisableInformPathReqBodyBuilder) Build() (*PatchReserveConfigDisableInformReqBody, error) {
	req := &PatchReserveConfigDisableInformReqBody{}
	if builder.scopeTypeFlag {
		req.ScopeType = &builder.scopeType
	}
	if builder.disableInformFlag {
		req.DisableInform = builder.disableInform
	}
	return req, nil
}

type PatchReserveConfigDisableInformReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *PatchReserveConfigDisableInformReqBody
}

func NewPatchReserveConfigDisableInformReqBuilder() *PatchReserveConfigDisableInformReqBuilder {
	builder := &PatchReserveConfigDisableInformReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议室或层级ID
//
// 示例值：omm_3c5dd7e09bac0c1758fcf9511bd1a771
func (builder *PatchReserveConfigDisableInformReqBuilder) ReserveConfigId(reserveConfigId string) *PatchReserveConfigDisableInformReqBuilder {
	builder.apiReq.PathParams.Set("reserve_config_id", fmt.Sprint(reserveConfigId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *PatchReserveConfigDisableInformReqBuilder) UserIdType(userIdType string) *PatchReserveConfigDisableInformReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *PatchReserveConfigDisableInformReqBuilder) Body(body *PatchReserveConfigDisableInformReqBody) *PatchReserveConfigDisableInformReqBuilder {
	builder.body = body
	return builder
}

func (builder *PatchReserveConfigDisableInformReqBuilder) Build() *PatchReserveConfigDisableInformReq {
	req := &PatchReserveConfigDisableInformReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type PatchReserveConfigDisableInformReqBody struct {
	ScopeType *int `json:"scope_type,omitempty"` // 1表示会议室层级，2表示会议室

	DisableInform *DisableInformConfig `json:"disable_inform,omitempty"` // 禁用通知配置
}

type PatchReserveConfigDisableInformReq struct {
	apiReq *larkcore.ApiReq
	Body   *PatchReserveConfigDisableInformReqBody `body:""`
}

type PatchReserveConfigDisableInformResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchReserveConfigDisableInformResp) Success() bool {
	return resp.Code == 0
}

type GetReserveConfigFormReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetReserveConfigFormReqBuilder() *GetReserveConfigFormReqBuilder {
	builder := &GetReserveConfigFormReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议室或层级id
//
// 示例值：omm_3c5dd7e09bac0c1758fcf9511bd1a771
func (builder *GetReserveConfigFormReqBuilder) ReserveConfigId(reserveConfigId string) *GetReserveConfigFormReqBuilder {
	builder.apiReq.PathParams.Set("reserve_config_id", fmt.Sprint(reserveConfigId))
	return builder
}

// 1代表层级，2代表会议室
//
// 示例值：2
func (builder *GetReserveConfigFormReqBuilder) ScopeType(scopeType int) *GetReserveConfigFormReqBuilder {
	builder.apiReq.QueryParams.Set("scope_type", fmt.Sprint(scopeType))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *GetReserveConfigFormReqBuilder) UserIdType(userIdType string) *GetReserveConfigFormReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetReserveConfigFormReqBuilder) Build() *GetReserveConfigFormReq {
	req := &GetReserveConfigFormReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetReserveConfigFormReq struct {
	apiReq *larkcore.ApiReq
}

type GetReserveConfigFormRespData struct {
	ReserveFormConfig *ReserveFormConfig `json:"reserve_form_config,omitempty"` // 预定表单
}

type GetReserveConfigFormResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetReserveConfigFormRespData `json:"data"` // 业务数据
}

func (resp *GetReserveConfigFormResp) Success() bool {
	return resp.Code == 0
}

type PatchReserveConfigFormReqBodyBuilder struct {
	scopeType     int // 1代表层级，2代表会议室
	scopeTypeFlag bool

	reserveFormConfig     *ReserveFormConfig // 预定表单设置
	reserveFormConfigFlag bool
}

func NewPatchReserveConfigFormReqBodyBuilder() *PatchReserveConfigFormReqBodyBuilder {
	builder := &PatchReserveConfigFormReqBodyBuilder{}
	return builder
}

// 1代表层级，2代表会议室
//
//示例值：2
func (builder *PatchReserveConfigFormReqBodyBuilder) ScopeType(scopeType int) *PatchReserveConfigFormReqBodyBuilder {
	builder.scopeType = scopeType
	builder.scopeTypeFlag = true
	return builder
}

// 预定表单设置
//
//示例值：
func (builder *PatchReserveConfigFormReqBodyBuilder) ReserveFormConfig(reserveFormConfig *ReserveFormConfig) *PatchReserveConfigFormReqBodyBuilder {
	builder.reserveFormConfig = reserveFormConfig
	builder.reserveFormConfigFlag = true
	return builder
}

func (builder *PatchReserveConfigFormReqBodyBuilder) Build() *PatchReserveConfigFormReqBody {
	req := &PatchReserveConfigFormReqBody{}
	if builder.scopeTypeFlag {
		req.ScopeType = &builder.scopeType
	}
	if builder.reserveFormConfigFlag {
		req.ReserveFormConfig = builder.reserveFormConfig
	}
	return req
}

type PatchReserveConfigFormPathReqBodyBuilder struct {
	scopeType             int
	scopeTypeFlag         bool
	reserveFormConfig     *ReserveFormConfig
	reserveFormConfigFlag bool
}

func NewPatchReserveConfigFormPathReqBodyBuilder() *PatchReserveConfigFormPathReqBodyBuilder {
	builder := &PatchReserveConfigFormPathReqBodyBuilder{}
	return builder
}

// 1代表层级，2代表会议室
//
// 示例值：2
func (builder *PatchReserveConfigFormPathReqBodyBuilder) ScopeType(scopeType int) *PatchReserveConfigFormPathReqBodyBuilder {
	builder.scopeType = scopeType
	builder.scopeTypeFlag = true
	return builder
}

// 预定表单设置
//
// 示例值：
func (builder *PatchReserveConfigFormPathReqBodyBuilder) ReserveFormConfig(reserveFormConfig *ReserveFormConfig) *PatchReserveConfigFormPathReqBodyBuilder {
	builder.reserveFormConfig = reserveFormConfig
	builder.reserveFormConfigFlag = true
	return builder
}

func (builder *PatchReserveConfigFormPathReqBodyBuilder) Build() (*PatchReserveConfigFormReqBody, error) {
	req := &PatchReserveConfigFormReqBody{}
	if builder.scopeTypeFlag {
		req.ScopeType = &builder.scopeType
	}
	if builder.reserveFormConfigFlag {
		req.ReserveFormConfig = builder.reserveFormConfig
	}
	return req, nil
}

type PatchReserveConfigFormReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *PatchReserveConfigFormReqBody
}

func NewPatchReserveConfigFormReqBuilder() *PatchReserveConfigFormReqBuilder {
	builder := &PatchReserveConfigFormReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议室或层级id
//
// 示例值：omm_3c5dd7e09bac0c1758fcf9511bd1a771
func (builder *PatchReserveConfigFormReqBuilder) ReserveConfigId(reserveConfigId string) *PatchReserveConfigFormReqBuilder {
	builder.apiReq.PathParams.Set("reserve_config_id", fmt.Sprint(reserveConfigId))
	return builder
}

// 此次调用中使用的用户ID的类型
//
// 示例值：
func (builder *PatchReserveConfigFormReqBuilder) UserIdType(userIdType string) *PatchReserveConfigFormReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *PatchReserveConfigFormReqBuilder) Body(body *PatchReserveConfigFormReqBody) *PatchReserveConfigFormReqBuilder {
	builder.body = body
	return builder
}

func (builder *PatchReserveConfigFormReqBuilder) Build() *PatchReserveConfigFormReq {
	req := &PatchReserveConfigFormReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type PatchReserveConfigFormReqBody struct {
	ScopeType *int `json:"scope_type,omitempty"` // 1代表层级，2代表会议室

	ReserveFormConfig *ReserveFormConfig `json:"reserve_form_config,omitempty"` // 预定表单设置
}

type PatchReserveConfigFormReq struct {
	apiReq *larkcore.ApiReq
	Body   *PatchReserveConfigFormReqBody `body:""`
}

type PatchReserveConfigFormResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchReserveConfigFormResp) Success() bool {
	return resp.Code == 0
}

type GetResourceReservationListReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewGetResourceReservationListReqBuilder() *GetResourceReservationListReqBuilder {
	builder := &GetResourceReservationListReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *GetResourceReservationListReqBuilder) Limit(limit int) *GetResourceReservationListReqBuilder {
	builder.limit = limit
	return builder
}

// 层级id
//
// 示例值：omb_57c9cc7d9a81e27e54c8fabfd02759e7
func (builder *GetResourceReservationListReqBuilder) RoomLevelId(roomLevelId string) *GetResourceReservationListReqBuilder {
	builder.apiReq.QueryParams.Set("room_level_id", fmt.Sprint(roomLevelId))
	return builder
}

// 是否展示会议主题
//
// 示例值：true
func (builder *GetResourceReservationListReqBuilder) NeedTopic(needTopic bool) *GetResourceReservationListReqBuilder {
	builder.apiReq.QueryParams.Set("need_topic", fmt.Sprint(needTopic))
	return builder
}

// 查询开始时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *GetResourceReservationListReqBuilder) StartTime(startTime string) *GetResourceReservationListReqBuilder {
	builder.apiReq.QueryParams.Set("start_time", fmt.Sprint(startTime))
	return builder
}

// 查询结束时间（unix时间，单位sec）
//
// 示例值：1655276858
func (builder *GetResourceReservationListReqBuilder) EndTime(endTime string) *GetResourceReservationListReqBuilder {
	builder.apiReq.QueryParams.Set("end_time", fmt.Sprint(endTime))
	return builder
}

// 待筛选的会议室id列表
//
// 示例值：
func (builder *GetResourceReservationListReqBuilder) RoomIds(roomIds []string) *GetResourceReservationListReqBuilder {
	for _, v := range roomIds {
		builder.apiReq.QueryParams.Add("room_ids", fmt.Sprint(v))
	}
	return builder
}

// 若为true表示导出room_ids范围外的会议室，默认为false
//
// 示例值：false
func (builder *GetResourceReservationListReqBuilder) IsExclude(isExclude bool) *GetResourceReservationListReqBuilder {
	builder.apiReq.QueryParams.Set("is_exclude", fmt.Sprint(isExclude))
	return builder
}

// 分页尺寸大小
//
// 示例值：20
func (builder *GetResourceReservationListReqBuilder) PageSize(pageSize int) *GetResourceReservationListReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记,第一次请求不填,表示从头开始遍历.下次遍历可采用该 page_token获取查询结果
//
// 示例值：
func (builder *GetResourceReservationListReqBuilder) PageToken(pageToken string) *GetResourceReservationListReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

func (builder *GetResourceReservationListReqBuilder) Build() *GetResourceReservationListReq {
	req := &GetResourceReservationListReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetResourceReservationListReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type GetResourceReservationListRespData struct {
	RoomReservationList []*RoomMeetingReservation `json:"room_reservation_list,omitempty"` // 会议室预定列表

	PageToken *string `json:"page_token,omitempty"` // 下一页分页的token，下次请求时传入

	HasMore *bool `json:"has_more,omitempty"` // 是否还有数据
}

type GetResourceReservationListResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetResourceReservationListRespData `json:"data"` // 业务数据
}

func (resp *GetResourceReservationListResp) Success() bool {
	return resp.Code == 0
}

type CreateRoomReqBuilder struct {
	apiReq *larkcore.ApiReq
	room   *Room
}

func NewCreateRoomReqBuilder() *CreateRoomReqBuilder {
	builder := &CreateRoomReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：open_id
func (builder *CreateRoomReqBuilder) UserIdType(userIdType string) *CreateRoomReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 该接口用于创建会议室
func (builder *CreateRoomReqBuilder) Room(room *Room) *CreateRoomReqBuilder {
	builder.room = room
	return builder
}

func (builder *CreateRoomReqBuilder) Build() *CreateRoomReq {
	req := &CreateRoomReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.room
	return req
}

type CreateRoomReq struct {
	apiReq *larkcore.ApiReq
	Room   *Room `body:""`
}

type CreateRoomRespData struct {
	Room *Room `json:"room,omitempty"` // 会议室详情
}

type CreateRoomResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateRoomRespData `json:"data"` // 业务数据
}

func (resp *CreateRoomResp) Success() bool {
	return resp.Code == 0
}

type DeleteRoomReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewDeleteRoomReqBuilder() *DeleteRoomReqBuilder {
	builder := &DeleteRoomReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议室ID
//
// 示例值：omm_4de32cf10a4358788ff4e09e37ebbf9b
func (builder *DeleteRoomReqBuilder) RoomId(roomId string) *DeleteRoomReqBuilder {
	builder.apiReq.PathParams.Set("room_id", fmt.Sprint(roomId))
	return builder
}

func (builder *DeleteRoomReqBuilder) Build() *DeleteRoomReq {
	req := &DeleteRoomReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type DeleteRoomReq struct {
	apiReq *larkcore.ApiReq
}

type DeleteRoomResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DeleteRoomResp) Success() bool {
	return resp.Code == 0
}

type GetRoomReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetRoomReqBuilder() *GetRoomReqBuilder {
	builder := &GetRoomReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议室ID
//
// 示例值：omm_4de32cf10a4358788ff4e09e37ebbf9c
func (builder *GetRoomReqBuilder) RoomId(roomId string) *GetRoomReqBuilder {
	builder.apiReq.PathParams.Set("room_id", fmt.Sprint(roomId))
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *GetRoomReqBuilder) UserIdType(userIdType string) *GetRoomReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetRoomReqBuilder) Build() *GetRoomReq {
	req := &GetRoomReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetRoomReq struct {
	apiReq *larkcore.ApiReq
}

type GetRoomRespData struct {
	Room *Room `json:"room,omitempty"` // 会议室详情
}

type GetRoomResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetRoomRespData `json:"data"` // 业务数据
}

func (resp *GetRoomResp) Success() bool {
	return resp.Code == 0
}

type ListRoomReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListRoomReqBuilder() *ListRoomReqBuilder {
	builder := &ListRoomReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListRoomReqBuilder) Limit(limit int) *ListRoomReqBuilder {
	builder.limit = limit
	return builder
}

// 分页大小
//
// 示例值：10
func (builder *ListRoomReqBuilder) PageSize(pageSize int) *ListRoomReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果
//
// 示例值：10
func (builder *ListRoomReqBuilder) PageToken(pageToken string) *ListRoomReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

// 层级ID，当需要获取租户下会议室列表时，room_level_id可传空
//
// 示例值：omb_4ad1a2c7a2fbc5fc9570f38456931293
func (builder *ListRoomReqBuilder) RoomLevelId(roomLevelId string) *ListRoomReqBuilder {
	builder.apiReq.QueryParams.Set("room_level_id", fmt.Sprint(roomLevelId))
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *ListRoomReqBuilder) UserIdType(userIdType string) *ListRoomReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *ListRoomReqBuilder) Build() *ListRoomReq {
	req := &ListRoomReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListRoomReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListRoomRespData struct {
	Rooms []*Room `json:"rooms,omitempty"` // 会议室列表

	PageToken *string `json:"page_token,omitempty"` // 下一页分页的token，下次请求时传入

	HasMore *bool `json:"has_more,omitempty"` // 是否还有数据
}

type ListRoomResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListRoomRespData `json:"data"` // 业务数据
}

func (resp *ListRoomResp) Success() bool {
	return resp.Code == 0
}

type MgetRoomReqBodyBuilder struct {
	roomIds     []string // 会议室id列表
	roomIdsFlag bool
}

func NewMgetRoomReqBodyBuilder() *MgetRoomReqBodyBuilder {
	builder := &MgetRoomReqBodyBuilder{}
	return builder
}

// 会议室id列表
//
//示例值：["omm_4de32cf10a4358788ff4e09e37ebbf9b","omm_3c5dd7e09bac0c1758fcf9511bd1a771"]
func (builder *MgetRoomReqBodyBuilder) RoomIds(roomIds []string) *MgetRoomReqBodyBuilder {
	builder.roomIds = roomIds
	builder.roomIdsFlag = true
	return builder
}

func (builder *MgetRoomReqBodyBuilder) Build() *MgetRoomReqBody {
	req := &MgetRoomReqBody{}
	if builder.roomIdsFlag {
		req.RoomIds = builder.roomIds
	}
	return req
}

type MgetRoomPathReqBodyBuilder struct {
	roomIds     []string
	roomIdsFlag bool
}

func NewMgetRoomPathReqBodyBuilder() *MgetRoomPathReqBodyBuilder {
	builder := &MgetRoomPathReqBodyBuilder{}
	return builder
}

// 会议室id列表
//
// 示例值：["omm_4de32cf10a4358788ff4e09e37ebbf9b","omm_3c5dd7e09bac0c1758fcf9511bd1a771"]
func (builder *MgetRoomPathReqBodyBuilder) RoomIds(roomIds []string) *MgetRoomPathReqBodyBuilder {
	builder.roomIds = roomIds
	builder.roomIdsFlag = true
	return builder
}

func (builder *MgetRoomPathReqBodyBuilder) Build() (*MgetRoomReqBody, error) {
	req := &MgetRoomReqBody{}
	if builder.roomIdsFlag {
		req.RoomIds = builder.roomIds
	}
	return req, nil
}

type MgetRoomReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *MgetRoomReqBody
}

func NewMgetRoomReqBuilder() *MgetRoomReqBuilder {
	builder := &MgetRoomReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *MgetRoomReqBuilder) UserIdType(userIdType string) *MgetRoomReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 该接口可以使用会议室ID批量查询会议室详情
func (builder *MgetRoomReqBuilder) Body(body *MgetRoomReqBody) *MgetRoomReqBuilder {
	builder.body = body
	return builder
}

func (builder *MgetRoomReqBuilder) Build() *MgetRoomReq {
	req := &MgetRoomReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type MgetRoomReqBody struct {
	RoomIds []string `json:"room_ids,omitempty"` // 会议室id列表
}

type MgetRoomReq struct {
	apiReq *larkcore.ApiReq
	Body   *MgetRoomReqBody `body:""`
}

type MgetRoomRespData struct {
	Items []*Room `json:"items,omitempty"` // 会议室列表
}

type MgetRoomResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *MgetRoomRespData `json:"data"` // 业务数据
}

func (resp *MgetRoomResp) Success() bool {
	return resp.Code == 0
}

type PatchRoomReqBuilder struct {
	apiReq *larkcore.ApiReq
	room   *Room
}

func NewPatchRoomReqBuilder() *PatchRoomReqBuilder {
	builder := &PatchRoomReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 会议室ID
//
// 示例值：omm_4de32cf10a4358788ff4e09e37ebbf9b
func (builder *PatchRoomReqBuilder) RoomId(roomId string) *PatchRoomReqBuilder {
	builder.apiReq.PathParams.Set("room_id", fmt.Sprint(roomId))
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：open_id
func (builder *PatchRoomReqBuilder) UserIdType(userIdType string) *PatchRoomReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 该接口可以用来更新某个会议室的信息
func (builder *PatchRoomReqBuilder) Room(room *Room) *PatchRoomReqBuilder {
	builder.room = room
	return builder
}

func (builder *PatchRoomReqBuilder) Build() *PatchRoomReq {
	req := &PatchRoomReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.room
	return req
}

type PatchRoomReq struct {
	apiReq *larkcore.ApiReq
	Room   *Room `body:""`
}

type PatchRoomResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchRoomResp) Success() bool {
	return resp.Code == 0
}

type SearchRoomReqBodyBuilder struct {
	customRoomIds     []string // 用于查询指定会议室的租户自定义会议室ID列表，优先使用该字段进行查询
	customRoomIdsFlag bool

	keyword     string // 会议室搜索关键词（当custom_room_ids为空时，使用该字段进行查询）
	keywordFlag bool

	roomLevelId     string // 在该会议室层级下进行搜索（当custom_room_ids为空时，使用该字段进行查询）
	roomLevelIdFlag bool

	searchLevelName     bool // 搜索会议室是否包括层级名称（当custom_room_ids为空时，使用该字段进行查询）
	searchLevelNameFlag bool

	pageSize     int // 分页大小，该值默认为10，最大为100（当custom_room_ids为空时，使用该字段进行查询）
	pageSizeFlag bool

	pageToken     string // 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果（当custom_room_ids为空时，使用该字段进行查询）
	pageTokenFlag bool
}

func NewSearchRoomReqBodyBuilder() *SearchRoomReqBodyBuilder {
	builder := &SearchRoomReqBodyBuilder{}
	return builder
}

// 用于查询指定会议室的租户自定义会议室ID列表，优先使用该字段进行查询
//
//示例值：["10001"]
func (builder *SearchRoomReqBodyBuilder) CustomRoomIds(customRoomIds []string) *SearchRoomReqBodyBuilder {
	builder.customRoomIds = customRoomIds
	builder.customRoomIdsFlag = true
	return builder
}

// 会议室搜索关键词（当custom_room_ids为空时，使用该字段进行查询）
//
//示例值：测试会议室
func (builder *SearchRoomReqBodyBuilder) Keyword(keyword string) *SearchRoomReqBodyBuilder {
	builder.keyword = keyword
	builder.keywordFlag = true
	return builder
}

// 在该会议室层级下进行搜索（当custom_room_ids为空时，使用该字段进行查询）
//
//示例值：omb_4ad1a2c7a2fbc5fc9570f38456931293
func (builder *SearchRoomReqBodyBuilder) RoomLevelId(roomLevelId string) *SearchRoomReqBodyBuilder {
	builder.roomLevelId = roomLevelId
	builder.roomLevelIdFlag = true
	return builder
}

// 搜索会议室是否包括层级名称（当custom_room_ids为空时，使用该字段进行查询）
//
//示例值：true
func (builder *SearchRoomReqBodyBuilder) SearchLevelName(searchLevelName bool) *SearchRoomReqBodyBuilder {
	builder.searchLevelName = searchLevelName
	builder.searchLevelNameFlag = true
	return builder
}

// 分页大小，该值默认为10，最大为100（当custom_room_ids为空时，使用该字段进行查询）
//
//示例值：10
func (builder *SearchRoomReqBodyBuilder) PageSize(pageSize int) *SearchRoomReqBodyBuilder {
	builder.pageSize = pageSize
	builder.pageSizeFlag = true
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果（当custom_room_ids为空时，使用该字段进行查询）
//
//示例值：0
func (builder *SearchRoomReqBodyBuilder) PageToken(pageToken string) *SearchRoomReqBodyBuilder {
	builder.pageToken = pageToken
	builder.pageTokenFlag = true
	return builder
}

func (builder *SearchRoomReqBodyBuilder) Build() *SearchRoomReqBody {
	req := &SearchRoomReqBody{}
	if builder.customRoomIdsFlag {
		req.CustomRoomIds = builder.customRoomIds
	}
	if builder.keywordFlag {
		req.Keyword = &builder.keyword
	}
	if builder.roomLevelIdFlag {
		req.RoomLevelId = &builder.roomLevelId
	}
	if builder.searchLevelNameFlag {
		req.SearchLevelName = &builder.searchLevelName
	}
	if builder.pageSizeFlag {
		req.PageSize = &builder.pageSize
	}
	if builder.pageTokenFlag {
		req.PageToken = &builder.pageToken
	}
	return req
}

type SearchRoomPathReqBodyBuilder struct {
	customRoomIds       []string
	customRoomIdsFlag   bool
	keyword             string
	keywordFlag         bool
	roomLevelId         string
	roomLevelIdFlag     bool
	searchLevelName     bool
	searchLevelNameFlag bool
	pageSize            int
	pageSizeFlag        bool
	pageToken           string
	pageTokenFlag       bool
}

func NewSearchRoomPathReqBodyBuilder() *SearchRoomPathReqBodyBuilder {
	builder := &SearchRoomPathReqBodyBuilder{}
	return builder
}

// 用于查询指定会议室的租户自定义会议室ID列表，优先使用该字段进行查询
//
// 示例值：["10001"]
func (builder *SearchRoomPathReqBodyBuilder) CustomRoomIds(customRoomIds []string) *SearchRoomPathReqBodyBuilder {
	builder.customRoomIds = customRoomIds
	builder.customRoomIdsFlag = true
	return builder
}

// 会议室搜索关键词（当custom_room_ids为空时，使用该字段进行查询）
//
// 示例值：测试会议室
func (builder *SearchRoomPathReqBodyBuilder) Keyword(keyword string) *SearchRoomPathReqBodyBuilder {
	builder.keyword = keyword
	builder.keywordFlag = true
	return builder
}

// 在该会议室层级下进行搜索（当custom_room_ids为空时，使用该字段进行查询）
//
// 示例值：omb_4ad1a2c7a2fbc5fc9570f38456931293
func (builder *SearchRoomPathReqBodyBuilder) RoomLevelId(roomLevelId string) *SearchRoomPathReqBodyBuilder {
	builder.roomLevelId = roomLevelId
	builder.roomLevelIdFlag = true
	return builder
}

// 搜索会议室是否包括层级名称（当custom_room_ids为空时，使用该字段进行查询）
//
// 示例值：true
func (builder *SearchRoomPathReqBodyBuilder) SearchLevelName(searchLevelName bool) *SearchRoomPathReqBodyBuilder {
	builder.searchLevelName = searchLevelName
	builder.searchLevelNameFlag = true
	return builder
}

// 分页大小，该值默认为10，最大为100（当custom_room_ids为空时，使用该字段进行查询）
//
// 示例值：10
func (builder *SearchRoomPathReqBodyBuilder) PageSize(pageSize int) *SearchRoomPathReqBodyBuilder {
	builder.pageSize = pageSize
	builder.pageSizeFlag = true
	return builder
}

// 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果（当custom_room_ids为空时，使用该字段进行查询）
//
// 示例值：0
func (builder *SearchRoomPathReqBodyBuilder) PageToken(pageToken string) *SearchRoomPathReqBodyBuilder {
	builder.pageToken = pageToken
	builder.pageTokenFlag = true
	return builder
}

func (builder *SearchRoomPathReqBodyBuilder) Build() (*SearchRoomReqBody, error) {
	req := &SearchRoomReqBody{}
	if builder.customRoomIdsFlag {
		req.CustomRoomIds = builder.customRoomIds
	}
	if builder.keywordFlag {
		req.Keyword = &builder.keyword
	}
	if builder.roomLevelIdFlag {
		req.RoomLevelId = &builder.roomLevelId
	}
	if builder.searchLevelNameFlag {
		req.SearchLevelName = &builder.searchLevelName
	}
	if builder.pageSizeFlag {
		req.PageSize = &builder.pageSize
	}
	if builder.pageTokenFlag {
		req.PageToken = &builder.pageToken
	}
	return req, nil
}

type SearchRoomReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SearchRoomReqBody
}

func NewSearchRoomReqBuilder() *SearchRoomReqBuilder {
	builder := &SearchRoomReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *SearchRoomReqBuilder) UserIdType(userIdType string) *SearchRoomReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 该接口可以用来搜索会议室，支持使用关键词进行搜索，也支持使用自定义会议室ID进行查询
func (builder *SearchRoomReqBuilder) Body(body *SearchRoomReqBody) *SearchRoomReqBuilder {
	builder.body = body
	return builder
}

func (builder *SearchRoomReqBuilder) Build() *SearchRoomReq {
	req := &SearchRoomReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SearchRoomReqBody struct {
	CustomRoomIds []string `json:"custom_room_ids,omitempty"` // 用于查询指定会议室的租户自定义会议室ID列表，优先使用该字段进行查询

	Keyword *string `json:"keyword,omitempty"` // 会议室搜索关键词（当custom_room_ids为空时，使用该字段进行查询）

	RoomLevelId *string `json:"room_level_id,omitempty"` // 在该会议室层级下进行搜索（当custom_room_ids为空时，使用该字段进行查询）

	SearchLevelName *bool `json:"search_level_name,omitempty"` // 搜索会议室是否包括层级名称（当custom_room_ids为空时，使用该字段进行查询）

	PageSize *int `json:"page_size,omitempty"` // 分页大小，该值默认为10，最大为100（当custom_room_ids为空时，使用该字段进行查询）

	PageToken *string `json:"page_token,omitempty"` // 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果（当custom_room_ids为空时，使用该字段进行查询）
}

type SearchRoomReq struct {
	apiReq *larkcore.ApiReq
	Body   *SearchRoomReqBody `body:""`
}

type SearchRoomRespData struct {
	Rooms []*Room `json:"rooms,omitempty"` // 会议室列表

	PageToken *string `json:"page_token,omitempty"` // 下一页分页的token，下次请求时传入

	HasMore *bool `json:"has_more,omitempty"` // 是否还有数据
}

type SearchRoomResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchRoomRespData `json:"data"` // 业务数据
}

func (resp *SearchRoomResp) Success() bool {
	return resp.Code == 0
}

type QueryRoomConfigReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewQueryRoomConfigReqBuilder() *QueryRoomConfigReqBuilder {
	builder := &QueryRoomConfigReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 查询节点范围
//
// 示例值：5
func (builder *QueryRoomConfigReqBuilder) Scope(scope int) *QueryRoomConfigReqBuilder {
	builder.apiReq.QueryParams.Set("scope", fmt.Sprint(scope))
	return builder
}

// 国家/地区ID scope为2，3时需要此参数
//
// 示例值：1
func (builder *QueryRoomConfigReqBuilder) CountryId(countryId string) *QueryRoomConfigReqBuilder {
	builder.apiReq.QueryParams.Set("country_id", fmt.Sprint(countryId))
	return builder
}

// 城市ID scope为3时需要此参数
//
// 示例值：2
func (builder *QueryRoomConfigReqBuilder) DistrictId(districtId string) *QueryRoomConfigReqBuilder {
	builder.apiReq.QueryParams.Set("district_id", fmt.Sprint(districtId))
	return builder
}

// 建筑ID scope为4，5时需要此参数
//
// 示例值：3
func (builder *QueryRoomConfigReqBuilder) BuildingId(buildingId string) *QueryRoomConfigReqBuilder {
	builder.apiReq.QueryParams.Set("building_id", fmt.Sprint(buildingId))
	return builder
}

// 楼层 scope为5时需要此参数
//
// 示例值：4
func (builder *QueryRoomConfigReqBuilder) FloorName(floorName string) *QueryRoomConfigReqBuilder {
	builder.apiReq.QueryParams.Set("floor_name", fmt.Sprint(floorName))
	return builder
}

// 会议室ID scope为6时需要此参数
//
// 示例值：6383786266263
func (builder *QueryRoomConfigReqBuilder) RoomId(roomId string) *QueryRoomConfigReqBuilder {
	builder.apiReq.QueryParams.Set("room_id", fmt.Sprint(roomId))
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *QueryRoomConfigReqBuilder) UserIdType(userIdType string) *QueryRoomConfigReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *QueryRoomConfigReqBuilder) Build() *QueryRoomConfigReq {
	req := &QueryRoomConfigReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type QueryRoomConfigReq struct {
	apiReq *larkcore.ApiReq
}

type QueryRoomConfigRespData struct {
	RoomBackground *string `json:"room_background,omitempty"` // 飞书会议室背景图

	DisplayBackground *string `json:"display_background,omitempty"` // 飞书签到板背景图

	DigitalSignage *RoomDigitalSignage `json:"digital_signage,omitempty"` // 飞书会议室数字标牌

	RoomBoxDigitalSignage *RoomDigitalSignage `json:"room_box_digital_signage,omitempty"` // 飞书投屏盒子数字标牌

	RoomStatus *RoomStatus `json:"room_status,omitempty"` // 会议室状态
}

type QueryRoomConfigResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *QueryRoomConfigRespData `json:"data"` // 业务数据
}

func (resp *QueryRoomConfigResp) Success() bool {
	return resp.Code == 0
}

type SetRoomConfigReqBodyBuilder struct {
	scope     int // 设置节点范围
	scopeFlag bool

	countryId     string // 国家/地区ID scope为2，3时需要此参数
	countryIdFlag bool

	districtId     string // 城市ID scope为3时需要此参数
	districtIdFlag bool

	buildingId     string // 建筑ID scope为4，5时需要此参数
	buildingIdFlag bool

	floorName     string // 楼层 scope为5时需要此参数
	floorNameFlag bool

	roomId     string // 会议室ID scope为6时需要此参数
	roomIdFlag bool

	roomConfig     *RoomConfig // 会议室设置
	roomConfigFlag bool
}

func NewSetRoomConfigReqBodyBuilder() *SetRoomConfigReqBodyBuilder {
	builder := &SetRoomConfigReqBodyBuilder{}
	return builder
}

// 设置节点范围
//
//示例值：5
func (builder *SetRoomConfigReqBodyBuilder) Scope(scope int) *SetRoomConfigReqBodyBuilder {
	builder.scope = scope
	builder.scopeFlag = true
	return builder
}

// 国家/地区ID scope为2，3时需要此参数
//
//示例值：1
func (builder *SetRoomConfigReqBodyBuilder) CountryId(countryId string) *SetRoomConfigReqBodyBuilder {
	builder.countryId = countryId
	builder.countryIdFlag = true
	return builder
}

// 城市ID scope为3时需要此参数
//
//示例值：2
func (builder *SetRoomConfigReqBodyBuilder) DistrictId(districtId string) *SetRoomConfigReqBodyBuilder {
	builder.districtId = districtId
	builder.districtIdFlag = true
	return builder
}

// 建筑ID scope为4，5时需要此参数
//
//示例值：3
func (builder *SetRoomConfigReqBodyBuilder) BuildingId(buildingId string) *SetRoomConfigReqBodyBuilder {
	builder.buildingId = buildingId
	builder.buildingIdFlag = true
	return builder
}

// 楼层 scope为5时需要此参数
//
//示例值：4
func (builder *SetRoomConfigReqBodyBuilder) FloorName(floorName string) *SetRoomConfigReqBodyBuilder {
	builder.floorName = floorName
	builder.floorNameFlag = true
	return builder
}

// 会议室ID scope为6时需要此参数
//
//示例值：67687262867363
func (builder *SetRoomConfigReqBodyBuilder) RoomId(roomId string) *SetRoomConfigReqBodyBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 会议室设置
//
//示例值：
func (builder *SetRoomConfigReqBodyBuilder) RoomConfig(roomConfig *RoomConfig) *SetRoomConfigReqBodyBuilder {
	builder.roomConfig = roomConfig
	builder.roomConfigFlag = true
	return builder
}

func (builder *SetRoomConfigReqBodyBuilder) Build() *SetRoomConfigReqBody {
	req := &SetRoomConfigReqBody{}
	if builder.scopeFlag {
		req.Scope = &builder.scope
	}
	if builder.countryIdFlag {
		req.CountryId = &builder.countryId
	}
	if builder.districtIdFlag {
		req.DistrictId = &builder.districtId
	}
	if builder.buildingIdFlag {
		req.BuildingId = &builder.buildingId
	}
	if builder.floorNameFlag {
		req.FloorName = &builder.floorName
	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId
	}
	if builder.roomConfigFlag {
		req.RoomConfig = builder.roomConfig
	}
	return req
}

type SetRoomConfigPathReqBodyBuilder struct {
	scope          int
	scopeFlag      bool
	countryId      string
	countryIdFlag  bool
	districtId     string
	districtIdFlag bool
	buildingId     string
	buildingIdFlag bool
	floorName      string
	floorNameFlag  bool
	roomId         string
	roomIdFlag     bool
	roomConfig     *RoomConfig
	roomConfigFlag bool
}

func NewSetRoomConfigPathReqBodyBuilder() *SetRoomConfigPathReqBodyBuilder {
	builder := &SetRoomConfigPathReqBodyBuilder{}
	return builder
}

// 设置节点范围
//
// 示例值：5
func (builder *SetRoomConfigPathReqBodyBuilder) Scope(scope int) *SetRoomConfigPathReqBodyBuilder {
	builder.scope = scope
	builder.scopeFlag = true
	return builder
}

// 国家/地区ID scope为2，3时需要此参数
//
// 示例值：1
func (builder *SetRoomConfigPathReqBodyBuilder) CountryId(countryId string) *SetRoomConfigPathReqBodyBuilder {
	builder.countryId = countryId
	builder.countryIdFlag = true
	return builder
}

// 城市ID scope为3时需要此参数
//
// 示例值：2
func (builder *SetRoomConfigPathReqBodyBuilder) DistrictId(districtId string) *SetRoomConfigPathReqBodyBuilder {
	builder.districtId = districtId
	builder.districtIdFlag = true
	return builder
}

// 建筑ID scope为4，5时需要此参数
//
// 示例值：3
func (builder *SetRoomConfigPathReqBodyBuilder) BuildingId(buildingId string) *SetRoomConfigPathReqBodyBuilder {
	builder.buildingId = buildingId
	builder.buildingIdFlag = true
	return builder
}

// 楼层 scope为5时需要此参数
//
// 示例值：4
func (builder *SetRoomConfigPathReqBodyBuilder) FloorName(floorName string) *SetRoomConfigPathReqBodyBuilder {
	builder.floorName = floorName
	builder.floorNameFlag = true
	return builder
}

// 会议室ID scope为6时需要此参数
//
// 示例值：67687262867363
func (builder *SetRoomConfigPathReqBodyBuilder) RoomId(roomId string) *SetRoomConfigPathReqBodyBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 会议室设置
//
// 示例值：
func (builder *SetRoomConfigPathReqBodyBuilder) RoomConfig(roomConfig *RoomConfig) *SetRoomConfigPathReqBodyBuilder {
	builder.roomConfig = roomConfig
	builder.roomConfigFlag = true
	return builder
}

func (builder *SetRoomConfigPathReqBodyBuilder) Build() (*SetRoomConfigReqBody, error) {
	req := &SetRoomConfigReqBody{}
	if builder.scopeFlag {
		req.Scope = &builder.scope
	}
	if builder.countryIdFlag {
		req.CountryId = &builder.countryId
	}
	if builder.districtIdFlag {
		req.DistrictId = &builder.districtId
	}
	if builder.buildingIdFlag {
		req.BuildingId = &builder.buildingId
	}
	if builder.floorNameFlag {
		req.FloorName = &builder.floorName
	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId
	}
	if builder.roomConfigFlag {
		req.RoomConfig = builder.roomConfig
	}
	return req, nil
}

type SetRoomConfigReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SetRoomConfigReqBody
}

func NewSetRoomConfigReqBuilder() *SetRoomConfigReqBuilder {
	builder := &SetRoomConfigReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *SetRoomConfigReqBuilder) UserIdType(userIdType string) *SetRoomConfigReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

//
func (builder *SetRoomConfigReqBuilder) Body(body *SetRoomConfigReqBody) *SetRoomConfigReqBuilder {
	builder.body = body
	return builder
}

func (builder *SetRoomConfigReqBuilder) Build() *SetRoomConfigReq {
	req := &SetRoomConfigReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.body
	return req
}

type SetRoomConfigReqBody struct {
	Scope *int `json:"scope,omitempty"` // 设置节点范围

	CountryId *string `json:"country_id,omitempty"` // 国家/地区ID scope为2，3时需要此参数

	DistrictId *string `json:"district_id,omitempty"` // 城市ID scope为3时需要此参数

	BuildingId *string `json:"building_id,omitempty"` // 建筑ID scope为4，5时需要此参数

	FloorName *string `json:"floor_name,omitempty"` // 楼层 scope为5时需要此参数

	RoomId *string `json:"room_id,omitempty"` // 会议室ID scope为6时需要此参数

	RoomConfig *RoomConfig `json:"room_config,omitempty"` // 会议室设置
}

type SetRoomConfigReq struct {
	apiReq *larkcore.ApiReq
	Body   *SetRoomConfigReqBody `body:""`
}

type SetRoomConfigResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *SetRoomConfigResp) Success() bool {
	return resp.Code == 0
}

type SetCheckboardAccessCodeRoomConfigReqBodyBuilder struct {
	scope     int // 设置节点范围
	scopeFlag bool

	countryId     string // 国家/地区ID scope为2，3时需要此参数
	countryIdFlag bool

	districtId     string // 城市ID scope为3时需要此参数
	districtIdFlag bool

	buildingId     string // 建筑ID scope为4，5时需要此参数
	buildingIdFlag bool

	floorName     string // 楼层 scope为5时需要此参数
	floorNameFlag bool

	roomId     string // 会议室ID scope为6时需要此参数
	roomIdFlag bool

	validDay     int // 有效天数
	validDayFlag bool
}

func NewSetCheckboardAccessCodeRoomConfigReqBodyBuilder() *SetCheckboardAccessCodeRoomConfigReqBodyBuilder {
	builder := &SetCheckboardAccessCodeRoomConfigReqBodyBuilder{}
	return builder
}

// 设置节点范围
//
//示例值：5
func (builder *SetCheckboardAccessCodeRoomConfigReqBodyBuilder) Scope(scope int) *SetCheckboardAccessCodeRoomConfigReqBodyBuilder {
	builder.scope = scope
	builder.scopeFlag = true
	return builder
}

// 国家/地区ID scope为2，3时需要此参数
//
//示例值：1
func (builder *SetCheckboardAccessCodeRoomConfigReqBodyBuilder) CountryId(countryId string) *SetCheckboardAccessCodeRoomConfigReqBodyBuilder {
	builder.countryId = countryId
	builder.countryIdFlag = true
	return builder
}

// 城市ID scope为3时需要此参数
//
//示例值：2
func (builder *SetCheckboardAccessCodeRoomConfigReqBodyBuilder) DistrictId(districtId string) *SetCheckboardAccessCodeRoomConfigReqBodyBuilder {
	builder.districtId = districtId
	builder.districtIdFlag = true
	return builder
}

// 建筑ID scope为4，5时需要此参数
//
//示例值：3
func (builder *SetCheckboardAccessCodeRoomConfigReqBodyBuilder) BuildingId(buildingId string) *SetCheckboardAccessCodeRoomConfigReqBodyBuilder {
	builder.buildingId = buildingId
	builder.buildingIdFlag = true
	return builder
}

// 楼层 scope为5时需要此参数
//
//示例值：4
func (builder *SetCheckboardAccessCodeRoomConfigReqBodyBuilder) FloorName(floorName string) *SetCheckboardAccessCodeRoomConfigReqBodyBuilder {
	builder.floorName = floorName
	builder.floorNameFlag = true
	return builder
}

// 会议室ID scope为6时需要此参数
//
//示例值：67687262867363
func (builder *SetCheckboardAccessCodeRoomConfigReqBodyBuilder) RoomId(roomId string) *SetCheckboardAccessCodeRoomConfigReqBodyBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 有效天数
//
//示例值：1
func (builder *SetCheckboardAccessCodeRoomConfigReqBodyBuilder) ValidDay(validDay int) *SetCheckboardAccessCodeRoomConfigReqBodyBuilder {
	builder.validDay = validDay
	builder.validDayFlag = true
	return builder
}

func (builder *SetCheckboardAccessCodeRoomConfigReqBodyBuilder) Build() *SetCheckboardAccessCodeRoomConfigReqBody {
	req := &SetCheckboardAccessCodeRoomConfigReqBody{}
	if builder.scopeFlag {
		req.Scope = &builder.scope
	}
	if builder.countryIdFlag {
		req.CountryId = &builder.countryId
	}
	if builder.districtIdFlag {
		req.DistrictId = &builder.districtId
	}
	if builder.buildingIdFlag {
		req.BuildingId = &builder.buildingId
	}
	if builder.floorNameFlag {
		req.FloorName = &builder.floorName
	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId
	}
	if builder.validDayFlag {
		req.ValidDay = &builder.validDay
	}
	return req
}

type SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder struct {
	scope          int
	scopeFlag      bool
	countryId      string
	countryIdFlag  bool
	districtId     string
	districtIdFlag bool
	buildingId     string
	buildingIdFlag bool
	floorName      string
	floorNameFlag  bool
	roomId         string
	roomIdFlag     bool
	validDay       int
	validDayFlag   bool
}

func NewSetCheckboardAccessCodeRoomConfigPathReqBodyBuilder() *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder {
	builder := &SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder{}
	return builder
}

// 设置节点范围
//
// 示例值：5
func (builder *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder) Scope(scope int) *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder {
	builder.scope = scope
	builder.scopeFlag = true
	return builder
}

// 国家/地区ID scope为2，3时需要此参数
//
// 示例值：1
func (builder *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder) CountryId(countryId string) *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder {
	builder.countryId = countryId
	builder.countryIdFlag = true
	return builder
}

// 城市ID scope为3时需要此参数
//
// 示例值：2
func (builder *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder) DistrictId(districtId string) *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder {
	builder.districtId = districtId
	builder.districtIdFlag = true
	return builder
}

// 建筑ID scope为4，5时需要此参数
//
// 示例值：3
func (builder *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder) BuildingId(buildingId string) *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder {
	builder.buildingId = buildingId
	builder.buildingIdFlag = true
	return builder
}

// 楼层 scope为5时需要此参数
//
// 示例值：4
func (builder *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder) FloorName(floorName string) *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder {
	builder.floorName = floorName
	builder.floorNameFlag = true
	return builder
}

// 会议室ID scope为6时需要此参数
//
// 示例值：67687262867363
func (builder *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder) RoomId(roomId string) *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 有效天数
//
// 示例值：1
func (builder *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder) ValidDay(validDay int) *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder {
	builder.validDay = validDay
	builder.validDayFlag = true
	return builder
}

func (builder *SetCheckboardAccessCodeRoomConfigPathReqBodyBuilder) Build() (*SetCheckboardAccessCodeRoomConfigReqBody, error) {
	req := &SetCheckboardAccessCodeRoomConfigReqBody{}
	if builder.scopeFlag {
		req.Scope = &builder.scope
	}
	if builder.countryIdFlag {
		req.CountryId = &builder.countryId
	}
	if builder.districtIdFlag {
		req.DistrictId = &builder.districtId
	}
	if builder.buildingIdFlag {
		req.BuildingId = &builder.buildingId
	}
	if builder.floorNameFlag {
		req.FloorName = &builder.floorName
	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId
	}
	if builder.validDayFlag {
		req.ValidDay = &builder.validDay
	}
	return req, nil
}

type SetCheckboardAccessCodeRoomConfigReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SetCheckboardAccessCodeRoomConfigReqBody
}

func NewSetCheckboardAccessCodeRoomConfigReqBuilder() *SetCheckboardAccessCodeRoomConfigReqBuilder {
	builder := &SetCheckboardAccessCodeRoomConfigReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *SetCheckboardAccessCodeRoomConfigReqBuilder) Body(body *SetCheckboardAccessCodeRoomConfigReqBody) *SetCheckboardAccessCodeRoomConfigReqBuilder {
	builder.body = body
	return builder
}

func (builder *SetCheckboardAccessCodeRoomConfigReqBuilder) Build() *SetCheckboardAccessCodeRoomConfigReq {
	req := &SetCheckboardAccessCodeRoomConfigReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type SetCheckboardAccessCodeRoomConfigReqBody struct {
	Scope *int `json:"scope,omitempty"` // 设置节点范围

	CountryId *string `json:"country_id,omitempty"` // 国家/地区ID scope为2，3时需要此参数

	DistrictId *string `json:"district_id,omitempty"` // 城市ID scope为3时需要此参数

	BuildingId *string `json:"building_id,omitempty"` // 建筑ID scope为4，5时需要此参数

	FloorName *string `json:"floor_name,omitempty"` // 楼层 scope为5时需要此参数

	RoomId *string `json:"room_id,omitempty"` // 会议室ID scope为6时需要此参数

	ValidDay *int `json:"valid_day,omitempty"` // 有效天数
}

type SetCheckboardAccessCodeRoomConfigReq struct {
	apiReq *larkcore.ApiReq
	Body   *SetCheckboardAccessCodeRoomConfigReqBody `body:""`
}

type SetCheckboardAccessCodeRoomConfigRespData struct {
	AccessCode *string `json:"access_code,omitempty"` // 部署访问码
}

type SetCheckboardAccessCodeRoomConfigResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SetCheckboardAccessCodeRoomConfigRespData `json:"data"` // 业务数据
}

func (resp *SetCheckboardAccessCodeRoomConfigResp) Success() bool {
	return resp.Code == 0
}

type SetRoomAccessCodeRoomConfigReqBodyBuilder struct {
	scope     int // 设置节点范围
	scopeFlag bool

	countryId     string // 国家/地区ID scope为2，3时需要此参数
	countryIdFlag bool

	districtId     string // 城市ID scope为3时需要此参数
	districtIdFlag bool

	buildingId     string // 建筑ID scope为4，5时需要此参数
	buildingIdFlag bool

	floorName     string // 楼层 scope为5时需要此参数
	floorNameFlag bool

	roomId     string // 会议室ID scope为6时需要此参数
	roomIdFlag bool

	validDay     int // 有效天数
	validDayFlag bool
}

func NewSetRoomAccessCodeRoomConfigReqBodyBuilder() *SetRoomAccessCodeRoomConfigReqBodyBuilder {
	builder := &SetRoomAccessCodeRoomConfigReqBodyBuilder{}
	return builder
}

// 设置节点范围
//
//示例值：5
func (builder *SetRoomAccessCodeRoomConfigReqBodyBuilder) Scope(scope int) *SetRoomAccessCodeRoomConfigReqBodyBuilder {
	builder.scope = scope
	builder.scopeFlag = true
	return builder
}

// 国家/地区ID scope为2，3时需要此参数
//
//示例值：1
func (builder *SetRoomAccessCodeRoomConfigReqBodyBuilder) CountryId(countryId string) *SetRoomAccessCodeRoomConfigReqBodyBuilder {
	builder.countryId = countryId
	builder.countryIdFlag = true
	return builder
}

// 城市ID scope为3时需要此参数
//
//示例值：2
func (builder *SetRoomAccessCodeRoomConfigReqBodyBuilder) DistrictId(districtId string) *SetRoomAccessCodeRoomConfigReqBodyBuilder {
	builder.districtId = districtId
	builder.districtIdFlag = true
	return builder
}

// 建筑ID scope为4，5时需要此参数
//
//示例值：3
func (builder *SetRoomAccessCodeRoomConfigReqBodyBuilder) BuildingId(buildingId string) *SetRoomAccessCodeRoomConfigReqBodyBuilder {
	builder.buildingId = buildingId
	builder.buildingIdFlag = true
	return builder
}

// 楼层 scope为5时需要此参数
//
//示例值：4
func (builder *SetRoomAccessCodeRoomConfigReqBodyBuilder) FloorName(floorName string) *SetRoomAccessCodeRoomConfigReqBodyBuilder {
	builder.floorName = floorName
	builder.floorNameFlag = true
	return builder
}

// 会议室ID scope为6时需要此参数
//
//示例值：67687262867363
func (builder *SetRoomAccessCodeRoomConfigReqBodyBuilder) RoomId(roomId string) *SetRoomAccessCodeRoomConfigReqBodyBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 有效天数
//
//示例值：1
func (builder *SetRoomAccessCodeRoomConfigReqBodyBuilder) ValidDay(validDay int) *SetRoomAccessCodeRoomConfigReqBodyBuilder {
	builder.validDay = validDay
	builder.validDayFlag = true
	return builder
}

func (builder *SetRoomAccessCodeRoomConfigReqBodyBuilder) Build() *SetRoomAccessCodeRoomConfigReqBody {
	req := &SetRoomAccessCodeRoomConfigReqBody{}
	if builder.scopeFlag {
		req.Scope = &builder.scope
	}
	if builder.countryIdFlag {
		req.CountryId = &builder.countryId
	}
	if builder.districtIdFlag {
		req.DistrictId = &builder.districtId
	}
	if builder.buildingIdFlag {
		req.BuildingId = &builder.buildingId
	}
	if builder.floorNameFlag {
		req.FloorName = &builder.floorName
	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId
	}
	if builder.validDayFlag {
		req.ValidDay = &builder.validDay
	}
	return req
}

type SetRoomAccessCodeRoomConfigPathReqBodyBuilder struct {
	scope          int
	scopeFlag      bool
	countryId      string
	countryIdFlag  bool
	districtId     string
	districtIdFlag bool
	buildingId     string
	buildingIdFlag bool
	floorName      string
	floorNameFlag  bool
	roomId         string
	roomIdFlag     bool
	validDay       int
	validDayFlag   bool
}

func NewSetRoomAccessCodeRoomConfigPathReqBodyBuilder() *SetRoomAccessCodeRoomConfigPathReqBodyBuilder {
	builder := &SetRoomAccessCodeRoomConfigPathReqBodyBuilder{}
	return builder
}

// 设置节点范围
//
// 示例值：5
func (builder *SetRoomAccessCodeRoomConfigPathReqBodyBuilder) Scope(scope int) *SetRoomAccessCodeRoomConfigPathReqBodyBuilder {
	builder.scope = scope
	builder.scopeFlag = true
	return builder
}

// 国家/地区ID scope为2，3时需要此参数
//
// 示例值：1
func (builder *SetRoomAccessCodeRoomConfigPathReqBodyBuilder) CountryId(countryId string) *SetRoomAccessCodeRoomConfigPathReqBodyBuilder {
	builder.countryId = countryId
	builder.countryIdFlag = true
	return builder
}

// 城市ID scope为3时需要此参数
//
// 示例值：2
func (builder *SetRoomAccessCodeRoomConfigPathReqBodyBuilder) DistrictId(districtId string) *SetRoomAccessCodeRoomConfigPathReqBodyBuilder {
	builder.districtId = districtId
	builder.districtIdFlag = true
	return builder
}

// 建筑ID scope为4，5时需要此参数
//
// 示例值：3
func (builder *SetRoomAccessCodeRoomConfigPathReqBodyBuilder) BuildingId(buildingId string) *SetRoomAccessCodeRoomConfigPathReqBodyBuilder {
	builder.buildingId = buildingId
	builder.buildingIdFlag = true
	return builder
}

// 楼层 scope为5时需要此参数
//
// 示例值：4
func (builder *SetRoomAccessCodeRoomConfigPathReqBodyBuilder) FloorName(floorName string) *SetRoomAccessCodeRoomConfigPathReqBodyBuilder {
	builder.floorName = floorName
	builder.floorNameFlag = true
	return builder
}

// 会议室ID scope为6时需要此参数
//
// 示例值：67687262867363
func (builder *SetRoomAccessCodeRoomConfigPathReqBodyBuilder) RoomId(roomId string) *SetRoomAccessCodeRoomConfigPathReqBodyBuilder {
	builder.roomId = roomId
	builder.roomIdFlag = true
	return builder
}

// 有效天数
//
// 示例值：1
func (builder *SetRoomAccessCodeRoomConfigPathReqBodyBuilder) ValidDay(validDay int) *SetRoomAccessCodeRoomConfigPathReqBodyBuilder {
	builder.validDay = validDay
	builder.validDayFlag = true
	return builder
}

func (builder *SetRoomAccessCodeRoomConfigPathReqBodyBuilder) Build() (*SetRoomAccessCodeRoomConfigReqBody, error) {
	req := &SetRoomAccessCodeRoomConfigReqBody{}
	if builder.scopeFlag {
		req.Scope = &builder.scope
	}
	if builder.countryIdFlag {
		req.CountryId = &builder.countryId
	}
	if builder.districtIdFlag {
		req.DistrictId = &builder.districtId
	}
	if builder.buildingIdFlag {
		req.BuildingId = &builder.buildingId
	}
	if builder.floorNameFlag {
		req.FloorName = &builder.floorName
	}
	if builder.roomIdFlag {
		req.RoomId = &builder.roomId
	}
	if builder.validDayFlag {
		req.ValidDay = &builder.validDay
	}
	return req, nil
}

type SetRoomAccessCodeRoomConfigReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *SetRoomAccessCodeRoomConfigReqBody
}

func NewSetRoomAccessCodeRoomConfigReqBuilder() *SetRoomAccessCodeRoomConfigReqBuilder {
	builder := &SetRoomAccessCodeRoomConfigReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *SetRoomAccessCodeRoomConfigReqBuilder) Body(body *SetRoomAccessCodeRoomConfigReqBody) *SetRoomAccessCodeRoomConfigReqBuilder {
	builder.body = body
	return builder
}

func (builder *SetRoomAccessCodeRoomConfigReqBuilder) Build() *SetRoomAccessCodeRoomConfigReq {
	req := &SetRoomAccessCodeRoomConfigReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type SetRoomAccessCodeRoomConfigReqBody struct {
	Scope *int `json:"scope,omitempty"` // 设置节点范围

	CountryId *string `json:"country_id,omitempty"` // 国家/地区ID scope为2，3时需要此参数

	DistrictId *string `json:"district_id,omitempty"` // 城市ID scope为3时需要此参数

	BuildingId *string `json:"building_id,omitempty"` // 建筑ID scope为4，5时需要此参数

	FloorName *string `json:"floor_name,omitempty"` // 楼层 scope为5时需要此参数

	RoomId *string `json:"room_id,omitempty"` // 会议室ID scope为6时需要此参数

	ValidDay *int `json:"valid_day,omitempty"` // 有效天数
}

type SetRoomAccessCodeRoomConfigReq struct {
	apiReq *larkcore.ApiReq
	Body   *SetRoomAccessCodeRoomConfigReqBody `body:""`
}

type SetRoomAccessCodeRoomConfigRespData struct {
	AccessCode *string `json:"access_code,omitempty"` // 部署访问码
}

type SetRoomAccessCodeRoomConfigResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SetRoomAccessCodeRoomConfigRespData `json:"data"` // 业务数据
}

func (resp *SetRoomAccessCodeRoomConfigResp) Success() bool {
	return resp.Code == 0
}

type CreateRoomLevelReqBuilder struct {
	apiReq    *larkcore.ApiReq
	roomLevel *RoomLevel
}

func NewCreateRoomLevelReqBuilder() *CreateRoomLevelReqBuilder {
	builder := &CreateRoomLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 该接口用于创建会议室层级
func (builder *CreateRoomLevelReqBuilder) RoomLevel(roomLevel *RoomLevel) *CreateRoomLevelReqBuilder {
	builder.roomLevel = roomLevel
	return builder
}

func (builder *CreateRoomLevelReqBuilder) Build() *CreateRoomLevelReq {
	req := &CreateRoomLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.roomLevel
	return req
}

type CreateRoomLevelReq struct {
	apiReq    *larkcore.ApiReq
	RoomLevel *RoomLevel `body:""`
}

type CreateRoomLevelRespData struct {
	RoomLevel *RoomLevel `json:"room_level,omitempty"` // 层级详情
}

type CreateRoomLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateRoomLevelRespData `json:"data"` // 业务数据
}

func (resp *CreateRoomLevelResp) Success() bool {
	return resp.Code == 0
}

type DelRoomLevelReqBodyBuilder struct {
	roomLevelId     string // 层级ID
	roomLevelIdFlag bool

	deleteChild     bool // 是否删除所有子层级
	deleteChildFlag bool
}

func NewDelRoomLevelReqBodyBuilder() *DelRoomLevelReqBodyBuilder {
	builder := &DelRoomLevelReqBodyBuilder{}
	return builder
}

// 层级ID
//
//示例值：omb_4ad1a2c7a2fbc5fc9570f38456931293
func (builder *DelRoomLevelReqBodyBuilder) RoomLevelId(roomLevelId string) *DelRoomLevelReqBodyBuilder {
	builder.roomLevelId = roomLevelId
	builder.roomLevelIdFlag = true
	return builder
}

// 是否删除所有子层级
//
//示例值：false
func (builder *DelRoomLevelReqBodyBuilder) DeleteChild(deleteChild bool) *DelRoomLevelReqBodyBuilder {
	builder.deleteChild = deleteChild
	builder.deleteChildFlag = true
	return builder
}

func (builder *DelRoomLevelReqBodyBuilder) Build() *DelRoomLevelReqBody {
	req := &DelRoomLevelReqBody{}
	if builder.roomLevelIdFlag {
		req.RoomLevelId = &builder.roomLevelId
	}
	if builder.deleteChildFlag {
		req.DeleteChild = &builder.deleteChild
	}
	return req
}

type DelRoomLevelPathReqBodyBuilder struct {
	roomLevelId     string
	roomLevelIdFlag bool
	deleteChild     bool
	deleteChildFlag bool
}

func NewDelRoomLevelPathReqBodyBuilder() *DelRoomLevelPathReqBodyBuilder {
	builder := &DelRoomLevelPathReqBodyBuilder{}
	return builder
}

// 层级ID
//
// 示例值：omb_4ad1a2c7a2fbc5fc9570f38456931293
func (builder *DelRoomLevelPathReqBodyBuilder) RoomLevelId(roomLevelId string) *DelRoomLevelPathReqBodyBuilder {
	builder.roomLevelId = roomLevelId
	builder.roomLevelIdFlag = true
	return builder
}

// 是否删除所有子层级
//
// 示例值：false
func (builder *DelRoomLevelPathReqBodyBuilder) DeleteChild(deleteChild bool) *DelRoomLevelPathReqBodyBuilder {
	builder.deleteChild = deleteChild
	builder.deleteChildFlag = true
	return builder
}

func (builder *DelRoomLevelPathReqBodyBuilder) Build() (*DelRoomLevelReqBody, error) {
	req := &DelRoomLevelReqBody{}
	if builder.roomLevelIdFlag {
		req.RoomLevelId = &builder.roomLevelId
	}
	if builder.deleteChildFlag {
		req.DeleteChild = &builder.deleteChild
	}
	return req, nil
}

type DelRoomLevelReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *DelRoomLevelReqBody
}

func NewDelRoomLevelReqBuilder() *DelRoomLevelReqBuilder {
	builder := &DelRoomLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 该接口可以用来删除某个会议室层级
func (builder *DelRoomLevelReqBuilder) Body(body *DelRoomLevelReqBody) *DelRoomLevelReqBuilder {
	builder.body = body
	return builder
}

func (builder *DelRoomLevelReqBuilder) Build() *DelRoomLevelReq {
	req := &DelRoomLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type DelRoomLevelReqBody struct {
	RoomLevelId *string `json:"room_level_id,omitempty"` // 层级ID

	DeleteChild *bool `json:"delete_child,omitempty"` // 是否删除所有子层级
}

type DelRoomLevelReq struct {
	apiReq *larkcore.ApiReq
	Body   *DelRoomLevelReqBody `body:""`
}

type DelRoomLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *DelRoomLevelResp) Success() bool {
	return resp.Code == 0
}

type GetRoomLevelReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetRoomLevelReqBuilder() *GetRoomLevelReqBuilder {
	builder := &GetRoomLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 层级ID，查询租户层级可传0
//
// 示例值：omb_57c9cc7d9a81e27e54c8fabfd02759e7
func (builder *GetRoomLevelReqBuilder) RoomLevelId(roomLevelId string) *GetRoomLevelReqBuilder {
	builder.apiReq.PathParams.Set("room_level_id", fmt.Sprint(roomLevelId))
	return builder
}

func (builder *GetRoomLevelReqBuilder) Build() *GetRoomLevelReq {
	req := &GetRoomLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	return req
}

type GetRoomLevelReq struct {
	apiReq *larkcore.ApiReq
}

type GetRoomLevelRespData struct {
	RoomLevel *RoomLevel `json:"room_level,omitempty"` // 会议室层级详情
}

type GetRoomLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetRoomLevelRespData `json:"data"` // 业务数据
}

func (resp *GetRoomLevelResp) Success() bool {
	return resp.Code == 0
}

type ListRoomLevelReqBuilder struct {
	apiReq *larkcore.ApiReq
	limit  int // 最大返回多少记录，当使用迭代器访问时才有效
}

func NewListRoomLevelReqBuilder() *ListRoomLevelReqBuilder {
	builder := &ListRoomLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 最大返回多少记录，当使用迭代器访问时才有效
func (builder *ListRoomLevelReqBuilder) Limit(limit int) *ListRoomLevelReqBuilder {
	builder.limit = limit
	return builder
}

// 层级ID，当需要获取租户下层级列表时，room_level_id可传空
//
// 示例值：omb_4ad1a2c7a2fbc5fc9570f38456931293
func (builder *ListRoomLevelReqBuilder) RoomLevelId(roomLevelId string) *ListRoomLevelReqBuilder {
	builder.apiReq.QueryParams.Set("room_level_id", fmt.Sprint(roomLevelId))
	return builder
}

// 分页尺寸大小
//
// 示例值：10
func (builder *ListRoomLevelReqBuilder) PageSize(pageSize int) *ListRoomLevelReqBuilder {
	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
	return builder
}

// 分页标记,第一次请求不填,表示从头开始遍历.下次遍历可采用该 page_token获取查询结果
//
// 示例值：
func (builder *ListRoomLevelReqBuilder) PageToken(pageToken string) *ListRoomLevelReqBuilder {
	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
	return builder
}

func (builder *ListRoomLevelReqBuilder) Build() *ListRoomLevelReq {
	req := &ListRoomLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.Limit = builder.limit
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type ListRoomLevelReq struct {
	apiReq *larkcore.ApiReq
	Limit  int // 最多返回多少记录，只有在使用迭代器访问时，才有效

}

type ListRoomLevelRespData struct {
	Items []*RoomLevel `json:"items,omitempty"` // 会议室层级列表

	PageToken *string `json:"page_token,omitempty"` //

	HasMore *bool `json:"has_more,omitempty"` //
}

type ListRoomLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *ListRoomLevelRespData `json:"data"` // 业务数据
}

func (resp *ListRoomLevelResp) Success() bool {
	return resp.Code == 0
}

type MgetRoomLevelReqBodyBuilder struct {
	levelIds     []string // 层级ID列表
	levelIdsFlag bool
}

func NewMgetRoomLevelReqBodyBuilder() *MgetRoomLevelReqBodyBuilder {
	builder := &MgetRoomLevelReqBodyBuilder{}
	return builder
}

// 层级ID列表
//
//示例值：["omb_4ad1a2c7a2fbc5fc9570f38456931293"]
func (builder *MgetRoomLevelReqBodyBuilder) LevelIds(levelIds []string) *MgetRoomLevelReqBodyBuilder {
	builder.levelIds = levelIds
	builder.levelIdsFlag = true
	return builder
}

func (builder *MgetRoomLevelReqBodyBuilder) Build() *MgetRoomLevelReqBody {
	req := &MgetRoomLevelReqBody{}
	if builder.levelIdsFlag {
		req.LevelIds = builder.levelIds
	}
	return req
}

type MgetRoomLevelPathReqBodyBuilder struct {
	levelIds     []string
	levelIdsFlag bool
}

func NewMgetRoomLevelPathReqBodyBuilder() *MgetRoomLevelPathReqBodyBuilder {
	builder := &MgetRoomLevelPathReqBodyBuilder{}
	return builder
}

// 层级ID列表
//
// 示例值：["omb_4ad1a2c7a2fbc5fc9570f38456931293"]
func (builder *MgetRoomLevelPathReqBodyBuilder) LevelIds(levelIds []string) *MgetRoomLevelPathReqBodyBuilder {
	builder.levelIds = levelIds
	builder.levelIdsFlag = true
	return builder
}

func (builder *MgetRoomLevelPathReqBodyBuilder) Build() (*MgetRoomLevelReqBody, error) {
	req := &MgetRoomLevelReqBody{}
	if builder.levelIdsFlag {
		req.LevelIds = builder.levelIds
	}
	return req, nil
}

type MgetRoomLevelReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *MgetRoomLevelReqBody
}

func NewMgetRoomLevelReqBuilder() *MgetRoomLevelReqBuilder {
	builder := &MgetRoomLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 该接口可以使用会议室层级ID批量查询会议室层级详情
func (builder *MgetRoomLevelReqBuilder) Body(body *MgetRoomLevelReqBody) *MgetRoomLevelReqBuilder {
	builder.body = body
	return builder
}

func (builder *MgetRoomLevelReqBuilder) Build() *MgetRoomLevelReq {
	req := &MgetRoomLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type MgetRoomLevelReqBody struct {
	LevelIds []string `json:"level_ids,omitempty"` // 层级ID列表
}

type MgetRoomLevelReq struct {
	apiReq *larkcore.ApiReq
	Body   *MgetRoomLevelReqBody `body:""`
}

type MgetRoomLevelRespData struct {
	Items []*RoomLevel `json:"items,omitempty"` // 会议室层级列表
}

type MgetRoomLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *MgetRoomLevelRespData `json:"data"` // 业务数据
}

func (resp *MgetRoomLevelResp) Success() bool {
	return resp.Code == 0
}

type PatchRoomLevelReqBuilder struct {
	apiReq    *larkcore.ApiReq
	roomLevel *RoomLevel
}

func NewPatchRoomLevelReqBuilder() *PatchRoomLevelReqBuilder {
	builder := &PatchRoomLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 层级ID
//
// 示例值：omb_4ad1a2c7a2fbc5fc9570f38456931293
func (builder *PatchRoomLevelReqBuilder) RoomLevelId(roomLevelId string) *PatchRoomLevelReqBuilder {
	builder.apiReq.PathParams.Set("room_level_id", fmt.Sprint(roomLevelId))
	return builder
}

// 该接口可以用来更新某个会议室层级的信息
func (builder *PatchRoomLevelReqBuilder) RoomLevel(roomLevel *RoomLevel) *PatchRoomLevelReqBuilder {
	builder.roomLevel = roomLevel
	return builder
}

func (builder *PatchRoomLevelReqBuilder) Build() *PatchRoomLevelReq {
	req := &PatchRoomLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.PathParams = builder.apiReq.PathParams
	req.apiReq.Body = builder.roomLevel
	return req
}

type PatchRoomLevelReq struct {
	apiReq    *larkcore.ApiReq
	RoomLevel *RoomLevel `body:""`
}

type PatchRoomLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *PatchRoomLevelResp) Success() bool {
	return resp.Code == 0
}

type SearchRoomLevelReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewSearchRoomLevelReqBuilder() *SearchRoomLevelReqBuilder {
	builder := &SearchRoomLevelReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 用于查询指定会议室层级的自定义会议室层级ID
//
// 示例值：1000,1001
func (builder *SearchRoomLevelReqBuilder) CustomLevelIds(customLevelIds string) *SearchRoomLevelReqBuilder {
	builder.apiReq.QueryParams.Set("custom_level_ids", fmt.Sprint(customLevelIds))
	return builder
}

func (builder *SearchRoomLevelReqBuilder) Build() *SearchRoomLevelReq {
	req := &SearchRoomLevelReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type SearchRoomLevelReq struct {
	apiReq *larkcore.ApiReq
}

type SearchRoomLevelRespData struct {
	LevelIds []string `json:"level_ids,omitempty"` // 层级ID列表
}

type SearchRoomLevelResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *SearchRoomLevelRespData `json:"data"` // 业务数据
}

func (resp *SearchRoomLevelResp) Success() bool {
	return resp.Code == 0
}

type CreateScopeConfigReqBuilder struct {
	apiReq      *larkcore.ApiReq
	scopeConfig *ScopeConfig
}

func NewCreateScopeConfigReqBuilder() *CreateScopeConfigReqBuilder {
	builder := &CreateScopeConfigReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：open_id
func (builder *CreateScopeConfigReqBuilder) UserIdType(userIdType string) *CreateScopeConfigReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

// 该接口可以用来设置某个会议层级范围下或者某个会议室的配置
func (builder *CreateScopeConfigReqBuilder) ScopeConfig(scopeConfig *ScopeConfig) *CreateScopeConfigReqBuilder {
	builder.scopeConfig = scopeConfig
	return builder
}

func (builder *CreateScopeConfigReqBuilder) Build() *CreateScopeConfigReq {
	req := &CreateScopeConfigReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	req.apiReq.Body = builder.scopeConfig
	return req
}

type CreateScopeConfigReq struct {
	apiReq      *larkcore.ApiReq
	ScopeConfig *ScopeConfig `body:""`
}

type CreateScopeConfigResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
}

func (resp *CreateScopeConfigResp) Success() bool {
	return resp.Code == 0
}

type GetScopeConfigReqBuilder struct {
	apiReq *larkcore.ApiReq
}

func NewGetScopeConfigReqBuilder() *GetScopeConfigReqBuilder {
	builder := &GetScopeConfigReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

// 查询节点范围
//
// 示例值：1
func (builder *GetScopeConfigReqBuilder) ScopeType(scopeType int) *GetScopeConfigReqBuilder {
	builder.apiReq.QueryParams.Set("scope_type", fmt.Sprint(scopeType))
	return builder
}

// 查询节点ID：如果scope_type为1，则为层级ID，如果scope_type为2，则为会议室ID
//
// 示例值：omm_608d34d82d531b27fa993902d350a307
func (builder *GetScopeConfigReqBuilder) ScopeId(scopeId string) *GetScopeConfigReqBuilder {
	builder.apiReq.QueryParams.Set("scope_id", fmt.Sprint(scopeId))
	return builder
}

// 此次调用中使用的用户ID的类型，默认使用open_id可不填
//
// 示例值：
func (builder *GetScopeConfigReqBuilder) UserIdType(userIdType string) *GetScopeConfigReqBuilder {
	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
	return builder
}

func (builder *GetScopeConfigReqBuilder) Build() *GetScopeConfigReq {
	req := &GetScopeConfigReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.QueryParams = builder.apiReq.QueryParams
	return req
}

type GetScopeConfigReq struct {
	apiReq *larkcore.ApiReq
}

type GetScopeConfigRespData struct {
	CurrentConfig *ScopeConfig `json:"current_config,omitempty"` // 当前节点的配置，根据层级顺序从底向上进行合并计算后的结果；如果当前节点某个值已配置，则取该节点的值，否则会从该节点的父层级节点获取，如果父节点依然未配置，则继续向上递归获取；若所有节点均未配置，则该值返回为空

	OriginConfigs []*ScopeConfig `json:"origin_configs,omitempty"` // 所有节点的原始配置，按照层级顺序从底向上返回；如果某节点某个值未配置，则该值返回为空
}

type GetScopeConfigResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetScopeConfigRespData `json:"data"` // 业务数据
}

func (resp *GetScopeConfigResp) Success() bool {
	return resp.Code == 0
}

type P2MeetingAllMeetingEndedV1Data struct {
	Meeting *MeetingEventMeeting `json:"meeting,omitempty"` // 会议数据

	Operator *MeetingEventUser `json:"operator,omitempty"` // 事件操作人
}

type P2MeetingAllMeetingEndedV1 struct {
	*larkevent.EventV2Base                                 // 事件基础数据
	*larkevent.EventReq                                    // 请求原生数据
	Event                  *P2MeetingAllMeetingEndedV1Data `json:"event"` // 事件内容
}

func (m *P2MeetingAllMeetingEndedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2MeetingAllMeetingStartedV1Data struct {
	Meeting *MeetingEventMeeting `json:"meeting,omitempty"` // 会议数据

	Operator *MeetingEventUser `json:"operator,omitempty"` // 事件操作人
}

type P2MeetingAllMeetingStartedV1 struct {
	*larkevent.EventV2Base                                   // 事件基础数据
	*larkevent.EventReq                                      // 请求原生数据
	Event                  *P2MeetingAllMeetingStartedV1Data `json:"event"` // 事件内容
}

func (m *P2MeetingAllMeetingStartedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2MeetingJoinMeetingV1Data struct {
	Meeting *MeetingEventMeeting `json:"meeting,omitempty"` // 会议数据

	Operator *MeetingEventUser `json:"operator,omitempty"` // 事件操作人
}

type P2MeetingJoinMeetingV1 struct {
	*larkevent.EventV2Base                             // 事件基础数据
	*larkevent.EventReq                                // 请求原生数据
	Event                  *P2MeetingJoinMeetingV1Data `json:"event"` // 事件内容
}

func (m *P2MeetingJoinMeetingV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2MeetingLeaveMeetingV1Data struct {
	Meeting *MeetingEventMeeting `json:"meeting,omitempty"` // 会议数据

	Operator *MeetingEventUser `json:"operator,omitempty"` // 事件操作人

	LeaveReason *int `json:"leave_reason,omitempty"` // 离开会议原因

	LeaveUser *MeetingEventUser `json:"leave_user,omitempty"` // 离会人
}

type P2MeetingLeaveMeetingV1 struct {
	*larkevent.EventV2Base                              // 事件基础数据
	*larkevent.EventReq                                 // 请求原生数据
	Event                  *P2MeetingLeaveMeetingV1Data `json:"event"` // 事件内容
}

func (m *P2MeetingLeaveMeetingV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2MeetingEndedV1Data struct {
	Meeting *MeetingEventMeeting `json:"meeting,omitempty"` // 会议数据

	Operator *MeetingEventUser `json:"operator,omitempty"` // 事件操作人
}

type P2MeetingEndedV1 struct {
	*larkevent.EventV2Base                       // 事件基础数据
	*larkevent.EventReq                          // 请求原生数据
	Event                  *P2MeetingEndedV1Data `json:"event"` // 事件内容
}

func (m *P2MeetingEndedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2MeetingStartedV1Data struct {
	Meeting *MeetingEventMeeting `json:"meeting,omitempty"` // 会议数据

	Operator *MeetingEventUser `json:"operator,omitempty"` // 事件操作人
}

type P2MeetingStartedV1 struct {
	*larkevent.EventV2Base                         // 事件基础数据
	*larkevent.EventReq                            // 请求原生数据
	Event                  *P2MeetingStartedV1Data `json:"event"` // 事件内容
}

func (m *P2MeetingStartedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2MeetingRecordingEndedV1Data struct {
	Meeting *MeetingEventMeeting `json:"meeting,omitempty"` // 会议数据

	Operator *MeetingEventUser `json:"operator,omitempty"` // 事件操作人
}

type P2MeetingRecordingEndedV1 struct {
	*larkevent.EventV2Base                                // 事件基础数据
	*larkevent.EventReq                                   // 请求原生数据
	Event                  *P2MeetingRecordingEndedV1Data `json:"event"` // 事件内容
}

func (m *P2MeetingRecordingEndedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2MeetingRecordingReadyV1Data struct {
	Meeting *MeetingEventMeeting `json:"meeting,omitempty"` // 会议数据

	Url *string `json:"url,omitempty"` // 会议录制链接

	Duration *string `json:"duration,omitempty"` // 录制总时长（单位msec）
}

type P2MeetingRecordingReadyV1 struct {
	*larkevent.EventV2Base                                // 事件基础数据
	*larkevent.EventReq                                   // 请求原生数据
	Event                  *P2MeetingRecordingReadyV1Data `json:"event"` // 事件内容
}

func (m *P2MeetingRecordingReadyV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2MeetingRecordingStartedV1Data struct {
	Meeting *MeetingEventMeeting `json:"meeting,omitempty"` // 会议数据

	Operator *MeetingEventUser `json:"operator,omitempty"` // 事件操作人
}

type P2MeetingRecordingStartedV1 struct {
	*larkevent.EventV2Base                                  // 事件基础数据
	*larkevent.EventReq                                     // 请求原生数据
	Event                  *P2MeetingRecordingStartedV1Data `json:"event"` // 事件内容
}

func (m *P2MeetingRecordingStartedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2MeetingShareEndedV1Data struct {
	Meeting *MeetingEventMeeting `json:"meeting,omitempty"` // 会议数据

	Operator *MeetingEventUser `json:"operator,omitempty"` // 事件操作人
}

type P2MeetingShareEndedV1 struct {
	*larkevent.EventV2Base                            // 事件基础数据
	*larkevent.EventReq                               // 请求原生数据
	Event                  *P2MeetingShareEndedV1Data `json:"event"` // 事件内容
}

func (m *P2MeetingShareEndedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2MeetingShareStartedV1Data struct {
	Meeting *MeetingEventMeeting `json:"meeting,omitempty"` // 会议数据

	Operator *MeetingEventUser `json:"operator,omitempty"` // 事件操作人
}

type P2MeetingShareStartedV1 struct {
	*larkevent.EventV2Base                              // 事件基础数据
	*larkevent.EventReq                                 // 请求原生数据
	Event                  *P2MeetingShareStartedV1Data `json:"event"` // 事件内容
}

func (m *P2MeetingShareStartedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2ReserveConfigUpdatedV1Data struct {
	ScopeId *string `json:"scope_id,omitempty"` // 会议室或层级id

	ScopeType *int `json:"scope_type,omitempty"` // 1代表层级，2代表会议室

	ApproveConfig *ApprovalConfigEvent `json:"approve_config,omitempty"` // 预定审批设置

	TimeConfig *TimeConfig `json:"time_config,omitempty"` // 预定时间设置

	ReserveScopeConfig *ReserveScopeConfigEvent `json:"reserve_scope_config,omitempty"` // 预定范围设置
}

type P2ReserveConfigUpdatedV1 struct {
	*larkevent.EventV2Base                               // 事件基础数据
	*larkevent.EventReq                                  // 请求原生数据
	Event                  *P2ReserveConfigUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2ReserveConfigUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2RoomCreatedV1Data struct {
	Room *RoomEvent `json:"room,omitempty"` // 会议室信息
}

type P2RoomCreatedV1 struct {
	*larkevent.EventV2Base                      // 事件基础数据
	*larkevent.EventReq                         // 请求原生数据
	Event                  *P2RoomCreatedV1Data `json:"event"` // 事件内容
}

func (m *P2RoomCreatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2RoomDeletedV1Data struct {
	Room *RoomEvent `json:"room,omitempty"` // 会议室信息
}

type P2RoomDeletedV1 struct {
	*larkevent.EventV2Base                      // 事件基础数据
	*larkevent.EventReq                         // 请求原生数据
	Event                  *P2RoomDeletedV1Data `json:"event"` // 事件内容
}

func (m *P2RoomDeletedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2RoomUpdatedV1Data struct {
	Room *RoomEvent `json:"room,omitempty"` // 会议室详情
}

type P2RoomUpdatedV1 struct {
	*larkevent.EventV2Base                      // 事件基础数据
	*larkevent.EventReq                         // 请求原生数据
	Event                  *P2RoomUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2RoomUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2RoomLevelCreatedV1Data struct {
	RoomLevel *RoomLevel `json:"room_level,omitempty"` // 层级信息
}

type P2RoomLevelCreatedV1 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2RoomLevelCreatedV1Data `json:"event"` // 事件内容
}

func (m *P2RoomLevelCreatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2RoomLevelDeletedV1Data struct {
	RoomLevelId *string `json:"room_level_id,omitempty"` // 层级ID

	DeleteChild *bool `json:"delete_child,omitempty"` // 是否删除所有子层级
}

type P2RoomLevelDeletedV1 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2RoomLevelDeletedV1Data `json:"event"` // 事件内容
}

func (m *P2RoomLevelDeletedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type P2RoomLevelUpdatedV1Data struct {
	RoomLevel *RoomLevel `json:"room_level,omitempty"` // 层级信息
}

type P2RoomLevelUpdatedV1 struct {
	*larkevent.EventV2Base                           // 事件基础数据
	*larkevent.EventReq                              // 请求原生数据
	Event                  *P2RoomLevelUpdatedV1Data `json:"event"` // 事件内容
}

func (m *P2RoomLevelUpdatedV1) RawReq(req *larkevent.EventReq) {
	m.EventReq = req
}

type ListAlertIterator struct {
	nextPageToken *string
	items         []*Alert
	index         int
	limit         int
	ctx           context.Context
	req           *ListAlertReq
	listFunc      func(ctx context.Context, req *ListAlertReq, options ...larkcore.RequestOptionFunc) (*ListAlertResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListAlertIterator) Next() (bool, *Alert, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListAlertIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListByNoMeetingIterator struct {
	nextPageToken *string
	items         []*Meeting
	index         int
	limit         int
	ctx           context.Context
	req           *ListByNoMeetingReq
	listFunc      func(ctx context.Context, req *ListByNoMeetingReq, options ...larkcore.RequestOptionFunc) (*ListByNoMeetingResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListByNoMeetingIterator) Next() (bool, *Meeting, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.MeetingBriefs) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.MeetingBriefs
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListByNoMeetingIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type GetMeetingListIterator struct {
	nextPageToken *string
	items         []*MeetingInfo
	index         int
	limit         int
	ctx           context.Context
	req           *GetMeetingListReq
	listFunc      func(ctx context.Context, req *GetMeetingListReq, options ...larkcore.RequestOptionFunc) (*GetMeetingListResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *GetMeetingListIterator) Next() (bool, *MeetingInfo, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.MeetingList) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.MeetingList
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *GetMeetingListIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type GetParticipantListIterator struct {
	nextPageToken *string
	items         []*Participant
	index         int
	limit         int
	ctx           context.Context
	req           *GetParticipantListReq
	listFunc      func(ctx context.Context, req *GetParticipantListReq, options ...larkcore.RequestOptionFunc) (*GetParticipantListResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *GetParticipantListIterator) Next() (bool, *Participant, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Participants) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Participants
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *GetParticipantListIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type GetParticipantQualityListIterator struct {
	nextPageToken *string
	items         []*ParticipantQuality
	index         int
	limit         int
	ctx           context.Context
	req           *GetParticipantQualityListReq
	listFunc      func(ctx context.Context, req *GetParticipantQualityListReq, options ...larkcore.RequestOptionFunc) (*GetParticipantQualityListResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *GetParticipantQualityListIterator) Next() (bool, *ParticipantQuality, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.ParticipantQualityList) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.ParticipantQualityList
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *GetParticipantQualityListIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type GetResourceReservationListIterator struct {
	nextPageToken *string
	items         []*RoomMeetingReservation
	index         int
	limit         int
	ctx           context.Context
	req           *GetResourceReservationListReq
	listFunc      func(ctx context.Context, req *GetResourceReservationListReq, options ...larkcore.RequestOptionFunc) (*GetResourceReservationListResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *GetResourceReservationListIterator) Next() (bool, *RoomMeetingReservation, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.RoomReservationList) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.RoomReservationList
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *GetResourceReservationListIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListRoomIterator struct {
	nextPageToken *string
	items         []*Room
	index         int
	limit         int
	ctx           context.Context
	req           *ListRoomReq
	listFunc      func(ctx context.Context, req *ListRoomReq, options ...larkcore.RequestOptionFunc) (*ListRoomResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListRoomIterator) Next() (bool, *Room, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Rooms) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Rooms
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListRoomIterator) NextPageToken() *string {
	return iterator.nextPageToken
}

type ListRoomLevelIterator struct {
	nextPageToken *string
	items         []*RoomLevel
	index         int
	limit         int
	ctx           context.Context
	req           *ListRoomLevelReq
	listFunc      func(ctx context.Context, req *ListRoomLevelReq, options ...larkcore.RequestOptionFunc) (*ListRoomLevelResp, error)
	options       []larkcore.RequestOptionFunc
	curlNum       int
}

func (iterator *ListRoomLevelIterator) Next() (bool, *RoomLevel, error) {
	// 达到最大量，则返回
	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
		return false, nil, nil
	}

	// 为0则拉取数据
	if iterator.index == 0 || iterator.index >= len(iterator.items) {
		if iterator.index != 0 && iterator.nextPageToken == nil {
			return false, nil, nil
		}
		if iterator.nextPageToken != nil {
			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
		}
		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
		if err != nil {
			return false, nil, err
		}

		if resp.Code != 0 {
			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
		}

		if len(resp.Data.Items) == 0 {
			return false, nil, nil
		}

		iterator.nextPageToken = resp.Data.PageToken
		iterator.items = resp.Data.Items
		iterator.index = 0
	}

	block := iterator.items[iterator.index]
	iterator.index++
	iterator.curlNum++
	return true, block, nil
}

func (iterator *ListRoomLevelIterator) NextPageToken() *string {
	return iterator.nextPageToken
}
