/**
 * Zoom Node - Version 1
 * Discriminator: resource=meeting, operation=create
 */


interface Credentials {
  zoomApi: CredentialReference;
  zoomOAuth2Api: CredentialReference;
}

/** Create a meeting */
export type ZoomV1MeetingCreateParams = {
  resource: 'meeting';
  operation: 'create';
  authentication?: 'accessToken' | 'oAuth2' | Expression<string>;
/**
 * Topic of the meeting
 */
    topic?: string | Expression<string> | PlaceholderValue;
/**
 * Additional Fields
 * @default {}
 */
    additionalFields?: {
    /** Meeting agenda
     */
    agenda?: string | Expression<string> | PlaceholderValue;
    /** Meeting duration (minutes)
     * @default 0
     */
    duration?: number | Expression<number>;
    /** Password to join the meeting with maximum 10 characters
     */
    password?: string | Expression<string> | PlaceholderValue;
    /** Schedule meeting for someone else from your account, provide their email ID
     */
    scheduleFor?: string | Expression<string> | PlaceholderValue;
    /** Settings
     * @default {}
     */
    settings?: {
    /** Determine how participants can join audio portion of the meeting
     * @default both
     */
    audio?: 'both' | 'telephony' | 'voip' | Expression<string>;
    /** Alternative hosts email IDs
     */
    alternativeHosts?: string | Expression<string> | PlaceholderValue;
    /** Auto Recording
     * @default none
     */
    autoRecording?: 'local' | 'cloud' | 'none' | Expression<string>;
    /** Host Meeting in China
     * @default false
     */
    cnMeeting?: boolean | Expression<boolean>;
    /** Host Meeting in India
     * @default false
     */
    inMeeting?: boolean | Expression<boolean>;
    /** Whether to start a video when host joins the meeting
     * @default false
     */
    hostVideo?: boolean | Expression<boolean>;
    /** Whether to allow participants to join the meeting before host starts it
     * @default false
     */
    joinBeforeHost?: boolean | Expression<boolean>;
    /** Whether to mute participants upon entry
     * @default false
     */
    muteUponEntry?: boolean | Expression<boolean>;
    /** Whether to start a video when participant joins the meeting
     * @default false
     */
    participantVideo?: boolean | Expression<boolean>;
    /** Registration type. Used for recurring meetings with fixed time only.
     * @default 1
     */
    registrationType?: 1 | 2 | 3 | Expression<number>;
    /** Whether to add a watermark when viewing a shared screen
     * @default false
     */
    watermark?: boolean | Expression<boolean>;
  };
    /** Start time should be used only for scheduled or recurring meetings with fixed time
     */
    startTime?: string | Expression<string>;
    /** Time zone used in the response. The default is the time zone of the calendar. Choose from the list, or specify an ID using an &lt;a href="https://docs.n8n.io/code/expressions/"&gt;expression&lt;/a&gt;.
     */
    timeZone?: string | Expression<string>;
    /** Meeting type
     * @default 2
     */
    type?: 1 | 2 | 3 | 8 | Expression<number>;
  };
};

export type ZoomV1MeetingCreateOutput = {
  created_at?: string;
  creation_source?: string;
  duration?: number;
  encrypted_password?: string;
  h323_password?: string;
  host_email?: string;
  host_id?: string;
  id?: number;
  join_url?: string;
  password?: string;
  pre_schedule?: boolean;
  pstn_password?: string;
  settings?: {
    allow_host_control_participant_mute_state?: boolean;
    allow_multiple_devices?: boolean;
    alternative_host_update_polls?: boolean;
    alternative_hosts?: string;
    alternative_hosts_email_notification?: boolean;
    approval_type?: number;
    approved_or_denied_countries_or_regions?: {
      enable?: boolean;
    };
    audio?: string;
    auto_recording?: string;
    breakout_room?: {
      enable?: boolean;
    };
    close_registration?: boolean;
    cn_meeting?: boolean;
    continuous_meeting_chat?: {
      auto_add_invited_external_users?: boolean;
      auto_add_meeting_participants?: boolean;
      channel_id?: string;
      enable?: boolean;
    };
    device_testing?: boolean;
    email_in_attendee_report?: boolean;
    email_notification?: boolean;
    encryption_type?: string;
    enforce_login?: boolean;
    enforce_login_domains?: string;
    focus_mode?: boolean;
    host_save_video_order?: boolean;
    host_video?: boolean;
    in_meeting?: boolean;
    internal_meeting?: boolean;
    jbh_time?: number;
    join_before_host?: boolean;
    meeting_authentication?: boolean;
    mute_upon_entry?: boolean;
    participant_focused_meeting?: boolean;
    participant_video?: boolean;
    private_meeting?: boolean;
    push_change_to_calendar?: boolean;
    registrants_confirmation_email?: boolean;
    registrants_email_notification?: boolean;
    request_permission_to_unmute_participants?: boolean;
    show_join_info?: boolean;
    show_share_button?: boolean;
    sign_language_interpretation?: {
      enable?: boolean;
    };
    use_pmi?: boolean;
    waiting_room?: boolean;
    watermark?: boolean;
  };
  start_time?: string;
  start_url?: string;
  status?: string;
  supportGoLive?: boolean;
  timezone?: string;
  topic?: string;
  type?: number;
  uuid?: string;
};

export type ZoomV1MeetingCreateNode = {
  type: 'n8n-nodes-base.zoom';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<ZoomV1MeetingCreateParams>;
  output?: Items<ZoomV1MeetingCreateOutput>;
};