zoom_api/meetings.rs
1use crate::Client;
2use crate::ClientResult;
3
4pub struct Meetings {
5 pub client: Client,
6}
7
8impl Meetings {
9 #[doc(hidden)]
10 pub fn new(client: Client) -> Self {
11 Meetings { client }
12 }
13
14 /**
15 * List meetings.
16 *
17 * This function performs a `GET` to the `/users/{userId}/meetings` endpoint.
18 *
19 * List all the meetings that were scheduled for a user (meeting host). For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter.
20 *
21 * This API **only** supports scheduled meetings. This API does not return information about instant meetings.
22 *
23 * **Scopes:** `meeting:read:admin`, `meeting:read`</br>**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium`
24 *
25 * **Parameters:**
26 *
27 * * `user_id: &str` -- The user ID or email address of the user. For user-level apps, pass `me` as the value for userId.
28 * * `type_: crate::types::MeetingsType` -- The meeting types: <br>`scheduled` - This includes all valid past meetings (unexpired), live meetings and upcoming scheduled meetings. It is equivalent to the combined list of "Previous Meetings" and "Upcoming Meetings" displayed in the user's [Meetings page](https://zoom.us/meeting) on the Zoom Web Portal.<br>`live` - All the ongoing meetings.<br>`upcoming` - All upcoming meetings including live meetings.
29 * * `page_size: i64` -- The number of records returned within a single API call.
30 * * `next_page_token: &str` -- The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.
31 * * `page_number: &str` -- The page number of the current page in the returned records.
32 */
33 pub async fn get(
34 &self,
35 user_id: &str,
36 type_: crate::types::MeetingsType,
37 page_size: i64,
38 next_page_token: &str,
39 page_number: &str,
40 ) -> ClientResult<crate::Response<crate::types::Domains>> {
41 let mut query_args: Vec<(String, String)> = Default::default();
42 if !next_page_token.is_empty() {
43 query_args.push(("next_page_token".to_string(), next_page_token.to_string()));
44 }
45 if !page_number.is_empty() {
46 query_args.push(("page_number".to_string(), page_number.to_string()));
47 }
48 if page_size > 0 {
49 query_args.push(("page_size".to_string(), page_size.to_string()));
50 }
51 if !type_.to_string().is_empty() {
52 query_args.push(("type".to_string(), type_.to_string()));
53 }
54 let query_ = serde_urlencoded::to_string(&query_args).unwrap();
55 let url = self.client.url(
56 &format!(
57 "/users/{}/meetings?{}",
58 crate::progenitor_support::encode_path(user_id),
59 query_
60 ),
61 None,
62 );
63 self.client
64 .get(
65 &url,
66 crate::Message {
67 body: None,
68 content_type: None,
69 },
70 )
71 .await
72 }
73 /**
74 * Create a meeting.
75 *
76 * This function performs a `POST` to the `/users/{userId}/meetings` endpoint.
77 *
78 * [Create a meeting](https://support.zoom.us/hc/en-us/articles/201362413-Scheduling-meetings) for a user. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter.
79 *
80 * This API has a daily rate limit of 100 requests per day. Therefore, only 100 **Create a Meeting** API requests are permitted within a 24 hour window for a user.<br>
81 *
82 * <aside>The <code>start_url</code> of a meeting is a URL using which a host or an alternative host can start a meeting. The expiration time for the <code>start_url</code> field is two hours for all regular users.
83 *
84 * For custCreate meeting hosts( i.e., users created using the <code>custCreate</code> option via the [Create Users](https://marketplace.zoom.us/docs/api-reference/zoom-api/users/usercreate) API), the expiration time of the <code>start_url</code> field is 90 days from the generation of the <code>start_url</code>.
85 *
86 * For security reasons, the recommended way to retrieve the updated value for the <code>start_url</code> field programmatically (after expiry) is by calling the [Retrieve a Meeting API](https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meeting) and referring to the value of the <code>start_url</code> field in the response.</aside><br><br>
87 * Scopes: `meeting:write:admin` `meeting:write`
88 *
89 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium`
90 *
91 * **Parameters:**
92 *
93 * * `user_id: &str` -- The user ID or email address of the user. For user-level apps, pass `me` as the value for userId.
94 */
95 pub async fn create(
96 &self,
97 user_id: &str,
98 body: &crate::types::MeetingCreate,
99 ) -> ClientResult<crate::Response<crate::types::MeetingCreateResponseAllOf>> {
100 let url = self.client.url(
101 &format!(
102 "/users/{}/meetings",
103 crate::progenitor_support::encode_path(user_id),
104 ),
105 None,
106 );
107 self.client
108 .post(
109 &url,
110 crate::Message {
111 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
112 content_type: Some("application/json".to_string()),
113 },
114 )
115 .await
116 }
117 /**
118 * Get a meeting.
119 *
120 * This function performs a `GET` to the `/meetings/{meetingId}` endpoint.
121 *
122 * Retrieve the details of a meeting.<br><br>
123 * **Scopes:** `meeting:read:admin` `meeting:read`<br>
124 *
125 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
126 *
127 *
128 *
129 * **Parameters:**
130 *
131 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
132 *
133 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
134 * * `occurrence_id: &str` -- Meeting Occurrence ID. Provide this field to view meeting details of a particular occurrence of the [recurring meeting](https://support.zoom.us/hc/en-us/articles/214973206-Scheduling-Recurring-Meetings).
135 * * `show_previous_occurrences: bool` -- Enable/disable the option for a sub account to use shared [Virtual Room Connector(s)](https://support.zoom.us/hc/en-us/articles/202134758-Getting-Started-With-Virtual-Room-Connector) that are set up by the master account. Virtual Room Connectors can only be used by On-prem users.
136 */
137 pub async fn meeting(
138 &self,
139 meeting_id: i64,
140 occurrence_id: &str,
141 show_previous_occurrences: bool,
142 ) -> ClientResult<crate::Response<crate::types::MeetingResponseAllOf>> {
143 let mut query_args: Vec<(String, String)> = Default::default();
144 if !occurrence_id.is_empty() {
145 query_args.push(("occurrence_id".to_string(), occurrence_id.to_string()));
146 }
147 if show_previous_occurrences {
148 query_args.push((
149 "show_previous_occurrences".to_string(),
150 show_previous_occurrences.to_string(),
151 ));
152 }
153 let query_ = serde_urlencoded::to_string(&query_args).unwrap();
154 let url = self.client.url(
155 &format!(
156 "/meetings/{}?{}",
157 crate::progenitor_support::encode_path(&meeting_id.to_string()),
158 query_
159 ),
160 None,
161 );
162 self.client
163 .get(
164 &url,
165 crate::Message {
166 body: None,
167 content_type: None,
168 },
169 )
170 .await
171 }
172 /**
173 * Delete a meeting.
174 *
175 * This function performs a `DELETE` to the `/meetings/{meetingId}` endpoint.
176 *
177 * Delete a meeting.<br><br>
178 * **Scopes:** `meeting:write:admin` `meeting:write`<br>
179 *
180 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
181 *
182 *
183 *
184 * **Parameters:**
185 *
186 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
187 *
188 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
189 * * `occurrence_id: &str` -- The meeting occurrence ID.
190 * * `schedule_for_reminder: bool` -- Enable/disable the option for a sub account to use shared [Virtual Room Connector(s)](https://support.zoom.us/hc/en-us/articles/202134758-Getting-Started-With-Virtual-Room-Connector) that are set up by the master account. Virtual Room Connectors can only be used by On-prem users.
191 * * `cancel_meeting_reminder: &str` -- `true`: Notify registrants about the meeting cancellation via email.
192 *
193 * `false`: Do not send any email notification to meeting registrants.
194 *
195 * The default value of this field is `false`.
196 */
197 pub async fn delete(
198 &self,
199 meeting_id: i64,
200 occurrence_id: &str,
201 schedule_for_reminder: bool,
202 cancel_meeting_reminder: &str,
203 ) -> ClientResult<crate::Response<()>> {
204 let mut query_args: Vec<(String, String)> = Default::default();
205 if !cancel_meeting_reminder.is_empty() {
206 query_args.push((
207 "cancel_meeting_reminder".to_string(),
208 cancel_meeting_reminder.to_string(),
209 ));
210 }
211 if !occurrence_id.is_empty() {
212 query_args.push(("occurrence_id".to_string(), occurrence_id.to_string()));
213 }
214 if schedule_for_reminder {
215 query_args.push((
216 "schedule_for_reminder".to_string(),
217 schedule_for_reminder.to_string(),
218 ));
219 }
220 let query_ = serde_urlencoded::to_string(&query_args).unwrap();
221 let url = self.client.url(
222 &format!(
223 "/meetings/{}?{}",
224 crate::progenitor_support::encode_path(&meeting_id.to_string()),
225 query_
226 ),
227 None,
228 );
229 self.client
230 .delete(
231 &url,
232 crate::Message {
233 body: None,
234 content_type: None,
235 },
236 )
237 .await
238 }
239 /**
240 * Update a meeting.
241 *
242 * This function performs a `PATCH` to the `/meetings/{meetingId}` endpoint.
243 *
244 * Update the details of a meeting. This API has a rate limit of 100 requests per day. Because of this, a meeting can only be updated for a maximum of 100 times within a 24 hour period.
245 *
246 * **Scopes:** `meeting:write:admin`, `meeting:write`</br>**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
247 *
248 * **Parameters:**
249 *
250 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
251 *
252 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
253 * * `occurrence_id: &str` -- Meeting occurrence id. Support change of agenda, start_time, duration, settings: {host_video, participant_video, join_before_host, mute_upon_entry, waiting_room, watermark, auto_recording}.
254 */
255 pub async fn update(
256 &self,
257 meeting_id: i64,
258 occurrence_id: &str,
259 body: &crate::types::MeetingUpdateRequestAllOf,
260 ) -> ClientResult<crate::Response<()>> {
261 let mut query_args: Vec<(String, String)> = Default::default();
262 if !occurrence_id.is_empty() {
263 query_args.push(("occurrence_id".to_string(), occurrence_id.to_string()));
264 }
265 let query_ = serde_urlencoded::to_string(&query_args).unwrap();
266 let url = self.client.url(
267 &format!(
268 "/meetings/{}?{}",
269 crate::progenitor_support::encode_path(&meeting_id.to_string()),
270 query_
271 ),
272 None,
273 );
274 self.client
275 .patch(
276 &url,
277 crate::Message {
278 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
279 content_type: Some("application/json".to_string()),
280 },
281 )
282 .await
283 }
284 /**
285 * Update meeting status.
286 *
287 * This function performs a `PUT` to the `/meetings/{meetingId}/status` endpoint.
288 *
289 * Update the status of a meeting.<br><br>
290 * **Scopes:** `meeting:write:admin` `meeting:write`
291 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
292 *
293 * **Parameters:**
294 *
295 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
296 *
297 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
298 */
299 pub async fn status(
300 &self,
301 meeting_id: i64,
302 body: &crate::types::MeetingStatusRequest,
303 ) -> ClientResult<crate::Response<()>> {
304 let url = self.client.url(
305 &format!(
306 "/meetings/{}/status",
307 crate::progenitor_support::encode_path(&meeting_id.to_string()),
308 ),
309 None,
310 );
311 self.client
312 .put(
313 &url,
314 crate::Message {
315 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
316 content_type: Some("application/json".to_string()),
317 },
318 )
319 .await
320 }
321 /**
322 * List meeting registrants.
323 *
324 * This function performs a `GET` to the `/meetings/{meetingId}/registrants` endpoint.
325 *
326 * A host or a user with admin permission can require [registration for a Zoom meeting](https://support.zoom.us/hc/en-us/articles/211579443-Registration-for-Meetings). Use this API to list users that have registered for a meeting.<br><br>
327 * **Scopes**: `meeting:read:admin` `meeting:read`<br>
328 *
329 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium`
330 *
331 * **Parameters:**
332 *
333 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
334 *
335 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
336 * * `occurrence_id: &str` -- The meeting occurrence ID.
337 * * `status: crate::types::MeetingRegistrantsStatus` -- The registrant status:<br>`pending` - Registrant's status is pending.<br>`approved` - Registrant's status is approved.<br>`denied` - Registrant's status is denied.
338 * * `page_size: i64` -- The number of records returned within a single API call.
339 * * `page_number: i64` --
340 * **Deprecated** - This field has been deprecated and we will stop supporting it completely in a future release. Please use "next_page_token" for pagination instead of this field.
341 *
342 * The page number of the current page in the returned records.
343 * * `next_page_token: &str` -- The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.
344 */
345 pub async fn registrant(
346 &self,
347 meeting_id: i64,
348 occurrence_id: &str,
349 status: crate::types::MeetingRegistrantsStatus,
350 page_size: i64,
351 page_number: i64,
352 next_page_token: &str,
353 ) -> ClientResult<crate::Response<crate::types::Domains>> {
354 let mut query_args: Vec<(String, String)> = Default::default();
355 if !next_page_token.is_empty() {
356 query_args.push(("next_page_token".to_string(), next_page_token.to_string()));
357 }
358 if !occurrence_id.is_empty() {
359 query_args.push(("occurrence_id".to_string(), occurrence_id.to_string()));
360 }
361 if page_number > 0 {
362 query_args.push(("page_number".to_string(), page_number.to_string()));
363 }
364 if page_size > 0 {
365 query_args.push(("page_size".to_string(), page_size.to_string()));
366 }
367 if !status.to_string().is_empty() {
368 query_args.push(("status".to_string(), status.to_string()));
369 }
370 let query_ = serde_urlencoded::to_string(&query_args).unwrap();
371 let url = self.client.url(
372 &format!(
373 "/meetings/{}/registrants?{}",
374 crate::progenitor_support::encode_path(&meeting_id.to_string()),
375 query_
376 ),
377 None,
378 );
379 self.client
380 .get(
381 &url,
382 crate::Message {
383 body: None,
384 content_type: None,
385 },
386 )
387 .await
388 }
389 /**
390 * Add meeting registrant.
391 *
392 * This function performs a `POST` to the `/meetings/{meetingId}/registrants` endpoint.
393 *
394 * Register a participant for a meeting.<br><br> Note that there is a maximum limit of 4999 registrants per meeting and users will see an error if the capacity has reached.
395 *
396 * **Prerequisite:**<br>
397 * * Host user type must be "Licensed".
398 *
399 * **Scopes:** `meeting:write:admin` `meeting:write`
400 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
401 *
402 * **Parameters:**
403 *
404 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
405 *
406 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
407 * * `occurrence_ids: &str` -- Occurrence IDs. You can find these with the meeting get API. Multiple values separated by comma.
408 */
409 pub async fn registrant_create(
410 &self,
411 meeting_id: i64,
412 occurrence_ids: &str,
413 ) -> ClientResult<crate::Response<crate::types::MeetingRegistrantCreateResponse>> {
414 let mut query_args: Vec<(String, String)> = Default::default();
415 if !occurrence_ids.is_empty() {
416 query_args.push(("occurrence_ids".to_string(), occurrence_ids.to_string()));
417 }
418 let query_ = serde_urlencoded::to_string(&query_args).unwrap();
419 let url = self.client.url(
420 &format!(
421 "/meetings/{}/registrants?{}",
422 crate::progenitor_support::encode_path(&meeting_id.to_string()),
423 query_
424 ),
425 None,
426 );
427 self.client
428 .post(
429 &url,
430 crate::Message {
431 body: None,
432 content_type: Some("application/json".to_string()),
433 },
434 )
435 .await
436 }
437 /**
438 * Delete a meeting registrant.
439 *
440 * This function performs a `DELETE` to the `/meetings/{meetingId}/registrants/{registrantId}` endpoint.
441 *
442 * Delete a meeting registrant.<br><br>
443 * **Scopes**: `meeting:write:admin` `meeting:write`<br>
444 * <br>
445 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
446 *
447 * **Parameters:**
448 *
449 * * `occurrence_id: &str` -- The meeting occurence ID.
450 * * `meeting_id: i64` -- Account seats.
451 * * `registrant_id: &str` -- The meeting registrant ID.
452 */
453 pub async fn meetingregistrantdelete(
454 &self,
455 occurrence_id: &str,
456 meeting_id: i64,
457 registrant_id: &str,
458 ) -> ClientResult<crate::Response<()>> {
459 let mut query_args: Vec<(String, String)> = Default::default();
460 if !occurrence_id.is_empty() {
461 query_args.push(("occurrence_id".to_string(), occurrence_id.to_string()));
462 }
463 let query_ = serde_urlencoded::to_string(&query_args).unwrap();
464 let url = self.client.url(
465 &format!(
466 "/meetings/{}/registrants/{}?{}",
467 crate::progenitor_support::encode_path(&meeting_id.to_string()),
468 crate::progenitor_support::encode_path(registrant_id),
469 query_
470 ),
471 None,
472 );
473 self.client
474 .delete(
475 &url,
476 crate::Message {
477 body: None,
478 content_type: None,
479 },
480 )
481 .await
482 }
483 /**
484 * Update registrant's status.
485 *
486 * This function performs a `PUT` to the `/meetings/{meetingId}/registrants/status` endpoint.
487 *
488 * Update a meeting registrant's status by either approving, cancelling or denying a registrant from joining the meeting.<br><br>
489 * **Scopes:** `meeting:write:admin` `meeting:write`
490 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium`
491 *
492 * **Parameters:**
493 *
494 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
495 *
496 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
497 * * `occurrence_id: &str` -- The meeting occurrence ID.
498 */
499 pub async fn registrant_status(
500 &self,
501 meeting_id: i64,
502 occurrence_id: &str,
503 body: &crate::types::RegistrantStatus,
504 ) -> ClientResult<crate::Response<()>> {
505 let mut query_args: Vec<(String, String)> = Default::default();
506 if !occurrence_id.is_empty() {
507 query_args.push(("occurrence_id".to_string(), occurrence_id.to_string()));
508 }
509 let query_ = serde_urlencoded::to_string(&query_args).unwrap();
510 let url = self.client.url(
511 &format!(
512 "/meetings/{}/registrants/status?{}",
513 crate::progenitor_support::encode_path(&meeting_id.to_string()),
514 query_
515 ),
516 None,
517 );
518 self.client
519 .put(
520 &url,
521 crate::Message {
522 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
523 content_type: Some("application/json".to_string()),
524 },
525 )
526 .await
527 }
528 /**
529 * Get past meeting details.
530 *
531 * This function performs a `GET` to the `/past_meetings/{meetingUUID}` endpoint.
532 *
533 * Get details on a past meeting. <br><br>
534 * **Scopes:** `meeting:read:admin` `meeting:read`
535 *
536 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
537 * > **Note**: Please double encode your UUID when using this API if the UUID begins with a '/'or contains '//' in it.
538 *
539 * **Parameters:**
540 *
541 * * `meeting: &str` -- The meeting's universally unique identifier (UUID). Each meeting instance generates a UUID. For example, after a meeting ends, a new UUID is generated for the next meeting instance.
542 *
543 * If the meeting UUID begins with a `/` character or contains a `//` character, you **must** double-encode the meeting UUID when using the meeting UUID for other API calls.
544 */
545 pub async fn past_details(
546 &self,
547 meeting_uuid: &str,
548 ) -> ClientResult<crate::Response<crate::types::PastMeetingDetailsResponse>> {
549 let url = self.client.url(
550 &format!(
551 "/past_meetings/{}",
552 crate::progenitor_support::encode_path(meeting_uuid),
553 ),
554 None,
555 );
556 self.client
557 .get(
558 &url,
559 crate::Message {
560 body: None,
561 content_type: None,
562 },
563 )
564 .await
565 }
566 /**
567 * Get past meeting participants.
568 *
569 * This function performs a `GET` to the `/past_meetings/{meetingUUID}/participants` endpoint.
570 *
571 * Retrieve information on participants from a past meeting. <br><br>
572 * **Scopes:** `meeting:read:admin` `meeting:read`
573 *
574 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium`
575 * **Prerequisites:**<br>
576 * * Paid account on a Pro or higher plan.
577 *
578 * <br> <br> **Note**: Please double encode your UUID when using this API if the UUID begins with a '/'or contains '//' in it.
579 *
580 *
581 * **Parameters:**
582 *
583 * * `meeting: &str` -- The meeting's universally unique identifier (UUID). Each meeting instance generates a UUID. For example, after a meeting ends, a new UUID is generated for the next meeting instance.
584 *
585 * If the meeting UUID begins with a `/` character or contains a `//` character, you **must** double-encode the meeting UUID when using the meeting UUID for other API calls.
586 * * `page_size: i64` -- The number of records returned within a single API call.
587 * * `next_page_token: &str` -- The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.
588 */
589 pub async fn past_participant(
590 &self,
591 meeting_uuid: &str,
592 page_size: i64,
593 next_page_token: &str,
594 ) -> ClientResult<crate::Response<crate::types::PastMeetingParticipantsResponseAllOf>> {
595 let mut query_args: Vec<(String, String)> = Default::default();
596 if !next_page_token.is_empty() {
597 query_args.push(("next_page_token".to_string(), next_page_token.to_string()));
598 }
599 if page_size > 0 {
600 query_args.push(("page_size".to_string(), page_size.to_string()));
601 }
602 let query_ = serde_urlencoded::to_string(&query_args).unwrap();
603 let url = self.client.url(
604 &format!(
605 "/past_meetings/{}/participants?{}",
606 crate::progenitor_support::encode_path(meeting_uuid),
607 query_
608 ),
609 None,
610 );
611 self.client
612 .get(
613 &url,
614 crate::Message {
615 body: None,
616 content_type: None,
617 },
618 )
619 .await
620 }
621 /**
622 * List ended meeting instances.
623 *
624 * This function performs a `GET` to the `/past_meetings/{meetingId}/instances` endpoint.
625 *
626 * Get a list of ended meeting instances<br><br>
627 * **Scopes:** `meeting:read:admin` `meeting:read`<br>
628 *
629 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium`
630 *
631 * **Parameters:**
632 *
633 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
634 *
635 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
636 */
637 pub async fn past(
638 &self,
639 meeting_id: i64,
640 ) -> ClientResult<crate::Response<crate::types::Domains>> {
641 let url = self.client.url(
642 &format!(
643 "/past_meetings/{}/instances",
644 crate::progenitor_support::encode_path(&meeting_id.to_string()),
645 ),
646 None,
647 );
648 self.client
649 .get(
650 &url,
651 crate::Message {
652 body: None,
653 content_type: None,
654 },
655 )
656 .await
657 }
658 /**
659 * List meeting polls.
660 *
661 * This function performs a `GET` to the `/meetings/{meetingId}/polls` endpoint.
662 *
663 * Polls allow the meeting host to survey attendees. Use this API to list [polls](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meetings) of a meeting.<br><br>
664 *
665 * **Scopes**: `meeting:read:admin` `meeting:read`<br>
666 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`<br>
667 * **Prerequisites**:<br>
668 * * Host user type must be **Pro** or higher plan.
669 * * Meeting must be a scheduled meeting. Instant meetings do not have polling features enabled.
670 *
671 * **Parameters:**
672 *
673 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
674 *
675 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
676 */
677 pub async fn poll(
678 &self,
679 meeting_id: i64,
680 ) -> ClientResult<crate::Response<crate::types::Domains>> {
681 let url = self.client.url(
682 &format!(
683 "/meetings/{}/polls",
684 crate::progenitor_support::encode_path(&meeting_id.to_string()),
685 ),
686 None,
687 );
688 self.client
689 .get(
690 &url,
691 crate::Message {
692 body: None,
693 content_type: None,
694 },
695 )
696 .await
697 }
698 /**
699 * Create a meeting poll.
700 *
701 * This function performs a `POST` to the `/meetings/{meetingId}/polls` endpoint.
702 *
703 * Polls allow the meeting host to survey attendees. Use this API to create a [poll](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meetings) for a meeting.<br><br>
704 *
705 * **Scopes**: `meeting:write:admin` `meeting:write`<br>
706 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`<br>
707 * **Prerequisites**:<br>
708 * * Host user type must be **Pro** or higher plan.
709 * * Polling feature must be enabled in the host's account.
710 * * Meeting must be a scheduled meeting. Instant meetings do not have polling features enabled.
711 *
712 * **Parameters:**
713 *
714 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
715 *
716 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
717 */
718 pub async fn poll_create(
719 &self,
720 meeting_id: i64,
721 body: &crate::types::Poll,
722 ) -> ClientResult<crate::Response<crate::types::MeetingPollGetResponseAllOf>> {
723 let url = self.client.url(
724 &format!(
725 "/meetings/{}/polls",
726 crate::progenitor_support::encode_path(&meeting_id.to_string()),
727 ),
728 None,
729 );
730 self.client
731 .post(
732 &url,
733 crate::Message {
734 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
735 content_type: Some("application/json".to_string()),
736 },
737 )
738 .await
739 }
740 /**
741 * Get a meeting poll.
742 *
743 * This function performs a `GET` to the `/meetings/{meetingId}/polls/{pollId}` endpoint.
744 *
745 * Polls allow the meeting host to survey attendees. Use this API to get information about a specific meeting [poll](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meetings).<br><br>
746 * **Scopes**: `meeting:read:admin` `meeting:read`<br>
747 *
748 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
749 *
750 *
751 *
752 *
753 * **Parameters:**
754 *
755 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
756 *
757 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
758 * * `poll_id: &str` -- User's first name.
759 */
760 pub async fn poll_get(
761 &self,
762 meeting_id: i64,
763 poll_id: &str,
764 ) -> ClientResult<crate::Response<crate::types::MeetingPollGetResponseAllOf>> {
765 let url = self.client.url(
766 &format!(
767 "/meetings/{}/polls/{}",
768 crate::progenitor_support::encode_path(&meeting_id.to_string()),
769 crate::progenitor_support::encode_path(poll_id),
770 ),
771 None,
772 );
773 self.client
774 .get(
775 &url,
776 crate::Message {
777 body: None,
778 content_type: None,
779 },
780 )
781 .await
782 }
783 /**
784 * Update a meeting poll.
785 *
786 * This function performs a `PUT` to the `/meetings/{meetingId}/polls/{pollId}` endpoint.
787 *
788 * Polls allow the meeting host to survey attendees. Use this API to update information of a specific meeting [poll](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meetings)<br><br>
789 * **Scopes**: `meeting:write:admin` `meeting:write`
790 *
791 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
792 *
793 *
794 *
795 * **Parameters:**
796 *
797 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
798 *
799 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
800 * * `poll_id: &str` -- User's first name.
801 */
802 pub async fn poll_update(
803 &self,
804 meeting_id: i64,
805 poll_id: &str,
806 body: &crate::types::Poll,
807 ) -> ClientResult<crate::Response<()>> {
808 let url = self.client.url(
809 &format!(
810 "/meetings/{}/polls/{}",
811 crate::progenitor_support::encode_path(&meeting_id.to_string()),
812 crate::progenitor_support::encode_path(poll_id),
813 ),
814 None,
815 );
816 self.client
817 .put(
818 &url,
819 crate::Message {
820 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
821 content_type: Some("application/json".to_string()),
822 },
823 )
824 .await
825 }
826 /**
827 * Delete a meeting poll.
828 *
829 * This function performs a `DELETE` to the `/meetings/{meetingId}/polls/{pollId}` endpoint.
830 *
831 * Polls allow the meeting host to survey attendees. Use this API to delete a meeting [poll](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meetings).<br>
832 * **Scopes**: `meeting:write:admin` `meeting:write`<br>
833 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light` <br>
834 * **Prerequisites**:<br>
835 * * Host user type must be **Pro**.
836 * * Polling feature should be enabled in the host's account.
837 * * Meeting must be a scheduled meeting. Instant meetings do not have polling features enabled.
838 *
839 * **Parameters:**
840 *
841 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
842 *
843 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
844 * * `poll_id: &str` -- User's first name.
845 */
846 pub async fn poll_delete(
847 &self,
848 meeting_id: i64,
849 poll_id: &str,
850 ) -> ClientResult<crate::Response<()>> {
851 let url = self.client.url(
852 &format!(
853 "/meetings/{}/polls/{}",
854 crate::progenitor_support::encode_path(&meeting_id.to_string()),
855 crate::progenitor_support::encode_path(poll_id),
856 ),
857 None,
858 );
859 self.client
860 .delete(
861 &url,
862 crate::Message {
863 body: None,
864 content_type: None,
865 },
866 )
867 .await
868 }
869 /**
870 * List registration questions .
871 *
872 * This function performs a `GET` to the `/meetings/{meetingId}/registrants/questions` endpoint.
873 *
874 * List registration questions that will be displayed to users while [registering for a meeting](https://support.zoom.us/hc/en-us/articles/211579443-Registration-for-Meetings).<br>
875 *
876 * **Scopes:** `meeting:read`, `meeting:read:admin`<br>
877 *
878 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
879 *
880 *
881 *
882 * **Parameters:**
883 *
884 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
885 *
886 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
887 */
888 pub async fn registrants_questions_get(
889 &self,
890 meeting_id: i64,
891 ) -> ClientResult<crate::Response<crate::types::MeetingRegistrantQuestionsData>> {
892 let url = self.client.url(
893 &format!(
894 "/meetings/{}/registrants/questions",
895 crate::progenitor_support::encode_path(&meeting_id.to_string()),
896 ),
897 None,
898 );
899 self.client
900 .get(
901 &url,
902 crate::Message {
903 body: None,
904 content_type: None,
905 },
906 )
907 .await
908 }
909 /**
910 * Update registration questions.
911 *
912 * This function performs a `PATCH` to the `/meetings/{meetingId}/registrants/questions` endpoint.
913 *
914 * Update registration questions that will be displayed to users while [registering for a meeting](https://support.zoom.us/hc/en-us/articles/211579443-Registration-for-Meetings).<br><br>
915 * **Scopes:** `meeting:write`, `meeting:write:admin`<br>
916 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
917 *
918 *
919 *
920 *
921 * **Parameters:**
922 *
923 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
924 *
925 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
926 */
927 pub async fn registrant_question_update(
928 &self,
929 meeting_id: i64,
930 body: &crate::types::MeetingRegistrantQuestionsData,
931 ) -> ClientResult<crate::Response<()>> {
932 let url = self.client.url(
933 &format!(
934 "/meetings/{}/registrants/questions",
935 crate::progenitor_support::encode_path(&meeting_id.to_string()),
936 ),
937 None,
938 );
939 self.client
940 .patch(
941 &url,
942 crate::Message {
943 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
944 content_type: Some("application/json".to_string()),
945 },
946 )
947 .await
948 }
949 /**
950 * Get meeting invitation.
951 *
952 * This function performs a `GET` to the `/meetings/{meetingId}/invitation` endpoint.
953 *
954 * Retrieve the meeting invite note that was sent for a specific meeting.<br><br>
955 * **Scopes:** `meeting:read:admin` `meeting:read`<br>
956 *
957 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
958 *
959 *
960 *
961 * **Parameters:**
962 *
963 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
964 *
965 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
966 */
967 pub async fn invitation(
968 &self,
969 meeting_id: i64,
970 ) -> ClientResult<crate::Response<crate::types::MeetingInvitation>> {
971 let url = self.client.url(
972 &format!(
973 "/meetings/{}/invitation",
974 crate::progenitor_support::encode_path(&meeting_id.to_string()),
975 ),
976 None,
977 );
978 self.client
979 .get(
980 &url,
981 crate::Message {
982 body: None,
983 content_type: None,
984 },
985 )
986 .await
987 }
988 /**
989 * Get live stream details.
990 *
991 * This function performs a `GET` to the `/meetings/{meetingId}/livestream` endpoint.
992 *
993 * Zoom allows users to [live stream a meeting](https://support.zoom.us/hc/en-us/articles/115001777826-Live-Streaming-Meetings-or-Webinars-Using-a-Custom-Service) to a custom platform. Use this API to get a meeting's live stream configuration details such as Stream URL, Stream Key and Page URL.<br><br>
994 * **Prerequisites:**<br>
995 * * Meeting host must be a licensed user with a Pro or higher plan.<br>
996 * * Live streaming details must have been [configured](https://support.zoom.us/hc/en-us/articles/115001777826-Live-Streaming-Meetings-or-Webinars-Using-a-Custom-Service#h_01589a6f-a40a-4e18-a448-cb746e52ebc5) for the meeting.<br><br>
997 * **Scopes:** `meeting:read:admin` `meeting:read`<br>
998 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
999 *
1000 *
1001 *
1002 *
1003 *
1004 * **Parameters:**
1005 *
1006 * * `meeting_id: &str` -- Unique identifier of the meeting.
1007 */
1008 pub async fn get_live_stream_details(
1009 &self,
1010 meeting_id: &str,
1011 ) -> ClientResult<crate::Response<crate::types::GetLiveStreamDetailsResponse>> {
1012 let url = self.client.url(
1013 &format!(
1014 "/meetings/{}/livestream",
1015 crate::progenitor_support::encode_path(meeting_id),
1016 ),
1017 None,
1018 );
1019 self.client
1020 .get(
1021 &url,
1022 crate::Message {
1023 body: None,
1024 content_type: None,
1025 },
1026 )
1027 .await
1028 }
1029 /**
1030 * Update a live stream.
1031 *
1032 * This function performs a `PATCH` to the `/meetings/{meetingId}/livestream` endpoint.
1033 *
1034 * Use this API to update a meeting's live stream information. Zoom allows users to [live stream a meeting](https://support.zoom.us/hc/en-us/articles/115001777826-Live-Streaming-Meetings-or-Webinars-Using-a-Custom-Service) to a custom platform.
1035 *
1036 * **Scopes:** `meeting:write:admin`, `meeting:write`<br>**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
1037 *
1038 * **Prerequisites:**
1039 * * Meeting host must have a Pro license.
1040 *
1041 * **Parameters:**
1042 *
1043 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
1044 *
1045 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
1046 */
1047 pub async fn live_stream_update(
1048 &self,
1049 meeting_id: &str,
1050 body: &crate::types::MeetingLiveStream,
1051 ) -> ClientResult<crate::Response<()>> {
1052 let url = self.client.url(
1053 &format!(
1054 "/meetings/{}/livestream",
1055 crate::progenitor_support::encode_path(meeting_id),
1056 ),
1057 None,
1058 );
1059 self.client
1060 .patch(
1061 &url,
1062 crate::Message {
1063 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
1064 content_type: Some("application/json".to_string()),
1065 },
1066 )
1067 .await
1068 }
1069 /**
1070 * Update Live Stream Status.
1071 *
1072 * This function performs a `PATCH` to the `/meetings/{meetingId}/livestream/status` endpoint.
1073 *
1074 * Zoom allows users to [live stream a meeting](https://support.zoom.us/hc/en-us/articles/115001777826-Live-Streaming-Meetings-or-Webinars-Using-a-Custom-Service) to a custom platform. Use this API to update the status of a meeting's live stream.<br><br>
1075 * **Prerequisites:**<br>
1076 * * Meeting host must have a Pro license.<br>
1077 * **Scopes:** `meeting:write:admin` `meeting:write`<br>
1078 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
1079 *
1080 *
1081 *
1082 * **Parameters:**
1083 *
1084 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
1085 *
1086 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
1087 */
1088 pub async fn live_stream_status_update(
1089 &self,
1090 meeting_id: i64,
1091 body: &crate::types::MeetingLiveStreamStatus,
1092 ) -> ClientResult<crate::Response<()>> {
1093 let url = self.client.url(
1094 &format!(
1095 "/meetings/{}/livestream/status",
1096 crate::progenitor_support::encode_path(&meeting_id.to_string()),
1097 ),
1098 None,
1099 );
1100 self.client
1101 .patch(
1102 &url,
1103 crate::Message {
1104 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
1105 content_type: Some("application/json".to_string()),
1106 },
1107 )
1108 .await
1109 }
1110 /**
1111 * List past meeting's poll results.
1112 *
1113 * This function performs a `GET` to the `/past_meetings/{meetingId}/polls` endpoint.
1114 *
1115 * [Polls](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meetings) allow the meeting host to survey attendees. Use this API to list poll results of a meeting.<br><br>
1116 *
1117 * **Scopes**: `meeting:read:admin`, `meeting:read`<br>
1118 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium` <br>
1119 * **Prerequisites**:<br>
1120 * * Host user type must be **Pro**.
1121 * * Meeting must be a scheduled meeting. Instant meetings do not have polling features enabled.
1122 *
1123 * **Parameters:**
1124 *
1125 * * `meeting_id: &str` -- The meeting ID or the meeting UUID. If a meeting ID is provided in the request instead of a UUID, the response will be for the latest meeting instance.
1126 *
1127 * If a UUID starts with "/" or contains "//" (example: "/ajXp112QmuoKj4854875==\"), you must **double encode** the UUID before making an API request.
1128 */
1129 pub async fn list_past_polls(
1130 &self,
1131 meeting_id: &str,
1132 ) -> ClientResult<crate::Response<crate::types::ReportMeetingPollsResponse>> {
1133 let url = self.client.url(
1134 &format!(
1135 "/past_meetings/{}/polls",
1136 crate::progenitor_support::encode_path(meeting_id),
1137 ),
1138 None,
1139 );
1140 self.client
1141 .get(
1142 &url,
1143 crate::Message {
1144 body: None,
1145 content_type: None,
1146 },
1147 )
1148 .await
1149 }
1150 /**
1151 * Perform batch registration.
1152 *
1153 * This function performs a `POST` to the `/meetings/{meetingId}/batch_registrants` endpoint.
1154 *
1155 * Register up to 30 registrants at once for a meeting that requires [registration](https://support.zoom.us/hc/en-us/articles/211579443-Registration-for-Meetings). <br>
1156 *
1157 * **Prerequisites:**<br>
1158 * * The meeting host must be a Licensed user.
1159 * * The meeting must require registration and should be of type `2`, i.e., they should be scheduled meetings. Instant meetings and Recurring meetings are not supported by this API.<br><br>
1160 * **Scope:** `meeting:write`, `meeting:write:admin`<br>
1161 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Heavy`<br>
1162 *
1163 *
1164 *
1165 *
1166 *
1167 *
1168 *
1169 *
1170 *
1171 * **Parameters:**
1172 *
1173 * * `meeting_id: &str` -- Unique identifier of the meeting (Meeting Number).
1174 */
1175 pub async fn add_batch_registrants(
1176 &self,
1177 meeting_id: &str,
1178 body: &crate::types::AddBatchRegistrantsRequest,
1179 ) -> ClientResult<crate::Response<crate::types::AddBatchRegistrantsResponse>> {
1180 let url = self.client.url(
1181 &format!(
1182 "/meetings/{}/batch_registrants",
1183 crate::progenitor_support::encode_path(meeting_id),
1184 ),
1185 None,
1186 );
1187 self.client
1188 .post(
1189 &url,
1190 crate::Message {
1191 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
1192 content_type: Some("application/json".to_string()),
1193 },
1194 )
1195 .await
1196 }
1197 /**
1198 * Use in-Meeting recording controls.
1199 *
1200 * This function performs a `PATCH` to the `/live_meetings/{meetingId}/events` endpoint.
1201 *
1202 * Use this API to control the [in-meeting](https://support.zoom.us/hc/en-us/articles/360021921032-In-Meeting-Controls) **recording features** such as starting a recording, stopping a recording, pausing a recording, and resuming a recording. This API only works for Cloud Recordings and not for local recordings.
1203 *
1204 *
1205 * **Prerequisite:**
1206 * * The meeting must be a live meeting.
1207 * * Cloud Recording must be enabled.
1208 * * The user using this API must either be the host or alternative host of the meeting.
1209 *
1210 * **Scopes:** `meeting:write`, `meeting:write:admin`, `meeting:master`
1211 *
1212 * **Parameters:**
1213 *
1214 * * `meeting_id: &str` -- Unique identifier of the live meeting.
1215 */
1216 pub async fn recording_control(
1217 &self,
1218 meeting_id: &str,
1219 body: &crate::types::InMeetingRecordingControlRequest,
1220 ) -> ClientResult<crate::Response<()>> {
1221 let url = self.client.url(
1222 &format!(
1223 "/live_meetings/{}/events",
1224 crate::progenitor_support::encode_path(meeting_id),
1225 ),
1226 None,
1227 );
1228 self.client
1229 .patch(
1230 &url,
1231 crate::Message {
1232 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
1233 content_type: Some("application/json".to_string()),
1234 },
1235 )
1236 .await
1237 }
1238 /**
1239 * Get meeting quality score.
1240 *
1241 * This function performs a `GET` to the `/metrics/quality` endpoint.
1242 *
1243 * Get the quality scores of a meeting.
1244 */
1245 pub async fn quality_score(&self) -> ClientResult<crate::Response<crate::types::Domains>> {
1246 let url = self.client.url("/metrics/quality", None);
1247 self.client
1248 .get(
1249 &url,
1250 crate::Message {
1251 body: None,
1252 content_type: None,
1253 },
1254 )
1255 .await
1256 }
1257 /**
1258 * Perform batch poll creation.
1259 *
1260 * This function performs a `POST` to the `/meetings/{meetingId}/batch_polls` endpoint.
1261 *
1262 * Polls allow the meeting host to survey attendees. Use this API to create batch [polls](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meetings) for a meeting.<br><br>
1263 *
1264 * **Scopes**: `meeting:write:admin` `meeting:write`<br>
1265 * **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`<br>
1266 * **Prerequisites**:<br>
1267 * * Host user type must be **Pro** or higher plan.
1268 * * Polling feature must be enabled in the host's account.
1269 * * Meeting must be a scheduled meeting. Instant meetings do not have polling features enabled.
1270 *
1271 * **Parameters:**
1272 *
1273 * * `meeting_id: &str` -- User's first name.
1274 */
1275 pub async fn create_batch_polls(
1276 &self,
1277 meeting_id: &str,
1278 body: &crate::types::CreateBatchPollsRequest,
1279 ) -> ClientResult<crate::Response<crate::types::CreateBatchPollsResponse>> {
1280 let url = self.client.url(
1281 &format!(
1282 "/meetings/{}/batch_polls",
1283 crate::progenitor_support::encode_path(meeting_id),
1284 ),
1285 None,
1286 );
1287 self.client
1288 .post(
1289 &url,
1290 crate::Message {
1291 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
1292 content_type: Some("application/json".to_string()),
1293 },
1294 )
1295 .await
1296 }
1297 /**
1298 * List meeting templates.
1299 *
1300 * This function performs a `GET` to the `/users/{userId}/meeting_templates` endpoint.
1301 *
1302 * Use this API to list [meeting templates](https://support.zoom.us/hc/en-us/articles/360036559151-Meeting-templates) that are available to be used by a user. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter.
1303 *
1304 * **Scopes:** `meeting:read` or `meeting:read:admin`</br>**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium`
1305 *
1306 *
1307 * **Parameters:**
1308 *
1309 * * `user_id: &str` -- Unique identifier of the user. Retrieve the value of this field by calling the [List users](https://marketplace.zoom.us/docs/api-reference/zoom-api/users/users) API.
1310 */
1311 pub async fn list_template(
1312 &self,
1313 user_id: &str,
1314 ) -> ClientResult<crate::Response<crate::types::ListMeetingTemplatesResponseData>> {
1315 let url = self.client.url(
1316 &format!(
1317 "/users/{}/meeting_templates",
1318 crate::progenitor_support::encode_path(user_id),
1319 ),
1320 None,
1321 );
1322 self.client
1323 .get(
1324 &url,
1325 crate::Message {
1326 body: None,
1327 content_type: None,
1328 },
1329 )
1330 .await
1331 }
1332 /**
1333 * Create meeting's invite links.
1334 *
1335 * This function performs a `POST` to the `/meetings/{meetingId}/invite_links` endpoint.
1336 *
1337 * Use this API to create a batch of invitation links for a meeting.
1338 *
1339 * **Scopes**: `meeting:write:admin`, `meeting:write`</br>**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`
1340 *
1341 * **Parameters:**
1342 *
1343 * * `meeting_id: i64` -- The meeting ID in **long** format. The data type of this field is "long"(represented as int64 in JSON).
1344 *
1345 * While storing it in your database, store it as a **long** data type and **not as an integer**, as the Meeting IDs can be longer than 10 digits.
1346 */
1347 pub async fn invite_links_create(
1348 &self,
1349 meeting_id: i64,
1350 body: &crate::types::InviteLink,
1351 ) -> ClientResult<crate::Response<crate::types::InviteLinks>> {
1352 let url = self.client.url(
1353 &format!(
1354 "/meetings/{}/invite_links",
1355 crate::progenitor_support::encode_path(&meeting_id.to_string()),
1356 ),
1357 None,
1358 );
1359 self.client
1360 .post(
1361 &url,
1362 crate::Message {
1363 body: Some(reqwest::Body::from(serde_json::to_vec(body)?)),
1364 content_type: Some("application/json".to_string()),
1365 },
1366 )
1367 .await
1368 }
1369}