Skip to main content

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}