@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Zoom API
@base https://api.zoom.us/v2
@version 2.0.0
@auth ApiKey access_token in query
@endpoints 155
@hint download_for_search
@toc accounts(15), groups(8), h323(4), tracking_fields(5), im(10), users(35), meetings(22), past_meetings(3), metrics(16), report(12), tsp(2), webinars(16), past_webinars(1), webhooks(6)

@group accounts
@endpoint GET /accounts
@desc List sub accounts
@optional {page_size: any # The number of records returned within a single API call, page_number: any # Current page number of returned records}
@returns(200) Account list returned

@endpoint POST /accounts
@desc Create a sub account
@required {body: map # Account}
@returns(201) Account Created
@errors {409: Account with that email already exists}

@endpoint GET /accounts/{accountId}
@desc Retrieve a sub account
@required {accountId: any # The account ID}
@returns(200) Account object returned
@errors {404: User not found}

@endpoint DELETE /accounts/{accountId}
@desc Disassociate an account
@required {accountId: any # The account ID}
@returns(204) Account deleted
@errors {404: Account not found}

@endpoint PATCH /accounts/{accountId}/options
@desc Update a sub account's options
@required {accountId: any # The account ID, body: map}
@returns(204) Account options updated
@errors {404: Account not found}

@endpoint GET /accounts/{accountId}/settings
@desc Retrieve a sub account's settings
@required {accountId: any # The account ID}
@returns(200) Account settings returned
@errors {404: Account not found}

@endpoint PATCH /accounts/{accountId}/settings
@desc Update a sub account's settings
@required {accountId: any # The account ID, body: map}
@returns(204) Account settings updated
@errors {404: Account not found}

@endpoint GET /accounts/{accountId}/managed_domains
@desc Retrieve a sub account's managed domains
@required {accountId: any # The account ID}
@returns(200) Account managed domains returned
@errors {404: Account not found}

@endpoint GET /accounts/{accountId}/billing
@desc Retrieve billing information for a sub account
@required {accountId: any # The account ID}
@returns(200) Account billing contact information returned
@errors {404: Account not found}

@endpoint PATCH /accounts/{accountId}/billing
@desc Update billing information for a sub account
@required {accountId: any # The account ID, body: map}
@returns(204) Account billing contact information updated
@errors {404: Account not found}

@endpoint GET /accounts/{accountId}/plans
@desc Retrieve plan information for a sub account
@required {accountId: any # The account ID}
@returns(200) Account plans returned
@errors {404: Account not fond}

@endpoint POST /accounts/{accountId}/plans
@desc Subscribe plans for a sub account
@required {accountId: any # The account ID, body: any}
@returns(201) Account plans updated

@endpoint PUT /accounts/{accountId}/plans/base
@desc Update a base plan for a sub account
@required {accountId: any # The account ID, body: map}
@returns(204) Account plans updated

@endpoint POST /accounts/{accountId}/plans/addons
@desc Add an additional plan for sub account
@required {accountId: any # The account ID, body: map}
@returns(201) Account plans updated

@endpoint PUT /accounts/{accountId}/plans/addons
@desc Update an additional plan for sub account
@required {accountId: any # The account ID, body: map}
@returns(204) Account plans updated

@endgroup

@group groups
@endpoint GET /groups
@desc List groups
@returns(200) List of groups returned

@endpoint POST /groups
@desc Create a group
@required {body: any}
@returns(201) Group created

@endpoint GET /groups/{groupId}
@desc Retrieve a group
@required {groupId: any # The group ID}
@returns(200) Group object returned
@errors {404: Group not found}

@endpoint PATCH /groups/{groupId}
@desc Update a group
@required {groupId: any # The group ID, body: any}
@returns(204) Group updated
@errors {404: Group not found}

@endpoint DELETE /groups/{groupId}
@desc Delete a group
@required {groupId: any # The group ID}
@returns(204) Group deleted
@errors {404: Group not found}

@endpoint GET /groups/{groupId}/members
@desc List a group's members
@required {groupId: any # The group ID}
@optional {page_size: any # The number of records returned within a single API call, page_number: any # Current page number of returned records}
@returns(200) Group member list returned
@errors {404: Group not found}

@endpoint POST /groups/{groupId}/members
@desc Add group members
@required {groupId: any # The group ID, body: any}
@returns(201) Member added
@errors {404: Group not found}

@endpoint DELETE /groups/{groupId}/members/{memberId}
@desc Delete a group member
@required {groupId: any # The group ID, memberId: any # The member ID}
@returns(204) Group member deleted
@errors {404: Group or Group member not found}

@endgroup

@group h323
@endpoint GET /h323/devices
@desc List H.323/SIP Devices.
@returns(200) List of H.323/SIP Devices returned.

@endpoint POST /h323/devices
@desc Create a H.323/SIP Device
@required {body: map # H.323/SIP Device}
@returns(201) H.323/SIP Device created

@endpoint PATCH /h323/devices/{deviceId}
@desc Update a H.323/SIP Device
@required {deviceId: any # The device ID, body: map}
@returns(204) H.323/SIP Device updated
@errors {404: H.323/SIP Device not found}

@endpoint DELETE /h323/devices/{deviceId}
@desc Delete a H.323/SIP Device
@required {deviceId: any # The device ID}
@returns(204) H.323/SIP Device deleted
@errors {404: H.323/SIP Device not found}

@endgroup

@group tracking_fields
@endpoint GET /v2/tracking_fields
@desc List Tracking Fields.
@returns(200) List of Tracking Fields returned.

@endpoint POST /v2/tracking_fields
@desc Create a Tracking Field
@required {body: map # Tracking Field}
@returns(201) Tracking Field created

@endpoint GET /v2/tracking_fields/{fieldId}
@desc Retrieve a tracking field
@required {fieldId: any # The Tracking Field ID}
@returns(200) Tracking Field object returned
@errors {404: Tracking Field not found}

@endpoint PATCH /v2/tracking_fields/{fieldId}
@desc Update a Tracking Field
@required {fieldId: any # The Tracking Field ID, body: map}
@returns(204) Tracking Field updated
@errors {404: Tracking Field not found}

@endpoint DELETE /v2/tracking_fields/{fieldId}
@desc Delete a Tracking Field
@required {fieldId: any # The Tracking Field ID}
@returns(204) Tracking Field deleted
@errors {404: Tracking Field not found}

@endgroup

@group im
@endpoint GET /im/groups
@desc List IM Groups
@returns(200) List of IM Groups returned

@endpoint POST /im/groups
@desc Create an IM Group
@required {body: any}
@returns(201) IM Group created

@endpoint GET /im/groups/{groupId}
@desc Retrieve an IM Group
@required {groupId: any # The group ID}
@returns(200) IM Group object returned
@errors {404: IM Group not found}

@endpoint PATCH /im/groups/{groupId}
@desc Update an IM Group
@required {groupId: any # The group ID, body: any}
@returns(204) IM Group updated
@errors {404: IM Group not found}

@endpoint DELETE /im/groups/{groupId}
@desc Delete an IM Group
@required {groupId: any # The group ID}
@returns(204) IM Group deleted
@errors {404: IM Group not found}

@endpoint GET /im/groups/{groupId}/members
@desc List an IM Group's members
@required {groupId: any # The group ID}
@optional {page_size: any # The number of records returned within a single API call, page_number: any # Current page number of returned records}
@returns(200) IM Group member list returned
@errors {404: IM Group not found}

@endpoint POST /im/groups/{groupId}/members
@desc Add IM Group members
@required {groupId: any # The group ID, body: any}
@returns(201) Member added
@errors {404: IM Group not found}

@endpoint DELETE /im/groups/{groupId}/members/{memberId}
@desc Delete an IM Group member
@required {groupId: any # The group ID, memberId: any # The member ID}
@returns(204) IM Group member deleted
@errors {404: IM Group or IM Group member not found}

@endpoint GET /im/chat/sessions
@desc Retrieve IM Chat sessions
@required {from: any # Start Date, to: any # End Date}
@optional {page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Archived IM Chat sessions Returned

@endpoint GET /im/chat/sessions/{sessionId}
@desc Retrieve IM Chat messages
@required {sessionId: any # IM Chat Session ID, from: any # Start Date, to: any # End Date}
@optional {page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Archived IM Chat messages Returned

@endgroup

@group users
@endpoint GET /users/{userId}/meetings
@desc List meetings
@required {userId: any # The user ID or email address}
@optional {type: any # The meeting type, page_size: any # The number of records returned within a single API call, page_number: any # Current page number of returned records}
@returns(200) List of Meeting objects returned
@errors {404: User not found}

@endpoint POST /users/{userId}/meetings
@desc Create a meeting
@required {userId: any # The user ID or email address, body: any # Meeting object}
@returns(201) Meeting Created
@errors {404: User not found}

@endgroup

@group meetings
@endpoint GET /meetings/{meetingId}
@desc Retrieve a meeting
@required {meetingId: any # The meeting ID}
@returns(200) Meeting object returned
@errors {404: Meeting not found}

@endpoint PATCH /meetings/{meetingId}
@desc Update a meeting
@required {meetingId: any # The meeting ID, body: any # Meeting}
@returns(204) Meeting Updated
@errors {404: Meeting not found}

@endpoint DELETE /meetings/{meetingId}
@desc Delete a meeting
@required {meetingId: any # The meeting ID}
@optional {occurrence_id: any # The meeting occurrence ID}
@returns(204) Meeting deleted
@errors {404: Meeting not found}

@endpoint PUT /meetings/{meetingId}/status
@desc Update a meeting's status
@required {meetingId: any # The meeting ID, body: any}
@returns(204) Meeting updated
@errors {404: Meeting not found}

@endpoint GET /meetings/{meetingId}/invitation
@desc Retrieve meeting invitation
@required {meetingId: any # The meeting ID}
@returns(200) Meeting invitation Returned

@endpoint GET /meetings/{meetingId}/registrants
@desc List a meeting's registrants
@required {meetingId: any # The meeting ID}
@optional {occurrence_id: any # The meeting occurrence ID, status: any # The registrant status, page_size: any # The number of records returned within a single API call, page_number: any # Current page number of returned records}
@returns(200) Success
@errors {404: Meeting not found}

@endpoint POST /meetings/{meetingId}/registrants
@desc Add a meeting registrant
@required {meetingId: any # The meeting ID, body: map}
@optional {occurrence_ids: any # Occurrence IDs. You can find these with the meeting get API. Multiple values separated by comma.}
@returns(201) Registration created
@errors {404: Meeting not found}

@endpoint PUT /meetings/{meetingId}/registrants/status
@desc Update a meeting registrant's status
@required {meetingId: any # The meeting ID, body: map}
@optional {occurrence_id: any # The meeting occurrence ID}
@returns(204) Registrant status updated
@errors {404: Meeting or Registrant not found}

@endpoint PATCH /meetings/{meetingId}/livestream
@desc Update a meeting live stream
@required {meetingId: any # The meeting ID, body: map # Meeting}
@returns(204) Meeting live stream Updated
@errors {404: Meeting not found}

@endpoint PATCH /meetings/{meetingId}/livestream/status
@desc Update a meeting live stream status
@required {meetingId: any # The meeting ID, body: map # Meeting}
@returns(204) Meeting live stream Updated
@errors {404: Meeting not found}

@endgroup

@group past_meetings
@endpoint GET /past_meetings/{meetingUUID}
@desc Retrieve past meeting details
@required {meetingUUID: any # The meeting UUID.}
@returns(200) Meeting detail Returned
@errors {404: Meeting not found}

@endpoint GET /past_meetings/{meetingUUID}/participants
@desc Retrieve past meeting participants
@required {meetingUUID: any # The meeting UUID.}
@optional {page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Meeting Participants Report Returned
@errors {404: Meeting not found}

@endpoint GET /past_meetings/{meetingId}/instances
@desc List of ended meeting instances
@required {meetingId: any # The meeting ID}
@returns(200) List of ended meeting instances
@errors {404: Meeting not found}

@endgroup

@group meetings
@endpoint GET /meetings/{meetingId}/polls
@desc List a meeting's polls
@required {meetingId: any # The meeting ID}
@returns(200) List polls of a Meeting  returned
@errors {404: Meeting not found}

@endpoint POST /meetings/{meetingId}/polls
@desc Create a meeting's poll
@required {meetingId: any # The meeting ID, body: any # Meeting poll object}
@returns(201) Meeting Poll Created
@errors {404: Meeting not found}

@endpoint GET /meetings/{meetingId}/polls/{pollId}
@desc Retrieve a meeting's poll
@required {meetingId: any # The meeting ID, pollId: any # The poll ID}
@returns(200) Meeting Poll object returned
@errors {404: Meeting Poll not found}

@endpoint PUT /meetings/{meetingId}/polls/{pollId}
@desc Update a meeting's poll
@required {meetingId: any # The meeting ID, pollId: any # The poll ID, body: any # Meeting Poll}
@returns(204) Meeting Poll Updated
@errors {404: Meeting Poll not found}

@endpoint DELETE /meetings/{meetingId}/polls/{pollId}
@desc Delete a meeting's Poll
@required {meetingId: any # The meeting ID, pollId: any # The poll ID}
@returns(204) Meeting Poll deleted
@errors {404: Meeting Poll not found}

@endgroup

@group users
@endpoint GET /users/{userId}/recordings
@desc List all the recordings
@required {userId: any # The user ID or email address, from: any # Start Date, to: any # End Date}
@optional {page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes., mc: any # Query mc, trash: any # Query trash}
@returns(200) List of Recording objects returned
@errors {404: User not found}

@endgroup

@group meetings
@endpoint GET /meetings/{meetingId}/recordings
@desc Retrieve a meeting’s all recordings
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance.}
@returns(200) Recording object returned
@errors {404: Meeting recording not found}

@endpoint DELETE /meetings/{meetingId}/recordings
@desc Delete a meeting's recordings
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance.}
@optional {action: any # The recording delete action}
@returns(204) Meeting recording deleted
@errors {404: Meeting recording not found}

@endpoint DELETE /meetings/{meetingId}/recordings/{recordingId}
@desc Delete one meeting recording file
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance., recordingId: any # The recording ID}
@optional {action: any # The recording delete action}
@returns(204) Meeting recording file deleted
@errors {404: Meeting recording file not found}

@endpoint PUT /meetings/{meetingId}/recordings/status
@desc Recover a meeting's recordings
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance., body: any}
@returns(204) Meeting recording recover
@errors {404: Meeting recording not found}

@endpoint PUT /meetings/{meetingId}/recordings/{recordingId}/status
@desc Recover a single recording
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance., recordingId: any # The recording ID, body: any}
@returns(204) Meeting recording recover
@errors {404: Meeting recording not found}

@endpoint GET /meetings/{meetingId}/recordings/settings
@desc Retrieve a meeting recording's settings
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance.}
@returns(200) Meeting recording settings returned
@errors {404: Meeting recording not found}

@endpoint PATCH /meetings/{meetingId}/recordings/settings
@desc Update a meeting recording's settings
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance., body: map # Meeting recording Settings}
@returns(204) Meeting recording setting's updated
@errors {404: Meeting recording not found}

@endgroup

@group metrics
@endpoint GET /metrics/meetings
@desc List meetings
@required {from: any # Start Date, to: any # End Date}
@optional {type: any # The meeting type, page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Meetings Returned

@endpoint GET /metrics/meetings/{meetingId}
@desc Retrieve meeting detail
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance.}
@optional {type: any # The meeting type}
@returns(200) Meeting Returned

@endpoint GET /metrics/meetings/{meetingId}/participants
@desc Retrieve meeting participants
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance.}
@optional {type: any # The meeting type, page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Meeting Participants Returned

@endpoint GET /metrics/meetings/{meetingId}/participants/{participantId}/qos
@desc Retrieve meeting participant QOS
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance., participantId: any # Participant ID}
@optional {type: any # The meeting type}
@returns(200) Meeting Participant QOS Returned

@endpoint GET /metrics/meetings/{meetingId}/participants/qos
@desc List meeting participants QOS
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance.}
@optional {type: any # The meeting type, page_size: any # Number of items returned per page, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Meeting Participants Returned

@endpoint GET /metrics/meetings/{meetingId}/participants/sharing
@desc Retrieve sharing/recording details of meeting participant
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance.}
@optional {type: any # The meeting type, page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Meeting Participants Returned

@endpoint GET /metrics/webinars
@desc List webinars
@required {from: any # Start Date, to: any # End Date}
@optional {type: any # The webinar type, page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Meetings Returned

@endpoint GET /metrics/webinars/{webinarId}
@desc Retrieve webinar detail
@required {webinarId: any # The webinar ID or webinar UUID. If given webinar ID, will take the last webinar instance.}
@optional {type: any # The webinar type}
@returns(200) Webinar Returned

@endpoint GET /metrics/webinars/{webinarId}/participants
@desc Retrieve webinar participants
@required {webinarId: any # The webinar ID or webinar UUID. If given webinar ID, will take the last webinar instance.}
@optional {type: any # The webinar type, page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Webinar Participants Returned

@endpoint GET /metrics/webinars/{webinarId}/participants/{participantId}/qos
@desc Retrieve webinar participant QOS
@required {webinarId: any # The webinar ID or webinar UUID. If given webinar ID, will take the last webinar instance., participantId: any # Participant ID}
@optional {type: any # The webinar type}
@returns(200) Webinar Participant QOS Returned

@endpoint GET /metrics/webinars/{webinarId}/participants/qos
@desc List webinar participant QOS
@required {webinarId: any # The webinar ID or webinar UUID. If given webinar ID, will take the last webinar instance.}
@optional {type: any # The webinar type, page_size: any # Number of items returned per page, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Webinar Participants Returned

@endpoint GET /metrics/webinars/{webinarId}/participants/sharing
@desc Retrieve sharing/recording details of webinar participant
@required {webinarId: any # The webinar ID or webinar UUID. If given webinar ID, will take the last webinar instance.}
@optional {type: any # The webinar type, page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Webinar Participants Returned

@endpoint GET /metrics/zoomrooms
@desc List Zoom Rooms
@optional {page_size: any # The number of records returned within a single API call, page_number: any # Current page number of returned records}
@returns(200) List of Zoom Rooms returned

@endpoint GET /metrics/zoomrooms/{zoomroomId}
@desc Retrieve Zoom Room
@required {zoomroomId: any # The Zoom Room ID, from: any # Start Date, to: any # End Date}
@optional {page_size: any # The number of records returned within a single API call, page_number: any # Current page number of returned records}
@returns(200) Zoom Room returned

@endpoint GET /metrics/crc
@desc Retrieve CRC Port Usage
@required {from: any # Start Date, to: any # End Date}
@returns(200) CRC Usage returned

@endpoint GET /metrics/im
@desc Retrieve IM
@required {from: any # Start Date, to: any # End Date}
@optional {page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) IM setails returned

@endgroup

@group report
@endpoint GET /report/daily
@desc Retrieve daily report
@optional {year: any # Year for this report, month: any # Month for this report}
@returns(200) Daily Report Returned

@endpoint GET /report/users
@desc Retrieve hosts report
@required {from: any # Start Date, to: any # End Date}
@optional {type: any # Active hosts or inactive hosts, page_size: any # The number of records returned within a single API call, page_number: any # Current page number of returned records}
@returns(200) Active/Inactive Hosts Report Returned

@endpoint GET /report/users/{userId}/meetings
@desc Retrieve meetings report
@required {userId: any # The user ID or email address, from: any # Start Date, to: any # End Date}
@optional {page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Active/Inactive Hosts Report Returned
@errors {404: User not found}

@endpoint GET /report/meetings/{meetingId}
@desc Retrieve meeting details report
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance.}
@returns(200) Meeting detail Returned
@errors {404: Meeting not found}

@endpoint GET /report/meetings/{meetingId}/participants
@desc Retrieve meeting participants report
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance.}
@optional {page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Meeting Participants Report Returned
@errors {404: Meeting not found}

@endpoint GET /report/meetings/{meetingId}/polls
@desc Retrieve meeting polls report
@required {meetingId: any # The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance.}
@returns(200) Meeting Polls Report Returned
@errors {404: Meeting not found}

@endpoint GET /report/webinars/{webinarId}
@desc Retrieve webinar details report
@required {webinarId: any # The webinar ID or webinar UUID. If given webinar ID, will take the last webinar instance.}
@returns(200) Webinar detail Returned
@errors {404: Webinar not found}

@endpoint GET /report/webinars/{webinarId}/participants
@desc Retrieve webinar participants report
@required {webinarId: any # The webinar ID or webinar UUID. If given webinar ID, will take the last webinar instance.}
@optional {page_size: any # The number of records returned within a single API call, next_page_token: any # Next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceed the current page size. The expiration period for this token is 15 minutes.}
@returns(200) Meeting Participants Report Returned
@errors {404: Webinar not found}

@endpoint GET /report/webinars/{webinarId}/polls
@desc Retrieve webinar polls report
@required {webinarId: any # The webinar ID or webinar UUID. If given webinar ID, will take the last webinar instance.}
@returns(200) Webinar Polls Report Returned
@errors {404: Webinar not found}

@endpoint GET /report/webinars/{webinarId}/qa
@desc Retrieve webinar Q&A report
@required {webinarId: any # The webinar ID or webinar UUID. If given webinar ID, will take the last webinar instance.}
@returns(200) Webinar Q&A Report Returned
@errors {404: Webinar not found}

@endpoint GET /report/telephone
@desc Retrieve telephone report
@required {from: any # Start Date, to: any # End Date}
@optional {type: any # Audio type, page_size: any # The number of records returned within a single API call, page_number: any # Current page number of returned records}
@returns(200) Telephone Report Returned

@endpoint GET /report/cloud_recording
@desc Retrieve cloud recording usage report
@required {from: any # Start Date, to: any # End Date}
@returns(200) Cloud Recording Report Returned
@errors {300: Only provide report in recent 6 months}

@endgroup

@group tsp
@endpoint GET /tsp
@desc Retrieve account's TSP information
@returns(200) TSP account detail returned

@endpoint PATCH /tsp
@desc Update account's TSP information
@required {body: any # TSP Account}
@returns(204) TSP Account updated

@endgroup

@group users
@endpoint GET /users
@desc List Users
@optional {status: any # User status, page_size: any # The number of records returned within a single API call, page_number: any # Current page number of returned records}
@returns(200) User list returned

@endpoint POST /users
@desc Create a user
@required {body: map # User}
@returns(201) User Created
@errors {409: User with that email already exists}

@endpoint GET /users/{userId}
@desc Retrieve a user
@required {userId: any # The user ID or email address}
@optional {login_type: any}
@returns(200) User object returned
@errors {404: User not found}

@endpoint PATCH /users/{userId}
@desc Update a user
@required {userId: any # The user ID or email address, body: map # User}
@returns(204) User updated
@errors {404: User not found}

@endpoint DELETE /users/{userId}
@desc Delete a user
@required {userId: any # The user ID or email address}
@optional {action: any # Delete action type, transfer_email: any # Transfer email, transfer_meeting: any # Transfer meeting, transfer_webinar: any # Transfer webinar, transfer_recording: any # Transfer recording}
@returns(204) User deleted
@errors {404: User not found}

@endpoint GET /users/{userId}/assistants
@desc List a user's assistants
@required {userId: any # The user ID or email address}
@returns(200) Success
@errors {404: User not found}

@endpoint POST /users/{userId}/assistants
@desc Add assistants
@required {userId: any # The user ID or email address, body: map # User assistant}
@returns(201) Assitant Added
@errors {404: User not found}

@endpoint DELETE /users/{userId}/assistants
@desc Delete a user's assistants
@required {userId: any # The user ID or email address}
@returns(204) Assitants deleted
@errors {404: User not found}

@endpoint DELETE /users/{userId}/assistants/{assistantId}
@desc Delete a user's assistant
@required {userId: any # The user ID or email address, assistantId: any # Assistant's ID}
@returns(204) Assitant deleted
@errors {404: User or Assistant not found}

@endpoint GET /users/{userId}/schedulers
@desc List a user's schedulers
@required {userId: any # The user ID or email address}
@returns(200) Success
@errors {404: User not found}

@endpoint DELETE /users/{userId}/schedulers
@desc Delete a user's schedulers
@required {userId: any # The user ID or email address}
@returns(204) Schedulers deleted.
@errors {404: User not found}

@endpoint DELETE /users/{userId}/schedulers/{schedulerId}
@desc Delete a user's scheduler
@required {userId: any # The user ID or email address, schedulerId: any # Scheduler's ID}
@returns(204) Scheduler deleted.
@errors {404: User or Scheduler not found}

@endpoint POST /users/{userId}/picture
@desc Upload a user's picture
@required {userId: any # The user ID or email address, pic_file: any # User picture file, must be a jpg/jpeg file}
@returns(201) Picture Uploaded
@errors {404: User not found}

@endpoint GET /users/{userId}/settings
@desc Retrieve a user's settings
@required {userId: any # The user ID or email address}
@optional {login_type: any}
@returns(200) User settings returned
@errors {404: User not found}

@endpoint PATCH /users/{userId}/settings
@desc Update a user's settings
@required {userId: any # The user ID or email address, body: map # User Settings}
@returns(204) User setting's updated
@errors {404: User not found}

@endpoint PUT /users/{userId}/status
@desc Update a user's status
@required {userId: any # The user ID or email address, body: map # User status}
@returns(204) Status updated
@errors {404: User not found}

@endpoint PUT /users/{userId}/password
@desc Update a user's password
@required {userId: any # The user ID or email address, body: map # User password}
@returns(204) Password updated
@errors {404: User not found}

@endpoint GET /users/{userId}/permissions
@desc Retrieve a user's permissions
@required {userId: any # The user ID or email address}
@returns(200) User permissions returned
@errors {404: User not found}

@endpoint GET /users/{userId}/pac
@desc List user's PAC accounts
@required {userId: any # The user ID or email address}
@returns(200) PAC Account list returned
@errors {404: User not found}

@endpoint GET /users/{userId}/tsp
@desc List user's TSP accounts
@required {userId: any # The user ID or email address}
@returns(200) TSP Account list returned
@errors {404: User not found}

@endpoint POST /users/{userId}/tsp
@desc Add a user's TSP account
@required {userId: any # The user ID or email address, body: map # TSP Account}
@returns(201) TSP Account added

@endpoint GET /users/{userId}/tsp/{tspId}
@desc Retrieve a user's TSP account
@required {userId: any # The user ID or email address, tspId: any # TSP account index}
@returns(200) TSP Account returned

@endpoint PATCH /users/{userId}/tsp/{tspId}
@desc Update a TSP account
@required {userId: any # The user ID or email address, tspId: any # TSP account index, body: map # TSP Account}
@returns(204) TSP Account updated

@endpoint DELETE /users/{userId}/tsp/{tspId}
@desc Delete a user's TSP account
@required {userId: any # The user ID or email address, tspId: any # TSP account index}
@returns(204) TSP Account deleted

@endpoint GET /users/{userId}/token
@desc Retrieve a user's token
@required {userId: any # The user ID or email address}
@optional {type: any # User token type}
@returns(200) Token returned
@errors {404: User not found}

@endpoint DELETE /users/{userId}/token
@desc Revoke a user's SSO token
@required {userId: any # The user ID or email address}
@returns(204) Token deleted
@errors {404: User not found}

@endpoint PUT /users/{userId}/email
@desc Update a user's email
@required {userId: any # The user ID or email address, body: map # User email}
@returns(204) email updated
@errors {404: User not found}

@endpoint GET /users/zpk
@desc Verify a user's zpk (Deprecated
@required {zpk: any # User zpk}
@returns(200) Success

@endpoint GET /users/email
@desc Check a user's email
@required {email: any # Zoom work email}
@returns(200) Success

@endpoint GET /users/vanity_name
@desc Check a user's personal meeting room name
@required {vanity_name: any # Personal meeting room name}
@returns(200) Success

@endpoint GET /users/{userId}/webinars
@desc List webinars
@required {userId: any # The user ID or email address}
@optional {page_size: any # The number of records returned within a single API call, page_number: any # Current page number of returned records}
@returns(200) List of Webinar objects returned
@errors {404: User not found}

@endpoint POST /users/{userId}/webinars
@desc Create a webinar
@required {userId: any # The user ID or email address, body: map # User}
@returns(201) Webinar Created
@errors {404: User not found}

@endgroup

@group webinars
@endpoint GET /webinars/{webinarId}
@desc Retrieve a webinar
@required {webinarId: any # The webinar ID}
@returns(200) Webinar object returned
@errors {404: Webinar not found}

@endpoint PATCH /webinars/{webinarId}
@desc Update a webinar
@required {webinarId: any # The webinar ID, body: map # Webinar}
@returns(204) Webinar Updated
@errors {404: Webinar not found}

@endpoint DELETE /webinars/{webinarId}
@desc Delete a webinar
@required {webinarId: any # The webinar ID}
@optional {occurrence_id: any # The meeting occurrence ID}
@returns(204) Webinar deleted
@errors {404: Webinar not found}

@endpoint PUT /webinars/{webinarId}/status
@desc Update a webinar's status
@required {webinarId: any # The webinar ID, body: any}
@returns(204) Webinar updated
@errors {404: Webinar not found}

@endpoint GET /webinars/{webinarId}/panelists
@desc List a webinar's panelists
@required {webinarId: any # The webinar ID}
@returns(200) Success
@errors {404: Webinar not found}

@endpoint POST /webinars/{webinarId}/panelists
@desc Add a webinar panelist
@required {webinarId: any # The webinar ID, body: map}
@returns(201) Panelist created
@errors {404: Webinar not found}

@endpoint DELETE /webinars/{webinarId}/panelists
@desc Remove a webinar's panelists
@required {webinarId: any # The webinar ID}
@returns(204) Panelists removed
@errors {404: Webinar not found}

@endpoint DELETE /webinars/{webinarId}/panelists/{panelistId}
@desc Remove a webinar panelist
@required {webinarId: any # The webinar ID, panelistId: any # The panelist ID}
@returns(204) Panelists removed
@errors {404: Webinar or Panelist not found}

@endpoint GET /webinars/{webinarId}/registrants
@desc List a webinar's registrants
@required {webinarId: any # The webinar ID}
@optional {occurrence_id: any # The meeting occurrence ID, status: any # The registrant status, page_size: any # The number of records returned within a single API call, page_number: any # Current page number of returned records}
@returns(200) Success
@errors {404: Webinar not found}

@endpoint POST /webinars/{webinarId}/registrants
@desc Add a webinar registrant
@required {webinarId: any # The webinar ID, body: map}
@optional {occurrence_ids: any # Occurrence IDs, could get this value from Webinar Get API. Multiple value separated by comma.}
@returns(201) Registration created
@errors {404: Webinar not found}

@endpoint PUT /webinars/{webinarId}/registrants/status
@desc Update a webinar registrant's status
@required {webinarId: any # The webinar ID, body: any}
@optional {occurrence_id: any # The meeting occurrence ID}
@returns(204) Registrant status updated
@errors {404: Webinar or Registrant not found}

@endgroup

@group past_webinars
@endpoint GET /past_webinars/{webinarId}/instances
@desc List of ended webinar instances
@required {webinarId: any # The webinar ID}
@returns(200) List of ended webinar instances
@errors {404: Webinar not found}

@endgroup

@group webinars
@endpoint GET /webinars/{webinarId}/polls
@desc List a webinar's polls
@required {webinarId: any # The webinar ID}
@returns(200) List polls of a Webinar  returned
@errors {404: Webinar not found}

@endpoint POST /webinars/{webinarId}/polls
@desc Create a webinar's poll
@required {webinarId: any # The webinar ID, body: any # Webinar poll object}
@returns(201) Webinar Poll Created
@errors {404: Webinar not found}

@endpoint GET /webinars/{webinarId}/polls/{pollId}
@desc Retrieve a webinar's poll
@required {webinarId: any # The webinar ID, pollId: any # The poll ID}
@returns(200) Webinar Poll object returned
@errors {404: Webinar Poll not found}

@endpoint PUT /webinars/{webinarId}/polls/{pollId}
@desc Update a webinar's poll
@required {webinarId: any # The webinar ID, pollId: any # The poll ID, body: any # Webinar Poll}
@returns(204) Webinar Poll Updated
@errors {404: Webinar Poll not found}

@endpoint DELETE /webinars/{webinarId}/polls/{pollId}
@desc Delete a webinar's Poll
@required {webinarId: any # The webinar ID, pollId: any # The poll ID}
@returns(204) Webinar Poll deleted
@errors {404: Webinar Poll not found}

@endgroup

@group webhooks
@endpoint PATCH /webhooks/options
@desc Switch webhook version
@required {body: any}
@returns(204) Webhook Subscribe version update
@errors {404: Webhook Subscribe not found}

@endpoint GET /webhooks
@desc List webhooks
@returns(200) List of Webhook objects returned
@errors {404: Webhook not found}

@endpoint POST /webhooks
@desc Create a webhook
@required {body: map # Webhook}
@returns(201) Webhook Created
@errors {404: Account not found}

@endpoint GET /webhooks/{webhookId}
@desc Retrieve a webhook
@required {webhookId: any # The webhook ID}
@returns(200) Webhook object returned
@errors {404: Webinar not found}

@endpoint PATCH /webhooks/{webhookId}
@desc Update a webhook
@required {webhookId: any # The webhook ID, body: map # Webhook}
@returns(204) Webhook Updated
@errors {404: Webhook not found}

@endpoint DELETE /webhooks/{webhookId}
@desc Delete a webhook
@required {webhookId: any # The webhook ID}
@returns(204) Webhook deleted
@errors {404: Webhook not found}

@endgroup

@end
