zoom-api 0.3.1

A fully generated & opinionated API client for the Zoom API.
Documentation
use anyhow::Result;

use crate::Client;

pub struct TrackingField {
    pub client: Client,
}

impl TrackingField {
    #[doc(hidden)]
    pub fn new(client: Client) -> Self {
        TrackingField { client }
    }

    /**
     * List tracking fields.
     *
     * This function performs a `GET` to the `/tracking_fields` endpoint.
     *
     * [Tracking fields](https://support.zoom.us/hc/en-us/articles/115000293426-Scheduling-Tracking-Fields) allow you to analyze usage by various fields within an organization.<br> Use this API to list all the tracking fields on your Zoom account.<br><br>
     * **Scopes:** `trackingfield:read:admin`<br>
     *  
     *  **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium`<br>
     * **Prerequisites:**
     * * Business, Education, API or higher plan
     */
    pub async fn trackingfield_list(&self) -> Result<crate::types::Domains> {
        let url = "/tracking_fields".to_string();
        self.client.get(&url, None).await
    }

    /**
     * Create a tracking field.
     *
     * This function performs a `POST` to the `/tracking_fields` endpoint.
     *
     * [Tracking fields](https://support.zoom.us/hc/en-us/articles/115000293426-Scheduling-Tracking-Fields) allow you to analyze usage by various fields within an organization.<br> Use this API to create a new tracking field.<br><br>
     * **Scope:** `trackingfield:write:admin`<br>
     *  
     *  **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`<br>
     * **Prerequisites:**
     * * Business, Education, API or higher plan
     */
    pub async fn trackingfield_create(
        &self,
        body: &crate::types::TrackingField,
    ) -> Result<crate::types::TrackingfieldGetResponseAllOf> {
        let url = "/tracking_fields".to_string();
        self.client
            .post(&url, Some(reqwest::Body::from(serde_json::to_vec(body)?)))
            .await
    }

    /**
     * Get a tracking field.
     *
     * This function performs a `GET` to the `/tracking_fields/{fieldId}` endpoint.
     *
     * [Tracking fields](https://support.zoom.us/hc/en-us/articles/115000293426-Scheduling-Tracking-Fields) allow you to analyze usage by various fields within an organization.<br><br> When scheduling a meeting, the tracking field will be included in the meeting options.<br>Use this API to get information on a tracking field.<br><br>
     * **Scopes:** `trackingfield:read:admin`<br>
     *  
     *  **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`<br>
     * **Prerequisites:**
     * * Business, Education, API or higher plan
     *
     *
     * **Parameters:**
     *
     * * `field_id: &str` -- The Tracking Field ID.
     */
    pub async fn trackingfield_get(
        &self,
        field_id: &str,
    ) -> Result<crate::types::TrackingfieldGetResponseAllOf> {
        let url = format!(
            "/tracking_fields/{}",
            crate::progenitor_support::encode_path(field_id),
        );

        self.client.get(&url, None).await
    }

    /**
     * Delete a tracking field.
     *
     * This function performs a `DELETE` to the `/tracking_fields/{fieldId}` endpoint.
     *
     * [Tracking fields](https://support.zoom.us/hc/en-us/articles/115000293426-Scheduling-Tracking-Fields) allow you to analyze usage by various fields within an organization.<br> Use this API to delete a tracking field.<br><br>
     * **Scope:** `trackingfield:write:admin`<br>
     *  
     *  **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`<br>
     * **Prerequisites:**
     * * Business, Education, API or higher plan
     *
     * **Parameters:**
     *
     * * `field_id: &str` -- The Tracking Field ID.
     */
    pub async fn trackingfield_delete(&self, field_id: &str) -> Result<()> {
        let url = format!(
            "/tracking_fields/{}",
            crate::progenitor_support::encode_path(field_id),
        );

        self.client.delete(&url, None).await
    }

    /**
     * Update a tracking field.
     *
     * This function performs a `PATCH` to the `/tracking_fields/{fieldId}` endpoint.
     *
     * [Tracking fields](https://support.zoom.us/hc/en-us/articles/115000293426-Scheduling-Tracking-Fields) allow you to analyze usage by various fields within an organization.<br> Use this API to update a tracking field.<br><br>
     * **Scope:** `trackingfield:write:admin`<br>
     *  
     *  **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Light`<br>
     * **Prerequisites:**
     * * Business, Education, API or higher plan
     *
     * **Parameters:**
     *
     * * `field_id: &str` -- The Tracking Field ID.
     */
    pub async fn trackingfield_update(
        &self,
        field_id: &str,
        body: &crate::types::TrackingField,
    ) -> Result<()> {
        let url = format!(
            "/tracking_fields/{}",
            crate::progenitor_support::encode_path(field_id),
        );

        self.client
            .patch(&url, Some(reqwest::Body::from(serde_json::to_vec(body)?)))
            .await
    }
}