fastly_api/apis/
customer_api.rs

1/*
2 * Fastly API
3 *
4 * Via the Fastly API you can perform any of the operations that are possible within the management console,  including creating services, domains, and backends, configuring rules or uploading your own application code, as well as account operations such as user administration and billing reports. The API is organized into collections of endpoints that allow manipulation of objects related to Fastly services and accounts. For the most accurate and up-to-date API reference content, visit our [Developer Hub](https://www.fastly.com/documentation/reference/api/) 
5 *
6 */
7
8
9use reqwest;
10
11use crate::apis::ResponseContent;
12use super::{Error, configuration};
13
14/// struct for passing parameters to the method [`delete_customer`]
15#[derive(Clone, Debug, Default)]
16pub struct DeleteCustomerParams {
17    /// Alphanumeric string identifying the customer.
18    pub customer_id: String
19}
20
21/// struct for passing parameters to the method [`get_customer`]
22#[derive(Clone, Debug, Default)]
23pub struct GetCustomerParams {
24    /// Alphanumeric string identifying the customer.
25    pub customer_id: String
26}
27
28/// struct for passing parameters to the method [`list_users`]
29#[derive(Clone, Debug, Default)]
30pub struct ListUsersParams {
31    /// Alphanumeric string identifying the customer.
32    pub customer_id: String
33}
34
35/// struct for passing parameters to the method [`update_customer`]
36#[derive(Clone, Debug, Default)]
37pub struct UpdateCustomerParams {
38    /// Alphanumeric string identifying the customer.
39    pub customer_id: String,
40    /// The alphanumeric string representing the primary billing contact.
41    pub billing_contact_id: Option<String>,
42    /// Customer's current network revenue type.
43    pub billing_network_type: Option<String>,
44    /// Used for adding purchased orders to customer's account.
45    pub billing_ref: Option<String>,
46    /// Whether this customer can view or edit wordpress.
47    pub can_configure_wordpress: Option<bool>,
48    /// Whether this customer can reset passwords.
49    pub can_reset_passwords: Option<bool>,
50    /// Whether this customer can upload VCL.
51    pub can_upload_vcl: Option<bool>,
52    /// Specifies whether 2FA is forced or not forced on the customer account. Logs out non-2FA users once 2FA is force enabled.
53    pub force_2fa: Option<bool>,
54    /// Specifies whether SSO is forced or not forced on the customer account.
55    pub force_sso: Option<bool>,
56    /// Specifies whether the account has access or does not have access to the account panel.
57    pub has_account_panel: Option<bool>,
58    /// Specifies whether the account has access or does not have access to the improved events.
59    pub has_improved_events: Option<bool>,
60    /// Whether this customer can view or edit the SSL config.
61    pub has_improved_ssl_config: Option<bool>,
62    /// Specifies whether the account has enabled or not enabled openstack logging.
63    pub has_openstack_logging: Option<bool>,
64    /// Specifies whether the account can edit PCI for a service.
65    pub has_pci: Option<bool>,
66    /// Specifies whether PCI passwords are required for the account.
67    pub has_pci_passwords: Option<bool>,
68    /// The range of IP addresses authorized to access the customer account.
69    pub ip_whitelist: Option<String>,
70    /// The alphanumeric string identifying the account's legal contact.
71    pub legal_contact_id: Option<String>,
72    /// The name of the customer, generally the company name.
73    pub name: Option<String>,
74    /// The alphanumeric string identifying the account owner.
75    pub owner_id: Option<String>,
76    /// The phone number associated with the account.
77    pub phone_number: Option<String>,
78    /// The postal address associated with the account.
79    pub postal_address: Option<String>,
80    /// The pricing plan this customer is under.
81    pub pricing_plan: Option<String>,
82    /// The alphanumeric string identifying the pricing plan.
83    pub pricing_plan_id: Option<String>,
84    /// The alphanumeric string identifying the account's security contact.
85    pub security_contact_id: Option<String>,
86    /// The alphanumeric string identifying the account's technical contact.
87    pub technical_contact_id: Option<String>
88}
89
90
91/// struct for typed errors of method [`delete_customer`]
92#[derive(Debug, Clone, Serialize, Deserialize)]
93#[serde(untagged)]
94pub enum DeleteCustomerError {
95    UnknownValue(serde_json::Value),
96}
97
98/// struct for typed errors of method [`get_customer`]
99#[derive(Debug, Clone, Serialize, Deserialize)]
100#[serde(untagged)]
101pub enum GetCustomerError {
102    UnknownValue(serde_json::Value),
103}
104
105/// struct for typed errors of method [`get_logged_in_customer`]
106#[derive(Debug, Clone, Serialize, Deserialize)]
107#[serde(untagged)]
108pub enum GetLoggedInCustomerError {
109    UnknownValue(serde_json::Value),
110}
111
112/// struct for typed errors of method [`list_users`]
113#[derive(Debug, Clone, Serialize, Deserialize)]
114#[serde(untagged)]
115pub enum ListUsersError {
116    UnknownValue(serde_json::Value),
117}
118
119/// struct for typed errors of method [`update_customer`]
120#[derive(Debug, Clone, Serialize, Deserialize)]
121#[serde(untagged)]
122pub enum UpdateCustomerError {
123    UnknownValue(serde_json::Value),
124}
125
126
127/// Delete a customer.
128pub async fn delete_customer(configuration: &mut configuration::Configuration, params: DeleteCustomerParams) -> Result<crate::models::InlineResponse200, Error<DeleteCustomerError>> {
129    let local_var_configuration = configuration;
130
131    // unbox the parameters
132    let customer_id = params.customer_id;
133
134
135    let local_var_client = &local_var_configuration.client;
136
137    let local_var_uri_str = format!("{}/customer/{customer_id}", local_var_configuration.base_path, customer_id=crate::apis::urlencode(customer_id));
138    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
139
140    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
141        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
142    }
143    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
144        let local_var_key = local_var_apikey.key.clone();
145        let local_var_value = match local_var_apikey.prefix {
146            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
147            None => local_var_key,
148        };
149        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
150    };
151
152    let local_var_req = local_var_req_builder.build()?;
153    let local_var_resp = local_var_client.execute(local_var_req).await?;
154
155    if "DELETE" != "GET" && "DELETE" != "HEAD" {
156      let headers = local_var_resp.headers();
157      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
158          Some(v) => v.to_str().unwrap().parse().unwrap(),
159          None => configuration::DEFAULT_RATELIMIT,
160      };
161      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
162          Some(v) => v.to_str().unwrap().parse().unwrap(),
163          None => 0,
164      };
165    }
166
167    let local_var_status = local_var_resp.status();
168    let local_var_content = local_var_resp.text().await?;
169
170    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
171        serde_json::from_str(&local_var_content).map_err(Error::from)
172    } else {
173        let local_var_entity: Option<DeleteCustomerError> = serde_json::from_str(&local_var_content).ok();
174        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
175        Err(Error::ResponseError(local_var_error))
176    }
177}
178
179/// Get a specific customer.
180pub async fn get_customer(configuration: &mut configuration::Configuration, params: GetCustomerParams) -> Result<crate::models::CustomerResponse, Error<GetCustomerError>> {
181    let local_var_configuration = configuration;
182
183    // unbox the parameters
184    let customer_id = params.customer_id;
185
186
187    let local_var_client = &local_var_configuration.client;
188
189    let local_var_uri_str = format!("{}/customer/{customer_id}", local_var_configuration.base_path, customer_id=crate::apis::urlencode(customer_id));
190    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
191
192    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
193        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
194    }
195    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
196        let local_var_key = local_var_apikey.key.clone();
197        let local_var_value = match local_var_apikey.prefix {
198            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
199            None => local_var_key,
200        };
201        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
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    if "GET" != "GET" && "GET" != "HEAD" {
208      let headers = local_var_resp.headers();
209      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
210          Some(v) => v.to_str().unwrap().parse().unwrap(),
211          None => configuration::DEFAULT_RATELIMIT,
212      };
213      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
214          Some(v) => v.to_str().unwrap().parse().unwrap(),
215          None => 0,
216      };
217    }
218
219    let local_var_status = local_var_resp.status();
220    let local_var_content = local_var_resp.text().await?;
221
222    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
223        serde_json::from_str(&local_var_content).map_err(Error::from)
224    } else {
225        let local_var_entity: Option<GetCustomerError> = serde_json::from_str(&local_var_content).ok();
226        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
227        Err(Error::ResponseError(local_var_error))
228    }
229}
230
231/// Get the logged in customer.
232pub async fn get_logged_in_customer(configuration: &mut configuration::Configuration) -> Result<crate::models::CustomerResponse, Error<GetLoggedInCustomerError>> {
233    let local_var_configuration = configuration;
234
235    // unbox the parameters
236
237
238    let local_var_client = &local_var_configuration.client;
239
240    let local_var_uri_str = format!("{}/current_customer", local_var_configuration.base_path);
241    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
242
243    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
244        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
245    }
246    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
247        let local_var_key = local_var_apikey.key.clone();
248        let local_var_value = match local_var_apikey.prefix {
249            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
250            None => local_var_key,
251        };
252        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
253    };
254
255    let local_var_req = local_var_req_builder.build()?;
256    let local_var_resp = local_var_client.execute(local_var_req).await?;
257
258    if "GET" != "GET" && "GET" != "HEAD" {
259      let headers = local_var_resp.headers();
260      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
261          Some(v) => v.to_str().unwrap().parse().unwrap(),
262          None => configuration::DEFAULT_RATELIMIT,
263      };
264      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
265          Some(v) => v.to_str().unwrap().parse().unwrap(),
266          None => 0,
267      };
268    }
269
270    let local_var_status = local_var_resp.status();
271    let local_var_content = local_var_resp.text().await?;
272
273    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
274        serde_json::from_str(&local_var_content).map_err(Error::from)
275    } else {
276        let local_var_entity: Option<GetLoggedInCustomerError> = serde_json::from_str(&local_var_content).ok();
277        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
278        Err(Error::ResponseError(local_var_error))
279    }
280}
281
282/// List all users from a specified customer id.
283pub async fn list_users(configuration: &mut configuration::Configuration, params: ListUsersParams) -> Result<Vec<crate::models::SchemasUserResponse>, Error<ListUsersError>> {
284    let local_var_configuration = configuration;
285
286    // unbox the parameters
287    let customer_id = params.customer_id;
288
289
290    let local_var_client = &local_var_configuration.client;
291
292    let local_var_uri_str = format!("{}/customer/{customer_id}/users", local_var_configuration.base_path, customer_id=crate::apis::urlencode(customer_id));
293    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
294
295    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
296        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
297    }
298    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
299        let local_var_key = local_var_apikey.key.clone();
300        let local_var_value = match local_var_apikey.prefix {
301            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
302            None => local_var_key,
303        };
304        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
305    };
306
307    let local_var_req = local_var_req_builder.build()?;
308    let local_var_resp = local_var_client.execute(local_var_req).await?;
309
310    if "GET" != "GET" && "GET" != "HEAD" {
311      let headers = local_var_resp.headers();
312      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
313          Some(v) => v.to_str().unwrap().parse().unwrap(),
314          None => configuration::DEFAULT_RATELIMIT,
315      };
316      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
317          Some(v) => v.to_str().unwrap().parse().unwrap(),
318          None => 0,
319      };
320    }
321
322    let local_var_status = local_var_resp.status();
323    let local_var_content = local_var_resp.text().await?;
324
325    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
326        serde_json::from_str(&local_var_content).map_err(Error::from)
327    } else {
328        let local_var_entity: Option<ListUsersError> = serde_json::from_str(&local_var_content).ok();
329        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
330        Err(Error::ResponseError(local_var_error))
331    }
332}
333
334/// Update a customer.
335pub async fn update_customer(configuration: &mut configuration::Configuration, params: UpdateCustomerParams) -> Result<crate::models::CustomerResponse, Error<UpdateCustomerError>> {
336    let local_var_configuration = configuration;
337
338    // unbox the parameters
339    let customer_id = params.customer_id;
340    let billing_contact_id = params.billing_contact_id;
341    let billing_network_type = params.billing_network_type;
342    let billing_ref = params.billing_ref;
343    let can_configure_wordpress = params.can_configure_wordpress;
344    let can_reset_passwords = params.can_reset_passwords;
345    let can_upload_vcl = params.can_upload_vcl;
346    let force_2fa = params.force_2fa;
347    let force_sso = params.force_sso;
348    let has_account_panel = params.has_account_panel;
349    let has_improved_events = params.has_improved_events;
350    let has_improved_ssl_config = params.has_improved_ssl_config;
351    let has_openstack_logging = params.has_openstack_logging;
352    let has_pci = params.has_pci;
353    let has_pci_passwords = params.has_pci_passwords;
354    let ip_whitelist = params.ip_whitelist;
355    let legal_contact_id = params.legal_contact_id;
356    let name = params.name;
357    let owner_id = params.owner_id;
358    let phone_number = params.phone_number;
359    let postal_address = params.postal_address;
360    let pricing_plan = params.pricing_plan;
361    let pricing_plan_id = params.pricing_plan_id;
362    let security_contact_id = params.security_contact_id;
363    let technical_contact_id = params.technical_contact_id;
364
365
366    let local_var_client = &local_var_configuration.client;
367
368    let local_var_uri_str = format!("{}/customer/{customer_id}", local_var_configuration.base_path, customer_id=crate::apis::urlencode(customer_id));
369    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
370
371    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
372        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
373    }
374    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
375        let local_var_key = local_var_apikey.key.clone();
376        let local_var_value = match local_var_apikey.prefix {
377            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
378            None => local_var_key,
379        };
380        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
381    };
382    let mut local_var_form_params = std::collections::HashMap::new();
383    if let Some(local_var_param_value) = billing_contact_id {
384        local_var_form_params.insert("billing_contact_id", local_var_param_value.to_string());
385    }
386    if let Some(local_var_param_value) = billing_network_type {
387        local_var_form_params.insert("billing_network_type", local_var_param_value.to_string());
388    }
389    if let Some(local_var_param_value) = billing_ref {
390        local_var_form_params.insert("billing_ref", local_var_param_value.to_string());
391    }
392    if let Some(local_var_param_value) = can_configure_wordpress {
393        local_var_form_params.insert("can_configure_wordpress", local_var_param_value.to_string());
394    }
395    if let Some(local_var_param_value) = can_reset_passwords {
396        local_var_form_params.insert("can_reset_passwords", local_var_param_value.to_string());
397    }
398    if let Some(local_var_param_value) = can_upload_vcl {
399        local_var_form_params.insert("can_upload_vcl", local_var_param_value.to_string());
400    }
401    if let Some(local_var_param_value) = force_2fa {
402        local_var_form_params.insert("force_2fa", local_var_param_value.to_string());
403    }
404    if let Some(local_var_param_value) = force_sso {
405        local_var_form_params.insert("force_sso", local_var_param_value.to_string());
406    }
407    if let Some(local_var_param_value) = has_account_panel {
408        local_var_form_params.insert("has_account_panel", local_var_param_value.to_string());
409    }
410    if let Some(local_var_param_value) = has_improved_events {
411        local_var_form_params.insert("has_improved_events", local_var_param_value.to_string());
412    }
413    if let Some(local_var_param_value) = has_improved_ssl_config {
414        local_var_form_params.insert("has_improved_ssl_config", local_var_param_value.to_string());
415    }
416    if let Some(local_var_param_value) = has_openstack_logging {
417        local_var_form_params.insert("has_openstack_logging", local_var_param_value.to_string());
418    }
419    if let Some(local_var_param_value) = has_pci {
420        local_var_form_params.insert("has_pci", local_var_param_value.to_string());
421    }
422    if let Some(local_var_param_value) = has_pci_passwords {
423        local_var_form_params.insert("has_pci_passwords", local_var_param_value.to_string());
424    }
425    if let Some(local_var_param_value) = ip_whitelist {
426        local_var_form_params.insert("ip_whitelist", local_var_param_value.to_string());
427    }
428    if let Some(local_var_param_value) = legal_contact_id {
429        local_var_form_params.insert("legal_contact_id", local_var_param_value.to_string());
430    }
431    if let Some(local_var_param_value) = name {
432        local_var_form_params.insert("name", local_var_param_value.to_string());
433    }
434    if let Some(local_var_param_value) = owner_id {
435        local_var_form_params.insert("owner_id", local_var_param_value.to_string());
436    }
437    if let Some(local_var_param_value) = phone_number {
438        local_var_form_params.insert("phone_number", local_var_param_value.to_string());
439    }
440    if let Some(local_var_param_value) = postal_address {
441        local_var_form_params.insert("postal_address", local_var_param_value.to_string());
442    }
443    if let Some(local_var_param_value) = pricing_plan {
444        local_var_form_params.insert("pricing_plan", local_var_param_value.to_string());
445    }
446    if let Some(local_var_param_value) = pricing_plan_id {
447        local_var_form_params.insert("pricing_plan_id", local_var_param_value.to_string());
448    }
449    if let Some(local_var_param_value) = security_contact_id {
450        local_var_form_params.insert("security_contact_id", local_var_param_value.to_string());
451    }
452    if let Some(local_var_param_value) = technical_contact_id {
453        local_var_form_params.insert("technical_contact_id", local_var_param_value.to_string());
454    }
455    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
456
457    let local_var_req = local_var_req_builder.build()?;
458    let local_var_resp = local_var_client.execute(local_var_req).await?;
459
460    if "PUT" != "GET" && "PUT" != "HEAD" {
461      let headers = local_var_resp.headers();
462      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
463          Some(v) => v.to_str().unwrap().parse().unwrap(),
464          None => configuration::DEFAULT_RATELIMIT,
465      };
466      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
467          Some(v) => v.to_str().unwrap().parse().unwrap(),
468          None => 0,
469      };
470    }
471
472    let local_var_status = local_var_resp.status();
473    let local_var_content = local_var_resp.text().await?;
474
475    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
476        serde_json::from_str(&local_var_content).map_err(Error::from)
477    } else {
478        let local_var_entity: Option<UpdateCustomerError> = serde_json::from_str(&local_var_content).ok();
479        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
480        Err(Error::ResponseError(local_var_error))
481    }
482}
483