zaccl
Version:
The Zoom App Complete Connection Library, a project that handles everything required to build a zoom-integrated app.
316 lines (313 loc) • 14.4 kB
text/typescript
// Import shared types
import ZoomMeetingOrWebinarType from './ZoomMeetingOrWebinarType';
import ZoomRecurrenceInfo from './ZoomRecurrenceInfo';
/**
* Zoom meeting object {@link https://marketplace.zoom.us/docs/api-reference/zoom-api/methods/#operation/meetings}
* @author Gabe Abrams
*/
type ZoomMeeting = (
{
// The ID of the user who scheduled this meeting on behalf of the host.
assistant_id?: string,
// Email address of the meeting host.
host_email: string,
// ID of the user who is set as host of meeting.
host_id: string,
// Meeting ID: Unique identifier of the meeting in "long" format
// (represented as int64 data type in JSON), also known as the meeting number.
id: number,
// Unique meeting ID.Each meeting instance will generate its own Meeting UUID
// (i.e., after a meeting ends, a new UUID will be generated for the next
// instance of the meeting). You can retrieve a list of UUIDs from past
// meeting instances using the List past meeting instances API.
// Please double encode your UUID when using it for API calls if the UUID
// begins with a / or contains // in it.
uuid: string,
// Meeting description. The length of agenda gets truncated to 250 characters when you list all meetings for a user. To view the complete agenda of a meeting, retrieve details for a single meeting, use the Get a meeting API.
agenda: string,
// Time of creation. ISO 8601
created_at: string,
// Meeting duration
duration: number,
// Encrypted passcode for third party endpoints(H323 / SIP).
encrypted_password: string,
// H.323 / SIP room system passcode.
h323_password: string,
// URL using which participants can join a meeting.
join_url: string,
// Meeting start time in GMT/UTC. Start time will not be returned if the
// meeting is an instant meeting.
start_time: string,
// The start_url of a Meeting is a URL using which a host or an
// alternative host can start the Meeting.
// The expiration time for the start_url field listed in the response of
// the Create a meeting API is two hours for all regular users.
// For users created using the custCreate option via the Create users API,
// the expiration time of the start_url field is 90 days.
// For security reasons, to retrieve the updated value for the start_url
// field programmatically (after the expiry time), you must call the
// ** Get a meeting API and refer to the value of the start_url field in
// the response.
// This URL should only be used by the host of the meeting and should not
// be shared with anyone other than the host of the meeting as anyone with
// this URL will be able to login to the Zoom Client as the host of the
// meeting.
start_url: string,
// Meeting status
status: ('waiting' | 'started'),
// Timezone to format the meeting start time on the
timezone: string,
// Meeting topic.
topic: string,
// Tracking fields
tracking_fields?: {
// Label of the tracking field.
field: string,
// Value for the field.
value: string,
// Indicates whether the tracking field is visible in the meeting
// scheduling options in the Zoom Web Portal or not.
// true: Tracking field is visible.
// false: Tracking field is not visible to the users when they look at
// the meeting details in the Zoom Web Portal but the field was used
// while scheduling this meeting via API. An invisible tracking field
// can be used by users while scheduling meetings via API only.
visible: boolean,
}[],
// Occurrences (only for recurring meetings)
occurrences?: {
// Duration.
duration: number,
// Occurrence ID: Unique Identifier that identifies an occurrence of a
// recurring meeting
occurrence_id: number,
// Start time
start_time: string,
// Occurrence status.
status: string,
}[],
// Meeting passcode
password: string,
// Personal Meeting ID (PMI). Only used for scheduled meetings and recurring
// meetings with no fixed time.
pmi?: string,
// Whether the prescheduled meeting was created via the GSuite app.
// This only supports the meeting type value of 2 (scheduled meetings) and 3
// (recurring meetings with no fixed time):
pre_schedule?: boolean,
// Meeting settings
settings: {
// Allow attendees to join the meeting from multiple devices.
// This setting only works for meetings that require registration.
allow_multiple_devices?: boolean,
// A semicolon-separated list of the meeting's alternative hosts'
// email addresses or IDs.
alternative_hosts: string,
// Flag to determine whether to send email notifications to alternative
// hosts, default value is true.
alternative_hosts_email_notification?: boolean,
// Whether the Allow alternative hosts to add or edit polls feature is
// enabled.
// This requires Zoom version 5.8.0 or higher.
alternative_host_update_polls?: boolean,
// Enable registration and set approval for the registration.
// Note that this feature requires the host to be of Licensed user type.
// Registration cannot be enabled for a basic user.
approval_type?: (0 | 1 | 2),
// Approve or block users from specific regions/countries from joining
// this meeting.
approved_or_denied_countries_or_regions?: {
// List of countries/regions from where participants can join this
// meeting.
approved_list: string[],
// List of countries/regions from where participants can not join this meeting.
denied_list: string[],
// true: Setting enabled to either allow users or block users from
// specific regions to join your meetings.
// false: Setting disabled.
enable: boolean,
// Specify whether to allow users from specific regions to join this
// meeting; or block users from specific regions from joining this
// meeting.
// approve: Allow users from specific regions/countries to join this
// meeting. If this setting is selected, the approved regions/countries
// must be included in the approved_list.
// deny: Block users from specific regions/countries from joining this
// meeting. If this setting is selected, the approved regions/countries
// must be included in the denied_list
method: ('approve' | 'deny'),
},
// Determine how participants can join the audio portion of the meeting.
audio?: ('both' | 'telephony' | 'voip'),
// If user has configured "Sign Into Zoom with Specified Domains" option,
// this will list the domains that are authenticated.
authentication_domains?: string,
// The participants added here will receive unique meeting invite links
// and bypass authentication.
authentication_exception?: {
// Email address of the participant.
email: string,
// Name of the participant.
name: string,
// URL for participants to join the meeting
join_url: string,
}[],
// Authentication name set in the authentication profile.
authentication_name?: string,
// Meeting authentication option id.
authentication_option?: string,
// Automatic recording:
auto_recording?: ('local' | 'cloud' | 'none'),
// Breakout rooms (for pre-assigning breakout rooms)
breakout_room?: {
// If true, enable pre-assign
enable: boolean,
// Rooms
rooms: {
// Name of the breakout room.
name: string,
// Email addresses of the participants who are to be assigned to the
// breakout room.
participants: string[],
}[],
},
// Indicates the type of calendar integration used to schedule the
// meeting:
// 1 — Zoom Outlook add-in
// 2 — Zoom for Google Workspace add-on
// Works with the private_meeting field to determine whether to share
// details of meetings or not.
calendar_type?: (1 | 2),
// Close registration after event date
close_registration?: boolean,
// Contact email for registration
contact_email?: string,
// Contact name for registration
contact_name?: string,
// Custom keys and values assigned to the meeting. (max 10)
custom_keys?: {
// Custom key associated with the user. (max 64 chars)
key: string,
// Value of the custom key associated with the user. (max 256 chars)
value: string,
}[],
// Whether to send email notifications to alternative hosts and users with
// scheduling privileges. This value defaults to true.
email_notification?: boolean,
// Choose between enhanced encryption and end-to-end encryption when
// starting or a meeting. When using end-to-end encryption,
// several features (e.g. cloud recording, phone/SIP/H.323 dial-in) will
// be automatically disabled.
// The value of this field can be one of the following:
// enhanced_encryption: Enhanced encryption. Encryption is stored in the
// cloud if you enable this option.
// e2ee: End-to-end encryption. The encryption key is stored in your local
// device and can not be obtained by anyone else. Enabling this setting
// also disables the following features: join before host,
// cloud recording, streaming, live transcription, breakout rooms,
// polling, 1:1 private chat, and meeting reactions.
encryption_type?: ('e2ee' | 'enhanced_encryption'),
// Whether the Focus Mode feature is enabled when the meeting starts.
focus_mode?: boolean,
// List of global dial-in countries
global_dial_in_countries?: string[],
global_dial_in_numbers?: {
// City of the number, if any. For example, Chicago.
city: string,
// Country code. For example, BR.
country: string,
// Full name of country. For example, Brazil.
country_name: string,
// Phone number. For example, +1 2332357613.
number: string,
// Type of number
type: ('toll' | 'tollfree'),
}[],
// Start video when the host joins the meeting.
host_video?: boolean,
// If the value of "join_before_host" field is set to true,
// this field can be used to indicate time limits within which a
// participant may join a meeting before a host.
// The value of this field can be one of the following:
// 0: Allow participant to join anytime.
// 5: Allow participant to join 5 minutes before meeting start time.
// 10: Allow participant to join 10 minutes before meeting start time.
jbh_time?: (0 | 5 | 10),
// Allow participants to join the meeting before the host starts the
// meeting. Only used for scheduled or recurring meetings.
join_before_host?: boolean,
// The meeting's language interpretation settings.
// Make sure to add the language in the web portal in order to use it
// in the API. See link for details.
// Note: This feature is only available for certain Meeting add-on,
// Education, and Business and higher plans.If this feature is not
// enabled on the host's account, this setting will not be applied to
// the meeting.
language_interpretation?: {
enable: boolean,
interpreters: {
// The interpreter's email address.
email: string,
// A comma-separated list of the interpreter's languages.
// The string must contain two country IDs.
// For example, if the interpreter will translate from English to
// Chinese, then this value will be "US, CN"
languages: string,
}[],
},
// If true, only authenticated users can join meetings.
meeting_authentication?: boolean,
// Mute participants upon entry.
mute_upon_entry?: boolean,
// Start video when participants join the meeting.
participant_video?: boolean,
// Whether the meeting is set as private.
private_meeting?: boolean,
// Whether to send registrants an email confirmation:
// true — Send a confirmation email.
// false — Do not send a confirmation email.
registrants_confirmation_email?: boolean,
// Whether to send registrants email notifications about
// their registration approval, cancellation, or rejection:
// true — Send an email notification.
// false — Do not send an email notification.
// Set this value to true to also use the registrants_confirmation_email
// parameter.
registrants_email_notification?: boolean,
// Registration type. Used for recurring meeting with fixed time only.
// 1 Attendees register once and can attend any of the occurrences.
// 2 Attendees need to register for each occurrence to attend.
// 3 Attendees register once and can choose one or more occurrences to attend.
registration_type?: (1 | 2 | 3),
// Show social share buttons on the meeting registration page.
// This setting only works for meetings that require registration.
show_share_button?: boolean,
// Use a Personal Meeting ID (PMI). Only used for scheduled meetings and
// recurring meetings with no fixed time.
use_pmi?: boolean,
// Enable waiting room
waiting_room?: boolean,
// Add watermark when viewing a shared screen.
watermark?: boolean,
// Whether the Allow host to save video order feature is enabled.
host_save_video_order?: boolean,
},
} & (
| {
// Meeting type
type: ZoomMeetingOrWebinarType.RecurringMeetingFixedTime,
// Recurrence (only for meetings where type is recurring fixed time)
recurrence: ZoomRecurrenceInfo,
}
| {
// Meeting type
type: (
| ZoomMeetingOrWebinarType.InstantMeeting
| ZoomMeetingOrWebinarType.ScheduledMeeting
| ZoomMeetingOrWebinarType.RecurringMeetingNoFixedTime
| ZoomMeetingOrWebinarType.PersonalAudioConference
),
}
)
);
export default ZoomMeeting;