1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
use anyhow::Result;

use crate::Client;

pub struct Alerts {
    pub client: Client,
}

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

    /**
     * Retrieve all alerts.
     *
     * This function performs a `GET` to the `/alerts` endpoint.
     *
     * **This endpoint allows you to retrieve all of your alerts.**
     *
     * Alerts allow you to specify an email address to receive notifications regarding your email usage or statistics.
     * * Usage alerts allow you to set the threshold at which an alert will be sent.
     * * Stats notifications allow you to set how frequently you would like to receive email statistics reports. For example, "daily", "weekly", or "monthly".
     *
     * For more information about alerts, please see our [Alerts documentation](https://sendgrid.com/docs/ui/account-and-settings/alerts/).
     *
     * **Parameters:**
     *
     * * `authorization: &str` -- The license key provided with your New Relic account.
     * * `on_behalf_of: &str` -- The license key provided with your New Relic account.
     */
    pub async fn get_page(&self) -> Result<Vec<crate::types::GetAlertsResponse>> {
        let url = "/alerts".to_string();
        self.client.get(&url, None).await
    }

    /**
     * Retrieve all alerts.
     *
     * This function performs a `GET` to the `/alerts` endpoint.
     *
     * As opposed to `get`, this function returns all the pages of the request at once.
     *
     * **This endpoint allows you to retrieve all of your alerts.**
     *
     * Alerts allow you to specify an email address to receive notifications regarding your email usage or statistics.
     * * Usage alerts allow you to set the threshold at which an alert will be sent.
     * * Stats notifications allow you to set how frequently you would like to receive email statistics reports. For example, "daily", "weekly", or "monthly".
     *
     * For more information about alerts, please see our [Alerts documentation](https://sendgrid.com/docs/ui/account-and-settings/alerts/).
     */
    pub async fn get_all(&self) -> Result<Vec<crate::types::GetAlertsResponse>> {
        let url = "/alerts".to_string();
        self.client.get_all_pages(&url, None).await
    }

    /**
     * Create a new Alert.
     *
     * This function performs a `POST` to the `/alerts` endpoint.
     *
     * **This endpoint allows you to create a new alert.**
     *
     * Alerts allow you to specify an email address to receive notifications regarding your email usage or statistics. There are two types of alerts that can be created with this endpoint:
     *
     * * `usage_limit` allows you to set the threshold at which an alert will be sent.
     * * `stats_notification` allows you to set how frequently you would like to receive email statistics reports. For example, "daily", "weekly", or "monthly".
     *
     * For more information about alerts, please see our [Alerts documentation](https://sendgrid.com/docs/ui/account-and-settings/alerts/).
     *
     * **Parameters:**
     *
     * * `authorization: &str` -- The license key provided with your New Relic account.
     * * `on_behalf_of: &str` -- The license key provided with your New Relic account.
     */
    pub async fn post(
        &self,
        body: &crate::types::PostAlertsRequest,
    ) -> Result<crate::types::PostAlertsResponse> {
        let url = "/alerts".to_string();
        self.client
            .post(&url, Some(reqwest::Body::from(serde_json::to_vec(body)?)))
            .await
    }

    /**
     * Retrieve a specific alert.
     *
     * This function performs a `GET` to the `/alerts/{alert_id}` endpoint.
     *
     * **This endpoint allows you to retrieve a specific alert.**
     *
     * Alerts allow you to specify an email address to receive notifications regarding your email usage or statistics.
     * * Usage alerts allow you to set the threshold at which an alert will be sent.
     * * Stats notifications allow you to set how frequently you would like to receive email statistics reports. For example, "daily", "weekly", or "monthly".
     *
     * For more information about alerts, please see our [Alerts documentation](https://sendgrid.com/docs/ui/account-and-settings/alerts/).
     *
     * **Parameters:**
     *
     * * `authorization: &str` -- The license key provided with your New Relic account.
     * * `on_behalf_of: &str` -- The license key provided with your New Relic account.
     */
    pub async fn get(&self, alert_id: i64) -> Result<crate::types::GetAlertsAlertResponse> {
        let url = format!(
            "/alerts/{}",
            crate::progenitor_support::encode_path(&alert_id.to_string()),
        );

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

    /**
     * Delete an alert.
     *
     * This function performs a `DELETE` to the `/alerts/{alert_id}` endpoint.
     *
     * **This endpoint allows you to delete an alert.**
     *
     * Alerts allow you to specify an email address to receive notifications regarding your email usage or statistics.
     * * Usage alerts allow you to set the threshold at which an alert will be sent.
     * * Stats notifications allow you to set how frequently you would like to receive email statistics reports. For example, "daily", "weekly", or "monthly".
     *
     * For more information about alerts, please see our [Alerts documentation](https://sendgrid.com/docs/ui/account-and-settings/alerts/).
     *
     * **Parameters:**
     *
     * * `on_behalf_of: &str` -- The license key provided with your New Relic account.
     */
    pub async fn delete(&self, alert_id: i64) -> Result<crate::types::Help> {
        let url = format!(
            "/alerts/{}",
            crate::progenitor_support::encode_path(&alert_id.to_string()),
        );

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

    /**
     * Update an alert.
     *
     * This function performs a `PATCH` to the `/alerts/{alert_id}` endpoint.
     *
     * **This endpoint allows you to update an alert.**
     *
     * Alerts allow you to specify an email address to receive notifications regarding your email usage or statistics.
     * * Usage alerts allow you to set the threshold at which an alert will be sent.
     * * Stats notifications allow you to set how frequently you would like to receive email statistics reports. For example, "daily", "weekly", or "monthly".
     *
     * For more information about alerts, please see our [Alerts documentation](https://sendgrid.com/docs/ui/account-and-settings/alerts/).
     *
     * **Parameters:**
     *
     * * `on_behalf_of: &str` -- The license key provided with your New Relic account.
     */
    pub async fn patch(
        &self,
        alert_id: i64,
        body: &crate::types::PatchAlertsAlertRequest,
    ) -> Result<crate::types::GetAlertsAlertResponse> {
        let url = format!(
            "/alerts/{}",
            crate::progenitor_support::encode_path(&alert_id.to_string()),
        );

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