twilio_rust_openapi/apis/
api20100401_trigger_api.rs

1/*
2 * Twilio - Api
3 *
4 * This is the public Twilio REST API.
5 *
6 * The version of the OpenAPI document: 1.0.0
7 * Contact: support@twilio.com
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration};
16
17/// struct for passing parameters to the method [`create_usage_trigger`]
18#[derive(Clone, Debug)]
19pub struct CreateUsageTriggerParams {
20    /// The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that will create the resource.
21    pub account_sid: String,
22    /// The URL we should call using `callback_method` when the trigger fires.
23    pub callback_url: String,
24    /// The usage value at which the trigger should fire.  For convenience, you can use an offset value such as `+30` to specify a trigger_value that is 30 units more than the current usage value. Be sure to urlencode a `+` as `%2B`.
25    pub trigger_value: String,
26    pub usage_category: String,
27    /// The HTTP method we should use to call `callback_url`. Can be: `GET` or `POST` and the default is `POST`.
28    pub callback_method: Option<String>,
29    /// A descriptive string that you create to describe the resource. It can be up to 64 characters long.
30    pub friendly_name: Option<String>,
31    pub recurring: Option<String>,
32    pub trigger_by: Option<String>
33}
34
35/// struct for passing parameters to the method [`delete_usage_trigger`]
36#[derive(Clone, Debug)]
37pub struct DeleteUsageTriggerParams {
38    /// The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the UsageTrigger resources to delete.
39    pub account_sid: String,
40    /// The Twilio-provided string that uniquely identifies the UsageTrigger resource to delete.
41    pub sid: String
42}
43
44/// struct for passing parameters to the method [`fetch_usage_trigger`]
45#[derive(Clone, Debug)]
46pub struct FetchUsageTriggerParams {
47    /// The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the UsageTrigger resource to fetch.
48    pub account_sid: String,
49    /// The Twilio-provided string that uniquely identifies the UsageTrigger resource to fetch.
50    pub sid: String
51}
52
53/// struct for passing parameters to the method [`list_usage_trigger`]
54#[derive(Clone, Debug)]
55pub struct ListUsageTriggerParams {
56    /// The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the UsageTrigger resources to read.
57    pub account_sid: String,
58    /// The frequency of recurring UsageTriggers to read. Can be: `daily`, `monthly`, or `yearly` to read recurring UsageTriggers. An empty value or a value of `alltime` reads non-recurring UsageTriggers.
59    pub recurring: Option<String>,
60    /// The trigger field of the UsageTriggers to read.  Can be: `count`, `usage`, or `price` as described in the [UsageRecords documentation](https://www.twilio.com/docs/usage/api/usage-record#usage-count-price).
61    pub trigger_by: Option<String>,
62    /// The usage category of the UsageTriggers to read. Must be a supported [usage categories](https://www.twilio.com/docs/usage/api/usage-record#usage-categories).
63    pub usage_category: Option<String>,
64    /// How many resources to return in each list page. The default is 50, and the maximum is 1000.
65    pub page_size: Option<i32>,
66    /// The page index. This value is simply for client state.
67    pub page: Option<i32>,
68    /// The page token. This is provided by the API.
69    pub page_token: Option<String>
70}
71
72/// struct for passing parameters to the method [`update_usage_trigger`]
73#[derive(Clone, Debug)]
74pub struct UpdateUsageTriggerParams {
75    /// The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the UsageTrigger resources to update.
76    pub account_sid: String,
77    /// The Twilio-provided string that uniquely identifies the UsageTrigger resource to update.
78    pub sid: String,
79    /// The HTTP method we should use to call `callback_url`. Can be: `GET` or `POST` and the default is `POST`.
80    pub callback_method: Option<String>,
81    /// The URL we should call using `callback_method` when the trigger fires.
82    pub callback_url: Option<String>,
83    /// A descriptive string that you create to describe the resource. It can be up to 64 characters long.
84    pub friendly_name: Option<String>
85}
86
87
88/// struct for typed errors of method [`create_usage_trigger`]
89#[derive(Debug, Clone, Serialize, Deserialize)]
90#[serde(untagged)]
91pub enum CreateUsageTriggerError {
92    UnknownValue(serde_json::Value),
93}
94
95/// struct for typed errors of method [`delete_usage_trigger`]
96#[derive(Debug, Clone, Serialize, Deserialize)]
97#[serde(untagged)]
98pub enum DeleteUsageTriggerError {
99    UnknownValue(serde_json::Value),
100}
101
102/// struct for typed errors of method [`fetch_usage_trigger`]
103#[derive(Debug, Clone, Serialize, Deserialize)]
104#[serde(untagged)]
105pub enum FetchUsageTriggerError {
106    UnknownValue(serde_json::Value),
107}
108
109/// struct for typed errors of method [`list_usage_trigger`]
110#[derive(Debug, Clone, Serialize, Deserialize)]
111#[serde(untagged)]
112pub enum ListUsageTriggerError {
113    UnknownValue(serde_json::Value),
114}
115
116/// struct for typed errors of method [`update_usage_trigger`]
117#[derive(Debug, Clone, Serialize, Deserialize)]
118#[serde(untagged)]
119pub enum UpdateUsageTriggerError {
120    UnknownValue(serde_json::Value),
121}
122
123
124/// Create a new UsageTrigger
125pub async fn create_usage_trigger(configuration: &configuration::Configuration, params: CreateUsageTriggerParams) -> Result<models::ApiPeriodV2010PeriodAccountPeriodUsagePeriodUsageTrigger, Error<CreateUsageTriggerError>> {
126    let local_var_configuration = configuration;
127
128    // unbox the parameters
129    let account_sid = params.account_sid;
130    let callback_url = params.callback_url;
131    let trigger_value = params.trigger_value;
132    let usage_category = params.usage_category;
133    let callback_method = params.callback_method;
134    let friendly_name = params.friendly_name;
135    let recurring = params.recurring;
136    let trigger_by = params.trigger_by;
137
138
139    let local_var_client = &local_var_configuration.client;
140
141    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/Usage/Triggers.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid));
142    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
143
144    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
145        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
146    }
147    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
148        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
149    };
150    let mut local_var_form_params = std::collections::HashMap::new();
151    local_var_form_params.insert("CallbackUrl", callback_url.to_string());
152    local_var_form_params.insert("TriggerValue", trigger_value.to_string());
153    local_var_form_params.insert("UsageCategory", usage_category.to_string());
154    if let Some(local_var_param_value) = callback_method {
155        local_var_form_params.insert("CallbackMethod", local_var_param_value.to_string());
156    }
157    if let Some(local_var_param_value) = friendly_name {
158        local_var_form_params.insert("FriendlyName", local_var_param_value.to_string());
159    }
160    if let Some(local_var_param_value) = recurring {
161        local_var_form_params.insert("Recurring", local_var_param_value.to_string());
162    }
163    if let Some(local_var_param_value) = trigger_by {
164        local_var_form_params.insert("TriggerBy", local_var_param_value.to_string());
165    }
166    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
167
168    let local_var_req = local_var_req_builder.build()?;
169    let local_var_resp = local_var_client.execute(local_var_req).await?;
170
171    let local_var_status = local_var_resp.status();
172    let local_var_content = local_var_resp.text().await?;
173
174    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
175        serde_json::from_str(&local_var_content).map_err(Error::from)
176    } else {
177        let local_var_entity: Option<CreateUsageTriggerError> = serde_json::from_str(&local_var_content).ok();
178        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
179        Err(Error::ResponseError(local_var_error))
180    }
181}
182
183/// 
184pub async fn delete_usage_trigger(configuration: &configuration::Configuration, params: DeleteUsageTriggerParams) -> Result<(), Error<DeleteUsageTriggerError>> {
185    let local_var_configuration = configuration;
186
187    // unbox the parameters
188    let account_sid = params.account_sid;
189    let sid = params.sid;
190
191
192    let local_var_client = &local_var_configuration.client;
193
194    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/Usage/Triggers/{Sid}.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid), Sid=crate::apis::urlencode(sid));
195    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
196
197    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
198        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
199    }
200    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
201        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
202    };
203
204    let local_var_req = local_var_req_builder.build()?;
205    let local_var_resp = local_var_client.execute(local_var_req).await?;
206
207    let local_var_status = local_var_resp.status();
208    let local_var_content = local_var_resp.text().await?;
209
210    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
211        Ok(())
212    } else {
213        let local_var_entity: Option<DeleteUsageTriggerError> = serde_json::from_str(&local_var_content).ok();
214        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
215        Err(Error::ResponseError(local_var_error))
216    }
217}
218
219/// Fetch and instance of a usage-trigger
220pub async fn fetch_usage_trigger(configuration: &configuration::Configuration, params: FetchUsageTriggerParams) -> Result<models::ApiPeriodV2010PeriodAccountPeriodUsagePeriodUsageTrigger, Error<FetchUsageTriggerError>> {
221    let local_var_configuration = configuration;
222
223    // unbox the parameters
224    let account_sid = params.account_sid;
225    let sid = params.sid;
226
227
228    let local_var_client = &local_var_configuration.client;
229
230    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/Usage/Triggers/{Sid}.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid), Sid=crate::apis::urlencode(sid));
231    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
232
233    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
234        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
235    }
236    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
237        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
238    };
239
240    let local_var_req = local_var_req_builder.build()?;
241    let local_var_resp = local_var_client.execute(local_var_req).await?;
242
243    let local_var_status = local_var_resp.status();
244    let local_var_content = local_var_resp.text().await?;
245
246    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
247        serde_json::from_str(&local_var_content).map_err(Error::from)
248    } else {
249        let local_var_entity: Option<FetchUsageTriggerError> = serde_json::from_str(&local_var_content).ok();
250        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
251        Err(Error::ResponseError(local_var_error))
252    }
253}
254
255/// Retrieve a list of usage-triggers belonging to the account used to make the request
256pub async fn list_usage_trigger(configuration: &configuration::Configuration, params: ListUsageTriggerParams) -> Result<models::ListUsageTriggerResponse, Error<ListUsageTriggerError>> {
257    let local_var_configuration = configuration;
258
259    // unbox the parameters
260    let account_sid = params.account_sid;
261    let recurring = params.recurring;
262    let trigger_by = params.trigger_by;
263    let usage_category = params.usage_category;
264    let page_size = params.page_size;
265    let page = params.page;
266    let page_token = params.page_token;
267
268
269    let local_var_client = &local_var_configuration.client;
270
271    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/Usage/Triggers.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid));
272    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
273
274    if let Some(ref local_var_str) = recurring {
275        local_var_req_builder = local_var_req_builder.query(&[("Recurring", &local_var_str.to_string())]);
276    }
277    if let Some(ref local_var_str) = trigger_by {
278        local_var_req_builder = local_var_req_builder.query(&[("TriggerBy", &local_var_str.to_string())]);
279    }
280    if let Some(ref local_var_str) = usage_category {
281        local_var_req_builder = local_var_req_builder.query(&[("UsageCategory", &local_var_str.to_string())]);
282    }
283    if let Some(ref local_var_str) = page_size {
284        local_var_req_builder = local_var_req_builder.query(&[("PageSize", &local_var_str.to_string())]);
285    }
286    if let Some(ref local_var_str) = page {
287        local_var_req_builder = local_var_req_builder.query(&[("Page", &local_var_str.to_string())]);
288    }
289    if let Some(ref local_var_str) = page_token {
290        local_var_req_builder = local_var_req_builder.query(&[("PageToken", &local_var_str.to_string())]);
291    }
292    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
293        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
294    }
295    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
296        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
297    };
298
299    let local_var_req = local_var_req_builder.build()?;
300    let local_var_resp = local_var_client.execute(local_var_req).await?;
301
302    let local_var_status = local_var_resp.status();
303    let local_var_content = local_var_resp.text().await?;
304
305    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
306        serde_json::from_str(&local_var_content).map_err(Error::from)
307    } else {
308        let local_var_entity: Option<ListUsageTriggerError> = serde_json::from_str(&local_var_content).ok();
309        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
310        Err(Error::ResponseError(local_var_error))
311    }
312}
313
314/// Update an instance of a usage trigger
315pub async fn update_usage_trigger(configuration: &configuration::Configuration, params: UpdateUsageTriggerParams) -> Result<models::ApiPeriodV2010PeriodAccountPeriodUsagePeriodUsageTrigger, Error<UpdateUsageTriggerError>> {
316    let local_var_configuration = configuration;
317
318    // unbox the parameters
319    let account_sid = params.account_sid;
320    let sid = params.sid;
321    let callback_method = params.callback_method;
322    let callback_url = params.callback_url;
323    let friendly_name = params.friendly_name;
324
325
326    let local_var_client = &local_var_configuration.client;
327
328    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/Usage/Triggers/{Sid}.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid), Sid=crate::apis::urlencode(sid));
329    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
330
331    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
332        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
333    }
334    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
335        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
336    };
337    let mut local_var_form_params = std::collections::HashMap::new();
338    if let Some(local_var_param_value) = callback_method {
339        local_var_form_params.insert("CallbackMethod", local_var_param_value.to_string());
340    }
341    if let Some(local_var_param_value) = callback_url {
342        local_var_form_params.insert("CallbackUrl", local_var_param_value.to_string());
343    }
344    if let Some(local_var_param_value) = friendly_name {
345        local_var_form_params.insert("FriendlyName", local_var_param_value.to_string());
346    }
347    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
348
349    let local_var_req = local_var_req_builder.build()?;
350    let local_var_resp = local_var_client.execute(local_var_req).await?;
351
352    let local_var_status = local_var_resp.status();
353    let local_var_content = local_var_resp.text().await?;
354
355    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
356        serde_json::from_str(&local_var_content).map_err(Error::from)
357    } else {
358        let local_var_entity: Option<UpdateUsageTriggerError> = serde_json::from_str(&local_var_content).ok();
359        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
360        Err(Error::ResponseError(local_var_error))
361    }
362}
363