fastly_api/apis/
service_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 [`create_service`]
15#[derive(Clone, Debug, Default)]
16pub struct CreateServiceParams {
17    /// A freeform descriptive note.
18    pub comment: Option<String>,
19    /// The name of the service.
20    pub name: Option<String>,
21    /// Alphanumeric string identifying the customer.
22    pub customer_id: Option<String>,
23    /// The type of this service.
24    pub _type: Option<String>
25}
26
27/// struct for passing parameters to the method [`delete_service`]
28#[derive(Clone, Debug, Default)]
29pub struct DeleteServiceParams {
30    /// Alphanumeric string identifying the service.
31    pub service_id: String
32}
33
34/// struct for passing parameters to the method [`get_service`]
35#[derive(Clone, Debug, Default)]
36pub struct GetServiceParams {
37    /// Alphanumeric string identifying the service.
38    pub service_id: String
39}
40
41/// struct for passing parameters to the method [`get_service_detail`]
42#[derive(Clone, Debug, Default)]
43pub struct GetServiceDetailParams {
44    /// Alphanumeric string identifying the service.
45    pub service_id: String,
46    /// Number identifying a version of the service.
47    pub version: Option<i32>,
48    /// Limits the versions array to the active versions. Accepts `true` or `false` (defaults to false).
49    pub filter_versions_active: Option<bool>
50}
51
52/// struct for passing parameters to the method [`list_service_domains`]
53#[derive(Clone, Debug, Default)]
54pub struct ListServiceDomainsParams {
55    /// Alphanumeric string identifying the service.
56    pub service_id: String
57}
58
59/// struct for passing parameters to the method [`list_services`]
60#[derive(Clone, Debug, Default)]
61pub struct ListServicesParams {
62    /// Current page.
63    pub page: Option<i32>,
64    /// Number of records per page.
65    pub per_page: Option<i32>,
66    /// Field on which to sort.
67    pub sort: Option<String>,
68    /// Direction in which to sort results.
69    pub direction: Option<String>
70}
71
72/// struct for passing parameters to the method [`search_service`]
73#[derive(Clone, Debug, Default)]
74pub struct SearchServiceParams {
75    /// The name of the service.
76    pub name: String
77}
78
79/// struct for passing parameters to the method [`update_service`]
80#[derive(Clone, Debug, Default)]
81pub struct UpdateServiceParams {
82    /// Alphanumeric string identifying the service.
83    pub service_id: String,
84    /// A freeform descriptive note.
85    pub comment: Option<String>,
86    /// The name of the service.
87    pub name: Option<String>,
88    /// Alphanumeric string identifying the customer.
89    pub customer_id: Option<String>
90}
91
92
93/// struct for typed errors of method [`create_service`]
94#[derive(Debug, Clone, Serialize, Deserialize)]
95#[serde(untagged)]
96pub enum CreateServiceError {
97    UnknownValue(serde_json::Value),
98}
99
100/// struct for typed errors of method [`delete_service`]
101#[derive(Debug, Clone, Serialize, Deserialize)]
102#[serde(untagged)]
103pub enum DeleteServiceError {
104    UnknownValue(serde_json::Value),
105}
106
107/// struct for typed errors of method [`get_service`]
108#[derive(Debug, Clone, Serialize, Deserialize)]
109#[serde(untagged)]
110pub enum GetServiceError {
111    UnknownValue(serde_json::Value),
112}
113
114/// struct for typed errors of method [`get_service_detail`]
115#[derive(Debug, Clone, Serialize, Deserialize)]
116#[serde(untagged)]
117pub enum GetServiceDetailError {
118    UnknownValue(serde_json::Value),
119}
120
121/// struct for typed errors of method [`list_service_domains`]
122#[derive(Debug, Clone, Serialize, Deserialize)]
123#[serde(untagged)]
124pub enum ListServiceDomainsError {
125    UnknownValue(serde_json::Value),
126}
127
128/// struct for typed errors of method [`list_services`]
129#[derive(Debug, Clone, Serialize, Deserialize)]
130#[serde(untagged)]
131pub enum ListServicesError {
132    UnknownValue(serde_json::Value),
133}
134
135/// struct for typed errors of method [`search_service`]
136#[derive(Debug, Clone, Serialize, Deserialize)]
137#[serde(untagged)]
138pub enum SearchServiceError {
139    UnknownValue(serde_json::Value),
140}
141
142/// struct for typed errors of method [`update_service`]
143#[derive(Debug, Clone, Serialize, Deserialize)]
144#[serde(untagged)]
145pub enum UpdateServiceError {
146    UnknownValue(serde_json::Value),
147}
148
149
150/// Create a service.
151pub async fn create_service(configuration: &mut configuration::Configuration, params: CreateServiceParams) -> Result<crate::models::ServiceResponse, Error<CreateServiceError>> {
152    let local_var_configuration = configuration;
153
154    // unbox the parameters
155    let comment = params.comment;
156    let name = params.name;
157    let customer_id = params.customer_id;
158    let _type = params._type;
159
160
161    let local_var_client = &local_var_configuration.client;
162
163    let local_var_uri_str = format!("{}/service", local_var_configuration.base_path);
164    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
165
166    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
167        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
168    }
169    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
170        let local_var_key = local_var_apikey.key.clone();
171        let local_var_value = match local_var_apikey.prefix {
172            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
173            None => local_var_key,
174        };
175        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
176    };
177    let mut local_var_form_params = std::collections::HashMap::new();
178    if let Some(local_var_param_value) = comment {
179        local_var_form_params.insert("comment", local_var_param_value.to_string());
180    }
181    if let Some(local_var_param_value) = name {
182        local_var_form_params.insert("name", local_var_param_value.to_string());
183    }
184    if let Some(local_var_param_value) = customer_id {
185        local_var_form_params.insert("customer_id", local_var_param_value.to_string());
186    }
187    if let Some(local_var_param_value) = _type {
188        local_var_form_params.insert("type", local_var_param_value.to_string());
189    }
190    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
191
192    let local_var_req = local_var_req_builder.build()?;
193    let local_var_resp = local_var_client.execute(local_var_req).await?;
194
195    if "POST" != "GET" && "POST" != "HEAD" {
196      let headers = local_var_resp.headers();
197      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
198          Some(v) => v.to_str().unwrap().parse().unwrap(),
199          None => configuration::DEFAULT_RATELIMIT,
200      };
201      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
202          Some(v) => v.to_str().unwrap().parse().unwrap(),
203          None => 0,
204      };
205    }
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        serde_json::from_str(&local_var_content).map_err(Error::from)
212    } else {
213        let local_var_entity: Option<CreateServiceError> = 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/// Delete a service.
220pub async fn delete_service(configuration: &mut configuration::Configuration, params: DeleteServiceParams) -> Result<crate::models::InlineResponse200, Error<DeleteServiceError>> {
221    let local_var_configuration = configuration;
222
223    // unbox the parameters
224    let service_id = params.service_id;
225
226
227    let local_var_client = &local_var_configuration.client;
228
229    let local_var_uri_str = format!("{}/service/{service_id}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id));
230    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
231
232    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
233        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
234    }
235    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
236        let local_var_key = local_var_apikey.key.clone();
237        let local_var_value = match local_var_apikey.prefix {
238            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
239            None => local_var_key,
240        };
241        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
242    };
243
244    let local_var_req = local_var_req_builder.build()?;
245    let local_var_resp = local_var_client.execute(local_var_req).await?;
246
247    if "DELETE" != "GET" && "DELETE" != "HEAD" {
248      let headers = local_var_resp.headers();
249      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
250          Some(v) => v.to_str().unwrap().parse().unwrap(),
251          None => configuration::DEFAULT_RATELIMIT,
252      };
253      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
254          Some(v) => v.to_str().unwrap().parse().unwrap(),
255          None => 0,
256      };
257    }
258
259    let local_var_status = local_var_resp.status();
260    let local_var_content = local_var_resp.text().await?;
261
262    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
263        serde_json::from_str(&local_var_content).map_err(Error::from)
264    } else {
265        let local_var_entity: Option<DeleteServiceError> = serde_json::from_str(&local_var_content).ok();
266        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
267        Err(Error::ResponseError(local_var_error))
268    }
269}
270
271/// Get a specific service by id.
272pub async fn get_service(configuration: &mut configuration::Configuration, params: GetServiceParams) -> Result<crate::models::ServiceResponse, Error<GetServiceError>> {
273    let local_var_configuration = configuration;
274
275    // unbox the parameters
276    let service_id = params.service_id;
277
278
279    let local_var_client = &local_var_configuration.client;
280
281    let local_var_uri_str = format!("{}/service/{service_id}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id));
282    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
283
284    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
285        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
286    }
287    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
288        let local_var_key = local_var_apikey.key.clone();
289        let local_var_value = match local_var_apikey.prefix {
290            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
291            None => local_var_key,
292        };
293        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
294    };
295
296    let local_var_req = local_var_req_builder.build()?;
297    let local_var_resp = local_var_client.execute(local_var_req).await?;
298
299    if "GET" != "GET" && "GET" != "HEAD" {
300      let headers = local_var_resp.headers();
301      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
302          Some(v) => v.to_str().unwrap().parse().unwrap(),
303          None => configuration::DEFAULT_RATELIMIT,
304      };
305      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
306          Some(v) => v.to_str().unwrap().parse().unwrap(),
307          None => 0,
308      };
309    }
310
311    let local_var_status = local_var_resp.status();
312    let local_var_content = local_var_resp.text().await?;
313
314    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
315        serde_json::from_str(&local_var_content).map_err(Error::from)
316    } else {
317        let local_var_entity: Option<GetServiceError> = serde_json::from_str(&local_var_content).ok();
318        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
319        Err(Error::ResponseError(local_var_error))
320    }
321}
322
323/// List detailed information on a specified service.
324pub async fn get_service_detail(configuration: &mut configuration::Configuration, params: GetServiceDetailParams) -> Result<crate::models::ServiceDetail, Error<GetServiceDetailError>> {
325    let local_var_configuration = configuration;
326
327    // unbox the parameters
328    let service_id = params.service_id;
329    let version = params.version;
330    let filter_versions_active = params.filter_versions_active;
331
332
333    let local_var_client = &local_var_configuration.client;
334
335    let local_var_uri_str = format!("{}/service/{service_id}/details", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id));
336    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
337
338    if let Some(ref local_var_str) = version {
339        local_var_req_builder = local_var_req_builder.query(&[("version", &local_var_str.to_string())]);
340    }
341    if let Some(ref local_var_str) = filter_versions_active {
342        local_var_req_builder = local_var_req_builder.query(&[("filter[versions.active]", &local_var_str.to_string())]);
343    }
344    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
345        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
346    }
347    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
348        let local_var_key = local_var_apikey.key.clone();
349        let local_var_value = match local_var_apikey.prefix {
350            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
351            None => local_var_key,
352        };
353        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
354    };
355
356    let local_var_req = local_var_req_builder.build()?;
357    let local_var_resp = local_var_client.execute(local_var_req).await?;
358
359    if "GET" != "GET" && "GET" != "HEAD" {
360      let headers = local_var_resp.headers();
361      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
362          Some(v) => v.to_str().unwrap().parse().unwrap(),
363          None => configuration::DEFAULT_RATELIMIT,
364      };
365      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
366          Some(v) => v.to_str().unwrap().parse().unwrap(),
367          None => 0,
368      };
369    }
370
371    let local_var_status = local_var_resp.status();
372    let local_var_content = local_var_resp.text().await?;
373
374    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
375        serde_json::from_str(&local_var_content).map_err(Error::from)
376    } else {
377        let local_var_entity: Option<GetServiceDetailError> = serde_json::from_str(&local_var_content).ok();
378        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
379        Err(Error::ResponseError(local_var_error))
380    }
381}
382
383/// List the domains within a service.
384pub async fn list_service_domains(configuration: &mut configuration::Configuration, params: ListServiceDomainsParams) -> Result<Vec<crate::models::DomainResponse>, Error<ListServiceDomainsError>> {
385    let local_var_configuration = configuration;
386
387    // unbox the parameters
388    let service_id = params.service_id;
389
390
391    let local_var_client = &local_var_configuration.client;
392
393    let local_var_uri_str = format!("{}/service/{service_id}/domain", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id));
394    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
395
396    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
397        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
398    }
399    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
400        let local_var_key = local_var_apikey.key.clone();
401        let local_var_value = match local_var_apikey.prefix {
402            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
403            None => local_var_key,
404        };
405        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
406    };
407
408    let local_var_req = local_var_req_builder.build()?;
409    let local_var_resp = local_var_client.execute(local_var_req).await?;
410
411    if "GET" != "GET" && "GET" != "HEAD" {
412      let headers = local_var_resp.headers();
413      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
414          Some(v) => v.to_str().unwrap().parse().unwrap(),
415          None => configuration::DEFAULT_RATELIMIT,
416      };
417      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
418          Some(v) => v.to_str().unwrap().parse().unwrap(),
419          None => 0,
420      };
421    }
422
423    let local_var_status = local_var_resp.status();
424    let local_var_content = local_var_resp.text().await?;
425
426    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
427        serde_json::from_str(&local_var_content).map_err(Error::from)
428    } else {
429        let local_var_entity: Option<ListServiceDomainsError> = serde_json::from_str(&local_var_content).ok();
430        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
431        Err(Error::ResponseError(local_var_error))
432    }
433}
434
435/// List services.
436pub async fn list_services(configuration: &mut configuration::Configuration, params: ListServicesParams) -> Result<Vec<crate::models::ServiceListResponse>, Error<ListServicesError>> {
437    let local_var_configuration = configuration;
438
439    // unbox the parameters
440    let page = params.page;
441    let per_page = params.per_page;
442    let sort = params.sort;
443    let direction = params.direction;
444
445
446    let local_var_client = &local_var_configuration.client;
447
448    let local_var_uri_str = format!("{}/service", local_var_configuration.base_path);
449    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
450
451    if let Some(ref local_var_str) = page {
452        local_var_req_builder = local_var_req_builder.query(&[("page", &local_var_str.to_string())]);
453    }
454    if let Some(ref local_var_str) = per_page {
455        local_var_req_builder = local_var_req_builder.query(&[("per_page", &local_var_str.to_string())]);
456    }
457    if let Some(ref local_var_str) = sort {
458        local_var_req_builder = local_var_req_builder.query(&[("sort", &local_var_str.to_string())]);
459    }
460    if let Some(ref local_var_str) = direction {
461        local_var_req_builder = local_var_req_builder.query(&[("direction", &local_var_str.to_string())]);
462    }
463    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
464        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
465    }
466    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
467        let local_var_key = local_var_apikey.key.clone();
468        let local_var_value = match local_var_apikey.prefix {
469            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
470            None => local_var_key,
471        };
472        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
473    };
474
475    let local_var_req = local_var_req_builder.build()?;
476    let local_var_resp = local_var_client.execute(local_var_req).await?;
477
478    if "GET" != "GET" && "GET" != "HEAD" {
479      let headers = local_var_resp.headers();
480      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
481          Some(v) => v.to_str().unwrap().parse().unwrap(),
482          None => configuration::DEFAULT_RATELIMIT,
483      };
484      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
485          Some(v) => v.to_str().unwrap().parse().unwrap(),
486          None => 0,
487      };
488    }
489
490    let local_var_status = local_var_resp.status();
491    let local_var_content = local_var_resp.text().await?;
492
493    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
494        serde_json::from_str(&local_var_content).map_err(Error::from)
495    } else {
496        let local_var_entity: Option<ListServicesError> = serde_json::from_str(&local_var_content).ok();
497        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
498        Err(Error::ResponseError(local_var_error))
499    }
500}
501
502/// Get a specific service by name.
503pub async fn search_service(configuration: &mut configuration::Configuration, params: SearchServiceParams) -> Result<crate::models::ServiceResponse, Error<SearchServiceError>> {
504    let local_var_configuration = configuration;
505
506    // unbox the parameters
507    let name = params.name;
508
509
510    let local_var_client = &local_var_configuration.client;
511
512    let local_var_uri_str = format!("{}/service/search", local_var_configuration.base_path);
513    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
514
515    local_var_req_builder = local_var_req_builder.query(&[("name", &name.to_string())]);
516    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
517        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
518    }
519    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
520        let local_var_key = local_var_apikey.key.clone();
521        let local_var_value = match local_var_apikey.prefix {
522            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
523            None => local_var_key,
524        };
525        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
526    };
527
528    let local_var_req = local_var_req_builder.build()?;
529    let local_var_resp = local_var_client.execute(local_var_req).await?;
530
531    if "GET" != "GET" && "GET" != "HEAD" {
532      let headers = local_var_resp.headers();
533      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
534          Some(v) => v.to_str().unwrap().parse().unwrap(),
535          None => configuration::DEFAULT_RATELIMIT,
536      };
537      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
538          Some(v) => v.to_str().unwrap().parse().unwrap(),
539          None => 0,
540      };
541    }
542
543    let local_var_status = local_var_resp.status();
544    let local_var_content = local_var_resp.text().await?;
545
546    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
547        serde_json::from_str(&local_var_content).map_err(Error::from)
548    } else {
549        let local_var_entity: Option<SearchServiceError> = serde_json::from_str(&local_var_content).ok();
550        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
551        Err(Error::ResponseError(local_var_error))
552    }
553}
554
555/// Update a service.
556pub async fn update_service(configuration: &mut configuration::Configuration, params: UpdateServiceParams) -> Result<crate::models::ServiceResponse, Error<UpdateServiceError>> {
557    let local_var_configuration = configuration;
558
559    // unbox the parameters
560    let service_id = params.service_id;
561    let comment = params.comment;
562    let name = params.name;
563    let customer_id = params.customer_id;
564
565
566    let local_var_client = &local_var_configuration.client;
567
568    let local_var_uri_str = format!("{}/service/{service_id}", local_var_configuration.base_path, service_id=crate::apis::urlencode(service_id));
569    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
570
571    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
572        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
573    }
574    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
575        let local_var_key = local_var_apikey.key.clone();
576        let local_var_value = match local_var_apikey.prefix {
577            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
578            None => local_var_key,
579        };
580        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
581    };
582    let mut local_var_form_params = std::collections::HashMap::new();
583    if let Some(local_var_param_value) = comment {
584        local_var_form_params.insert("comment", local_var_param_value.to_string());
585    }
586    if let Some(local_var_param_value) = name {
587        local_var_form_params.insert("name", local_var_param_value.to_string());
588    }
589    if let Some(local_var_param_value) = customer_id {
590        local_var_form_params.insert("customer_id", local_var_param_value.to_string());
591    }
592    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
593
594    let local_var_req = local_var_req_builder.build()?;
595    let local_var_resp = local_var_client.execute(local_var_req).await?;
596
597    if "PUT" != "GET" && "PUT" != "HEAD" {
598      let headers = local_var_resp.headers();
599      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
600          Some(v) => v.to_str().unwrap().parse().unwrap(),
601          None => configuration::DEFAULT_RATELIMIT,
602      };
603      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
604          Some(v) => v.to_str().unwrap().parse().unwrap(),
605          None => 0,
606      };
607    }
608
609    let local_var_status = local_var_resp.status();
610    let local_var_content = local_var_resp.text().await?;
611
612    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
613        serde_json::from_str(&local_var_content).map_err(Error::from)
614    } else {
615        let local_var_entity: Option<UpdateServiceError> = serde_json::from_str(&local_var_content).ok();
616        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
617        Err(Error::ResponseError(local_var_error))
618    }
619}
620