twilio_rust_openapi/apis/
api20100401_connect_app_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 [`delete_connect_app`]
18#[derive(Clone, Debug)]
19pub struct DeleteConnectAppParams {
20    /// The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the ConnectApp resource to fetch.
21    pub account_sid: String,
22    /// The Twilio-provided string that uniquely identifies the ConnectApp resource to fetch.
23    pub sid: String
24}
25
26/// struct for passing parameters to the method [`fetch_connect_app`]
27#[derive(Clone, Debug)]
28pub struct FetchConnectAppParams {
29    /// The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the ConnectApp resource to fetch.
30    pub account_sid: String,
31    /// The Twilio-provided string that uniquely identifies the ConnectApp resource to fetch.
32    pub sid: String
33}
34
35/// struct for passing parameters to the method [`list_connect_app`]
36#[derive(Clone, Debug)]
37pub struct ListConnectAppParams {
38    /// The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the ConnectApp resources to read.
39    pub account_sid: String,
40    /// How many resources to return in each list page. The default is 50, and the maximum is 1000.
41    pub page_size: Option<i32>,
42    /// The page index. This value is simply for client state.
43    pub page: Option<i32>,
44    /// The page token. This is provided by the API.
45    pub page_token: Option<String>
46}
47
48/// struct for passing parameters to the method [`update_connect_app`]
49#[derive(Clone, Debug)]
50pub struct UpdateConnectAppParams {
51    /// The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the ConnectApp resources to update.
52    pub account_sid: String,
53    /// The Twilio-provided string that uniquely identifies the ConnectApp resource to update.
54    pub sid: String,
55    /// The URL to redirect the user to after we authenticate the user and obtain authorization to access the Connect App.
56    pub authorize_redirect_url: Option<String>,
57    /// The company name to set for the Connect App.
58    pub company_name: Option<String>,
59    /// The HTTP method to use when calling `deauthorize_callback_url`.
60    pub deauthorize_callback_method: Option<String>,
61    /// The URL to call using the `deauthorize_callback_method` to de-authorize the Connect App.
62    pub deauthorize_callback_url: Option<String>,
63    /// A description of the Connect App.
64    pub description: Option<String>,
65    /// A descriptive string that you create to describe the resource. It can be up to 64 characters long.
66    pub friendly_name: Option<String>,
67    /// A public URL where users can obtain more information about this Connect App.
68    pub homepage_url: Option<String>,
69    /// A comma-separated list of the permissions you will request from the users of this ConnectApp.  Can include: `get-all` and `post-all`.
70    pub permissions: Option<Vec<models::ConnectAppEnumPermission>>
71}
72
73
74/// struct for typed errors of method [`delete_connect_app`]
75#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum DeleteConnectAppError {
78    UnknownValue(serde_json::Value),
79}
80
81/// struct for typed errors of method [`fetch_connect_app`]
82#[derive(Debug, Clone, Serialize, Deserialize)]
83#[serde(untagged)]
84pub enum FetchConnectAppError {
85    UnknownValue(serde_json::Value),
86}
87
88/// struct for typed errors of method [`list_connect_app`]
89#[derive(Debug, Clone, Serialize, Deserialize)]
90#[serde(untagged)]
91pub enum ListConnectAppError {
92    UnknownValue(serde_json::Value),
93}
94
95/// struct for typed errors of method [`update_connect_app`]
96#[derive(Debug, Clone, Serialize, Deserialize)]
97#[serde(untagged)]
98pub enum UpdateConnectAppError {
99    UnknownValue(serde_json::Value),
100}
101
102
103/// Delete an instance of a connect-app
104pub async fn delete_connect_app(configuration: &configuration::Configuration, params: DeleteConnectAppParams) -> Result<(), Error<DeleteConnectAppError>> {
105    let local_var_configuration = configuration;
106
107    // unbox the parameters
108    let account_sid = params.account_sid;
109    let sid = params.sid;
110
111
112    let local_var_client = &local_var_configuration.client;
113
114    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/ConnectApps/{Sid}.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid), Sid=crate::apis::urlencode(sid));
115    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
116
117    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
118        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
119    }
120    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
121        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
122    };
123
124    let local_var_req = local_var_req_builder.build()?;
125    let local_var_resp = local_var_client.execute(local_var_req).await?;
126
127    let local_var_status = local_var_resp.status();
128    let local_var_content = local_var_resp.text().await?;
129
130    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
131        Ok(())
132    } else {
133        let local_var_entity: Option<DeleteConnectAppError> = serde_json::from_str(&local_var_content).ok();
134        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
135        Err(Error::ResponseError(local_var_error))
136    }
137}
138
139/// Fetch an instance of a connect-app
140pub async fn fetch_connect_app(configuration: &configuration::Configuration, params: FetchConnectAppParams) -> Result<models::ApiPeriodV2010PeriodAccountPeriodConnectApp, Error<FetchConnectAppError>> {
141    let local_var_configuration = configuration;
142
143    // unbox the parameters
144    let account_sid = params.account_sid;
145    let sid = params.sid;
146
147
148    let local_var_client = &local_var_configuration.client;
149
150    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/ConnectApps/{Sid}.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid), Sid=crate::apis::urlencode(sid));
151    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
152
153    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
154        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
155    }
156    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
157        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
158    };
159
160    let local_var_req = local_var_req_builder.build()?;
161    let local_var_resp = local_var_client.execute(local_var_req).await?;
162
163    let local_var_status = local_var_resp.status();
164    let local_var_content = local_var_resp.text().await?;
165
166    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
167        serde_json::from_str(&local_var_content).map_err(Error::from)
168    } else {
169        let local_var_entity: Option<FetchConnectAppError> = serde_json::from_str(&local_var_content).ok();
170        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
171        Err(Error::ResponseError(local_var_error))
172    }
173}
174
175/// Retrieve a list of connect-apps belonging to the account used to make the request
176pub async fn list_connect_app(configuration: &configuration::Configuration, params: ListConnectAppParams) -> Result<models::ListConnectAppResponse, Error<ListConnectAppError>> {
177    let local_var_configuration = configuration;
178
179    // unbox the parameters
180    let account_sid = params.account_sid;
181    let page_size = params.page_size;
182    let page = params.page;
183    let page_token = params.page_token;
184
185
186    let local_var_client = &local_var_configuration.client;
187
188    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/ConnectApps.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid));
189    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
190
191    if let Some(ref local_var_str) = page_size {
192        local_var_req_builder = local_var_req_builder.query(&[("PageSize", &local_var_str.to_string())]);
193    }
194    if let Some(ref local_var_str) = page {
195        local_var_req_builder = local_var_req_builder.query(&[("Page", &local_var_str.to_string())]);
196    }
197    if let Some(ref local_var_str) = page_token {
198        local_var_req_builder = local_var_req_builder.query(&[("PageToken", &local_var_str.to_string())]);
199    }
200    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
201        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
202    }
203    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
204        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
205    };
206
207    let local_var_req = local_var_req_builder.build()?;
208    let local_var_resp = local_var_client.execute(local_var_req).await?;
209
210    let local_var_status = local_var_resp.status();
211    let local_var_content = local_var_resp.text().await?;
212
213    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
214        serde_json::from_str(&local_var_content).map_err(Error::from)
215    } else {
216        let local_var_entity: Option<ListConnectAppError> = serde_json::from_str(&local_var_content).ok();
217        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
218        Err(Error::ResponseError(local_var_error))
219    }
220}
221
222/// Update a connect-app with the specified parameters
223pub async fn update_connect_app(configuration: &configuration::Configuration, params: UpdateConnectAppParams) -> Result<models::ApiPeriodV2010PeriodAccountPeriodConnectApp, Error<UpdateConnectAppError>> {
224    let local_var_configuration = configuration;
225
226    // unbox the parameters
227    let account_sid = params.account_sid;
228    let sid = params.sid;
229    let authorize_redirect_url = params.authorize_redirect_url;
230    let company_name = params.company_name;
231    let deauthorize_callback_method = params.deauthorize_callback_method;
232    let deauthorize_callback_url = params.deauthorize_callback_url;
233    let description = params.description;
234    let friendly_name = params.friendly_name;
235    let homepage_url = params.homepage_url;
236    let permissions = params.permissions;
237
238
239    let local_var_client = &local_var_configuration.client;
240
241    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/ConnectApps/{Sid}.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid), Sid=crate::apis::urlencode(sid));
242    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
243
244    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
245        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
246    }
247    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
248        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
249    };
250    let mut local_var_form_params = std::collections::HashMap::new();
251    if let Some(local_var_param_value) = authorize_redirect_url {
252        local_var_form_params.insert("AuthorizeRedirectUrl", local_var_param_value.to_string());
253    }
254    if let Some(local_var_param_value) = company_name {
255        local_var_form_params.insert("CompanyName", local_var_param_value.to_string());
256    }
257    if let Some(local_var_param_value) = deauthorize_callback_method {
258        local_var_form_params.insert("DeauthorizeCallbackMethod", local_var_param_value.to_string());
259    }
260    if let Some(local_var_param_value) = deauthorize_callback_url {
261        local_var_form_params.insert("DeauthorizeCallbackUrl", local_var_param_value.to_string());
262    }
263    if let Some(local_var_param_value) = description {
264        local_var_form_params.insert("Description", local_var_param_value.to_string());
265    }
266    if let Some(local_var_param_value) = friendly_name {
267        local_var_form_params.insert("FriendlyName", local_var_param_value.to_string());
268    }
269    if let Some(local_var_param_value) = homepage_url {
270        local_var_form_params.insert("HomepageUrl", local_var_param_value.to_string());
271    }
272    if let Some(local_var_param_value) = permissions {
273        local_var_form_params.insert("Permissions", local_var_param_value.into_iter().map(|p| p.to_string()).collect::<Vec<String>>().join(",").to_string());
274    }
275    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
276
277    let local_var_req = local_var_req_builder.build()?;
278    let local_var_resp = local_var_client.execute(local_var_req).await?;
279
280    let local_var_status = local_var_resp.status();
281    let local_var_content = local_var_resp.text().await?;
282
283    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
284        serde_json::from_str(&local_var_content).map_err(Error::from)
285    } else {
286        let local_var_entity: Option<UpdateConnectAppError> = serde_json::from_str(&local_var_content).ok();
287        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
288        Err(Error::ResponseError(local_var_error))
289    }
290}
291