Skip to main content
Glama
larksuite

Feishu/Lark OpenAPI MCP

Official
by larksuite
vc_v1.ts91.8 kB
import { z } from 'zod'; export type vcV1ToolName = | 'vc.v1.alert.list' | 'vc.v1.export.get' | 'vc.v1.export.meetingList' | 'vc.v1.export.participantList' | 'vc.v1.export.participantQualityList' | 'vc.v1.export.resourceReservationList' | 'vc.v1.meetingList.get' | 'vc.v1.meeting.end' | 'vc.v1.meeting.get' | 'vc.v1.meeting.invite' | 'vc.v1.meeting.kickout' | 'vc.v1.meeting.listByNo' | 'vc.v1.meetingRecording.get' | 'vc.v1.meetingRecording.setPermission' | 'vc.v1.meetingRecording.start' | 'vc.v1.meetingRecording.stop' | 'vc.v1.meeting.setHost' | 'vc.v1.participantList.get' | 'vc.v1.participantQualityList.get' | 'vc.v1.report.getDaily' | 'vc.v1.report.getTopUser' | 'vc.v1.reserveConfigAdmin.get' | 'vc.v1.reserveConfigAdmin.patch' | 'vc.v1.reserveConfigDisableInform.get' | 'vc.v1.reserveConfigDisableInform.patch' | 'vc.v1.reserveConfigForm.get' | 'vc.v1.reserveConfigForm.patch' | 'vc.v1.reserveConfig.patch' | 'vc.v1.reserveConfig.reserveScope' | 'vc.v1.reserve.apply' | 'vc.v1.reserve.delete' | 'vc.v1.reserve.get' | 'vc.v1.reserve.getActiveMeeting' | 'vc.v1.reserve.update' | 'vc.v1.resourceReservationList.get' | 'vc.v1.roomConfig.query' | 'vc.v1.roomConfig.set' | 'vc.v1.roomConfig.setCheckboardAccessCode' | 'vc.v1.roomConfig.setRoomAccessCode' | 'vc.v1.roomLevel.create' | 'vc.v1.roomLevel.del' | 'vc.v1.roomLevel.get' | 'vc.v1.roomLevel.list' | 'vc.v1.roomLevel.mget' | 'vc.v1.roomLevel.patch' | 'vc.v1.roomLevel.search' | 'vc.v1.room.create' | 'vc.v1.room.delete' | 'vc.v1.room.get' | 'vc.v1.room.list' | 'vc.v1.room.mget' | 'vc.v1.room.patch' | 'vc.v1.room.search' | 'vc.v1.scopeConfig.create' | 'vc.v1.scopeConfig.get'; export const vcV1AlertList = { project: 'vc', name: 'vc.v1.alert.list', sdkName: 'vc.v1.alert.list', path: '/open-apis/vc/v1/alerts', httpMethod: 'GET', description: "[Feishu/Lark]-Video Conferencing-Alert center-Get alert center history-Get tenant's equipment warning record under specific conditions", accessTokens: ['tenant'], schema: { params: z.object({ start_time: z.string().describe('Start time (UNIX time, unit SEC)'), end_time: z.string().describe('End time (UNIX time, unit SEC)'), query_type: z.number().describe('Query object type Options:1(room Rooms),2(erc),3(sip)').optional(), query_value: z.string().describe('Query object ID').optional(), page_size: z.number().optional(), page_token: z .string() .describe( 'Page identifier. It is not filled in the first request, indicating traversal from the beginning; when there will be more groups, the new page_token will be returned at the same time, and the next traversal can use the page_token to get more groups', ) .optional(), }), }, }; export const vcV1ExportGet = { project: 'vc', name: 'vc.v1.export.get', sdkName: 'vc.v1.export.get', path: '/open-apis/vc/v1/exports/:task_id', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Export-Query export task results-View the progress of asynchronous export', accessTokens: ['tenant', 'user'], schema: { path: z.object({ task_id: z.string().describe('Task id').optional() }).optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ExportMeetingList = { project: 'vc', name: 'vc.v1.export.meetingList', sdkName: 'vc.v1.export.meetingList', path: '/open-apis/vc/v1/exports/meeting_list', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Export-Export meeting details-Export meeting details. For specific permission requirements, please refer to "Resource introduction"', accessTokens: ['tenant', 'user'], schema: { data: z.object({ start_time: z.string().describe('Query start time (unix time, unit sec)'), end_time: z.string().describe('Query end time (unix time, unit sec)'), meeting_status: z .number() .describe( 'Meeting status (defaults to ended meeting if not passed on) Options:1(ongoing in progress),2(past It has ended.),3(future to be held)', ) .optional(), meeting_no: z.string().describe('Filter by 9-digit meeting number (up to one filter)').optional(), user_id: z.string().describe('Filter by participating Lark users (up to one filter)').optional(), room_id: z.string().describe('Filter by Rooms (maximum one filter)').optional(), meeting_type: z .number() .describe( 'Filter by meeting type (up to one filter) Options:1(all All types (default)),2(meeting video conferencing),3(share_screen share screen)', ) .optional(), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ExportParticipantList = { project: 'vc', name: 'vc.v1.export.participantList', sdkName: 'vc.v1.export.participantList', path: '/open-apis/vc/v1/exports/participant_list', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Export-Export participant details-Export a list of participant details for a conference.For specific permission requirements, please refer to "Resource introduction"', accessTokens: ['tenant', 'user'], schema: { data: z.object({ meeting_start_time: z.string().describe('Meeting start time (unix time,unit second)'), meeting_end_time: z .string() .describe( 'Meeting end time (Unix time, unit sec, if the meeting is in progress, fill in the current time, otherwise fill in the accurate meeting end time)', ), meeting_status: z .number() .describe( 'Meeting status (defaults to ended meeting if not passed on) Options:1(ongoing in progress),2(past It has ended.),3(future to be held)', ) .optional(), meeting_no: z.string().describe('9-Digit conference number'), user_id: z.string().describe('Filter by participating Lark users (up to one filter)').optional(), room_id: z.string().describe('Filter by Rooms (maximum one filter)').optional(), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ExportParticipantQualityList = { project: 'vc', name: 'vc.v1.export.participantQualityList', sdkName: 'vc.v1.export.participantQualityList', path: '/open-apis/vc/v1/exports/participant_quality_list', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Export-Export participant meeting quality data-Export audio and video & share quality data of a participant in a conference,(Only supports ended meetings.) please refer to "Resource introduction" for specific permission requirements', accessTokens: ['tenant', 'user'], schema: { data: z.object({ meeting_start_time: z .string() .describe('Meeting start time (need to be accurate to the minute,unix time,unit second)'), meeting_end_time: z.string().describe('Meeting end time (unix time, unit sec)'), meeting_no: z.string().describe('9-Digit conference number'), join_time: z .string() .describe( 'Entry time of participants (unix time, unit sec).It can be obtained from the results returned by "Participant Details"', ), user_id: z .string() .describe('Fill in when the participant is a Lark user, and room_id and user_id must be filled in only one') .optional(), room_id: z .string() .describe('Fill in when the participant is a Room, and room_id and user_id must be filled in only one') .optional(), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ExportResourceReservationList = { project: 'vc', name: 'vc.v1.export.resourceReservationList', sdkName: 'vc.v1.export.resourceReservationList', path: '/open-apis/vc/v1/exports/resource_reservation_list', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Export-Export meeting room reservation data-Export meeting room reservation data. For specific permission requirements, please refer to "Resource introduction"', accessTokens: ['tenant', 'user'], schema: { data: z.object({ room_level_id: z.string().describe('room level id'), need_topic: z.boolean().describe('Whether to show the conference theme').optional(), start_time: z.string().describe('Query start time (unix time, unit sec)'), end_time: z.string().describe('Query end time (unix time, unit sec)'), room_ids: z.array(z.string()).describe('List of meeting room ids to filter').optional(), is_exclude: z .boolean() .describe( 'If true, it means that the conference room outside the scope of the export room_ids, the default is false', ) .optional(), }), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1MeetingListGet = { project: 'vc', name: 'vc.v1.meetingList.get', sdkName: 'vc.v1.meetingList.get', path: '/open-apis/vc/v1/meeting_list', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting data-Get meeting details-Get meeting details.For specific permission requirements, please refer to "Resource introduction"', accessTokens: ['tenant', 'user'], schema: { params: z.object({ start_time: z.string().describe('Start time (unix time, in sec)'), end_time: z.string().describe('End time (unix time, in sec)'), meeting_status: z .number() .describe( 'meeting status(defaults to ended meeting if not passed on) Options:1(ongoing in progress),2(past It has ended.),3(future to be held. This enumeration value is read-only and does not support selection during request.)', ) .optional(), meeting_no: z.string().describe('Filter by 9-digit meeting number (at most one filter)').optional(), user_id: z.string().describe('Filter by participating Lark users (at most one filter)').optional(), room_id: z.string().describe('Filter by Participating Rooms (at most one filter)').optional(), meeting_type: z .number() .describe( 'Filter by meeting type (up to one filter) Options:1(all All types (default)),2(meeting video conferencing),3(share_screen share screen)', ) .optional(), page_size: z.number().describe('paging size').optional(), page_token: z .string() .describe( 'Page identifier. It is not filled in the first request, indicating traversal from the beginning; when there will be more groups, the new page_token will be returned at the same time, and the next traversal can use the page_token to get more groups', ) .optional(), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1MeetingEnd = { project: 'vc', name: 'vc.v1.meeting.end', sdkName: 'vc.v1.meeting.end', path: '/open-apis/vc/v1/meetings/:meeting_id/end', httpMethod: 'PATCH', description: '[Feishu/Lark]-Video Conferencing-Meeting management-End a meeting-Ends an ongoing meeting', accessTokens: ['user'], schema: { path: z .object({ meeting_id: z .string() .describe('Meeting ID (Unique identifier of a video conference, generated after the conference is started)') .optional(), }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1MeetingGet = { project: 'vc', name: 'vc.v1.meeting.get', sdkName: 'vc.v1.meeting.get', path: '/open-apis/vc/v1/meetings/:meeting_id', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting management-Obtain meeting details-Obtains the detailed data of a meeting', accessTokens: ['tenant', 'user'], schema: { params: z .object({ with_participants: z.boolean().describe('Indicates whether the participant list is required').optional(), with_meeting_ability: z .boolean() .describe('Indicates whether individual statistics is required in the meeting (only for tenant_access_token)') .optional(), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }) .optional(), path: z .object({ meeting_id: z .string() .describe('Meeting ID (Unique identifier of a video conference, generated after the conference is started)') .optional(), }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1MeetingInvite = { project: 'vc', name: 'vc.v1.meeting.invite', sdkName: 'vc.v1.meeting.invite', path: '/open-apis/vc/v1/meetings/:meeting_id/invite', httpMethod: 'PATCH', description: '[Feishu/Lark]-Video Conferencing-Meeting management-Invite participants-Invites participants to a meeting', accessTokens: ['user'], schema: { data: z.object({ invitees: z .array( z.object({ id: z.string().describe('User ID').optional(), user_type: z .number() .describe( 'User type Options:1(lark_user Lark user),2(room_user Rooms user),3(doc_user Docs user),4(neo_user neo Feishu Meetings user),5(neo_guest_user neo Feishu Meetings guest),6(pstn_user PSTN user),7(sip_user SIP user)', ) .optional(), }), ) .describe('List of invited users [Up to 10 people can be invited at one time]'), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), path: z .object({ meeting_id: z .string() .describe('Meeting ID (Unique identifier of a video conference, generated after the conference is started)') .optional(), }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1MeetingKickout = { project: 'vc', name: 'vc.v1.meeting.kickout', sdkName: 'vc.v1.meeting.kickout', path: '/open-apis/vc/v1/meetings/:meeting_id/kickout', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Meeting management-Remove participants-Removes participants from a meeting', accessTokens: ['tenant'], schema: { data: z.object({ kickout_users: z .array( z.object({ id: z.string().describe('User ID').optional(), user_type: z .number() .describe( 'User type Options:1(lark_user Lark user),2(room_user Rooms user),3(doc_user Docs user),4(neo_user neo Feishu Meetings user),5(neo_guest_user neo Feishu Meetings guest),6(pstn_user PSTN user),7(sip_user SIP user)', ) .optional(), }), ) .describe('List of users to be removed'), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), path: z.object({ meeting_id: z.string().describe('Meeting ID').optional() }).optional(), }, }; export const vcV1MeetingListByNo = { project: 'vc', name: 'vc.v1.meeting.listByNo', sdkName: 'vc.v1.meeting.listByNo', path: '/open-apis/vc/v1/meetings/list_by_no', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting management-List meetings of same meeting number-Obtains the meeting brief list associated with the meeting number for a specified time period (within 90 days)', accessTokens: ['tenant', 'user'], schema: { params: z.object({ meeting_no: z.string().describe('9-digit meeting number'), start_time: z.string().describe('Query start time (unix time in sec)'), end_time: z.string().describe('Query end time (unix time in sec)'), page_token: z .string() .describe( 'Page identifier. It is not filled in the first request, indicating traversal from the beginning; when there will be more groups, the new page_token will be returned at the same time, and the next traversal can use the page_token to get more groups', ) .optional(), page_size: z.number().optional(), }), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1MeetingRecordingGet = { project: 'vc', name: 'vc.v1.meetingRecording.get', sdkName: 'vc.v1.meetingRecording.get', path: '/open-apis/vc/v1/meetings/:meeting_id/recording', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting record-Obtain recording files-Obtain recording files of a meeting.', accessTokens: ['tenant', 'user'], schema: { path: z .object({ meeting_id: z .string() .describe('Meeting ID (Unique identifier of a video conference, generated after the conference is started)') .optional(), }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1MeetingRecordingSetPermission = { project: 'vc', name: 'vc.v1.meetingRecording.setPermission', sdkName: 'vc.v1.meetingRecording.setPermission', path: '/open-apis/vc/v1/meetings/:meeting_id/recording/set_permission', httpMethod: 'PATCH', description: "[Feishu/Lark]-Video Conferencing-Meeting record-Authorize recording files-Authorizes a meeting's recording files to an organization/user or makes them public to the public network", accessTokens: ['user'], schema: { data: z.object({ permission_objects: z .array( z.object({ id: z.string().describe('Authorization object ID').optional(), type: z .number() .describe( 'Authorization object type Options:1(User User authorization (fill in the user ID in the id field)),2(Group Group authorization (fill in the group open_chat_id in the id field)),3(Tenant In-tenant authorization (id field not filled in)),4(Public Public network authorization (id field is not filled in))', ), permission: z.number().describe('permission Options:1(View)'), }), ) .describe('List of authorized objects'), action_type: z .number() .describe( 'Authorize or cancel authorization, default authorization Options:0(authorize authorization),1(revoke Cancel authorization)', ) .optional(), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), path: z .object({ meeting_id: z .string() .describe( 'Meeting ID (unique identifier of the video conference, which will not be generated until the video conference starts)', ) .optional(), }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1MeetingRecordingStart = { project: 'vc', name: 'vc.v1.meetingRecording.start', sdkName: 'vc.v1.meetingRecording.start', path: '/open-apis/vc/v1/meetings/:meeting_id/recording/start', httpMethod: 'PATCH', description: '[Feishu/Lark]-Video Conferencing-Meeting record-Start recording-Start recording in a meeting.', accessTokens: ['user'], schema: { data: z .object({ timezone: z.number().describe('Time zone used for displaying the file recording time [-12,12]').optional(), }) .optional(), path: z .object({ meeting_id: z .string() .describe('Meeting ID (Unique identifier of video conference, generated after the conference is started)') .optional(), }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1MeetingRecordingStop = { project: 'vc', name: 'vc.v1.meetingRecording.stop', sdkName: 'vc.v1.meetingRecording.stop', path: '/open-apis/vc/v1/meetings/:meeting_id/recording/stop', httpMethod: 'PATCH', description: '[Feishu/Lark]-Video Conferencing-Meeting record-Stop recording-Stop recording in the meeting.', accessTokens: ['user'], schema: { path: z .object({ meeting_id: z .string() .describe('Meeting ID (Unique identifier of a video conference, generated after the conference is started)') .optional(), }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1MeetingSetHost = { project: 'vc', name: 'vc.v1.meeting.setHost', sdkName: 'vc.v1.meeting.setHost', path: '/open-apis/vc/v1/meetings/:meeting_id/set_host', httpMethod: 'PATCH', description: '[Feishu/Lark]-Video Conferencing-Meeting management-Set meeting host-Sets a host for a meeting', accessTokens: ['tenant', 'user'], schema: { data: z.object({ host_user: z .object({ id: z.string().describe('User ID').optional(), user_type: z .number() .describe( 'User type Options:1(lark_user Lark user),2(room_user Rooms user),3(doc_user Docs user),4(neo_user neo Feishu Meetings user),5(neo_guest_user neo Feishu Meetings guest),6(pstn_user PSTN user),7(sip_user SIP user)', ) .optional(), }) .describe('The user to be set as the host'), old_host_user: z .object({ id: z.string().describe('User ID').optional(), user_type: z .number() .describe( 'User type Options:1(lark_user Lark user),2(room_user Rooms user),3(doc_user Docs user),4(neo_user neo Feishu Meetings user),5(neo_guest_user neo Feishu Meetings guest),6(pstn_user PSTN user),7(sip_user SIP user)', ) .optional(), }) .describe( 'Current host (CAS concurrency security: If this field is inconsistent with the current host in the meeting, the setting will fail. Try again by using the latest returned data.)', ) .optional(), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), path: z .object({ meeting_id: z .string() .describe('Meeting ID (Unique identifier of a video conference, generated after the conference is started)') .optional(), }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ParticipantListGet = { project: 'vc', name: 'vc.v1.participantList.get', sdkName: 'vc.v1.participantList.get', path: '/open-apis/vc/v1/participant_list', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting data-Get participant details-Get participant details. For specific permission requirements, please refer to "Resource introduction"', accessTokens: ['tenant', 'user'], schema: { params: z.object({ meeting_start_time: z.string().describe('Meeting start time(unix time,unit second)'), meeting_end_time: z .string() .describe( 'Meeting end time (Unix time, unit sec, if the meeting is in progress, fill in the current time, otherwise fill in the accurate meeting end time)', ), meeting_status: z .number() .describe( 'Meeting status (defaults to ended meeting if not passed on) Options:1(ongoing in progress),2(past It has ended.),3(future to be held)', ) .optional(), meeting_no: z.string().describe('Meeting number'), user_id: z.string().describe('User ID').optional(), room_id: z.string().describe('Room ID').optional(), page_size: z.number().describe('paging size').optional(), page_token: z .string() .describe( 'Page identifier. It is not filled in the first request, indicating traversal from the beginning; when there will be more groups, the new page_token will be returned at the same time, and the next traversal can use the page_token to get more groups', ) .optional(), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ParticipantQualityListGet = { project: 'vc', name: 'vc.v1.participantQualityList.get', sdkName: 'vc.v1.participantQualityList.get', path: '/open-apis/vc/v1/participant_quality_list', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting data-Get participant meeting quality data-Get participant meeting quality data.(Only supports ended meetings) For specific permission requirements, please refer to "Resource introduction"', accessTokens: ['tenant', 'user'], schema: { params: z.object({ meeting_start_time: z .string() .describe('Meeting start time(need to be accurate to the minute,unix time,unit second)'), meeting_end_time: z.string().describe('Meeting end time'), meeting_no: z.string().describe('Meeting number'), join_time: z .string() .describe('Time of joining the meeting.It can be obtained from the results returned by "Participant Details"'), user_id: z .string() .describe( 'User ID.Fill in when the participant is a Lark user, and room_id and user_id must be filled in only one', ) .optional(), room_id: z .string() .describe('Room ID.Fill in when the participant is a Room, and room_id and user_id must be filled in only one') .optional(), page_size: z.number().optional(), page_token: z .string() .describe( 'Page identifier. It is not filled in the first request, indicating traversal from the beginning; when there will be more groups, the new page_token will be returned at the same time, and the next traversal can use the page_token to get more groups', ) .optional(), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ReportGetDaily = { project: 'vc', name: 'vc.v1.report.getDaily', sdkName: 'vc.v1.report.getDaily', path: '/open-apis/vc/v1/reports/get_daily', httpMethod: 'GET', description: "[Feishu/Lark]-Video Conferencing-Meeting report-Obtain meeting reports-Obtains an organizations' daily meeting usage reports for a period of time", accessTokens: ['tenant'], schema: { params: z.object({ start_time: z.string().describe('Start time (unix time in sec)'), end_time: z.string().describe('End time (unix time in sec)'), unit: z .number() .describe( 'Data residency (the premise of parameter transfer is that the tenant has multiple residency data and the query function is enabled) Options:0(CN Chinese mainland),1(VA United States),2(SG Singapore),3(JP Japan)', ) .optional(), }), }, }; export const vcV1ReportGetTopUser = { project: 'vc', name: 'vc.v1.report.getTopUser', sdkName: 'vc.v1.report.getTopUser', path: '/open-apis/vc/v1/reports/get_top_user', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting report-Get top user list-Obtains the list of top users who use the Meetings feature most in an organization for a period of time', accessTokens: ['tenant'], schema: { params: z.object({ start_time: z.string().describe('Start time (unix time in sec)'), end_time: z.string().describe('End time (unix time in sec)'), limit: z.number().describe('Number of users to be obtained'), order_by: z .number() .describe( 'Sorting criteria (descending) Options:1(meeting_count Number of meetings),2(meeting_duration Meeting duration)', ), unit: z .number() .describe( 'Data residency (the premise of parameter transfer is that the tenant has multiple residency data and the query function is enabled) Options:0(CN Chinese mainland),1(VA United States),2(SG Singapore),3(JP Japan)', ) .optional(), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }), }, }; export const vcV1ReserveConfigAdminGet = { project: 'vc', name: 'vc.v1.reserveConfigAdmin.get', sdkName: 'vc.v1.reserveConfigAdmin.get', path: '/open-apis/vc/v1/reserve_configs/:reserve_config_id/admin', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting room configuration-Get reserve admin-Get reserve admin', accessTokens: ['tenant'], schema: { params: z.object({ scope_type: z.number().describe('1 means room level, 2 means room'), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }), path: z.object({ reserve_config_id: z.string().describe('Room ID or room level ID').optional() }).optional(), }, }; export const vcV1ReserveConfigAdminPatch = { project: 'vc', name: 'vc.v1.reserveConfigAdmin.patch', sdkName: 'vc.v1.reserveConfigAdmin.patch', path: '/open-apis/vc/v1/reserve_configs/:reserve_config_id/admin', httpMethod: 'PATCH', description: '[Feishu/Lark]-Video Conferencing-Meeting room configuration-Update reserve admin-Update reserve admin', accessTokens: ['tenant'], schema: { data: z.object({ scope_type: z.number().describe('1 means room level, 2 means room'), reserve_admin_config: z .object({ depts: z .array(z.object({ department_id: z.string().describe('Reserve admin department ID') })) .describe('Reserve admin departments') .optional(), users: z .array(z.object({ user_id: z.string().describe('Reserve admin user ID') })) .describe('Reserve admin users') .optional(), }) .describe('Reserve admin configuration'), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), path: z.object({ reserve_config_id: z.string().describe('Room level ID or Room ID').optional() }).optional(), }, }; export const vcV1ReserveConfigDisableInformGet = { project: 'vc', name: 'vc.v1.reserveConfigDisableInform.get', sdkName: 'vc.v1.reserveConfigDisableInform.get', path: '/open-apis/vc/v1/reserve_configs/:reserve_config_id/disable_inform', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting room configuration-Get disable status change notifications-Get disable status change notifications', accessTokens: ['tenant'], schema: { params: z.object({ scope_type: z.number().describe('1 means level, 2 means room'), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }), path: z.object({ reserve_config_id: z .string() .describe('Room or level ID which can be obtained by room or level related query interface'), }), }, }; export const vcV1ReserveConfigDisableInformPatch = { project: 'vc', name: 'vc.v1.reserveConfigDisableInform.patch', sdkName: 'vc.v1.reserveConfigDisableInform.patch', path: '/open-apis/vc/v1/reserve_configs/:reserve_config_id/disable_inform', httpMethod: 'PATCH', description: '[Feishu/Lark]-Video Conferencing-Meeting room configuration-Update disable status change notifications-Update disable status change notifications', accessTokens: ['tenant'], schema: { data: z.object({ scope_type: z.number().describe('1 means room level, 2 means room'), disable_inform: z .object({ if_cover_child_scope: z.boolean().describe('Whether to cover sub-levels and meeting rooms').optional(), if_inform: z.boolean().describe('Disable status change notification switch'), informed_users: z .array(z.object({ user_id: z.string().describe('Reserve admin user ID') })) .describe('Notify member list') .optional(), informed_depts: z .array(z.object({ department_id: z.string().describe('Reserve admin department ID') })) .describe('Notification departments list') .optional(), }) .describe('Configuration for disable status change notifications'), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), path: z.object({ reserve_config_id: z.string().describe('Room or level ID') }), }, }; export const vcV1ReserveConfigFormGet = { project: 'vc', name: 'vc.v1.reserveConfigForm.get', sdkName: 'vc.v1.reserveConfigForm.get', path: '/open-apis/vc/v1/reserve_configs/:reserve_config_id/form', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting room configuration-Get reserve form-Get reserve form', accessTokens: ['tenant'], schema: { params: z.object({ scope_type: z.number().describe('1 means room level, 2 means room'), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }), path: z.object({ reserve_config_id: z.string().describe('room or room level ID').optional() }).optional(), }, }; export const vcV1ReserveConfigFormPatch = { project: 'vc', name: 'vc.v1.reserveConfigForm.patch', sdkName: 'vc.v1.reserveConfigForm.patch', path: '/open-apis/vc/v1/reserve_configs/:reserve_config_id/form', httpMethod: 'PATCH', description: '[Feishu/Lark]-Video Conferencing-Meeting room configuration-Update reserve form-Update reserve form', accessTokens: ['tenant'], schema: { data: z.object({ scope_type: z.number().describe('1 means room level, 2 means room'), reserve_form_config: z .object({ if_cover_child_scope: z.boolean().describe('need cover child scope').optional(), reserve_form: z.boolean().describe('Reserve form switch, true means open, false means close'), notified_users: z .array(z.object({ user_id: z.string().describe('Reserve admin user ID') })) .describe('List of notifiers') .optional(), notified_time: z .number() .describe( 'notified_time that no later than the start of the meeting when receiving the notification (unit: minute/hour/day)', ) .optional(), time_unit: z.number().describe('Time unit, 1 is minute; 2 is hour; 3 is day, default is day').optional(), }) .describe('Reserve form configuration'), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), path: z.object({ reserve_config_id: z.string().describe('Room ID or room level ID').optional() }).optional(), }, }; export const vcV1ReserveConfigPatch = { project: 'vc', name: 'vc.v1.reserveConfig.patch', sdkName: 'vc.v1.reserveConfig.patch', path: '/open-apis/vc/v1/reserve_configs/:reserve_config_id', httpMethod: 'PATCH', description: '[Feishu/Lark]-Video Conferencing-Meeting room configuration-Update reserve limitation-Update reserve limitation', accessTokens: ['tenant'], schema: { data: z.object({ scope_type: z.string().describe('1 means level, 2 means room'), approval_config: z .object({ approval_switch: z .number() .describe( 'approval_switch: 0 means closed, 1 means open.<b>Note</b>: 1. If the value is not set, the value of the original switch will not be updated, but the approval_condition is required at this time2. When the value is set to 1, approval_condition is required3. When the value is set to 0, other fields of the entire approval_config can be omitted', ) .optional(), approval_condition: z .number() .describe( 'approval_condition: 0 means that all reservations require approval, 1 means that approval is required for those that meet the conditions<b>Note</b>: meeting_duration is required when approval_condition is 1', ) .optional(), meeting_duration: z .number() .describe( 'bookings exceeding meeting_duration need to be approved (unit: hour, value range [0.1-99])<b>Note</b>: 1. When the approval_condition is 0, if the value is not set when updating, the default update is 99.2. If the incoming value exceeds 2 decimal places, it will be automatically rounded to the nearest 2 digits', ) .optional(), approvers: z .array(z.object({ user_id: z.string().describe('Reserve admin user ID') })) .describe('Approvers list, when the approval_switch is 1, at least one approver needs to be set') .optional(), }) .describe('reservation approval settings') .optional(), time_config: z .object({ if_cover_child_scope: z.boolean().describe('Whether to cover sub-levels and meeting rooms').optional(), time_switch: z.number().describe('reservation time switch: 0 for off, 1 for on'), days_in_advance: z .number() .describe( 'the earliest time when the conference room can be reserved in advance (unit: day, value range [1-730])<b>Note</b>: When not filled in, the default update is 365', ) .optional(), opening_hour: z .string() .describe( 'You can start booking from opening_hour on the opening day (unit: second, value range [0,86400])<b>Note</b>: 1. If not filled in, it will be updated to 28800 by default2. If the filled value is not a multiple of 60, it will be automatically updated to the nearest integer multiple of 60', ) .optional(), start_time: z .string() .describe( 'The start time of the daily scheduled time range (unit: second, value range [0,86400])<b>Note</b>: 1. When not filled in, it will be updated to 0 by default, and the end_time filled in at this time must not be less than 30.2. When both start_time and end_time are filled in, end_time should be at least 30 times longer than start_time.3. If the filled value is not a multiple of 60, it will be automatically updated to the nearest integer multiple of 60', ) .optional(), end_time: z .string() .describe( 'End time of daily pre-determinable time range (unit: second, value range [0,86400])<b>Note</b>: 1. When not filled in, the default update is 86400, and the start_time filled in at this time must not be greater than or equal to 86370.2. When both start_time and end_time are filled in, end_time must be at least 30 longer than start_time.3. If the filled value is not a multiple of 60, it will be automatically updated to the nearest integer multiple of 60', ) .optional(), max_duration: z .number() .describe( 'The upper limit of the duration of a single conference room reservation (unit: hour, value range [1,99])<b>Note</b>: The default update is 2 when not filled in', ) .optional(), }) .describe('reservation time settings') .optional(), reserve_scope_config: z .object({ if_cover_child_scope: z.boolean().describe('Whether to cover sub-levels and meeting rooms').optional(), allow_all_users: z .number() .describe( 'The range of members that can book conference: 0 for some members, 1 for all members.<b>Note</b>: 1. This value is required.2. When set to 0, at least 1 reservation department or reservation person is required', ) .optional(), allow_users: z .array(z.object({ user_id: z.string().describe('Reserve admin user ID') })) .describe('List of available members') .optional(), allow_depts: z .array(z.object({ department_id: z.string().describe('Reserve admin department ID') })) .describe('List of available departments') .optional(), }) .describe('reservation range settings') .optional(), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), path: z.object({ reserve_config_id: z.string().describe('room id or room level id') }), }, }; export const vcV1ReserveConfigReserveScope = { project: 'vc', name: 'vc.v1.reserveConfig.reserveScope', sdkName: 'vc.v1.reserveConfig.reserveScope', path: '/open-apis/vc/v1/reserve_configs/reserve_scope', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting room configuration-Get reserve limitation-Get reserve limitation', accessTokens: ['tenant'], schema: { params: z.object({ scope_id: z.string().describe('room id or room level id'), scope_type: z.string().describe('1 means room level, 2 means room'), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }), }, }; export const vcV1ReserveApply = { project: 'vc', name: 'vc.v1.reserve.apply', sdkName: 'vc.v1.reserve.apply', path: '/open-apis/vc/v1/reserves/apply', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Meeting reservation-Schedule a meeting-Creates a meeting scheduling', accessTokens: ['tenant', 'user'], schema: { data: z.object({ end_time: z .string() .describe('Expiration time (Unix time in seconds), which is required for multi-person meetings') .optional(), owner_id: z .string() .describe( 'Assign meeting owner (Only take effect when using tenant_access_token. Will not take effect when using user_access_token). Must assign user with the same tenant', ) .optional(), meeting_settings: z .object({ topic: z.string().describe('Meeting topic').optional(), action_permissions: z .array( z.object({ permission: z .number() .describe( 'Permission options Options:1(can_be_host Whether a participant can be a host),2(can_invite Whether a participant can invite other participants),3(can_join Whether a participant can join a meeting)', ), permission_checkers: z .array( z.object({ check_field: z .number() .describe( 'Type of the fields to be checked Options:1(user_id User ID (check_list fill in the user ID)),2(user_type User type (check_list optional values are"1": lark user,"2": rooms users,"6": pstn users,"7": sip user)),3(tenant_id Tenant ID (check_list fill in the tenant_key))', ), check_mode: z .number() .describe( 'Check method Options:1(within Being in the check_list indicates that the participant has the permission (allowlist)),2(without Not being in the check_list indicates that the participant has the permission (blocklist))', ), check_list: z .array(z.string()) .describe( 'Check the list of fields (fill in the corresponding content according to the type of check_field)', ), }), ) .describe( 'List of permission checkers. The relationship between permission checkers is "Logical OR" (that is, the permission is obtained if any one of them is true)', ), }), ) .describe( 'List of permission configurations for a meeting. If the same configuration option exists, the relationship between them is "Logical OR" (that is, the permission is obtained if any one of them is true)', ) .optional(), meeting_initial_type: z .number() .describe( 'Initial type of meeting Options:1(group_meeting Multi-person meeting),2(call 1v1 calling(Only support PSTN))', ) .optional(), meeting_connect: z .boolean() .describe( 'Whether the meeting supports interoperability and does not support updates (Note: This field is in closed beta)', ) .optional(), call_setting: z .object({ callee: z .object({ id: z.string().describe('User ID').optional(), user_type: z .number() .describe( 'User type. Only user type 6 (PSTN user) is supported. Options:1(lark_user Lark user),2(room_user Rooms user),3(doc_user Docs user),4(neo_user neo Feishu Meetings user),5(neo_guest_user neo Feishu Meetings guest),6(pstn_user PSTN user),7(sip_user SIP user)', ), pstn_sip_info: z .object({ nickname: z.string().describe('Temporary nickname set for a PSTN/SIP user').optional(), main_address: z .string() .describe( 'PSTN/SIP host number, in the format of [International Access Code]-[Area Code][Phone Number]. Only domestic mobile numbers and fixed-line telephone numbers are supported', ), }) .describe('PSTN/SIP information') .optional(), }) .describe('User being called'), }) .describe('1v1 calling related parameters') .optional(), auto_record: z .boolean() .describe('Whether to enable automatic recording when using Feishu video conference, the default is false') .optional(), assign_host_list: z .array( z.object({ user_type: z.number().describe('User type Options:1(lark_user Lark user)').optional(), id: z.string().describe('User ID').optional(), }), ) .describe('Assign host list params') .optional(), password: z .string() .describe( "Set the meeting password. If you don't pass it, it will decide whether to use the password and assign a random password according to your personal settings. If you pass it empty, it will not use the password. If you pass 4-9 digits, it will set the password", ) .optional(), }) .describe('Meeting settings'), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ReserveDelete = { project: 'vc', name: 'vc.v1.reserve.delete', sdkName: 'vc.v1.reserve.delete', path: '/open-apis/vc/v1/reserves/:reserve_id', httpMethod: 'DELETE', description: '[Feishu/Lark]-Video Conferencing-Meeting reservation-Delete a schedule-Deletes a schedule', accessTokens: ['tenant', 'user'], schema: { path: z .object({ reserve_id: z.string().describe('Schedule ID (unique identifier for a schedule)').optional() }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ReserveGet = { project: 'vc', name: 'vc.v1.reserve.get', sdkName: 'vc.v1.reserve.get', path: '/open-apis/vc/v1/reserves/:reserve_id', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting reservation-Obtain a schedule-Obtains details about a schedule', accessTokens: ['tenant', 'user'], schema: { params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), path: z .object({ reserve_id: z.string().describe('Schedule ID (unique identifier of a schedule)').optional() }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ReserveGetActiveMeeting = { project: 'vc', name: 'vc.v1.reserve.getActiveMeeting', sdkName: 'vc.v1.reserve.getActiveMeeting', path: '/open-apis/vc/v1/reserves/:reserve_id/get_active_meeting', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting reservation-Obtain an active meeting-Obtains a scheduled meeting that is currently active', accessTokens: ['tenant', 'user'], schema: { params: z .object({ with_participants: z .boolean() .describe('Whether the participant list is required. The default value is false') .optional(), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }) .optional(), path: z .object({ reserve_id: z.string().describe('Schedule ID (unique identifier for a schedule)').optional() }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ReserveUpdate = { project: 'vc', name: 'vc.v1.reserve.update', sdkName: 'vc.v1.reserve.update', path: '/open-apis/vc/v1/reserves/:reserve_id', httpMethod: 'PUT', description: '[Feishu/Lark]-Video Conferencing-Meeting reservation-Update a schedule-Updates a schedule', accessTokens: ['tenant', 'user'], schema: { data: z .object({ end_time: z.string().describe('Expiration time (Unix time in seconds)').optional(), meeting_settings: z .object({ topic: z.string().describe('Meeting topic').optional(), action_permissions: z .array( z.object({ permission: z .number() .describe( 'Permission options Options:1(can_be_host Whether a participant can be a host),2(can_invite Whether a participant can invite other participants),3(can_join Whether a participant can join a meeting)', ), permission_checkers: z .array( z.object({ check_field: z .number() .describe( 'Type of the fields to be checked Options:1(user_id User ID (check_list fill in the user ID)),2(user_type User type (check_list optional values are"1": lark user,"2": rooms users,"6": pstn users,"7": sip user)),3(tenant_id Tenant ID (check_list fill in the tenant_key))', ), check_mode: z .number() .describe( 'Check method Options:1(within Being in the check_list indicates that the participant has the permission (allowlist)),2(without Not being in the check_list indicates that the participant has the permission (blocklist))', ), check_list: z .array(z.string()) .describe( 'Check the list of fields (fill in the corresponding content according to the type of check_field)', ), }), ) .describe( 'List of permission checkers. The relationship between permission checkers is "Logical OR" (that is, the permission is obtained if any one of them is true)', ), }), ) .describe( 'List of permission configurations for a meeting. If the same configuration option exists, the relationship between them is "Logical OR" (that is, the permission is obtained if any one of them is true)', ) .optional(), meeting_initial_type: z .number() .describe('Initial type of meeting Options:1(group_meeting Multi-person meeting),2(call 1v1 calling)') .optional(), meeting_connect: z .boolean() .describe( 'Whether the meeting supports interoperability and does not support updates (Note: This field is in closed beta)', ) .optional(), call_setting: z .object({ callee: z .object({ id: z.string().describe('User ID').optional(), user_type: z .number() .describe( 'User type. Only user type 6 (PSTN user) is supported. Options:1(lark_user Lark user),2(room_user Rooms user),3(doc_user Docs user),4(neo_user neo Feishu Meetings user),5(neo_guest_user neo Feishu Meetings guest),6(pstn_user PSTN user),7(sip_user SIP user)', ), pstn_sip_info: z .object({ nickname: z.string().describe('Temporary nickname set for a PSTN/SIP user').optional(), main_address: z .string() .describe( 'PSTN/SIP host number, in the format of [International Access Code]-[Area Code][Phone Number]. Only domestic mobile numbers and fixed-line telephone numbers are supported', ), }) .describe('PSTN/SIP information') .optional(), }) .describe('User being called'), }) .describe('1v1 calling related parameters') .optional(), auto_record: z .boolean() .describe( 'Whether to enable automatic recording when using Feishu video conference, the default is false', ) .optional(), assign_host_list: z .array( z.object({ user_type: z.number().describe('User type Options:1(lark_user Lark user)').optional(), id: z.string().describe('User ID').optional(), }), ) .describe('Assign host list params') .optional(), password: z .string() .describe( "Set the meeting password. If you don't pass it, it will decide whether to use the password and assign a random password according to your personal settings. If you pass it empty, it will not use the password. If you pass 4-9 digits, it will set the password", ) .optional(), }) .describe('Meeting settings') .optional(), }) .optional(), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), path: z .object({ reserve_id: z.string().describe('Schedule ID (unique identifier of a schedule)').optional() }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ResourceReservationListGet = { project: 'vc', name: 'vc.v1.resourceReservationList.get', sdkName: 'vc.v1.resourceReservationList.get', path: '/open-apis/vc/v1/resource_reservation_list', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting data-Get meeting room reservation data-Get meeting room reservation data. For specific permission requirements, please refer to "Resource introduction"', accessTokens: ['tenant', 'user'], schema: { params: z.object({ room_level_id: z .string() .describe( 'Room level ID, if pass an exception ID that is not prefixed with omb, the tenant level will be used by default for evasion', ), need_topic: z.boolean().describe('Whether the response returns meeting topic').optional(), start_time: z.string().describe('Start time'), end_time: z.string().describe('End time'), room_ids: z .array(z.string()) .describe( 'List of meeting room IDs. list. If multiple conference room IDs need to be passed, they need to be passed in the form of room_ids=aaaa&room_ids=bbbb&room_ids=cccc', ), is_exclude: z .boolean() .describe( 'Whether exclude the list of meeting room IDs, the default is false; if it is false, the room list reservation data passed in the room_ids field is obtained; if it is true, the room list under the level is obtained based on the room_level_id field, and the rooms in the room_ids range are filtered out to obtain the remaining rooms schedule data', ) .optional(), page_size: z.number().optional(), page_token: z .string() .describe( 'Page identifier. It is not filled in the first request, indicating traversal from the beginning; when there will be more groups, the new page_token will be returned at the same time, and the next traversal can use the page_token to get more groups', ) .optional(), }), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1RoomConfigQuery = { project: 'vc', name: 'vc.v1.roomConfig.query', sdkName: 'vc.v1.roomConfig.query', path: '/open-apis/vc/v1/room_configs/query', httpMethod: 'GET', description: '[Feishu/Lark]-Deprecated Version (Not Recommended)-Rooms-Rooms configuration-Query meeting room configuration-Queries room configurations within a scope', accessTokens: ['tenant'], schema: { params: z.object({ scope: z .number() .describe('Query node scope Options:1(tenant ),2(country_district ),3(city ),4(building ),5(floor ),6(room )'), country_id: z .string() .describe('The parameter is required when the country/region ID scope is 2 or 3') .optional(), district_id: z.string().describe('The parameter is required when the city ID scope is 3').optional(), building_id: z.string().describe('The parameter is required when the building ID scope is 4 or 5').optional(), floor_name: z.string().describe('The parameter is required when the floor scope is 5').optional(), room_id: z.string().describe('The parameter is required when the room ID scope is 6').optional(), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }), }, }; export const vcV1RoomConfigSet = { project: 'vc', name: 'vc.v1.roomConfig.set', sdkName: 'vc.v1.roomConfig.set', path: '/open-apis/vc/v1/room_configs/set', httpMethod: 'POST', description: '[Feishu/Lark]-Deprecated Version (Not Recommended)-Rooms-Rooms configuration-Set up meeting room configuration-Sets room configurations within a scope', accessTokens: ['tenant'], schema: { data: z.object({ scope: z .number() .describe( 'Set node scope Options:1(tenant),2(country_district Country/region),3(city),4(building),5(floor),6(room)', ), country_id: z .string() .describe('The parameter is required when the country/region ID scope is 2 or 3') .optional(), district_id: z.string().describe('The parameter is required when the city ID scope is 3').optional(), building_id: z.string().describe('The parameter is required when the building ID scope is 4 or 5').optional(), floor_name: z.string().describe('The parameter is required when the floor scope is 5').optional(), room_id: z.string().describe('The parameter is required when the room ID scope is 6').optional(), room_config: z .object({ room_background: z.string().describe('Feishu room background').optional(), display_background: z.string().describe('Feishu sign board background').optional(), digital_signage: z .object({ enable: z.boolean().describe('Enable digital label function or not').optional(), mute: z.boolean().describe('Whether to mute the video').optional(), start_display: z .number() .describe( 'Start playing n min after the meeting ends,should be between 1~720.(Only available for Feishu room digital labels)', ) .optional(), stop_display: z .number() .describe( 'End playing n min before the meeting starts, should be between 1~720.(Only available for Feishu room digital labels)', ) .optional(), materials: z .array( z.object({ id: z .string() .describe('Material ID. When uploading a new material, the material ID needs to be set to empty') .optional(), name: z.string().describe('Material name').optional(), material_type: z.number().describe('Material type Options:1(pic Image),2(video),3(gif)').optional(), url: z.string().describe('Material URL').optional(), duration: z.number().describe('Play duration (in sec), should be between 1~43200').optional(), cover: z.string().describe('Material cover URL').optional(), md5: z.string().describe('Material file md5').optional(), vid: z.string().describe('Material file vid').optional(), size: z.string().describe('Material desc').optional(), }), ) .describe('Material list') .optional(), }) .describe('Feishu room digital labels') .optional(), room_box_digital_signage: z .object({ enable: z.boolean().describe('Enable digital label function or not').optional(), mute: z.boolean().describe('Whether to mute the video').optional(), start_display: z .number() .describe( 'Start playing n min after the meeting ends,should be between 1~720.(Only available for Feishu room digital labels)', ) .optional(), stop_display: z .number() .describe( 'End playing n min before the meeting starts, should be between 1~720.(Only available for Feishu room digital labels)', ) .optional(), materials: z .array( z.object({ id: z .string() .describe('Material ID. When uploading a new material, the material ID needs to be set to empty') .optional(), name: z.string().describe('Material name').optional(), material_type: z.number().describe('Material type Options:1(pic Image),2(video),3(gif)').optional(), url: z.string().describe('Material URL').optional(), duration: z.number().describe('Play duration (in sec), should be between 1~43200').optional(), cover: z.string().describe('Material cover URL').optional(), md5: z.string().describe('Material file md5').optional(), vid: z.string().describe('Material file vid').optional(), size: z.string().describe('Material desc').optional(), }), ) .describe('Material list') .optional(), }) .describe('Feishu room box digital signage') .optional(), room_status: z .object({ status: z.boolean().describe('Available status of room'), disable_start_time: z.string().describe('Room disable start time').optional(), disable_end_time: z.string().describe('Room disable end time').optional(), disable_reason: z.string().describe('Room disable reason').optional(), contact_ids: z.array(z.string()).describe('Contact user ID').optional(), disable_notice: z.boolean().describe('Notice content sent to users when room disabled').optional(), resume_notice: z.boolean().describe('Notice content sent to contact users when room resumed').optional(), }) .describe('Room status') .optional(), }) .describe('Room settings'), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), }, }; export const vcV1RoomConfigSetCheckboardAccessCode = { project: 'vc', name: 'vc.v1.roomConfig.setCheckboardAccessCode', sdkName: 'vc.v1.roomConfig.setCheckboardAccessCode', path: '/open-apis/vc/v1/room_configs/set_checkboard_access_code', httpMethod: 'POST', description: '[Feishu/Lark]-Deprecated Version (Not Recommended)-Rooms-Rooms configuration-set_checkboard_access_code-Create a scoped checkboard access code', accessTokens: ['tenant'], schema: { data: z.object({ scope: z .number() .describe( 'set node scope Options:1(tenant),2(country_district Country/region),3(city),4(building),5(floor),6(room)', ), country_id: z.string().describe('This parameter is required when country ID scope is 2, 3').optional(), district_id: z.string().describe('This parameter is required when the city ID scope is 3').optional(), building_id: z.string().describe('This parameter is required when the building ID scope is 4 and 5').optional(), floor_name: z.string().describe('This parameter is required when the floor scope is 5').optional(), room_id: z.string().describe('This parameter is required when the meeting room ID scope is 6').optional(), valid_day: z.number().describe('valid date Options:1(day 1 day),7(week 7 days),30(month 30 days)'), }), }, }; export const vcV1RoomConfigSetRoomAccessCode = { project: 'vc', name: 'vc.v1.roomConfig.setRoomAccessCode', sdkName: 'vc.v1.roomConfig.setRoomAccessCode', path: '/open-apis/vc/v1/room_configs/set_room_access_code', httpMethod: 'POST', description: '[Feishu/Lark]-Deprecated Version (Not Recommended)-Rooms-Rooms configuration-set_room_access_code-Create a range of meeting room access codes', accessTokens: ['tenant'], schema: { data: z.object({ scope: z .number() .describe( 'Set node range Options:1(tenant),2(country_district Country/region),3(city),4(building),5(floor),6(room)', ), country_id: z.string().describe('This parameter is required when the country ID scope is 2, 3').optional(), district_id: z.string().describe('This parameter is required when the city ID scope is 3').optional(), building_id: z.string().describe('This parameter is required when the building ID scope is 4, 5').optional(), floor_name: z.string().describe('This parameter is required when the floor scope is 5').optional(), room_id: z.string().describe('This parameter is required when the conference room ID scope is 6').optional(), valid_day: z.number().describe('Effective days Options:1(day 1 day),7(week 7 days),30(month 30 days)'), }), }, }; export const vcV1RoomLevelCreate = { project: 'vc', name: 'vc.v1.roomLevel.create', sdkName: 'vc.v1.roomLevel.create', path: '/open-apis/vc/v1/room_levels', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Meeting room level-Create room level-This API is used to create meeting room level', accessTokens: ['tenant'], schema: { data: z.object({ name: z.string().describe('Room level name'), parent_id: z .string() .describe( 'Parent room level ID**Note**: If you need to create a meeting room level at the tenant level (i.e. the root level), you can first call the [Query room level details] interface and pass the path parameter `room_level_id` to `0` for query. The `room_level_id` value in the returned result is the root level ID', ), custom_group_id: z.string().describe('Custom room level ID').optional(), }), }, }; export const vcV1RoomLevelDel = { project: 'vc', name: 'vc.v1.roomLevel.del', sdkName: 'vc.v1.roomLevel.del', path: '/open-apis/vc/v1/room_levels/del', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Meeting room level-Delete room level-This API is used to delete a specified meeting room level', accessTokens: ['tenant'], schema: { data: z.object({ room_level_id: z.string().describe('Room level ID'), delete_child: z.boolean().describe('Whether delete child room levels').optional(), }), }, }; export const vcV1RoomLevelGet = { project: 'vc', name: 'vc.v1.roomLevel.get', sdkName: 'vc.v1.roomLevel.get', path: '/open-apis/vc/v1/room_levels/:room_level_id', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting room level-Query room level details-This API is used to query a specified meeting room level details by room level ID', accessTokens: ['tenant'], schema: { path: z.object({ room_level_id: z.string().describe('Queries the ID of specifed meeting room level') }), }, }; export const vcV1RoomLevelList = { project: 'vc', name: 'vc.v1.roomLevel.list', sdkName: 'vc.v1.roomLevel.list', path: '/open-apis/vc/v1/room_levels', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting room level-Query room level list-This API is used to query meeting room level list at a specified meeting room level', accessTokens: ['tenant'], schema: { params: z .object({ room_level_id: z.string().describe('Queries the ID of specifed meeting room level').optional(), page_size: z.number().optional(), page_token: z .string() .describe( 'Page identifier. It is not filled in the first request, indicating traversal from the beginning when there will be more groups, the new page_token will be returned at the same time, and the next traversal can use the page_token to get more groups', ) .optional(), }) .optional(), }, }; export const vcV1RoomLevelMget = { project: 'vc', name: 'vc.v1.roomLevel.mget', sdkName: 'vc.v1.roomLevel.mget', path: '/open-apis/vc/v1/room_levels/mget', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Meeting room level-Batch query room level details-This API is used to query multi specified meeting room level details by room level IDs', accessTokens: ['tenant'], schema: { data: z.object({ level_ids: z.array(z.string()).describe('Room level IDs') }), }, }; export const vcV1RoomLevelPatch = { project: 'vc', name: 'vc.v1.roomLevel.patch', sdkName: 'vc.v1.roomLevel.patch', path: '/open-apis/vc/v1/room_levels/:room_level_id', httpMethod: 'PATCH', description: '[Feishu/Lark]-Video Conferencing-Meeting room level-Update room level-This API is used to update a specified meeting room level details', accessTokens: ['tenant'], schema: { data: z.object({ name: z.string().describe('Room level name'), parent_id: z.string().describe('Parent room level ID'), custom_group_id: z.string().describe('Custom room level ID').optional(), }), path: z.object({ room_level_id: z.string().describe('Room level ID') }), }, }; export const vcV1RoomLevelSearch = { project: 'vc', name: 'vc.v1.roomLevel.search', sdkName: 'vc.v1.roomLevel.search', path: '/open-apis/vc/v1/room_levels/search', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting room level-Search room level-This API is used to search meeting room level. Support custom room level ID to search', accessTokens: ['tenant'], schema: { params: z.object({ custom_level_ids: z.string().describe('Custom room level IDs') }), }, }; export const vcV1RoomCreate = { project: 'vc', name: 'vc.v1.room.create', sdkName: 'vc.v1.room.create', path: '/open-apis/vc/v1/rooms', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Meeting room management-Create meeting room-This API is used to create meeting room', accessTokens: ['tenant'], schema: { data: z.object({ name: z.string().describe('Room name'), capacity: z.number().describe('Room capacity'), description: z.string().describe('Room description').optional(), custom_room_id: z.string().describe('Custom room ID').optional(), room_level_id: z.string().describe('Parent room level ID'), room_status: z .object({ status: z.boolean().describe('Available status of room'), schedule_status: z .boolean() .describe( 'Future available status of room(Please ignore, this field is used to query the return value of the interface)', ) .optional(), disable_start_time: z.string().describe('Room disable start time').optional(), disable_end_time: z.string().describe('Room disable end time').optional(), disable_reason: z.string().describe('Room disable reason').optional(), contact_ids: z.array(z.string()).describe('Contact user ID').optional(), disable_notice: z.boolean().describe('Notice content sent to users when room disabled').optional(), resume_notice: z.boolean().describe('Notice content sent to contact users when room resumed').optional(), }) .describe('Room status') .optional(), device: z .array(z.object({ name: z.string().describe('device name') })) .describe('device information') .optional(), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), }, }; export const vcV1RoomDelete = { project: 'vc', name: 'vc.v1.room.delete', sdkName: 'vc.v1.room.delete', path: '/open-apis/vc/v1/rooms/:room_id', httpMethod: 'DELETE', description: '[Feishu/Lark]-Video Conferencing-Meeting room management-Delete meeting room-This API is used to delete a specified meeting room', accessTokens: ['tenant'], schema: { path: z.object({ room_id: z.string().describe('Room ID') }), }, }; export const vcV1RoomGet = { project: 'vc', name: 'vc.v1.room.get', sdkName: 'vc.v1.room.get', path: '/open-apis/vc/v1/rooms/:room_id', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting room management-Query meeting room details-This API is used to query a specified meeting room details by room ID', accessTokens: ['tenant'], schema: { params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), path: z.object({ room_id: z.string().describe('Room ID') }), }, }; export const vcV1RoomList = { project: 'vc', name: 'vc.v1.room.list', sdkName: 'vc.v1.room.list', path: '/open-apis/vc/v1/rooms', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting room management-Query meeting room list-This API is used to query meeting room list at a specified meeting room level', accessTokens: ['tenant'], schema: { params: z .object({ page_size: z.number().optional(), page_token: z .string() .describe( 'Page identifier. It is not filled in the first request, indicating traversal from the beginning when there will be more groups, the new page_token will be returned at the same time, and the next traversal can use the page_token to get more groups', ) .optional(), room_level_id: z.string().describe('Queries the ID of specifed meeting room level').optional(), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }) .optional(), }, }; export const vcV1RoomMget = { project: 'vc', name: 'vc.v1.room.mget', sdkName: 'vc.v1.room.mget', path: '/open-apis/vc/v1/rooms/mget', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Meeting room management-Batch query meeting room details-This API is used to query multi specified meeting room details by room IDs', accessTokens: ['tenant'], schema: { data: z.object({ room_ids: z.array(z.string()).describe('Room IDs') }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), }, }; export const vcV1RoomPatch = { project: 'vc', name: 'vc.v1.room.patch', sdkName: 'vc.v1.room.patch', path: '/open-apis/vc/v1/rooms/:room_id', httpMethod: 'PATCH', description: '[Feishu/Lark]-Video Conferencing-Meeting room management-Update meeting room-This API is used to update a specified meeting room details', accessTokens: ['tenant'], schema: { data: z .object({ name: z.string().describe('Room name').optional(), capacity: z.number().describe('Room capacity').optional(), description: z.string().describe('Room description').optional(), custom_room_id: z.string().describe('Custom room ID').optional(), room_level_id: z.string().describe('Parent room level ID').optional(), room_status: z .object({ status: z.boolean().describe('Available status of room'), schedule_status: z .boolean() .describe( 'Future available status of room(Please ignore, this field is used to query the return value of the interface)', ) .optional(), disable_start_time: z.string().describe('Room disable start time').optional(), disable_end_time: z.string().describe('Room disable end time').optional(), disable_reason: z.string().describe('Room disable reason').optional(), contact_ids: z.array(z.string()).describe('Contact user ID').optional(), disable_notice: z.boolean().describe('Notice content sent to users when room disabled').optional(), resume_notice: z.boolean().describe('Notice content sent to contact users when room resumed').optional(), }) .describe('Room status') .optional(), device: z .array(z.object({ name: z.string().describe('device name') })) .describe('device information') .optional(), }) .optional(), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), path: z.object({ room_id: z.string().describe('Room ID') }), }, }; export const vcV1RoomSearch = { project: 'vc', name: 'vc.v1.room.search', sdkName: 'vc.v1.room.search', path: '/open-apis/vc/v1/rooms/search', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Meeting room management-Search meeting room-This API is used to search meeting room. Support keyword or custom room ID to search. This API only returned meeting rooms that user has reserve permission', accessTokens: ['user'], schema: { data: z .object({ custom_room_ids: z.array(z.string()).describe('Custom room ID').optional(), keyword: z.string().describe('Search keyword(Used when custom room ID is empty)').optional(), room_level_id: z .string() .describe('Search room at this room level(Used when custom room ID is empty)') .optional(), search_level_name: z .boolean() .describe( 'Search room that include room level name(Use keyword Parameter to search when custom room ID is empty)', ) .optional(), page_size: z.number().describe('Page size(Used when custom room ID is empty)').optional(), page_token: z .string() .describe( 'Page identifier. It is not filled in the first request, indicating traversal from the beginning when there will be more groups, the new page_token will be returned at the same time, and the next traversal can use the page_token to get more groups', ) .optional(), }) .optional(), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), useUAT: z.boolean().describe('Use user access token, otherwise use tenant access token').optional(), }, }; export const vcV1ScopeConfigCreate = { project: 'vc', name: 'vc.v1.scopeConfig.create', sdkName: 'vc.v1.scopeConfig.create', path: '/open-apis/vc/v1/scope_config', httpMethod: 'POST', description: '[Feishu/Lark]-Video Conferencing-Meeting room configuration-Set room configuration-This API is used to set a scope of room level or a room configuration', accessTokens: ['tenant'], schema: { data: z.object({ scope_type: z.number().describe('Scope type Options:1(RoomLevel Room level),2(Room)'), scope_id: z.string().describe('Scope ID'), scope_config: z .object({ room_background: z.string().describe('Feishu room background').optional(), display_background: z.string().describe('Feishu sign board background').optional(), digital_signage: z .object({ if_cover_child_scope: z.boolean().describe('Whether to cover sub-levels and meeting rooms').optional(), enable: z.boolean().describe('Enable digital label function or not').optional(), mute: z.boolean().describe('Whether to mute the video').optional(), start_display: z .number() .describe( 'Start playing n min after the meeting ends,should be between 1~720.(Only available for Feishu room digital labels)', ) .optional(), stop_display: z .number() .describe( 'End playing n min before the meeting starts, should be between 1~720.(Only available for Feishu room digital labels)', ) .optional(), materials: z .array( z.object({ id: z .string() .describe('Material ID. When uploading a new material, the material ID needs to be set to empty') .optional(), name: z.string().describe('Material name').optional(), material_type: z.number().describe('Material type Options:1(pic Image),2(video),3(gif)').optional(), url: z.string().describe('Material URL').optional(), duration: z.number().describe('Play duration (in sec), should be between 1~43200').optional(), cover: z.string().describe('Material cover URL').optional(), md5: z.string().describe('Material file md5').optional(), vid: z.string().describe('Material file vid').optional(), size: z.string().describe('Material desc').optional(), }), ) .describe('Material list') .optional(), }) .describe('Feishu room digital labels') .optional(), room_box_digital_signage: z .object({ if_cover_child_scope: z.boolean().describe('Whether to cover sub-levels and meeting rooms').optional(), enable: z.boolean().describe('Enable digital label function or not').optional(), mute: z.boolean().describe('Whether to mute the video').optional(), start_display: z .number() .describe( 'Start playing n min after the meeting ends,should be between 1~720.(Only available for Feishu room digital labels)', ) .optional(), stop_display: z .number() .describe( 'End playing n min before the meeting starts, should be between 1~720.(Only available for Feishu room digital labels)', ) .optional(), materials: z .array( z.object({ id: z .string() .describe('Material ID. When uploading a new material, the material ID needs to be set to empty') .optional(), name: z.string().describe('Material name').optional(), material_type: z.number().describe('Material type Options:1(pic Image),2(video),3(gif)').optional(), url: z.string().describe('Material URL').optional(), duration: z.number().describe('Play duration (in sec), should be between 1~43200').optional(), cover: z.string().describe('Material cover URL').optional(), md5: z.string().describe('Material file md5').optional(), vid: z.string().describe('Material file vid').optional(), size: z.string().describe('Material desc').optional(), }), ) .describe('Material list') .optional(), }) .describe('Feishu room box digital signage') .optional(), room_status: z .object({ status: z.boolean().describe('Available status of room'), schedule_status: z .boolean() .describe( 'Future available status of room(Please ignore, this field is used to query the return value of the interface)', ) .optional(), disable_start_time: z.string().describe('Room disable start time').optional(), disable_end_time: z.string().describe('Room disable end time').optional(), disable_reason: z.string().describe('Room disable reason').optional(), contact_ids: z.array(z.string()).describe('Contact user ID').optional(), disable_notice: z.boolean().describe('Notice content sent to users when room disabled').optional(), resume_notice: z.boolean().describe('Notice content sent to contact users when room resumed').optional(), }) .describe('Room status') .optional(), }) .describe('Room configuration of a scope') .optional(), }), params: z .object({ user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional() }) .optional(), }, }; export const vcV1ScopeConfigGet = { project: 'vc', name: 'vc.v1.scopeConfig.get', sdkName: 'vc.v1.scopeConfig.get', path: '/open-apis/vc/v1/scope_config', httpMethod: 'GET', description: '[Feishu/Lark]-Video Conferencing-Meeting room configuration-Query room configuration-This API is used to query a scope of room level or a room configuration', accessTokens: ['tenant'], schema: { params: z.object({ scope_type: z.number().describe('Scope type Options:1(RoomLevel Room level),2(Room)'), scope_id: z.string().describe('Scope ID'), user_id_type: z.enum(['open_id', 'union_id', 'user_id']).describe('User ID type').optional(), }), }, }; export const vcV1Tools = [ vcV1AlertList, vcV1ExportGet, vcV1ExportMeetingList, vcV1ExportParticipantList, vcV1ExportParticipantQualityList, vcV1ExportResourceReservationList, vcV1MeetingListGet, vcV1MeetingEnd, vcV1MeetingGet, vcV1MeetingInvite, vcV1MeetingKickout, vcV1MeetingListByNo, vcV1MeetingRecordingGet, vcV1MeetingRecordingSetPermission, vcV1MeetingRecordingStart, vcV1MeetingRecordingStop, vcV1MeetingSetHost, vcV1ParticipantListGet, vcV1ParticipantQualityListGet, vcV1ReportGetDaily, vcV1ReportGetTopUser, vcV1ReserveConfigAdminGet, vcV1ReserveConfigAdminPatch, vcV1ReserveConfigDisableInformGet, vcV1ReserveConfigDisableInformPatch, vcV1ReserveConfigFormGet, vcV1ReserveConfigFormPatch, vcV1ReserveConfigPatch, vcV1ReserveConfigReserveScope, vcV1ReserveApply, vcV1ReserveDelete, vcV1ReserveGet, vcV1ReserveGetActiveMeeting, vcV1ReserveUpdate, vcV1ResourceReservationListGet, vcV1RoomConfigQuery, vcV1RoomConfigSet, vcV1RoomConfigSetCheckboardAccessCode, vcV1RoomConfigSetRoomAccessCode, vcV1RoomLevelCreate, vcV1RoomLevelDel, vcV1RoomLevelGet, vcV1RoomLevelList, vcV1RoomLevelMget, vcV1RoomLevelPatch, vcV1RoomLevelSearch, vcV1RoomCreate, vcV1RoomDelete, vcV1RoomGet, vcV1RoomList, vcV1RoomMget, vcV1RoomPatch, vcV1RoomSearch, vcV1ScopeConfigCreate, vcV1ScopeConfigGet, ];

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/larksuite/lark-openapi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server