rusoto_apigateway/
generated.rs

1// =================================================================
2//
3//                           * WARNING *
4//
5//                    This file is generated!
6//
7//  Changes made to this file will be overwritten. If changes are
8//  required to the generated code, the service_crategen project
9//  must be updated to generate the changes.
10//
11// =================================================================
12
13use std::error::Error;
14use std::fmt;
15
16use async_trait::async_trait;
17use rusoto_core::credential::ProvideAwsCredentials;
18use rusoto_core::region;
19use rusoto_core::request::{BufferedHttpResponse, DispatchSignedRequest};
20use rusoto_core::{Client, RusotoError};
21
22use rusoto_core::param::{Params, ServiceParams};
23use rusoto_core::proto;
24use rusoto_core::signature::SignedRequest;
25#[allow(unused_imports)]
26use serde::{Deserialize, Serialize};
27use serde_json;
28/// <p>Access log settings, including the access log format and access log destination ARN.</p>
29#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
30#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
31pub struct AccessLogSettings {
32    /// <p>The Amazon Resource Name (ARN) of the CloudWatch Logs log group or Kinesis Data Firehose delivery stream to receive access logs. If you specify a Kinesis Data Firehose delivery stream, the stream name must begin with <code>amazon-apigateway-</code>.</p>
33    #[serde(rename = "destinationArn")]
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub destination_arn: Option<String>,
36    /// <p>A single line format of the access logs of data, as specified by selected <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable-reference">$context variables</a>. The format must include at least <code>$context.requestId</code>.</p>
37    #[serde(rename = "format")]
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub format: Option<String>,
40}
41
42/// <p><p>Represents an AWS account that is associated with API Gateway.</p> <div class="remarks"> <p>To view the account info, call <code>GET</code> on this resource.</p> <h4>Error Codes</h4> <p>The following exception may be thrown when the request fails.</p> <ul> <li>UnauthorizedException</li> <li>NotFoundException</li> <li>TooManyRequestsException</li> </ul> <p>For detailed error code information, including the corresponding HTTP Status Codes, see <a href="https://docs.aws.amazon.com/apigateway/api-reference/handling-errors/#api-error-codes">API Gateway Error Codes</a></p> <h4>Example: Get the information about an account.</h4> <h5>Request</h5> <pre><code>GET /account HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20160531T184618Z Authorization: AWS4-HMAC-SHA256 Credential={access<em>key</em>ID}/us-east-1/apigateway/aws4<em>request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4</em>hash} </code></pre> <h5>Response</h5> <p>The successful response returns a <code>200 OK</code> status code and a payload similar to the following:</p> <pre><code>{ &quot;_links&quot;: { &quot;curies&quot;: { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/account-apigateway-{rel}.html&quot;, &quot;name&quot;: &quot;account&quot;, &quot;templated&quot;: true }, &quot;self&quot;: { &quot;href&quot;: &quot;/account&quot; }, &quot;account:update&quot;: { &quot;href&quot;: &quot;/account&quot; } }, &quot;cloudwatchRoleArn&quot;: &quot;arn:aws:iam::123456789012:role/apigAwsProxyRole&quot;, &quot;throttleSettings&quot;: { &quot;rateLimit&quot;: 500, &quot;burstLimit&quot;: 1000 } } </code></pre> <p>In addition to making the REST API call directly, you can use the AWS CLI and an AWS SDK to access this resource.</p> </div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-limits.html">API Gateway Limits</a> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html">Developer Guide</a>, <a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-account.html">AWS CLI</a> </div></p>
43#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
44#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
45pub struct Account {
46    /// <p>The version of the API keys used for the account.</p>
47    #[serde(rename = "apiKeyVersion")]
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub api_key_version: Option<String>,
50    /// <p>The ARN of an Amazon CloudWatch role for the current <a>Account</a>. </p>
51    #[serde(rename = "cloudwatchRoleArn")]
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub cloudwatch_role_arn: Option<String>,
54    /// <p>A list of features supported for the account. When usage plans are enabled, the features list will include an entry of <code>"UsagePlans"</code>.</p>
55    #[serde(rename = "features")]
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub features: Option<Vec<String>>,
58    /// <p>Specifies the API request limits configured for the current <a>Account</a>.</p>
59    #[serde(rename = "throttleSettings")]
60    #[serde(skip_serializing_if = "Option::is_none")]
61    pub throttle_settings: Option<ThrottleSettings>,
62}
63
64/// <p><p>A resource that can be distributed to callers for executing <a>Method</a> resources that require an API key. API keys can be mapped to any <a>Stage</a> on any <a>RestApi</a>, which indicates that the callers with the API key can make requests to that stage.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-api-keys.html">Use API Keys</a> </div></p>
65#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
66#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
67pub struct ApiKey {
68    /// <p>The timestamp when the API Key was created.</p>
69    #[serde(rename = "createdDate")]
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub created_date: Option<f64>,
72    /// <p>An AWS Marketplace customer identifier , when integrating with the AWS SaaS Marketplace.</p>
73    #[serde(rename = "customerId")]
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub customer_id: Option<String>,
76    /// <p>The description of the API Key.</p>
77    #[serde(rename = "description")]
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub description: Option<String>,
80    /// <p>Specifies whether the API Key can be used by callers.</p>
81    #[serde(rename = "enabled")]
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub enabled: Option<bool>,
84    /// <p>The identifier of the API Key.</p>
85    #[serde(rename = "id")]
86    #[serde(skip_serializing_if = "Option::is_none")]
87    pub id: Option<String>,
88    /// <p>The timestamp when the API Key was last updated.</p>
89    #[serde(rename = "lastUpdatedDate")]
90    #[serde(skip_serializing_if = "Option::is_none")]
91    pub last_updated_date: Option<f64>,
92    /// <p>The name of the API Key.</p>
93    #[serde(rename = "name")]
94    #[serde(skip_serializing_if = "Option::is_none")]
95    pub name: Option<String>,
96    /// <p>A list of <a>Stage</a> resources that are associated with the <a>ApiKey</a> resource.</p>
97    #[serde(rename = "stageKeys")]
98    #[serde(skip_serializing_if = "Option::is_none")]
99    pub stage_keys: Option<Vec<String>>,
100    /// <p>The collection of tags. Each tag element is associated with a given resource.</p>
101    #[serde(rename = "tags")]
102    #[serde(skip_serializing_if = "Option::is_none")]
103    pub tags: Option<::std::collections::HashMap<String, String>>,
104    /// <p>The value of the API Key.</p>
105    #[serde(rename = "value")]
106    #[serde(skip_serializing_if = "Option::is_none")]
107    pub value: Option<String>,
108}
109
110/// <p>The identifier of an <a>ApiKey</a> used in a <a>UsagePlan</a>.</p>
111#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
112#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
113pub struct ApiKeyIds {
114    /// <p>A list of all the <a>ApiKey</a> identifiers.</p>
115    #[serde(rename = "ids")]
116    #[serde(skip_serializing_if = "Option::is_none")]
117    pub ids: Option<Vec<String>>,
118    /// <p>A list of warning messages.</p>
119    #[serde(rename = "warnings")]
120    #[serde(skip_serializing_if = "Option::is_none")]
121    pub warnings: Option<Vec<String>>,
122}
123
124/// <p><p>Represents a collection of API keys as represented by an <a>ApiKeys</a> resource.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-api-keys.html">Use API Keys</a> </div></p>
125#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
126#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
127pub struct ApiKeys {
128    /// <p>The current page of elements from this collection.</p>
129    #[serde(rename = "items")]
130    #[serde(skip_serializing_if = "Option::is_none")]
131    pub items: Option<Vec<ApiKey>>,
132    #[serde(rename = "position")]
133    #[serde(skip_serializing_if = "Option::is_none")]
134    pub position: Option<String>,
135    /// <p>A list of warning messages logged during the import of API keys when the <code>failOnWarnings</code> option is set to true.</p>
136    #[serde(rename = "warnings")]
137    #[serde(skip_serializing_if = "Option::is_none")]
138    pub warnings: Option<Vec<String>>,
139}
140
141/// <p>API stage name of the associated API stage in a usage plan.</p>
142#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
143pub struct ApiStage {
144    /// <p>API Id of the associated API stage in a usage plan.</p>
145    #[serde(rename = "apiId")]
146    #[serde(skip_serializing_if = "Option::is_none")]
147    pub api_id: Option<String>,
148    /// <p>API stage name of the associated API stage in a usage plan.</p>
149    #[serde(rename = "stage")]
150    #[serde(skip_serializing_if = "Option::is_none")]
151    pub stage: Option<String>,
152    /// <p>Map containing method level throttling information for API stage in a usage plan.</p>
153    #[serde(rename = "throttle")]
154    #[serde(skip_serializing_if = "Option::is_none")]
155    pub throttle: Option<::std::collections::HashMap<String, ThrottleSettings>>,
156}
157
158/// <p><p>Represents an authorization layer for methods. If enabled on a method, API Gateway will activate the authorizer when a client calls the method.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html">Use Lambda Function as Authorizer</a> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html">Use Cognito User Pool as Authorizer</a> </div></p>
159#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
160#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
161pub struct Authorizer {
162    /// <p>Optional customer-defined field, used in OpenAPI imports and exports without functional impact.</p>
163    #[serde(rename = "authType")]
164    #[serde(skip_serializing_if = "Option::is_none")]
165    pub auth_type: Option<String>,
166    /// <p>Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, specify null.</p>
167    #[serde(rename = "authorizerCredentials")]
168    #[serde(skip_serializing_if = "Option::is_none")]
169    pub authorizer_credentials: Option<String>,
170    /// <p>The TTL in seconds of cached authorizer results. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway will cache authorizer responses. If this field is not set, the default value is 300. The maximum value is 3600, or 1 hour.</p>
171    #[serde(rename = "authorizerResultTtlInSeconds")]
172    #[serde(skip_serializing_if = "Option::is_none")]
173    pub authorizer_result_ttl_in_seconds: Option<i64>,
174    /// <p>Specifies the authorizer's Uniform Resource Identifier (URI). For <code>TOKEN</code> or <code>REQUEST</code> authorizers, this must be a well-formed Lambda function URI, for example, <code>arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:{account_id}:function:{lambda_function_name}/invocations</code>. In general, the URI has this form <code>arn:aws:apigateway:{region}:lambda:path/{service_api}</code>, where <code>{region}</code> is the same as the region hosting the Lambda function, <code>path</code> indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial <code>/</code>. For Lambda functions, this is usually of the form <code>/2015-03-31/functions/[FunctionARN]/invocations</code>.</p>
175    #[serde(rename = "authorizerUri")]
176    #[serde(skip_serializing_if = "Option::is_none")]
177    pub authorizer_uri: Option<String>,
178    /// <p>The identifier for the authorizer resource.</p>
179    #[serde(rename = "id")]
180    #[serde(skip_serializing_if = "Option::is_none")]
181    pub id: Option<String>,
182    /// <p>The identity source for which authorization is requested. <ul><li>For a <code>TOKEN</code> or <code>COGNITO_USER_POOLS</code> authorizer, this is required and specifies the request header mapping expression for the custom header holding the authorization token submitted by the client. For example, if the token header name is <code>Auth</code>, the header mapping expression is <code>method.request.header.Auth</code>.</li><li>For the <code>REQUEST</code> authorizer, this is required when authorization caching is enabled. The value is a comma-separated string of one or more mapping expressions of the specified request parameters. For example, if an <code>Auth</code> header, a <code>Name</code> query string parameter are defined as identity sources, this value is <code>method.request.header.Auth, method.request.querystring.Name</code>. These parameters will be used to derive the authorization caching key and to perform runtime validation of the <code>REQUEST</code> authorizer by verifying all of the identity-related request parameters are present, not null and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function, otherwise, it returns a 401 Unauthorized response without calling the Lambda function. The valid value is a string of comma-separated mapping expressions of the specified request parameters. When the authorization caching is not enabled, this property is optional.</li></ul></p>
183    #[serde(rename = "identitySource")]
184    #[serde(skip_serializing_if = "Option::is_none")]
185    pub identity_source: Option<String>,
186    /// <p>A validation expression for the incoming identity token. For <code>TOKEN</code> authorizers, this value is a regular expression. For <code>COGNITO_USER_POOLS</code> authorizers, API Gateway will match the <code>aud</code> field of the incoming token from the client against the specified regular expression. It will invoke the authorizer's Lambda function when there is a match. Otherwise, it will return a 401 Unauthorized response without calling the Lambda function. The validation expression does not apply to the <code>REQUEST</code> authorizer.</p>
187    #[serde(rename = "identityValidationExpression")]
188    #[serde(skip_serializing_if = "Option::is_none")]
189    pub identity_validation_expression: Option<String>,
190    /// <p>[Required] The name of the authorizer.</p>
191    #[serde(rename = "name")]
192    #[serde(skip_serializing_if = "Option::is_none")]
193    pub name: Option<String>,
194    /// <p>A list of the Amazon Cognito user pool ARNs for the <code>COGNITO_USER_POOLS</code> authorizer. Each element is of this format: <code>arn:aws:cognito-idp:{region}:{account_id}:userpool/{user_pool_id}</code>. For a <code>TOKEN</code> or <code>REQUEST</code> authorizer, this is not defined. </p>
195    #[serde(rename = "providerARNs")]
196    #[serde(skip_serializing_if = "Option::is_none")]
197    pub provider_ar_ns: Option<Vec<String>>,
198    /// <p>The authorizer type. Valid values are <code>TOKEN</code> for a Lambda function using a single authorization token submitted in a custom header, <code>REQUEST</code> for a Lambda function using incoming request parameters, and <code>COGNITO_USER_POOLS</code> for using an Amazon Cognito user pool.</p>
199    #[serde(rename = "type")]
200    #[serde(skip_serializing_if = "Option::is_none")]
201    pub type_: Option<String>,
202}
203
204/// <p><p>Represents a collection of <a>Authorizer</a> resources.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html">Use Lambda Function as Authorizer</a> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html">Use Cognito User Pool as Authorizer</a> </div></p>
205#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
206#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
207pub struct Authorizers {
208    /// <p>The current page of elements from this collection.</p>
209    #[serde(rename = "items")]
210    #[serde(skip_serializing_if = "Option::is_none")]
211    pub items: Option<Vec<Authorizer>>,
212    #[serde(rename = "position")]
213    #[serde(skip_serializing_if = "Option::is_none")]
214    pub position: Option<String>,
215}
216
217/// <p><p>Represents the base path that callers of the API must provide as part of the URL after the domain name.</p> <div class="remarks">A custom domain name plus a <code>BasePathMapping</code> specification identifies a deployed <a>RestApi</a> in a given stage of the owner <a>Account</a>.</div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html">Use Custom Domain Names</a> </div></p>
218#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
219#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
220pub struct BasePathMapping {
221    /// <p>The base path name that callers of the API must provide as part of the URL after the domain name.</p>
222    #[serde(rename = "basePath")]
223    #[serde(skip_serializing_if = "Option::is_none")]
224    pub base_path: Option<String>,
225    /// <p>The string identifier of the associated <a>RestApi</a>.</p>
226    #[serde(rename = "restApiId")]
227    #[serde(skip_serializing_if = "Option::is_none")]
228    pub rest_api_id: Option<String>,
229    /// <p>The name of the associated stage.</p>
230    #[serde(rename = "stage")]
231    #[serde(skip_serializing_if = "Option::is_none")]
232    pub stage: Option<String>,
233}
234
235/// <p><p>Represents a collection of <a>BasePathMapping</a> resources.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html">Use Custom Domain Names</a> </div></p>
236#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
237#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
238pub struct BasePathMappings {
239    /// <p>The current page of elements from this collection.</p>
240    #[serde(rename = "items")]
241    #[serde(skip_serializing_if = "Option::is_none")]
242    pub items: Option<Vec<BasePathMapping>>,
243    #[serde(rename = "position")]
244    #[serde(skip_serializing_if = "Option::is_none")]
245    pub position: Option<String>,
246}
247
248/// <p>Configuration settings of a canary deployment.</p>
249#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
250pub struct CanarySettings {
251    /// <p>The ID of the canary deployment.</p>
252    #[serde(rename = "deploymentId")]
253    #[serde(skip_serializing_if = "Option::is_none")]
254    pub deployment_id: Option<String>,
255    /// <p>The percent (0-100) of traffic diverted to a canary deployment.</p>
256    #[serde(rename = "percentTraffic")]
257    #[serde(skip_serializing_if = "Option::is_none")]
258    pub percent_traffic: Option<f64>,
259    /// <p>Stage variables overridden for a canary release deployment, including new stage variables introduced in the canary. These stage variables are represented as a string-to-string map between stage variable names and their values.</p>
260    #[serde(rename = "stageVariableOverrides")]
261    #[serde(skip_serializing_if = "Option::is_none")]
262    pub stage_variable_overrides: Option<::std::collections::HashMap<String, String>>,
263    /// <p>A Boolean flag to indicate whether the canary deployment uses the stage cache or not.</p>
264    #[serde(rename = "useStageCache")]
265    #[serde(skip_serializing_if = "Option::is_none")]
266    pub use_stage_cache: Option<bool>,
267}
268
269/// <p><p>Represents a client certificate used to configure client-side SSL authentication while sending requests to the integration endpoint.</p> <div class="remarks">Client certificates are used to authenticate an API by the backend server. To authenticate an API client (or user), use IAM roles and policies, a custom <a>Authorizer</a> or an Amazon Cognito user pool.</div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-client-side-ssl-authentication.html">Use Client-Side Certificate</a> </div></p>
270#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
271#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
272pub struct ClientCertificate {
273    /// <p>The identifier of the client certificate.</p>
274    #[serde(rename = "clientCertificateId")]
275    #[serde(skip_serializing_if = "Option::is_none")]
276    pub client_certificate_id: Option<String>,
277    /// <p>The timestamp when the client certificate was created.</p>
278    #[serde(rename = "createdDate")]
279    #[serde(skip_serializing_if = "Option::is_none")]
280    pub created_date: Option<f64>,
281    /// <p>The description of the client certificate.</p>
282    #[serde(rename = "description")]
283    #[serde(skip_serializing_if = "Option::is_none")]
284    pub description: Option<String>,
285    /// <p>The timestamp when the client certificate will expire.</p>
286    #[serde(rename = "expirationDate")]
287    #[serde(skip_serializing_if = "Option::is_none")]
288    pub expiration_date: Option<f64>,
289    /// <p>The PEM-encoded public key of the client certificate, which can be used to configure certificate authentication in the integration endpoint .</p>
290    #[serde(rename = "pemEncodedCertificate")]
291    #[serde(skip_serializing_if = "Option::is_none")]
292    pub pem_encoded_certificate: Option<String>,
293    /// <p>The collection of tags. Each tag element is associated with a given resource.</p>
294    #[serde(rename = "tags")]
295    #[serde(skip_serializing_if = "Option::is_none")]
296    pub tags: Option<::std::collections::HashMap<String, String>>,
297}
298
299/// <p><p>Represents a collection of <a>ClientCertificate</a> resources.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-client-side-ssl-authentication.html">Use Client-Side Certificate</a> </div></p>
300#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
301#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
302pub struct ClientCertificates {
303    /// <p>The current page of elements from this collection.</p>
304    #[serde(rename = "items")]
305    #[serde(skip_serializing_if = "Option::is_none")]
306    pub items: Option<Vec<ClientCertificate>>,
307    #[serde(rename = "position")]
308    #[serde(skip_serializing_if = "Option::is_none")]
309    pub position: Option<String>,
310}
311
312/// <p>Request to create an <a>ApiKey</a> resource.</p>
313#[derive(Clone, Debug, Default, PartialEq, Serialize)]
314#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
315pub struct CreateApiKeyRequest {
316    /// <p>An AWS Marketplace customer identifier , when integrating with the AWS SaaS Marketplace.</p>
317    #[serde(rename = "customerId")]
318    #[serde(skip_serializing_if = "Option::is_none")]
319    pub customer_id: Option<String>,
320    /// <p>The description of the <a>ApiKey</a>.</p>
321    #[serde(rename = "description")]
322    #[serde(skip_serializing_if = "Option::is_none")]
323    pub description: Option<String>,
324    /// <p>Specifies whether the <a>ApiKey</a> can be used by callers.</p>
325    #[serde(rename = "enabled")]
326    #[serde(skip_serializing_if = "Option::is_none")]
327    pub enabled: Option<bool>,
328    /// <p>Specifies whether (<code>true</code>) or not (<code>false</code>) the key identifier is distinct from the created API key value. This parameter is deprecated and should not be used.</p>
329    #[serde(rename = "generateDistinctId")]
330    #[serde(skip_serializing_if = "Option::is_none")]
331    pub generate_distinct_id: Option<bool>,
332    /// <p>The name of the <a>ApiKey</a>.</p>
333    #[serde(rename = "name")]
334    #[serde(skip_serializing_if = "Option::is_none")]
335    pub name: Option<String>,
336    /// <p>DEPRECATED FOR USAGE PLANS - Specifies stages associated with the API key.</p>
337    #[serde(rename = "stageKeys")]
338    #[serde(skip_serializing_if = "Option::is_none")]
339    pub stage_keys: Option<Vec<StageKey>>,
340    /// <p>The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with <code>aws:</code>. The tag value can be up to 256 characters.</p>
341    #[serde(rename = "tags")]
342    #[serde(skip_serializing_if = "Option::is_none")]
343    pub tags: Option<::std::collections::HashMap<String, String>>,
344    /// <p>Specifies a value of the API key.</p>
345    #[serde(rename = "value")]
346    #[serde(skip_serializing_if = "Option::is_none")]
347    pub value: Option<String>,
348}
349
350/// <p>Request to add a new <a>Authorizer</a> to an existing <a>RestApi</a> resource.</p>
351#[derive(Clone, Debug, Default, PartialEq, Serialize)]
352#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
353pub struct CreateAuthorizerRequest {
354    /// <p>Optional customer-defined field, used in OpenAPI imports and exports without functional impact.</p>
355    #[serde(rename = "authType")]
356    #[serde(skip_serializing_if = "Option::is_none")]
357    pub auth_type: Option<String>,
358    /// <p>Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, specify null.</p>
359    #[serde(rename = "authorizerCredentials")]
360    #[serde(skip_serializing_if = "Option::is_none")]
361    pub authorizer_credentials: Option<String>,
362    /// <p>The TTL in seconds of cached authorizer results. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway will cache authorizer responses. If this field is not set, the default value is 300. The maximum value is 3600, or 1 hour.</p>
363    #[serde(rename = "authorizerResultTtlInSeconds")]
364    #[serde(skip_serializing_if = "Option::is_none")]
365    pub authorizer_result_ttl_in_seconds: Option<i64>,
366    /// <p>Specifies the authorizer's Uniform Resource Identifier (URI). For <code>TOKEN</code> or <code>REQUEST</code> authorizers, this must be a well-formed Lambda function URI, for example, <code>arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:{account_id}:function:{lambda_function_name}/invocations</code>. In general, the URI has this form <code>arn:aws:apigateway:{region}:lambda:path/{service_api}</code>, where <code>{region}</code> is the same as the region hosting the Lambda function, <code>path</code> indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial <code>/</code>. For Lambda functions, this is usually of the form <code>/2015-03-31/functions/[FunctionARN]/invocations</code>.</p>
367    #[serde(rename = "authorizerUri")]
368    #[serde(skip_serializing_if = "Option::is_none")]
369    pub authorizer_uri: Option<String>,
370    /// <p>The identity source for which authorization is requested. <ul><li>For a <code>TOKEN</code> or <code>COGNITO_USER_POOLS</code> authorizer, this is required and specifies the request header mapping expression for the custom header holding the authorization token submitted by the client. For example, if the token header name is <code>Auth</code>, the header mapping expression is <code>method.request.header.Auth</code>.</li><li>For the <code>REQUEST</code> authorizer, this is required when authorization caching is enabled. The value is a comma-separated string of one or more mapping expressions of the specified request parameters. For example, if an <code>Auth</code> header, a <code>Name</code> query string parameter are defined as identity sources, this value is <code>method.request.header.Auth, method.request.querystring.Name</code>. These parameters will be used to derive the authorization caching key and to perform runtime validation of the <code>REQUEST</code> authorizer by verifying all of the identity-related request parameters are present, not null and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function, otherwise, it returns a 401 Unauthorized response without calling the Lambda function. The valid value is a string of comma-separated mapping expressions of the specified request parameters. When the authorization caching is not enabled, this property is optional.</li></ul></p>
371    #[serde(rename = "identitySource")]
372    #[serde(skip_serializing_if = "Option::is_none")]
373    pub identity_source: Option<String>,
374    /// <p>A validation expression for the incoming identity token. For <code>TOKEN</code> authorizers, this value is a regular expression. For <code>COGNITO_USER_POOLS</code> authorizers, API Gateway will match the <code>aud</code> field of the incoming token from the client against the specified regular expression. It will invoke the authorizer's Lambda function when there is a match. Otherwise, it will return a 401 Unauthorized response without calling the Lambda function. The validation expression does not apply to the <code>REQUEST</code> authorizer.</p>
375    #[serde(rename = "identityValidationExpression")]
376    #[serde(skip_serializing_if = "Option::is_none")]
377    pub identity_validation_expression: Option<String>,
378    /// <p>[Required] The name of the authorizer.</p>
379    #[serde(rename = "name")]
380    pub name: String,
381    /// <p>A list of the Amazon Cognito user pool ARNs for the <code>COGNITO_USER_POOLS</code> authorizer. Each element is of this format: <code>arn:aws:cognito-idp:{region}:{account_id}:userpool/{user_pool_id}</code>. For a <code>TOKEN</code> or <code>REQUEST</code> authorizer, this is not defined. </p>
382    #[serde(rename = "providerARNs")]
383    #[serde(skip_serializing_if = "Option::is_none")]
384    pub provider_ar_ns: Option<Vec<String>>,
385    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
386    #[serde(rename = "restApiId")]
387    pub rest_api_id: String,
388    /// <p>[Required] The authorizer type. Valid values are <code>TOKEN</code> for a Lambda function using a single authorization token submitted in a custom header, <code>REQUEST</code> for a Lambda function using incoming request parameters, and <code>COGNITO_USER_POOLS</code> for using an Amazon Cognito user pool.</p>
389    #[serde(rename = "type")]
390    pub type_: String,
391}
392
393/// <p>Requests API Gateway to create a new <a>BasePathMapping</a> resource.</p>
394#[derive(Clone, Debug, Default, PartialEq, Serialize)]
395#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
396pub struct CreateBasePathMappingRequest {
397    /// <p>The base path name that callers of the API must provide as part of the URL after the domain name. This value must be unique for all of the mappings across a single API. Specify '(none)' if you do not want callers to specify a base path name after the domain name.</p>
398    #[serde(rename = "basePath")]
399    #[serde(skip_serializing_if = "Option::is_none")]
400    pub base_path: Option<String>,
401    /// <p>[Required] The domain name of the <a>BasePathMapping</a> resource to create.</p>
402    #[serde(rename = "domainName")]
403    pub domain_name: String,
404    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
405    #[serde(rename = "restApiId")]
406    pub rest_api_id: String,
407    /// <p>The name of the API's stage that you want to use for this mapping. Specify '(none)' if you want callers to explicitly specify the stage name after any base path name.</p>
408    #[serde(rename = "stage")]
409    #[serde(skip_serializing_if = "Option::is_none")]
410    pub stage: Option<String>,
411}
412
413/// <p>Requests API Gateway to create a <a>Deployment</a> resource.</p>
414#[derive(Clone, Debug, Default, PartialEq, Serialize)]
415#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
416pub struct CreateDeploymentRequest {
417    /// <p>Enables a cache cluster for the <a>Stage</a> resource specified in the input.</p>
418    #[serde(rename = "cacheClusterEnabled")]
419    #[serde(skip_serializing_if = "Option::is_none")]
420    pub cache_cluster_enabled: Option<bool>,
421    /// <p>Specifies the cache cluster size for the <a>Stage</a> resource specified in the input, if a cache cluster is enabled.</p>
422    #[serde(rename = "cacheClusterSize")]
423    #[serde(skip_serializing_if = "Option::is_none")]
424    pub cache_cluster_size: Option<String>,
425    /// <p>The input configuration for the canary deployment when the deployment is a canary release deployment. </p>
426    #[serde(rename = "canarySettings")]
427    #[serde(skip_serializing_if = "Option::is_none")]
428    pub canary_settings: Option<DeploymentCanarySettings>,
429    /// <p>The description for the <a>Deployment</a> resource to create.</p>
430    #[serde(rename = "description")]
431    #[serde(skip_serializing_if = "Option::is_none")]
432    pub description: Option<String>,
433    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
434    #[serde(rename = "restApiId")]
435    pub rest_api_id: String,
436    /// <p>The description of the <a>Stage</a> resource for the <a>Deployment</a> resource to create.</p>
437    #[serde(rename = "stageDescription")]
438    #[serde(skip_serializing_if = "Option::is_none")]
439    pub stage_description: Option<String>,
440    /// <p>The name of the <a>Stage</a> resource for the <a>Deployment</a> resource to create.</p>
441    #[serde(rename = "stageName")]
442    #[serde(skip_serializing_if = "Option::is_none")]
443    pub stage_name: Option<String>,
444    /// <p>Specifies whether active tracing with X-ray is enabled for the <a>Stage</a>.</p>
445    #[serde(rename = "tracingEnabled")]
446    #[serde(skip_serializing_if = "Option::is_none")]
447    pub tracing_enabled: Option<bool>,
448    /// <p>A map that defines the stage variables for the <a>Stage</a> resource that is associated with the new deployment. Variable names can have alphanumeric and underscore characters, and the values must match <code>[A-Za-z0-9-._~:/?#&amp;=,]+</code>.</p>
449    #[serde(rename = "variables")]
450    #[serde(skip_serializing_if = "Option::is_none")]
451    pub variables: Option<::std::collections::HashMap<String, String>>,
452}
453
454/// <p>Creates a new documentation part of a given API.</p>
455#[derive(Clone, Debug, Default, PartialEq, Serialize)]
456#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
457pub struct CreateDocumentationPartRequest {
458    /// <p>[Required] The location of the targeted API entity of the to-be-created documentation part.</p>
459    #[serde(rename = "location")]
460    pub location: DocumentationPartLocation,
461    /// <p>[Required] The new documentation content map of the targeted API entity. Enclosed key-value pairs are API-specific, but only OpenAPI-compliant key-value pairs can be exported and, hence, published.</p>
462    #[serde(rename = "properties")]
463    pub properties: String,
464    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
465    #[serde(rename = "restApiId")]
466    pub rest_api_id: String,
467}
468
469/// <p>Creates a new documentation version of a given API.</p>
470#[derive(Clone, Debug, Default, PartialEq, Serialize)]
471#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
472pub struct CreateDocumentationVersionRequest {
473    /// <p>A description about the new documentation snapshot.</p>
474    #[serde(rename = "description")]
475    #[serde(skip_serializing_if = "Option::is_none")]
476    pub description: Option<String>,
477    /// <p>[Required] The version identifier of the new snapshot.</p>
478    #[serde(rename = "documentationVersion")]
479    pub documentation_version: String,
480    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
481    #[serde(rename = "restApiId")]
482    pub rest_api_id: String,
483    /// <p>The stage name to be associated with the new documentation snapshot.</p>
484    #[serde(rename = "stageName")]
485    #[serde(skip_serializing_if = "Option::is_none")]
486    pub stage_name: Option<String>,
487}
488
489/// <p>A request to create a new domain name.</p>
490#[derive(Clone, Debug, Default, PartialEq, Serialize)]
491#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
492pub struct CreateDomainNameRequest {
493    /// <p>The reference to an AWS-managed certificate that will be used by edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source.</p>
494    #[serde(rename = "certificateArn")]
495    #[serde(skip_serializing_if = "Option::is_none")]
496    pub certificate_arn: Option<String>,
497    /// <p>[Deprecated] The body of the server certificate that will be used by edge-optimized endpoint for this domain name provided by your certificate authority.</p>
498    #[serde(rename = "certificateBody")]
499    #[serde(skip_serializing_if = "Option::is_none")]
500    pub certificate_body: Option<String>,
501    /// <p>[Deprecated] The intermediate certificates and optionally the root certificate, one after the other without any blank lines, used by an edge-optimized endpoint for this domain name. If you include the root certificate, your certificate chain must start with intermediate certificates and end with the root certificate. Use the intermediate certificates that were provided by your certificate authority. Do not include any intermediaries that are not in the chain of trust path.</p>
502    #[serde(rename = "certificateChain")]
503    #[serde(skip_serializing_if = "Option::is_none")]
504    pub certificate_chain: Option<String>,
505    /// <p>The user-friendly name of the certificate that will be used by edge-optimized endpoint for this domain name.</p>
506    #[serde(rename = "certificateName")]
507    #[serde(skip_serializing_if = "Option::is_none")]
508    pub certificate_name: Option<String>,
509    /// <p>[Deprecated] Your edge-optimized endpoint's domain name certificate's private key.</p>
510    #[serde(rename = "certificatePrivateKey")]
511    #[serde(skip_serializing_if = "Option::is_none")]
512    pub certificate_private_key: Option<String>,
513    /// <p>[Required] The name of the <a>DomainName</a> resource.</p>
514    #[serde(rename = "domainName")]
515    pub domain_name: String,
516    /// <p>The endpoint configuration of this <a>DomainName</a> showing the endpoint types of the domain name. </p>
517    #[serde(rename = "endpointConfiguration")]
518    #[serde(skip_serializing_if = "Option::is_none")]
519    pub endpoint_configuration: Option<EndpointConfiguration>,
520    /// <p>The reference to an AWS-managed certificate that will be used by regional endpoint for this domain name. AWS Certificate Manager is the only supported source.</p>
521    #[serde(rename = "regionalCertificateArn")]
522    #[serde(skip_serializing_if = "Option::is_none")]
523    pub regional_certificate_arn: Option<String>,
524    /// <p>The user-friendly name of the certificate that will be used by regional endpoint for this domain name.</p>
525    #[serde(rename = "regionalCertificateName")]
526    #[serde(skip_serializing_if = "Option::is_none")]
527    pub regional_certificate_name: Option<String>,
528    /// <p>The Transport Layer Security (TLS) version + cipher suite for this <a>DomainName</a>. The valid values are <code>TLS_1_0</code> and <code>TLS_1_2</code>.</p>
529    #[serde(rename = "securityPolicy")]
530    #[serde(skip_serializing_if = "Option::is_none")]
531    pub security_policy: Option<String>,
532    /// <p>The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with <code>aws:</code>. The tag value can be up to 256 characters.</p>
533    #[serde(rename = "tags")]
534    #[serde(skip_serializing_if = "Option::is_none")]
535    pub tags: Option<::std::collections::HashMap<String, String>>,
536}
537
538/// <p>Request to add a new <a>Model</a> to an existing <a>RestApi</a> resource.</p>
539#[derive(Clone, Debug, Default, PartialEq, Serialize)]
540#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
541pub struct CreateModelRequest {
542    /// <p>[Required] The content-type for the model.</p>
543    #[serde(rename = "contentType")]
544    pub content_type: String,
545    /// <p>The description of the model.</p>
546    #[serde(rename = "description")]
547    #[serde(skip_serializing_if = "Option::is_none")]
548    pub description: Option<String>,
549    /// <p>[Required] The name of the model. Must be alphanumeric.</p>
550    #[serde(rename = "name")]
551    pub name: String,
552    /// <p>[Required] The <a>RestApi</a> identifier under which the <a>Model</a> will be created.</p>
553    #[serde(rename = "restApiId")]
554    pub rest_api_id: String,
555    /// <p>The schema for the model. For <code>application/json</code> models, this should be <a href="https://tools.ietf.org/html/draft-zyp-json-schema-04" target="_blank">JSON schema draft 4</a> model.</p>
556    #[serde(rename = "schema")]
557    #[serde(skip_serializing_if = "Option::is_none")]
558    pub schema: Option<String>,
559}
560
561/// <p>Creates a <a>RequestValidator</a> of a given <a>RestApi</a>.</p>
562#[derive(Clone, Debug, Default, PartialEq, Serialize)]
563#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
564pub struct CreateRequestValidatorRequest {
565    /// <p>The name of the to-be-created <a>RequestValidator</a>.</p>
566    #[serde(rename = "name")]
567    #[serde(skip_serializing_if = "Option::is_none")]
568    pub name: Option<String>,
569    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
570    #[serde(rename = "restApiId")]
571    pub rest_api_id: String,
572    /// <p>A Boolean flag to indicate whether to validate request body according to the configured model schema for the method (<code>true</code>) or not (<code>false</code>).</p>
573    #[serde(rename = "validateRequestBody")]
574    #[serde(skip_serializing_if = "Option::is_none")]
575    pub validate_request_body: Option<bool>,
576    /// <p>A Boolean flag to indicate whether to validate request parameters, <code>true</code>, or not <code>false</code>.</p>
577    #[serde(rename = "validateRequestParameters")]
578    #[serde(skip_serializing_if = "Option::is_none")]
579    pub validate_request_parameters: Option<bool>,
580}
581
582/// <p>Requests API Gateway to create a <a>Resource</a> resource.</p>
583#[derive(Clone, Debug, Default, PartialEq, Serialize)]
584#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
585pub struct CreateResourceRequest {
586    /// <p>[Required] The parent resource's identifier.</p>
587    #[serde(rename = "parentId")]
588    pub parent_id: String,
589    /// <p>The last path segment for this resource.</p>
590    #[serde(rename = "pathPart")]
591    pub path_part: String,
592    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
593    #[serde(rename = "restApiId")]
594    pub rest_api_id: String,
595}
596
597/// <p>The POST Request to add a new <a>RestApi</a> resource to your collection.</p>
598#[derive(Clone, Debug, Default, PartialEq, Serialize)]
599#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
600pub struct CreateRestApiRequest {
601    /// <p>The source of the API key for metering requests according to a usage plan. Valid values are: <ul><li><code>HEADER</code> to read the API key from the <code>X-API-Key</code> header of a request. </li><li><code>AUTHORIZER</code> to read the API key from the <code>UsageIdentifierKey</code> from a custom authorizer.</li></ul> </p>
602    #[serde(rename = "apiKeySource")]
603    #[serde(skip_serializing_if = "Option::is_none")]
604    pub api_key_source: Option<String>,
605    /// <p>The list of binary media types supported by the <a>RestApi</a>. By default, the <a>RestApi</a> supports only UTF-8-encoded text payloads.</p>
606    #[serde(rename = "binaryMediaTypes")]
607    #[serde(skip_serializing_if = "Option::is_none")]
608    pub binary_media_types: Option<Vec<String>>,
609    /// <p>The ID of the <a>RestApi</a> that you want to clone from.</p>
610    #[serde(rename = "cloneFrom")]
611    #[serde(skip_serializing_if = "Option::is_none")]
612    pub clone_from: Option<String>,
613    /// <p>The description of the <a>RestApi</a>.</p>
614    #[serde(rename = "description")]
615    #[serde(skip_serializing_if = "Option::is_none")]
616    pub description: Option<String>,
617    /// <p>The endpoint configuration of this <a>RestApi</a> showing the endpoint types of the API. </p>
618    #[serde(rename = "endpointConfiguration")]
619    #[serde(skip_serializing_if = "Option::is_none")]
620    pub endpoint_configuration: Option<EndpointConfiguration>,
621    /// <p>A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.</p>
622    #[serde(rename = "minimumCompressionSize")]
623    #[serde(skip_serializing_if = "Option::is_none")]
624    pub minimum_compression_size: Option<i64>,
625    /// <p>[Required] The name of the <a>RestApi</a>.</p>
626    #[serde(rename = "name")]
627    pub name: String,
628    /// <p>A stringified JSON policy document that applies to this RestApi regardless of the caller and <a>Method</a> configuration.</p>
629    #[serde(rename = "policy")]
630    #[serde(skip_serializing_if = "Option::is_none")]
631    pub policy: Option<String>,
632    /// <p>The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with <code>aws:</code>. The tag value can be up to 256 characters.</p>
633    #[serde(rename = "tags")]
634    #[serde(skip_serializing_if = "Option::is_none")]
635    pub tags: Option<::std::collections::HashMap<String, String>>,
636    /// <p>A version identifier for the API.</p>
637    #[serde(rename = "version")]
638    #[serde(skip_serializing_if = "Option::is_none")]
639    pub version: Option<String>,
640}
641
642/// <p>Requests API Gateway to create a <a>Stage</a> resource.</p>
643#[derive(Clone, Debug, Default, PartialEq, Serialize)]
644#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
645pub struct CreateStageRequest {
646    /// <p>Whether cache clustering is enabled for the stage.</p>
647    #[serde(rename = "cacheClusterEnabled")]
648    #[serde(skip_serializing_if = "Option::is_none")]
649    pub cache_cluster_enabled: Option<bool>,
650    /// <p>The stage's cache cluster size.</p>
651    #[serde(rename = "cacheClusterSize")]
652    #[serde(skip_serializing_if = "Option::is_none")]
653    pub cache_cluster_size: Option<String>,
654    /// <p>The canary deployment settings of this stage.</p>
655    #[serde(rename = "canarySettings")]
656    #[serde(skip_serializing_if = "Option::is_none")]
657    pub canary_settings: Option<CanarySettings>,
658    /// <p>[Required] The identifier of the <a>Deployment</a> resource for the <a>Stage</a> resource.</p>
659    #[serde(rename = "deploymentId")]
660    pub deployment_id: String,
661    /// <p>The description of the <a>Stage</a> resource.</p>
662    #[serde(rename = "description")]
663    #[serde(skip_serializing_if = "Option::is_none")]
664    pub description: Option<String>,
665    /// <p>The version of the associated API documentation.</p>
666    #[serde(rename = "documentationVersion")]
667    #[serde(skip_serializing_if = "Option::is_none")]
668    pub documentation_version: Option<String>,
669    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
670    #[serde(rename = "restApiId")]
671    pub rest_api_id: String,
672    /// <p>[Required] The name for the <a>Stage</a> resource. Stage names can only contain alphanumeric characters, hyphens, and underscores. Maximum length is 128 characters.</p>
673    #[serde(rename = "stageName")]
674    pub stage_name: String,
675    /// <p>The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with <code>aws:</code>. The tag value can be up to 256 characters.</p>
676    #[serde(rename = "tags")]
677    #[serde(skip_serializing_if = "Option::is_none")]
678    pub tags: Option<::std::collections::HashMap<String, String>>,
679    /// <p>Specifies whether active tracing with X-ray is enabled for the <a>Stage</a>.</p>
680    #[serde(rename = "tracingEnabled")]
681    #[serde(skip_serializing_if = "Option::is_none")]
682    pub tracing_enabled: Option<bool>,
683    /// <p>A map that defines the stage variables for the new <a>Stage</a> resource. Variable names can have alphanumeric and underscore characters, and the values must match <code>[A-Za-z0-9-._~:/?#&amp;=,]+</code>.</p>
684    #[serde(rename = "variables")]
685    #[serde(skip_serializing_if = "Option::is_none")]
686    pub variables: Option<::std::collections::HashMap<String, String>>,
687}
688
689/// <p>The POST request to create a usage plan key for adding an existing API key to a usage plan.</p>
690#[derive(Clone, Debug, Default, PartialEq, Serialize)]
691#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
692pub struct CreateUsagePlanKeyRequest {
693    /// <p>[Required] The identifier of a <a>UsagePlanKey</a> resource for a plan customer.</p>
694    #[serde(rename = "keyId")]
695    pub key_id: String,
696    /// <p>[Required] The type of a <a>UsagePlanKey</a> resource for a plan customer.</p>
697    #[serde(rename = "keyType")]
698    pub key_type: String,
699    /// <p>[Required] The Id of the <a>UsagePlan</a> resource representing the usage plan containing the to-be-created <a>UsagePlanKey</a> resource representing a plan customer.</p>
700    #[serde(rename = "usagePlanId")]
701    pub usage_plan_id: String,
702}
703
704/// <p>The POST request to create a usage plan with the name, description, throttle limits and quota limits, as well as the associated API stages, specified in the payload.</p>
705#[derive(Clone, Debug, Default, PartialEq, Serialize)]
706#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
707pub struct CreateUsagePlanRequest {
708    /// <p>The associated API stages of the usage plan.</p>
709    #[serde(rename = "apiStages")]
710    #[serde(skip_serializing_if = "Option::is_none")]
711    pub api_stages: Option<Vec<ApiStage>>,
712    /// <p>The description of the usage plan.</p>
713    #[serde(rename = "description")]
714    #[serde(skip_serializing_if = "Option::is_none")]
715    pub description: Option<String>,
716    /// <p>[Required] The name of the usage plan.</p>
717    #[serde(rename = "name")]
718    pub name: String,
719    /// <p>The quota of the usage plan.</p>
720    #[serde(rename = "quota")]
721    #[serde(skip_serializing_if = "Option::is_none")]
722    pub quota: Option<QuotaSettings>,
723    /// <p>The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with <code>aws:</code>. The tag value can be up to 256 characters.</p>
724    #[serde(rename = "tags")]
725    #[serde(skip_serializing_if = "Option::is_none")]
726    pub tags: Option<::std::collections::HashMap<String, String>>,
727    /// <p>The throttling limits of the usage plan.</p>
728    #[serde(rename = "throttle")]
729    #[serde(skip_serializing_if = "Option::is_none")]
730    pub throttle: Option<ThrottleSettings>,
731}
732
733/// <p>Creates a VPC link, under the caller's account in a selected region, in an asynchronous operation that typically takes 2-4 minutes to complete and become operational. The caller must have permissions to create and update VPC Endpoint services.</p>
734#[derive(Clone, Debug, Default, PartialEq, Serialize)]
735#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
736pub struct CreateVpcLinkRequest {
737    /// <p>The description of the VPC link.</p>
738    #[serde(rename = "description")]
739    #[serde(skip_serializing_if = "Option::is_none")]
740    pub description: Option<String>,
741    /// <p>[Required] The name used to label and identify the VPC link.</p>
742    #[serde(rename = "name")]
743    pub name: String,
744    /// <p>The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with <code>aws:</code>. The tag value can be up to 256 characters.</p>
745    #[serde(rename = "tags")]
746    #[serde(skip_serializing_if = "Option::is_none")]
747    pub tags: Option<::std::collections::HashMap<String, String>>,
748    /// <p>[Required] The ARN of the network load balancer of the VPC targeted by the VPC link. The network load balancer must be owned by the same AWS account of the API owner.</p>
749    #[serde(rename = "targetArns")]
750    pub target_arns: Vec<String>,
751}
752
753/// <p>A request to delete the <a>ApiKey</a> resource.</p>
754#[derive(Clone, Debug, Default, PartialEq, Serialize)]
755#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
756pub struct DeleteApiKeyRequest {
757    /// <p>[Required] The identifier of the <a>ApiKey</a> resource to be deleted.</p>
758    #[serde(rename = "apiKey")]
759    pub api_key: String,
760}
761
762/// <p>Request to delete an existing <a>Authorizer</a> resource.</p>
763#[derive(Clone, Debug, Default, PartialEq, Serialize)]
764#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
765pub struct DeleteAuthorizerRequest {
766    /// <p>[Required] The identifier of the <a>Authorizer</a> resource.</p>
767    #[serde(rename = "authorizerId")]
768    pub authorizer_id: String,
769    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
770    #[serde(rename = "restApiId")]
771    pub rest_api_id: String,
772}
773
774/// <p>A request to delete the <a>BasePathMapping</a> resource.</p>
775#[derive(Clone, Debug, Default, PartialEq, Serialize)]
776#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
777pub struct DeleteBasePathMappingRequest {
778    /// <p>[Required] The base path name of the <a>BasePathMapping</a> resource to delete.</p> <p>To specify an empty base path, set this parameter to <code>'(none)'</code>.</p>
779    #[serde(rename = "basePath")]
780    pub base_path: String,
781    /// <p>[Required] The domain name of the <a>BasePathMapping</a> resource to delete.</p>
782    #[serde(rename = "domainName")]
783    pub domain_name: String,
784}
785
786/// <p>A request to delete the <a>ClientCertificate</a> resource.</p>
787#[derive(Clone, Debug, Default, PartialEq, Serialize)]
788#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
789pub struct DeleteClientCertificateRequest {
790    /// <p>[Required] The identifier of the <a>ClientCertificate</a> resource to be deleted.</p>
791    #[serde(rename = "clientCertificateId")]
792    pub client_certificate_id: String,
793}
794
795/// <p>Requests API Gateway to delete a <a>Deployment</a> resource.</p>
796#[derive(Clone, Debug, Default, PartialEq, Serialize)]
797#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
798pub struct DeleteDeploymentRequest {
799    /// <p>[Required] The identifier of the <a>Deployment</a> resource to delete.</p>
800    #[serde(rename = "deploymentId")]
801    pub deployment_id: String,
802    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
803    #[serde(rename = "restApiId")]
804    pub rest_api_id: String,
805}
806
807/// <p>Deletes an existing documentation part of an API.</p>
808#[derive(Clone, Debug, Default, PartialEq, Serialize)]
809#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
810pub struct DeleteDocumentationPartRequest {
811    /// <p>[Required] The identifier of the to-be-deleted documentation part.</p>
812    #[serde(rename = "documentationPartId")]
813    pub documentation_part_id: String,
814    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
815    #[serde(rename = "restApiId")]
816    pub rest_api_id: String,
817}
818
819/// <p>Deletes an existing documentation version of an API.</p>
820#[derive(Clone, Debug, Default, PartialEq, Serialize)]
821#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
822pub struct DeleteDocumentationVersionRequest {
823    /// <p>[Required] The version identifier of a to-be-deleted documentation snapshot.</p>
824    #[serde(rename = "documentationVersion")]
825    pub documentation_version: String,
826    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
827    #[serde(rename = "restApiId")]
828    pub rest_api_id: String,
829}
830
831/// <p>A request to delete the <a>DomainName</a> resource.</p>
832#[derive(Clone, Debug, Default, PartialEq, Serialize)]
833#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
834pub struct DeleteDomainNameRequest {
835    /// <p>[Required] The name of the <a>DomainName</a> resource to be deleted.</p>
836    #[serde(rename = "domainName")]
837    pub domain_name: String,
838}
839
840/// <p>Clears any customization of a <a>GatewayResponse</a> of a specified response type on the given <a>RestApi</a> and resets it with the default settings.</p>
841#[derive(Clone, Debug, Default, PartialEq, Serialize)]
842#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
843pub struct DeleteGatewayResponseRequest {
844    /// <p>[Required] <p>The response type of the associated <a>GatewayResponse</a>. Valid values are <ul><li>ACCESS_DENIED</li><li>API_CONFIGURATION_ERROR</li><li>AUTHORIZER_FAILURE</li><li> AUTHORIZER_CONFIGURATION_ERROR</li><li>BAD_REQUEST_PARAMETERS</li><li>BAD_REQUEST_BODY</li><li>DEFAULT_4XX</li><li>DEFAULT_5XX</li><li>EXPIRED_TOKEN</li><li>INVALID_SIGNATURE</li><li>INTEGRATION_FAILURE</li><li>INTEGRATION_TIMEOUT</li><li>INVALID_API_KEY</li><li>MISSING_AUTHENTICATION_TOKEN</li><li> QUOTA_EXCEEDED</li><li>REQUEST_TOO_LARGE</li><li>RESOURCE_NOT_FOUND</li><li>THROTTLED</li><li>UNAUTHORIZED</li><li>UNSUPPORTED_MEDIA_TYPE</li></ul> </p></p>
845    #[serde(rename = "responseType")]
846    pub response_type: String,
847    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
848    #[serde(rename = "restApiId")]
849    pub rest_api_id: String,
850}
851
852/// <p>Represents a delete integration request.</p>
853#[derive(Clone, Debug, Default, PartialEq, Serialize)]
854#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
855pub struct DeleteIntegrationRequest {
856    /// <p>[Required] Specifies a delete integration request's HTTP method.</p>
857    #[serde(rename = "httpMethod")]
858    pub http_method: String,
859    /// <p>[Required] Specifies a delete integration request's resource identifier.</p>
860    #[serde(rename = "resourceId")]
861    pub resource_id: String,
862    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
863    #[serde(rename = "restApiId")]
864    pub rest_api_id: String,
865}
866
867/// <p>Represents a delete integration response request.</p>
868#[derive(Clone, Debug, Default, PartialEq, Serialize)]
869#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
870pub struct DeleteIntegrationResponseRequest {
871    /// <p>[Required] Specifies a delete integration response request's HTTP method.</p>
872    #[serde(rename = "httpMethod")]
873    pub http_method: String,
874    /// <p>[Required] Specifies a delete integration response request's resource identifier.</p>
875    #[serde(rename = "resourceId")]
876    pub resource_id: String,
877    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
878    #[serde(rename = "restApiId")]
879    pub rest_api_id: String,
880    /// <p>[Required] Specifies a delete integration response request's status code.</p>
881    #[serde(rename = "statusCode")]
882    pub status_code: String,
883}
884
885/// <p>Request to delete an existing <a>Method</a> resource.</p>
886#[derive(Clone, Debug, Default, PartialEq, Serialize)]
887#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
888pub struct DeleteMethodRequest {
889    /// <p>[Required] The HTTP verb of the <a>Method</a> resource.</p>
890    #[serde(rename = "httpMethod")]
891    pub http_method: String,
892    /// <p>[Required] The <a>Resource</a> identifier for the <a>Method</a> resource.</p>
893    #[serde(rename = "resourceId")]
894    pub resource_id: String,
895    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
896    #[serde(rename = "restApiId")]
897    pub rest_api_id: String,
898}
899
900/// <p>A request to delete an existing <a>MethodResponse</a> resource.</p>
901#[derive(Clone, Debug, Default, PartialEq, Serialize)]
902#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
903pub struct DeleteMethodResponseRequest {
904    /// <p>[Required] The HTTP verb of the <a>Method</a> resource.</p>
905    #[serde(rename = "httpMethod")]
906    pub http_method: String,
907    /// <p>[Required] The <a>Resource</a> identifier for the <a>MethodResponse</a> resource.</p>
908    #[serde(rename = "resourceId")]
909    pub resource_id: String,
910    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
911    #[serde(rename = "restApiId")]
912    pub rest_api_id: String,
913    /// <p>[Required] The status code identifier for the <a>MethodResponse</a> resource.</p>
914    #[serde(rename = "statusCode")]
915    pub status_code: String,
916}
917
918/// <p>Request to delete an existing model in an existing <a>RestApi</a> resource.</p>
919#[derive(Clone, Debug, Default, PartialEq, Serialize)]
920#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
921pub struct DeleteModelRequest {
922    /// <p>[Required] The name of the model to delete.</p>
923    #[serde(rename = "modelName")]
924    pub model_name: String,
925    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
926    #[serde(rename = "restApiId")]
927    pub rest_api_id: String,
928}
929
930/// <p>Deletes a specified <a>RequestValidator</a> of a given <a>RestApi</a>.</p>
931#[derive(Clone, Debug, Default, PartialEq, Serialize)]
932#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
933pub struct DeleteRequestValidatorRequest {
934    /// <p>[Required] The identifier of the <a>RequestValidator</a> to be deleted.</p>
935    #[serde(rename = "requestValidatorId")]
936    pub request_validator_id: String,
937    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
938    #[serde(rename = "restApiId")]
939    pub rest_api_id: String,
940}
941
942/// <p>Request to delete a <a>Resource</a>.</p>
943#[derive(Clone, Debug, Default, PartialEq, Serialize)]
944#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
945pub struct DeleteResourceRequest {
946    /// <p>[Required] The identifier of the <a>Resource</a> resource.</p>
947    #[serde(rename = "resourceId")]
948    pub resource_id: String,
949    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
950    #[serde(rename = "restApiId")]
951    pub rest_api_id: String,
952}
953
954/// <p>Request to delete the specified API from your collection.</p>
955#[derive(Clone, Debug, Default, PartialEq, Serialize)]
956#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
957pub struct DeleteRestApiRequest {
958    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
959    #[serde(rename = "restApiId")]
960    pub rest_api_id: String,
961}
962
963/// <p>Requests API Gateway to delete a <a>Stage</a> resource.</p>
964#[derive(Clone, Debug, Default, PartialEq, Serialize)]
965#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
966pub struct DeleteStageRequest {
967    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
968    #[serde(rename = "restApiId")]
969    pub rest_api_id: String,
970    /// <p>[Required] The name of the <a>Stage</a> resource to delete.</p>
971    #[serde(rename = "stageName")]
972    pub stage_name: String,
973}
974
975/// <p>The DELETE request to delete a usage plan key and remove the underlying API key from the associated usage plan.</p>
976#[derive(Clone, Debug, Default, PartialEq, Serialize)]
977#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
978pub struct DeleteUsagePlanKeyRequest {
979    /// <p>[Required] The Id of the <a>UsagePlanKey</a> resource to be deleted.</p>
980    #[serde(rename = "keyId")]
981    pub key_id: String,
982    /// <p>[Required] The Id of the <a>UsagePlan</a> resource representing the usage plan containing the to-be-deleted <a>UsagePlanKey</a> resource representing a plan customer.</p>
983    #[serde(rename = "usagePlanId")]
984    pub usage_plan_id: String,
985}
986
987/// <p>The DELETE request to delete a usage plan of a given plan Id.</p>
988#[derive(Clone, Debug, Default, PartialEq, Serialize)]
989#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
990pub struct DeleteUsagePlanRequest {
991    /// <p>[Required] The Id of the to-be-deleted usage plan.</p>
992    #[serde(rename = "usagePlanId")]
993    pub usage_plan_id: String,
994}
995
996/// <p>Deletes an existing <a>VpcLink</a> of a specified identifier.</p>
997#[derive(Clone, Debug, Default, PartialEq, Serialize)]
998#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
999pub struct DeleteVpcLinkRequest {
1000    /// <p>[Required] The identifier of the <a>VpcLink</a>. It is used in an <a>Integration</a> to reference this <a>VpcLink</a>.</p>
1001    #[serde(rename = "vpcLinkId")]
1002    pub vpc_link_id: String,
1003}
1004
1005/// <p><p>An immutable representation of a <a>RestApi</a> resource that can be called by users using <a>Stages</a>. A deployment must be associated with a <a>Stage</a> for it to be callable over the Internet.</p> <div class="remarks">To create a deployment, call <code>POST</code> on the <a>Deployments</a> resource of a <a>RestApi</a>. To view, update, or delete a deployment, call <code>GET</code>, <code>PATCH</code>, or <code>DELETE</code> on the specified deployment resource (<code>/restapis/{restapi<em>id}/deployments/{deployment</em>id}</code>).</div> <div class="seeAlso"><a>RestApi</a>, <a>Deployments</a>, <a>Stage</a>, <a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-deployment.html">AWS CLI</a>, <a href="https://aws.amazon.com/tools/">AWS SDKs</a> </div></p>
1006#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1007#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1008pub struct Deployment {
1009    /// <p>A summary of the <a>RestApi</a> at the date and time that the deployment resource was created.</p>
1010    #[serde(rename = "apiSummary")]
1011    #[serde(skip_serializing_if = "Option::is_none")]
1012    pub api_summary: Option<
1013        ::std::collections::HashMap<String, ::std::collections::HashMap<String, MethodSnapshot>>,
1014    >,
1015    /// <p>The date and time that the deployment resource was created.</p>
1016    #[serde(rename = "createdDate")]
1017    #[serde(skip_serializing_if = "Option::is_none")]
1018    pub created_date: Option<f64>,
1019    /// <p>The description for the deployment resource.</p>
1020    #[serde(rename = "description")]
1021    #[serde(skip_serializing_if = "Option::is_none")]
1022    pub description: Option<String>,
1023    /// <p>The identifier for the deployment resource.</p>
1024    #[serde(rename = "id")]
1025    #[serde(skip_serializing_if = "Option::is_none")]
1026    pub id: Option<String>,
1027}
1028
1029/// <p>The input configuration for a canary deployment.</p>
1030#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1031#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1032pub struct DeploymentCanarySettings {
1033    /// <p>The percentage (0.0-100.0) of traffic routed to the canary deployment.</p>
1034    #[serde(rename = "percentTraffic")]
1035    #[serde(skip_serializing_if = "Option::is_none")]
1036    pub percent_traffic: Option<f64>,
1037    /// <p>A stage variable overrides used for the canary release deployment. They can override existing stage variables or add new stage variables for the canary release deployment. These stage variables are represented as a string-to-string map between stage variable names and their values.</p>
1038    #[serde(rename = "stageVariableOverrides")]
1039    #[serde(skip_serializing_if = "Option::is_none")]
1040    pub stage_variable_overrides: Option<::std::collections::HashMap<String, String>>,
1041    /// <p>A Boolean flag to indicate whether the canary release deployment uses the stage cache or not.</p>
1042    #[serde(rename = "useStageCache")]
1043    #[serde(skip_serializing_if = "Option::is_none")]
1044    pub use_stage_cache: Option<bool>,
1045}
1046
1047/// <p><p>Represents a collection resource that contains zero or more references to your existing deployments, and links that guide you on how to interact with your collection. The collection offers a paginated view of the contained deployments.</p> <div class="remarks">To create a new deployment of a <a>RestApi</a>, make a <code>POST</code> request against this resource. To view, update, or delete an existing deployment, make a <code>GET</code>, <code>PATCH</code>, or <code>DELETE</code> request, respectively, on a specified <a>Deployment</a> resource.</div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-deploy-api.html">Deploying an API</a>, <a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-deployment.html">AWS CLI</a>, <a href="https://aws.amazon.com/tools/">AWS SDKs</a> </div></p>
1048#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1049#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1050pub struct Deployments {
1051    /// <p>The current page of elements from this collection.</p>
1052    #[serde(rename = "items")]
1053    #[serde(skip_serializing_if = "Option::is_none")]
1054    pub items: Option<Vec<Deployment>>,
1055    #[serde(rename = "position")]
1056    #[serde(skip_serializing_if = "Option::is_none")]
1057    pub position: Option<String>,
1058}
1059
1060/// <p><p>A documentation part for a targeted API entity.</p> <div class="remarks"> <p>A documentation part consists of a content map (<code>properties</code>) and a target (<code>location</code>). The target specifies an API entity to which the documentation content applies. The supported API entity types are <code>API</code>, <code>AUTHORIZER</code>, <code>MODEL</code>, <code>RESOURCE</code>, <code>METHOD</code>, <code>PATH<em>PARAMETER</code>, <code>QUERY</em>PARAMETER</code>, <code>REQUEST<em>HEADER</code>, <code>REQUEST</em>BODY</code>, <code>RESPONSE</code>, <code>RESPONSE<em>HEADER</code>, and <code>RESPONSE</em>BODY</code>. Valid <code>location</code> fields depend on the API entity type. All valid fields are not required.</p> <p>The content map is a JSON string of API-specific key-value pairs. Although an API can use any shape for the content map, only the OpenAPI-compliant documentation fields will be injected into the associated API entity definition in the exported OpenAPI definition file.</p></div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-documenting-api.html">Documenting an API</a>, <a>DocumentationParts</a> </div></p>
1061#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1062#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1063pub struct DocumentationPart {
1064    /// <p>The <a>DocumentationPart</a> identifier, generated by API Gateway when the <code>DocumentationPart</code> is created.</p>
1065    #[serde(rename = "id")]
1066    #[serde(skip_serializing_if = "Option::is_none")]
1067    pub id: Option<String>,
1068    /// <p>The location of the API entity to which the documentation applies. Valid fields depend on the targeted API entity type. All the valid location fields are not required. If not explicitly specified, a valid location field is treated as a wildcard and associated documentation content may be inherited by matching entities, unless overridden.</p>
1069    #[serde(rename = "location")]
1070    #[serde(skip_serializing_if = "Option::is_none")]
1071    pub location: Option<DocumentationPartLocation>,
1072    /// <p>A content map of API-specific key-value pairs describing the targeted API entity. The map must be encoded as a JSON string, e.g., <code>"{ \"description\": \"The API does ...\" }"</code>. Only OpenAPI-compliant documentation-related fields from the <literal>properties</literal> map are exported and, hence, published as part of the API entity definitions, while the original documentation parts are exported in a OpenAPI extension of <code>x-amazon-apigateway-documentation</code>.</p>
1073    #[serde(rename = "properties")]
1074    #[serde(skip_serializing_if = "Option::is_none")]
1075    pub properties: Option<String>,
1076}
1077
1078/// <p><p>A collection of the imported <a>DocumentationPart</a> identifiers.</p> <div class="remarks">This is used to return the result when documentation parts in an external (e.g., OpenAPI) file are imported into API Gateway</div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-documenting-api.html">Documenting an API</a>, <a href="https://docs.aws.amazon.com/apigateway/api-reference/link-relation/documentationpart-import/">documentationpart:import</a>, <a>DocumentationPart</a> </div></p>
1079#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1080#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1081pub struct DocumentationPartIds {
1082    /// <p>A list of the returned documentation part identifiers.</p>
1083    #[serde(rename = "ids")]
1084    #[serde(skip_serializing_if = "Option::is_none")]
1085    pub ids: Option<Vec<String>>,
1086    /// <p>A list of warning messages reported during import of documentation parts.</p>
1087    #[serde(rename = "warnings")]
1088    #[serde(skip_serializing_if = "Option::is_none")]
1089    pub warnings: Option<Vec<String>>,
1090}
1091
1092/// <p>Specifies the target API entity to which the documentation applies.</p>
1093#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1094pub struct DocumentationPartLocation {
1095    /// <p>The HTTP verb of a method. It is a valid field for the API entity types of <code>METHOD</code>, <code>PATH_PARAMETER</code>, <code>QUERY_PARAMETER</code>, <code>REQUEST_HEADER</code>, <code>REQUEST_BODY</code>, <code>RESPONSE</code>, <code>RESPONSE_HEADER</code>, and <code>RESPONSE_BODY</code>. The default value is <code>*</code> for any method. When an applicable child entity inherits the content of an entity of the same type with more general specifications of the other <code>location</code> attributes, the child entity's <code>method</code> attribute must match that of the parent entity exactly.</p>
1096    #[serde(rename = "method")]
1097    #[serde(skip_serializing_if = "Option::is_none")]
1098    pub method: Option<String>,
1099    /// <p>The name of the targeted API entity. It is a valid and required field for the API entity types of <code>AUTHORIZER</code>, <code>MODEL</code>, <code>PATH_PARAMETER</code>, <code>QUERY_PARAMETER</code>, <code>REQUEST_HEADER</code>, <code>REQUEST_BODY</code> and <code>RESPONSE_HEADER</code>. It is an invalid field for any other entity type.</p>
1100    #[serde(rename = "name")]
1101    #[serde(skip_serializing_if = "Option::is_none")]
1102    pub name: Option<String>,
1103    /// <p>The URL path of the target. It is a valid field for the API entity types of <code>RESOURCE</code>, <code>METHOD</code>, <code>PATH_PARAMETER</code>, <code>QUERY_PARAMETER</code>, <code>REQUEST_HEADER</code>, <code>REQUEST_BODY</code>, <code>RESPONSE</code>, <code>RESPONSE_HEADER</code>, and <code>RESPONSE_BODY</code>. The default value is <code>/</code> for the root resource. When an applicable child entity inherits the content of another entity of the same type with more general specifications of the other <code>location</code> attributes, the child entity's <code>path</code> attribute must match that of the parent entity as a prefix.</p>
1104    #[serde(rename = "path")]
1105    #[serde(skip_serializing_if = "Option::is_none")]
1106    pub path: Option<String>,
1107    /// <p>The HTTP status code of a response. It is a valid field for the API entity types of <code>RESPONSE</code>, <code>RESPONSE_HEADER</code>, and <code>RESPONSE_BODY</code>. The default value is <code>*</code> for any status code. When an applicable child entity inherits the content of an entity of the same type with more general specifications of the other <code>location</code> attributes, the child entity's <code>statusCode</code> attribute must match that of the parent entity exactly.</p>
1108    #[serde(rename = "statusCode")]
1109    #[serde(skip_serializing_if = "Option::is_none")]
1110    pub status_code: Option<String>,
1111    /// <p>[Required] The type of API entity to which the documentation content applies. Valid values are <code>API</code>, <code>AUTHORIZER</code>, <code>MODEL</code>, <code>RESOURCE</code>, <code>METHOD</code>, <code>PATH_PARAMETER</code>, <code>QUERY_PARAMETER</code>, <code>REQUEST_HEADER</code>, <code>REQUEST_BODY</code>, <code>RESPONSE</code>, <code>RESPONSE_HEADER</code>, and <code>RESPONSE_BODY</code>. Content inheritance does not apply to any entity of the <code>API</code>, <code>AUTHORIZER</code>, <code>METHOD</code>, <code>MODEL</code>, <code>REQUEST_BODY</code>, or <code>RESOURCE</code> type.</p>
1112    #[serde(rename = "type")]
1113    pub type_: String,
1114}
1115
1116/// <p><p>The collection of documentation parts of an API.</p> <div class="remarks"/> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-documenting-api.html">Documenting an API</a>, <a>DocumentationPart</a> </div></p>
1117#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1118#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1119pub struct DocumentationParts {
1120    /// <p>The current page of elements from this collection.</p>
1121    #[serde(rename = "items")]
1122    #[serde(skip_serializing_if = "Option::is_none")]
1123    pub items: Option<Vec<DocumentationPart>>,
1124    #[serde(rename = "position")]
1125    #[serde(skip_serializing_if = "Option::is_none")]
1126    pub position: Option<String>,
1127}
1128
1129/// <p><p>A snapshot of the documentation of an API.</p> <div class="remarks"><p>Publishing API documentation involves creating a documentation version associated with an API stage and exporting the versioned documentation to an external (e.g., OpenAPI) file.</p></div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-documenting-api.html">Documenting an API</a>, <a>DocumentationPart</a>, <a>DocumentationVersions</a> </div></p>
1130#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1131#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1132pub struct DocumentationVersion {
1133    /// <p>The date when the API documentation snapshot is created.</p>
1134    #[serde(rename = "createdDate")]
1135    #[serde(skip_serializing_if = "Option::is_none")]
1136    pub created_date: Option<f64>,
1137    /// <p>The description of the API documentation snapshot.</p>
1138    #[serde(rename = "description")]
1139    #[serde(skip_serializing_if = "Option::is_none")]
1140    pub description: Option<String>,
1141    /// <p>The version identifier of the API documentation snapshot.</p>
1142    #[serde(rename = "version")]
1143    #[serde(skip_serializing_if = "Option::is_none")]
1144    pub version: Option<String>,
1145}
1146
1147/// <p><p>The collection of documentation snapshots of an API. </p> <div class="remarks"><p>Use the <a>DocumentationVersions</a> to manage documentation snapshots associated with various API stages.</p></div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-documenting-api.html">Documenting an API</a>, <a>DocumentationPart</a>, <a>DocumentationVersion</a> </div></p>
1148#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1149#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1150pub struct DocumentationVersions {
1151    /// <p>The current page of elements from this collection.</p>
1152    #[serde(rename = "items")]
1153    #[serde(skip_serializing_if = "Option::is_none")]
1154    pub items: Option<Vec<DocumentationVersion>>,
1155    #[serde(rename = "position")]
1156    #[serde(skip_serializing_if = "Option::is_none")]
1157    pub position: Option<String>,
1158}
1159
1160/// <p><p>Represents a custom domain name as a user-friendly host name of an API (<a>RestApi</a>).</p> <div class="Remarks"> <p>When you deploy an API, API Gateway creates a default host name for the API. This default API host name is of the <code>{restapi-id}.execute-api.{region}.amazonaws.com</code> format. With the default host name, you can access the API&#39;s root resource with the URL of <code>https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}/</code>. When you set up a custom domain name of <code>apis.example.com</code> for this API, you can then access the same resource using the URL of the <code>https://apis.examples.com/myApi</code>, where <code>myApi</code> is the base path mapping (<a>BasePathMapping</a>) of your API under the custom domain name. </p> </div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html">Set a Custom Host Name for an API</a> </div></p>
1161#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1162#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1163pub struct DomainName {
1164    /// <p>The reference to an AWS-managed certificate that will be used by edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source.</p>
1165    #[serde(rename = "certificateArn")]
1166    #[serde(skip_serializing_if = "Option::is_none")]
1167    pub certificate_arn: Option<String>,
1168    /// <p>The name of the certificate that will be used by edge-optimized endpoint for this domain name.</p>
1169    #[serde(rename = "certificateName")]
1170    #[serde(skip_serializing_if = "Option::is_none")]
1171    pub certificate_name: Option<String>,
1172    /// <p>The timestamp when the certificate that was used by edge-optimized endpoint for this domain name was uploaded.</p>
1173    #[serde(rename = "certificateUploadDate")]
1174    #[serde(skip_serializing_if = "Option::is_none")]
1175    pub certificate_upload_date: Option<f64>,
1176    /// <p>The domain name of the Amazon CloudFront distribution associated with this custom domain name for an edge-optimized endpoint. You set up this association when adding a DNS record pointing the custom domain name to this distribution name. For more information about CloudFront distributions, see the <a href="https://aws.amazon.com/documentation/cloudfront/" target="_blank">Amazon CloudFront documentation</a>.</p>
1177    #[serde(rename = "distributionDomainName")]
1178    #[serde(skip_serializing_if = "Option::is_none")]
1179    pub distribution_domain_name: Option<String>,
1180    /// <p>The region-agnostic Amazon Route 53 Hosted Zone ID of the edge-optimized endpoint. The valid value is <code>Z2FDTNDATAQYW2</code> for all the regions. For more information, see <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-regional-api-custom-domain-create.html">Set up a Regional Custom Domain Name</a> and <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region">AWS Regions and Endpoints for API Gateway</a>. </p>
1181    #[serde(rename = "distributionHostedZoneId")]
1182    #[serde(skip_serializing_if = "Option::is_none")]
1183    pub distribution_hosted_zone_id: Option<String>,
1184    /// <p>The custom domain name as an API host name, for example, <code>my-api.example.com</code>.</p>
1185    #[serde(rename = "domainName")]
1186    #[serde(skip_serializing_if = "Option::is_none")]
1187    pub domain_name: Option<String>,
1188    /// <p>The status of the <a>DomainName</a> migration. The valid values are <code>AVAILABLE</code> and <code>UPDATING</code>. If the status is <code>UPDATING</code>, the domain cannot be modified further until the existing operation is complete. If it is <code>AVAILABLE</code>, the domain can be updated.</p>
1189    #[serde(rename = "domainNameStatus")]
1190    #[serde(skip_serializing_if = "Option::is_none")]
1191    pub domain_name_status: Option<String>,
1192    /// <p>An optional text message containing detailed information about status of the <a>DomainName</a> migration.</p>
1193    #[serde(rename = "domainNameStatusMessage")]
1194    #[serde(skip_serializing_if = "Option::is_none")]
1195    pub domain_name_status_message: Option<String>,
1196    /// <p>The endpoint configuration of this <a>DomainName</a> showing the endpoint types of the domain name. </p>
1197    #[serde(rename = "endpointConfiguration")]
1198    #[serde(skip_serializing_if = "Option::is_none")]
1199    pub endpoint_configuration: Option<EndpointConfiguration>,
1200    /// <p>The reference to an AWS-managed certificate that will be used for validating the regional domain name. AWS Certificate Manager is the only supported source.</p>
1201    #[serde(rename = "regionalCertificateArn")]
1202    #[serde(skip_serializing_if = "Option::is_none")]
1203    pub regional_certificate_arn: Option<String>,
1204    /// <p>The name of the certificate that will be used for validating the regional domain name.</p>
1205    #[serde(rename = "regionalCertificateName")]
1206    #[serde(skip_serializing_if = "Option::is_none")]
1207    pub regional_certificate_name: Option<String>,
1208    /// <p>The domain name associated with the regional endpoint for this custom domain name. You set up this association by adding a DNS record that points the custom domain name to this regional domain name. The regional domain name is returned by API Gateway when you create a regional endpoint.</p>
1209    #[serde(rename = "regionalDomainName")]
1210    #[serde(skip_serializing_if = "Option::is_none")]
1211    pub regional_domain_name: Option<String>,
1212    /// <p>The region-specific Amazon Route 53 Hosted Zone ID of the regional endpoint. For more information, see <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-regional-api-custom-domain-create.html">Set up a Regional Custom Domain Name</a> and <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region">AWS Regions and Endpoints for API Gateway</a>. </p>
1213    #[serde(rename = "regionalHostedZoneId")]
1214    #[serde(skip_serializing_if = "Option::is_none")]
1215    pub regional_hosted_zone_id: Option<String>,
1216    /// <p>The Transport Layer Security (TLS) version + cipher suite for this <a>DomainName</a>. The valid values are <code>TLS_1_0</code> and <code>TLS_1_2</code>.</p>
1217    #[serde(rename = "securityPolicy")]
1218    #[serde(skip_serializing_if = "Option::is_none")]
1219    pub security_policy: Option<String>,
1220    /// <p>The collection of tags. Each tag element is associated with a given resource.</p>
1221    #[serde(rename = "tags")]
1222    #[serde(skip_serializing_if = "Option::is_none")]
1223    pub tags: Option<::std::collections::HashMap<String, String>>,
1224}
1225
1226/// <p><p>Represents a collection of <a>DomainName</a> resources.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html">Use Client-Side Certificate</a> </div></p>
1227#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1228#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1229pub struct DomainNames {
1230    /// <p>The current page of elements from this collection.</p>
1231    #[serde(rename = "items")]
1232    #[serde(skip_serializing_if = "Option::is_none")]
1233    pub items: Option<Vec<DomainName>>,
1234    #[serde(rename = "position")]
1235    #[serde(skip_serializing_if = "Option::is_none")]
1236    pub position: Option<String>,
1237}
1238
1239/// <p>The endpoint configuration to indicate the types of endpoints an API (<a>RestApi</a>) or its custom domain name (<a>DomainName</a>) has. </p>
1240#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1241pub struct EndpointConfiguration {
1242    /// <p>A list of endpoint types of an API (<a>RestApi</a>) or its custom domain name (<a>DomainName</a>). For an edge-optimized API and its custom domain name, the endpoint type is <code>"EDGE"</code>. For a regional API and its custom domain name, the endpoint type is <code>REGIONAL</code>. For a private API, the endpoint type is <code>PRIVATE</code>.</p>
1243    #[serde(rename = "types")]
1244    #[serde(skip_serializing_if = "Option::is_none")]
1245    pub types: Option<Vec<String>>,
1246    /// <p>A list of VpcEndpointIds of an API (<a>RestApi</a>) against which to create Route53 ALIASes. It is only supported for <code>PRIVATE</code> endpoint type.</p>
1247    #[serde(rename = "vpcEndpointIds")]
1248    #[serde(skip_serializing_if = "Option::is_none")]
1249    pub vpc_endpoint_ids: Option<Vec<String>>,
1250}
1251
1252/// <p>The binary blob response to <a>GetExport</a>, which contains the generated SDK.</p>
1253#[derive(Clone, Debug, Default, PartialEq)]
1254pub struct ExportResponse {
1255    /// <p>The binary blob response to <a>GetExport</a>, which contains the export.</p>
1256    pub body: Option<bytes::Bytes>,
1257    /// <p>The content-disposition header value in the HTTP response.</p>
1258    pub content_disposition: Option<String>,
1259    /// <p>The content-type header value in the HTTP response. This will correspond to a valid 'accept' type in the request.</p>
1260    pub content_type: Option<String>,
1261}
1262
1263/// <p>Request to flush authorizer cache entries on a specified stage.</p>
1264#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1265#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1266pub struct FlushStageAuthorizersCacheRequest {
1267    /// <p>The string identifier of the associated <a>RestApi</a>.</p>
1268    #[serde(rename = "restApiId")]
1269    pub rest_api_id: String,
1270    /// <p>The name of the stage to flush.</p>
1271    #[serde(rename = "stageName")]
1272    pub stage_name: String,
1273}
1274
1275/// <p>Requests API Gateway to flush a stage's cache.</p>
1276#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1277#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1278pub struct FlushStageCacheRequest {
1279    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1280    #[serde(rename = "restApiId")]
1281    pub rest_api_id: String,
1282    /// <p>[Required] The name of the stage to flush its cache.</p>
1283    #[serde(rename = "stageName")]
1284    pub stage_name: String,
1285}
1286
1287/// <p><p>A gateway response of a given response type and status code, with optional response parameters and mapping templates.</p> <div class="remarks"> For more information about valid gateway response types, see <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/supported-gateway-response-types.html">Gateway Response Types Supported by API Gateway</a> <div class="example"> <h4>Example: Get a Gateway Response of a given response type</h4> <h5>Request</h5> <p>This example shows how to get a gateway response of the <code>MISSING<em>AUTHENTICATION</em>TOKEN</code> type.</p> <pre><code>GET /restapis/o81lxisefl/gatewayresponses/MISSING<em>AUTHENTICATION</em>TOKEN HTTP/1.1 Host: beta-apigateway.us-east-1.amazonaws.com Content-Type: application/json X-Amz-Date: 20170503T202516Z Authorization: AWS4-HMAC-SHA256 Credential={access-key-id}/20170503/us-east-1/apigateway/aws4<em>request, SignedHeaders=content-type;host;x-amz-date, Signature=1b52460e3159c1a26cff29093855d50ea141c1c5b937528fecaf60f51129697a Cache-Control: no-cache Postman-Token: 3b2a1ce9-c848-2e26-2e2f-9c2caefbed45 </code></pre> <p>The response type is specified as a URL path.</p> <h5>Response</h5> <p>The successful operation returns the <code>200 OK</code> status code and a payload similar to the following:</p> <pre><code>{ &quot;</em>links&quot;: { &quot;curies&quot;: { &quot;href&quot;: &quot;http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-gatewayresponse-{rel}.html&quot;, &quot;name&quot;: &quot;gatewayresponse&quot;, &quot;templated&quot;: true }, &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/MISSING<em>AUTHENTICATION</em>TOKEN&quot; }, &quot;gatewayresponse:delete&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/MISSING<em>AUTHENTICATION</em>TOKEN&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response<em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/MISSING</em>AUTHENTICATION<em>TOKEN&quot; } }, &quot;defaultResponse&quot;: false, &quot;responseParameters&quot;: { &quot;gatewayresponse.header.x-request-path&quot;: &quot;method.request.path.petId&quot;, &quot;gatewayresponse.header.Access-Control-Allow-Origin&quot;: &quot;&apos;a.b.c&apos;&quot;, &quot;gatewayresponse.header.x-request-query&quot;: &quot;method.request.querystring.q&quot;, &quot;gatewayresponse.header.x-request-header&quot;: &quot;method.request.header.Accept&quot; }, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{\n &quot;message&quot;: $context.error.messageString,\n &quot;type&quot;: &quot;$context.error.responseType&quot;,\n &quot;stage&quot;: &quot;$context.stage&quot;,\n &quot;resourcePath&quot;: &quot;$context.resourcePath&quot;,\n &quot;stageVariables.a&quot;: &quot;$stageVariables.a&quot;,\n &quot;statusCode&quot;: &quot;&apos;404&apos;&quot;\n}&quot; }, &quot;responseType&quot;: &quot;MISSING</em>AUTHENTICATION_TOKEN&quot;, &quot;statusCode&quot;: &quot;404&quot; }</code></pre> <p></p> </div> </div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/customize-gateway-responses.html">Customize Gateway Responses</a> </div></p>
1288#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1289#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1290pub struct GatewayResponse {
1291    /// <p>A Boolean flag to indicate whether this <a>GatewayResponse</a> is the default gateway response (<code>true</code>) or not (<code>false</code>). A default gateway response is one generated by API Gateway without any customization by an API developer. </p>
1292    #[serde(rename = "defaultResponse")]
1293    #[serde(skip_serializing_if = "Option::is_none")]
1294    pub default_response: Option<bool>,
1295    /// <p>Response parameters (paths, query strings and headers) of the <a>GatewayResponse</a> as a string-to-string map of key-value pairs.</p>
1296    #[serde(rename = "responseParameters")]
1297    #[serde(skip_serializing_if = "Option::is_none")]
1298    pub response_parameters: Option<::std::collections::HashMap<String, String>>,
1299    /// <p>Response templates of the <a>GatewayResponse</a> as a string-to-string map of key-value pairs.</p>
1300    #[serde(rename = "responseTemplates")]
1301    #[serde(skip_serializing_if = "Option::is_none")]
1302    pub response_templates: Option<::std::collections::HashMap<String, String>>,
1303    /// <p>The response type of the associated <a>GatewayResponse</a>. Valid values are <ul><li>ACCESS_DENIED</li><li>API_CONFIGURATION_ERROR</li><li>AUTHORIZER_FAILURE</li><li> AUTHORIZER_CONFIGURATION_ERROR</li><li>BAD_REQUEST_PARAMETERS</li><li>BAD_REQUEST_BODY</li><li>DEFAULT_4XX</li><li>DEFAULT_5XX</li><li>EXPIRED_TOKEN</li><li>INVALID_SIGNATURE</li><li>INTEGRATION_FAILURE</li><li>INTEGRATION_TIMEOUT</li><li>INVALID_API_KEY</li><li>MISSING_AUTHENTICATION_TOKEN</li><li> QUOTA_EXCEEDED</li><li>REQUEST_TOO_LARGE</li><li>RESOURCE_NOT_FOUND</li><li>THROTTLED</li><li>UNAUTHORIZED</li><li>UNSUPPORTED_MEDIA_TYPE</li></ul> </p>
1304    #[serde(rename = "responseType")]
1305    #[serde(skip_serializing_if = "Option::is_none")]
1306    pub response_type: Option<String>,
1307    /// <p>The HTTP status code for this <a>GatewayResponse</a>.</p>
1308    #[serde(rename = "statusCode")]
1309    #[serde(skip_serializing_if = "Option::is_none")]
1310    pub status_code: Option<String>,
1311}
1312
1313/// <p><p>The collection of the <a>GatewayResponse</a> instances of a <a>RestApi</a> as a <code>responseType</code>-to-<a>GatewayResponse</a> object map of key-value pairs. As such, pagination is not supported for querying this collection.</p> <div class="remarks"> For more information about valid gateway response types, see <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/supported-gateway-response-types.html">Gateway Response Types Supported by API Gateway</a> <div class="example"> <h4>Example: Get the collection of gateway responses of an API</h4> <h5>Request</h5> <p>This example request shows how to retrieve the <a>GatewayResponses</a> collection from an API.</p> <pre><code>GET /restapis/o81lxisefl/gatewayresponses HTTP/1.1 Host: beta-apigateway.us-east-1.amazonaws.com Content-Type: application/json X-Amz-Date: 20170503T220604Z Authorization: AWS4-HMAC-SHA256 Credential={access-key-id}/20170503/us-east-1/apigateway/aws4<em>request, SignedHeaders=content-type;host;x-amz-date, Signature=59b42fe54a76a5de8adf2c67baa6d39206f8e9ad49a1d77ccc6a5da3103a398a Cache-Control: no-cache Postman-Token: 5637af27-dc29-fc5c-9dfe-0645d52cb515 </code></pre> <p></p> <h5>Response</h5> <p>The successful operation returns the <code>200 OK</code> status code and a payload similar to the following:</p> <pre><code>{ &quot;</em>links&quot;: { &quot;curies&quot;: { &quot;href&quot;: &quot;http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-gatewayresponse-{rel}.html&quot;, &quot;name&quot;: &quot;gatewayresponse&quot;, &quot;templated&quot;: true }, &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses&quot; }, &quot;first&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses&quot; }, &quot;gatewayresponse:by-type&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response<em>type}&quot;, &quot;templated&quot;: true }, &quot;item&quot;: [ { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/INTEGRATION</em>FAILURE&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/RESOURCE<em>NOT</em>FOUND&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/REQUEST<em>TOO</em>LARGE&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/THROTTLED&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/UNSUPPORTED<em>MEDIA</em>TYPE&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/AUTHORIZER<em>CONFIGURATION</em>ERROR&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/DEFAULT<em>5XX&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/DEFAULT</em>4XX&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/BAD<em>REQUEST</em>PARAMETERS&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/BAD<em>REQUEST</em>BODY&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/EXPIRED<em>TOKEN&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/ACCESS</em>DENIED&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/INVALID<em>API</em>KEY&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/UNAUTHORIZED&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/API<em>CONFIGURATION</em>ERROR&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/QUOTA<em>EXCEEDED&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/INTEGRATION</em>TIMEOUT&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/MISSING<em>AUTHENTICATION</em>TOKEN&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/INVALID<em>SIGNATURE&quot; }, { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/AUTHORIZER</em>FAILURE&quot; } ] }, &quot;<em>embedded&quot;: { &quot;item&quot;: [ { &quot;</em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/INTEGRATION<em>FAILURE&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/INTEGRATION<em>FAILURE&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;INTEGRATION</em>FAILURE&quot;, &quot;statusCode&quot;: &quot;504&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/RESOURCE</em>NOT<em>FOUND&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/RESOURCE<em>NOT</em>FOUND&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;RESOURCE<em>NOT</em>FOUND&quot;, &quot;statusCode&quot;: &quot;404&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/REQUEST</em>TOO<em>LARGE&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/REQUEST<em>TOO</em>LARGE&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;REQUEST<em>TOO</em>LARGE&quot;, &quot;statusCode&quot;: &quot;413&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/THROTTLED&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/THROTTLED&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;THROTTLED&quot;, &quot;statusCode&quot;: &quot;429&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/UNSUPPORTED</em>MEDIA<em>TYPE&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/UNSUPPORTED<em>MEDIA</em>TYPE&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;UNSUPPORTED<em>MEDIA</em>TYPE&quot;, &quot;statusCode&quot;: &quot;415&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/AUTHORIZER</em>CONFIGURATION<em>ERROR&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/AUTHORIZER<em>CONFIGURATION</em>ERROR&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;AUTHORIZER<em>CONFIGURATION</em>ERROR&quot;, &quot;statusCode&quot;: &quot;500&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/DEFAULT</em>5XX&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response<em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/DEFAULT</em>5XX&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;DEFAULT<em>5XX&quot; }, { &quot;</em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/DEFAULT<em>4XX&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/DEFAULT<em>4XX&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;DEFAULT</em>4XX&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/BAD</em>REQUEST<em>PARAMETERS&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/BAD<em>REQUEST</em>PARAMETERS&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;BAD<em>REQUEST</em>PARAMETERS&quot;, &quot;statusCode&quot;: &quot;400&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/BAD</em>REQUEST<em>BODY&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/BAD<em>REQUEST</em>BODY&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;BAD<em>REQUEST</em>BODY&quot;, &quot;statusCode&quot;: &quot;400&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/EXPIRED</em>TOKEN&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response<em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/EXPIRED</em>TOKEN&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;EXPIRED<em>TOKEN&quot;, &quot;statusCode&quot;: &quot;403&quot; }, { &quot;</em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/ACCESS<em>DENIED&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/ACCESS<em>DENIED&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;ACCESS</em>DENIED&quot;, &quot;statusCode&quot;: &quot;403&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/INVALID</em>API<em>KEY&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/INVALID<em>API</em>KEY&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;INVALID<em>API</em>KEY&quot;, &quot;statusCode&quot;: &quot;403&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/UNAUTHORIZED&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/UNAUTHORIZED&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;UNAUTHORIZED&quot;, &quot;statusCode&quot;: &quot;401&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/API</em>CONFIGURATION<em>ERROR&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/API<em>CONFIGURATION</em>ERROR&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;API<em>CONFIGURATION</em>ERROR&quot;, &quot;statusCode&quot;: &quot;500&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/QUOTA</em>EXCEEDED&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response<em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/QUOTA</em>EXCEEDED&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;QUOTA<em>EXCEEDED&quot;, &quot;statusCode&quot;: &quot;429&quot; }, { &quot;</em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/INTEGRATION<em>TIMEOUT&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/INTEGRATION<em>TIMEOUT&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;INTEGRATION</em>TIMEOUT&quot;, &quot;statusCode&quot;: &quot;504&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/MISSING</em>AUTHENTICATION<em>TOKEN&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/MISSING<em>AUTHENTICATION</em>TOKEN&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;MISSING<em>AUTHENTICATION</em>TOKEN&quot;, &quot;statusCode&quot;: &quot;403&quot; }, { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/INVALID</em>SIGNATURE&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response<em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/INVALID</em>SIGNATURE&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;INVALID<em>SIGNATURE&quot;, &quot;statusCode&quot;: &quot;403&quot; }, { &quot;</em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/AUTHORIZER<em>FAILURE&quot; }, &quot;gatewayresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/{response</em>type}&quot;, &quot;templated&quot;: true }, &quot;gatewayresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/o81lxisefl/gatewayresponses/AUTHORIZER<em>FAILURE&quot; } }, &quot;defaultResponse&quot;: true, &quot;responseParameters&quot;: {}, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;{&quot;message&quot;:$context.error.messageString}&quot; }, &quot;responseType&quot;: &quot;AUTHORIZER</em>FAILURE&quot;, &quot;statusCode&quot;: &quot;500&quot; } ] } }</code></pre> <p></p> </div> </div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/customize-gateway-responses.html">Customize Gateway Responses</a> </div></p>
1314#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1315#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1316pub struct GatewayResponses {
1317    /// <p>Returns the entire collection, because of no pagination support.</p>
1318    #[serde(rename = "items")]
1319    #[serde(skip_serializing_if = "Option::is_none")]
1320    pub items: Option<Vec<GatewayResponse>>,
1321    #[serde(rename = "position")]
1322    #[serde(skip_serializing_if = "Option::is_none")]
1323    pub position: Option<String>,
1324}
1325
1326/// <p>A request to generate a <a>ClientCertificate</a> resource.</p>
1327#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1328#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1329pub struct GenerateClientCertificateRequest {
1330    /// <p>The description of the <a>ClientCertificate</a>.</p>
1331    #[serde(rename = "description")]
1332    #[serde(skip_serializing_if = "Option::is_none")]
1333    pub description: Option<String>,
1334    /// <p>The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with <code>aws:</code>. The tag value can be up to 256 characters.</p>
1335    #[serde(rename = "tags")]
1336    #[serde(skip_serializing_if = "Option::is_none")]
1337    pub tags: Option<::std::collections::HashMap<String, String>>,
1338}
1339
1340/// <p>Requests API Gateway to get information about the current <a>Account</a> resource.</p>
1341#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1342#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1343pub struct GetAccountRequest {}
1344
1345/// <p>A request to get information about the current <a>ApiKey</a> resource.</p>
1346#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1347#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1348pub struct GetApiKeyRequest {
1349    /// <p>[Required] The identifier of the <a>ApiKey</a> resource.</p>
1350    #[serde(rename = "apiKey")]
1351    pub api_key: String,
1352    /// <p>A boolean flag to specify whether (<code>true</code>) or not (<code>false</code>) the result contains the key value.</p>
1353    #[serde(rename = "includeValue")]
1354    #[serde(skip_serializing_if = "Option::is_none")]
1355    pub include_value: Option<bool>,
1356}
1357
1358/// <p>A request to get information about the current <a>ApiKeys</a> resource.</p>
1359#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1360#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1361pub struct GetApiKeysRequest {
1362    /// <p>The identifier of a customer in AWS Marketplace or an external system, such as a developer portal.</p>
1363    #[serde(rename = "customerId")]
1364    #[serde(skip_serializing_if = "Option::is_none")]
1365    pub customer_id: Option<String>,
1366    /// <p>A boolean flag to specify whether (<code>true</code>) or not (<code>false</code>) the result contains key values.</p>
1367    #[serde(rename = "includeValues")]
1368    #[serde(skip_serializing_if = "Option::is_none")]
1369    pub include_values: Option<bool>,
1370    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1371    #[serde(rename = "limit")]
1372    #[serde(skip_serializing_if = "Option::is_none")]
1373    pub limit: Option<i64>,
1374    /// <p>The name of queried API keys.</p>
1375    #[serde(rename = "nameQuery")]
1376    #[serde(skip_serializing_if = "Option::is_none")]
1377    pub name_query: Option<String>,
1378    /// <p>The current pagination position in the paged result set.</p>
1379    #[serde(rename = "position")]
1380    #[serde(skip_serializing_if = "Option::is_none")]
1381    pub position: Option<String>,
1382}
1383
1384/// <p>Request to describe an existing <a>Authorizer</a> resource.</p>
1385#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1386#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1387pub struct GetAuthorizerRequest {
1388    /// <p>[Required] The identifier of the <a>Authorizer</a> resource.</p>
1389    #[serde(rename = "authorizerId")]
1390    pub authorizer_id: String,
1391    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1392    #[serde(rename = "restApiId")]
1393    pub rest_api_id: String,
1394}
1395
1396/// <p>Request to describe an existing <a>Authorizers</a> resource.</p>
1397#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1398#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1399pub struct GetAuthorizersRequest {
1400    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1401    #[serde(rename = "limit")]
1402    #[serde(skip_serializing_if = "Option::is_none")]
1403    pub limit: Option<i64>,
1404    /// <p>The current pagination position in the paged result set.</p>
1405    #[serde(rename = "position")]
1406    #[serde(skip_serializing_if = "Option::is_none")]
1407    pub position: Option<String>,
1408    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1409    #[serde(rename = "restApiId")]
1410    pub rest_api_id: String,
1411}
1412
1413/// <p>Request to describe a <a>BasePathMapping</a> resource.</p>
1414#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1415#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1416pub struct GetBasePathMappingRequest {
1417    /// <p>[Required] The base path name that callers of the API must provide as part of the URL after the domain name. This value must be unique for all of the mappings across a single API. Specify '(none)' if you do not want callers to specify any base path name after the domain name.</p>
1418    #[serde(rename = "basePath")]
1419    pub base_path: String,
1420    /// <p>[Required] The domain name of the <a>BasePathMapping</a> resource to be described.</p>
1421    #[serde(rename = "domainName")]
1422    pub domain_name: String,
1423}
1424
1425/// <p>A request to get information about a collection of <a>BasePathMapping</a> resources.</p>
1426#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1427#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1428pub struct GetBasePathMappingsRequest {
1429    /// <p>[Required] The domain name of a <a>BasePathMapping</a> resource.</p>
1430    #[serde(rename = "domainName")]
1431    pub domain_name: String,
1432    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1433    #[serde(rename = "limit")]
1434    #[serde(skip_serializing_if = "Option::is_none")]
1435    pub limit: Option<i64>,
1436    /// <p>The current pagination position in the paged result set.</p>
1437    #[serde(rename = "position")]
1438    #[serde(skip_serializing_if = "Option::is_none")]
1439    pub position: Option<String>,
1440}
1441
1442/// <p>A request to get information about the current <a>ClientCertificate</a> resource.</p>
1443#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1444#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1445pub struct GetClientCertificateRequest {
1446    /// <p>[Required] The identifier of the <a>ClientCertificate</a> resource to be described.</p>
1447    #[serde(rename = "clientCertificateId")]
1448    pub client_certificate_id: String,
1449}
1450
1451/// <p>A request to get information about a collection of <a>ClientCertificate</a> resources.</p>
1452#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1453#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1454pub struct GetClientCertificatesRequest {
1455    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1456    #[serde(rename = "limit")]
1457    #[serde(skip_serializing_if = "Option::is_none")]
1458    pub limit: Option<i64>,
1459    /// <p>The current pagination position in the paged result set.</p>
1460    #[serde(rename = "position")]
1461    #[serde(skip_serializing_if = "Option::is_none")]
1462    pub position: Option<String>,
1463}
1464
1465/// <p>Requests API Gateway to get information about a <a>Deployment</a> resource.</p>
1466#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1467#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1468pub struct GetDeploymentRequest {
1469    /// <p>[Required] The identifier of the <a>Deployment</a> resource to get information about.</p>
1470    #[serde(rename = "deploymentId")]
1471    pub deployment_id: String,
1472    /// <p>A query parameter to retrieve the specified embedded resources of the returned <a>Deployment</a> resource in the response. In a REST API call, this <code>embed</code> parameter value is a list of comma-separated strings, as in <code>GET /restapis/{restapi_id}/deployments/{deployment_id}?embed=var1,var2</code>. The SDK and other platform-dependent libraries might use a different format for the list. Currently, this request supports only retrieval of the embedded API summary this way. Hence, the parameter value must be a single-valued list containing only the <code>"apisummary"</code> string. For example, <code>GET /restapis/{restapi_id}/deployments/{deployment_id}?embed=apisummary</code>.</p>
1473    #[serde(rename = "embed")]
1474    #[serde(skip_serializing_if = "Option::is_none")]
1475    pub embed: Option<Vec<String>>,
1476    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1477    #[serde(rename = "restApiId")]
1478    pub rest_api_id: String,
1479}
1480
1481/// <p>Requests API Gateway to get information about a <a>Deployments</a> collection.</p>
1482#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1483#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1484pub struct GetDeploymentsRequest {
1485    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1486    #[serde(rename = "limit")]
1487    #[serde(skip_serializing_if = "Option::is_none")]
1488    pub limit: Option<i64>,
1489    /// <p>The current pagination position in the paged result set.</p>
1490    #[serde(rename = "position")]
1491    #[serde(skip_serializing_if = "Option::is_none")]
1492    pub position: Option<String>,
1493    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1494    #[serde(rename = "restApiId")]
1495    pub rest_api_id: String,
1496}
1497
1498/// <p>Gets a specified documentation part of a given API.</p>
1499#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1500#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1501pub struct GetDocumentationPartRequest {
1502    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1503    #[serde(rename = "documentationPartId")]
1504    pub documentation_part_id: String,
1505    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1506    #[serde(rename = "restApiId")]
1507    pub rest_api_id: String,
1508}
1509
1510/// <p>Gets the documentation parts of an API. The result may be filtered by the type, name, or path of API entities (targets).</p>
1511#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1512#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1513pub struct GetDocumentationPartsRequest {
1514    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1515    #[serde(rename = "limit")]
1516    #[serde(skip_serializing_if = "Option::is_none")]
1517    pub limit: Option<i64>,
1518    /// <p>The status of the API documentation parts to retrieve. Valid values are <code>DOCUMENTED</code> for retrieving <a>DocumentationPart</a> resources with content and <code>UNDOCUMENTED</code> for <a>DocumentationPart</a> resources without content.</p>
1519    #[serde(rename = "locationStatus")]
1520    #[serde(skip_serializing_if = "Option::is_none")]
1521    pub location_status: Option<String>,
1522    /// <p>The name of API entities of the to-be-retrieved documentation parts.</p>
1523    #[serde(rename = "nameQuery")]
1524    #[serde(skip_serializing_if = "Option::is_none")]
1525    pub name_query: Option<String>,
1526    /// <p>The path of API entities of the to-be-retrieved documentation parts.</p>
1527    #[serde(rename = "path")]
1528    #[serde(skip_serializing_if = "Option::is_none")]
1529    pub path: Option<String>,
1530    /// <p>The current pagination position in the paged result set.</p>
1531    #[serde(rename = "position")]
1532    #[serde(skip_serializing_if = "Option::is_none")]
1533    pub position: Option<String>,
1534    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1535    #[serde(rename = "restApiId")]
1536    pub rest_api_id: String,
1537    /// <p>The type of API entities of the to-be-retrieved documentation parts. </p>
1538    #[serde(rename = "type")]
1539    #[serde(skip_serializing_if = "Option::is_none")]
1540    pub type_: Option<String>,
1541}
1542
1543/// <p>Gets a documentation snapshot of an API.</p>
1544#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1545#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1546pub struct GetDocumentationVersionRequest {
1547    /// <p>[Required] The version identifier of the to-be-retrieved documentation snapshot.</p>
1548    #[serde(rename = "documentationVersion")]
1549    pub documentation_version: String,
1550    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1551    #[serde(rename = "restApiId")]
1552    pub rest_api_id: String,
1553}
1554
1555/// <p>Gets the documentation versions of an API.</p>
1556#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1557#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1558pub struct GetDocumentationVersionsRequest {
1559    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1560    #[serde(rename = "limit")]
1561    #[serde(skip_serializing_if = "Option::is_none")]
1562    pub limit: Option<i64>,
1563    /// <p>The current pagination position in the paged result set.</p>
1564    #[serde(rename = "position")]
1565    #[serde(skip_serializing_if = "Option::is_none")]
1566    pub position: Option<String>,
1567    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1568    #[serde(rename = "restApiId")]
1569    pub rest_api_id: String,
1570}
1571
1572/// <p>Request to get the name of a <a>DomainName</a> resource.</p>
1573#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1574#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1575pub struct GetDomainNameRequest {
1576    /// <p>[Required] The name of the <a>DomainName</a> resource.</p>
1577    #[serde(rename = "domainName")]
1578    pub domain_name: String,
1579}
1580
1581/// <p>Request to describe a collection of <a>DomainName</a> resources.</p>
1582#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1583#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1584pub struct GetDomainNamesRequest {
1585    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1586    #[serde(rename = "limit")]
1587    #[serde(skip_serializing_if = "Option::is_none")]
1588    pub limit: Option<i64>,
1589    /// <p>The current pagination position in the paged result set.</p>
1590    #[serde(rename = "position")]
1591    #[serde(skip_serializing_if = "Option::is_none")]
1592    pub position: Option<String>,
1593}
1594
1595/// <p>Request a new export of a <a>RestApi</a> for a particular <a>Stage</a>.</p>
1596#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1597#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1598pub struct GetExportRequest {
1599    /// <p>The content-type of the export, for example <code>application/json</code>. Currently <code>application/json</code> and <code>application/yaml</code> are supported for <code>exportType</code> of<code>oas30</code> and <code>swagger</code>. This should be specified in the <code>Accept</code> header for direct API requests.</p>
1600    #[serde(rename = "accepts")]
1601    #[serde(skip_serializing_if = "Option::is_none")]
1602    pub accepts: Option<String>,
1603    /// <p>[Required] The type of export. Acceptable values are 'oas30' for OpenAPI 3.0.x and 'swagger' for Swagger/OpenAPI 2.0.</p>
1604    #[serde(rename = "exportType")]
1605    pub export_type: String,
1606    /// <p>A key-value map of query string parameters that specify properties of the export, depending on the requested <code>exportType</code>. For <code>exportType</code> <code>oas30</code> and <code>swagger</code>, any combination of the following parameters are supported: <code>extensions='integrations'</code> or <code>extensions='apigateway'</code> will export the API with x-amazon-apigateway-integration extensions. <code>extensions='authorizers'</code> will export the API with x-amazon-apigateway-authorizer extensions. <code>postman</code> will export the API with Postman extensions, allowing for import to the Postman tool</p>
1607    #[serde(rename = "parameters")]
1608    #[serde(skip_serializing_if = "Option::is_none")]
1609    pub parameters: Option<::std::collections::HashMap<String, String>>,
1610    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1611    #[serde(rename = "restApiId")]
1612    pub rest_api_id: String,
1613    /// <p>[Required] The name of the <a>Stage</a> that will be exported.</p>
1614    #[serde(rename = "stageName")]
1615    pub stage_name: String,
1616}
1617
1618/// <p>Gets a <a>GatewayResponse</a> of a specified response type on the given <a>RestApi</a>.</p>
1619#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1620#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1621pub struct GetGatewayResponseRequest {
1622    /// <p>[Required] <p>The response type of the associated <a>GatewayResponse</a>. Valid values are <ul><li>ACCESS_DENIED</li><li>API_CONFIGURATION_ERROR</li><li>AUTHORIZER_FAILURE</li><li> AUTHORIZER_CONFIGURATION_ERROR</li><li>BAD_REQUEST_PARAMETERS</li><li>BAD_REQUEST_BODY</li><li>DEFAULT_4XX</li><li>DEFAULT_5XX</li><li>EXPIRED_TOKEN</li><li>INVALID_SIGNATURE</li><li>INTEGRATION_FAILURE</li><li>INTEGRATION_TIMEOUT</li><li>INVALID_API_KEY</li><li>MISSING_AUTHENTICATION_TOKEN</li><li> QUOTA_EXCEEDED</li><li>REQUEST_TOO_LARGE</li><li>RESOURCE_NOT_FOUND</li><li>THROTTLED</li><li>UNAUTHORIZED</li><li>UNSUPPORTED_MEDIA_TYPE</li></ul> </p></p>
1623    #[serde(rename = "responseType")]
1624    pub response_type: String,
1625    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1626    #[serde(rename = "restApiId")]
1627    pub rest_api_id: String,
1628}
1629
1630/// <p>Gets the <a>GatewayResponses</a> collection on the given <a>RestApi</a>. If an API developer has not added any definitions for gateway responses, the result will be the API Gateway-generated default <a>GatewayResponses</a> collection for the supported response types.</p>
1631#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1632#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1633pub struct GetGatewayResponsesRequest {
1634    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500. The <a>GatewayResponses</a> collection does not support pagination and the limit does not apply here.</p>
1635    #[serde(rename = "limit")]
1636    #[serde(skip_serializing_if = "Option::is_none")]
1637    pub limit: Option<i64>,
1638    /// <p>The current pagination position in the paged result set. The <a>GatewayResponse</a> collection does not support pagination and the position does not apply here.</p>
1639    #[serde(rename = "position")]
1640    #[serde(skip_serializing_if = "Option::is_none")]
1641    pub position: Option<String>,
1642    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1643    #[serde(rename = "restApiId")]
1644    pub rest_api_id: String,
1645}
1646
1647/// <p>Represents a request to get the integration configuration.</p>
1648#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1649#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1650pub struct GetIntegrationRequest {
1651    /// <p>[Required] Specifies a get integration request's HTTP method.</p>
1652    #[serde(rename = "httpMethod")]
1653    pub http_method: String,
1654    /// <p>[Required] Specifies a get integration request's resource identifier</p>
1655    #[serde(rename = "resourceId")]
1656    pub resource_id: String,
1657    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1658    #[serde(rename = "restApiId")]
1659    pub rest_api_id: String,
1660}
1661
1662/// <p>Represents a get integration response request.</p>
1663#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1664#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1665pub struct GetIntegrationResponseRequest {
1666    /// <p>[Required] Specifies a get integration response request's HTTP method.</p>
1667    #[serde(rename = "httpMethod")]
1668    pub http_method: String,
1669    /// <p>[Required] Specifies a get integration response request's resource identifier.</p>
1670    #[serde(rename = "resourceId")]
1671    pub resource_id: String,
1672    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1673    #[serde(rename = "restApiId")]
1674    pub rest_api_id: String,
1675    /// <p>[Required] Specifies a get integration response request's status code.</p>
1676    #[serde(rename = "statusCode")]
1677    pub status_code: String,
1678}
1679
1680/// <p>Request to describe an existing <a>Method</a> resource.</p>
1681#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1682#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1683pub struct GetMethodRequest {
1684    /// <p>[Required] Specifies the method request's HTTP method type.</p>
1685    #[serde(rename = "httpMethod")]
1686    pub http_method: String,
1687    /// <p>[Required] The <a>Resource</a> identifier for the <a>Method</a> resource.</p>
1688    #[serde(rename = "resourceId")]
1689    pub resource_id: String,
1690    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1691    #[serde(rename = "restApiId")]
1692    pub rest_api_id: String,
1693}
1694
1695/// <p>Request to describe a <a>MethodResponse</a> resource.</p>
1696#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1697#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1698pub struct GetMethodResponseRequest {
1699    /// <p>[Required] The HTTP verb of the <a>Method</a> resource.</p>
1700    #[serde(rename = "httpMethod")]
1701    pub http_method: String,
1702    /// <p>[Required] The <a>Resource</a> identifier for the <a>MethodResponse</a> resource.</p>
1703    #[serde(rename = "resourceId")]
1704    pub resource_id: String,
1705    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1706    #[serde(rename = "restApiId")]
1707    pub rest_api_id: String,
1708    /// <p>[Required] The status code for the <a>MethodResponse</a> resource.</p>
1709    #[serde(rename = "statusCode")]
1710    pub status_code: String,
1711}
1712
1713/// <p>Request to list information about a model in an existing <a>RestApi</a> resource.</p>
1714#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1715#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1716pub struct GetModelRequest {
1717    /// <p>A query parameter of a Boolean value to resolve (<code>true</code>) all external model references and returns a flattened model schema or not (<code>false</code>) The default is <code>false</code>.</p>
1718    #[serde(rename = "flatten")]
1719    #[serde(skip_serializing_if = "Option::is_none")]
1720    pub flatten: Option<bool>,
1721    /// <p>[Required] The name of the model as an identifier.</p>
1722    #[serde(rename = "modelName")]
1723    pub model_name: String,
1724    /// <p>[Required] The <a>RestApi</a> identifier under which the <a>Model</a> exists.</p>
1725    #[serde(rename = "restApiId")]
1726    pub rest_api_id: String,
1727}
1728
1729/// <p>Request to generate a sample mapping template used to transform the payload.</p>
1730#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1731#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1732pub struct GetModelTemplateRequest {
1733    /// <p>[Required] The name of the model for which to generate a template.</p>
1734    #[serde(rename = "modelName")]
1735    pub model_name: String,
1736    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1737    #[serde(rename = "restApiId")]
1738    pub rest_api_id: String,
1739}
1740
1741/// <p>Request to list existing <a>Models</a> defined for a <a>RestApi</a> resource.</p>
1742#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1743#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1744pub struct GetModelsRequest {
1745    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1746    #[serde(rename = "limit")]
1747    #[serde(skip_serializing_if = "Option::is_none")]
1748    pub limit: Option<i64>,
1749    /// <p>The current pagination position in the paged result set.</p>
1750    #[serde(rename = "position")]
1751    #[serde(skip_serializing_if = "Option::is_none")]
1752    pub position: Option<String>,
1753    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1754    #[serde(rename = "restApiId")]
1755    pub rest_api_id: String,
1756}
1757
1758/// <p>Gets a <a>RequestValidator</a> of a given <a>RestApi</a>.</p>
1759#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1760#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1761pub struct GetRequestValidatorRequest {
1762    /// <p>[Required] The identifier of the <a>RequestValidator</a> to be retrieved.</p>
1763    #[serde(rename = "requestValidatorId")]
1764    pub request_validator_id: String,
1765    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1766    #[serde(rename = "restApiId")]
1767    pub rest_api_id: String,
1768}
1769
1770/// <p>Gets the <a>RequestValidators</a> collection of a given <a>RestApi</a>.</p>
1771#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1772#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1773pub struct GetRequestValidatorsRequest {
1774    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1775    #[serde(rename = "limit")]
1776    #[serde(skip_serializing_if = "Option::is_none")]
1777    pub limit: Option<i64>,
1778    /// <p>The current pagination position in the paged result set.</p>
1779    #[serde(rename = "position")]
1780    #[serde(skip_serializing_if = "Option::is_none")]
1781    pub position: Option<String>,
1782    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1783    #[serde(rename = "restApiId")]
1784    pub rest_api_id: String,
1785}
1786
1787/// <p>Request to list information about a resource.</p>
1788#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1789#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1790pub struct GetResourceRequest {
1791    /// <p>A query parameter to retrieve the specified resources embedded in the returned <a>Resource</a> representation in the response. This <code>embed</code> parameter value is a list of comma-separated strings. Currently, the request supports only retrieval of the embedded <a>Method</a> resources this way. The query parameter value must be a single-valued list and contain the <code>"methods"</code> string. For example, <code>GET /restapis/{restapi_id}/resources/{resource_id}?embed=methods</code>.</p>
1792    #[serde(rename = "embed")]
1793    #[serde(skip_serializing_if = "Option::is_none")]
1794    pub embed: Option<Vec<String>>,
1795    /// <p>[Required] The identifier for the <a>Resource</a> resource.</p>
1796    #[serde(rename = "resourceId")]
1797    pub resource_id: String,
1798    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1799    #[serde(rename = "restApiId")]
1800    pub rest_api_id: String,
1801}
1802
1803/// <p>Request to list information about a collection of resources.</p>
1804#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1805#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1806pub struct GetResourcesRequest {
1807    /// <p>A query parameter used to retrieve the specified resources embedded in the returned <a>Resources</a> resource in the response. This <code>embed</code> parameter value is a list of comma-separated strings. Currently, the request supports only retrieval of the embedded <a>Method</a> resources this way. The query parameter value must be a single-valued list and contain the <code>"methods"</code> string. For example, <code>GET /restapis/{restapi_id}/resources?embed=methods</code>.</p>
1808    #[serde(rename = "embed")]
1809    #[serde(skip_serializing_if = "Option::is_none")]
1810    pub embed: Option<Vec<String>>,
1811    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1812    #[serde(rename = "limit")]
1813    #[serde(skip_serializing_if = "Option::is_none")]
1814    pub limit: Option<i64>,
1815    /// <p>The current pagination position in the paged result set.</p>
1816    #[serde(rename = "position")]
1817    #[serde(skip_serializing_if = "Option::is_none")]
1818    pub position: Option<String>,
1819    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1820    #[serde(rename = "restApiId")]
1821    pub rest_api_id: String,
1822}
1823
1824/// <p>The GET request to list an existing <a>RestApi</a> defined for your collection. </p>
1825#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1826#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1827pub struct GetRestApiRequest {
1828    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1829    #[serde(rename = "restApiId")]
1830    pub rest_api_id: String,
1831}
1832
1833/// <p>The GET request to list existing <a>RestApis</a> defined for your collection.</p>
1834#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1835#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1836pub struct GetRestApisRequest {
1837    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1838    #[serde(rename = "limit")]
1839    #[serde(skip_serializing_if = "Option::is_none")]
1840    pub limit: Option<i64>,
1841    /// <p>The current pagination position in the paged result set.</p>
1842    #[serde(rename = "position")]
1843    #[serde(skip_serializing_if = "Option::is_none")]
1844    pub position: Option<String>,
1845}
1846
1847/// <p>Request a new generated client SDK for a <a>RestApi</a> and <a>Stage</a>.</p>
1848#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1849#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1850pub struct GetSdkRequest {
1851    /// <p>A string-to-string key-value map of query parameters <code>sdkType</code>-dependent properties of the SDK. For <code>sdkType</code> of <code>objectivec</code> or <code>swift</code>, a parameter named <code>classPrefix</code> is required. For <code>sdkType</code> of <code>android</code>, parameters named <code>groupId</code>, <code>artifactId</code>, <code>artifactVersion</code>, and <code>invokerPackage</code> are required. For <code>sdkType</code> of <code>java</code>, parameters named <code>serviceName</code> and <code>javaPackageName</code> are required. </p>
1852    #[serde(rename = "parameters")]
1853    #[serde(skip_serializing_if = "Option::is_none")]
1854    pub parameters: Option<::std::collections::HashMap<String, String>>,
1855    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1856    #[serde(rename = "restApiId")]
1857    pub rest_api_id: String,
1858    /// <p>[Required] The language for the generated SDK. Currently <code>java</code>, <code>javascript</code>, <code>android</code>, <code>objectivec</code> (for iOS), <code>swift</code> (for iOS), and <code>ruby</code> are supported.</p>
1859    #[serde(rename = "sdkType")]
1860    pub sdk_type: String,
1861    /// <p>[Required] The name of the <a>Stage</a> that the SDK will use.</p>
1862    #[serde(rename = "stageName")]
1863    pub stage_name: String,
1864}
1865
1866/// <p>Get an <a>SdkType</a> instance.</p>
1867#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1868#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1869pub struct GetSdkTypeRequest {
1870    /// <p>[Required] The identifier of the queried <a>SdkType</a> instance.</p>
1871    #[serde(rename = "id")]
1872    pub id: String,
1873}
1874
1875/// <p>Get the <a>SdkTypes</a> collection.</p>
1876#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1877#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1878pub struct GetSdkTypesRequest {
1879    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1880    #[serde(rename = "limit")]
1881    #[serde(skip_serializing_if = "Option::is_none")]
1882    pub limit: Option<i64>,
1883    /// <p>The current pagination position in the paged result set.</p>
1884    #[serde(rename = "position")]
1885    #[serde(skip_serializing_if = "Option::is_none")]
1886    pub position: Option<String>,
1887}
1888
1889/// <p>Requests API Gateway to get information about a <a>Stage</a> resource.</p>
1890#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1891#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1892pub struct GetStageRequest {
1893    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1894    #[serde(rename = "restApiId")]
1895    pub rest_api_id: String,
1896    /// <p>[Required] The name of the <a>Stage</a> resource to get information about.</p>
1897    #[serde(rename = "stageName")]
1898    pub stage_name: String,
1899}
1900
1901/// <p>Requests API Gateway to get information about one or more <a>Stage</a> resources.</p>
1902#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1903#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1904pub struct GetStagesRequest {
1905    /// <p>The stages' deployment identifiers.</p>
1906    #[serde(rename = "deploymentId")]
1907    #[serde(skip_serializing_if = "Option::is_none")]
1908    pub deployment_id: Option<String>,
1909    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
1910    #[serde(rename = "restApiId")]
1911    pub rest_api_id: String,
1912}
1913
1914/// <p>Gets the <a>Tags</a> collection for a given resource.</p>
1915#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1916#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1917pub struct GetTagsRequest {
1918    /// <p>(Not currently supported) The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1919    #[serde(rename = "limit")]
1920    #[serde(skip_serializing_if = "Option::is_none")]
1921    pub limit: Option<i64>,
1922    /// <p>(Not currently supported) The current pagination position in the paged result set.</p>
1923    #[serde(rename = "position")]
1924    #[serde(skip_serializing_if = "Option::is_none")]
1925    pub position: Option<String>,
1926    /// <p>[Required] The ARN of a resource that can be tagged.</p>
1927    #[serde(rename = "resourceArn")]
1928    pub resource_arn: String,
1929}
1930
1931/// <p>The GET request to get a usage plan key of a given key identifier.</p>
1932#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1933#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1934pub struct GetUsagePlanKeyRequest {
1935    /// <p>[Required] The key Id of the to-be-retrieved <a>UsagePlanKey</a> resource representing a plan customer.</p>
1936    #[serde(rename = "keyId")]
1937    pub key_id: String,
1938    /// <p>[Required] The Id of the <a>UsagePlan</a> resource representing the usage plan containing the to-be-retrieved <a>UsagePlanKey</a> resource representing a plan customer.</p>
1939    #[serde(rename = "usagePlanId")]
1940    pub usage_plan_id: String,
1941}
1942
1943/// <p>The GET request to get all the usage plan keys representing the API keys added to a specified usage plan.</p>
1944#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1945#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1946pub struct GetUsagePlanKeysRequest {
1947    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1948    #[serde(rename = "limit")]
1949    #[serde(skip_serializing_if = "Option::is_none")]
1950    pub limit: Option<i64>,
1951    /// <p>A query parameter specifying the name of the to-be-returned usage plan keys.</p>
1952    #[serde(rename = "nameQuery")]
1953    #[serde(skip_serializing_if = "Option::is_none")]
1954    pub name_query: Option<String>,
1955    /// <p>The current pagination position in the paged result set.</p>
1956    #[serde(rename = "position")]
1957    #[serde(skip_serializing_if = "Option::is_none")]
1958    pub position: Option<String>,
1959    /// <p>[Required] The Id of the <a>UsagePlan</a> resource representing the usage plan containing the to-be-retrieved <a>UsagePlanKey</a> resource representing a plan customer.</p>
1960    #[serde(rename = "usagePlanId")]
1961    pub usage_plan_id: String,
1962}
1963
1964/// <p>The GET request to get a usage plan of a given plan identifier.</p>
1965#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1966#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1967pub struct GetUsagePlanRequest {
1968    /// <p>[Required] The identifier of the <a>UsagePlan</a> resource to be retrieved.</p>
1969    #[serde(rename = "usagePlanId")]
1970    pub usage_plan_id: String,
1971}
1972
1973/// <p>The GET request to get all the usage plans of the caller's account.</p>
1974#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1975#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1976pub struct GetUsagePlansRequest {
1977    /// <p>The identifier of the API key associated with the usage plans.</p>
1978    #[serde(rename = "keyId")]
1979    #[serde(skip_serializing_if = "Option::is_none")]
1980    pub key_id: Option<String>,
1981    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
1982    #[serde(rename = "limit")]
1983    #[serde(skip_serializing_if = "Option::is_none")]
1984    pub limit: Option<i64>,
1985    /// <p>The current pagination position in the paged result set.</p>
1986    #[serde(rename = "position")]
1987    #[serde(skip_serializing_if = "Option::is_none")]
1988    pub position: Option<String>,
1989}
1990
1991/// <p>The GET request to get the usage data of a usage plan in a specified time interval.</p>
1992#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1993#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1994pub struct GetUsageRequest {
1995    /// <p>[Required] The ending date (e.g., 2016-12-31) of the usage data.</p>
1996    #[serde(rename = "endDate")]
1997    pub end_date: String,
1998    /// <p>The Id of the API key associated with the resultant usage data.</p>
1999    #[serde(rename = "keyId")]
2000    #[serde(skip_serializing_if = "Option::is_none")]
2001    pub key_id: Option<String>,
2002    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
2003    #[serde(rename = "limit")]
2004    #[serde(skip_serializing_if = "Option::is_none")]
2005    pub limit: Option<i64>,
2006    /// <p>The current pagination position in the paged result set.</p>
2007    #[serde(rename = "position")]
2008    #[serde(skip_serializing_if = "Option::is_none")]
2009    pub position: Option<String>,
2010    /// <p>[Required] The starting date (e.g., 2016-01-01) of the usage data.</p>
2011    #[serde(rename = "startDate")]
2012    pub start_date: String,
2013    /// <p>[Required] The Id of the usage plan associated with the usage data.</p>
2014    #[serde(rename = "usagePlanId")]
2015    pub usage_plan_id: String,
2016}
2017
2018/// <p>Gets a specified VPC link under the caller's account in a region.</p>
2019#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2020#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2021pub struct GetVpcLinkRequest {
2022    /// <p>[Required] The identifier of the <a>VpcLink</a>. It is used in an <a>Integration</a> to reference this <a>VpcLink</a>.</p>
2023    #[serde(rename = "vpcLinkId")]
2024    pub vpc_link_id: String,
2025}
2026
2027/// <p>Gets the <a>VpcLinks</a> collection under the caller's account in a selected region.</p>
2028#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2029#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2030pub struct GetVpcLinksRequest {
2031    /// <p>The maximum number of returned results per page. The default value is 25 and the maximum value is 500.</p>
2032    #[serde(rename = "limit")]
2033    #[serde(skip_serializing_if = "Option::is_none")]
2034    pub limit: Option<i64>,
2035    /// <p>The current pagination position in the paged result set.</p>
2036    #[serde(rename = "position")]
2037    #[serde(skip_serializing_if = "Option::is_none")]
2038    pub position: Option<String>,
2039}
2040
2041/// <p>The POST request to import API keys from an external source, such as a CSV-formatted file.</p>
2042#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2043#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2044pub struct ImportApiKeysRequest {
2045    /// <p>The payload of the POST request to import API keys. For the payload format, see <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-key-file-format.html">API Key File Format</a>.</p>
2046    #[serde(rename = "body")]
2047    #[serde(
2048        deserialize_with = "::rusoto_core::serialization::SerdeBlob::deserialize_blob",
2049        serialize_with = "::rusoto_core::serialization::SerdeBlob::serialize_blob",
2050        default
2051    )]
2052    pub body: bytes::Bytes,
2053    /// <p>A query parameter to indicate whether to rollback <a>ApiKey</a> importation (<code>true</code>) or not (<code>false</code>) when error is encountered.</p>
2054    #[serde(rename = "failOnWarnings")]
2055    #[serde(skip_serializing_if = "Option::is_none")]
2056    pub fail_on_warnings: Option<bool>,
2057    /// <p>A query parameter to specify the input format to imported API keys. Currently, only the <code>csv</code> format is supported.</p>
2058    #[serde(rename = "format")]
2059    pub format: String,
2060}
2061
2062/// <p>Import documentation parts from an external (e.g., OpenAPI) definition file. </p>
2063#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2064#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2065pub struct ImportDocumentationPartsRequest {
2066    /// <p>[Required] Raw byte array representing the to-be-imported documentation parts. To import from an OpenAPI file, this is a JSON object.</p>
2067    #[serde(rename = "body")]
2068    #[serde(
2069        deserialize_with = "::rusoto_core::serialization::SerdeBlob::deserialize_blob",
2070        serialize_with = "::rusoto_core::serialization::SerdeBlob::serialize_blob",
2071        default
2072    )]
2073    pub body: bytes::Bytes,
2074    /// <p>A query parameter to specify whether to rollback the documentation importation (<code>true</code>) or not (<code>false</code>) when a warning is encountered. The default value is <code>false</code>.</p>
2075    #[serde(rename = "failOnWarnings")]
2076    #[serde(skip_serializing_if = "Option::is_none")]
2077    pub fail_on_warnings: Option<bool>,
2078    /// <p>A query parameter to indicate whether to overwrite (<code>OVERWRITE</code>) any existing <a>DocumentationParts</a> definition or to merge (<code>MERGE</code>) the new definition into the existing one. The default value is <code>MERGE</code>.</p>
2079    #[serde(rename = "mode")]
2080    #[serde(skip_serializing_if = "Option::is_none")]
2081    pub mode: Option<String>,
2082    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
2083    #[serde(rename = "restApiId")]
2084    pub rest_api_id: String,
2085}
2086
2087/// <p>A POST request to import an API to API Gateway using an input of an API definition file.</p>
2088#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2089#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2090pub struct ImportRestApiRequest {
2091    /// <p>[Required] The POST request body containing external API definitions. Currently, only OpenAPI definition JSON/YAML files are supported. The maximum size of the API definition file is 6MB.</p>
2092    #[serde(rename = "body")]
2093    #[serde(
2094        deserialize_with = "::rusoto_core::serialization::SerdeBlob::deserialize_blob",
2095        serialize_with = "::rusoto_core::serialization::SerdeBlob::serialize_blob",
2096        default
2097    )]
2098    pub body: bytes::Bytes,
2099    /// <p>A query parameter to indicate whether to rollback the API creation (<code>true</code>) or not (<code>false</code>) when a warning is encountered. The default value is <code>false</code>.</p>
2100    #[serde(rename = "failOnWarnings")]
2101    #[serde(skip_serializing_if = "Option::is_none")]
2102    pub fail_on_warnings: Option<bool>,
2103    /// <p><p>A key-value map of context-specific query string parameters specifying the behavior of different API importing operations. The following shows operation-specific parameters and their supported values.</p> <p> To exclude <a>DocumentationParts</a> from the import, set <code>parameters</code> as <code>ignore=documentation</code>.</p> <p> To configure the endpoint type, set <code>parameters</code> as <code>endpointConfigurationTypes=EDGE</code>, <code>endpointConfigurationTypes=REGIONAL</code>, or <code>endpointConfigurationTypes=PRIVATE</code>. The default endpoint type is <code>EDGE</code>.</p> <p> To handle imported <code>basepath</code>, set <code>parameters</code> as <code>basepath=ignore</code>, <code>basepath=prepend</code> or <code>basepath=split</code>.</p> <p>For example, the AWS CLI command to exclude documentation from the imported API is:</p> <pre><code>aws apigateway import-rest-api --parameters ignore=documentation --body &#39;file:///path/to/imported-api-body.json&#39;</code></pre> <p>The AWS CLI command to set the regional endpoint on the imported API is:</p> <pre><code>aws apigateway import-rest-api --parameters endpointConfigurationTypes=REGIONAL --body &#39;file:///path/to/imported-api-body.json&#39;</code></pre></p>
2104    #[serde(rename = "parameters")]
2105    #[serde(skip_serializing_if = "Option::is_none")]
2106    pub parameters: Option<::std::collections::HashMap<String, String>>,
2107}
2108
2109/// <p><p>Represents an HTTP, HTTP<em>PROXY, AWS, AWS</em>PROXY, or Mock integration.</p> <div class="remarks">In the API Gateway console, the built-in Lambda integration is an AWS integration.</div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html">Creating an API</a> </div></p>
2110#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2111#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2112pub struct Integration {
2113    /// <p>A list of request parameters whose values API Gateway caches. To be valid values for <code>cacheKeyParameters</code>, these parameters must also be specified for <a>Method</a> <code>requestParameters</code>.</p>
2114    #[serde(rename = "cacheKeyParameters")]
2115    #[serde(skip_serializing_if = "Option::is_none")]
2116    pub cache_key_parameters: Option<Vec<String>>,
2117    /// <p>Specifies a group of related cached parameters. By default, API Gateway uses the resource ID as the <code>cacheNamespace</code>. You can specify the same <code>cacheNamespace</code> across resources to return the same cached data for requests to different resources.</p>
2118    #[serde(rename = "cacheNamespace")]
2119    #[serde(skip_serializing_if = "Option::is_none")]
2120    pub cache_namespace: Option<String>,
2121    /// <p>The (<a href="https://docs.aws.amazon.com/apigateway/api-reference/resource/vpc-link/#id"><code>id</code></a>) of the <a>VpcLink</a> used for the integration when <code>connectionType=VPC_LINK</code> and undefined, otherwise.</p>
2122    #[serde(rename = "connectionId")]
2123    #[serde(skip_serializing_if = "Option::is_none")]
2124    pub connection_id: Option<String>,
2125    /// <p>The type of the network connection to the integration endpoint. The valid value is <code>INTERNET</code> for connections through the public routable internet or <code>VPC_LINK</code> for private connections between API Gateway and a network load balancer in a VPC. The default value is <code>INTERNET</code>.</p>
2126    #[serde(rename = "connectionType")]
2127    #[serde(skip_serializing_if = "Option::is_none")]
2128    pub connection_type: Option<String>,
2129    /// <p>Specifies how to handle request payload content type conversions. Supported values are <code>CONVERT_TO_BINARY</code> and <code>CONVERT_TO_TEXT</code>, with the following behaviors:</p> <ul> <li><p><code>CONVERT_TO_BINARY</code>: Converts a request payload from a Base64-encoded string to the corresponding binary blob.</p></li> <li><p><code>CONVERT_TO_TEXT</code>: Converts a request payload from a binary blob to a Base64-encoded string.</p></li> </ul> <p>If this property is not defined, the request payload will be passed through from the method request to integration request without modification, provided that the <code>passthroughBehavior</code> is configured to support payload pass-through.</p>
2130    #[serde(rename = "contentHandling")]
2131    #[serde(skip_serializing_if = "Option::is_none")]
2132    pub content_handling: Option<String>,
2133    /// <p>Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string <code>arn:aws:iam::\*:user/\*</code>. To use resource-based permissions on supported AWS services, specify null.</p>
2134    #[serde(rename = "credentials")]
2135    #[serde(skip_serializing_if = "Option::is_none")]
2136    pub credentials: Option<String>,
2137    /// <p>Specifies the integration's HTTP method type.</p>
2138    #[serde(rename = "httpMethod")]
2139    #[serde(skip_serializing_if = "Option::is_none")]
2140    pub http_method: Option<String>,
2141    /// <p><p>Specifies the integration&#39;s responses.</p> <div class="remarks"> <p/> <h4>Example: Get integration responses of a method</h4> <h5>Request</h5> <p/> <pre><code>GET /restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200 HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20160607T191449Z Authorization: AWS4-HMAC-SHA256 Credential={access<em>key</em>ID}/20160607/us-east-1/apigateway/aws4<em>request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4</em>hash} </code></pre> <h5>Response</h5> <p>The successful response returns <code>200 OK</code> status and a payload as follows:</p> <pre><code>{ &quot;_links&quot;: { &quot;curies&quot;: { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html&quot;, &quot;name&quot;: &quot;integrationresponse&quot;, &quot;templated&quot;: true }, &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;integrationresponse:delete&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200&quot; }, &quot;integrationresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200&quot; } }, &quot;responseParameters&quot;: { &quot;method.response.header.Content-Type&quot;: &quot;&#39;application/xml&#39;&quot; }, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;$util.urlDecode(&quot;%3CkinesisStreams%3E#foreach($stream in $input.path(&#39;$.StreamNames&#39;))%3Cstream%3E%3Cname%3E$stream%3C/name%3E%3C/stream%3E#end%3C/kinesisStreams%3E&quot;)\n&quot; }, &quot;statusCode&quot;: &quot;200&quot; }</code></pre> <p/> </div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html">Creating an API</a> </div></p>
2142    #[serde(rename = "integrationResponses")]
2143    #[serde(skip_serializing_if = "Option::is_none")]
2144    pub integration_responses: Option<::std::collections::HashMap<String, IntegrationResponse>>,
2145    /// <div> <p> Specifies how the method request body of an unmapped content type will be passed through the integration request to the back end without transformation. A content type is unmapped if no mapping template is defined in the integration or the content type does not match any of the mapped content types, as specified in <code>requestTemplates</code>. The valid value is one of the following: </p> <ul> <li> <code>WHEN_NO_MATCH</code>: passes the method request body through the integration request to the back end without transformation when the method request content type does not match any content type associated with the mapping templates defined in the integration request. </li> <li> <code>WHEN_NO_TEMPLATES</code>: passes the method request body through the integration request to the back end without transformation when no mapping template is defined in the integration request. If a template is defined when this option is selected, the method request of an unmapped content-type will be rejected with an HTTP <code>415 Unsupported Media Type</code> response. </li> <li> <code>NEVER</code>: rejects the method request with an HTTP <code>415 Unsupported Media Type</code> response when either the method request content type does not match any content type associated with the mapping templates defined in the integration request or no mapping template is defined in the integration request. </li> </ul> </div>
2146    #[serde(rename = "passthroughBehavior")]
2147    #[serde(skip_serializing_if = "Option::is_none")]
2148    pub passthrough_behavior: Option<String>,
2149    /// <p>A key-value map specifying request parameters that are passed from the method request to the back end. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the back end. The method request parameter value must match the pattern of <code>method.request.{location}.{name}</code>, where <code>location</code> is <code>querystring</code>, <code>path</code>, or <code>header</code> and <code>name</code> must be a valid and unique method request parameter name.</p>
2150    #[serde(rename = "requestParameters")]
2151    #[serde(skip_serializing_if = "Option::is_none")]
2152    pub request_parameters: Option<::std::collections::HashMap<String, String>>,
2153    /// <p>Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value.</p>
2154    #[serde(rename = "requestTemplates")]
2155    #[serde(skip_serializing_if = "Option::is_none")]
2156    pub request_templates: Option<::std::collections::HashMap<String, String>>,
2157    /// <p>Custom timeout between 50 and 29,000 milliseconds. The default value is 29,000 milliseconds or 29 seconds.</p>
2158    #[serde(rename = "timeoutInMillis")]
2159    #[serde(skip_serializing_if = "Option::is_none")]
2160    pub timeout_in_millis: Option<i64>,
2161    /// <p>Specifies the TLS configuration for an integration.</p>
2162    #[serde(rename = "tlsConfig")]
2163    #[serde(skip_serializing_if = "Option::is_none")]
2164    pub tls_config: Option<TlsConfig>,
2165    /// <p>Specifies an API method integration type. The valid value is one of the following:</p> <ul> <li><code>AWS</code>: for integrating the API method request with an AWS service action, including the Lambda function-invoking action. With the Lambda function-invoking action, this is referred to as the Lambda custom integration. With any other AWS service action, this is known as AWS integration.</li> <li><code>AWS_PROXY</code>: for integrating the API method request with the Lambda function-invoking action with the client request passed through as-is. This integration is also referred to as the Lambda proxy integration.</li> <li><code>HTTP</code>: for integrating the API method request with an HTTP endpoint, including a private HTTP endpoint within a VPC. This integration is also referred to as the HTTP custom integration.</li> <li><code>HTTP_PROXY</code>: for integrating the API method request with an HTTP endpoint, including a private HTTP endpoint within a VPC, with the client request passed through as-is. This is also referred to as the HTTP proxy integration.</li> <li><code>MOCK</code>: for integrating the API method request with API Gateway as a "loop-back" endpoint without invoking any backend.</li> </ul> <p>For the HTTP and HTTP proxy integrations, each integration can specify a protocol (<code>http/https</code>), port and path. Standard 80 and 443 ports are supported as well as custom ports above 1024. An HTTP or HTTP proxy integration with a <code>connectionType</code> of <code>VPC_LINK</code> is referred to as a private integration and uses a <a>VpcLink</a> to connect API Gateway to a network load balancer of a VPC.</p>
2166    #[serde(rename = "type")]
2167    #[serde(skip_serializing_if = "Option::is_none")]
2168    pub type_: Option<String>,
2169    /// <p><p>Specifies Uniform Resource Identifier (URI) of the integration endpoint.</p> <ul> <li><p> For <code>HTTP</code> or <code>HTTP<em>PROXY</code> integrations, the URI must be a fully formed, encoded HTTP(S) URL according to the &lt;a target=&quot;</em>blank&quot; href=&quot;https://en.wikipedia.org/wiki/Uniform<em>Resource</em>Identifier&quot;&gt;RFC-3986 specification</a>, for either standard integration, where <code>connectionType</code> is not <code>VPC<em>LINK</code>, or private integration, where <code>connectionType</code> is <code>VPC</em>LINK</code>. For a private HTTP integration, the URI is not used for routing. </p> </li> <li><p> For <code>AWS</code> or <code>AWS<em>PROXY</code> integrations, the URI is of the form <code>arn:aws:apigateway:{region}:{subdomain.service|service}:path|action/{service</em>api}</code>. Here, <code>{Region}</code> is the API Gateway region (e.g., <code>us-east-1</code>); <code>{service}</code> is the name of the integrated AWS service (e.g., <code>s3</code>); and <code>{subdomain}</code> is a designated subdomain supported by certain AWS service for fast host-name lookup. <code>action</code> can be used for an AWS service action-based API, using an <code>Action={name}&amp;{p1}={v1}&amp;p2={v2}...</code> query string. The ensuing <code>{service<em>api}</code> refers to a supported action <code>{name}</code> plus any required input parameters. Alternatively, <code>path</code> can be used for an AWS service path-based API. The ensuing <code>service</em>api</code> refers to the path to an AWS service resource, including the region of the integrated AWS service, if applicable. For example, for integration with the S3 API of <code><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html">GetObject</a></code>, the <code>uri</code> can be either <code>arn:aws:apigateway:us-west-2:s3:action/GetObject&amp;Bucket={bucket}&amp;Key={key}</code> or <code>arn:aws:apigateway:us-west-2:s3:path/{bucket}/{key}</code></p> </li></ul></p>
2170    #[serde(rename = "uri")]
2171    #[serde(skip_serializing_if = "Option::is_none")]
2172    pub uri: Option<String>,
2173}
2174
2175/// <p><p>Represents an integration response. The status code must map to an existing <a>MethodResponse</a>, and parameters and templates can be used to transform the back-end response.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html">Creating an API</a> </div></p>
2176#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2177#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2178pub struct IntegrationResponse {
2179    /// <p>Specifies how to handle response payload content type conversions. Supported values are <code>CONVERT_TO_BINARY</code> and <code>CONVERT_TO_TEXT</code>, with the following behaviors:</p> <ul> <li><p><code>CONVERT_TO_BINARY</code>: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p></li> <li><p><code>CONVERT_TO_TEXT</code>: Converts a response payload from a binary blob to a Base64-encoded string.</p></li> </ul> <p>If this property is not defined, the response payload will be passed through from the integration response to the method response without modification.</p>
2180    #[serde(rename = "contentHandling")]
2181    #[serde(skip_serializing_if = "Option::is_none")]
2182    pub content_handling: Option<String>,
2183    /// <p>A key-value map specifying response parameters that are passed to the method response from the back end. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of <code>method.response.header.{name}</code>, where <code>name</code> is a valid and unique header name. The mapped non-static value must match the pattern of <code>integration.response.header.{name}</code> or <code>integration.response.body.{JSON-expression}</code>, where <code>name</code> is a valid and unique response header name and <code>JSON-expression</code> is a valid JSON expression without the <code>$</code> prefix.</p>
2184    #[serde(rename = "responseParameters")]
2185    #[serde(skip_serializing_if = "Option::is_none")]
2186    pub response_parameters: Option<::std::collections::HashMap<String, String>>,
2187    /// <p>Specifies the templates used to transform the integration response body. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.</p>
2188    #[serde(rename = "responseTemplates")]
2189    #[serde(skip_serializing_if = "Option::is_none")]
2190    pub response_templates: Option<::std::collections::HashMap<String, String>>,
2191    /// <p>Specifies the regular expression (regex) pattern used to choose an integration response based on the response from the back end. For example, if the success response returns nothing and the error response returns some string, you could use the <code>.+</code> regex to match error response. However, make sure that the error response does not contain any newline (<code>\n</code>) character in such cases. If the back end is an AWS Lambda function, the AWS Lambda function error header is matched. For all other HTTP and AWS back ends, the HTTP status code is matched.</p>
2192    #[serde(rename = "selectionPattern")]
2193    #[serde(skip_serializing_if = "Option::is_none")]
2194    pub selection_pattern: Option<String>,
2195    /// <p>Specifies the status code that is used to map the integration response to an existing <a>MethodResponse</a>.</p>
2196    #[serde(rename = "statusCode")]
2197    #[serde(skip_serializing_if = "Option::is_none")]
2198    pub status_code: Option<String>,
2199}
2200
2201/// <p><p> Represents a client-facing interface by which the client calls the API to access back-end resources. A <b>Method</b> resource is integrated with an <a>Integration</a> resource. Both consist of a request and one or more responses. The method request takes the client input that is passed to the back end through the integration request. A method response returns the output from the back end to the client through an integration response. A method request is embodied in a <b>Method</b> resource, whereas an integration request is embodied in an <a>Integration</a> resource. On the other hand, a method response is represented by a <a>MethodResponse</a> resource, whereas an integration response is represented by an <a>IntegrationResponse</a> resource. </p> <div class="remarks"> <p/> <h4>Example: Retrive the GET method on a specified resource</h4> <h5>Request</h5> <p>The following example request retrieves the information about the GET method on an API resource (<code>3kzxbg5sa2</code>) of an API (<code>fugvjdxtri</code>). </p> <pre><code>GET /restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20160603T210259Z Authorization: AWS4-HMAC-SHA256 Credential={access<em>key</em>ID}/20160603/us-east-1/apigateway/aws4<em>request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4</em>hash}</code></pre> <h5>Response</h5> <p>The successful response returns a <code>200 OK</code> status code and a payload similar to the following:</p> <pre><code>{ &quot;<em>links&quot;: { &quot;curies&quot;: [ { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html&quot;, &quot;name&quot;: &quot;integration&quot;, &quot;templated&quot;: true }, { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html&quot;, &quot;name&quot;: &quot;integrationresponse&quot;, &quot;templated&quot;: true }, { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-{rel}.html&quot;, &quot;name&quot;: &quot;method&quot;, &quot;templated&quot;: true }, { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html&quot;, &quot;name&quot;: &quot;methodresponse&quot;, &quot;templated&quot;: true } ], &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET&quot;, &quot;name&quot;: &quot;GET&quot;, &quot;title&quot;: &quot;GET&quot; }, &quot;integration:put&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration&quot; }, &quot;method:delete&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET&quot; }, &quot;method:integration&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration&quot; }, &quot;method:responses&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200&quot;, &quot;name&quot;: &quot;200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;method:update&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET&quot; }, &quot;methodresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/{status</em>code}&quot;, &quot;templated&quot;: true } }, &quot;apiKeyRequired&quot;: true, &quot;authorizationType&quot;: &quot;NONE&quot;, &quot;httpMethod&quot;: &quot;GET&quot;, &quot;<em>embedded&quot;: { &quot;method:integration&quot;: { &quot;</em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration&quot; }, &quot;integration:delete&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration&quot; }, &quot;integration:responses&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200&quot;, &quot;name&quot;: &quot;200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;integration:update&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration&quot; }, &quot;integrationresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/{status<em>code}&quot;, &quot;templated&quot;: true } }, &quot;cacheKeyParameters&quot;: [], &quot;cacheNamespace&quot;: &quot;3kzxbg5sa2&quot;, &quot;credentials&quot;: &quot;arn:aws:iam::123456789012:role/apigAwsProxyRole&quot;, &quot;httpMethod&quot;: &quot;POST&quot;, &quot;passthroughBehavior&quot;: &quot;WHEN</em>NO<em>MATCH&quot;, &quot;requestParameters&quot;: { &quot;integration.request.header.Content-Type&quot;: &quot;&#39;application/x-amz-json-1.1&#39;&quot; }, &quot;requestTemplates&quot;: { &quot;application/json&quot;: &quot;{\n}&quot; }, &quot;type&quot;: &quot;AWS&quot;, &quot;uri&quot;: &quot;arn:aws:apigateway:us-east-1:kinesis:action/ListStreams&quot;, &quot;</em>embedded&quot;: { &quot;integration:responses&quot;: { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200&quot;, &quot;name&quot;: &quot;200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;integrationresponse:delete&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200&quot; }, &quot;integrationresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200&quot; } }, &quot;responseParameters&quot;: { &quot;method.response.header.Content-Type&quot;: &quot;&#39;application/xml&#39;&quot; }, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;$util.urlDecode(&quot;%3CkinesisStreams%3E%23foreach(%24stream%20in%20%24input.path(%27%24.StreamNames%27))%3Cstream%3E%3Cname%3E%24stream%3C%2Fname%3E%3C%2Fstream%3E%23end%3C%2FkinesisStreams%3E&quot;)&quot; }, &quot;statusCode&quot;: &quot;200&quot; } } }, &quot;method:responses&quot;: { &quot;</em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200&quot;, &quot;name&quot;: &quot;200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;methodresponse:delete&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200&quot; }, &quot;methodresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200&quot; } }, &quot;responseModels&quot;: { &quot;application/json&quot;: &quot;Empty&quot; }, &quot;responseParameters&quot;: { &quot;method.response.header.Content-Type&quot;: false }, &quot;statusCode&quot;: &quot;200&quot; } } }</code></pre> <p>In the example above, the response template for the <code>200 OK</code> response maps the JSON output from the <code>ListStreams</code> action in the back end to an XML output. The mapping template is URL-encoded as <code>%3CkinesisStreams%3E%23foreach(%24stream%20in%20%24input.path(%27%24.StreamNames%27))%3Cstream%3E%3Cname%3E%24stream%3C%2Fname%3E%3C%2Fstream%3E%23end%3C%2FkinesisStreams%3E</code> and the output is decoded using the <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#util-templat-reference">$util.urlDecode()</a> helper function.</p> </div> <div class="seeAlso"> <a>MethodResponse</a>, <a>Integration</a>, <a>IntegrationResponse</a>, <a>Resource</a>, <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings.html">Set up an API&#39;s method</a> </div></p>
2202#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2203#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2204pub struct Method {
2205    /// <p>A boolean flag specifying whether a valid <a>ApiKey</a> is required to invoke this method.</p>
2206    #[serde(rename = "apiKeyRequired")]
2207    #[serde(skip_serializing_if = "Option::is_none")]
2208    pub api_key_required: Option<bool>,
2209    /// <p>A list of authorization scopes configured on the method. The scopes are used with a <code>COGNITO_USER_POOLS</code> authorizer to authorize the method invocation. The authorization works by matching the method scopes against the scopes parsed from the access token in the incoming request. The method invocation is authorized if any method scopes matches a claimed scope in the access token. Otherwise, the invocation is not authorized. When the method scope is configured, the client must provide an access token instead of an identity token for authorization purposes.</p>
2210    #[serde(rename = "authorizationScopes")]
2211    #[serde(skip_serializing_if = "Option::is_none")]
2212    pub authorization_scopes: Option<Vec<String>>,
2213    /// <p>The method's authorization type. Valid values are <code>NONE</code> for open access, <code>AWS_IAM</code> for using AWS IAM permissions, <code>CUSTOM</code> for using a custom authorizer, or <code>COGNITO_USER_POOLS</code> for using a Cognito user pool.</p>
2214    #[serde(rename = "authorizationType")]
2215    #[serde(skip_serializing_if = "Option::is_none")]
2216    pub authorization_type: Option<String>,
2217    /// <p>The identifier of an <a>Authorizer</a> to use on this method. The <code>authorizationType</code> must be <code>CUSTOM</code>.</p>
2218    #[serde(rename = "authorizerId")]
2219    #[serde(skip_serializing_if = "Option::is_none")]
2220    pub authorizer_id: Option<String>,
2221    /// <p>The method's HTTP verb.</p>
2222    #[serde(rename = "httpMethod")]
2223    #[serde(skip_serializing_if = "Option::is_none")]
2224    pub http_method: Option<String>,
2225    /// <p><p>Gets the method&#39;s integration responsible for passing the client-submitted request to the back end and performing necessary transformations to make the request compliant with the back end.</p> <div class="remarks"> <p/> <h4>Example: </h4> <h5>Request</h5> <p/> <pre><code>GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T213210Z Authorization: AWS4-HMAC-SHA256 Credential={access<em>key</em>ID}/20160613/us-east-1/apigateway/aws4<em>request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4</em>hash}</code></pre> <h5>Response</h5> <p>The successful response returns a <code>200 OK</code> status code and a payload similar to the following:</p> <pre><code>{ &quot;<em>links&quot;: { &quot;curies&quot;: [ { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html&quot;, &quot;name&quot;: &quot;integration&quot;, &quot;templated&quot;: true }, { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html&quot;, &quot;name&quot;: &quot;integrationresponse&quot;, &quot;templated&quot;: true } ], &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration&quot; }, &quot;integration:delete&quot;: { &quot;href&quot;: &quot;/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration&quot; }, &quot;integration:responses&quot;: { &quot;href&quot;: &quot;/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200&quot;, &quot;name&quot;: &quot;200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;integration:update&quot;: { &quot;href&quot;: &quot;/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration&quot; }, &quot;integrationresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/{status</em>code}&quot;, &quot;templated&quot;: true } }, &quot;cacheKeyParameters&quot;: [], &quot;cacheNamespace&quot;: &quot;0cjtch&quot;, &quot;credentials&quot;: &quot;arn:aws:iam::123456789012:role/apigAwsProxyRole&quot;, &quot;httpMethod&quot;: &quot;POST&quot;, &quot;passthroughBehavior&quot;: &quot;WHEN<em>NO</em>MATCH&quot;, &quot;requestTemplates&quot;: { &quot;application/json&quot;: &quot;{\n &quot;a&quot;: &quot;$input.params(&#39;operand1&#39;)&quot;,\n &quot;b&quot;: &quot;$input.params(&#39;operand2&#39;)&quot;, \n &quot;op&quot;: &quot;$input.params(&#39;operator&#39;)&quot; \n}&quot; }, &quot;type&quot;: &quot;AWS&quot;, &quot;uri&quot;: &quot;arn:aws:apigateway:us-west-2:lambda:path//2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:Calc/invocations&quot;, &quot;<em>embedded&quot;: { &quot;integration:responses&quot;: { &quot;</em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200&quot;, &quot;name&quot;: &quot;200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;integrationresponse:delete&quot;: { &quot;href&quot;: &quot;/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200&quot; }, &quot;integrationresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200&quot; } }, &quot;responseParameters&quot;: { &quot;method.response.header.operator&quot;: &quot;integration.response.body.op&quot;, &quot;method.response.header.operand<em>2&quot;: &quot;integration.response.body.b&quot;, &quot;method.response.header.operand</em>1&quot;: &quot;integration.response.body.a&quot; }, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;#set($res = $input.path(&#39;$&#39;))\n{\n &quot;result&quot;: &quot;$res.a, $res.b, $res.op =&gt; $res.c&quot;,\n &quot;a&quot; : &quot;$res.a&quot;,\n &quot;b&quot; : &quot;$res.b&quot;,\n &quot;op&quot; : &quot;$res.op&quot;,\n &quot;c&quot; : &quot;$res.c&quot;\n}&quot; }, &quot;selectionPattern&quot;: &quot;&quot;, &quot;statusCode&quot;: &quot;200&quot; } } }</code></pre> <p/> </div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-integration.html">AWS CLI</a> </div></p>
2226    #[serde(rename = "methodIntegration")]
2227    #[serde(skip_serializing_if = "Option::is_none")]
2228    pub method_integration: Option<Integration>,
2229    /// <p><p>Gets a method response associated with a given HTTP status code. </p> <div class="remarks"> <p>The collection of method responses are encapsulated in a key-value map, where the key is a response&#39;s HTTP status code and the value is a <a>MethodResponse</a> resource that specifies the response returned to the caller from the back end through the integration response.</p> <h4>Example: Get a 200 OK response of a GET method</h4> <h5>Request</h5> <p/> <pre><code>GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200 HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com Content-Length: 117 X-Amz-Date: 20160613T215008Z Authorization: AWS4-HMAC-SHA256 Credential={access<em>key</em>ID}/20160613/us-east-1/apigateway/aws4<em>request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4</em>hash}</code></pre> <h5>Response</h5> <p>The successful response returns a <code>200 OK</code> status code and a payload similar to the following:</p> <pre><code>{ &quot;<em>links&quot;: { &quot;curies&quot;: { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html&quot;, &quot;name&quot;: &quot;methodresponse&quot;, &quot;templated&quot;: true }, &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;methodresponse:delete&quot;: { &quot;href&quot;: &quot;/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200&quot; }, &quot;methodresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200&quot; } }, &quot;responseModels&quot;: { &quot;application/json&quot;: &quot;Empty&quot; }, &quot;responseParameters&quot;: { &quot;method.response.header.operator&quot;: false, &quot;method.response.header.operand</em>2&quot;: false, &quot;method.response.header.operand_1&quot;: false }, &quot;statusCode&quot;: &quot;200&quot; }</code></pre> <p/> </div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-method-response.html">AWS CLI</a> </div></p>
2230    #[serde(rename = "methodResponses")]
2231    #[serde(skip_serializing_if = "Option::is_none")]
2232    pub method_responses: Option<::std::collections::HashMap<String, MethodResponse>>,
2233    /// <p>A human-friendly operation identifier for the method. For example, you can assign the <code>operationName</code> of <code>ListPets</code> for the <code>GET /pets</code> method in the <code>PetStore</code> example.</p>
2234    #[serde(rename = "operationName")]
2235    #[serde(skip_serializing_if = "Option::is_none")]
2236    pub operation_name: Option<String>,
2237    /// <p>A key-value map specifying data schemas, represented by <a>Model</a> resources, (as the mapped value) of the request payloads of given content types (as the mapping key).</p>
2238    #[serde(rename = "requestModels")]
2239    #[serde(skip_serializing_if = "Option::is_none")]
2240    pub request_models: Option<::std::collections::HashMap<String, String>>,
2241    /// <p>A key-value map defining required or optional method request parameters that can be accepted by API Gateway. A key is a method request parameter name matching the pattern of <code>method.request.{location}.{name}</code>, where <code>location</code> is <code>querystring</code>, <code>path</code>, or <code>header</code> and <code>name</code> is a valid and unique parameter name. The value associated with the key is a Boolean flag indicating whether the parameter is required (<code>true</code>) or optional (<code>false</code>). The method request parameter names defined here are available in <a>Integration</a> to be mapped to integration request parameters or templates.</p>
2242    #[serde(rename = "requestParameters")]
2243    #[serde(skip_serializing_if = "Option::is_none")]
2244    pub request_parameters: Option<::std::collections::HashMap<String, bool>>,
2245    /// <p>The identifier of a <a>RequestValidator</a> for request validation.</p>
2246    #[serde(rename = "requestValidatorId")]
2247    #[serde(skip_serializing_if = "Option::is_none")]
2248    pub request_validator_id: Option<String>,
2249}
2250
2251/// <p><p>Represents a method response of a given HTTP status code returned to the client. The method response is passed from the back end through the associated integration response that can be transformed using a mapping template. </p> <div class="remarks"> <p/> <h4>Example: A <b>MethodResponse</b> instance of an API</h4> <h5>Request</h5> <p>The example request retrieves a <b>MethodResponse</b> of the 200 status code.</p> <pre><code>GET /restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200 HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20160603T222952Z Authorization: AWS4-HMAC-SHA256 Credential={access<em>key</em>ID}/20160603/us-east-1/apigateway/aws4<em>request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4</em>hash}</code></pre> <h5>Response</h5> <p>The successful response returns <code>200 OK</code> status and a payload as follows:</p> <pre><code>{ &quot;_links&quot;: { &quot;curies&quot;: { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html&quot;, &quot;name&quot;: &quot;methodresponse&quot;, &quot;templated&quot;: true }, &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;methodresponse:delete&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200&quot; }, &quot;methodresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200&quot; } }, &quot;responseModels&quot;: { &quot;application/json&quot;: &quot;Empty&quot; }, &quot;responseParameters&quot;: { &quot;method.response.header.Content-Type&quot;: false }, &quot;statusCode&quot;: &quot;200&quot; }</code></pre> <p/> </div> <div class="seeAlso"> <a>Method</a>, <a>IntegrationResponse</a>, <a>Integration</a> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html">Creating an API</a> </div></p>
2252#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2253#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2254pub struct MethodResponse {
2255    /// <p>Specifies the <a>Model</a> resources used for the response's content-type. Response models are represented as a key/value map, with a content-type as the key and a <a>Model</a> name as the value.</p>
2256    #[serde(rename = "responseModels")]
2257    #[serde(skip_serializing_if = "Option::is_none")]
2258    pub response_models: Option<::std::collections::HashMap<String, String>>,
2259    /// <p>A key-value map specifying required or optional response parameters that API Gateway can send back to the caller. A key defines a method response header and the value specifies whether the associated method response header is required or not. The expression of the key must match the pattern <code>method.response.header.{name}</code>, where <code>name</code> is a valid and unique header name. API Gateway passes certain integration response data to the method response headers specified here according to the mapping you prescribe in the API's <a>IntegrationResponse</a>. The integration response data that can be mapped include an integration response header expressed in <code>integration.response.header.{name}</code>, a static value enclosed within a pair of single quotes (e.g., <code>'application/json'</code>), or a JSON expression from the back-end response payload in the form of <code>integration.response.body.{JSON-expression}</code>, where <code>JSON-expression</code> is a valid JSON expression without the <code>$</code> prefix.)</p>
2260    #[serde(rename = "responseParameters")]
2261    #[serde(skip_serializing_if = "Option::is_none")]
2262    pub response_parameters: Option<::std::collections::HashMap<String, bool>>,
2263    /// <p>The method response's status code.</p>
2264    #[serde(rename = "statusCode")]
2265    #[serde(skip_serializing_if = "Option::is_none")]
2266    pub status_code: Option<String>,
2267}
2268
2269/// <p>Specifies the method setting properties.</p>
2270#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2271#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2272pub struct MethodSetting {
2273    /// <p>Specifies whether the cached responses are encrypted. The PATCH path for this setting is <code>/{method_setting_key}/caching/dataEncrypted</code>, and the value is a Boolean.</p>
2274    #[serde(rename = "cacheDataEncrypted")]
2275    #[serde(skip_serializing_if = "Option::is_none")]
2276    pub cache_data_encrypted: Option<bool>,
2277    /// <p>Specifies the time to live (TTL), in seconds, for cached responses. The higher the TTL, the longer the response will be cached. The PATCH path for this setting is <code>/{method_setting_key}/caching/ttlInSeconds</code>, and the value is an integer.</p>
2278    #[serde(rename = "cacheTtlInSeconds")]
2279    #[serde(skip_serializing_if = "Option::is_none")]
2280    pub cache_ttl_in_seconds: Option<i64>,
2281    /// <p>Specifies whether responses should be cached and returned for requests. A cache cluster must be enabled on the stage for responses to be cached. The PATCH path for this setting is <code>/{method_setting_key}/caching/enabled</code>, and the value is a Boolean.</p>
2282    #[serde(rename = "cachingEnabled")]
2283    #[serde(skip_serializing_if = "Option::is_none")]
2284    pub caching_enabled: Option<bool>,
2285    /// <p>Specifies whether data trace logging is enabled for this method, which affects the log entries pushed to Amazon CloudWatch Logs. The PATCH path for this setting is <code>/{method_setting_key}/logging/dataTrace</code>, and the value is a Boolean.</p>
2286    #[serde(rename = "dataTraceEnabled")]
2287    #[serde(skip_serializing_if = "Option::is_none")]
2288    pub data_trace_enabled: Option<bool>,
2289    /// <p>Specifies the logging level for this method, which affects the log entries pushed to Amazon CloudWatch Logs. The PATCH path for this setting is <code>/{method_setting_key}/logging/loglevel</code>, and the available levels are <code>OFF</code>, <code>ERROR</code>, and <code>INFO</code>. Choose <code>ERROR</code> to write only error-level entries to CloudWatch Logs, or choose <code>INFO</code> to include all <code>ERROR</code> events as well as extra informational events.</p>
2290    #[serde(rename = "loggingLevel")]
2291    #[serde(skip_serializing_if = "Option::is_none")]
2292    pub logging_level: Option<String>,
2293    /// <p>Specifies whether Amazon CloudWatch metrics are enabled for this method. The PATCH path for this setting is <code>/{method_setting_key}/metrics/enabled</code>, and the value is a Boolean.</p>
2294    #[serde(rename = "metricsEnabled")]
2295    #[serde(skip_serializing_if = "Option::is_none")]
2296    pub metrics_enabled: Option<bool>,
2297    /// <p>Specifies whether authorization is required for a cache invalidation request. The PATCH path for this setting is <code>/{method_setting_key}/caching/requireAuthorizationForCacheControl</code>, and the value is a Boolean.</p>
2298    #[serde(rename = "requireAuthorizationForCacheControl")]
2299    #[serde(skip_serializing_if = "Option::is_none")]
2300    pub require_authorization_for_cache_control: Option<bool>,
2301    /// <p>Specifies the throttling burst limit. The PATCH path for this setting is <code>/{method_setting_key}/throttling/burstLimit</code>, and the value is an integer.</p>
2302    #[serde(rename = "throttlingBurstLimit")]
2303    #[serde(skip_serializing_if = "Option::is_none")]
2304    pub throttling_burst_limit: Option<i64>,
2305    /// <p>Specifies the throttling rate limit. The PATCH path for this setting is <code>/{method_setting_key}/throttling/rateLimit</code>, and the value is a double.</p>
2306    #[serde(rename = "throttlingRateLimit")]
2307    #[serde(skip_serializing_if = "Option::is_none")]
2308    pub throttling_rate_limit: Option<f64>,
2309    /// <p>Specifies how to handle unauthorized requests for cache invalidation. The PATCH path for this setting is <code>/{method_setting_key}/caching/unauthorizedCacheControlHeaderStrategy</code>, and the available values are <code>FAIL_WITH_403</code>, <code>SUCCEED_WITH_RESPONSE_HEADER</code>, <code>SUCCEED_WITHOUT_RESPONSE_HEADER</code>.</p>
2310    #[serde(rename = "unauthorizedCacheControlHeaderStrategy")]
2311    #[serde(skip_serializing_if = "Option::is_none")]
2312    pub unauthorized_cache_control_header_strategy: Option<String>,
2313}
2314
2315/// <p>Represents a summary of a <a>Method</a> resource, given a particular date and time.</p>
2316#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2317#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2318pub struct MethodSnapshot {
2319    /// <p>Specifies whether the method requires a valid <a>ApiKey</a>.</p>
2320    #[serde(rename = "apiKeyRequired")]
2321    #[serde(skip_serializing_if = "Option::is_none")]
2322    pub api_key_required: Option<bool>,
2323    /// <p>The method's authorization type. Valid values are <code>NONE</code> for open access, <code>AWS_IAM</code> for using AWS IAM permissions, <code>CUSTOM</code> for using a custom authorizer, or <code>COGNITO_USER_POOLS</code> for using a Cognito user pool.</p>
2324    #[serde(rename = "authorizationType")]
2325    #[serde(skip_serializing_if = "Option::is_none")]
2326    pub authorization_type: Option<String>,
2327}
2328
2329/// <p><p>Represents the data structure of a method&#39;s request or response payload.</p> <div class="remarks"> <p>A request model defines the data structure of the client-supplied request payload. A response model defines the data structure of the response payload returned by the back end. Although not required, models are useful for mapping payloads between the front end and back end.</p> <p>A model is used for generating an API&#39;s SDK, validating the input request body, and creating a skeletal mapping template.</p> </div> <div class="seeAlso"> <a>Method</a>, <a>MethodResponse</a>, <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings.html">Models and Mappings</a> </div></p>
2330#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2331#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2332pub struct Model {
2333    /// <p>The content-type for the model.</p>
2334    #[serde(rename = "contentType")]
2335    #[serde(skip_serializing_if = "Option::is_none")]
2336    pub content_type: Option<String>,
2337    /// <p>The description of the model.</p>
2338    #[serde(rename = "description")]
2339    #[serde(skip_serializing_if = "Option::is_none")]
2340    pub description: Option<String>,
2341    /// <p>The identifier for the model resource.</p>
2342    #[serde(rename = "id")]
2343    #[serde(skip_serializing_if = "Option::is_none")]
2344    pub id: Option<String>,
2345    /// <p>The name of the model. Must be an alphanumeric string.</p>
2346    #[serde(rename = "name")]
2347    #[serde(skip_serializing_if = "Option::is_none")]
2348    pub name: Option<String>,
2349    /// <p>The schema for the model. For <code>application/json</code> models, this should be <a href="https://tools.ietf.org/html/draft-zyp-json-schema-04" target="_blank">JSON schema draft 4</a> model. Do not include "\*/" characters in the description of any properties because such "\*/" characters may be interpreted as the closing marker for comments in some languages, such as Java or JavaScript, causing the installation of your API's SDK generated by API Gateway to fail.</p>
2350    #[serde(rename = "schema")]
2351    #[serde(skip_serializing_if = "Option::is_none")]
2352    pub schema: Option<String>,
2353}
2354
2355/// <p><p>Represents a collection of <a>Model</a> resources.</p> <div class="seeAlso"> <a>Method</a>, <a>MethodResponse</a>, <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings.html">Models and Mappings</a> </div></p>
2356#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2357#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2358pub struct Models {
2359    /// <p>The current page of elements from this collection.</p>
2360    #[serde(rename = "items")]
2361    #[serde(skip_serializing_if = "Option::is_none")]
2362    pub items: Option<Vec<Model>>,
2363    #[serde(rename = "position")]
2364    #[serde(skip_serializing_if = "Option::is_none")]
2365    pub position: Option<String>,
2366}
2367
2368/// <p>A single patch operation to apply to the specified resource. Please refer to http://tools.ietf.org/html/rfc6902#section-4 for an explanation of how each operation is used.</p>
2369#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2370#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2371pub struct PatchOperation {
2372    /// <p>The <code>copy</code> update operation's source as identified by a <code>JSON-Pointer</code> value referencing the location within the targeted resource to copy the value from. For example, to promote a canary deployment, you copy the canary deployment ID to the affiliated deployment ID by calling a PATCH request on a <a>Stage</a> resource with <code>"op":"copy"</code>, <code>"from":"/canarySettings/deploymentId"</code> and <code>"path":"/deploymentId"</code>.</p>
2373    #[serde(rename = "from")]
2374    #[serde(skip_serializing_if = "Option::is_none")]
2375    pub from: Option<String>,
2376    /// <p> An update operation to be performed with this PATCH request. The valid value can be <code>add</code>, <code>remove</code>, <code>replace</code> or <code>copy</code>. Not all valid operations are supported for a given resource. Support of the operations depends on specific operational contexts. Attempts to apply an unsupported operation on a resource will return an error message.</p>
2377    #[serde(rename = "op")]
2378    #[serde(skip_serializing_if = "Option::is_none")]
2379    pub op: Option<String>,
2380    /// <p>The <code>op</code> operation's target, as identified by a <a href="https://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-08">JSON Pointer</a> value that references a location within the targeted resource. For example, if the target resource has an updateable property of <code>{"name":"value"}</code>, the path for this property is <code>/name</code>. If the <code>name</code> property value is a JSON object (e.g., <code>{"name": {"child/name": "child-value"}}</code>), the path for the <code>child/name</code> property will be <code>/name/child~1name</code>. Any slash ("/") character appearing in path names must be escaped with "~1", as shown in the example above. Each <code>op</code> operation can have only one <code>path</code> associated with it.</p>
2381    #[serde(rename = "path")]
2382    #[serde(skip_serializing_if = "Option::is_none")]
2383    pub path: Option<String>,
2384    /// <p>The new target value of the update operation. It is applicable for the <code>add</code> or <code>replace</code> operation. When using AWS CLI to update a property of a JSON value, enclose the JSON object with a pair of single quotes in a Linux shell, e.g., '{"a": ...}'. In a Windows shell, see <a href="https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-json">Using JSON for Parameters</a>.</p>
2385    #[serde(rename = "value")]
2386    #[serde(skip_serializing_if = "Option::is_none")]
2387    pub value: Option<String>,
2388}
2389
2390/// <p>Creates a customization of a <a>GatewayResponse</a> of a specified response type and status code on the given <a>RestApi</a>.</p>
2391#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2392#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2393pub struct PutGatewayResponseRequest {
2394    /// <p><p>Response parameters (paths, query strings and headers) of the <a>GatewayResponse</a> as a string-to-string map of key-value pairs.</p></p>
2395    #[serde(rename = "responseParameters")]
2396    #[serde(skip_serializing_if = "Option::is_none")]
2397    pub response_parameters: Option<::std::collections::HashMap<String, String>>,
2398    /// <p><p>Response templates of the <a>GatewayResponse</a> as a string-to-string map of key-value pairs.</p></p>
2399    #[serde(rename = "responseTemplates")]
2400    #[serde(skip_serializing_if = "Option::is_none")]
2401    pub response_templates: Option<::std::collections::HashMap<String, String>>,
2402    /// <p>[Required] <p>The response type of the associated <a>GatewayResponse</a>. Valid values are <ul><li>ACCESS_DENIED</li><li>API_CONFIGURATION_ERROR</li><li>AUTHORIZER_FAILURE</li><li> AUTHORIZER_CONFIGURATION_ERROR</li><li>BAD_REQUEST_PARAMETERS</li><li>BAD_REQUEST_BODY</li><li>DEFAULT_4XX</li><li>DEFAULT_5XX</li><li>EXPIRED_TOKEN</li><li>INVALID_SIGNATURE</li><li>INTEGRATION_FAILURE</li><li>INTEGRATION_TIMEOUT</li><li>INVALID_API_KEY</li><li>MISSING_AUTHENTICATION_TOKEN</li><li> QUOTA_EXCEEDED</li><li>REQUEST_TOO_LARGE</li><li>RESOURCE_NOT_FOUND</li><li>THROTTLED</li><li>UNAUTHORIZED</li><li>UNSUPPORTED_MEDIA_TYPE</li></ul> </p></p>
2403    #[serde(rename = "responseType")]
2404    pub response_type: String,
2405    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
2406    #[serde(rename = "restApiId")]
2407    pub rest_api_id: String,
2408    /// <p>The HTTP status code of the <a>GatewayResponse</a>.</p>
2409    #[serde(rename = "statusCode")]
2410    #[serde(skip_serializing_if = "Option::is_none")]
2411    pub status_code: Option<String>,
2412}
2413
2414/// <p>Sets up a method's integration.</p>
2415#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2416#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2417pub struct PutIntegrationRequest {
2418    /// <p>A list of request parameters whose values API Gateway caches. To be valid values for <code>cacheKeyParameters</code>, these parameters must also be specified for <a>Method</a> <code>requestParameters</code>.</p>
2419    #[serde(rename = "cacheKeyParameters")]
2420    #[serde(skip_serializing_if = "Option::is_none")]
2421    pub cache_key_parameters: Option<Vec<String>>,
2422    /// <p>Specifies a group of related cached parameters. By default, API Gateway uses the resource ID as the <code>cacheNamespace</code>. You can specify the same <code>cacheNamespace</code> across resources to return the same cached data for requests to different resources.</p>
2423    #[serde(rename = "cacheNamespace")]
2424    #[serde(skip_serializing_if = "Option::is_none")]
2425    pub cache_namespace: Option<String>,
2426    /// <p>The (<a href="https://docs.aws.amazon.com/apigateway/api-reference/resource/vpc-link/#id"><code>id</code></a>) of the <a>VpcLink</a> used for the integration when <code>connectionType=VPC_LINK</code> and undefined, otherwise.</p>
2427    #[serde(rename = "connectionId")]
2428    #[serde(skip_serializing_if = "Option::is_none")]
2429    pub connection_id: Option<String>,
2430    /// <p>The type of the network connection to the integration endpoint. The valid value is <code>INTERNET</code> for connections through the public routable internet or <code>VPC_LINK</code> for private connections between API Gateway and a network load balancer in a VPC. The default value is <code>INTERNET</code>.</p>
2431    #[serde(rename = "connectionType")]
2432    #[serde(skip_serializing_if = "Option::is_none")]
2433    pub connection_type: Option<String>,
2434    /// <p>Specifies how to handle request payload content type conversions. Supported values are <code>CONVERT_TO_BINARY</code> and <code>CONVERT_TO_TEXT</code>, with the following behaviors:</p> <ul> <li><p><code>CONVERT_TO_BINARY</code>: Converts a request payload from a Base64-encoded string to the corresponding binary blob.</p></li> <li><p><code>CONVERT_TO_TEXT</code>: Converts a request payload from a binary blob to a Base64-encoded string.</p></li> </ul> <p>If this property is not defined, the request payload will be passed through from the method request to integration request without modification, provided that the <code>passthroughBehavior</code> is configured to support payload pass-through.</p>
2435    #[serde(rename = "contentHandling")]
2436    #[serde(skip_serializing_if = "Option::is_none")]
2437    pub content_handling: Option<String>,
2438    /// <p>Specifies whether credentials are required for a put integration.</p>
2439    #[serde(rename = "credentials")]
2440    #[serde(skip_serializing_if = "Option::is_none")]
2441    pub credentials: Option<String>,
2442    /// <p>[Required] Specifies a put integration request's HTTP method.</p>
2443    #[serde(rename = "httpMethod")]
2444    pub http_method: String,
2445    /// <p>Specifies a put integration HTTP method. When the integration type is HTTP or AWS, this field is required.</p>
2446    #[serde(rename = "integrationHttpMethod")]
2447    #[serde(skip_serializing_if = "Option::is_none")]
2448    pub integration_http_method: Option<String>,
2449    /// <p><p>Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the <code>requestTemplates</code> property on the Integration resource. There are three valid values: <code>WHEN<em>NO</em>MATCH</code>, <code>WHEN<em>NO</em>TEMPLATES</code>, and <code>NEVER</code>. </p> <ul> <li><p><code>WHEN<em>NO</em>MATCH</code> passes the request body for unmapped content types through to the integration back end without transformation.</p></li> <li><p><code>NEVER</code> rejects unmapped content types with an HTTP 415 &#39;Unsupported Media Type&#39; response.</p></li> <li><p><code>WHEN<em>NO</em>TEMPLATES</code> allows pass-through when the integration has NO content types mapped to templates. However if there is at least one content type defined, unmapped content types will be rejected with the same 415 response.</p></li> </ul></p>
2450    #[serde(rename = "passthroughBehavior")]
2451    #[serde(skip_serializing_if = "Option::is_none")]
2452    pub passthrough_behavior: Option<String>,
2453    /// <p>A key-value map specifying request parameters that are passed from the method request to the back end. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the back end. The method request parameter value must match the pattern of <code>method.request.{location}.{name}</code>, where <code>location</code> is <code>querystring</code>, <code>path</code>, or <code>header</code> and <code>name</code> must be a valid and unique method request parameter name.</p>
2454    #[serde(rename = "requestParameters")]
2455    #[serde(skip_serializing_if = "Option::is_none")]
2456    pub request_parameters: Option<::std::collections::HashMap<String, String>>,
2457    /// <p>Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value.</p>
2458    #[serde(rename = "requestTemplates")]
2459    #[serde(skip_serializing_if = "Option::is_none")]
2460    pub request_templates: Option<::std::collections::HashMap<String, String>>,
2461    /// <p>[Required] Specifies a put integration request's resource ID.</p>
2462    #[serde(rename = "resourceId")]
2463    pub resource_id: String,
2464    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
2465    #[serde(rename = "restApiId")]
2466    pub rest_api_id: String,
2467    /// <p>Custom timeout between 50 and 29,000 milliseconds. The default value is 29,000 milliseconds or 29 seconds.</p>
2468    #[serde(rename = "timeoutInMillis")]
2469    #[serde(skip_serializing_if = "Option::is_none")]
2470    pub timeout_in_millis: Option<i64>,
2471    #[serde(rename = "tlsConfig")]
2472    #[serde(skip_serializing_if = "Option::is_none")]
2473    pub tls_config: Option<TlsConfig>,
2474    /// <p>[Required] Specifies a put integration input's type.</p>
2475    #[serde(rename = "type")]
2476    pub type_: String,
2477    /// <p><p>Specifies Uniform Resource Identifier (URI) of the integration endpoint.</p> <ul> <li><p> For <code>HTTP</code> or <code>HTTP<em>PROXY</code> integrations, the URI must be a fully formed, encoded HTTP(S) URL according to the &lt;a target=&quot;</em>blank&quot; href=&quot;https://en.wikipedia.org/wiki/Uniform<em>Resource</em>Identifier&quot;&gt;RFC-3986 specification</a>, for either standard integration, where <code>connectionType</code> is not <code>VPC<em>LINK</code>, or private integration, where <code>connectionType</code> is <code>VPC</em>LINK</code>. For a private HTTP integration, the URI is not used for routing. </p> </li> <li><p> For <code>AWS</code> or <code>AWS<em>PROXY</code> integrations, the URI is of the form <code>arn:aws:apigateway:{region}:{subdomain.service|service}:path|action/{service</em>api}</code>. Here, <code>{Region}</code> is the API Gateway region (e.g., <code>us-east-1</code>); <code>{service}</code> is the name of the integrated AWS service (e.g., <code>s3</code>); and <code>{subdomain}</code> is a designated subdomain supported by certain AWS service for fast host-name lookup. <code>action</code> can be used for an AWS service action-based API, using an <code>Action={name}&amp;{p1}={v1}&amp;p2={v2}...</code> query string. The ensuing <code>{service<em>api}</code> refers to a supported action <code>{name}</code> plus any required input parameters. Alternatively, <code>path</code> can be used for an AWS service path-based API. The ensuing <code>service</em>api</code> refers to the path to an AWS service resource, including the region of the integrated AWS service, if applicable. For example, for integration with the S3 API of <code><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html">GetObject</a></code>, the <code>uri</code> can be either <code>arn:aws:apigateway:us-west-2:s3:action/GetObject&amp;Bucket={bucket}&amp;Key={key}</code> or <code>arn:aws:apigateway:us-west-2:s3:path/{bucket}/{key}</code></p> </li></ul></p>
2478    #[serde(rename = "uri")]
2479    #[serde(skip_serializing_if = "Option::is_none")]
2480    pub uri: Option<String>,
2481}
2482
2483/// <p>Represents a put integration response request.</p>
2484#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2485#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2486pub struct PutIntegrationResponseRequest {
2487    /// <p>Specifies how to handle response payload content type conversions. Supported values are <code>CONVERT_TO_BINARY</code> and <code>CONVERT_TO_TEXT</code>, with the following behaviors:</p> <ul> <li><p><code>CONVERT_TO_BINARY</code>: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p></li> <li><p><code>CONVERT_TO_TEXT</code>: Converts a response payload from a binary blob to a Base64-encoded string.</p></li> </ul> <p>If this property is not defined, the response payload will be passed through from the integration response to the method response without modification.</p>
2488    #[serde(rename = "contentHandling")]
2489    #[serde(skip_serializing_if = "Option::is_none")]
2490    pub content_handling: Option<String>,
2491    /// <p>[Required] Specifies a put integration response request's HTTP method.</p>
2492    #[serde(rename = "httpMethod")]
2493    pub http_method: String,
2494    /// <p>[Required] Specifies a put integration response request's resource identifier.</p>
2495    #[serde(rename = "resourceId")]
2496    pub resource_id: String,
2497    /// <p>A key-value map specifying response parameters that are passed to the method response from the back end. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of <code>method.response.header.{name}</code>, where <code>name</code> is a valid and unique header name. The mapped non-static value must match the pattern of <code>integration.response.header.{name}</code> or <code>integration.response.body.{JSON-expression}</code>, where <code>name</code> must be a valid and unique response header name and <code>JSON-expression</code> a valid JSON expression without the <code>$</code> prefix.</p>
2498    #[serde(rename = "responseParameters")]
2499    #[serde(skip_serializing_if = "Option::is_none")]
2500    pub response_parameters: Option<::std::collections::HashMap<String, String>>,
2501    /// <p>Specifies a put integration response's templates.</p>
2502    #[serde(rename = "responseTemplates")]
2503    #[serde(skip_serializing_if = "Option::is_none")]
2504    pub response_templates: Option<::std::collections::HashMap<String, String>>,
2505    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
2506    #[serde(rename = "restApiId")]
2507    pub rest_api_id: String,
2508    /// <p>Specifies the selection pattern of a put integration response.</p>
2509    #[serde(rename = "selectionPattern")]
2510    #[serde(skip_serializing_if = "Option::is_none")]
2511    pub selection_pattern: Option<String>,
2512    /// <p>[Required] Specifies the status code that is used to map the integration response to an existing <a>MethodResponse</a>.</p>
2513    #[serde(rename = "statusCode")]
2514    pub status_code: String,
2515}
2516
2517/// <p>Request to add a method to an existing <a>Resource</a> resource.</p>
2518#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2519#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2520pub struct PutMethodRequest {
2521    /// <p>Specifies whether the method required a valid <a>ApiKey</a>.</p>
2522    #[serde(rename = "apiKeyRequired")]
2523    #[serde(skip_serializing_if = "Option::is_none")]
2524    pub api_key_required: Option<bool>,
2525    /// <p>A list of authorization scopes configured on the method. The scopes are used with a <code>COGNITO_USER_POOLS</code> authorizer to authorize the method invocation. The authorization works by matching the method scopes against the scopes parsed from the access token in the incoming request. The method invocation is authorized if any method scopes matches a claimed scope in the access token. Otherwise, the invocation is not authorized. When the method scope is configured, the client must provide an access token instead of an identity token for authorization purposes.</p>
2526    #[serde(rename = "authorizationScopes")]
2527    #[serde(skip_serializing_if = "Option::is_none")]
2528    pub authorization_scopes: Option<Vec<String>>,
2529    /// <p>[Required] The method's authorization type. Valid values are <code>NONE</code> for open access, <code>AWS_IAM</code> for using AWS IAM permissions, <code>CUSTOM</code> for using a custom authorizer, or <code>COGNITO_USER_POOLS</code> for using a Cognito user pool.</p>
2530    #[serde(rename = "authorizationType")]
2531    pub authorization_type: String,
2532    /// <p>Specifies the identifier of an <a>Authorizer</a> to use on this Method, if the type is CUSTOM or COGNITO_USER_POOLS. The authorizer identifier is generated by API Gateway when you created the authorizer.</p>
2533    #[serde(rename = "authorizerId")]
2534    #[serde(skip_serializing_if = "Option::is_none")]
2535    pub authorizer_id: Option<String>,
2536    /// <p>[Required] Specifies the method request's HTTP method type.</p>
2537    #[serde(rename = "httpMethod")]
2538    pub http_method: String,
2539    /// <p>A human-friendly operation identifier for the method. For example, you can assign the <code>operationName</code> of <code>ListPets</code> for the <code>GET /pets</code> method in the <code>PetStore</code> example.</p>
2540    #[serde(rename = "operationName")]
2541    #[serde(skip_serializing_if = "Option::is_none")]
2542    pub operation_name: Option<String>,
2543    /// <p>Specifies the <a>Model</a> resources used for the request's content type. Request models are represented as a key/value map, with a content type as the key and a <a>Model</a> name as the value.</p>
2544    #[serde(rename = "requestModels")]
2545    #[serde(skip_serializing_if = "Option::is_none")]
2546    pub request_models: Option<::std::collections::HashMap<String, String>>,
2547    /// <p>A key-value map defining required or optional method request parameters that can be accepted by API Gateway. A key defines a method request parameter name matching the pattern of <code>method.request.{location}.{name}</code>, where <code>location</code> is <code>querystring</code>, <code>path</code>, or <code>header</code> and <code>name</code> is a valid and unique parameter name. The value associated with the key is a Boolean flag indicating whether the parameter is required (<code>true</code>) or optional (<code>false</code>). The method request parameter names defined here are available in <a>Integration</a> to be mapped to integration request parameters or body-mapping templates.</p>
2548    #[serde(rename = "requestParameters")]
2549    #[serde(skip_serializing_if = "Option::is_none")]
2550    pub request_parameters: Option<::std::collections::HashMap<String, bool>>,
2551    /// <p>The identifier of a <a>RequestValidator</a> for validating the method request.</p>
2552    #[serde(rename = "requestValidatorId")]
2553    #[serde(skip_serializing_if = "Option::is_none")]
2554    pub request_validator_id: Option<String>,
2555    /// <p>[Required] The <a>Resource</a> identifier for the new <a>Method</a> resource.</p>
2556    #[serde(rename = "resourceId")]
2557    pub resource_id: String,
2558    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
2559    #[serde(rename = "restApiId")]
2560    pub rest_api_id: String,
2561}
2562
2563/// <p>Request to add a <a>MethodResponse</a> to an existing <a>Method</a> resource.</p>
2564#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2565#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2566pub struct PutMethodResponseRequest {
2567    /// <p>[Required] The HTTP verb of the <a>Method</a> resource.</p>
2568    #[serde(rename = "httpMethod")]
2569    pub http_method: String,
2570    /// <p>[Required] The <a>Resource</a> identifier for the <a>Method</a> resource.</p>
2571    #[serde(rename = "resourceId")]
2572    pub resource_id: String,
2573    /// <p>Specifies the <a>Model</a> resources used for the response's content type. Response models are represented as a key/value map, with a content type as the key and a <a>Model</a> name as the value.</p>
2574    #[serde(rename = "responseModels")]
2575    #[serde(skip_serializing_if = "Option::is_none")]
2576    pub response_models: Option<::std::collections::HashMap<String, String>>,
2577    /// <p>A key-value map specifying required or optional response parameters that API Gateway can send back to the caller. A key defines a method response header name and the associated value is a Boolean flag indicating whether the method response parameter is required or not. The method response header names must match the pattern of <code>method.response.header.{name}</code>, where <code>name</code> is a valid and unique header name. The response parameter names defined here are available in the integration response to be mapped from an integration response header expressed in <code>integration.response.header.{name}</code>, a static value enclosed within a pair of single quotes (e.g., <code>'application/json'</code>), or a JSON expression from the back-end response payload in the form of <code>integration.response.body.{JSON-expression}</code>, where <code>JSON-expression</code> is a valid JSON expression without the <code>$</code> prefix.)</p>
2578    #[serde(rename = "responseParameters")]
2579    #[serde(skip_serializing_if = "Option::is_none")]
2580    pub response_parameters: Option<::std::collections::HashMap<String, bool>>,
2581    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
2582    #[serde(rename = "restApiId")]
2583    pub rest_api_id: String,
2584    /// <p>[Required] The method response's status code.</p>
2585    #[serde(rename = "statusCode")]
2586    pub status_code: String,
2587}
2588
2589/// <p>A PUT request to update an existing API, with external API definitions specified as the request body.</p>
2590#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2591#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2592pub struct PutRestApiRequest {
2593    /// <p>[Required] The PUT request body containing external API definitions. Currently, only OpenAPI definition JSON/YAML files are supported. The maximum size of the API definition file is 6MB.</p>
2594    #[serde(rename = "body")]
2595    #[serde(
2596        deserialize_with = "::rusoto_core::serialization::SerdeBlob::deserialize_blob",
2597        serialize_with = "::rusoto_core::serialization::SerdeBlob::serialize_blob",
2598        default
2599    )]
2600    pub body: bytes::Bytes,
2601    /// <p>A query parameter to indicate whether to rollback the API update (<code>true</code>) or not (<code>false</code>) when a warning is encountered. The default value is <code>false</code>.</p>
2602    #[serde(rename = "failOnWarnings")]
2603    #[serde(skip_serializing_if = "Option::is_none")]
2604    pub fail_on_warnings: Option<bool>,
2605    /// <p>The <code>mode</code> query parameter to specify the update mode. Valid values are "merge" and "overwrite". By default, the update mode is "merge".</p>
2606    #[serde(rename = "mode")]
2607    #[serde(skip_serializing_if = "Option::is_none")]
2608    pub mode: Option<String>,
2609    /// <p>Custom header parameters as part of the request. For example, to exclude <a>DocumentationParts</a> from an imported API, set <code>ignore=documentation</code> as a <code>parameters</code> value, as in the AWS CLI command of <code>aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json'</code>.</p>
2610    #[serde(rename = "parameters")]
2611    #[serde(skip_serializing_if = "Option::is_none")]
2612    pub parameters: Option<::std::collections::HashMap<String, String>>,
2613    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
2614    #[serde(rename = "restApiId")]
2615    pub rest_api_id: String,
2616}
2617
2618/// <p>Quotas configured for a usage plan.</p>
2619#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2620pub struct QuotaSettings {
2621    /// <p>The maximum number of requests that can be made in a given time period.</p>
2622    #[serde(rename = "limit")]
2623    #[serde(skip_serializing_if = "Option::is_none")]
2624    pub limit: Option<i64>,
2625    /// <p>The number of requests subtracted from the given limit in the initial time period.</p>
2626    #[serde(rename = "offset")]
2627    #[serde(skip_serializing_if = "Option::is_none")]
2628    pub offset: Option<i64>,
2629    /// <p>The time period in which the limit applies. Valid values are "DAY", "WEEK" or "MONTH".</p>
2630    #[serde(rename = "period")]
2631    #[serde(skip_serializing_if = "Option::is_none")]
2632    pub period: Option<String>,
2633}
2634
2635/// <p><p>A set of validation rules for incoming <a>Method</a> requests.</p> <div class="remarks"> <p>In OpenAPI, a <a>RequestValidator</a> of an API is defined by the <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html#api-gateway-swagger-extensions-request-validators.requestValidator.html">x-amazon-apigateway-request-validators.requestValidator</a> object. It the referenced using the <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html#api-gateway-swagger-extensions-request-validator">x-amazon-apigateway-request-validator</a> property.</p> </div> <div class="seeAlso"><a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html">Enable Basic Request Validation in API Gateway</a></div></p>
2636#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2637#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2638pub struct RequestValidator {
2639    /// <p>The identifier of this <a>RequestValidator</a>.</p>
2640    #[serde(rename = "id")]
2641    #[serde(skip_serializing_if = "Option::is_none")]
2642    pub id: Option<String>,
2643    /// <p>The name of this <a>RequestValidator</a></p>
2644    #[serde(rename = "name")]
2645    #[serde(skip_serializing_if = "Option::is_none")]
2646    pub name: Option<String>,
2647    /// <p>A Boolean flag to indicate whether to validate a request body according to the configured <a>Model</a> schema.</p>
2648    #[serde(rename = "validateRequestBody")]
2649    #[serde(skip_serializing_if = "Option::is_none")]
2650    pub validate_request_body: Option<bool>,
2651    /// <p>A Boolean flag to indicate whether to validate request parameters (<code>true</code>) or not (<code>false</code>).</p>
2652    #[serde(rename = "validateRequestParameters")]
2653    #[serde(skip_serializing_if = "Option::is_none")]
2654    pub validate_request_parameters: Option<bool>,
2655}
2656
2657/// <p><p>A collection of <a>RequestValidator</a> resources of a given <a>RestApi</a>.</p> <div class="remarks"> <p>In OpenAPI, the <a>RequestValidators</a> of an API is defined by the <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html#api-gateway-swagger-extensions-request-validators.html">x-amazon-apigateway-request-validators</a> extension.</p> </div> <div class="seeAlso"><a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html">Enable Basic Request Validation in API Gateway</a></div></p>
2658#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2659#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2660pub struct RequestValidators {
2661    /// <p>The current page of elements from this collection.</p>
2662    #[serde(rename = "items")]
2663    #[serde(skip_serializing_if = "Option::is_none")]
2664    pub items: Option<Vec<RequestValidator>>,
2665    #[serde(rename = "position")]
2666    #[serde(skip_serializing_if = "Option::is_none")]
2667    pub position: Option<String>,
2668}
2669
2670/// <p><p>Represents an API resource.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html">Create an API</a> </div></p>
2671#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2672#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2673pub struct Resource {
2674    /// <p>The resource's identifier.</p>
2675    #[serde(rename = "id")]
2676    #[serde(skip_serializing_if = "Option::is_none")]
2677    pub id: Option<String>,
2678    /// <p>The parent resource's identifier.</p>
2679    #[serde(rename = "parentId")]
2680    #[serde(skip_serializing_if = "Option::is_none")]
2681    pub parent_id: Option<String>,
2682    /// <p>The full path for this resource.</p>
2683    #[serde(rename = "path")]
2684    #[serde(skip_serializing_if = "Option::is_none")]
2685    pub path: Option<String>,
2686    /// <p>The last path segment for this resource.</p>
2687    #[serde(rename = "pathPart")]
2688    #[serde(skip_serializing_if = "Option::is_none")]
2689    pub path_part: Option<String>,
2690    /// <p><p>Gets an API resource&#39;s method of a given HTTP verb.</p> <div class="remarks"> <p>The resource methods are a map of methods indexed by methods&#39; HTTP verbs enabled on the resource. This method map is included in the <code>200 OK</code> response of the <code>GET /restapis/{restapi<em>id}/resources/{resource</em>id}</code> or <code>GET /restapis/{restapi<em>id}/resources/{resource</em>id}?embed=methods</code> request.</p> <h4>Example: Get the GET method of an API resource</h4> <h5>Request</h5> <pre><code>GET /restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20170223T031827Z Authorization: AWS4-HMAC-SHA256 Credential={access<em>key</em>ID}/20170223/us-east-1/apigateway/aws4<em>request, SignedHeaders=content-type;host;x-amz-date, Signature={sig4</em>hash}</code></pre> <h5>Response</h5> <pre><code>{ &quot;<em>links&quot;: { &quot;curies&quot;: [ { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html&quot;, &quot;name&quot;: &quot;integration&quot;, &quot;templated&quot;: true }, { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html&quot;, &quot;name&quot;: &quot;integrationresponse&quot;, &quot;templated&quot;: true }, { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-{rel}.html&quot;, &quot;name&quot;: &quot;method&quot;, &quot;templated&quot;: true }, { &quot;href&quot;: &quot;https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html&quot;, &quot;name&quot;: &quot;methodresponse&quot;, &quot;templated&quot;: true } ], &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET&quot;, &quot;name&quot;: &quot;GET&quot;, &quot;title&quot;: &quot;GET&quot; }, &quot;integration:put&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration&quot; }, &quot;method:delete&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET&quot; }, &quot;method:integration&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration&quot; }, &quot;method:responses&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200&quot;, &quot;name&quot;: &quot;200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;method:update&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET&quot; }, &quot;methodresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/{status</em>code}&quot;, &quot;templated&quot;: true } }, &quot;apiKeyRequired&quot;: false, &quot;authorizationType&quot;: &quot;NONE&quot;, &quot;httpMethod&quot;: &quot;GET&quot;, &quot;<em>embedded&quot;: { &quot;method:integration&quot;: { &quot;</em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration&quot; }, &quot;integration:delete&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration&quot; }, &quot;integration:responses&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200&quot;, &quot;name&quot;: &quot;200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;integration:update&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration&quot; }, &quot;integrationresponse:put&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/{status<em>code}&quot;, &quot;templated&quot;: true } }, &quot;cacheKeyParameters&quot;: [], &quot;cacheNamespace&quot;: &quot;3kzxbg5sa2&quot;, &quot;credentials&quot;: &quot;arn:aws:iam::123456789012:role/apigAwsProxyRole&quot;, &quot;httpMethod&quot;: &quot;POST&quot;, &quot;passthroughBehavior&quot;: &quot;WHEN</em>NO<em>MATCH&quot;, &quot;requestParameters&quot;: { &quot;integration.request.header.Content-Type&quot;: &quot;&#39;application/x-amz-json-1.1&#39;&quot; }, &quot;requestTemplates&quot;: { &quot;application/json&quot;: &quot;{\n}&quot; }, &quot;type&quot;: &quot;AWS&quot;, &quot;uri&quot;: &quot;arn:aws:apigateway:us-east-1:kinesis:action/ListStreams&quot;, &quot;</em>embedded&quot;: { &quot;integration:responses&quot;: { &quot;<em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200&quot;, &quot;name&quot;: &quot;200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;integrationresponse:delete&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200&quot; }, &quot;integrationresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200&quot; } }, &quot;responseParameters&quot;: { &quot;method.response.header.Content-Type&quot;: &quot;&#39;application/xml&#39;&quot; }, &quot;responseTemplates&quot;: { &quot;application/json&quot;: &quot;$util.urlDecode(&quot;%3CkinesisStreams%3E#foreach($stream in $input.path(&#39;$.StreamNames&#39;))%3Cstream%3E%3Cname%3E$stream%3C/name%3E%3C/stream%3E#end%3C/kinesisStreams%3E&quot;)\n&quot; }, &quot;statusCode&quot;: &quot;200&quot; } } }, &quot;method:responses&quot;: { &quot;</em>links&quot;: { &quot;self&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200&quot;, &quot;name&quot;: &quot;200&quot;, &quot;title&quot;: &quot;200&quot; }, &quot;methodresponse:delete&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200&quot; }, &quot;methodresponse:update&quot;: { &quot;href&quot;: &quot;/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200&quot; } }, &quot;responseModels&quot;: { &quot;application/json&quot;: &quot;Empty&quot; }, &quot;responseParameters&quot;: { &quot;method.response.header.Content-Type&quot;: false }, &quot;statusCode&quot;: &quot;200&quot; } } }</code></pre> <p>If the <code>OPTIONS</code> is enabled on the resource, you can follow the example here to get that method. Just replace the <code>GET</code> of the last path segment in the request URL with <code>OPTIONS</code>.</p> </div> <div class="seeAlso"> </div></p>
2691    #[serde(rename = "resourceMethods")]
2692    #[serde(skip_serializing_if = "Option::is_none")]
2693    pub resource_methods: Option<::std::collections::HashMap<String, Method>>,
2694}
2695
2696/// <p><p>Represents a collection of <a>Resource</a> resources.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html">Create an API</a> </div></p>
2697#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2698#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2699pub struct Resources {
2700    /// <p>The current page of elements from this collection.</p>
2701    #[serde(rename = "items")]
2702    #[serde(skip_serializing_if = "Option::is_none")]
2703    pub items: Option<Vec<Resource>>,
2704    #[serde(rename = "position")]
2705    #[serde(skip_serializing_if = "Option::is_none")]
2706    pub position: Option<String>,
2707}
2708
2709/// <p><p>Represents a REST API.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html">Create an API</a> </div></p>
2710#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2711#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2712pub struct RestApi {
2713    /// <p>The source of the API key for metering requests according to a usage plan. Valid values are: <ul><li><code>HEADER</code> to read the API key from the <code>X-API-Key</code> header of a request. </li><li><code>AUTHORIZER</code> to read the API key from the <code>UsageIdentifierKey</code> from a custom authorizer.</li></ul> </p>
2714    #[serde(rename = "apiKeySource")]
2715    #[serde(skip_serializing_if = "Option::is_none")]
2716    pub api_key_source: Option<String>,
2717    /// <p>The list of binary media types supported by the <a>RestApi</a>. By default, the <a>RestApi</a> supports only UTF-8-encoded text payloads.</p>
2718    #[serde(rename = "binaryMediaTypes")]
2719    #[serde(skip_serializing_if = "Option::is_none")]
2720    pub binary_media_types: Option<Vec<String>>,
2721    /// <p>The timestamp when the API was created.</p>
2722    #[serde(rename = "createdDate")]
2723    #[serde(skip_serializing_if = "Option::is_none")]
2724    pub created_date: Option<f64>,
2725    /// <p>The API's description.</p>
2726    #[serde(rename = "description")]
2727    #[serde(skip_serializing_if = "Option::is_none")]
2728    pub description: Option<String>,
2729    /// <p>The endpoint configuration of this <a>RestApi</a> showing the endpoint types of the API. </p>
2730    #[serde(rename = "endpointConfiguration")]
2731    #[serde(skip_serializing_if = "Option::is_none")]
2732    pub endpoint_configuration: Option<EndpointConfiguration>,
2733    /// <p>The API's identifier. This identifier is unique across all of your APIs in API Gateway.</p>
2734    #[serde(rename = "id")]
2735    #[serde(skip_serializing_if = "Option::is_none")]
2736    pub id: Option<String>,
2737    /// <p>A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.</p>
2738    #[serde(rename = "minimumCompressionSize")]
2739    #[serde(skip_serializing_if = "Option::is_none")]
2740    pub minimum_compression_size: Option<i64>,
2741    /// <p>The API's name.</p>
2742    #[serde(rename = "name")]
2743    #[serde(skip_serializing_if = "Option::is_none")]
2744    pub name: Option<String>,
2745    /// <p>A stringified JSON policy document that applies to this RestApi regardless of the caller and <a>Method</a> configuration.</p>
2746    #[serde(rename = "policy")]
2747    #[serde(skip_serializing_if = "Option::is_none")]
2748    pub policy: Option<String>,
2749    /// <p>The collection of tags. Each tag element is associated with a given resource.</p>
2750    #[serde(rename = "tags")]
2751    #[serde(skip_serializing_if = "Option::is_none")]
2752    pub tags: Option<::std::collections::HashMap<String, String>>,
2753    /// <p>A version identifier for the API.</p>
2754    #[serde(rename = "version")]
2755    #[serde(skip_serializing_if = "Option::is_none")]
2756    pub version: Option<String>,
2757    /// <p>The warning messages reported when <code>failonwarnings</code> is turned on during API import.</p>
2758    #[serde(rename = "warnings")]
2759    #[serde(skip_serializing_if = "Option::is_none")]
2760    pub warnings: Option<Vec<String>>,
2761}
2762
2763/// <p><p>Contains references to your APIs and links that guide you in how to interact with your collection. A collection offers a paginated view of your APIs.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html">Create an API</a> </div></p>
2764#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2765#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2766pub struct RestApis {
2767    /// <p>The current page of elements from this collection.</p>
2768    #[serde(rename = "items")]
2769    #[serde(skip_serializing_if = "Option::is_none")]
2770    pub items: Option<Vec<RestApi>>,
2771    #[serde(rename = "position")]
2772    #[serde(skip_serializing_if = "Option::is_none")]
2773    pub position: Option<String>,
2774}
2775
2776/// <p>A configuration property of an SDK type.</p>
2777#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2778#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2779pub struct SdkConfigurationProperty {
2780    /// <p>The default value of an <a>SdkType</a> configuration property.</p>
2781    #[serde(rename = "defaultValue")]
2782    #[serde(skip_serializing_if = "Option::is_none")]
2783    pub default_value: Option<String>,
2784    /// <p>The description of an <a>SdkType</a> configuration property.</p>
2785    #[serde(rename = "description")]
2786    #[serde(skip_serializing_if = "Option::is_none")]
2787    pub description: Option<String>,
2788    /// <p>The user-friendly name of an <a>SdkType</a> configuration property.</p>
2789    #[serde(rename = "friendlyName")]
2790    #[serde(skip_serializing_if = "Option::is_none")]
2791    pub friendly_name: Option<String>,
2792    /// <p>The name of a an <a>SdkType</a> configuration property.</p>
2793    #[serde(rename = "name")]
2794    #[serde(skip_serializing_if = "Option::is_none")]
2795    pub name: Option<String>,
2796    /// <p>A boolean flag of an <a>SdkType</a> configuration property to indicate if the associated SDK configuration property is required (<code>true</code>) or not (<code>false</code>).</p>
2797    #[serde(rename = "required")]
2798    #[serde(skip_serializing_if = "Option::is_none")]
2799    pub required: Option<bool>,
2800}
2801
2802/// <p>The binary blob response to <a>GetSdk</a>, which contains the generated SDK.</p>
2803#[derive(Clone, Debug, Default, PartialEq)]
2804pub struct SdkResponse {
2805    /// <p>The binary blob response to <a>GetSdk</a>, which contains the generated SDK.</p>
2806    pub body: Option<bytes::Bytes>,
2807    /// <p>The content-disposition header value in the HTTP response.</p>
2808    pub content_disposition: Option<String>,
2809    /// <p>The content-type header value in the HTTP response.</p>
2810    pub content_type: Option<String>,
2811}
2812
2813/// <p>A type of SDK that API Gateway can generate.</p>
2814#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2815#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2816pub struct SdkType {
2817    /// <p>A list of configuration properties of an <a>SdkType</a>.</p>
2818    #[serde(rename = "configurationProperties")]
2819    #[serde(skip_serializing_if = "Option::is_none")]
2820    pub configuration_properties: Option<Vec<SdkConfigurationProperty>>,
2821    /// <p>The description of an <a>SdkType</a>.</p>
2822    #[serde(rename = "description")]
2823    #[serde(skip_serializing_if = "Option::is_none")]
2824    pub description: Option<String>,
2825    /// <p>The user-friendly name of an <a>SdkType</a> instance.</p>
2826    #[serde(rename = "friendlyName")]
2827    #[serde(skip_serializing_if = "Option::is_none")]
2828    pub friendly_name: Option<String>,
2829    /// <p>The identifier of an <a>SdkType</a> instance.</p>
2830    #[serde(rename = "id")]
2831    #[serde(skip_serializing_if = "Option::is_none")]
2832    pub id: Option<String>,
2833}
2834
2835/// <p>The collection of <a>SdkType</a> instances.</p>
2836#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2837#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2838pub struct SdkTypes {
2839    /// <p>The current page of elements from this collection.</p>
2840    #[serde(rename = "items")]
2841    #[serde(skip_serializing_if = "Option::is_none")]
2842    pub items: Option<Vec<SdkType>>,
2843    #[serde(rename = "position")]
2844    #[serde(skip_serializing_if = "Option::is_none")]
2845    pub position: Option<String>,
2846}
2847
2848/// <p><p>Represents a unique identifier for a version of a deployed <a>RestApi</a> that is callable by users.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-deploy-api.html">Deploy an API</a> </div></p>
2849#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2850#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2851pub struct Stage {
2852    /// <p>Settings for logging access in this stage.</p>
2853    #[serde(rename = "accessLogSettings")]
2854    #[serde(skip_serializing_if = "Option::is_none")]
2855    pub access_log_settings: Option<AccessLogSettings>,
2856    /// <p>Specifies whether a cache cluster is enabled for the stage.</p>
2857    #[serde(rename = "cacheClusterEnabled")]
2858    #[serde(skip_serializing_if = "Option::is_none")]
2859    pub cache_cluster_enabled: Option<bool>,
2860    /// <p>The size of the cache cluster for the stage, if enabled.</p>
2861    #[serde(rename = "cacheClusterSize")]
2862    #[serde(skip_serializing_if = "Option::is_none")]
2863    pub cache_cluster_size: Option<String>,
2864    /// <p>The status of the cache cluster for the stage, if enabled.</p>
2865    #[serde(rename = "cacheClusterStatus")]
2866    #[serde(skip_serializing_if = "Option::is_none")]
2867    pub cache_cluster_status: Option<String>,
2868    /// <p>Settings for the canary deployment in this stage.</p>
2869    #[serde(rename = "canarySettings")]
2870    #[serde(skip_serializing_if = "Option::is_none")]
2871    pub canary_settings: Option<CanarySettings>,
2872    /// <p>The identifier of a client certificate for an API stage.</p>
2873    #[serde(rename = "clientCertificateId")]
2874    #[serde(skip_serializing_if = "Option::is_none")]
2875    pub client_certificate_id: Option<String>,
2876    /// <p>The timestamp when the stage was created.</p>
2877    #[serde(rename = "createdDate")]
2878    #[serde(skip_serializing_if = "Option::is_none")]
2879    pub created_date: Option<f64>,
2880    /// <p>The identifier of the <a>Deployment</a> that the stage points to.</p>
2881    #[serde(rename = "deploymentId")]
2882    #[serde(skip_serializing_if = "Option::is_none")]
2883    pub deployment_id: Option<String>,
2884    /// <p>The stage's description.</p>
2885    #[serde(rename = "description")]
2886    #[serde(skip_serializing_if = "Option::is_none")]
2887    pub description: Option<String>,
2888    /// <p>The version of the associated API documentation.</p>
2889    #[serde(rename = "documentationVersion")]
2890    #[serde(skip_serializing_if = "Option::is_none")]
2891    pub documentation_version: Option<String>,
2892    /// <p>The timestamp when the stage last updated.</p>
2893    #[serde(rename = "lastUpdatedDate")]
2894    #[serde(skip_serializing_if = "Option::is_none")]
2895    pub last_updated_date: Option<f64>,
2896    /// <p>A map that defines the method settings for a <a>Stage</a> resource. Keys (designated as <code>/{method_setting_key</code> below) are method paths defined as <code>{resource_path}/{http_method}</code> for an individual method override, or <code>/\*/\*</code> for overriding all methods in the stage. </p>
2897    #[serde(rename = "methodSettings")]
2898    #[serde(skip_serializing_if = "Option::is_none")]
2899    pub method_settings: Option<::std::collections::HashMap<String, MethodSetting>>,
2900    /// <p>The name of the stage is the first path segment in the Uniform Resource Identifier (URI) of a call to API Gateway. Stage names can only contain alphanumeric characters, hyphens, and underscores. Maximum length is 128 characters.</p>
2901    #[serde(rename = "stageName")]
2902    #[serde(skip_serializing_if = "Option::is_none")]
2903    pub stage_name: Option<String>,
2904    /// <p>The collection of tags. Each tag element is associated with a given resource.</p>
2905    #[serde(rename = "tags")]
2906    #[serde(skip_serializing_if = "Option::is_none")]
2907    pub tags: Option<::std::collections::HashMap<String, String>>,
2908    /// <p>Specifies whether active tracing with X-ray is enabled for the <a>Stage</a>.</p>
2909    #[serde(rename = "tracingEnabled")]
2910    #[serde(skip_serializing_if = "Option::is_none")]
2911    pub tracing_enabled: Option<bool>,
2912    /// <p>A map that defines the stage variables for a <a>Stage</a> resource. Variable names can have alphanumeric and underscore characters, and the values must match <code>[A-Za-z0-9-._~:/?#&amp;=,]+</code>.</p>
2913    #[serde(rename = "variables")]
2914    #[serde(skip_serializing_if = "Option::is_none")]
2915    pub variables: Option<::std::collections::HashMap<String, String>>,
2916    /// <p>The ARN of the WebAcl associated with the <a>Stage</a>.</p>
2917    #[serde(rename = "webAclArn")]
2918    #[serde(skip_serializing_if = "Option::is_none")]
2919    pub web_acl_arn: Option<String>,
2920}
2921
2922/// <p>A reference to a unique stage identified in the format <code>{restApiId}/{stage}</code>.</p>
2923#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2924#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2925pub struct StageKey {
2926    /// <p>The string identifier of the associated <a>RestApi</a>.</p>
2927    #[serde(rename = "restApiId")]
2928    #[serde(skip_serializing_if = "Option::is_none")]
2929    pub rest_api_id: Option<String>,
2930    /// <p>The stage name associated with the stage key.</p>
2931    #[serde(rename = "stageName")]
2932    #[serde(skip_serializing_if = "Option::is_none")]
2933    pub stage_name: Option<String>,
2934}
2935
2936/// <p><p>A list of <a>Stage</a> resources that are associated with the <a>ApiKey</a> resource.</p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/stages.html">Deploying API in Stages</a></div></p>
2937#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2938#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2939pub struct Stages {
2940    /// <p>The current page of elements from this collection.</p>
2941    #[serde(rename = "item")]
2942    #[serde(skip_serializing_if = "Option::is_none")]
2943    pub item: Option<Vec<Stage>>,
2944}
2945
2946/// <p>Adds or updates a tag on a given resource.</p>
2947#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2948#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2949pub struct TagResourceRequest {
2950    /// <p>[Required] The ARN of a resource that can be tagged.</p>
2951    #[serde(rename = "resourceArn")]
2952    pub resource_arn: String,
2953    /// <p>[Required] The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with <code>aws:</code>. The tag value can be up to 256 characters.</p>
2954    #[serde(rename = "tags")]
2955    pub tags: ::std::collections::HashMap<String, String>,
2956}
2957
2958/// <p>The collection of tags. Each tag element is associated with a given resource.</p>
2959#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2960#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2961pub struct Tags {
2962    /// <p>The collection of tags. Each tag element is associated with a given resource.</p>
2963    #[serde(rename = "tags")]
2964    #[serde(skip_serializing_if = "Option::is_none")]
2965    pub tags: Option<::std::collections::HashMap<String, String>>,
2966}
2967
2968/// <p><p>Represents a mapping template used to transform a payload.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings.html#models-mappings-mappings">Mapping Templates</a> </div></p>
2969#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2970#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2971pub struct Template {
2972    /// <p>The Apache <a href="https://velocity.apache.org/engine/devel/vtl-reference.html" target="_blank">Velocity Template Language (VTL)</a> template content used for the template resource.</p>
2973    #[serde(rename = "value")]
2974    #[serde(skip_serializing_if = "Option::is_none")]
2975    pub value: Option<String>,
2976}
2977
2978/// <p>Make a request to simulate the execution of an <a>Authorizer</a>.</p>
2979#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2980#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2981pub struct TestInvokeAuthorizerRequest {
2982    /// <p>[Optional] A key-value map of additional context variables.</p>
2983    #[serde(rename = "additionalContext")]
2984    #[serde(skip_serializing_if = "Option::is_none")]
2985    pub additional_context: Option<::std::collections::HashMap<String, String>>,
2986    /// <p>[Required] Specifies a test invoke authorizer request's <a>Authorizer</a> ID.</p>
2987    #[serde(rename = "authorizerId")]
2988    pub authorizer_id: String,
2989    /// <p>[Optional] The simulated request body of an incoming invocation request.</p>
2990    #[serde(rename = "body")]
2991    #[serde(skip_serializing_if = "Option::is_none")]
2992    pub body: Option<String>,
2993    /// <p>[Required] A key-value map of headers to simulate an incoming invocation request. This is where the incoming authorization token, or identity source, should be specified.</p>
2994    #[serde(rename = "headers")]
2995    #[serde(skip_serializing_if = "Option::is_none")]
2996    pub headers: Option<::std::collections::HashMap<String, String>>,
2997    /// <p>[Optional] The headers as a map from string to list of values to simulate an incoming invocation request. This is where the incoming authorization token, or identity source, may be specified.</p>
2998    #[serde(rename = "multiValueHeaders")]
2999    #[serde(skip_serializing_if = "Option::is_none")]
3000    pub multi_value_headers: Option<::std::collections::HashMap<String, Vec<String>>>,
3001    /// <p>[Optional] The URI path, including query string, of the simulated invocation request. Use this to specify path parameters and query string parameters.</p>
3002    #[serde(rename = "pathWithQueryString")]
3003    #[serde(skip_serializing_if = "Option::is_none")]
3004    pub path_with_query_string: Option<String>,
3005    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3006    #[serde(rename = "restApiId")]
3007    pub rest_api_id: String,
3008    /// <p>A key-value map of stage variables to simulate an invocation on a deployed <a>Stage</a>.</p>
3009    #[serde(rename = "stageVariables")]
3010    #[serde(skip_serializing_if = "Option::is_none")]
3011    pub stage_variables: Option<::std::collections::HashMap<String, String>>,
3012}
3013
3014/// <p>Represents the response of the test invoke request for a custom <a>Authorizer</a></p>
3015#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3016#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3017pub struct TestInvokeAuthorizerResponse {
3018    #[serde(rename = "authorization")]
3019    #[serde(skip_serializing_if = "Option::is_none")]
3020    pub authorization: Option<::std::collections::HashMap<String, Vec<String>>>,
3021    /// <p>The <a href="https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims">open identity claims</a>, with any supported custom attributes, returned from the Cognito Your User Pool configured for the API.</p>
3022    #[serde(rename = "claims")]
3023    #[serde(skip_serializing_if = "Option::is_none")]
3024    pub claims: Option<::std::collections::HashMap<String, String>>,
3025    /// <p>The HTTP status code that the client would have received. Value is 0 if the authorizer succeeded.</p>
3026    #[serde(rename = "clientStatus")]
3027    #[serde(skip_serializing_if = "Option::is_none")]
3028    pub client_status: Option<i64>,
3029    /// <p>The execution latency of the test authorizer request.</p>
3030    #[serde(rename = "latency")]
3031    #[serde(skip_serializing_if = "Option::is_none")]
3032    pub latency: Option<i64>,
3033    /// <p>The API Gateway execution log for the test authorizer request.</p>
3034    #[serde(rename = "log")]
3035    #[serde(skip_serializing_if = "Option::is_none")]
3036    pub log: Option<String>,
3037    /// <p>The JSON policy document returned by the <a>Authorizer</a></p>
3038    #[serde(rename = "policy")]
3039    #[serde(skip_serializing_if = "Option::is_none")]
3040    pub policy: Option<String>,
3041    /// <p>The principal identity returned by the <a>Authorizer</a></p>
3042    #[serde(rename = "principalId")]
3043    #[serde(skip_serializing_if = "Option::is_none")]
3044    pub principal_id: Option<String>,
3045}
3046
3047/// <p>Make a request to simulate the execution of a <a>Method</a>.</p>
3048#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3049#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3050pub struct TestInvokeMethodRequest {
3051    /// <p>The simulated request body of an incoming invocation request.</p>
3052    #[serde(rename = "body")]
3053    #[serde(skip_serializing_if = "Option::is_none")]
3054    pub body: Option<String>,
3055    /// <p>A <a>ClientCertificate</a> identifier to use in the test invocation. API Gateway will use the certificate when making the HTTPS request to the defined back-end endpoint.</p>
3056    #[serde(rename = "clientCertificateId")]
3057    #[serde(skip_serializing_if = "Option::is_none")]
3058    pub client_certificate_id: Option<String>,
3059    /// <p>A key-value map of headers to simulate an incoming invocation request.</p>
3060    #[serde(rename = "headers")]
3061    #[serde(skip_serializing_if = "Option::is_none")]
3062    pub headers: Option<::std::collections::HashMap<String, String>>,
3063    /// <p>[Required] Specifies a test invoke method request's HTTP method.</p>
3064    #[serde(rename = "httpMethod")]
3065    pub http_method: String,
3066    /// <p>The headers as a map from string to list of values to simulate an incoming invocation request.</p>
3067    #[serde(rename = "multiValueHeaders")]
3068    #[serde(skip_serializing_if = "Option::is_none")]
3069    pub multi_value_headers: Option<::std::collections::HashMap<String, Vec<String>>>,
3070    /// <p>The URI path, including query string, of the simulated invocation request. Use this to specify path parameters and query string parameters.</p>
3071    #[serde(rename = "pathWithQueryString")]
3072    #[serde(skip_serializing_if = "Option::is_none")]
3073    pub path_with_query_string: Option<String>,
3074    /// <p>[Required] Specifies a test invoke method request's resource ID.</p>
3075    #[serde(rename = "resourceId")]
3076    pub resource_id: String,
3077    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3078    #[serde(rename = "restApiId")]
3079    pub rest_api_id: String,
3080    /// <p>A key-value map of stage variables to simulate an invocation on a deployed <a>Stage</a>.</p>
3081    #[serde(rename = "stageVariables")]
3082    #[serde(skip_serializing_if = "Option::is_none")]
3083    pub stage_variables: Option<::std::collections::HashMap<String, String>>,
3084}
3085
3086/// <p><p>Represents the response of the test invoke request in the HTTP method.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-test-method.html#how-to-test-method-console">Test API using the API Gateway console</a> </div></p>
3087#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3088#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3089pub struct TestInvokeMethodResponse {
3090    /// <p>The body of the HTTP response.</p>
3091    #[serde(rename = "body")]
3092    #[serde(skip_serializing_if = "Option::is_none")]
3093    pub body: Option<String>,
3094    /// <p>The headers of the HTTP response.</p>
3095    #[serde(rename = "headers")]
3096    #[serde(skip_serializing_if = "Option::is_none")]
3097    pub headers: Option<::std::collections::HashMap<String, String>>,
3098    /// <p>The execution latency of the test invoke request.</p>
3099    #[serde(rename = "latency")]
3100    #[serde(skip_serializing_if = "Option::is_none")]
3101    pub latency: Option<i64>,
3102    /// <p>The API Gateway execution log for the test invoke request.</p>
3103    #[serde(rename = "log")]
3104    #[serde(skip_serializing_if = "Option::is_none")]
3105    pub log: Option<String>,
3106    /// <p>The headers of the HTTP response as a map from string to list of values.</p>
3107    #[serde(rename = "multiValueHeaders")]
3108    #[serde(skip_serializing_if = "Option::is_none")]
3109    pub multi_value_headers: Option<::std::collections::HashMap<String, Vec<String>>>,
3110    /// <p>The HTTP status code.</p>
3111    #[serde(rename = "status")]
3112    #[serde(skip_serializing_if = "Option::is_none")]
3113    pub status: Option<i64>,
3114}
3115
3116/// <p> The API request rate limits.</p>
3117#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3118pub struct ThrottleSettings {
3119    /// <p>The API request burst limit, the maximum rate limit over a time ranging from one to a few seconds, depending upon whether the underlying token bucket is at its full capacity.</p>
3120    #[serde(rename = "burstLimit")]
3121    #[serde(skip_serializing_if = "Option::is_none")]
3122    pub burst_limit: Option<i64>,
3123    /// <p>The API request steady-state rate limit.</p>
3124    #[serde(rename = "rateLimit")]
3125    #[serde(skip_serializing_if = "Option::is_none")]
3126    pub rate_limit: Option<f64>,
3127}
3128
3129#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3130pub struct TlsConfig {
3131    /// <p>Specifies whether or not API Gateway skips verification that the certificate for an integration endpoint is issued by a <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-supported-certificate-authorities-for-http-endpoints.html">supported certificate authority</a>. This isn’t recommended, but it enables you to use certificates that are signed by private certificate authorities, or certificates that are self-signed. If enabled, API Gateway still performs basic certificate validation, which includes checking the certificate's expiration date, hostname, and presence of a root certificate authority. Supported only for <code>HTTP</code> and <code>HTTP_PROXY</code> integrations.</p>
3132    #[serde(rename = "insecureSkipVerification")]
3133    #[serde(skip_serializing_if = "Option::is_none")]
3134    pub insecure_skip_verification: Option<bool>,
3135}
3136
3137/// <p>Removes a tag from a given resource.</p>
3138#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3139#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3140pub struct UntagResourceRequest {
3141    /// <p>[Required] The ARN of a resource that can be tagged.</p>
3142    #[serde(rename = "resourceArn")]
3143    pub resource_arn: String,
3144    /// <p>[Required] The Tag keys to delete.</p>
3145    #[serde(rename = "tagKeys")]
3146    pub tag_keys: Vec<String>,
3147}
3148
3149/// <p>Requests API Gateway to change information about the current <a>Account</a> resource.</p>
3150#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3151#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3152pub struct UpdateAccountRequest {
3153    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3154    #[serde(rename = "patchOperations")]
3155    #[serde(skip_serializing_if = "Option::is_none")]
3156    pub patch_operations: Option<Vec<PatchOperation>>,
3157}
3158
3159/// <p>A request to change information about an <a>ApiKey</a> resource.</p>
3160#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3161#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3162pub struct UpdateApiKeyRequest {
3163    /// <p>[Required] The identifier of the <a>ApiKey</a> resource to be updated.</p>
3164    #[serde(rename = "apiKey")]
3165    pub api_key: String,
3166    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3167    #[serde(rename = "patchOperations")]
3168    #[serde(skip_serializing_if = "Option::is_none")]
3169    pub patch_operations: Option<Vec<PatchOperation>>,
3170}
3171
3172/// <p>Request to update an existing <a>Authorizer</a> resource.</p>
3173#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3174#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3175pub struct UpdateAuthorizerRequest {
3176    /// <p>[Required] The identifier of the <a>Authorizer</a> resource.</p>
3177    #[serde(rename = "authorizerId")]
3178    pub authorizer_id: String,
3179    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3180    #[serde(rename = "patchOperations")]
3181    #[serde(skip_serializing_if = "Option::is_none")]
3182    pub patch_operations: Option<Vec<PatchOperation>>,
3183    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3184    #[serde(rename = "restApiId")]
3185    pub rest_api_id: String,
3186}
3187
3188/// <p>A request to change information about the <a>BasePathMapping</a> resource.</p>
3189#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3190#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3191pub struct UpdateBasePathMappingRequest {
3192    /// <p>[Required] The base path of the <a>BasePathMapping</a> resource to change.</p> <p>To specify an empty base path, set this parameter to <code>'(none)'</code>.</p>
3193    #[serde(rename = "basePath")]
3194    pub base_path: String,
3195    /// <p>[Required] The domain name of the <a>BasePathMapping</a> resource to change.</p>
3196    #[serde(rename = "domainName")]
3197    pub domain_name: String,
3198    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3199    #[serde(rename = "patchOperations")]
3200    #[serde(skip_serializing_if = "Option::is_none")]
3201    pub patch_operations: Option<Vec<PatchOperation>>,
3202}
3203
3204/// <p>A request to change information about an <a>ClientCertificate</a> resource.</p>
3205#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3206#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3207pub struct UpdateClientCertificateRequest {
3208    /// <p>[Required] The identifier of the <a>ClientCertificate</a> resource to be updated.</p>
3209    #[serde(rename = "clientCertificateId")]
3210    pub client_certificate_id: String,
3211    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3212    #[serde(rename = "patchOperations")]
3213    #[serde(skip_serializing_if = "Option::is_none")]
3214    pub patch_operations: Option<Vec<PatchOperation>>,
3215}
3216
3217/// <p>Requests API Gateway to change information about a <a>Deployment</a> resource.</p>
3218#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3219#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3220pub struct UpdateDeploymentRequest {
3221    /// <p>The replacement identifier for the <a>Deployment</a> resource to change information about.</p>
3222    #[serde(rename = "deploymentId")]
3223    pub deployment_id: String,
3224    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3225    #[serde(rename = "patchOperations")]
3226    #[serde(skip_serializing_if = "Option::is_none")]
3227    pub patch_operations: Option<Vec<PatchOperation>>,
3228    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3229    #[serde(rename = "restApiId")]
3230    pub rest_api_id: String,
3231}
3232
3233/// <p>Updates an existing documentation part of a given API.</p>
3234#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3235#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3236pub struct UpdateDocumentationPartRequest {
3237    /// <p>[Required] The identifier of the to-be-updated documentation part.</p>
3238    #[serde(rename = "documentationPartId")]
3239    pub documentation_part_id: String,
3240    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3241    #[serde(rename = "patchOperations")]
3242    #[serde(skip_serializing_if = "Option::is_none")]
3243    pub patch_operations: Option<Vec<PatchOperation>>,
3244    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3245    #[serde(rename = "restApiId")]
3246    pub rest_api_id: String,
3247}
3248
3249/// <p>Updates an existing documentation version of an API.</p>
3250#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3251#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3252pub struct UpdateDocumentationVersionRequest {
3253    /// <p>[Required] The version identifier of the to-be-updated documentation version.</p>
3254    #[serde(rename = "documentationVersion")]
3255    pub documentation_version: String,
3256    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3257    #[serde(rename = "patchOperations")]
3258    #[serde(skip_serializing_if = "Option::is_none")]
3259    pub patch_operations: Option<Vec<PatchOperation>>,
3260    /// <p>[Required] The string identifier of the associated <a>RestApi</a>..</p>
3261    #[serde(rename = "restApiId")]
3262    pub rest_api_id: String,
3263}
3264
3265/// <p>A request to change information about the <a>DomainName</a> resource.</p>
3266#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3267#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3268pub struct UpdateDomainNameRequest {
3269    /// <p>[Required] The name of the <a>DomainName</a> resource to be changed.</p>
3270    #[serde(rename = "domainName")]
3271    pub domain_name: String,
3272    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3273    #[serde(rename = "patchOperations")]
3274    #[serde(skip_serializing_if = "Option::is_none")]
3275    pub patch_operations: Option<Vec<PatchOperation>>,
3276}
3277
3278/// <p>Updates a <a>GatewayResponse</a> of a specified response type on the given <a>RestApi</a>.</p>
3279#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3280#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3281pub struct UpdateGatewayResponseRequest {
3282    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3283    #[serde(rename = "patchOperations")]
3284    #[serde(skip_serializing_if = "Option::is_none")]
3285    pub patch_operations: Option<Vec<PatchOperation>>,
3286    /// <p>[Required] <p>The response type of the associated <a>GatewayResponse</a>. Valid values are <ul><li>ACCESS_DENIED</li><li>API_CONFIGURATION_ERROR</li><li>AUTHORIZER_FAILURE</li><li> AUTHORIZER_CONFIGURATION_ERROR</li><li>BAD_REQUEST_PARAMETERS</li><li>BAD_REQUEST_BODY</li><li>DEFAULT_4XX</li><li>DEFAULT_5XX</li><li>EXPIRED_TOKEN</li><li>INVALID_SIGNATURE</li><li>INTEGRATION_FAILURE</li><li>INTEGRATION_TIMEOUT</li><li>INVALID_API_KEY</li><li>MISSING_AUTHENTICATION_TOKEN</li><li> QUOTA_EXCEEDED</li><li>REQUEST_TOO_LARGE</li><li>RESOURCE_NOT_FOUND</li><li>THROTTLED</li><li>UNAUTHORIZED</li><li>UNSUPPORTED_MEDIA_TYPE</li></ul> </p></p>
3287    #[serde(rename = "responseType")]
3288    pub response_type: String,
3289    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3290    #[serde(rename = "restApiId")]
3291    pub rest_api_id: String,
3292}
3293
3294/// <p>Represents an update integration request.</p>
3295#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3296#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3297pub struct UpdateIntegrationRequest {
3298    /// <p>[Required] Represents an update integration request's HTTP method.</p>
3299    #[serde(rename = "httpMethod")]
3300    pub http_method: String,
3301    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3302    #[serde(rename = "patchOperations")]
3303    #[serde(skip_serializing_if = "Option::is_none")]
3304    pub patch_operations: Option<Vec<PatchOperation>>,
3305    /// <p>[Required] Represents an update integration request's resource identifier.</p>
3306    #[serde(rename = "resourceId")]
3307    pub resource_id: String,
3308    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3309    #[serde(rename = "restApiId")]
3310    pub rest_api_id: String,
3311}
3312
3313/// <p>Represents an update integration response request.</p>
3314#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3315#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3316pub struct UpdateIntegrationResponseRequest {
3317    /// <p>[Required] Specifies an update integration response request's HTTP method.</p>
3318    #[serde(rename = "httpMethod")]
3319    pub http_method: String,
3320    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3321    #[serde(rename = "patchOperations")]
3322    #[serde(skip_serializing_if = "Option::is_none")]
3323    pub patch_operations: Option<Vec<PatchOperation>>,
3324    /// <p>[Required] Specifies an update integration response request's resource identifier.</p>
3325    #[serde(rename = "resourceId")]
3326    pub resource_id: String,
3327    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3328    #[serde(rename = "restApiId")]
3329    pub rest_api_id: String,
3330    /// <p>[Required] Specifies an update integration response request's status code.</p>
3331    #[serde(rename = "statusCode")]
3332    pub status_code: String,
3333}
3334
3335/// <p>Request to update an existing <a>Method</a> resource.</p>
3336#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3337#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3338pub struct UpdateMethodRequest {
3339    /// <p>[Required] The HTTP verb of the <a>Method</a> resource.</p>
3340    #[serde(rename = "httpMethod")]
3341    pub http_method: String,
3342    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3343    #[serde(rename = "patchOperations")]
3344    #[serde(skip_serializing_if = "Option::is_none")]
3345    pub patch_operations: Option<Vec<PatchOperation>>,
3346    /// <p>[Required] The <a>Resource</a> identifier for the <a>Method</a> resource.</p>
3347    #[serde(rename = "resourceId")]
3348    pub resource_id: String,
3349    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3350    #[serde(rename = "restApiId")]
3351    pub rest_api_id: String,
3352}
3353
3354/// <p>A request to update an existing <a>MethodResponse</a> resource.</p>
3355#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3356#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3357pub struct UpdateMethodResponseRequest {
3358    /// <p>[Required] The HTTP verb of the <a>Method</a> resource.</p>
3359    #[serde(rename = "httpMethod")]
3360    pub http_method: String,
3361    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3362    #[serde(rename = "patchOperations")]
3363    #[serde(skip_serializing_if = "Option::is_none")]
3364    pub patch_operations: Option<Vec<PatchOperation>>,
3365    /// <p>[Required] The <a>Resource</a> identifier for the <a>MethodResponse</a> resource.</p>
3366    #[serde(rename = "resourceId")]
3367    pub resource_id: String,
3368    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3369    #[serde(rename = "restApiId")]
3370    pub rest_api_id: String,
3371    /// <p>[Required] The status code for the <a>MethodResponse</a> resource.</p>
3372    #[serde(rename = "statusCode")]
3373    pub status_code: String,
3374}
3375
3376/// <p>Request to update an existing model in an existing <a>RestApi</a> resource.</p>
3377#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3378#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3379pub struct UpdateModelRequest {
3380    /// <p>[Required] The name of the model to update.</p>
3381    #[serde(rename = "modelName")]
3382    pub model_name: String,
3383    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3384    #[serde(rename = "patchOperations")]
3385    #[serde(skip_serializing_if = "Option::is_none")]
3386    pub patch_operations: Option<Vec<PatchOperation>>,
3387    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3388    #[serde(rename = "restApiId")]
3389    pub rest_api_id: String,
3390}
3391
3392/// <p>Updates a <a>RequestValidator</a> of a given <a>RestApi</a>.</p>
3393#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3394#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3395pub struct UpdateRequestValidatorRequest {
3396    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3397    #[serde(rename = "patchOperations")]
3398    #[serde(skip_serializing_if = "Option::is_none")]
3399    pub patch_operations: Option<Vec<PatchOperation>>,
3400    /// <p>[Required] The identifier of <a>RequestValidator</a> to be updated.</p>
3401    #[serde(rename = "requestValidatorId")]
3402    pub request_validator_id: String,
3403    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3404    #[serde(rename = "restApiId")]
3405    pub rest_api_id: String,
3406}
3407
3408/// <p>Request to change information about a <a>Resource</a> resource.</p>
3409#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3410#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3411pub struct UpdateResourceRequest {
3412    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3413    #[serde(rename = "patchOperations")]
3414    #[serde(skip_serializing_if = "Option::is_none")]
3415    pub patch_operations: Option<Vec<PatchOperation>>,
3416    /// <p>[Required] The identifier of the <a>Resource</a> resource.</p>
3417    #[serde(rename = "resourceId")]
3418    pub resource_id: String,
3419    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3420    #[serde(rename = "restApiId")]
3421    pub rest_api_id: String,
3422}
3423
3424/// <p>Request to update an existing <a>RestApi</a> resource in your collection.</p>
3425#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3426#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3427pub struct UpdateRestApiRequest {
3428    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3429    #[serde(rename = "patchOperations")]
3430    #[serde(skip_serializing_if = "Option::is_none")]
3431    pub patch_operations: Option<Vec<PatchOperation>>,
3432    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3433    #[serde(rename = "restApiId")]
3434    pub rest_api_id: String,
3435}
3436
3437/// <p>Requests API Gateway to change information about a <a>Stage</a> resource.</p>
3438#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3439#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3440pub struct UpdateStageRequest {
3441    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3442    #[serde(rename = "patchOperations")]
3443    #[serde(skip_serializing_if = "Option::is_none")]
3444    pub patch_operations: Option<Vec<PatchOperation>>,
3445    /// <p>[Required] The string identifier of the associated <a>RestApi</a>.</p>
3446    #[serde(rename = "restApiId")]
3447    pub rest_api_id: String,
3448    /// <p>[Required] The name of the <a>Stage</a> resource to change information about.</p>
3449    #[serde(rename = "stageName")]
3450    pub stage_name: String,
3451}
3452
3453/// <p>The PATCH request to update a usage plan of a given plan Id.</p>
3454#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3455#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3456pub struct UpdateUsagePlanRequest {
3457    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3458    #[serde(rename = "patchOperations")]
3459    #[serde(skip_serializing_if = "Option::is_none")]
3460    pub patch_operations: Option<Vec<PatchOperation>>,
3461    /// <p>[Required] The Id of the to-be-updated usage plan.</p>
3462    #[serde(rename = "usagePlanId")]
3463    pub usage_plan_id: String,
3464}
3465
3466/// <p>The PATCH request to grant a temporary extension to the remaining quota of a usage plan associated with a specified API key.</p>
3467#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3468#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3469pub struct UpdateUsageRequest {
3470    /// <p>[Required] The identifier of the API key associated with the usage plan in which a temporary extension is granted to the remaining quota.</p>
3471    #[serde(rename = "keyId")]
3472    pub key_id: String,
3473    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3474    #[serde(rename = "patchOperations")]
3475    #[serde(skip_serializing_if = "Option::is_none")]
3476    pub patch_operations: Option<Vec<PatchOperation>>,
3477    /// <p>[Required] The Id of the usage plan associated with the usage data.</p>
3478    #[serde(rename = "usagePlanId")]
3479    pub usage_plan_id: String,
3480}
3481
3482/// <p>Updates an existing <a>VpcLink</a> of a specified identifier.</p>
3483#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3484#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3485pub struct UpdateVpcLinkRequest {
3486    /// <p>A list of update operations to be applied to the specified resource and in the order specified in this list.</p>
3487    #[serde(rename = "patchOperations")]
3488    #[serde(skip_serializing_if = "Option::is_none")]
3489    pub patch_operations: Option<Vec<PatchOperation>>,
3490    /// <p>[Required] The identifier of the <a>VpcLink</a>. It is used in an <a>Integration</a> to reference this <a>VpcLink</a>.</p>
3491    #[serde(rename = "vpcLinkId")]
3492    pub vpc_link_id: String,
3493}
3494
3495/// <p><p>Represents the usage data of a usage plan.</p> <div class="remarks"/> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html">Create and Use Usage Plans</a>, <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-usage-plans-with-console.html#api-gateway-usage-plan-manage-usage">Manage Usage in a Usage Plan</a> </div></p>
3496#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3497#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3498pub struct Usage {
3499    /// <p>The ending date of the usage data.</p>
3500    #[serde(rename = "endDate")]
3501    #[serde(skip_serializing_if = "Option::is_none")]
3502    pub end_date: Option<String>,
3503    /// <p>The usage data, as daily logs of used and remaining quotas, over the specified time interval indexed over the API keys in a usage plan. For example, <code>{..., "values" : { "{api_key}" : [ [0, 100], [10, 90], [100, 10]]}</code>, where <code>{api_key}</code> stands for an API key value and the daily log entry is of the format <code>[used quota, remaining quota]</code>.</p>
3504    #[serde(rename = "items")]
3505    #[serde(skip_serializing_if = "Option::is_none")]
3506    pub items: Option<::std::collections::HashMap<String, Vec<Vec<i64>>>>,
3507    #[serde(rename = "position")]
3508    #[serde(skip_serializing_if = "Option::is_none")]
3509    pub position: Option<String>,
3510    /// <p>The starting date of the usage data.</p>
3511    #[serde(rename = "startDate")]
3512    #[serde(skip_serializing_if = "Option::is_none")]
3513    pub start_date: Option<String>,
3514    /// <p>The plan Id associated with this usage data.</p>
3515    #[serde(rename = "usagePlanId")]
3516    #[serde(skip_serializing_if = "Option::is_none")]
3517    pub usage_plan_id: Option<String>,
3518}
3519
3520/// <p><p>Represents a usage plan than can specify who can assess associated API stages with specified request limits and quotas.</p> <div class="remarks"> <p>In a usage plan, you associate an API by specifying the API&#39;s Id and a stage name of the specified API. You add plan customers by adding API keys to the plan. </p> </div> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html">Create and Use Usage Plans</a> </div></p>
3521#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3522#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3523pub struct UsagePlan {
3524    /// <p>The associated API stages of a usage plan.</p>
3525    #[serde(rename = "apiStages")]
3526    #[serde(skip_serializing_if = "Option::is_none")]
3527    pub api_stages: Option<Vec<ApiStage>>,
3528    /// <p>The description of a usage plan.</p>
3529    #[serde(rename = "description")]
3530    #[serde(skip_serializing_if = "Option::is_none")]
3531    pub description: Option<String>,
3532    /// <p>The identifier of a <a>UsagePlan</a> resource.</p>
3533    #[serde(rename = "id")]
3534    #[serde(skip_serializing_if = "Option::is_none")]
3535    pub id: Option<String>,
3536    /// <p>The name of a usage plan.</p>
3537    #[serde(rename = "name")]
3538    #[serde(skip_serializing_if = "Option::is_none")]
3539    pub name: Option<String>,
3540    /// <p>The AWS Markeplace product identifier to associate with the usage plan as a SaaS product on AWS Marketplace.</p>
3541    #[serde(rename = "productCode")]
3542    #[serde(skip_serializing_if = "Option::is_none")]
3543    pub product_code: Option<String>,
3544    /// <p>The maximum number of permitted requests per a given unit time interval.</p>
3545    #[serde(rename = "quota")]
3546    #[serde(skip_serializing_if = "Option::is_none")]
3547    pub quota: Option<QuotaSettings>,
3548    /// <p>The collection of tags. Each tag element is associated with a given resource.</p>
3549    #[serde(rename = "tags")]
3550    #[serde(skip_serializing_if = "Option::is_none")]
3551    pub tags: Option<::std::collections::HashMap<String, String>>,
3552    /// <p>The request throttle limits of a usage plan.</p>
3553    #[serde(rename = "throttle")]
3554    #[serde(skip_serializing_if = "Option::is_none")]
3555    pub throttle: Option<ThrottleSettings>,
3556}
3557
3558/// <p><p>Represents a usage plan key to identify a plan customer.</p> <div class="remarks"> <p>To associate an API stage with a selected API key in a usage plan, you must create a UsagePlanKey resource to represent the selected <a>ApiKey</a>.</p> </div>&quot; <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html">Create and Use Usage Plans</a> </div></p>
3559#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3560#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3561pub struct UsagePlanKey {
3562    /// <p>The Id of a usage plan key.</p>
3563    #[serde(rename = "id")]
3564    #[serde(skip_serializing_if = "Option::is_none")]
3565    pub id: Option<String>,
3566    /// <p>The name of a usage plan key.</p>
3567    #[serde(rename = "name")]
3568    #[serde(skip_serializing_if = "Option::is_none")]
3569    pub name: Option<String>,
3570    /// <p>The type of a usage plan key. Currently, the valid key type is <code>API_KEY</code>.</p>
3571    #[serde(rename = "type")]
3572    #[serde(skip_serializing_if = "Option::is_none")]
3573    pub type_: Option<String>,
3574    /// <p>The value of a usage plan key.</p>
3575    #[serde(rename = "value")]
3576    #[serde(skip_serializing_if = "Option::is_none")]
3577    pub value: Option<String>,
3578}
3579
3580/// <p><p>Represents the collection of usage plan keys added to usage plans for the associated API keys and, possibly, other types of keys.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html">Create and Use Usage Plans</a> </div></p>
3581#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3582#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3583pub struct UsagePlanKeys {
3584    /// <p>The current page of elements from this collection.</p>
3585    #[serde(rename = "items")]
3586    #[serde(skip_serializing_if = "Option::is_none")]
3587    pub items: Option<Vec<UsagePlanKey>>,
3588    #[serde(rename = "position")]
3589    #[serde(skip_serializing_if = "Option::is_none")]
3590    pub position: Option<String>,
3591}
3592
3593/// <p><p>Represents a collection of usage plans for an AWS account.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html">Create and Use Usage Plans</a> </div></p>
3594#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3595#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3596pub struct UsagePlans {
3597    /// <p>The current page of elements from this collection.</p>
3598    #[serde(rename = "items")]
3599    #[serde(skip_serializing_if = "Option::is_none")]
3600    pub items: Option<Vec<UsagePlan>>,
3601    #[serde(rename = "position")]
3602    #[serde(skip_serializing_if = "Option::is_none")]
3603    pub position: Option<String>,
3604}
3605
3606/// <p><p>An API Gateway VPC link for a <a>RestApi</a> to access resources in an Amazon Virtual Private Cloud (VPC).</p> <div class="remarks"> <p><p>To enable access to a resource in an Amazon Virtual Private Cloud through Amazon API Gateway, you, as an API developer, create a <a>VpcLink</a> resource targeted for one or more network load balancers of the VPC and then integrate an API method with a private integration that uses the <a>VpcLink</a>. The private integration has an integration type of <code>HTTP</code> or <code>HTTP<em>PROXY</code> and has a connection type of <code>VPC</em>LINK</code>. The integration uses the <code>connectionId</code> property to identify the <a>VpcLink</a> used.</p> </p> </div></p>
3607#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3608#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3609pub struct VpcLink {
3610    /// <p>The description of the VPC link.</p>
3611    #[serde(rename = "description")]
3612    #[serde(skip_serializing_if = "Option::is_none")]
3613    pub description: Option<String>,
3614    /// <p>The identifier of the <a>VpcLink</a>. It is used in an <a>Integration</a> to reference this <a>VpcLink</a>.</p>
3615    #[serde(rename = "id")]
3616    #[serde(skip_serializing_if = "Option::is_none")]
3617    pub id: Option<String>,
3618    /// <p>The name used to label and identify the VPC link.</p>
3619    #[serde(rename = "name")]
3620    #[serde(skip_serializing_if = "Option::is_none")]
3621    pub name: Option<String>,
3622    /// <p>The status of the VPC link. The valid values are <code>AVAILABLE</code>, <code>PENDING</code>, <code>DELETING</code>, or <code>FAILED</code>. Deploying an API will wait if the status is <code>PENDING</code> and will fail if the status is <code>DELETING</code>. </p>
3623    #[serde(rename = "status")]
3624    #[serde(skip_serializing_if = "Option::is_none")]
3625    pub status: Option<String>,
3626    /// <p>A description about the VPC link status.</p>
3627    #[serde(rename = "statusMessage")]
3628    #[serde(skip_serializing_if = "Option::is_none")]
3629    pub status_message: Option<String>,
3630    /// <p>The collection of tags. Each tag element is associated with a given resource.</p>
3631    #[serde(rename = "tags")]
3632    #[serde(skip_serializing_if = "Option::is_none")]
3633    pub tags: Option<::std::collections::HashMap<String, String>>,
3634    /// <p>The ARN of the network load balancer of the VPC targeted by the VPC link. The network load balancer must be owned by the same AWS account of the API owner.</p>
3635    #[serde(rename = "targetArns")]
3636    #[serde(skip_serializing_if = "Option::is_none")]
3637    pub target_arns: Option<Vec<String>>,
3638}
3639
3640/// <p><p>The collection of VPC links under the caller&#39;s account in a region.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-with-private-integration.html">Getting Started with Private Integrations</a>, <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-private-integration.html">Set up Private Integrations</a> </div></p>
3641#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3642#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3643pub struct VpcLinks {
3644    /// <p>The current page of elements from this collection.</p>
3645    #[serde(rename = "items")]
3646    #[serde(skip_serializing_if = "Option::is_none")]
3647    pub items: Option<Vec<VpcLink>>,
3648    #[serde(rename = "position")]
3649    #[serde(skip_serializing_if = "Option::is_none")]
3650    pub position: Option<String>,
3651}
3652
3653/// Errors returned by CreateApiKey
3654#[derive(Debug, PartialEq)]
3655pub enum CreateApiKeyError {
3656    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
3657    BadRequest(String),
3658    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
3659    Conflict(String),
3660    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
3661    LimitExceeded(String),
3662    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
3663    NotFound(String),
3664    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
3665    TooManyRequests(String),
3666    /// <p>The request is denied because the caller has insufficient permissions.</p>
3667    Unauthorized(String),
3668}
3669
3670impl CreateApiKeyError {
3671    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateApiKeyError> {
3672        if let Some(err) = proto::json::Error::parse_rest(&res) {
3673            match err.typ.as_str() {
3674                "BadRequestException" => {
3675                    return RusotoError::Service(CreateApiKeyError::BadRequest(err.msg))
3676                }
3677                "ConflictException" => {
3678                    return RusotoError::Service(CreateApiKeyError::Conflict(err.msg))
3679                }
3680                "LimitExceededException" => {
3681                    return RusotoError::Service(CreateApiKeyError::LimitExceeded(err.msg))
3682                }
3683                "NotFoundException" => {
3684                    return RusotoError::Service(CreateApiKeyError::NotFound(err.msg))
3685                }
3686                "TooManyRequestsException" => {
3687                    return RusotoError::Service(CreateApiKeyError::TooManyRequests(err.msg))
3688                }
3689                "UnauthorizedException" => {
3690                    return RusotoError::Service(CreateApiKeyError::Unauthorized(err.msg))
3691                }
3692                "ValidationException" => return RusotoError::Validation(err.msg),
3693                _ => {}
3694            }
3695        }
3696        RusotoError::Unknown(res)
3697    }
3698}
3699impl fmt::Display for CreateApiKeyError {
3700    #[allow(unused_variables)]
3701    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3702        match *self {
3703            CreateApiKeyError::BadRequest(ref cause) => write!(f, "{}", cause),
3704            CreateApiKeyError::Conflict(ref cause) => write!(f, "{}", cause),
3705            CreateApiKeyError::LimitExceeded(ref cause) => write!(f, "{}", cause),
3706            CreateApiKeyError::NotFound(ref cause) => write!(f, "{}", cause),
3707            CreateApiKeyError::TooManyRequests(ref cause) => write!(f, "{}", cause),
3708            CreateApiKeyError::Unauthorized(ref cause) => write!(f, "{}", cause),
3709        }
3710    }
3711}
3712impl Error for CreateApiKeyError {}
3713/// Errors returned by CreateAuthorizer
3714#[derive(Debug, PartialEq)]
3715pub enum CreateAuthorizerError {
3716    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
3717    BadRequest(String),
3718    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
3719    LimitExceeded(String),
3720    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
3721    NotFound(String),
3722    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
3723    TooManyRequests(String),
3724    /// <p>The request is denied because the caller has insufficient permissions.</p>
3725    Unauthorized(String),
3726}
3727
3728impl CreateAuthorizerError {
3729    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateAuthorizerError> {
3730        if let Some(err) = proto::json::Error::parse_rest(&res) {
3731            match err.typ.as_str() {
3732                "BadRequestException" => {
3733                    return RusotoError::Service(CreateAuthorizerError::BadRequest(err.msg))
3734                }
3735                "LimitExceededException" => {
3736                    return RusotoError::Service(CreateAuthorizerError::LimitExceeded(err.msg))
3737                }
3738                "NotFoundException" => {
3739                    return RusotoError::Service(CreateAuthorizerError::NotFound(err.msg))
3740                }
3741                "TooManyRequestsException" => {
3742                    return RusotoError::Service(CreateAuthorizerError::TooManyRequests(err.msg))
3743                }
3744                "UnauthorizedException" => {
3745                    return RusotoError::Service(CreateAuthorizerError::Unauthorized(err.msg))
3746                }
3747                "ValidationException" => return RusotoError::Validation(err.msg),
3748                _ => {}
3749            }
3750        }
3751        RusotoError::Unknown(res)
3752    }
3753}
3754impl fmt::Display for CreateAuthorizerError {
3755    #[allow(unused_variables)]
3756    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3757        match *self {
3758            CreateAuthorizerError::BadRequest(ref cause) => write!(f, "{}", cause),
3759            CreateAuthorizerError::LimitExceeded(ref cause) => write!(f, "{}", cause),
3760            CreateAuthorizerError::NotFound(ref cause) => write!(f, "{}", cause),
3761            CreateAuthorizerError::TooManyRequests(ref cause) => write!(f, "{}", cause),
3762            CreateAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
3763        }
3764    }
3765}
3766impl Error for CreateAuthorizerError {}
3767/// Errors returned by CreateBasePathMapping
3768#[derive(Debug, PartialEq)]
3769pub enum CreateBasePathMappingError {
3770    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
3771    BadRequest(String),
3772    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
3773    Conflict(String),
3774    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
3775    NotFound(String),
3776    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
3777    TooManyRequests(String),
3778    /// <p>The request is denied because the caller has insufficient permissions.</p>
3779    Unauthorized(String),
3780}
3781
3782impl CreateBasePathMappingError {
3783    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateBasePathMappingError> {
3784        if let Some(err) = proto::json::Error::parse_rest(&res) {
3785            match err.typ.as_str() {
3786                "BadRequestException" => {
3787                    return RusotoError::Service(CreateBasePathMappingError::BadRequest(err.msg))
3788                }
3789                "ConflictException" => {
3790                    return RusotoError::Service(CreateBasePathMappingError::Conflict(err.msg))
3791                }
3792                "NotFoundException" => {
3793                    return RusotoError::Service(CreateBasePathMappingError::NotFound(err.msg))
3794                }
3795                "TooManyRequestsException" => {
3796                    return RusotoError::Service(CreateBasePathMappingError::TooManyRequests(
3797                        err.msg,
3798                    ))
3799                }
3800                "UnauthorizedException" => {
3801                    return RusotoError::Service(CreateBasePathMappingError::Unauthorized(err.msg))
3802                }
3803                "ValidationException" => return RusotoError::Validation(err.msg),
3804                _ => {}
3805            }
3806        }
3807        RusotoError::Unknown(res)
3808    }
3809}
3810impl fmt::Display for CreateBasePathMappingError {
3811    #[allow(unused_variables)]
3812    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3813        match *self {
3814            CreateBasePathMappingError::BadRequest(ref cause) => write!(f, "{}", cause),
3815            CreateBasePathMappingError::Conflict(ref cause) => write!(f, "{}", cause),
3816            CreateBasePathMappingError::NotFound(ref cause) => write!(f, "{}", cause),
3817            CreateBasePathMappingError::TooManyRequests(ref cause) => write!(f, "{}", cause),
3818            CreateBasePathMappingError::Unauthorized(ref cause) => write!(f, "{}", cause),
3819        }
3820    }
3821}
3822impl Error for CreateBasePathMappingError {}
3823/// Errors returned by CreateDeployment
3824#[derive(Debug, PartialEq)]
3825pub enum CreateDeploymentError {
3826    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
3827    BadRequest(String),
3828    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
3829    Conflict(String),
3830    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
3831    LimitExceeded(String),
3832    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
3833    NotFound(String),
3834    /// <p>The requested service is not available. For details see the accompanying error message. Retry after the specified time period.</p>
3835    ServiceUnavailable(String),
3836    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
3837    TooManyRequests(String),
3838    /// <p>The request is denied because the caller has insufficient permissions.</p>
3839    Unauthorized(String),
3840}
3841
3842impl CreateDeploymentError {
3843    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDeploymentError> {
3844        if let Some(err) = proto::json::Error::parse_rest(&res) {
3845            match err.typ.as_str() {
3846                "BadRequestException" => {
3847                    return RusotoError::Service(CreateDeploymentError::BadRequest(err.msg))
3848                }
3849                "ConflictException" => {
3850                    return RusotoError::Service(CreateDeploymentError::Conflict(err.msg))
3851                }
3852                "LimitExceededException" => {
3853                    return RusotoError::Service(CreateDeploymentError::LimitExceeded(err.msg))
3854                }
3855                "NotFoundException" => {
3856                    return RusotoError::Service(CreateDeploymentError::NotFound(err.msg))
3857                }
3858                "ServiceUnavailableException" => {
3859                    return RusotoError::Service(CreateDeploymentError::ServiceUnavailable(err.msg))
3860                }
3861                "TooManyRequestsException" => {
3862                    return RusotoError::Service(CreateDeploymentError::TooManyRequests(err.msg))
3863                }
3864                "UnauthorizedException" => {
3865                    return RusotoError::Service(CreateDeploymentError::Unauthorized(err.msg))
3866                }
3867                "ValidationException" => return RusotoError::Validation(err.msg),
3868                _ => {}
3869            }
3870        }
3871        RusotoError::Unknown(res)
3872    }
3873}
3874impl fmt::Display for CreateDeploymentError {
3875    #[allow(unused_variables)]
3876    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3877        match *self {
3878            CreateDeploymentError::BadRequest(ref cause) => write!(f, "{}", cause),
3879            CreateDeploymentError::Conflict(ref cause) => write!(f, "{}", cause),
3880            CreateDeploymentError::LimitExceeded(ref cause) => write!(f, "{}", cause),
3881            CreateDeploymentError::NotFound(ref cause) => write!(f, "{}", cause),
3882            CreateDeploymentError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
3883            CreateDeploymentError::TooManyRequests(ref cause) => write!(f, "{}", cause),
3884            CreateDeploymentError::Unauthorized(ref cause) => write!(f, "{}", cause),
3885        }
3886    }
3887}
3888impl Error for CreateDeploymentError {}
3889/// Errors returned by CreateDocumentationPart
3890#[derive(Debug, PartialEq)]
3891pub enum CreateDocumentationPartError {
3892    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
3893    BadRequest(String),
3894    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
3895    Conflict(String),
3896    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
3897    LimitExceeded(String),
3898    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
3899    NotFound(String),
3900    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
3901    TooManyRequests(String),
3902    /// <p>The request is denied because the caller has insufficient permissions.</p>
3903    Unauthorized(String),
3904}
3905
3906impl CreateDocumentationPartError {
3907    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDocumentationPartError> {
3908        if let Some(err) = proto::json::Error::parse_rest(&res) {
3909            match err.typ.as_str() {
3910                "BadRequestException" => {
3911                    return RusotoError::Service(CreateDocumentationPartError::BadRequest(err.msg))
3912                }
3913                "ConflictException" => {
3914                    return RusotoError::Service(CreateDocumentationPartError::Conflict(err.msg))
3915                }
3916                "LimitExceededException" => {
3917                    return RusotoError::Service(CreateDocumentationPartError::LimitExceeded(
3918                        err.msg,
3919                    ))
3920                }
3921                "NotFoundException" => {
3922                    return RusotoError::Service(CreateDocumentationPartError::NotFound(err.msg))
3923                }
3924                "TooManyRequestsException" => {
3925                    return RusotoError::Service(CreateDocumentationPartError::TooManyRequests(
3926                        err.msg,
3927                    ))
3928                }
3929                "UnauthorizedException" => {
3930                    return RusotoError::Service(CreateDocumentationPartError::Unauthorized(
3931                        err.msg,
3932                    ))
3933                }
3934                "ValidationException" => return RusotoError::Validation(err.msg),
3935                _ => {}
3936            }
3937        }
3938        RusotoError::Unknown(res)
3939    }
3940}
3941impl fmt::Display for CreateDocumentationPartError {
3942    #[allow(unused_variables)]
3943    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3944        match *self {
3945            CreateDocumentationPartError::BadRequest(ref cause) => write!(f, "{}", cause),
3946            CreateDocumentationPartError::Conflict(ref cause) => write!(f, "{}", cause),
3947            CreateDocumentationPartError::LimitExceeded(ref cause) => write!(f, "{}", cause),
3948            CreateDocumentationPartError::NotFound(ref cause) => write!(f, "{}", cause),
3949            CreateDocumentationPartError::TooManyRequests(ref cause) => write!(f, "{}", cause),
3950            CreateDocumentationPartError::Unauthorized(ref cause) => write!(f, "{}", cause),
3951        }
3952    }
3953}
3954impl Error for CreateDocumentationPartError {}
3955/// Errors returned by CreateDocumentationVersion
3956#[derive(Debug, PartialEq)]
3957pub enum CreateDocumentationVersionError {
3958    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
3959    BadRequest(String),
3960    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
3961    Conflict(String),
3962    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
3963    LimitExceeded(String),
3964    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
3965    NotFound(String),
3966    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
3967    TooManyRequests(String),
3968    /// <p>The request is denied because the caller has insufficient permissions.</p>
3969    Unauthorized(String),
3970}
3971
3972impl CreateDocumentationVersionError {
3973    pub fn from_response(
3974        res: BufferedHttpResponse,
3975    ) -> RusotoError<CreateDocumentationVersionError> {
3976        if let Some(err) = proto::json::Error::parse_rest(&res) {
3977            match err.typ.as_str() {
3978                "BadRequestException" => {
3979                    return RusotoError::Service(CreateDocumentationVersionError::BadRequest(
3980                        err.msg,
3981                    ))
3982                }
3983                "ConflictException" => {
3984                    return RusotoError::Service(CreateDocumentationVersionError::Conflict(err.msg))
3985                }
3986                "LimitExceededException" => {
3987                    return RusotoError::Service(CreateDocumentationVersionError::LimitExceeded(
3988                        err.msg,
3989                    ))
3990                }
3991                "NotFoundException" => {
3992                    return RusotoError::Service(CreateDocumentationVersionError::NotFound(err.msg))
3993                }
3994                "TooManyRequestsException" => {
3995                    return RusotoError::Service(CreateDocumentationVersionError::TooManyRequests(
3996                        err.msg,
3997                    ))
3998                }
3999                "UnauthorizedException" => {
4000                    return RusotoError::Service(CreateDocumentationVersionError::Unauthorized(
4001                        err.msg,
4002                    ))
4003                }
4004                "ValidationException" => return RusotoError::Validation(err.msg),
4005                _ => {}
4006            }
4007        }
4008        RusotoError::Unknown(res)
4009    }
4010}
4011impl fmt::Display for CreateDocumentationVersionError {
4012    #[allow(unused_variables)]
4013    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4014        match *self {
4015            CreateDocumentationVersionError::BadRequest(ref cause) => write!(f, "{}", cause),
4016            CreateDocumentationVersionError::Conflict(ref cause) => write!(f, "{}", cause),
4017            CreateDocumentationVersionError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4018            CreateDocumentationVersionError::NotFound(ref cause) => write!(f, "{}", cause),
4019            CreateDocumentationVersionError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4020            CreateDocumentationVersionError::Unauthorized(ref cause) => write!(f, "{}", cause),
4021        }
4022    }
4023}
4024impl Error for CreateDocumentationVersionError {}
4025/// Errors returned by CreateDomainName
4026#[derive(Debug, PartialEq)]
4027pub enum CreateDomainNameError {
4028    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4029    BadRequest(String),
4030    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
4031    Conflict(String),
4032    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4033    TooManyRequests(String),
4034    /// <p>The request is denied because the caller has insufficient permissions.</p>
4035    Unauthorized(String),
4036}
4037
4038impl CreateDomainNameError {
4039    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDomainNameError> {
4040        if let Some(err) = proto::json::Error::parse_rest(&res) {
4041            match err.typ.as_str() {
4042                "BadRequestException" => {
4043                    return RusotoError::Service(CreateDomainNameError::BadRequest(err.msg))
4044                }
4045                "ConflictException" => {
4046                    return RusotoError::Service(CreateDomainNameError::Conflict(err.msg))
4047                }
4048                "TooManyRequestsException" => {
4049                    return RusotoError::Service(CreateDomainNameError::TooManyRequests(err.msg))
4050                }
4051                "UnauthorizedException" => {
4052                    return RusotoError::Service(CreateDomainNameError::Unauthorized(err.msg))
4053                }
4054                "ValidationException" => return RusotoError::Validation(err.msg),
4055                _ => {}
4056            }
4057        }
4058        RusotoError::Unknown(res)
4059    }
4060}
4061impl fmt::Display for CreateDomainNameError {
4062    #[allow(unused_variables)]
4063    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4064        match *self {
4065            CreateDomainNameError::BadRequest(ref cause) => write!(f, "{}", cause),
4066            CreateDomainNameError::Conflict(ref cause) => write!(f, "{}", cause),
4067            CreateDomainNameError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4068            CreateDomainNameError::Unauthorized(ref cause) => write!(f, "{}", cause),
4069        }
4070    }
4071}
4072impl Error for CreateDomainNameError {}
4073/// Errors returned by CreateModel
4074#[derive(Debug, PartialEq)]
4075pub enum CreateModelError {
4076    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4077    BadRequest(String),
4078    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
4079    Conflict(String),
4080    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
4081    LimitExceeded(String),
4082    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4083    NotFound(String),
4084    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4085    TooManyRequests(String),
4086    /// <p>The request is denied because the caller has insufficient permissions.</p>
4087    Unauthorized(String),
4088}
4089
4090impl CreateModelError {
4091    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateModelError> {
4092        if let Some(err) = proto::json::Error::parse_rest(&res) {
4093            match err.typ.as_str() {
4094                "BadRequestException" => {
4095                    return RusotoError::Service(CreateModelError::BadRequest(err.msg))
4096                }
4097                "ConflictException" => {
4098                    return RusotoError::Service(CreateModelError::Conflict(err.msg))
4099                }
4100                "LimitExceededException" => {
4101                    return RusotoError::Service(CreateModelError::LimitExceeded(err.msg))
4102                }
4103                "NotFoundException" => {
4104                    return RusotoError::Service(CreateModelError::NotFound(err.msg))
4105                }
4106                "TooManyRequestsException" => {
4107                    return RusotoError::Service(CreateModelError::TooManyRequests(err.msg))
4108                }
4109                "UnauthorizedException" => {
4110                    return RusotoError::Service(CreateModelError::Unauthorized(err.msg))
4111                }
4112                "ValidationException" => return RusotoError::Validation(err.msg),
4113                _ => {}
4114            }
4115        }
4116        RusotoError::Unknown(res)
4117    }
4118}
4119impl fmt::Display for CreateModelError {
4120    #[allow(unused_variables)]
4121    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4122        match *self {
4123            CreateModelError::BadRequest(ref cause) => write!(f, "{}", cause),
4124            CreateModelError::Conflict(ref cause) => write!(f, "{}", cause),
4125            CreateModelError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4126            CreateModelError::NotFound(ref cause) => write!(f, "{}", cause),
4127            CreateModelError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4128            CreateModelError::Unauthorized(ref cause) => write!(f, "{}", cause),
4129        }
4130    }
4131}
4132impl Error for CreateModelError {}
4133/// Errors returned by CreateRequestValidator
4134#[derive(Debug, PartialEq)]
4135pub enum CreateRequestValidatorError {
4136    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4137    BadRequest(String),
4138    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
4139    LimitExceeded(String),
4140    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4141    NotFound(String),
4142    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4143    TooManyRequests(String),
4144    /// <p>The request is denied because the caller has insufficient permissions.</p>
4145    Unauthorized(String),
4146}
4147
4148impl CreateRequestValidatorError {
4149    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateRequestValidatorError> {
4150        if let Some(err) = proto::json::Error::parse_rest(&res) {
4151            match err.typ.as_str() {
4152                "BadRequestException" => {
4153                    return RusotoError::Service(CreateRequestValidatorError::BadRequest(err.msg))
4154                }
4155                "LimitExceededException" => {
4156                    return RusotoError::Service(CreateRequestValidatorError::LimitExceeded(
4157                        err.msg,
4158                    ))
4159                }
4160                "NotFoundException" => {
4161                    return RusotoError::Service(CreateRequestValidatorError::NotFound(err.msg))
4162                }
4163                "TooManyRequestsException" => {
4164                    return RusotoError::Service(CreateRequestValidatorError::TooManyRequests(
4165                        err.msg,
4166                    ))
4167                }
4168                "UnauthorizedException" => {
4169                    return RusotoError::Service(CreateRequestValidatorError::Unauthorized(err.msg))
4170                }
4171                "ValidationException" => return RusotoError::Validation(err.msg),
4172                _ => {}
4173            }
4174        }
4175        RusotoError::Unknown(res)
4176    }
4177}
4178impl fmt::Display for CreateRequestValidatorError {
4179    #[allow(unused_variables)]
4180    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4181        match *self {
4182            CreateRequestValidatorError::BadRequest(ref cause) => write!(f, "{}", cause),
4183            CreateRequestValidatorError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4184            CreateRequestValidatorError::NotFound(ref cause) => write!(f, "{}", cause),
4185            CreateRequestValidatorError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4186            CreateRequestValidatorError::Unauthorized(ref cause) => write!(f, "{}", cause),
4187        }
4188    }
4189}
4190impl Error for CreateRequestValidatorError {}
4191/// Errors returned by CreateResource
4192#[derive(Debug, PartialEq)]
4193pub enum CreateResourceError {
4194    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4195    BadRequest(String),
4196    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
4197    Conflict(String),
4198    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
4199    LimitExceeded(String),
4200    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4201    NotFound(String),
4202    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4203    TooManyRequests(String),
4204    /// <p>The request is denied because the caller has insufficient permissions.</p>
4205    Unauthorized(String),
4206}
4207
4208impl CreateResourceError {
4209    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateResourceError> {
4210        if let Some(err) = proto::json::Error::parse_rest(&res) {
4211            match err.typ.as_str() {
4212                "BadRequestException" => {
4213                    return RusotoError::Service(CreateResourceError::BadRequest(err.msg))
4214                }
4215                "ConflictException" => {
4216                    return RusotoError::Service(CreateResourceError::Conflict(err.msg))
4217                }
4218                "LimitExceededException" => {
4219                    return RusotoError::Service(CreateResourceError::LimitExceeded(err.msg))
4220                }
4221                "NotFoundException" => {
4222                    return RusotoError::Service(CreateResourceError::NotFound(err.msg))
4223                }
4224                "TooManyRequestsException" => {
4225                    return RusotoError::Service(CreateResourceError::TooManyRequests(err.msg))
4226                }
4227                "UnauthorizedException" => {
4228                    return RusotoError::Service(CreateResourceError::Unauthorized(err.msg))
4229                }
4230                "ValidationException" => return RusotoError::Validation(err.msg),
4231                _ => {}
4232            }
4233        }
4234        RusotoError::Unknown(res)
4235    }
4236}
4237impl fmt::Display for CreateResourceError {
4238    #[allow(unused_variables)]
4239    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4240        match *self {
4241            CreateResourceError::BadRequest(ref cause) => write!(f, "{}", cause),
4242            CreateResourceError::Conflict(ref cause) => write!(f, "{}", cause),
4243            CreateResourceError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4244            CreateResourceError::NotFound(ref cause) => write!(f, "{}", cause),
4245            CreateResourceError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4246            CreateResourceError::Unauthorized(ref cause) => write!(f, "{}", cause),
4247        }
4248    }
4249}
4250impl Error for CreateResourceError {}
4251/// Errors returned by CreateRestApi
4252#[derive(Debug, PartialEq)]
4253pub enum CreateRestApiError {
4254    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4255    BadRequest(String),
4256    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
4257    LimitExceeded(String),
4258    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4259    TooManyRequests(String),
4260    /// <p>The request is denied because the caller has insufficient permissions.</p>
4261    Unauthorized(String),
4262}
4263
4264impl CreateRestApiError {
4265    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateRestApiError> {
4266        if let Some(err) = proto::json::Error::parse_rest(&res) {
4267            match err.typ.as_str() {
4268                "BadRequestException" => {
4269                    return RusotoError::Service(CreateRestApiError::BadRequest(err.msg))
4270                }
4271                "LimitExceededException" => {
4272                    return RusotoError::Service(CreateRestApiError::LimitExceeded(err.msg))
4273                }
4274                "TooManyRequestsException" => {
4275                    return RusotoError::Service(CreateRestApiError::TooManyRequests(err.msg))
4276                }
4277                "UnauthorizedException" => {
4278                    return RusotoError::Service(CreateRestApiError::Unauthorized(err.msg))
4279                }
4280                "ValidationException" => return RusotoError::Validation(err.msg),
4281                _ => {}
4282            }
4283        }
4284        RusotoError::Unknown(res)
4285    }
4286}
4287impl fmt::Display for CreateRestApiError {
4288    #[allow(unused_variables)]
4289    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4290        match *self {
4291            CreateRestApiError::BadRequest(ref cause) => write!(f, "{}", cause),
4292            CreateRestApiError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4293            CreateRestApiError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4294            CreateRestApiError::Unauthorized(ref cause) => write!(f, "{}", cause),
4295        }
4296    }
4297}
4298impl Error for CreateRestApiError {}
4299/// Errors returned by CreateStage
4300#[derive(Debug, PartialEq)]
4301pub enum CreateStageError {
4302    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4303    BadRequest(String),
4304    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
4305    Conflict(String),
4306    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
4307    LimitExceeded(String),
4308    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4309    NotFound(String),
4310    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4311    TooManyRequests(String),
4312    /// <p>The request is denied because the caller has insufficient permissions.</p>
4313    Unauthorized(String),
4314}
4315
4316impl CreateStageError {
4317    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateStageError> {
4318        if let Some(err) = proto::json::Error::parse_rest(&res) {
4319            match err.typ.as_str() {
4320                "BadRequestException" => {
4321                    return RusotoError::Service(CreateStageError::BadRequest(err.msg))
4322                }
4323                "ConflictException" => {
4324                    return RusotoError::Service(CreateStageError::Conflict(err.msg))
4325                }
4326                "LimitExceededException" => {
4327                    return RusotoError::Service(CreateStageError::LimitExceeded(err.msg))
4328                }
4329                "NotFoundException" => {
4330                    return RusotoError::Service(CreateStageError::NotFound(err.msg))
4331                }
4332                "TooManyRequestsException" => {
4333                    return RusotoError::Service(CreateStageError::TooManyRequests(err.msg))
4334                }
4335                "UnauthorizedException" => {
4336                    return RusotoError::Service(CreateStageError::Unauthorized(err.msg))
4337                }
4338                "ValidationException" => return RusotoError::Validation(err.msg),
4339                _ => {}
4340            }
4341        }
4342        RusotoError::Unknown(res)
4343    }
4344}
4345impl fmt::Display for CreateStageError {
4346    #[allow(unused_variables)]
4347    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4348        match *self {
4349            CreateStageError::BadRequest(ref cause) => write!(f, "{}", cause),
4350            CreateStageError::Conflict(ref cause) => write!(f, "{}", cause),
4351            CreateStageError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4352            CreateStageError::NotFound(ref cause) => write!(f, "{}", cause),
4353            CreateStageError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4354            CreateStageError::Unauthorized(ref cause) => write!(f, "{}", cause),
4355        }
4356    }
4357}
4358impl Error for CreateStageError {}
4359/// Errors returned by CreateUsagePlan
4360#[derive(Debug, PartialEq)]
4361pub enum CreateUsagePlanError {
4362    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4363    BadRequest(String),
4364    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
4365    Conflict(String),
4366    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
4367    LimitExceeded(String),
4368    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4369    NotFound(String),
4370    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4371    TooManyRequests(String),
4372    /// <p>The request is denied because the caller has insufficient permissions.</p>
4373    Unauthorized(String),
4374}
4375
4376impl CreateUsagePlanError {
4377    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateUsagePlanError> {
4378        if let Some(err) = proto::json::Error::parse_rest(&res) {
4379            match err.typ.as_str() {
4380                "BadRequestException" => {
4381                    return RusotoError::Service(CreateUsagePlanError::BadRequest(err.msg))
4382                }
4383                "ConflictException" => {
4384                    return RusotoError::Service(CreateUsagePlanError::Conflict(err.msg))
4385                }
4386                "LimitExceededException" => {
4387                    return RusotoError::Service(CreateUsagePlanError::LimitExceeded(err.msg))
4388                }
4389                "NotFoundException" => {
4390                    return RusotoError::Service(CreateUsagePlanError::NotFound(err.msg))
4391                }
4392                "TooManyRequestsException" => {
4393                    return RusotoError::Service(CreateUsagePlanError::TooManyRequests(err.msg))
4394                }
4395                "UnauthorizedException" => {
4396                    return RusotoError::Service(CreateUsagePlanError::Unauthorized(err.msg))
4397                }
4398                "ValidationException" => return RusotoError::Validation(err.msg),
4399                _ => {}
4400            }
4401        }
4402        RusotoError::Unknown(res)
4403    }
4404}
4405impl fmt::Display for CreateUsagePlanError {
4406    #[allow(unused_variables)]
4407    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4408        match *self {
4409            CreateUsagePlanError::BadRequest(ref cause) => write!(f, "{}", cause),
4410            CreateUsagePlanError::Conflict(ref cause) => write!(f, "{}", cause),
4411            CreateUsagePlanError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4412            CreateUsagePlanError::NotFound(ref cause) => write!(f, "{}", cause),
4413            CreateUsagePlanError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4414            CreateUsagePlanError::Unauthorized(ref cause) => write!(f, "{}", cause),
4415        }
4416    }
4417}
4418impl Error for CreateUsagePlanError {}
4419/// Errors returned by CreateUsagePlanKey
4420#[derive(Debug, PartialEq)]
4421pub enum CreateUsagePlanKeyError {
4422    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4423    BadRequest(String),
4424    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
4425    Conflict(String),
4426    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4427    NotFound(String),
4428    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4429    TooManyRequests(String),
4430    /// <p>The request is denied because the caller has insufficient permissions.</p>
4431    Unauthorized(String),
4432}
4433
4434impl CreateUsagePlanKeyError {
4435    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateUsagePlanKeyError> {
4436        if let Some(err) = proto::json::Error::parse_rest(&res) {
4437            match err.typ.as_str() {
4438                "BadRequestException" => {
4439                    return RusotoError::Service(CreateUsagePlanKeyError::BadRequest(err.msg))
4440                }
4441                "ConflictException" => {
4442                    return RusotoError::Service(CreateUsagePlanKeyError::Conflict(err.msg))
4443                }
4444                "NotFoundException" => {
4445                    return RusotoError::Service(CreateUsagePlanKeyError::NotFound(err.msg))
4446                }
4447                "TooManyRequestsException" => {
4448                    return RusotoError::Service(CreateUsagePlanKeyError::TooManyRequests(err.msg))
4449                }
4450                "UnauthorizedException" => {
4451                    return RusotoError::Service(CreateUsagePlanKeyError::Unauthorized(err.msg))
4452                }
4453                "ValidationException" => return RusotoError::Validation(err.msg),
4454                _ => {}
4455            }
4456        }
4457        RusotoError::Unknown(res)
4458    }
4459}
4460impl fmt::Display for CreateUsagePlanKeyError {
4461    #[allow(unused_variables)]
4462    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4463        match *self {
4464            CreateUsagePlanKeyError::BadRequest(ref cause) => write!(f, "{}", cause),
4465            CreateUsagePlanKeyError::Conflict(ref cause) => write!(f, "{}", cause),
4466            CreateUsagePlanKeyError::NotFound(ref cause) => write!(f, "{}", cause),
4467            CreateUsagePlanKeyError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4468            CreateUsagePlanKeyError::Unauthorized(ref cause) => write!(f, "{}", cause),
4469        }
4470    }
4471}
4472impl Error for CreateUsagePlanKeyError {}
4473/// Errors returned by CreateVpcLink
4474#[derive(Debug, PartialEq)]
4475pub enum CreateVpcLinkError {
4476    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4477    BadRequest(String),
4478    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4479    TooManyRequests(String),
4480    /// <p>The request is denied because the caller has insufficient permissions.</p>
4481    Unauthorized(String),
4482}
4483
4484impl CreateVpcLinkError {
4485    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateVpcLinkError> {
4486        if let Some(err) = proto::json::Error::parse_rest(&res) {
4487            match err.typ.as_str() {
4488                "BadRequestException" => {
4489                    return RusotoError::Service(CreateVpcLinkError::BadRequest(err.msg))
4490                }
4491                "TooManyRequestsException" => {
4492                    return RusotoError::Service(CreateVpcLinkError::TooManyRequests(err.msg))
4493                }
4494                "UnauthorizedException" => {
4495                    return RusotoError::Service(CreateVpcLinkError::Unauthorized(err.msg))
4496                }
4497                "ValidationException" => return RusotoError::Validation(err.msg),
4498                _ => {}
4499            }
4500        }
4501        RusotoError::Unknown(res)
4502    }
4503}
4504impl fmt::Display for CreateVpcLinkError {
4505    #[allow(unused_variables)]
4506    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4507        match *self {
4508            CreateVpcLinkError::BadRequest(ref cause) => write!(f, "{}", cause),
4509            CreateVpcLinkError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4510            CreateVpcLinkError::Unauthorized(ref cause) => write!(f, "{}", cause),
4511        }
4512    }
4513}
4514impl Error for CreateVpcLinkError {}
4515/// Errors returned by DeleteApiKey
4516#[derive(Debug, PartialEq)]
4517pub enum DeleteApiKeyError {
4518    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4519    NotFound(String),
4520    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4521    TooManyRequests(String),
4522    /// <p>The request is denied because the caller has insufficient permissions.</p>
4523    Unauthorized(String),
4524}
4525
4526impl DeleteApiKeyError {
4527    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteApiKeyError> {
4528        if let Some(err) = proto::json::Error::parse_rest(&res) {
4529            match err.typ.as_str() {
4530                "NotFoundException" => {
4531                    return RusotoError::Service(DeleteApiKeyError::NotFound(err.msg))
4532                }
4533                "TooManyRequestsException" => {
4534                    return RusotoError::Service(DeleteApiKeyError::TooManyRequests(err.msg))
4535                }
4536                "UnauthorizedException" => {
4537                    return RusotoError::Service(DeleteApiKeyError::Unauthorized(err.msg))
4538                }
4539                "ValidationException" => return RusotoError::Validation(err.msg),
4540                _ => {}
4541            }
4542        }
4543        RusotoError::Unknown(res)
4544    }
4545}
4546impl fmt::Display for DeleteApiKeyError {
4547    #[allow(unused_variables)]
4548    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4549        match *self {
4550            DeleteApiKeyError::NotFound(ref cause) => write!(f, "{}", cause),
4551            DeleteApiKeyError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4552            DeleteApiKeyError::Unauthorized(ref cause) => write!(f, "{}", cause),
4553        }
4554    }
4555}
4556impl Error for DeleteApiKeyError {}
4557/// Errors returned by DeleteAuthorizer
4558#[derive(Debug, PartialEq)]
4559pub enum DeleteAuthorizerError {
4560    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4561    BadRequest(String),
4562    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
4563    Conflict(String),
4564    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4565    NotFound(String),
4566    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4567    TooManyRequests(String),
4568    /// <p>The request is denied because the caller has insufficient permissions.</p>
4569    Unauthorized(String),
4570}
4571
4572impl DeleteAuthorizerError {
4573    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteAuthorizerError> {
4574        if let Some(err) = proto::json::Error::parse_rest(&res) {
4575            match err.typ.as_str() {
4576                "BadRequestException" => {
4577                    return RusotoError::Service(DeleteAuthorizerError::BadRequest(err.msg))
4578                }
4579                "ConflictException" => {
4580                    return RusotoError::Service(DeleteAuthorizerError::Conflict(err.msg))
4581                }
4582                "NotFoundException" => {
4583                    return RusotoError::Service(DeleteAuthorizerError::NotFound(err.msg))
4584                }
4585                "TooManyRequestsException" => {
4586                    return RusotoError::Service(DeleteAuthorizerError::TooManyRequests(err.msg))
4587                }
4588                "UnauthorizedException" => {
4589                    return RusotoError::Service(DeleteAuthorizerError::Unauthorized(err.msg))
4590                }
4591                "ValidationException" => return RusotoError::Validation(err.msg),
4592                _ => {}
4593            }
4594        }
4595        RusotoError::Unknown(res)
4596    }
4597}
4598impl fmt::Display for DeleteAuthorizerError {
4599    #[allow(unused_variables)]
4600    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4601        match *self {
4602            DeleteAuthorizerError::BadRequest(ref cause) => write!(f, "{}", cause),
4603            DeleteAuthorizerError::Conflict(ref cause) => write!(f, "{}", cause),
4604            DeleteAuthorizerError::NotFound(ref cause) => write!(f, "{}", cause),
4605            DeleteAuthorizerError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4606            DeleteAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
4607        }
4608    }
4609}
4610impl Error for DeleteAuthorizerError {}
4611/// Errors returned by DeleteBasePathMapping
4612#[derive(Debug, PartialEq)]
4613pub enum DeleteBasePathMappingError {
4614    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4615    BadRequest(String),
4616    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
4617    Conflict(String),
4618    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4619    NotFound(String),
4620    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4621    TooManyRequests(String),
4622    /// <p>The request is denied because the caller has insufficient permissions.</p>
4623    Unauthorized(String),
4624}
4625
4626impl DeleteBasePathMappingError {
4627    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteBasePathMappingError> {
4628        if let Some(err) = proto::json::Error::parse_rest(&res) {
4629            match err.typ.as_str() {
4630                "BadRequestException" => {
4631                    return RusotoError::Service(DeleteBasePathMappingError::BadRequest(err.msg))
4632                }
4633                "ConflictException" => {
4634                    return RusotoError::Service(DeleteBasePathMappingError::Conflict(err.msg))
4635                }
4636                "NotFoundException" => {
4637                    return RusotoError::Service(DeleteBasePathMappingError::NotFound(err.msg))
4638                }
4639                "TooManyRequestsException" => {
4640                    return RusotoError::Service(DeleteBasePathMappingError::TooManyRequests(
4641                        err.msg,
4642                    ))
4643                }
4644                "UnauthorizedException" => {
4645                    return RusotoError::Service(DeleteBasePathMappingError::Unauthorized(err.msg))
4646                }
4647                "ValidationException" => return RusotoError::Validation(err.msg),
4648                _ => {}
4649            }
4650        }
4651        RusotoError::Unknown(res)
4652    }
4653}
4654impl fmt::Display for DeleteBasePathMappingError {
4655    #[allow(unused_variables)]
4656    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4657        match *self {
4658            DeleteBasePathMappingError::BadRequest(ref cause) => write!(f, "{}", cause),
4659            DeleteBasePathMappingError::Conflict(ref cause) => write!(f, "{}", cause),
4660            DeleteBasePathMappingError::NotFound(ref cause) => write!(f, "{}", cause),
4661            DeleteBasePathMappingError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4662            DeleteBasePathMappingError::Unauthorized(ref cause) => write!(f, "{}", cause),
4663        }
4664    }
4665}
4666impl Error for DeleteBasePathMappingError {}
4667/// Errors returned by DeleteClientCertificate
4668#[derive(Debug, PartialEq)]
4669pub enum DeleteClientCertificateError {
4670    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4671    BadRequest(String),
4672    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4673    NotFound(String),
4674    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4675    TooManyRequests(String),
4676    /// <p>The request is denied because the caller has insufficient permissions.</p>
4677    Unauthorized(String),
4678}
4679
4680impl DeleteClientCertificateError {
4681    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteClientCertificateError> {
4682        if let Some(err) = proto::json::Error::parse_rest(&res) {
4683            match err.typ.as_str() {
4684                "BadRequestException" => {
4685                    return RusotoError::Service(DeleteClientCertificateError::BadRequest(err.msg))
4686                }
4687                "NotFoundException" => {
4688                    return RusotoError::Service(DeleteClientCertificateError::NotFound(err.msg))
4689                }
4690                "TooManyRequestsException" => {
4691                    return RusotoError::Service(DeleteClientCertificateError::TooManyRequests(
4692                        err.msg,
4693                    ))
4694                }
4695                "UnauthorizedException" => {
4696                    return RusotoError::Service(DeleteClientCertificateError::Unauthorized(
4697                        err.msg,
4698                    ))
4699                }
4700                "ValidationException" => return RusotoError::Validation(err.msg),
4701                _ => {}
4702            }
4703        }
4704        RusotoError::Unknown(res)
4705    }
4706}
4707impl fmt::Display for DeleteClientCertificateError {
4708    #[allow(unused_variables)]
4709    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4710        match *self {
4711            DeleteClientCertificateError::BadRequest(ref cause) => write!(f, "{}", cause),
4712            DeleteClientCertificateError::NotFound(ref cause) => write!(f, "{}", cause),
4713            DeleteClientCertificateError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4714            DeleteClientCertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
4715        }
4716    }
4717}
4718impl Error for DeleteClientCertificateError {}
4719/// Errors returned by DeleteDeployment
4720#[derive(Debug, PartialEq)]
4721pub enum DeleteDeploymentError {
4722    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4723    BadRequest(String),
4724    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4725    NotFound(String),
4726    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4727    TooManyRequests(String),
4728    /// <p>The request is denied because the caller has insufficient permissions.</p>
4729    Unauthorized(String),
4730}
4731
4732impl DeleteDeploymentError {
4733    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDeploymentError> {
4734        if let Some(err) = proto::json::Error::parse_rest(&res) {
4735            match err.typ.as_str() {
4736                "BadRequestException" => {
4737                    return RusotoError::Service(DeleteDeploymentError::BadRequest(err.msg))
4738                }
4739                "NotFoundException" => {
4740                    return RusotoError::Service(DeleteDeploymentError::NotFound(err.msg))
4741                }
4742                "TooManyRequestsException" => {
4743                    return RusotoError::Service(DeleteDeploymentError::TooManyRequests(err.msg))
4744                }
4745                "UnauthorizedException" => {
4746                    return RusotoError::Service(DeleteDeploymentError::Unauthorized(err.msg))
4747                }
4748                "ValidationException" => return RusotoError::Validation(err.msg),
4749                _ => {}
4750            }
4751        }
4752        RusotoError::Unknown(res)
4753    }
4754}
4755impl fmt::Display for DeleteDeploymentError {
4756    #[allow(unused_variables)]
4757    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4758        match *self {
4759            DeleteDeploymentError::BadRequest(ref cause) => write!(f, "{}", cause),
4760            DeleteDeploymentError::NotFound(ref cause) => write!(f, "{}", cause),
4761            DeleteDeploymentError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4762            DeleteDeploymentError::Unauthorized(ref cause) => write!(f, "{}", cause),
4763        }
4764    }
4765}
4766impl Error for DeleteDeploymentError {}
4767/// Errors returned by DeleteDocumentationPart
4768#[derive(Debug, PartialEq)]
4769pub enum DeleteDocumentationPartError {
4770    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4771    BadRequest(String),
4772    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
4773    Conflict(String),
4774    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4775    NotFound(String),
4776    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4777    TooManyRequests(String),
4778    /// <p>The request is denied because the caller has insufficient permissions.</p>
4779    Unauthorized(String),
4780}
4781
4782impl DeleteDocumentationPartError {
4783    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDocumentationPartError> {
4784        if let Some(err) = proto::json::Error::parse_rest(&res) {
4785            match err.typ.as_str() {
4786                "BadRequestException" => {
4787                    return RusotoError::Service(DeleteDocumentationPartError::BadRequest(err.msg))
4788                }
4789                "ConflictException" => {
4790                    return RusotoError::Service(DeleteDocumentationPartError::Conflict(err.msg))
4791                }
4792                "NotFoundException" => {
4793                    return RusotoError::Service(DeleteDocumentationPartError::NotFound(err.msg))
4794                }
4795                "TooManyRequestsException" => {
4796                    return RusotoError::Service(DeleteDocumentationPartError::TooManyRequests(
4797                        err.msg,
4798                    ))
4799                }
4800                "UnauthorizedException" => {
4801                    return RusotoError::Service(DeleteDocumentationPartError::Unauthorized(
4802                        err.msg,
4803                    ))
4804                }
4805                "ValidationException" => return RusotoError::Validation(err.msg),
4806                _ => {}
4807            }
4808        }
4809        RusotoError::Unknown(res)
4810    }
4811}
4812impl fmt::Display for DeleteDocumentationPartError {
4813    #[allow(unused_variables)]
4814    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4815        match *self {
4816            DeleteDocumentationPartError::BadRequest(ref cause) => write!(f, "{}", cause),
4817            DeleteDocumentationPartError::Conflict(ref cause) => write!(f, "{}", cause),
4818            DeleteDocumentationPartError::NotFound(ref cause) => write!(f, "{}", cause),
4819            DeleteDocumentationPartError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4820            DeleteDocumentationPartError::Unauthorized(ref cause) => write!(f, "{}", cause),
4821        }
4822    }
4823}
4824impl Error for DeleteDocumentationPartError {}
4825/// Errors returned by DeleteDocumentationVersion
4826#[derive(Debug, PartialEq)]
4827pub enum DeleteDocumentationVersionError {
4828    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4829    BadRequest(String),
4830    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
4831    Conflict(String),
4832    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4833    NotFound(String),
4834    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4835    TooManyRequests(String),
4836    /// <p>The request is denied because the caller has insufficient permissions.</p>
4837    Unauthorized(String),
4838}
4839
4840impl DeleteDocumentationVersionError {
4841    pub fn from_response(
4842        res: BufferedHttpResponse,
4843    ) -> RusotoError<DeleteDocumentationVersionError> {
4844        if let Some(err) = proto::json::Error::parse_rest(&res) {
4845            match err.typ.as_str() {
4846                "BadRequestException" => {
4847                    return RusotoError::Service(DeleteDocumentationVersionError::BadRequest(
4848                        err.msg,
4849                    ))
4850                }
4851                "ConflictException" => {
4852                    return RusotoError::Service(DeleteDocumentationVersionError::Conflict(err.msg))
4853                }
4854                "NotFoundException" => {
4855                    return RusotoError::Service(DeleteDocumentationVersionError::NotFound(err.msg))
4856                }
4857                "TooManyRequestsException" => {
4858                    return RusotoError::Service(DeleteDocumentationVersionError::TooManyRequests(
4859                        err.msg,
4860                    ))
4861                }
4862                "UnauthorizedException" => {
4863                    return RusotoError::Service(DeleteDocumentationVersionError::Unauthorized(
4864                        err.msg,
4865                    ))
4866                }
4867                "ValidationException" => return RusotoError::Validation(err.msg),
4868                _ => {}
4869            }
4870        }
4871        RusotoError::Unknown(res)
4872    }
4873}
4874impl fmt::Display for DeleteDocumentationVersionError {
4875    #[allow(unused_variables)]
4876    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4877        match *self {
4878            DeleteDocumentationVersionError::BadRequest(ref cause) => write!(f, "{}", cause),
4879            DeleteDocumentationVersionError::Conflict(ref cause) => write!(f, "{}", cause),
4880            DeleteDocumentationVersionError::NotFound(ref cause) => write!(f, "{}", cause),
4881            DeleteDocumentationVersionError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4882            DeleteDocumentationVersionError::Unauthorized(ref cause) => write!(f, "{}", cause),
4883        }
4884    }
4885}
4886impl Error for DeleteDocumentationVersionError {}
4887/// Errors returned by DeleteDomainName
4888#[derive(Debug, PartialEq)]
4889pub enum DeleteDomainNameError {
4890    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4891    BadRequest(String),
4892    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4893    NotFound(String),
4894    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4895    TooManyRequests(String),
4896    /// <p>The request is denied because the caller has insufficient permissions.</p>
4897    Unauthorized(String),
4898}
4899
4900impl DeleteDomainNameError {
4901    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDomainNameError> {
4902        if let Some(err) = proto::json::Error::parse_rest(&res) {
4903            match err.typ.as_str() {
4904                "BadRequestException" => {
4905                    return RusotoError::Service(DeleteDomainNameError::BadRequest(err.msg))
4906                }
4907                "NotFoundException" => {
4908                    return RusotoError::Service(DeleteDomainNameError::NotFound(err.msg))
4909                }
4910                "TooManyRequestsException" => {
4911                    return RusotoError::Service(DeleteDomainNameError::TooManyRequests(err.msg))
4912                }
4913                "UnauthorizedException" => {
4914                    return RusotoError::Service(DeleteDomainNameError::Unauthorized(err.msg))
4915                }
4916                "ValidationException" => return RusotoError::Validation(err.msg),
4917                _ => {}
4918            }
4919        }
4920        RusotoError::Unknown(res)
4921    }
4922}
4923impl fmt::Display for DeleteDomainNameError {
4924    #[allow(unused_variables)]
4925    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4926        match *self {
4927            DeleteDomainNameError::BadRequest(ref cause) => write!(f, "{}", cause),
4928            DeleteDomainNameError::NotFound(ref cause) => write!(f, "{}", cause),
4929            DeleteDomainNameError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4930            DeleteDomainNameError::Unauthorized(ref cause) => write!(f, "{}", cause),
4931        }
4932    }
4933}
4934impl Error for DeleteDomainNameError {}
4935/// Errors returned by DeleteGatewayResponse
4936#[derive(Debug, PartialEq)]
4937pub enum DeleteGatewayResponseError {
4938    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
4939    BadRequest(String),
4940    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
4941    Conflict(String),
4942    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4943    NotFound(String),
4944    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4945    TooManyRequests(String),
4946    /// <p>The request is denied because the caller has insufficient permissions.</p>
4947    Unauthorized(String),
4948}
4949
4950impl DeleteGatewayResponseError {
4951    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteGatewayResponseError> {
4952        if let Some(err) = proto::json::Error::parse_rest(&res) {
4953            match err.typ.as_str() {
4954                "BadRequestException" => {
4955                    return RusotoError::Service(DeleteGatewayResponseError::BadRequest(err.msg))
4956                }
4957                "ConflictException" => {
4958                    return RusotoError::Service(DeleteGatewayResponseError::Conflict(err.msg))
4959                }
4960                "NotFoundException" => {
4961                    return RusotoError::Service(DeleteGatewayResponseError::NotFound(err.msg))
4962                }
4963                "TooManyRequestsException" => {
4964                    return RusotoError::Service(DeleteGatewayResponseError::TooManyRequests(
4965                        err.msg,
4966                    ))
4967                }
4968                "UnauthorizedException" => {
4969                    return RusotoError::Service(DeleteGatewayResponseError::Unauthorized(err.msg))
4970                }
4971                "ValidationException" => return RusotoError::Validation(err.msg),
4972                _ => {}
4973            }
4974        }
4975        RusotoError::Unknown(res)
4976    }
4977}
4978impl fmt::Display for DeleteGatewayResponseError {
4979    #[allow(unused_variables)]
4980    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4981        match *self {
4982            DeleteGatewayResponseError::BadRequest(ref cause) => write!(f, "{}", cause),
4983            DeleteGatewayResponseError::Conflict(ref cause) => write!(f, "{}", cause),
4984            DeleteGatewayResponseError::NotFound(ref cause) => write!(f, "{}", cause),
4985            DeleteGatewayResponseError::TooManyRequests(ref cause) => write!(f, "{}", cause),
4986            DeleteGatewayResponseError::Unauthorized(ref cause) => write!(f, "{}", cause),
4987        }
4988    }
4989}
4990impl Error for DeleteGatewayResponseError {}
4991/// Errors returned by DeleteIntegration
4992#[derive(Debug, PartialEq)]
4993pub enum DeleteIntegrationError {
4994    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
4995    Conflict(String),
4996    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
4997    NotFound(String),
4998    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
4999    TooManyRequests(String),
5000    /// <p>The request is denied because the caller has insufficient permissions.</p>
5001    Unauthorized(String),
5002}
5003
5004impl DeleteIntegrationError {
5005    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteIntegrationError> {
5006        if let Some(err) = proto::json::Error::parse_rest(&res) {
5007            match err.typ.as_str() {
5008                "ConflictException" => {
5009                    return RusotoError::Service(DeleteIntegrationError::Conflict(err.msg))
5010                }
5011                "NotFoundException" => {
5012                    return RusotoError::Service(DeleteIntegrationError::NotFound(err.msg))
5013                }
5014                "TooManyRequestsException" => {
5015                    return RusotoError::Service(DeleteIntegrationError::TooManyRequests(err.msg))
5016                }
5017                "UnauthorizedException" => {
5018                    return RusotoError::Service(DeleteIntegrationError::Unauthorized(err.msg))
5019                }
5020                "ValidationException" => return RusotoError::Validation(err.msg),
5021                _ => {}
5022            }
5023        }
5024        RusotoError::Unknown(res)
5025    }
5026}
5027impl fmt::Display for DeleteIntegrationError {
5028    #[allow(unused_variables)]
5029    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5030        match *self {
5031            DeleteIntegrationError::Conflict(ref cause) => write!(f, "{}", cause),
5032            DeleteIntegrationError::NotFound(ref cause) => write!(f, "{}", cause),
5033            DeleteIntegrationError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5034            DeleteIntegrationError::Unauthorized(ref cause) => write!(f, "{}", cause),
5035        }
5036    }
5037}
5038impl Error for DeleteIntegrationError {}
5039/// Errors returned by DeleteIntegrationResponse
5040#[derive(Debug, PartialEq)]
5041pub enum DeleteIntegrationResponseError {
5042    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5043    BadRequest(String),
5044    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
5045    Conflict(String),
5046    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5047    NotFound(String),
5048    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5049    TooManyRequests(String),
5050    /// <p>The request is denied because the caller has insufficient permissions.</p>
5051    Unauthorized(String),
5052}
5053
5054impl DeleteIntegrationResponseError {
5055    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteIntegrationResponseError> {
5056        if let Some(err) = proto::json::Error::parse_rest(&res) {
5057            match err.typ.as_str() {
5058                "BadRequestException" => {
5059                    return RusotoError::Service(DeleteIntegrationResponseError::BadRequest(
5060                        err.msg,
5061                    ))
5062                }
5063                "ConflictException" => {
5064                    return RusotoError::Service(DeleteIntegrationResponseError::Conflict(err.msg))
5065                }
5066                "NotFoundException" => {
5067                    return RusotoError::Service(DeleteIntegrationResponseError::NotFound(err.msg))
5068                }
5069                "TooManyRequestsException" => {
5070                    return RusotoError::Service(DeleteIntegrationResponseError::TooManyRequests(
5071                        err.msg,
5072                    ))
5073                }
5074                "UnauthorizedException" => {
5075                    return RusotoError::Service(DeleteIntegrationResponseError::Unauthorized(
5076                        err.msg,
5077                    ))
5078                }
5079                "ValidationException" => return RusotoError::Validation(err.msg),
5080                _ => {}
5081            }
5082        }
5083        RusotoError::Unknown(res)
5084    }
5085}
5086impl fmt::Display for DeleteIntegrationResponseError {
5087    #[allow(unused_variables)]
5088    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5089        match *self {
5090            DeleteIntegrationResponseError::BadRequest(ref cause) => write!(f, "{}", cause),
5091            DeleteIntegrationResponseError::Conflict(ref cause) => write!(f, "{}", cause),
5092            DeleteIntegrationResponseError::NotFound(ref cause) => write!(f, "{}", cause),
5093            DeleteIntegrationResponseError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5094            DeleteIntegrationResponseError::Unauthorized(ref cause) => write!(f, "{}", cause),
5095        }
5096    }
5097}
5098impl Error for DeleteIntegrationResponseError {}
5099/// Errors returned by DeleteMethod
5100#[derive(Debug, PartialEq)]
5101pub enum DeleteMethodError {
5102    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
5103    Conflict(String),
5104    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5105    NotFound(String),
5106    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5107    TooManyRequests(String),
5108    /// <p>The request is denied because the caller has insufficient permissions.</p>
5109    Unauthorized(String),
5110}
5111
5112impl DeleteMethodError {
5113    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteMethodError> {
5114        if let Some(err) = proto::json::Error::parse_rest(&res) {
5115            match err.typ.as_str() {
5116                "ConflictException" => {
5117                    return RusotoError::Service(DeleteMethodError::Conflict(err.msg))
5118                }
5119                "NotFoundException" => {
5120                    return RusotoError::Service(DeleteMethodError::NotFound(err.msg))
5121                }
5122                "TooManyRequestsException" => {
5123                    return RusotoError::Service(DeleteMethodError::TooManyRequests(err.msg))
5124                }
5125                "UnauthorizedException" => {
5126                    return RusotoError::Service(DeleteMethodError::Unauthorized(err.msg))
5127                }
5128                "ValidationException" => return RusotoError::Validation(err.msg),
5129                _ => {}
5130            }
5131        }
5132        RusotoError::Unknown(res)
5133    }
5134}
5135impl fmt::Display for DeleteMethodError {
5136    #[allow(unused_variables)]
5137    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5138        match *self {
5139            DeleteMethodError::Conflict(ref cause) => write!(f, "{}", cause),
5140            DeleteMethodError::NotFound(ref cause) => write!(f, "{}", cause),
5141            DeleteMethodError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5142            DeleteMethodError::Unauthorized(ref cause) => write!(f, "{}", cause),
5143        }
5144    }
5145}
5146impl Error for DeleteMethodError {}
5147/// Errors returned by DeleteMethodResponse
5148#[derive(Debug, PartialEq)]
5149pub enum DeleteMethodResponseError {
5150    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5151    BadRequest(String),
5152    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
5153    Conflict(String),
5154    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5155    NotFound(String),
5156    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5157    TooManyRequests(String),
5158    /// <p>The request is denied because the caller has insufficient permissions.</p>
5159    Unauthorized(String),
5160}
5161
5162impl DeleteMethodResponseError {
5163    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteMethodResponseError> {
5164        if let Some(err) = proto::json::Error::parse_rest(&res) {
5165            match err.typ.as_str() {
5166                "BadRequestException" => {
5167                    return RusotoError::Service(DeleteMethodResponseError::BadRequest(err.msg))
5168                }
5169                "ConflictException" => {
5170                    return RusotoError::Service(DeleteMethodResponseError::Conflict(err.msg))
5171                }
5172                "NotFoundException" => {
5173                    return RusotoError::Service(DeleteMethodResponseError::NotFound(err.msg))
5174                }
5175                "TooManyRequestsException" => {
5176                    return RusotoError::Service(DeleteMethodResponseError::TooManyRequests(
5177                        err.msg,
5178                    ))
5179                }
5180                "UnauthorizedException" => {
5181                    return RusotoError::Service(DeleteMethodResponseError::Unauthorized(err.msg))
5182                }
5183                "ValidationException" => return RusotoError::Validation(err.msg),
5184                _ => {}
5185            }
5186        }
5187        RusotoError::Unknown(res)
5188    }
5189}
5190impl fmt::Display for DeleteMethodResponseError {
5191    #[allow(unused_variables)]
5192    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5193        match *self {
5194            DeleteMethodResponseError::BadRequest(ref cause) => write!(f, "{}", cause),
5195            DeleteMethodResponseError::Conflict(ref cause) => write!(f, "{}", cause),
5196            DeleteMethodResponseError::NotFound(ref cause) => write!(f, "{}", cause),
5197            DeleteMethodResponseError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5198            DeleteMethodResponseError::Unauthorized(ref cause) => write!(f, "{}", cause),
5199        }
5200    }
5201}
5202impl Error for DeleteMethodResponseError {}
5203/// Errors returned by DeleteModel
5204#[derive(Debug, PartialEq)]
5205pub enum DeleteModelError {
5206    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5207    BadRequest(String),
5208    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
5209    Conflict(String),
5210    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5211    NotFound(String),
5212    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5213    TooManyRequests(String),
5214    /// <p>The request is denied because the caller has insufficient permissions.</p>
5215    Unauthorized(String),
5216}
5217
5218impl DeleteModelError {
5219    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteModelError> {
5220        if let Some(err) = proto::json::Error::parse_rest(&res) {
5221            match err.typ.as_str() {
5222                "BadRequestException" => {
5223                    return RusotoError::Service(DeleteModelError::BadRequest(err.msg))
5224                }
5225                "ConflictException" => {
5226                    return RusotoError::Service(DeleteModelError::Conflict(err.msg))
5227                }
5228                "NotFoundException" => {
5229                    return RusotoError::Service(DeleteModelError::NotFound(err.msg))
5230                }
5231                "TooManyRequestsException" => {
5232                    return RusotoError::Service(DeleteModelError::TooManyRequests(err.msg))
5233                }
5234                "UnauthorizedException" => {
5235                    return RusotoError::Service(DeleteModelError::Unauthorized(err.msg))
5236                }
5237                "ValidationException" => return RusotoError::Validation(err.msg),
5238                _ => {}
5239            }
5240        }
5241        RusotoError::Unknown(res)
5242    }
5243}
5244impl fmt::Display for DeleteModelError {
5245    #[allow(unused_variables)]
5246    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5247        match *self {
5248            DeleteModelError::BadRequest(ref cause) => write!(f, "{}", cause),
5249            DeleteModelError::Conflict(ref cause) => write!(f, "{}", cause),
5250            DeleteModelError::NotFound(ref cause) => write!(f, "{}", cause),
5251            DeleteModelError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5252            DeleteModelError::Unauthorized(ref cause) => write!(f, "{}", cause),
5253        }
5254    }
5255}
5256impl Error for DeleteModelError {}
5257/// Errors returned by DeleteRequestValidator
5258#[derive(Debug, PartialEq)]
5259pub enum DeleteRequestValidatorError {
5260    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5261    BadRequest(String),
5262    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
5263    Conflict(String),
5264    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5265    NotFound(String),
5266    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5267    TooManyRequests(String),
5268    /// <p>The request is denied because the caller has insufficient permissions.</p>
5269    Unauthorized(String),
5270}
5271
5272impl DeleteRequestValidatorError {
5273    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteRequestValidatorError> {
5274        if let Some(err) = proto::json::Error::parse_rest(&res) {
5275            match err.typ.as_str() {
5276                "BadRequestException" => {
5277                    return RusotoError::Service(DeleteRequestValidatorError::BadRequest(err.msg))
5278                }
5279                "ConflictException" => {
5280                    return RusotoError::Service(DeleteRequestValidatorError::Conflict(err.msg))
5281                }
5282                "NotFoundException" => {
5283                    return RusotoError::Service(DeleteRequestValidatorError::NotFound(err.msg))
5284                }
5285                "TooManyRequestsException" => {
5286                    return RusotoError::Service(DeleteRequestValidatorError::TooManyRequests(
5287                        err.msg,
5288                    ))
5289                }
5290                "UnauthorizedException" => {
5291                    return RusotoError::Service(DeleteRequestValidatorError::Unauthorized(err.msg))
5292                }
5293                "ValidationException" => return RusotoError::Validation(err.msg),
5294                _ => {}
5295            }
5296        }
5297        RusotoError::Unknown(res)
5298    }
5299}
5300impl fmt::Display for DeleteRequestValidatorError {
5301    #[allow(unused_variables)]
5302    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5303        match *self {
5304            DeleteRequestValidatorError::BadRequest(ref cause) => write!(f, "{}", cause),
5305            DeleteRequestValidatorError::Conflict(ref cause) => write!(f, "{}", cause),
5306            DeleteRequestValidatorError::NotFound(ref cause) => write!(f, "{}", cause),
5307            DeleteRequestValidatorError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5308            DeleteRequestValidatorError::Unauthorized(ref cause) => write!(f, "{}", cause),
5309        }
5310    }
5311}
5312impl Error for DeleteRequestValidatorError {}
5313/// Errors returned by DeleteResource
5314#[derive(Debug, PartialEq)]
5315pub enum DeleteResourceError {
5316    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5317    BadRequest(String),
5318    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
5319    Conflict(String),
5320    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5321    NotFound(String),
5322    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5323    TooManyRequests(String),
5324    /// <p>The request is denied because the caller has insufficient permissions.</p>
5325    Unauthorized(String),
5326}
5327
5328impl DeleteResourceError {
5329    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteResourceError> {
5330        if let Some(err) = proto::json::Error::parse_rest(&res) {
5331            match err.typ.as_str() {
5332                "BadRequestException" => {
5333                    return RusotoError::Service(DeleteResourceError::BadRequest(err.msg))
5334                }
5335                "ConflictException" => {
5336                    return RusotoError::Service(DeleteResourceError::Conflict(err.msg))
5337                }
5338                "NotFoundException" => {
5339                    return RusotoError::Service(DeleteResourceError::NotFound(err.msg))
5340                }
5341                "TooManyRequestsException" => {
5342                    return RusotoError::Service(DeleteResourceError::TooManyRequests(err.msg))
5343                }
5344                "UnauthorizedException" => {
5345                    return RusotoError::Service(DeleteResourceError::Unauthorized(err.msg))
5346                }
5347                "ValidationException" => return RusotoError::Validation(err.msg),
5348                _ => {}
5349            }
5350        }
5351        RusotoError::Unknown(res)
5352    }
5353}
5354impl fmt::Display for DeleteResourceError {
5355    #[allow(unused_variables)]
5356    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5357        match *self {
5358            DeleteResourceError::BadRequest(ref cause) => write!(f, "{}", cause),
5359            DeleteResourceError::Conflict(ref cause) => write!(f, "{}", cause),
5360            DeleteResourceError::NotFound(ref cause) => write!(f, "{}", cause),
5361            DeleteResourceError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5362            DeleteResourceError::Unauthorized(ref cause) => write!(f, "{}", cause),
5363        }
5364    }
5365}
5366impl Error for DeleteResourceError {}
5367/// Errors returned by DeleteRestApi
5368#[derive(Debug, PartialEq)]
5369pub enum DeleteRestApiError {
5370    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5371    BadRequest(String),
5372    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5373    NotFound(String),
5374    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5375    TooManyRequests(String),
5376    /// <p>The request is denied because the caller has insufficient permissions.</p>
5377    Unauthorized(String),
5378}
5379
5380impl DeleteRestApiError {
5381    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteRestApiError> {
5382        if let Some(err) = proto::json::Error::parse_rest(&res) {
5383            match err.typ.as_str() {
5384                "BadRequestException" => {
5385                    return RusotoError::Service(DeleteRestApiError::BadRequest(err.msg))
5386                }
5387                "NotFoundException" => {
5388                    return RusotoError::Service(DeleteRestApiError::NotFound(err.msg))
5389                }
5390                "TooManyRequestsException" => {
5391                    return RusotoError::Service(DeleteRestApiError::TooManyRequests(err.msg))
5392                }
5393                "UnauthorizedException" => {
5394                    return RusotoError::Service(DeleteRestApiError::Unauthorized(err.msg))
5395                }
5396                "ValidationException" => return RusotoError::Validation(err.msg),
5397                _ => {}
5398            }
5399        }
5400        RusotoError::Unknown(res)
5401    }
5402}
5403impl fmt::Display for DeleteRestApiError {
5404    #[allow(unused_variables)]
5405    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5406        match *self {
5407            DeleteRestApiError::BadRequest(ref cause) => write!(f, "{}", cause),
5408            DeleteRestApiError::NotFound(ref cause) => write!(f, "{}", cause),
5409            DeleteRestApiError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5410            DeleteRestApiError::Unauthorized(ref cause) => write!(f, "{}", cause),
5411        }
5412    }
5413}
5414impl Error for DeleteRestApiError {}
5415/// Errors returned by DeleteStage
5416#[derive(Debug, PartialEq)]
5417pub enum DeleteStageError {
5418    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5419    BadRequest(String),
5420    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5421    NotFound(String),
5422    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5423    TooManyRequests(String),
5424    /// <p>The request is denied because the caller has insufficient permissions.</p>
5425    Unauthorized(String),
5426}
5427
5428impl DeleteStageError {
5429    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteStageError> {
5430        if let Some(err) = proto::json::Error::parse_rest(&res) {
5431            match err.typ.as_str() {
5432                "BadRequestException" => {
5433                    return RusotoError::Service(DeleteStageError::BadRequest(err.msg))
5434                }
5435                "NotFoundException" => {
5436                    return RusotoError::Service(DeleteStageError::NotFound(err.msg))
5437                }
5438                "TooManyRequestsException" => {
5439                    return RusotoError::Service(DeleteStageError::TooManyRequests(err.msg))
5440                }
5441                "UnauthorizedException" => {
5442                    return RusotoError::Service(DeleteStageError::Unauthorized(err.msg))
5443                }
5444                "ValidationException" => return RusotoError::Validation(err.msg),
5445                _ => {}
5446            }
5447        }
5448        RusotoError::Unknown(res)
5449    }
5450}
5451impl fmt::Display for DeleteStageError {
5452    #[allow(unused_variables)]
5453    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5454        match *self {
5455            DeleteStageError::BadRequest(ref cause) => write!(f, "{}", cause),
5456            DeleteStageError::NotFound(ref cause) => write!(f, "{}", cause),
5457            DeleteStageError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5458            DeleteStageError::Unauthorized(ref cause) => write!(f, "{}", cause),
5459        }
5460    }
5461}
5462impl Error for DeleteStageError {}
5463/// Errors returned by DeleteUsagePlan
5464#[derive(Debug, PartialEq)]
5465pub enum DeleteUsagePlanError {
5466    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5467    BadRequest(String),
5468    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5469    NotFound(String),
5470    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5471    TooManyRequests(String),
5472    /// <p>The request is denied because the caller has insufficient permissions.</p>
5473    Unauthorized(String),
5474}
5475
5476impl DeleteUsagePlanError {
5477    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteUsagePlanError> {
5478        if let Some(err) = proto::json::Error::parse_rest(&res) {
5479            match err.typ.as_str() {
5480                "BadRequestException" => {
5481                    return RusotoError::Service(DeleteUsagePlanError::BadRequest(err.msg))
5482                }
5483                "NotFoundException" => {
5484                    return RusotoError::Service(DeleteUsagePlanError::NotFound(err.msg))
5485                }
5486                "TooManyRequestsException" => {
5487                    return RusotoError::Service(DeleteUsagePlanError::TooManyRequests(err.msg))
5488                }
5489                "UnauthorizedException" => {
5490                    return RusotoError::Service(DeleteUsagePlanError::Unauthorized(err.msg))
5491                }
5492                "ValidationException" => return RusotoError::Validation(err.msg),
5493                _ => {}
5494            }
5495        }
5496        RusotoError::Unknown(res)
5497    }
5498}
5499impl fmt::Display for DeleteUsagePlanError {
5500    #[allow(unused_variables)]
5501    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5502        match *self {
5503            DeleteUsagePlanError::BadRequest(ref cause) => write!(f, "{}", cause),
5504            DeleteUsagePlanError::NotFound(ref cause) => write!(f, "{}", cause),
5505            DeleteUsagePlanError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5506            DeleteUsagePlanError::Unauthorized(ref cause) => write!(f, "{}", cause),
5507        }
5508    }
5509}
5510impl Error for DeleteUsagePlanError {}
5511/// Errors returned by DeleteUsagePlanKey
5512#[derive(Debug, PartialEq)]
5513pub enum DeleteUsagePlanKeyError {
5514    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5515    BadRequest(String),
5516    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
5517    Conflict(String),
5518    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5519    NotFound(String),
5520    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5521    TooManyRequests(String),
5522    /// <p>The request is denied because the caller has insufficient permissions.</p>
5523    Unauthorized(String),
5524}
5525
5526impl DeleteUsagePlanKeyError {
5527    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteUsagePlanKeyError> {
5528        if let Some(err) = proto::json::Error::parse_rest(&res) {
5529            match err.typ.as_str() {
5530                "BadRequestException" => {
5531                    return RusotoError::Service(DeleteUsagePlanKeyError::BadRequest(err.msg))
5532                }
5533                "ConflictException" => {
5534                    return RusotoError::Service(DeleteUsagePlanKeyError::Conflict(err.msg))
5535                }
5536                "NotFoundException" => {
5537                    return RusotoError::Service(DeleteUsagePlanKeyError::NotFound(err.msg))
5538                }
5539                "TooManyRequestsException" => {
5540                    return RusotoError::Service(DeleteUsagePlanKeyError::TooManyRequests(err.msg))
5541                }
5542                "UnauthorizedException" => {
5543                    return RusotoError::Service(DeleteUsagePlanKeyError::Unauthorized(err.msg))
5544                }
5545                "ValidationException" => return RusotoError::Validation(err.msg),
5546                _ => {}
5547            }
5548        }
5549        RusotoError::Unknown(res)
5550    }
5551}
5552impl fmt::Display for DeleteUsagePlanKeyError {
5553    #[allow(unused_variables)]
5554    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5555        match *self {
5556            DeleteUsagePlanKeyError::BadRequest(ref cause) => write!(f, "{}", cause),
5557            DeleteUsagePlanKeyError::Conflict(ref cause) => write!(f, "{}", cause),
5558            DeleteUsagePlanKeyError::NotFound(ref cause) => write!(f, "{}", cause),
5559            DeleteUsagePlanKeyError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5560            DeleteUsagePlanKeyError::Unauthorized(ref cause) => write!(f, "{}", cause),
5561        }
5562    }
5563}
5564impl Error for DeleteUsagePlanKeyError {}
5565/// Errors returned by DeleteVpcLink
5566#[derive(Debug, PartialEq)]
5567pub enum DeleteVpcLinkError {
5568    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5569    BadRequest(String),
5570    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5571    NotFound(String),
5572    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5573    TooManyRequests(String),
5574    /// <p>The request is denied because the caller has insufficient permissions.</p>
5575    Unauthorized(String),
5576}
5577
5578impl DeleteVpcLinkError {
5579    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteVpcLinkError> {
5580        if let Some(err) = proto::json::Error::parse_rest(&res) {
5581            match err.typ.as_str() {
5582                "BadRequestException" => {
5583                    return RusotoError::Service(DeleteVpcLinkError::BadRequest(err.msg))
5584                }
5585                "NotFoundException" => {
5586                    return RusotoError::Service(DeleteVpcLinkError::NotFound(err.msg))
5587                }
5588                "TooManyRequestsException" => {
5589                    return RusotoError::Service(DeleteVpcLinkError::TooManyRequests(err.msg))
5590                }
5591                "UnauthorizedException" => {
5592                    return RusotoError::Service(DeleteVpcLinkError::Unauthorized(err.msg))
5593                }
5594                "ValidationException" => return RusotoError::Validation(err.msg),
5595                _ => {}
5596            }
5597        }
5598        RusotoError::Unknown(res)
5599    }
5600}
5601impl fmt::Display for DeleteVpcLinkError {
5602    #[allow(unused_variables)]
5603    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5604        match *self {
5605            DeleteVpcLinkError::BadRequest(ref cause) => write!(f, "{}", cause),
5606            DeleteVpcLinkError::NotFound(ref cause) => write!(f, "{}", cause),
5607            DeleteVpcLinkError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5608            DeleteVpcLinkError::Unauthorized(ref cause) => write!(f, "{}", cause),
5609        }
5610    }
5611}
5612impl Error for DeleteVpcLinkError {}
5613/// Errors returned by FlushStageAuthorizersCache
5614#[derive(Debug, PartialEq)]
5615pub enum FlushStageAuthorizersCacheError {
5616    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5617    BadRequest(String),
5618    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5619    NotFound(String),
5620    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5621    TooManyRequests(String),
5622    /// <p>The request is denied because the caller has insufficient permissions.</p>
5623    Unauthorized(String),
5624}
5625
5626impl FlushStageAuthorizersCacheError {
5627    pub fn from_response(
5628        res: BufferedHttpResponse,
5629    ) -> RusotoError<FlushStageAuthorizersCacheError> {
5630        if let Some(err) = proto::json::Error::parse_rest(&res) {
5631            match err.typ.as_str() {
5632                "BadRequestException" => {
5633                    return RusotoError::Service(FlushStageAuthorizersCacheError::BadRequest(
5634                        err.msg,
5635                    ))
5636                }
5637                "NotFoundException" => {
5638                    return RusotoError::Service(FlushStageAuthorizersCacheError::NotFound(err.msg))
5639                }
5640                "TooManyRequestsException" => {
5641                    return RusotoError::Service(FlushStageAuthorizersCacheError::TooManyRequests(
5642                        err.msg,
5643                    ))
5644                }
5645                "UnauthorizedException" => {
5646                    return RusotoError::Service(FlushStageAuthorizersCacheError::Unauthorized(
5647                        err.msg,
5648                    ))
5649                }
5650                "ValidationException" => return RusotoError::Validation(err.msg),
5651                _ => {}
5652            }
5653        }
5654        RusotoError::Unknown(res)
5655    }
5656}
5657impl fmt::Display for FlushStageAuthorizersCacheError {
5658    #[allow(unused_variables)]
5659    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5660        match *self {
5661            FlushStageAuthorizersCacheError::BadRequest(ref cause) => write!(f, "{}", cause),
5662            FlushStageAuthorizersCacheError::NotFound(ref cause) => write!(f, "{}", cause),
5663            FlushStageAuthorizersCacheError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5664            FlushStageAuthorizersCacheError::Unauthorized(ref cause) => write!(f, "{}", cause),
5665        }
5666    }
5667}
5668impl Error for FlushStageAuthorizersCacheError {}
5669/// Errors returned by FlushStageCache
5670#[derive(Debug, PartialEq)]
5671pub enum FlushStageCacheError {
5672    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5673    BadRequest(String),
5674    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5675    NotFound(String),
5676    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5677    TooManyRequests(String),
5678    /// <p>The request is denied because the caller has insufficient permissions.</p>
5679    Unauthorized(String),
5680}
5681
5682impl FlushStageCacheError {
5683    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<FlushStageCacheError> {
5684        if let Some(err) = proto::json::Error::parse_rest(&res) {
5685            match err.typ.as_str() {
5686                "BadRequestException" => {
5687                    return RusotoError::Service(FlushStageCacheError::BadRequest(err.msg))
5688                }
5689                "NotFoundException" => {
5690                    return RusotoError::Service(FlushStageCacheError::NotFound(err.msg))
5691                }
5692                "TooManyRequestsException" => {
5693                    return RusotoError::Service(FlushStageCacheError::TooManyRequests(err.msg))
5694                }
5695                "UnauthorizedException" => {
5696                    return RusotoError::Service(FlushStageCacheError::Unauthorized(err.msg))
5697                }
5698                "ValidationException" => return RusotoError::Validation(err.msg),
5699                _ => {}
5700            }
5701        }
5702        RusotoError::Unknown(res)
5703    }
5704}
5705impl fmt::Display for FlushStageCacheError {
5706    #[allow(unused_variables)]
5707    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5708        match *self {
5709            FlushStageCacheError::BadRequest(ref cause) => write!(f, "{}", cause),
5710            FlushStageCacheError::NotFound(ref cause) => write!(f, "{}", cause),
5711            FlushStageCacheError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5712            FlushStageCacheError::Unauthorized(ref cause) => write!(f, "{}", cause),
5713        }
5714    }
5715}
5716impl Error for FlushStageCacheError {}
5717/// Errors returned by GenerateClientCertificate
5718#[derive(Debug, PartialEq)]
5719pub enum GenerateClientCertificateError {
5720    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
5721    LimitExceeded(String),
5722    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5723    TooManyRequests(String),
5724    /// <p>The request is denied because the caller has insufficient permissions.</p>
5725    Unauthorized(String),
5726}
5727
5728impl GenerateClientCertificateError {
5729    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GenerateClientCertificateError> {
5730        if let Some(err) = proto::json::Error::parse_rest(&res) {
5731            match err.typ.as_str() {
5732                "LimitExceededException" => {
5733                    return RusotoError::Service(GenerateClientCertificateError::LimitExceeded(
5734                        err.msg,
5735                    ))
5736                }
5737                "TooManyRequestsException" => {
5738                    return RusotoError::Service(GenerateClientCertificateError::TooManyRequests(
5739                        err.msg,
5740                    ))
5741                }
5742                "UnauthorizedException" => {
5743                    return RusotoError::Service(GenerateClientCertificateError::Unauthorized(
5744                        err.msg,
5745                    ))
5746                }
5747                "ValidationException" => return RusotoError::Validation(err.msg),
5748                _ => {}
5749            }
5750        }
5751        RusotoError::Unknown(res)
5752    }
5753}
5754impl fmt::Display for GenerateClientCertificateError {
5755    #[allow(unused_variables)]
5756    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5757        match *self {
5758            GenerateClientCertificateError::LimitExceeded(ref cause) => write!(f, "{}", cause),
5759            GenerateClientCertificateError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5760            GenerateClientCertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
5761        }
5762    }
5763}
5764impl Error for GenerateClientCertificateError {}
5765/// Errors returned by GetAccount
5766#[derive(Debug, PartialEq)]
5767pub enum GetAccountError {
5768    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5769    NotFound(String),
5770    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5771    TooManyRequests(String),
5772    /// <p>The request is denied because the caller has insufficient permissions.</p>
5773    Unauthorized(String),
5774}
5775
5776impl GetAccountError {
5777    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetAccountError> {
5778        if let Some(err) = proto::json::Error::parse_rest(&res) {
5779            match err.typ.as_str() {
5780                "NotFoundException" => {
5781                    return RusotoError::Service(GetAccountError::NotFound(err.msg))
5782                }
5783                "TooManyRequestsException" => {
5784                    return RusotoError::Service(GetAccountError::TooManyRequests(err.msg))
5785                }
5786                "UnauthorizedException" => {
5787                    return RusotoError::Service(GetAccountError::Unauthorized(err.msg))
5788                }
5789                "ValidationException" => return RusotoError::Validation(err.msg),
5790                _ => {}
5791            }
5792        }
5793        RusotoError::Unknown(res)
5794    }
5795}
5796impl fmt::Display for GetAccountError {
5797    #[allow(unused_variables)]
5798    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5799        match *self {
5800            GetAccountError::NotFound(ref cause) => write!(f, "{}", cause),
5801            GetAccountError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5802            GetAccountError::Unauthorized(ref cause) => write!(f, "{}", cause),
5803        }
5804    }
5805}
5806impl Error for GetAccountError {}
5807/// Errors returned by GetApiKey
5808#[derive(Debug, PartialEq)]
5809pub enum GetApiKeyError {
5810    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5811    NotFound(String),
5812    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5813    TooManyRequests(String),
5814    /// <p>The request is denied because the caller has insufficient permissions.</p>
5815    Unauthorized(String),
5816}
5817
5818impl GetApiKeyError {
5819    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetApiKeyError> {
5820        if let Some(err) = proto::json::Error::parse_rest(&res) {
5821            match err.typ.as_str() {
5822                "NotFoundException" => {
5823                    return RusotoError::Service(GetApiKeyError::NotFound(err.msg))
5824                }
5825                "TooManyRequestsException" => {
5826                    return RusotoError::Service(GetApiKeyError::TooManyRequests(err.msg))
5827                }
5828                "UnauthorizedException" => {
5829                    return RusotoError::Service(GetApiKeyError::Unauthorized(err.msg))
5830                }
5831                "ValidationException" => return RusotoError::Validation(err.msg),
5832                _ => {}
5833            }
5834        }
5835        RusotoError::Unknown(res)
5836    }
5837}
5838impl fmt::Display for GetApiKeyError {
5839    #[allow(unused_variables)]
5840    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5841        match *self {
5842            GetApiKeyError::NotFound(ref cause) => write!(f, "{}", cause),
5843            GetApiKeyError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5844            GetApiKeyError::Unauthorized(ref cause) => write!(f, "{}", cause),
5845        }
5846    }
5847}
5848impl Error for GetApiKeyError {}
5849/// Errors returned by GetApiKeys
5850#[derive(Debug, PartialEq)]
5851pub enum GetApiKeysError {
5852    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5853    BadRequest(String),
5854    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5855    TooManyRequests(String),
5856    /// <p>The request is denied because the caller has insufficient permissions.</p>
5857    Unauthorized(String),
5858}
5859
5860impl GetApiKeysError {
5861    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetApiKeysError> {
5862        if let Some(err) = proto::json::Error::parse_rest(&res) {
5863            match err.typ.as_str() {
5864                "BadRequestException" => {
5865                    return RusotoError::Service(GetApiKeysError::BadRequest(err.msg))
5866                }
5867                "TooManyRequestsException" => {
5868                    return RusotoError::Service(GetApiKeysError::TooManyRequests(err.msg))
5869                }
5870                "UnauthorizedException" => {
5871                    return RusotoError::Service(GetApiKeysError::Unauthorized(err.msg))
5872                }
5873                "ValidationException" => return RusotoError::Validation(err.msg),
5874                _ => {}
5875            }
5876        }
5877        RusotoError::Unknown(res)
5878    }
5879}
5880impl fmt::Display for GetApiKeysError {
5881    #[allow(unused_variables)]
5882    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5883        match *self {
5884            GetApiKeysError::BadRequest(ref cause) => write!(f, "{}", cause),
5885            GetApiKeysError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5886            GetApiKeysError::Unauthorized(ref cause) => write!(f, "{}", cause),
5887        }
5888    }
5889}
5890impl Error for GetApiKeysError {}
5891/// Errors returned by GetAuthorizer
5892#[derive(Debug, PartialEq)]
5893pub enum GetAuthorizerError {
5894    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5895    NotFound(String),
5896    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5897    TooManyRequests(String),
5898    /// <p>The request is denied because the caller has insufficient permissions.</p>
5899    Unauthorized(String),
5900}
5901
5902impl GetAuthorizerError {
5903    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetAuthorizerError> {
5904        if let Some(err) = proto::json::Error::parse_rest(&res) {
5905            match err.typ.as_str() {
5906                "NotFoundException" => {
5907                    return RusotoError::Service(GetAuthorizerError::NotFound(err.msg))
5908                }
5909                "TooManyRequestsException" => {
5910                    return RusotoError::Service(GetAuthorizerError::TooManyRequests(err.msg))
5911                }
5912                "UnauthorizedException" => {
5913                    return RusotoError::Service(GetAuthorizerError::Unauthorized(err.msg))
5914                }
5915                "ValidationException" => return RusotoError::Validation(err.msg),
5916                _ => {}
5917            }
5918        }
5919        RusotoError::Unknown(res)
5920    }
5921}
5922impl fmt::Display for GetAuthorizerError {
5923    #[allow(unused_variables)]
5924    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5925        match *self {
5926            GetAuthorizerError::NotFound(ref cause) => write!(f, "{}", cause),
5927            GetAuthorizerError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5928            GetAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
5929        }
5930    }
5931}
5932impl Error for GetAuthorizerError {}
5933/// Errors returned by GetAuthorizers
5934#[derive(Debug, PartialEq)]
5935pub enum GetAuthorizersError {
5936    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
5937    BadRequest(String),
5938    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5939    NotFound(String),
5940    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5941    TooManyRequests(String),
5942    /// <p>The request is denied because the caller has insufficient permissions.</p>
5943    Unauthorized(String),
5944}
5945
5946impl GetAuthorizersError {
5947    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetAuthorizersError> {
5948        if let Some(err) = proto::json::Error::parse_rest(&res) {
5949            match err.typ.as_str() {
5950                "BadRequestException" => {
5951                    return RusotoError::Service(GetAuthorizersError::BadRequest(err.msg))
5952                }
5953                "NotFoundException" => {
5954                    return RusotoError::Service(GetAuthorizersError::NotFound(err.msg))
5955                }
5956                "TooManyRequestsException" => {
5957                    return RusotoError::Service(GetAuthorizersError::TooManyRequests(err.msg))
5958                }
5959                "UnauthorizedException" => {
5960                    return RusotoError::Service(GetAuthorizersError::Unauthorized(err.msg))
5961                }
5962                "ValidationException" => return RusotoError::Validation(err.msg),
5963                _ => {}
5964            }
5965        }
5966        RusotoError::Unknown(res)
5967    }
5968}
5969impl fmt::Display for GetAuthorizersError {
5970    #[allow(unused_variables)]
5971    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5972        match *self {
5973            GetAuthorizersError::BadRequest(ref cause) => write!(f, "{}", cause),
5974            GetAuthorizersError::NotFound(ref cause) => write!(f, "{}", cause),
5975            GetAuthorizersError::TooManyRequests(ref cause) => write!(f, "{}", cause),
5976            GetAuthorizersError::Unauthorized(ref cause) => write!(f, "{}", cause),
5977        }
5978    }
5979}
5980impl Error for GetAuthorizersError {}
5981/// Errors returned by GetBasePathMapping
5982#[derive(Debug, PartialEq)]
5983pub enum GetBasePathMappingError {
5984    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
5985    NotFound(String),
5986    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
5987    TooManyRequests(String),
5988    /// <p>The request is denied because the caller has insufficient permissions.</p>
5989    Unauthorized(String),
5990}
5991
5992impl GetBasePathMappingError {
5993    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetBasePathMappingError> {
5994        if let Some(err) = proto::json::Error::parse_rest(&res) {
5995            match err.typ.as_str() {
5996                "NotFoundException" => {
5997                    return RusotoError::Service(GetBasePathMappingError::NotFound(err.msg))
5998                }
5999                "TooManyRequestsException" => {
6000                    return RusotoError::Service(GetBasePathMappingError::TooManyRequests(err.msg))
6001                }
6002                "UnauthorizedException" => {
6003                    return RusotoError::Service(GetBasePathMappingError::Unauthorized(err.msg))
6004                }
6005                "ValidationException" => return RusotoError::Validation(err.msg),
6006                _ => {}
6007            }
6008        }
6009        RusotoError::Unknown(res)
6010    }
6011}
6012impl fmt::Display for GetBasePathMappingError {
6013    #[allow(unused_variables)]
6014    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6015        match *self {
6016            GetBasePathMappingError::NotFound(ref cause) => write!(f, "{}", cause),
6017            GetBasePathMappingError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6018            GetBasePathMappingError::Unauthorized(ref cause) => write!(f, "{}", cause),
6019        }
6020    }
6021}
6022impl Error for GetBasePathMappingError {}
6023/// Errors returned by GetBasePathMappings
6024#[derive(Debug, PartialEq)]
6025pub enum GetBasePathMappingsError {
6026    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6027    NotFound(String),
6028    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6029    TooManyRequests(String),
6030    /// <p>The request is denied because the caller has insufficient permissions.</p>
6031    Unauthorized(String),
6032}
6033
6034impl GetBasePathMappingsError {
6035    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetBasePathMappingsError> {
6036        if let Some(err) = proto::json::Error::parse_rest(&res) {
6037            match err.typ.as_str() {
6038                "NotFoundException" => {
6039                    return RusotoError::Service(GetBasePathMappingsError::NotFound(err.msg))
6040                }
6041                "TooManyRequestsException" => {
6042                    return RusotoError::Service(GetBasePathMappingsError::TooManyRequests(err.msg))
6043                }
6044                "UnauthorizedException" => {
6045                    return RusotoError::Service(GetBasePathMappingsError::Unauthorized(err.msg))
6046                }
6047                "ValidationException" => return RusotoError::Validation(err.msg),
6048                _ => {}
6049            }
6050        }
6051        RusotoError::Unknown(res)
6052    }
6053}
6054impl fmt::Display for GetBasePathMappingsError {
6055    #[allow(unused_variables)]
6056    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6057        match *self {
6058            GetBasePathMappingsError::NotFound(ref cause) => write!(f, "{}", cause),
6059            GetBasePathMappingsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6060            GetBasePathMappingsError::Unauthorized(ref cause) => write!(f, "{}", cause),
6061        }
6062    }
6063}
6064impl Error for GetBasePathMappingsError {}
6065/// Errors returned by GetClientCertificate
6066#[derive(Debug, PartialEq)]
6067pub enum GetClientCertificateError {
6068    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6069    NotFound(String),
6070    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6071    TooManyRequests(String),
6072    /// <p>The request is denied because the caller has insufficient permissions.</p>
6073    Unauthorized(String),
6074}
6075
6076impl GetClientCertificateError {
6077    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetClientCertificateError> {
6078        if let Some(err) = proto::json::Error::parse_rest(&res) {
6079            match err.typ.as_str() {
6080                "NotFoundException" => {
6081                    return RusotoError::Service(GetClientCertificateError::NotFound(err.msg))
6082                }
6083                "TooManyRequestsException" => {
6084                    return RusotoError::Service(GetClientCertificateError::TooManyRequests(
6085                        err.msg,
6086                    ))
6087                }
6088                "UnauthorizedException" => {
6089                    return RusotoError::Service(GetClientCertificateError::Unauthorized(err.msg))
6090                }
6091                "ValidationException" => return RusotoError::Validation(err.msg),
6092                _ => {}
6093            }
6094        }
6095        RusotoError::Unknown(res)
6096    }
6097}
6098impl fmt::Display for GetClientCertificateError {
6099    #[allow(unused_variables)]
6100    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6101        match *self {
6102            GetClientCertificateError::NotFound(ref cause) => write!(f, "{}", cause),
6103            GetClientCertificateError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6104            GetClientCertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
6105        }
6106    }
6107}
6108impl Error for GetClientCertificateError {}
6109/// Errors returned by GetClientCertificates
6110#[derive(Debug, PartialEq)]
6111pub enum GetClientCertificatesError {
6112    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
6113    BadRequest(String),
6114    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6115    TooManyRequests(String),
6116    /// <p>The request is denied because the caller has insufficient permissions.</p>
6117    Unauthorized(String),
6118}
6119
6120impl GetClientCertificatesError {
6121    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetClientCertificatesError> {
6122        if let Some(err) = proto::json::Error::parse_rest(&res) {
6123            match err.typ.as_str() {
6124                "BadRequestException" => {
6125                    return RusotoError::Service(GetClientCertificatesError::BadRequest(err.msg))
6126                }
6127                "TooManyRequestsException" => {
6128                    return RusotoError::Service(GetClientCertificatesError::TooManyRequests(
6129                        err.msg,
6130                    ))
6131                }
6132                "UnauthorizedException" => {
6133                    return RusotoError::Service(GetClientCertificatesError::Unauthorized(err.msg))
6134                }
6135                "ValidationException" => return RusotoError::Validation(err.msg),
6136                _ => {}
6137            }
6138        }
6139        RusotoError::Unknown(res)
6140    }
6141}
6142impl fmt::Display for GetClientCertificatesError {
6143    #[allow(unused_variables)]
6144    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6145        match *self {
6146            GetClientCertificatesError::BadRequest(ref cause) => write!(f, "{}", cause),
6147            GetClientCertificatesError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6148            GetClientCertificatesError::Unauthorized(ref cause) => write!(f, "{}", cause),
6149        }
6150    }
6151}
6152impl Error for GetClientCertificatesError {}
6153/// Errors returned by GetDeployment
6154#[derive(Debug, PartialEq)]
6155pub enum GetDeploymentError {
6156    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6157    NotFound(String),
6158    /// <p>The requested service is not available. For details see the accompanying error message. Retry after the specified time period.</p>
6159    ServiceUnavailable(String),
6160    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6161    TooManyRequests(String),
6162    /// <p>The request is denied because the caller has insufficient permissions.</p>
6163    Unauthorized(String),
6164}
6165
6166impl GetDeploymentError {
6167    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDeploymentError> {
6168        if let Some(err) = proto::json::Error::parse_rest(&res) {
6169            match err.typ.as_str() {
6170                "NotFoundException" => {
6171                    return RusotoError::Service(GetDeploymentError::NotFound(err.msg))
6172                }
6173                "ServiceUnavailableException" => {
6174                    return RusotoError::Service(GetDeploymentError::ServiceUnavailable(err.msg))
6175                }
6176                "TooManyRequestsException" => {
6177                    return RusotoError::Service(GetDeploymentError::TooManyRequests(err.msg))
6178                }
6179                "UnauthorizedException" => {
6180                    return RusotoError::Service(GetDeploymentError::Unauthorized(err.msg))
6181                }
6182                "ValidationException" => return RusotoError::Validation(err.msg),
6183                _ => {}
6184            }
6185        }
6186        RusotoError::Unknown(res)
6187    }
6188}
6189impl fmt::Display for GetDeploymentError {
6190    #[allow(unused_variables)]
6191    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6192        match *self {
6193            GetDeploymentError::NotFound(ref cause) => write!(f, "{}", cause),
6194            GetDeploymentError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
6195            GetDeploymentError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6196            GetDeploymentError::Unauthorized(ref cause) => write!(f, "{}", cause),
6197        }
6198    }
6199}
6200impl Error for GetDeploymentError {}
6201/// Errors returned by GetDeployments
6202#[derive(Debug, PartialEq)]
6203pub enum GetDeploymentsError {
6204    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
6205    BadRequest(String),
6206    /// <p>The requested service is not available. For details see the accompanying error message. Retry after the specified time period.</p>
6207    ServiceUnavailable(String),
6208    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6209    TooManyRequests(String),
6210    /// <p>The request is denied because the caller has insufficient permissions.</p>
6211    Unauthorized(String),
6212}
6213
6214impl GetDeploymentsError {
6215    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDeploymentsError> {
6216        if let Some(err) = proto::json::Error::parse_rest(&res) {
6217            match err.typ.as_str() {
6218                "BadRequestException" => {
6219                    return RusotoError::Service(GetDeploymentsError::BadRequest(err.msg))
6220                }
6221                "ServiceUnavailableException" => {
6222                    return RusotoError::Service(GetDeploymentsError::ServiceUnavailable(err.msg))
6223                }
6224                "TooManyRequestsException" => {
6225                    return RusotoError::Service(GetDeploymentsError::TooManyRequests(err.msg))
6226                }
6227                "UnauthorizedException" => {
6228                    return RusotoError::Service(GetDeploymentsError::Unauthorized(err.msg))
6229                }
6230                "ValidationException" => return RusotoError::Validation(err.msg),
6231                _ => {}
6232            }
6233        }
6234        RusotoError::Unknown(res)
6235    }
6236}
6237impl fmt::Display for GetDeploymentsError {
6238    #[allow(unused_variables)]
6239    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6240        match *self {
6241            GetDeploymentsError::BadRequest(ref cause) => write!(f, "{}", cause),
6242            GetDeploymentsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
6243            GetDeploymentsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6244            GetDeploymentsError::Unauthorized(ref cause) => write!(f, "{}", cause),
6245        }
6246    }
6247}
6248impl Error for GetDeploymentsError {}
6249/// Errors returned by GetDocumentationPart
6250#[derive(Debug, PartialEq)]
6251pub enum GetDocumentationPartError {
6252    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6253    NotFound(String),
6254    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6255    TooManyRequests(String),
6256    /// <p>The request is denied because the caller has insufficient permissions.</p>
6257    Unauthorized(String),
6258}
6259
6260impl GetDocumentationPartError {
6261    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDocumentationPartError> {
6262        if let Some(err) = proto::json::Error::parse_rest(&res) {
6263            match err.typ.as_str() {
6264                "NotFoundException" => {
6265                    return RusotoError::Service(GetDocumentationPartError::NotFound(err.msg))
6266                }
6267                "TooManyRequestsException" => {
6268                    return RusotoError::Service(GetDocumentationPartError::TooManyRequests(
6269                        err.msg,
6270                    ))
6271                }
6272                "UnauthorizedException" => {
6273                    return RusotoError::Service(GetDocumentationPartError::Unauthorized(err.msg))
6274                }
6275                "ValidationException" => return RusotoError::Validation(err.msg),
6276                _ => {}
6277            }
6278        }
6279        RusotoError::Unknown(res)
6280    }
6281}
6282impl fmt::Display for GetDocumentationPartError {
6283    #[allow(unused_variables)]
6284    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6285        match *self {
6286            GetDocumentationPartError::NotFound(ref cause) => write!(f, "{}", cause),
6287            GetDocumentationPartError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6288            GetDocumentationPartError::Unauthorized(ref cause) => write!(f, "{}", cause),
6289        }
6290    }
6291}
6292impl Error for GetDocumentationPartError {}
6293/// Errors returned by GetDocumentationParts
6294#[derive(Debug, PartialEq)]
6295pub enum GetDocumentationPartsError {
6296    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
6297    BadRequest(String),
6298    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6299    NotFound(String),
6300    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6301    TooManyRequests(String),
6302    /// <p>The request is denied because the caller has insufficient permissions.</p>
6303    Unauthorized(String),
6304}
6305
6306impl GetDocumentationPartsError {
6307    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDocumentationPartsError> {
6308        if let Some(err) = proto::json::Error::parse_rest(&res) {
6309            match err.typ.as_str() {
6310                "BadRequestException" => {
6311                    return RusotoError::Service(GetDocumentationPartsError::BadRequest(err.msg))
6312                }
6313                "NotFoundException" => {
6314                    return RusotoError::Service(GetDocumentationPartsError::NotFound(err.msg))
6315                }
6316                "TooManyRequestsException" => {
6317                    return RusotoError::Service(GetDocumentationPartsError::TooManyRequests(
6318                        err.msg,
6319                    ))
6320                }
6321                "UnauthorizedException" => {
6322                    return RusotoError::Service(GetDocumentationPartsError::Unauthorized(err.msg))
6323                }
6324                "ValidationException" => return RusotoError::Validation(err.msg),
6325                _ => {}
6326            }
6327        }
6328        RusotoError::Unknown(res)
6329    }
6330}
6331impl fmt::Display for GetDocumentationPartsError {
6332    #[allow(unused_variables)]
6333    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6334        match *self {
6335            GetDocumentationPartsError::BadRequest(ref cause) => write!(f, "{}", cause),
6336            GetDocumentationPartsError::NotFound(ref cause) => write!(f, "{}", cause),
6337            GetDocumentationPartsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6338            GetDocumentationPartsError::Unauthorized(ref cause) => write!(f, "{}", cause),
6339        }
6340    }
6341}
6342impl Error for GetDocumentationPartsError {}
6343/// Errors returned by GetDocumentationVersion
6344#[derive(Debug, PartialEq)]
6345pub enum GetDocumentationVersionError {
6346    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6347    NotFound(String),
6348    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6349    TooManyRequests(String),
6350    /// <p>The request is denied because the caller has insufficient permissions.</p>
6351    Unauthorized(String),
6352}
6353
6354impl GetDocumentationVersionError {
6355    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDocumentationVersionError> {
6356        if let Some(err) = proto::json::Error::parse_rest(&res) {
6357            match err.typ.as_str() {
6358                "NotFoundException" => {
6359                    return RusotoError::Service(GetDocumentationVersionError::NotFound(err.msg))
6360                }
6361                "TooManyRequestsException" => {
6362                    return RusotoError::Service(GetDocumentationVersionError::TooManyRequests(
6363                        err.msg,
6364                    ))
6365                }
6366                "UnauthorizedException" => {
6367                    return RusotoError::Service(GetDocumentationVersionError::Unauthorized(
6368                        err.msg,
6369                    ))
6370                }
6371                "ValidationException" => return RusotoError::Validation(err.msg),
6372                _ => {}
6373            }
6374        }
6375        RusotoError::Unknown(res)
6376    }
6377}
6378impl fmt::Display for GetDocumentationVersionError {
6379    #[allow(unused_variables)]
6380    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6381        match *self {
6382            GetDocumentationVersionError::NotFound(ref cause) => write!(f, "{}", cause),
6383            GetDocumentationVersionError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6384            GetDocumentationVersionError::Unauthorized(ref cause) => write!(f, "{}", cause),
6385        }
6386    }
6387}
6388impl Error for GetDocumentationVersionError {}
6389/// Errors returned by GetDocumentationVersions
6390#[derive(Debug, PartialEq)]
6391pub enum GetDocumentationVersionsError {
6392    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
6393    BadRequest(String),
6394    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6395    NotFound(String),
6396    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6397    TooManyRequests(String),
6398    /// <p>The request is denied because the caller has insufficient permissions.</p>
6399    Unauthorized(String),
6400}
6401
6402impl GetDocumentationVersionsError {
6403    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDocumentationVersionsError> {
6404        if let Some(err) = proto::json::Error::parse_rest(&res) {
6405            match err.typ.as_str() {
6406                "BadRequestException" => {
6407                    return RusotoError::Service(GetDocumentationVersionsError::BadRequest(err.msg))
6408                }
6409                "NotFoundException" => {
6410                    return RusotoError::Service(GetDocumentationVersionsError::NotFound(err.msg))
6411                }
6412                "TooManyRequestsException" => {
6413                    return RusotoError::Service(GetDocumentationVersionsError::TooManyRequests(
6414                        err.msg,
6415                    ))
6416                }
6417                "UnauthorizedException" => {
6418                    return RusotoError::Service(GetDocumentationVersionsError::Unauthorized(
6419                        err.msg,
6420                    ))
6421                }
6422                "ValidationException" => return RusotoError::Validation(err.msg),
6423                _ => {}
6424            }
6425        }
6426        RusotoError::Unknown(res)
6427    }
6428}
6429impl fmt::Display for GetDocumentationVersionsError {
6430    #[allow(unused_variables)]
6431    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6432        match *self {
6433            GetDocumentationVersionsError::BadRequest(ref cause) => write!(f, "{}", cause),
6434            GetDocumentationVersionsError::NotFound(ref cause) => write!(f, "{}", cause),
6435            GetDocumentationVersionsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6436            GetDocumentationVersionsError::Unauthorized(ref cause) => write!(f, "{}", cause),
6437        }
6438    }
6439}
6440impl Error for GetDocumentationVersionsError {}
6441/// Errors returned by GetDomainName
6442#[derive(Debug, PartialEq)]
6443pub enum GetDomainNameError {
6444    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6445    NotFound(String),
6446    /// <p>The requested service is not available. For details see the accompanying error message. Retry after the specified time period.</p>
6447    ServiceUnavailable(String),
6448    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6449    TooManyRequests(String),
6450    /// <p>The request is denied because the caller has insufficient permissions.</p>
6451    Unauthorized(String),
6452}
6453
6454impl GetDomainNameError {
6455    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDomainNameError> {
6456        if let Some(err) = proto::json::Error::parse_rest(&res) {
6457            match err.typ.as_str() {
6458                "NotFoundException" => {
6459                    return RusotoError::Service(GetDomainNameError::NotFound(err.msg))
6460                }
6461                "ServiceUnavailableException" => {
6462                    return RusotoError::Service(GetDomainNameError::ServiceUnavailable(err.msg))
6463                }
6464                "TooManyRequestsException" => {
6465                    return RusotoError::Service(GetDomainNameError::TooManyRequests(err.msg))
6466                }
6467                "UnauthorizedException" => {
6468                    return RusotoError::Service(GetDomainNameError::Unauthorized(err.msg))
6469                }
6470                "ValidationException" => return RusotoError::Validation(err.msg),
6471                _ => {}
6472            }
6473        }
6474        RusotoError::Unknown(res)
6475    }
6476}
6477impl fmt::Display for GetDomainNameError {
6478    #[allow(unused_variables)]
6479    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6480        match *self {
6481            GetDomainNameError::NotFound(ref cause) => write!(f, "{}", cause),
6482            GetDomainNameError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
6483            GetDomainNameError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6484            GetDomainNameError::Unauthorized(ref cause) => write!(f, "{}", cause),
6485        }
6486    }
6487}
6488impl Error for GetDomainNameError {}
6489/// Errors returned by GetDomainNames
6490#[derive(Debug, PartialEq)]
6491pub enum GetDomainNamesError {
6492    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
6493    BadRequest(String),
6494    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6495    TooManyRequests(String),
6496    /// <p>The request is denied because the caller has insufficient permissions.</p>
6497    Unauthorized(String),
6498}
6499
6500impl GetDomainNamesError {
6501    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDomainNamesError> {
6502        if let Some(err) = proto::json::Error::parse_rest(&res) {
6503            match err.typ.as_str() {
6504                "BadRequestException" => {
6505                    return RusotoError::Service(GetDomainNamesError::BadRequest(err.msg))
6506                }
6507                "TooManyRequestsException" => {
6508                    return RusotoError::Service(GetDomainNamesError::TooManyRequests(err.msg))
6509                }
6510                "UnauthorizedException" => {
6511                    return RusotoError::Service(GetDomainNamesError::Unauthorized(err.msg))
6512                }
6513                "ValidationException" => return RusotoError::Validation(err.msg),
6514                _ => {}
6515            }
6516        }
6517        RusotoError::Unknown(res)
6518    }
6519}
6520impl fmt::Display for GetDomainNamesError {
6521    #[allow(unused_variables)]
6522    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6523        match *self {
6524            GetDomainNamesError::BadRequest(ref cause) => write!(f, "{}", cause),
6525            GetDomainNamesError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6526            GetDomainNamesError::Unauthorized(ref cause) => write!(f, "{}", cause),
6527        }
6528    }
6529}
6530impl Error for GetDomainNamesError {}
6531/// Errors returned by GetExport
6532#[derive(Debug, PartialEq)]
6533pub enum GetExportError {
6534    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
6535    BadRequest(String),
6536    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
6537    Conflict(String),
6538    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6539    NotFound(String),
6540    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6541    TooManyRequests(String),
6542    /// <p>The request is denied because the caller has insufficient permissions.</p>
6543    Unauthorized(String),
6544}
6545
6546impl GetExportError {
6547    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetExportError> {
6548        if let Some(err) = proto::json::Error::parse_rest(&res) {
6549            match err.typ.as_str() {
6550                "BadRequestException" => {
6551                    return RusotoError::Service(GetExportError::BadRequest(err.msg))
6552                }
6553                "ConflictException" => {
6554                    return RusotoError::Service(GetExportError::Conflict(err.msg))
6555                }
6556                "NotFoundException" => {
6557                    return RusotoError::Service(GetExportError::NotFound(err.msg))
6558                }
6559                "TooManyRequestsException" => {
6560                    return RusotoError::Service(GetExportError::TooManyRequests(err.msg))
6561                }
6562                "UnauthorizedException" => {
6563                    return RusotoError::Service(GetExportError::Unauthorized(err.msg))
6564                }
6565                "ValidationException" => return RusotoError::Validation(err.msg),
6566                _ => {}
6567            }
6568        }
6569        RusotoError::Unknown(res)
6570    }
6571}
6572impl fmt::Display for GetExportError {
6573    #[allow(unused_variables)]
6574    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6575        match *self {
6576            GetExportError::BadRequest(ref cause) => write!(f, "{}", cause),
6577            GetExportError::Conflict(ref cause) => write!(f, "{}", cause),
6578            GetExportError::NotFound(ref cause) => write!(f, "{}", cause),
6579            GetExportError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6580            GetExportError::Unauthorized(ref cause) => write!(f, "{}", cause),
6581        }
6582    }
6583}
6584impl Error for GetExportError {}
6585/// Errors returned by GetGatewayResponse
6586#[derive(Debug, PartialEq)]
6587pub enum GetGatewayResponseError {
6588    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6589    NotFound(String),
6590    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6591    TooManyRequests(String),
6592    /// <p>The request is denied because the caller has insufficient permissions.</p>
6593    Unauthorized(String),
6594}
6595
6596impl GetGatewayResponseError {
6597    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetGatewayResponseError> {
6598        if let Some(err) = proto::json::Error::parse_rest(&res) {
6599            match err.typ.as_str() {
6600                "NotFoundException" => {
6601                    return RusotoError::Service(GetGatewayResponseError::NotFound(err.msg))
6602                }
6603                "TooManyRequestsException" => {
6604                    return RusotoError::Service(GetGatewayResponseError::TooManyRequests(err.msg))
6605                }
6606                "UnauthorizedException" => {
6607                    return RusotoError::Service(GetGatewayResponseError::Unauthorized(err.msg))
6608                }
6609                "ValidationException" => return RusotoError::Validation(err.msg),
6610                _ => {}
6611            }
6612        }
6613        RusotoError::Unknown(res)
6614    }
6615}
6616impl fmt::Display for GetGatewayResponseError {
6617    #[allow(unused_variables)]
6618    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6619        match *self {
6620            GetGatewayResponseError::NotFound(ref cause) => write!(f, "{}", cause),
6621            GetGatewayResponseError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6622            GetGatewayResponseError::Unauthorized(ref cause) => write!(f, "{}", cause),
6623        }
6624    }
6625}
6626impl Error for GetGatewayResponseError {}
6627/// Errors returned by GetGatewayResponses
6628#[derive(Debug, PartialEq)]
6629pub enum GetGatewayResponsesError {
6630    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
6631    BadRequest(String),
6632    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6633    NotFound(String),
6634    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6635    TooManyRequests(String),
6636    /// <p>The request is denied because the caller has insufficient permissions.</p>
6637    Unauthorized(String),
6638}
6639
6640impl GetGatewayResponsesError {
6641    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetGatewayResponsesError> {
6642        if let Some(err) = proto::json::Error::parse_rest(&res) {
6643            match err.typ.as_str() {
6644                "BadRequestException" => {
6645                    return RusotoError::Service(GetGatewayResponsesError::BadRequest(err.msg))
6646                }
6647                "NotFoundException" => {
6648                    return RusotoError::Service(GetGatewayResponsesError::NotFound(err.msg))
6649                }
6650                "TooManyRequestsException" => {
6651                    return RusotoError::Service(GetGatewayResponsesError::TooManyRequests(err.msg))
6652                }
6653                "UnauthorizedException" => {
6654                    return RusotoError::Service(GetGatewayResponsesError::Unauthorized(err.msg))
6655                }
6656                "ValidationException" => return RusotoError::Validation(err.msg),
6657                _ => {}
6658            }
6659        }
6660        RusotoError::Unknown(res)
6661    }
6662}
6663impl fmt::Display for GetGatewayResponsesError {
6664    #[allow(unused_variables)]
6665    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6666        match *self {
6667            GetGatewayResponsesError::BadRequest(ref cause) => write!(f, "{}", cause),
6668            GetGatewayResponsesError::NotFound(ref cause) => write!(f, "{}", cause),
6669            GetGatewayResponsesError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6670            GetGatewayResponsesError::Unauthorized(ref cause) => write!(f, "{}", cause),
6671        }
6672    }
6673}
6674impl Error for GetGatewayResponsesError {}
6675/// Errors returned by GetIntegration
6676#[derive(Debug, PartialEq)]
6677pub enum GetIntegrationError {
6678    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6679    NotFound(String),
6680    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6681    TooManyRequests(String),
6682    /// <p>The request is denied because the caller has insufficient permissions.</p>
6683    Unauthorized(String),
6684}
6685
6686impl GetIntegrationError {
6687    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetIntegrationError> {
6688        if let Some(err) = proto::json::Error::parse_rest(&res) {
6689            match err.typ.as_str() {
6690                "NotFoundException" => {
6691                    return RusotoError::Service(GetIntegrationError::NotFound(err.msg))
6692                }
6693                "TooManyRequestsException" => {
6694                    return RusotoError::Service(GetIntegrationError::TooManyRequests(err.msg))
6695                }
6696                "UnauthorizedException" => {
6697                    return RusotoError::Service(GetIntegrationError::Unauthorized(err.msg))
6698                }
6699                "ValidationException" => return RusotoError::Validation(err.msg),
6700                _ => {}
6701            }
6702        }
6703        RusotoError::Unknown(res)
6704    }
6705}
6706impl fmt::Display for GetIntegrationError {
6707    #[allow(unused_variables)]
6708    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6709        match *self {
6710            GetIntegrationError::NotFound(ref cause) => write!(f, "{}", cause),
6711            GetIntegrationError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6712            GetIntegrationError::Unauthorized(ref cause) => write!(f, "{}", cause),
6713        }
6714    }
6715}
6716impl Error for GetIntegrationError {}
6717/// Errors returned by GetIntegrationResponse
6718#[derive(Debug, PartialEq)]
6719pub enum GetIntegrationResponseError {
6720    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6721    NotFound(String),
6722    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6723    TooManyRequests(String),
6724    /// <p>The request is denied because the caller has insufficient permissions.</p>
6725    Unauthorized(String),
6726}
6727
6728impl GetIntegrationResponseError {
6729    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetIntegrationResponseError> {
6730        if let Some(err) = proto::json::Error::parse_rest(&res) {
6731            match err.typ.as_str() {
6732                "NotFoundException" => {
6733                    return RusotoError::Service(GetIntegrationResponseError::NotFound(err.msg))
6734                }
6735                "TooManyRequestsException" => {
6736                    return RusotoError::Service(GetIntegrationResponseError::TooManyRequests(
6737                        err.msg,
6738                    ))
6739                }
6740                "UnauthorizedException" => {
6741                    return RusotoError::Service(GetIntegrationResponseError::Unauthorized(err.msg))
6742                }
6743                "ValidationException" => return RusotoError::Validation(err.msg),
6744                _ => {}
6745            }
6746        }
6747        RusotoError::Unknown(res)
6748    }
6749}
6750impl fmt::Display for GetIntegrationResponseError {
6751    #[allow(unused_variables)]
6752    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6753        match *self {
6754            GetIntegrationResponseError::NotFound(ref cause) => write!(f, "{}", cause),
6755            GetIntegrationResponseError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6756            GetIntegrationResponseError::Unauthorized(ref cause) => write!(f, "{}", cause),
6757        }
6758    }
6759}
6760impl Error for GetIntegrationResponseError {}
6761/// Errors returned by GetMethod
6762#[derive(Debug, PartialEq)]
6763pub enum GetMethodError {
6764    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6765    NotFound(String),
6766    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6767    TooManyRequests(String),
6768    /// <p>The request is denied because the caller has insufficient permissions.</p>
6769    Unauthorized(String),
6770}
6771
6772impl GetMethodError {
6773    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetMethodError> {
6774        if let Some(err) = proto::json::Error::parse_rest(&res) {
6775            match err.typ.as_str() {
6776                "NotFoundException" => {
6777                    return RusotoError::Service(GetMethodError::NotFound(err.msg))
6778                }
6779                "TooManyRequestsException" => {
6780                    return RusotoError::Service(GetMethodError::TooManyRequests(err.msg))
6781                }
6782                "UnauthorizedException" => {
6783                    return RusotoError::Service(GetMethodError::Unauthorized(err.msg))
6784                }
6785                "ValidationException" => return RusotoError::Validation(err.msg),
6786                _ => {}
6787            }
6788        }
6789        RusotoError::Unknown(res)
6790    }
6791}
6792impl fmt::Display for GetMethodError {
6793    #[allow(unused_variables)]
6794    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6795        match *self {
6796            GetMethodError::NotFound(ref cause) => write!(f, "{}", cause),
6797            GetMethodError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6798            GetMethodError::Unauthorized(ref cause) => write!(f, "{}", cause),
6799        }
6800    }
6801}
6802impl Error for GetMethodError {}
6803/// Errors returned by GetMethodResponse
6804#[derive(Debug, PartialEq)]
6805pub enum GetMethodResponseError {
6806    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6807    NotFound(String),
6808    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6809    TooManyRequests(String),
6810    /// <p>The request is denied because the caller has insufficient permissions.</p>
6811    Unauthorized(String),
6812}
6813
6814impl GetMethodResponseError {
6815    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetMethodResponseError> {
6816        if let Some(err) = proto::json::Error::parse_rest(&res) {
6817            match err.typ.as_str() {
6818                "NotFoundException" => {
6819                    return RusotoError::Service(GetMethodResponseError::NotFound(err.msg))
6820                }
6821                "TooManyRequestsException" => {
6822                    return RusotoError::Service(GetMethodResponseError::TooManyRequests(err.msg))
6823                }
6824                "UnauthorizedException" => {
6825                    return RusotoError::Service(GetMethodResponseError::Unauthorized(err.msg))
6826                }
6827                "ValidationException" => return RusotoError::Validation(err.msg),
6828                _ => {}
6829            }
6830        }
6831        RusotoError::Unknown(res)
6832    }
6833}
6834impl fmt::Display for GetMethodResponseError {
6835    #[allow(unused_variables)]
6836    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6837        match *self {
6838            GetMethodResponseError::NotFound(ref cause) => write!(f, "{}", cause),
6839            GetMethodResponseError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6840            GetMethodResponseError::Unauthorized(ref cause) => write!(f, "{}", cause),
6841        }
6842    }
6843}
6844impl Error for GetMethodResponseError {}
6845/// Errors returned by GetModel
6846#[derive(Debug, PartialEq)]
6847pub enum GetModelError {
6848    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6849    NotFound(String),
6850    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6851    TooManyRequests(String),
6852    /// <p>The request is denied because the caller has insufficient permissions.</p>
6853    Unauthorized(String),
6854}
6855
6856impl GetModelError {
6857    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetModelError> {
6858        if let Some(err) = proto::json::Error::parse_rest(&res) {
6859            match err.typ.as_str() {
6860                "NotFoundException" => {
6861                    return RusotoError::Service(GetModelError::NotFound(err.msg))
6862                }
6863                "TooManyRequestsException" => {
6864                    return RusotoError::Service(GetModelError::TooManyRequests(err.msg))
6865                }
6866                "UnauthorizedException" => {
6867                    return RusotoError::Service(GetModelError::Unauthorized(err.msg))
6868                }
6869                "ValidationException" => return RusotoError::Validation(err.msg),
6870                _ => {}
6871            }
6872        }
6873        RusotoError::Unknown(res)
6874    }
6875}
6876impl fmt::Display for GetModelError {
6877    #[allow(unused_variables)]
6878    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6879        match *self {
6880            GetModelError::NotFound(ref cause) => write!(f, "{}", cause),
6881            GetModelError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6882            GetModelError::Unauthorized(ref cause) => write!(f, "{}", cause),
6883        }
6884    }
6885}
6886impl Error for GetModelError {}
6887/// Errors returned by GetModelTemplate
6888#[derive(Debug, PartialEq)]
6889pub enum GetModelTemplateError {
6890    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
6891    BadRequest(String),
6892    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6893    NotFound(String),
6894    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6895    TooManyRequests(String),
6896    /// <p>The request is denied because the caller has insufficient permissions.</p>
6897    Unauthorized(String),
6898}
6899
6900impl GetModelTemplateError {
6901    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetModelTemplateError> {
6902        if let Some(err) = proto::json::Error::parse_rest(&res) {
6903            match err.typ.as_str() {
6904                "BadRequestException" => {
6905                    return RusotoError::Service(GetModelTemplateError::BadRequest(err.msg))
6906                }
6907                "NotFoundException" => {
6908                    return RusotoError::Service(GetModelTemplateError::NotFound(err.msg))
6909                }
6910                "TooManyRequestsException" => {
6911                    return RusotoError::Service(GetModelTemplateError::TooManyRequests(err.msg))
6912                }
6913                "UnauthorizedException" => {
6914                    return RusotoError::Service(GetModelTemplateError::Unauthorized(err.msg))
6915                }
6916                "ValidationException" => return RusotoError::Validation(err.msg),
6917                _ => {}
6918            }
6919        }
6920        RusotoError::Unknown(res)
6921    }
6922}
6923impl fmt::Display for GetModelTemplateError {
6924    #[allow(unused_variables)]
6925    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6926        match *self {
6927            GetModelTemplateError::BadRequest(ref cause) => write!(f, "{}", cause),
6928            GetModelTemplateError::NotFound(ref cause) => write!(f, "{}", cause),
6929            GetModelTemplateError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6930            GetModelTemplateError::Unauthorized(ref cause) => write!(f, "{}", cause),
6931        }
6932    }
6933}
6934impl Error for GetModelTemplateError {}
6935/// Errors returned by GetModels
6936#[derive(Debug, PartialEq)]
6937pub enum GetModelsError {
6938    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
6939    BadRequest(String),
6940    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6941    NotFound(String),
6942    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6943    TooManyRequests(String),
6944    /// <p>The request is denied because the caller has insufficient permissions.</p>
6945    Unauthorized(String),
6946}
6947
6948impl GetModelsError {
6949    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetModelsError> {
6950        if let Some(err) = proto::json::Error::parse_rest(&res) {
6951            match err.typ.as_str() {
6952                "BadRequestException" => {
6953                    return RusotoError::Service(GetModelsError::BadRequest(err.msg))
6954                }
6955                "NotFoundException" => {
6956                    return RusotoError::Service(GetModelsError::NotFound(err.msg))
6957                }
6958                "TooManyRequestsException" => {
6959                    return RusotoError::Service(GetModelsError::TooManyRequests(err.msg))
6960                }
6961                "UnauthorizedException" => {
6962                    return RusotoError::Service(GetModelsError::Unauthorized(err.msg))
6963                }
6964                "ValidationException" => return RusotoError::Validation(err.msg),
6965                _ => {}
6966            }
6967        }
6968        RusotoError::Unknown(res)
6969    }
6970}
6971impl fmt::Display for GetModelsError {
6972    #[allow(unused_variables)]
6973    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6974        match *self {
6975            GetModelsError::BadRequest(ref cause) => write!(f, "{}", cause),
6976            GetModelsError::NotFound(ref cause) => write!(f, "{}", cause),
6977            GetModelsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6978            GetModelsError::Unauthorized(ref cause) => write!(f, "{}", cause),
6979        }
6980    }
6981}
6982impl Error for GetModelsError {}
6983/// Errors returned by GetRequestValidator
6984#[derive(Debug, PartialEq)]
6985pub enum GetRequestValidatorError {
6986    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
6987    NotFound(String),
6988    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
6989    TooManyRequests(String),
6990    /// <p>The request is denied because the caller has insufficient permissions.</p>
6991    Unauthorized(String),
6992}
6993
6994impl GetRequestValidatorError {
6995    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetRequestValidatorError> {
6996        if let Some(err) = proto::json::Error::parse_rest(&res) {
6997            match err.typ.as_str() {
6998                "NotFoundException" => {
6999                    return RusotoError::Service(GetRequestValidatorError::NotFound(err.msg))
7000                }
7001                "TooManyRequestsException" => {
7002                    return RusotoError::Service(GetRequestValidatorError::TooManyRequests(err.msg))
7003                }
7004                "UnauthorizedException" => {
7005                    return RusotoError::Service(GetRequestValidatorError::Unauthorized(err.msg))
7006                }
7007                "ValidationException" => return RusotoError::Validation(err.msg),
7008                _ => {}
7009            }
7010        }
7011        RusotoError::Unknown(res)
7012    }
7013}
7014impl fmt::Display for GetRequestValidatorError {
7015    #[allow(unused_variables)]
7016    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7017        match *self {
7018            GetRequestValidatorError::NotFound(ref cause) => write!(f, "{}", cause),
7019            GetRequestValidatorError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7020            GetRequestValidatorError::Unauthorized(ref cause) => write!(f, "{}", cause),
7021        }
7022    }
7023}
7024impl Error for GetRequestValidatorError {}
7025/// Errors returned by GetRequestValidators
7026#[derive(Debug, PartialEq)]
7027pub enum GetRequestValidatorsError {
7028    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7029    BadRequest(String),
7030    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7031    NotFound(String),
7032    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7033    TooManyRequests(String),
7034    /// <p>The request is denied because the caller has insufficient permissions.</p>
7035    Unauthorized(String),
7036}
7037
7038impl GetRequestValidatorsError {
7039    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetRequestValidatorsError> {
7040        if let Some(err) = proto::json::Error::parse_rest(&res) {
7041            match err.typ.as_str() {
7042                "BadRequestException" => {
7043                    return RusotoError::Service(GetRequestValidatorsError::BadRequest(err.msg))
7044                }
7045                "NotFoundException" => {
7046                    return RusotoError::Service(GetRequestValidatorsError::NotFound(err.msg))
7047                }
7048                "TooManyRequestsException" => {
7049                    return RusotoError::Service(GetRequestValidatorsError::TooManyRequests(
7050                        err.msg,
7051                    ))
7052                }
7053                "UnauthorizedException" => {
7054                    return RusotoError::Service(GetRequestValidatorsError::Unauthorized(err.msg))
7055                }
7056                "ValidationException" => return RusotoError::Validation(err.msg),
7057                _ => {}
7058            }
7059        }
7060        RusotoError::Unknown(res)
7061    }
7062}
7063impl fmt::Display for GetRequestValidatorsError {
7064    #[allow(unused_variables)]
7065    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7066        match *self {
7067            GetRequestValidatorsError::BadRequest(ref cause) => write!(f, "{}", cause),
7068            GetRequestValidatorsError::NotFound(ref cause) => write!(f, "{}", cause),
7069            GetRequestValidatorsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7070            GetRequestValidatorsError::Unauthorized(ref cause) => write!(f, "{}", cause),
7071        }
7072    }
7073}
7074impl Error for GetRequestValidatorsError {}
7075/// Errors returned by GetResource
7076#[derive(Debug, PartialEq)]
7077pub enum GetResourceError {
7078    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7079    NotFound(String),
7080    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7081    TooManyRequests(String),
7082    /// <p>The request is denied because the caller has insufficient permissions.</p>
7083    Unauthorized(String),
7084}
7085
7086impl GetResourceError {
7087    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetResourceError> {
7088        if let Some(err) = proto::json::Error::parse_rest(&res) {
7089            match err.typ.as_str() {
7090                "NotFoundException" => {
7091                    return RusotoError::Service(GetResourceError::NotFound(err.msg))
7092                }
7093                "TooManyRequestsException" => {
7094                    return RusotoError::Service(GetResourceError::TooManyRequests(err.msg))
7095                }
7096                "UnauthorizedException" => {
7097                    return RusotoError::Service(GetResourceError::Unauthorized(err.msg))
7098                }
7099                "ValidationException" => return RusotoError::Validation(err.msg),
7100                _ => {}
7101            }
7102        }
7103        RusotoError::Unknown(res)
7104    }
7105}
7106impl fmt::Display for GetResourceError {
7107    #[allow(unused_variables)]
7108    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7109        match *self {
7110            GetResourceError::NotFound(ref cause) => write!(f, "{}", cause),
7111            GetResourceError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7112            GetResourceError::Unauthorized(ref cause) => write!(f, "{}", cause),
7113        }
7114    }
7115}
7116impl Error for GetResourceError {}
7117/// Errors returned by GetResources
7118#[derive(Debug, PartialEq)]
7119pub enum GetResourcesError {
7120    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7121    BadRequest(String),
7122    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7123    NotFound(String),
7124    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7125    TooManyRequests(String),
7126    /// <p>The request is denied because the caller has insufficient permissions.</p>
7127    Unauthorized(String),
7128}
7129
7130impl GetResourcesError {
7131    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetResourcesError> {
7132        if let Some(err) = proto::json::Error::parse_rest(&res) {
7133            match err.typ.as_str() {
7134                "BadRequestException" => {
7135                    return RusotoError::Service(GetResourcesError::BadRequest(err.msg))
7136                }
7137                "NotFoundException" => {
7138                    return RusotoError::Service(GetResourcesError::NotFound(err.msg))
7139                }
7140                "TooManyRequestsException" => {
7141                    return RusotoError::Service(GetResourcesError::TooManyRequests(err.msg))
7142                }
7143                "UnauthorizedException" => {
7144                    return RusotoError::Service(GetResourcesError::Unauthorized(err.msg))
7145                }
7146                "ValidationException" => return RusotoError::Validation(err.msg),
7147                _ => {}
7148            }
7149        }
7150        RusotoError::Unknown(res)
7151    }
7152}
7153impl fmt::Display for GetResourcesError {
7154    #[allow(unused_variables)]
7155    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7156        match *self {
7157            GetResourcesError::BadRequest(ref cause) => write!(f, "{}", cause),
7158            GetResourcesError::NotFound(ref cause) => write!(f, "{}", cause),
7159            GetResourcesError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7160            GetResourcesError::Unauthorized(ref cause) => write!(f, "{}", cause),
7161        }
7162    }
7163}
7164impl Error for GetResourcesError {}
7165/// Errors returned by GetRestApi
7166#[derive(Debug, PartialEq)]
7167pub enum GetRestApiError {
7168    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7169    NotFound(String),
7170    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7171    TooManyRequests(String),
7172    /// <p>The request is denied because the caller has insufficient permissions.</p>
7173    Unauthorized(String),
7174}
7175
7176impl GetRestApiError {
7177    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetRestApiError> {
7178        if let Some(err) = proto::json::Error::parse_rest(&res) {
7179            match err.typ.as_str() {
7180                "NotFoundException" => {
7181                    return RusotoError::Service(GetRestApiError::NotFound(err.msg))
7182                }
7183                "TooManyRequestsException" => {
7184                    return RusotoError::Service(GetRestApiError::TooManyRequests(err.msg))
7185                }
7186                "UnauthorizedException" => {
7187                    return RusotoError::Service(GetRestApiError::Unauthorized(err.msg))
7188                }
7189                "ValidationException" => return RusotoError::Validation(err.msg),
7190                _ => {}
7191            }
7192        }
7193        RusotoError::Unknown(res)
7194    }
7195}
7196impl fmt::Display for GetRestApiError {
7197    #[allow(unused_variables)]
7198    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7199        match *self {
7200            GetRestApiError::NotFound(ref cause) => write!(f, "{}", cause),
7201            GetRestApiError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7202            GetRestApiError::Unauthorized(ref cause) => write!(f, "{}", cause),
7203        }
7204    }
7205}
7206impl Error for GetRestApiError {}
7207/// Errors returned by GetRestApis
7208#[derive(Debug, PartialEq)]
7209pub enum GetRestApisError {
7210    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7211    BadRequest(String),
7212    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7213    TooManyRequests(String),
7214    /// <p>The request is denied because the caller has insufficient permissions.</p>
7215    Unauthorized(String),
7216}
7217
7218impl GetRestApisError {
7219    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetRestApisError> {
7220        if let Some(err) = proto::json::Error::parse_rest(&res) {
7221            match err.typ.as_str() {
7222                "BadRequestException" => {
7223                    return RusotoError::Service(GetRestApisError::BadRequest(err.msg))
7224                }
7225                "TooManyRequestsException" => {
7226                    return RusotoError::Service(GetRestApisError::TooManyRequests(err.msg))
7227                }
7228                "UnauthorizedException" => {
7229                    return RusotoError::Service(GetRestApisError::Unauthorized(err.msg))
7230                }
7231                "ValidationException" => return RusotoError::Validation(err.msg),
7232                _ => {}
7233            }
7234        }
7235        RusotoError::Unknown(res)
7236    }
7237}
7238impl fmt::Display for GetRestApisError {
7239    #[allow(unused_variables)]
7240    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7241        match *self {
7242            GetRestApisError::BadRequest(ref cause) => write!(f, "{}", cause),
7243            GetRestApisError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7244            GetRestApisError::Unauthorized(ref cause) => write!(f, "{}", cause),
7245        }
7246    }
7247}
7248impl Error for GetRestApisError {}
7249/// Errors returned by GetSdk
7250#[derive(Debug, PartialEq)]
7251pub enum GetSdkError {
7252    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7253    BadRequest(String),
7254    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
7255    Conflict(String),
7256    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7257    NotFound(String),
7258    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7259    TooManyRequests(String),
7260    /// <p>The request is denied because the caller has insufficient permissions.</p>
7261    Unauthorized(String),
7262}
7263
7264impl GetSdkError {
7265    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetSdkError> {
7266        if let Some(err) = proto::json::Error::parse_rest(&res) {
7267            match err.typ.as_str() {
7268                "BadRequestException" => {
7269                    return RusotoError::Service(GetSdkError::BadRequest(err.msg))
7270                }
7271                "ConflictException" => return RusotoError::Service(GetSdkError::Conflict(err.msg)),
7272                "NotFoundException" => return RusotoError::Service(GetSdkError::NotFound(err.msg)),
7273                "TooManyRequestsException" => {
7274                    return RusotoError::Service(GetSdkError::TooManyRequests(err.msg))
7275                }
7276                "UnauthorizedException" => {
7277                    return RusotoError::Service(GetSdkError::Unauthorized(err.msg))
7278                }
7279                "ValidationException" => return RusotoError::Validation(err.msg),
7280                _ => {}
7281            }
7282        }
7283        RusotoError::Unknown(res)
7284    }
7285}
7286impl fmt::Display for GetSdkError {
7287    #[allow(unused_variables)]
7288    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7289        match *self {
7290            GetSdkError::BadRequest(ref cause) => write!(f, "{}", cause),
7291            GetSdkError::Conflict(ref cause) => write!(f, "{}", cause),
7292            GetSdkError::NotFound(ref cause) => write!(f, "{}", cause),
7293            GetSdkError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7294            GetSdkError::Unauthorized(ref cause) => write!(f, "{}", cause),
7295        }
7296    }
7297}
7298impl Error for GetSdkError {}
7299/// Errors returned by GetSdkType
7300#[derive(Debug, PartialEq)]
7301pub enum GetSdkTypeError {
7302    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7303    NotFound(String),
7304    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7305    TooManyRequests(String),
7306    /// <p>The request is denied because the caller has insufficient permissions.</p>
7307    Unauthorized(String),
7308}
7309
7310impl GetSdkTypeError {
7311    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetSdkTypeError> {
7312        if let Some(err) = proto::json::Error::parse_rest(&res) {
7313            match err.typ.as_str() {
7314                "NotFoundException" => {
7315                    return RusotoError::Service(GetSdkTypeError::NotFound(err.msg))
7316                }
7317                "TooManyRequestsException" => {
7318                    return RusotoError::Service(GetSdkTypeError::TooManyRequests(err.msg))
7319                }
7320                "UnauthorizedException" => {
7321                    return RusotoError::Service(GetSdkTypeError::Unauthorized(err.msg))
7322                }
7323                "ValidationException" => return RusotoError::Validation(err.msg),
7324                _ => {}
7325            }
7326        }
7327        RusotoError::Unknown(res)
7328    }
7329}
7330impl fmt::Display for GetSdkTypeError {
7331    #[allow(unused_variables)]
7332    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7333        match *self {
7334            GetSdkTypeError::NotFound(ref cause) => write!(f, "{}", cause),
7335            GetSdkTypeError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7336            GetSdkTypeError::Unauthorized(ref cause) => write!(f, "{}", cause),
7337        }
7338    }
7339}
7340impl Error for GetSdkTypeError {}
7341/// Errors returned by GetSdkTypes
7342#[derive(Debug, PartialEq)]
7343pub enum GetSdkTypesError {
7344    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7345    TooManyRequests(String),
7346    /// <p>The request is denied because the caller has insufficient permissions.</p>
7347    Unauthorized(String),
7348}
7349
7350impl GetSdkTypesError {
7351    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetSdkTypesError> {
7352        if let Some(err) = proto::json::Error::parse_rest(&res) {
7353            match err.typ.as_str() {
7354                "TooManyRequestsException" => {
7355                    return RusotoError::Service(GetSdkTypesError::TooManyRequests(err.msg))
7356                }
7357                "UnauthorizedException" => {
7358                    return RusotoError::Service(GetSdkTypesError::Unauthorized(err.msg))
7359                }
7360                "ValidationException" => return RusotoError::Validation(err.msg),
7361                _ => {}
7362            }
7363        }
7364        RusotoError::Unknown(res)
7365    }
7366}
7367impl fmt::Display for GetSdkTypesError {
7368    #[allow(unused_variables)]
7369    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7370        match *self {
7371            GetSdkTypesError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7372            GetSdkTypesError::Unauthorized(ref cause) => write!(f, "{}", cause),
7373        }
7374    }
7375}
7376impl Error for GetSdkTypesError {}
7377/// Errors returned by GetStage
7378#[derive(Debug, PartialEq)]
7379pub enum GetStageError {
7380    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7381    NotFound(String),
7382    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7383    TooManyRequests(String),
7384    /// <p>The request is denied because the caller has insufficient permissions.</p>
7385    Unauthorized(String),
7386}
7387
7388impl GetStageError {
7389    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetStageError> {
7390        if let Some(err) = proto::json::Error::parse_rest(&res) {
7391            match err.typ.as_str() {
7392                "NotFoundException" => {
7393                    return RusotoError::Service(GetStageError::NotFound(err.msg))
7394                }
7395                "TooManyRequestsException" => {
7396                    return RusotoError::Service(GetStageError::TooManyRequests(err.msg))
7397                }
7398                "UnauthorizedException" => {
7399                    return RusotoError::Service(GetStageError::Unauthorized(err.msg))
7400                }
7401                "ValidationException" => return RusotoError::Validation(err.msg),
7402                _ => {}
7403            }
7404        }
7405        RusotoError::Unknown(res)
7406    }
7407}
7408impl fmt::Display for GetStageError {
7409    #[allow(unused_variables)]
7410    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7411        match *self {
7412            GetStageError::NotFound(ref cause) => write!(f, "{}", cause),
7413            GetStageError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7414            GetStageError::Unauthorized(ref cause) => write!(f, "{}", cause),
7415        }
7416    }
7417}
7418impl Error for GetStageError {}
7419/// Errors returned by GetStages
7420#[derive(Debug, PartialEq)]
7421pub enum GetStagesError {
7422    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7423    NotFound(String),
7424    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7425    TooManyRequests(String),
7426    /// <p>The request is denied because the caller has insufficient permissions.</p>
7427    Unauthorized(String),
7428}
7429
7430impl GetStagesError {
7431    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetStagesError> {
7432        if let Some(err) = proto::json::Error::parse_rest(&res) {
7433            match err.typ.as_str() {
7434                "NotFoundException" => {
7435                    return RusotoError::Service(GetStagesError::NotFound(err.msg))
7436                }
7437                "TooManyRequestsException" => {
7438                    return RusotoError::Service(GetStagesError::TooManyRequests(err.msg))
7439                }
7440                "UnauthorizedException" => {
7441                    return RusotoError::Service(GetStagesError::Unauthorized(err.msg))
7442                }
7443                "ValidationException" => return RusotoError::Validation(err.msg),
7444                _ => {}
7445            }
7446        }
7447        RusotoError::Unknown(res)
7448    }
7449}
7450impl fmt::Display for GetStagesError {
7451    #[allow(unused_variables)]
7452    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7453        match *self {
7454            GetStagesError::NotFound(ref cause) => write!(f, "{}", cause),
7455            GetStagesError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7456            GetStagesError::Unauthorized(ref cause) => write!(f, "{}", cause),
7457        }
7458    }
7459}
7460impl Error for GetStagesError {}
7461/// Errors returned by GetTags
7462#[derive(Debug, PartialEq)]
7463pub enum GetTagsError {
7464    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7465    BadRequest(String),
7466    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
7467    LimitExceeded(String),
7468    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7469    NotFound(String),
7470    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7471    TooManyRequests(String),
7472    /// <p>The request is denied because the caller has insufficient permissions.</p>
7473    Unauthorized(String),
7474}
7475
7476impl GetTagsError {
7477    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetTagsError> {
7478        if let Some(err) = proto::json::Error::parse_rest(&res) {
7479            match err.typ.as_str() {
7480                "BadRequestException" => {
7481                    return RusotoError::Service(GetTagsError::BadRequest(err.msg))
7482                }
7483                "LimitExceededException" => {
7484                    return RusotoError::Service(GetTagsError::LimitExceeded(err.msg))
7485                }
7486                "NotFoundException" => {
7487                    return RusotoError::Service(GetTagsError::NotFound(err.msg))
7488                }
7489                "TooManyRequestsException" => {
7490                    return RusotoError::Service(GetTagsError::TooManyRequests(err.msg))
7491                }
7492                "UnauthorizedException" => {
7493                    return RusotoError::Service(GetTagsError::Unauthorized(err.msg))
7494                }
7495                "ValidationException" => return RusotoError::Validation(err.msg),
7496                _ => {}
7497            }
7498        }
7499        RusotoError::Unknown(res)
7500    }
7501}
7502impl fmt::Display for GetTagsError {
7503    #[allow(unused_variables)]
7504    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7505        match *self {
7506            GetTagsError::BadRequest(ref cause) => write!(f, "{}", cause),
7507            GetTagsError::LimitExceeded(ref cause) => write!(f, "{}", cause),
7508            GetTagsError::NotFound(ref cause) => write!(f, "{}", cause),
7509            GetTagsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7510            GetTagsError::Unauthorized(ref cause) => write!(f, "{}", cause),
7511        }
7512    }
7513}
7514impl Error for GetTagsError {}
7515/// Errors returned by GetUsage
7516#[derive(Debug, PartialEq)]
7517pub enum GetUsageError {
7518    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7519    BadRequest(String),
7520    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7521    NotFound(String),
7522    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7523    TooManyRequests(String),
7524    /// <p>The request is denied because the caller has insufficient permissions.</p>
7525    Unauthorized(String),
7526}
7527
7528impl GetUsageError {
7529    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetUsageError> {
7530        if let Some(err) = proto::json::Error::parse_rest(&res) {
7531            match err.typ.as_str() {
7532                "BadRequestException" => {
7533                    return RusotoError::Service(GetUsageError::BadRequest(err.msg))
7534                }
7535                "NotFoundException" => {
7536                    return RusotoError::Service(GetUsageError::NotFound(err.msg))
7537                }
7538                "TooManyRequestsException" => {
7539                    return RusotoError::Service(GetUsageError::TooManyRequests(err.msg))
7540                }
7541                "UnauthorizedException" => {
7542                    return RusotoError::Service(GetUsageError::Unauthorized(err.msg))
7543                }
7544                "ValidationException" => return RusotoError::Validation(err.msg),
7545                _ => {}
7546            }
7547        }
7548        RusotoError::Unknown(res)
7549    }
7550}
7551impl fmt::Display for GetUsageError {
7552    #[allow(unused_variables)]
7553    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7554        match *self {
7555            GetUsageError::BadRequest(ref cause) => write!(f, "{}", cause),
7556            GetUsageError::NotFound(ref cause) => write!(f, "{}", cause),
7557            GetUsageError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7558            GetUsageError::Unauthorized(ref cause) => write!(f, "{}", cause),
7559        }
7560    }
7561}
7562impl Error for GetUsageError {}
7563/// Errors returned by GetUsagePlan
7564#[derive(Debug, PartialEq)]
7565pub enum GetUsagePlanError {
7566    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7567    BadRequest(String),
7568    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7569    NotFound(String),
7570    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7571    TooManyRequests(String),
7572    /// <p>The request is denied because the caller has insufficient permissions.</p>
7573    Unauthorized(String),
7574}
7575
7576impl GetUsagePlanError {
7577    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetUsagePlanError> {
7578        if let Some(err) = proto::json::Error::parse_rest(&res) {
7579            match err.typ.as_str() {
7580                "BadRequestException" => {
7581                    return RusotoError::Service(GetUsagePlanError::BadRequest(err.msg))
7582                }
7583                "NotFoundException" => {
7584                    return RusotoError::Service(GetUsagePlanError::NotFound(err.msg))
7585                }
7586                "TooManyRequestsException" => {
7587                    return RusotoError::Service(GetUsagePlanError::TooManyRequests(err.msg))
7588                }
7589                "UnauthorizedException" => {
7590                    return RusotoError::Service(GetUsagePlanError::Unauthorized(err.msg))
7591                }
7592                "ValidationException" => return RusotoError::Validation(err.msg),
7593                _ => {}
7594            }
7595        }
7596        RusotoError::Unknown(res)
7597    }
7598}
7599impl fmt::Display for GetUsagePlanError {
7600    #[allow(unused_variables)]
7601    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7602        match *self {
7603            GetUsagePlanError::BadRequest(ref cause) => write!(f, "{}", cause),
7604            GetUsagePlanError::NotFound(ref cause) => write!(f, "{}", cause),
7605            GetUsagePlanError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7606            GetUsagePlanError::Unauthorized(ref cause) => write!(f, "{}", cause),
7607        }
7608    }
7609}
7610impl Error for GetUsagePlanError {}
7611/// Errors returned by GetUsagePlanKey
7612#[derive(Debug, PartialEq)]
7613pub enum GetUsagePlanKeyError {
7614    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7615    BadRequest(String),
7616    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7617    NotFound(String),
7618    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7619    TooManyRequests(String),
7620    /// <p>The request is denied because the caller has insufficient permissions.</p>
7621    Unauthorized(String),
7622}
7623
7624impl GetUsagePlanKeyError {
7625    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetUsagePlanKeyError> {
7626        if let Some(err) = proto::json::Error::parse_rest(&res) {
7627            match err.typ.as_str() {
7628                "BadRequestException" => {
7629                    return RusotoError::Service(GetUsagePlanKeyError::BadRequest(err.msg))
7630                }
7631                "NotFoundException" => {
7632                    return RusotoError::Service(GetUsagePlanKeyError::NotFound(err.msg))
7633                }
7634                "TooManyRequestsException" => {
7635                    return RusotoError::Service(GetUsagePlanKeyError::TooManyRequests(err.msg))
7636                }
7637                "UnauthorizedException" => {
7638                    return RusotoError::Service(GetUsagePlanKeyError::Unauthorized(err.msg))
7639                }
7640                "ValidationException" => return RusotoError::Validation(err.msg),
7641                _ => {}
7642            }
7643        }
7644        RusotoError::Unknown(res)
7645    }
7646}
7647impl fmt::Display for GetUsagePlanKeyError {
7648    #[allow(unused_variables)]
7649    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7650        match *self {
7651            GetUsagePlanKeyError::BadRequest(ref cause) => write!(f, "{}", cause),
7652            GetUsagePlanKeyError::NotFound(ref cause) => write!(f, "{}", cause),
7653            GetUsagePlanKeyError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7654            GetUsagePlanKeyError::Unauthorized(ref cause) => write!(f, "{}", cause),
7655        }
7656    }
7657}
7658impl Error for GetUsagePlanKeyError {}
7659/// Errors returned by GetUsagePlanKeys
7660#[derive(Debug, PartialEq)]
7661pub enum GetUsagePlanKeysError {
7662    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7663    BadRequest(String),
7664    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7665    NotFound(String),
7666    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7667    TooManyRequests(String),
7668    /// <p>The request is denied because the caller has insufficient permissions.</p>
7669    Unauthorized(String),
7670}
7671
7672impl GetUsagePlanKeysError {
7673    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetUsagePlanKeysError> {
7674        if let Some(err) = proto::json::Error::parse_rest(&res) {
7675            match err.typ.as_str() {
7676                "BadRequestException" => {
7677                    return RusotoError::Service(GetUsagePlanKeysError::BadRequest(err.msg))
7678                }
7679                "NotFoundException" => {
7680                    return RusotoError::Service(GetUsagePlanKeysError::NotFound(err.msg))
7681                }
7682                "TooManyRequestsException" => {
7683                    return RusotoError::Service(GetUsagePlanKeysError::TooManyRequests(err.msg))
7684                }
7685                "UnauthorizedException" => {
7686                    return RusotoError::Service(GetUsagePlanKeysError::Unauthorized(err.msg))
7687                }
7688                "ValidationException" => return RusotoError::Validation(err.msg),
7689                _ => {}
7690            }
7691        }
7692        RusotoError::Unknown(res)
7693    }
7694}
7695impl fmt::Display for GetUsagePlanKeysError {
7696    #[allow(unused_variables)]
7697    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7698        match *self {
7699            GetUsagePlanKeysError::BadRequest(ref cause) => write!(f, "{}", cause),
7700            GetUsagePlanKeysError::NotFound(ref cause) => write!(f, "{}", cause),
7701            GetUsagePlanKeysError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7702            GetUsagePlanKeysError::Unauthorized(ref cause) => write!(f, "{}", cause),
7703        }
7704    }
7705}
7706impl Error for GetUsagePlanKeysError {}
7707/// Errors returned by GetUsagePlans
7708#[derive(Debug, PartialEq)]
7709pub enum GetUsagePlansError {
7710    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7711    BadRequest(String),
7712    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
7713    Conflict(String),
7714    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7715    NotFound(String),
7716    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7717    TooManyRequests(String),
7718    /// <p>The request is denied because the caller has insufficient permissions.</p>
7719    Unauthorized(String),
7720}
7721
7722impl GetUsagePlansError {
7723    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetUsagePlansError> {
7724        if let Some(err) = proto::json::Error::parse_rest(&res) {
7725            match err.typ.as_str() {
7726                "BadRequestException" => {
7727                    return RusotoError::Service(GetUsagePlansError::BadRequest(err.msg))
7728                }
7729                "ConflictException" => {
7730                    return RusotoError::Service(GetUsagePlansError::Conflict(err.msg))
7731                }
7732                "NotFoundException" => {
7733                    return RusotoError::Service(GetUsagePlansError::NotFound(err.msg))
7734                }
7735                "TooManyRequestsException" => {
7736                    return RusotoError::Service(GetUsagePlansError::TooManyRequests(err.msg))
7737                }
7738                "UnauthorizedException" => {
7739                    return RusotoError::Service(GetUsagePlansError::Unauthorized(err.msg))
7740                }
7741                "ValidationException" => return RusotoError::Validation(err.msg),
7742                _ => {}
7743            }
7744        }
7745        RusotoError::Unknown(res)
7746    }
7747}
7748impl fmt::Display for GetUsagePlansError {
7749    #[allow(unused_variables)]
7750    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7751        match *self {
7752            GetUsagePlansError::BadRequest(ref cause) => write!(f, "{}", cause),
7753            GetUsagePlansError::Conflict(ref cause) => write!(f, "{}", cause),
7754            GetUsagePlansError::NotFound(ref cause) => write!(f, "{}", cause),
7755            GetUsagePlansError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7756            GetUsagePlansError::Unauthorized(ref cause) => write!(f, "{}", cause),
7757        }
7758    }
7759}
7760impl Error for GetUsagePlansError {}
7761/// Errors returned by GetVpcLink
7762#[derive(Debug, PartialEq)]
7763pub enum GetVpcLinkError {
7764    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7765    NotFound(String),
7766    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7767    TooManyRequests(String),
7768    /// <p>The request is denied because the caller has insufficient permissions.</p>
7769    Unauthorized(String),
7770}
7771
7772impl GetVpcLinkError {
7773    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetVpcLinkError> {
7774        if let Some(err) = proto::json::Error::parse_rest(&res) {
7775            match err.typ.as_str() {
7776                "NotFoundException" => {
7777                    return RusotoError::Service(GetVpcLinkError::NotFound(err.msg))
7778                }
7779                "TooManyRequestsException" => {
7780                    return RusotoError::Service(GetVpcLinkError::TooManyRequests(err.msg))
7781                }
7782                "UnauthorizedException" => {
7783                    return RusotoError::Service(GetVpcLinkError::Unauthorized(err.msg))
7784                }
7785                "ValidationException" => return RusotoError::Validation(err.msg),
7786                _ => {}
7787            }
7788        }
7789        RusotoError::Unknown(res)
7790    }
7791}
7792impl fmt::Display for GetVpcLinkError {
7793    #[allow(unused_variables)]
7794    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7795        match *self {
7796            GetVpcLinkError::NotFound(ref cause) => write!(f, "{}", cause),
7797            GetVpcLinkError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7798            GetVpcLinkError::Unauthorized(ref cause) => write!(f, "{}", cause),
7799        }
7800    }
7801}
7802impl Error for GetVpcLinkError {}
7803/// Errors returned by GetVpcLinks
7804#[derive(Debug, PartialEq)]
7805pub enum GetVpcLinksError {
7806    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7807    BadRequest(String),
7808    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7809    TooManyRequests(String),
7810    /// <p>The request is denied because the caller has insufficient permissions.</p>
7811    Unauthorized(String),
7812}
7813
7814impl GetVpcLinksError {
7815    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetVpcLinksError> {
7816        if let Some(err) = proto::json::Error::parse_rest(&res) {
7817            match err.typ.as_str() {
7818                "BadRequestException" => {
7819                    return RusotoError::Service(GetVpcLinksError::BadRequest(err.msg))
7820                }
7821                "TooManyRequestsException" => {
7822                    return RusotoError::Service(GetVpcLinksError::TooManyRequests(err.msg))
7823                }
7824                "UnauthorizedException" => {
7825                    return RusotoError::Service(GetVpcLinksError::Unauthorized(err.msg))
7826                }
7827                "ValidationException" => return RusotoError::Validation(err.msg),
7828                _ => {}
7829            }
7830        }
7831        RusotoError::Unknown(res)
7832    }
7833}
7834impl fmt::Display for GetVpcLinksError {
7835    #[allow(unused_variables)]
7836    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7837        match *self {
7838            GetVpcLinksError::BadRequest(ref cause) => write!(f, "{}", cause),
7839            GetVpcLinksError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7840            GetVpcLinksError::Unauthorized(ref cause) => write!(f, "{}", cause),
7841        }
7842    }
7843}
7844impl Error for GetVpcLinksError {}
7845/// Errors returned by ImportApiKeys
7846#[derive(Debug, PartialEq)]
7847pub enum ImportApiKeysError {
7848    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7849    BadRequest(String),
7850    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
7851    Conflict(String),
7852    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
7853    LimitExceeded(String),
7854    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7855    NotFound(String),
7856    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7857    TooManyRequests(String),
7858    /// <p>The request is denied because the caller has insufficient permissions.</p>
7859    Unauthorized(String),
7860}
7861
7862impl ImportApiKeysError {
7863    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ImportApiKeysError> {
7864        if let Some(err) = proto::json::Error::parse_rest(&res) {
7865            match err.typ.as_str() {
7866                "BadRequestException" => {
7867                    return RusotoError::Service(ImportApiKeysError::BadRequest(err.msg))
7868                }
7869                "ConflictException" => {
7870                    return RusotoError::Service(ImportApiKeysError::Conflict(err.msg))
7871                }
7872                "LimitExceededException" => {
7873                    return RusotoError::Service(ImportApiKeysError::LimitExceeded(err.msg))
7874                }
7875                "NotFoundException" => {
7876                    return RusotoError::Service(ImportApiKeysError::NotFound(err.msg))
7877                }
7878                "TooManyRequestsException" => {
7879                    return RusotoError::Service(ImportApiKeysError::TooManyRequests(err.msg))
7880                }
7881                "UnauthorizedException" => {
7882                    return RusotoError::Service(ImportApiKeysError::Unauthorized(err.msg))
7883                }
7884                "ValidationException" => return RusotoError::Validation(err.msg),
7885                _ => {}
7886            }
7887        }
7888        RusotoError::Unknown(res)
7889    }
7890}
7891impl fmt::Display for ImportApiKeysError {
7892    #[allow(unused_variables)]
7893    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7894        match *self {
7895            ImportApiKeysError::BadRequest(ref cause) => write!(f, "{}", cause),
7896            ImportApiKeysError::Conflict(ref cause) => write!(f, "{}", cause),
7897            ImportApiKeysError::LimitExceeded(ref cause) => write!(f, "{}", cause),
7898            ImportApiKeysError::NotFound(ref cause) => write!(f, "{}", cause),
7899            ImportApiKeysError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7900            ImportApiKeysError::Unauthorized(ref cause) => write!(f, "{}", cause),
7901        }
7902    }
7903}
7904impl Error for ImportApiKeysError {}
7905/// Errors returned by ImportDocumentationParts
7906#[derive(Debug, PartialEq)]
7907pub enum ImportDocumentationPartsError {
7908    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7909    BadRequest(String),
7910    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
7911    LimitExceeded(String),
7912    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
7913    NotFound(String),
7914    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7915    TooManyRequests(String),
7916    /// <p>The request is denied because the caller has insufficient permissions.</p>
7917    Unauthorized(String),
7918}
7919
7920impl ImportDocumentationPartsError {
7921    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ImportDocumentationPartsError> {
7922        if let Some(err) = proto::json::Error::parse_rest(&res) {
7923            match err.typ.as_str() {
7924                "BadRequestException" => {
7925                    return RusotoError::Service(ImportDocumentationPartsError::BadRequest(err.msg))
7926                }
7927                "LimitExceededException" => {
7928                    return RusotoError::Service(ImportDocumentationPartsError::LimitExceeded(
7929                        err.msg,
7930                    ))
7931                }
7932                "NotFoundException" => {
7933                    return RusotoError::Service(ImportDocumentationPartsError::NotFound(err.msg))
7934                }
7935                "TooManyRequestsException" => {
7936                    return RusotoError::Service(ImportDocumentationPartsError::TooManyRequests(
7937                        err.msg,
7938                    ))
7939                }
7940                "UnauthorizedException" => {
7941                    return RusotoError::Service(ImportDocumentationPartsError::Unauthorized(
7942                        err.msg,
7943                    ))
7944                }
7945                "ValidationException" => return RusotoError::Validation(err.msg),
7946                _ => {}
7947            }
7948        }
7949        RusotoError::Unknown(res)
7950    }
7951}
7952impl fmt::Display for ImportDocumentationPartsError {
7953    #[allow(unused_variables)]
7954    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7955        match *self {
7956            ImportDocumentationPartsError::BadRequest(ref cause) => write!(f, "{}", cause),
7957            ImportDocumentationPartsError::LimitExceeded(ref cause) => write!(f, "{}", cause),
7958            ImportDocumentationPartsError::NotFound(ref cause) => write!(f, "{}", cause),
7959            ImportDocumentationPartsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7960            ImportDocumentationPartsError::Unauthorized(ref cause) => write!(f, "{}", cause),
7961        }
7962    }
7963}
7964impl Error for ImportDocumentationPartsError {}
7965/// Errors returned by ImportRestApi
7966#[derive(Debug, PartialEq)]
7967pub enum ImportRestApiError {
7968    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
7969    BadRequest(String),
7970    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
7971    Conflict(String),
7972    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
7973    LimitExceeded(String),
7974    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
7975    TooManyRequests(String),
7976    /// <p>The request is denied because the caller has insufficient permissions.</p>
7977    Unauthorized(String),
7978}
7979
7980impl ImportRestApiError {
7981    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ImportRestApiError> {
7982        if let Some(err) = proto::json::Error::parse_rest(&res) {
7983            match err.typ.as_str() {
7984                "BadRequestException" => {
7985                    return RusotoError::Service(ImportRestApiError::BadRequest(err.msg))
7986                }
7987                "ConflictException" => {
7988                    return RusotoError::Service(ImportRestApiError::Conflict(err.msg))
7989                }
7990                "LimitExceededException" => {
7991                    return RusotoError::Service(ImportRestApiError::LimitExceeded(err.msg))
7992                }
7993                "TooManyRequestsException" => {
7994                    return RusotoError::Service(ImportRestApiError::TooManyRequests(err.msg))
7995                }
7996                "UnauthorizedException" => {
7997                    return RusotoError::Service(ImportRestApiError::Unauthorized(err.msg))
7998                }
7999                "ValidationException" => return RusotoError::Validation(err.msg),
8000                _ => {}
8001            }
8002        }
8003        RusotoError::Unknown(res)
8004    }
8005}
8006impl fmt::Display for ImportRestApiError {
8007    #[allow(unused_variables)]
8008    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8009        match *self {
8010            ImportRestApiError::BadRequest(ref cause) => write!(f, "{}", cause),
8011            ImportRestApiError::Conflict(ref cause) => write!(f, "{}", cause),
8012            ImportRestApiError::LimitExceeded(ref cause) => write!(f, "{}", cause),
8013            ImportRestApiError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8014            ImportRestApiError::Unauthorized(ref cause) => write!(f, "{}", cause),
8015        }
8016    }
8017}
8018impl Error for ImportRestApiError {}
8019/// Errors returned by PutGatewayResponse
8020#[derive(Debug, PartialEq)]
8021pub enum PutGatewayResponseError {
8022    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8023    BadRequest(String),
8024    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
8025    LimitExceeded(String),
8026    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8027    NotFound(String),
8028    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8029    TooManyRequests(String),
8030    /// <p>The request is denied because the caller has insufficient permissions.</p>
8031    Unauthorized(String),
8032}
8033
8034impl PutGatewayResponseError {
8035    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PutGatewayResponseError> {
8036        if let Some(err) = proto::json::Error::parse_rest(&res) {
8037            match err.typ.as_str() {
8038                "BadRequestException" => {
8039                    return RusotoError::Service(PutGatewayResponseError::BadRequest(err.msg))
8040                }
8041                "LimitExceededException" => {
8042                    return RusotoError::Service(PutGatewayResponseError::LimitExceeded(err.msg))
8043                }
8044                "NotFoundException" => {
8045                    return RusotoError::Service(PutGatewayResponseError::NotFound(err.msg))
8046                }
8047                "TooManyRequestsException" => {
8048                    return RusotoError::Service(PutGatewayResponseError::TooManyRequests(err.msg))
8049                }
8050                "UnauthorizedException" => {
8051                    return RusotoError::Service(PutGatewayResponseError::Unauthorized(err.msg))
8052                }
8053                "ValidationException" => return RusotoError::Validation(err.msg),
8054                _ => {}
8055            }
8056        }
8057        RusotoError::Unknown(res)
8058    }
8059}
8060impl fmt::Display for PutGatewayResponseError {
8061    #[allow(unused_variables)]
8062    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8063        match *self {
8064            PutGatewayResponseError::BadRequest(ref cause) => write!(f, "{}", cause),
8065            PutGatewayResponseError::LimitExceeded(ref cause) => write!(f, "{}", cause),
8066            PutGatewayResponseError::NotFound(ref cause) => write!(f, "{}", cause),
8067            PutGatewayResponseError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8068            PutGatewayResponseError::Unauthorized(ref cause) => write!(f, "{}", cause),
8069        }
8070    }
8071}
8072impl Error for PutGatewayResponseError {}
8073/// Errors returned by PutIntegration
8074#[derive(Debug, PartialEq)]
8075pub enum PutIntegrationError {
8076    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8077    BadRequest(String),
8078    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
8079    Conflict(String),
8080    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8081    NotFound(String),
8082    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8083    TooManyRequests(String),
8084    /// <p>The request is denied because the caller has insufficient permissions.</p>
8085    Unauthorized(String),
8086}
8087
8088impl PutIntegrationError {
8089    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PutIntegrationError> {
8090        if let Some(err) = proto::json::Error::parse_rest(&res) {
8091            match err.typ.as_str() {
8092                "BadRequestException" => {
8093                    return RusotoError::Service(PutIntegrationError::BadRequest(err.msg))
8094                }
8095                "ConflictException" => {
8096                    return RusotoError::Service(PutIntegrationError::Conflict(err.msg))
8097                }
8098                "NotFoundException" => {
8099                    return RusotoError::Service(PutIntegrationError::NotFound(err.msg))
8100                }
8101                "TooManyRequestsException" => {
8102                    return RusotoError::Service(PutIntegrationError::TooManyRequests(err.msg))
8103                }
8104                "UnauthorizedException" => {
8105                    return RusotoError::Service(PutIntegrationError::Unauthorized(err.msg))
8106                }
8107                "ValidationException" => return RusotoError::Validation(err.msg),
8108                _ => {}
8109            }
8110        }
8111        RusotoError::Unknown(res)
8112    }
8113}
8114impl fmt::Display for PutIntegrationError {
8115    #[allow(unused_variables)]
8116    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8117        match *self {
8118            PutIntegrationError::BadRequest(ref cause) => write!(f, "{}", cause),
8119            PutIntegrationError::Conflict(ref cause) => write!(f, "{}", cause),
8120            PutIntegrationError::NotFound(ref cause) => write!(f, "{}", cause),
8121            PutIntegrationError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8122            PutIntegrationError::Unauthorized(ref cause) => write!(f, "{}", cause),
8123        }
8124    }
8125}
8126impl Error for PutIntegrationError {}
8127/// Errors returned by PutIntegrationResponse
8128#[derive(Debug, PartialEq)]
8129pub enum PutIntegrationResponseError {
8130    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8131    BadRequest(String),
8132    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
8133    Conflict(String),
8134    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
8135    LimitExceeded(String),
8136    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8137    NotFound(String),
8138    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8139    TooManyRequests(String),
8140    /// <p>The request is denied because the caller has insufficient permissions.</p>
8141    Unauthorized(String),
8142}
8143
8144impl PutIntegrationResponseError {
8145    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PutIntegrationResponseError> {
8146        if let Some(err) = proto::json::Error::parse_rest(&res) {
8147            match err.typ.as_str() {
8148                "BadRequestException" => {
8149                    return RusotoError::Service(PutIntegrationResponseError::BadRequest(err.msg))
8150                }
8151                "ConflictException" => {
8152                    return RusotoError::Service(PutIntegrationResponseError::Conflict(err.msg))
8153                }
8154                "LimitExceededException" => {
8155                    return RusotoError::Service(PutIntegrationResponseError::LimitExceeded(
8156                        err.msg,
8157                    ))
8158                }
8159                "NotFoundException" => {
8160                    return RusotoError::Service(PutIntegrationResponseError::NotFound(err.msg))
8161                }
8162                "TooManyRequestsException" => {
8163                    return RusotoError::Service(PutIntegrationResponseError::TooManyRequests(
8164                        err.msg,
8165                    ))
8166                }
8167                "UnauthorizedException" => {
8168                    return RusotoError::Service(PutIntegrationResponseError::Unauthorized(err.msg))
8169                }
8170                "ValidationException" => return RusotoError::Validation(err.msg),
8171                _ => {}
8172            }
8173        }
8174        RusotoError::Unknown(res)
8175    }
8176}
8177impl fmt::Display for PutIntegrationResponseError {
8178    #[allow(unused_variables)]
8179    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8180        match *self {
8181            PutIntegrationResponseError::BadRequest(ref cause) => write!(f, "{}", cause),
8182            PutIntegrationResponseError::Conflict(ref cause) => write!(f, "{}", cause),
8183            PutIntegrationResponseError::LimitExceeded(ref cause) => write!(f, "{}", cause),
8184            PutIntegrationResponseError::NotFound(ref cause) => write!(f, "{}", cause),
8185            PutIntegrationResponseError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8186            PutIntegrationResponseError::Unauthorized(ref cause) => write!(f, "{}", cause),
8187        }
8188    }
8189}
8190impl Error for PutIntegrationResponseError {}
8191/// Errors returned by PutMethod
8192#[derive(Debug, PartialEq)]
8193pub enum PutMethodError {
8194    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8195    BadRequest(String),
8196    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
8197    Conflict(String),
8198    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
8199    LimitExceeded(String),
8200    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8201    NotFound(String),
8202    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8203    TooManyRequests(String),
8204    /// <p>The request is denied because the caller has insufficient permissions.</p>
8205    Unauthorized(String),
8206}
8207
8208impl PutMethodError {
8209    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PutMethodError> {
8210        if let Some(err) = proto::json::Error::parse_rest(&res) {
8211            match err.typ.as_str() {
8212                "BadRequestException" => {
8213                    return RusotoError::Service(PutMethodError::BadRequest(err.msg))
8214                }
8215                "ConflictException" => {
8216                    return RusotoError::Service(PutMethodError::Conflict(err.msg))
8217                }
8218                "LimitExceededException" => {
8219                    return RusotoError::Service(PutMethodError::LimitExceeded(err.msg))
8220                }
8221                "NotFoundException" => {
8222                    return RusotoError::Service(PutMethodError::NotFound(err.msg))
8223                }
8224                "TooManyRequestsException" => {
8225                    return RusotoError::Service(PutMethodError::TooManyRequests(err.msg))
8226                }
8227                "UnauthorizedException" => {
8228                    return RusotoError::Service(PutMethodError::Unauthorized(err.msg))
8229                }
8230                "ValidationException" => return RusotoError::Validation(err.msg),
8231                _ => {}
8232            }
8233        }
8234        RusotoError::Unknown(res)
8235    }
8236}
8237impl fmt::Display for PutMethodError {
8238    #[allow(unused_variables)]
8239    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8240        match *self {
8241            PutMethodError::BadRequest(ref cause) => write!(f, "{}", cause),
8242            PutMethodError::Conflict(ref cause) => write!(f, "{}", cause),
8243            PutMethodError::LimitExceeded(ref cause) => write!(f, "{}", cause),
8244            PutMethodError::NotFound(ref cause) => write!(f, "{}", cause),
8245            PutMethodError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8246            PutMethodError::Unauthorized(ref cause) => write!(f, "{}", cause),
8247        }
8248    }
8249}
8250impl Error for PutMethodError {}
8251/// Errors returned by PutMethodResponse
8252#[derive(Debug, PartialEq)]
8253pub enum PutMethodResponseError {
8254    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8255    BadRequest(String),
8256    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
8257    Conflict(String),
8258    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
8259    LimitExceeded(String),
8260    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8261    NotFound(String),
8262    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8263    TooManyRequests(String),
8264    /// <p>The request is denied because the caller has insufficient permissions.</p>
8265    Unauthorized(String),
8266}
8267
8268impl PutMethodResponseError {
8269    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PutMethodResponseError> {
8270        if let Some(err) = proto::json::Error::parse_rest(&res) {
8271            match err.typ.as_str() {
8272                "BadRequestException" => {
8273                    return RusotoError::Service(PutMethodResponseError::BadRequest(err.msg))
8274                }
8275                "ConflictException" => {
8276                    return RusotoError::Service(PutMethodResponseError::Conflict(err.msg))
8277                }
8278                "LimitExceededException" => {
8279                    return RusotoError::Service(PutMethodResponseError::LimitExceeded(err.msg))
8280                }
8281                "NotFoundException" => {
8282                    return RusotoError::Service(PutMethodResponseError::NotFound(err.msg))
8283                }
8284                "TooManyRequestsException" => {
8285                    return RusotoError::Service(PutMethodResponseError::TooManyRequests(err.msg))
8286                }
8287                "UnauthorizedException" => {
8288                    return RusotoError::Service(PutMethodResponseError::Unauthorized(err.msg))
8289                }
8290                "ValidationException" => return RusotoError::Validation(err.msg),
8291                _ => {}
8292            }
8293        }
8294        RusotoError::Unknown(res)
8295    }
8296}
8297impl fmt::Display for PutMethodResponseError {
8298    #[allow(unused_variables)]
8299    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8300        match *self {
8301            PutMethodResponseError::BadRequest(ref cause) => write!(f, "{}", cause),
8302            PutMethodResponseError::Conflict(ref cause) => write!(f, "{}", cause),
8303            PutMethodResponseError::LimitExceeded(ref cause) => write!(f, "{}", cause),
8304            PutMethodResponseError::NotFound(ref cause) => write!(f, "{}", cause),
8305            PutMethodResponseError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8306            PutMethodResponseError::Unauthorized(ref cause) => write!(f, "{}", cause),
8307        }
8308    }
8309}
8310impl Error for PutMethodResponseError {}
8311/// Errors returned by PutRestApi
8312#[derive(Debug, PartialEq)]
8313pub enum PutRestApiError {
8314    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8315    BadRequest(String),
8316    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
8317    Conflict(String),
8318    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
8319    LimitExceeded(String),
8320    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8321    NotFound(String),
8322    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8323    TooManyRequests(String),
8324    /// <p>The request is denied because the caller has insufficient permissions.</p>
8325    Unauthorized(String),
8326}
8327
8328impl PutRestApiError {
8329    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PutRestApiError> {
8330        if let Some(err) = proto::json::Error::parse_rest(&res) {
8331            match err.typ.as_str() {
8332                "BadRequestException" => {
8333                    return RusotoError::Service(PutRestApiError::BadRequest(err.msg))
8334                }
8335                "ConflictException" => {
8336                    return RusotoError::Service(PutRestApiError::Conflict(err.msg))
8337                }
8338                "LimitExceededException" => {
8339                    return RusotoError::Service(PutRestApiError::LimitExceeded(err.msg))
8340                }
8341                "NotFoundException" => {
8342                    return RusotoError::Service(PutRestApiError::NotFound(err.msg))
8343                }
8344                "TooManyRequestsException" => {
8345                    return RusotoError::Service(PutRestApiError::TooManyRequests(err.msg))
8346                }
8347                "UnauthorizedException" => {
8348                    return RusotoError::Service(PutRestApiError::Unauthorized(err.msg))
8349                }
8350                "ValidationException" => return RusotoError::Validation(err.msg),
8351                _ => {}
8352            }
8353        }
8354        RusotoError::Unknown(res)
8355    }
8356}
8357impl fmt::Display for PutRestApiError {
8358    #[allow(unused_variables)]
8359    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8360        match *self {
8361            PutRestApiError::BadRequest(ref cause) => write!(f, "{}", cause),
8362            PutRestApiError::Conflict(ref cause) => write!(f, "{}", cause),
8363            PutRestApiError::LimitExceeded(ref cause) => write!(f, "{}", cause),
8364            PutRestApiError::NotFound(ref cause) => write!(f, "{}", cause),
8365            PutRestApiError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8366            PutRestApiError::Unauthorized(ref cause) => write!(f, "{}", cause),
8367        }
8368    }
8369}
8370impl Error for PutRestApiError {}
8371/// Errors returned by TagResource
8372#[derive(Debug, PartialEq)]
8373pub enum TagResourceError {
8374    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8375    BadRequest(String),
8376    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
8377    Conflict(String),
8378    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
8379    LimitExceeded(String),
8380    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8381    NotFound(String),
8382    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8383    TooManyRequests(String),
8384    /// <p>The request is denied because the caller has insufficient permissions.</p>
8385    Unauthorized(String),
8386}
8387
8388impl TagResourceError {
8389    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TagResourceError> {
8390        if let Some(err) = proto::json::Error::parse_rest(&res) {
8391            match err.typ.as_str() {
8392                "BadRequestException" => {
8393                    return RusotoError::Service(TagResourceError::BadRequest(err.msg))
8394                }
8395                "ConflictException" => {
8396                    return RusotoError::Service(TagResourceError::Conflict(err.msg))
8397                }
8398                "LimitExceededException" => {
8399                    return RusotoError::Service(TagResourceError::LimitExceeded(err.msg))
8400                }
8401                "NotFoundException" => {
8402                    return RusotoError::Service(TagResourceError::NotFound(err.msg))
8403                }
8404                "TooManyRequestsException" => {
8405                    return RusotoError::Service(TagResourceError::TooManyRequests(err.msg))
8406                }
8407                "UnauthorizedException" => {
8408                    return RusotoError::Service(TagResourceError::Unauthorized(err.msg))
8409                }
8410                "ValidationException" => return RusotoError::Validation(err.msg),
8411                _ => {}
8412            }
8413        }
8414        RusotoError::Unknown(res)
8415    }
8416}
8417impl fmt::Display for TagResourceError {
8418    #[allow(unused_variables)]
8419    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8420        match *self {
8421            TagResourceError::BadRequest(ref cause) => write!(f, "{}", cause),
8422            TagResourceError::Conflict(ref cause) => write!(f, "{}", cause),
8423            TagResourceError::LimitExceeded(ref cause) => write!(f, "{}", cause),
8424            TagResourceError::NotFound(ref cause) => write!(f, "{}", cause),
8425            TagResourceError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8426            TagResourceError::Unauthorized(ref cause) => write!(f, "{}", cause),
8427        }
8428    }
8429}
8430impl Error for TagResourceError {}
8431/// Errors returned by TestInvokeAuthorizer
8432#[derive(Debug, PartialEq)]
8433pub enum TestInvokeAuthorizerError {
8434    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8435    BadRequest(String),
8436    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8437    NotFound(String),
8438    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8439    TooManyRequests(String),
8440    /// <p>The request is denied because the caller has insufficient permissions.</p>
8441    Unauthorized(String),
8442}
8443
8444impl TestInvokeAuthorizerError {
8445    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TestInvokeAuthorizerError> {
8446        if let Some(err) = proto::json::Error::parse_rest(&res) {
8447            match err.typ.as_str() {
8448                "BadRequestException" => {
8449                    return RusotoError::Service(TestInvokeAuthorizerError::BadRequest(err.msg))
8450                }
8451                "NotFoundException" => {
8452                    return RusotoError::Service(TestInvokeAuthorizerError::NotFound(err.msg))
8453                }
8454                "TooManyRequestsException" => {
8455                    return RusotoError::Service(TestInvokeAuthorizerError::TooManyRequests(
8456                        err.msg,
8457                    ))
8458                }
8459                "UnauthorizedException" => {
8460                    return RusotoError::Service(TestInvokeAuthorizerError::Unauthorized(err.msg))
8461                }
8462                "ValidationException" => return RusotoError::Validation(err.msg),
8463                _ => {}
8464            }
8465        }
8466        RusotoError::Unknown(res)
8467    }
8468}
8469impl fmt::Display for TestInvokeAuthorizerError {
8470    #[allow(unused_variables)]
8471    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8472        match *self {
8473            TestInvokeAuthorizerError::BadRequest(ref cause) => write!(f, "{}", cause),
8474            TestInvokeAuthorizerError::NotFound(ref cause) => write!(f, "{}", cause),
8475            TestInvokeAuthorizerError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8476            TestInvokeAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
8477        }
8478    }
8479}
8480impl Error for TestInvokeAuthorizerError {}
8481/// Errors returned by TestInvokeMethod
8482#[derive(Debug, PartialEq)]
8483pub enum TestInvokeMethodError {
8484    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8485    BadRequest(String),
8486    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8487    NotFound(String),
8488    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8489    TooManyRequests(String),
8490    /// <p>The request is denied because the caller has insufficient permissions.</p>
8491    Unauthorized(String),
8492}
8493
8494impl TestInvokeMethodError {
8495    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TestInvokeMethodError> {
8496        if let Some(err) = proto::json::Error::parse_rest(&res) {
8497            match err.typ.as_str() {
8498                "BadRequestException" => {
8499                    return RusotoError::Service(TestInvokeMethodError::BadRequest(err.msg))
8500                }
8501                "NotFoundException" => {
8502                    return RusotoError::Service(TestInvokeMethodError::NotFound(err.msg))
8503                }
8504                "TooManyRequestsException" => {
8505                    return RusotoError::Service(TestInvokeMethodError::TooManyRequests(err.msg))
8506                }
8507                "UnauthorizedException" => {
8508                    return RusotoError::Service(TestInvokeMethodError::Unauthorized(err.msg))
8509                }
8510                "ValidationException" => return RusotoError::Validation(err.msg),
8511                _ => {}
8512            }
8513        }
8514        RusotoError::Unknown(res)
8515    }
8516}
8517impl fmt::Display for TestInvokeMethodError {
8518    #[allow(unused_variables)]
8519    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8520        match *self {
8521            TestInvokeMethodError::BadRequest(ref cause) => write!(f, "{}", cause),
8522            TestInvokeMethodError::NotFound(ref cause) => write!(f, "{}", cause),
8523            TestInvokeMethodError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8524            TestInvokeMethodError::Unauthorized(ref cause) => write!(f, "{}", cause),
8525        }
8526    }
8527}
8528impl Error for TestInvokeMethodError {}
8529/// Errors returned by UntagResource
8530#[derive(Debug, PartialEq)]
8531pub enum UntagResourceError {
8532    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8533    BadRequest(String),
8534    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
8535    Conflict(String),
8536    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8537    NotFound(String),
8538    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8539    TooManyRequests(String),
8540    /// <p>The request is denied because the caller has insufficient permissions.</p>
8541    Unauthorized(String),
8542}
8543
8544impl UntagResourceError {
8545    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UntagResourceError> {
8546        if let Some(err) = proto::json::Error::parse_rest(&res) {
8547            match err.typ.as_str() {
8548                "BadRequestException" => {
8549                    return RusotoError::Service(UntagResourceError::BadRequest(err.msg))
8550                }
8551                "ConflictException" => {
8552                    return RusotoError::Service(UntagResourceError::Conflict(err.msg))
8553                }
8554                "NotFoundException" => {
8555                    return RusotoError::Service(UntagResourceError::NotFound(err.msg))
8556                }
8557                "TooManyRequestsException" => {
8558                    return RusotoError::Service(UntagResourceError::TooManyRequests(err.msg))
8559                }
8560                "UnauthorizedException" => {
8561                    return RusotoError::Service(UntagResourceError::Unauthorized(err.msg))
8562                }
8563                "ValidationException" => return RusotoError::Validation(err.msg),
8564                _ => {}
8565            }
8566        }
8567        RusotoError::Unknown(res)
8568    }
8569}
8570impl fmt::Display for UntagResourceError {
8571    #[allow(unused_variables)]
8572    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8573        match *self {
8574            UntagResourceError::BadRequest(ref cause) => write!(f, "{}", cause),
8575            UntagResourceError::Conflict(ref cause) => write!(f, "{}", cause),
8576            UntagResourceError::NotFound(ref cause) => write!(f, "{}", cause),
8577            UntagResourceError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8578            UntagResourceError::Unauthorized(ref cause) => write!(f, "{}", cause),
8579        }
8580    }
8581}
8582impl Error for UntagResourceError {}
8583/// Errors returned by UpdateAccount
8584#[derive(Debug, PartialEq)]
8585pub enum UpdateAccountError {
8586    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8587    BadRequest(String),
8588    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8589    NotFound(String),
8590    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8591    TooManyRequests(String),
8592    /// <p>The request is denied because the caller has insufficient permissions.</p>
8593    Unauthorized(String),
8594}
8595
8596impl UpdateAccountError {
8597    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateAccountError> {
8598        if let Some(err) = proto::json::Error::parse_rest(&res) {
8599            match err.typ.as_str() {
8600                "BadRequestException" => {
8601                    return RusotoError::Service(UpdateAccountError::BadRequest(err.msg))
8602                }
8603                "NotFoundException" => {
8604                    return RusotoError::Service(UpdateAccountError::NotFound(err.msg))
8605                }
8606                "TooManyRequestsException" => {
8607                    return RusotoError::Service(UpdateAccountError::TooManyRequests(err.msg))
8608                }
8609                "UnauthorizedException" => {
8610                    return RusotoError::Service(UpdateAccountError::Unauthorized(err.msg))
8611                }
8612                "ValidationException" => return RusotoError::Validation(err.msg),
8613                _ => {}
8614            }
8615        }
8616        RusotoError::Unknown(res)
8617    }
8618}
8619impl fmt::Display for UpdateAccountError {
8620    #[allow(unused_variables)]
8621    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8622        match *self {
8623            UpdateAccountError::BadRequest(ref cause) => write!(f, "{}", cause),
8624            UpdateAccountError::NotFound(ref cause) => write!(f, "{}", cause),
8625            UpdateAccountError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8626            UpdateAccountError::Unauthorized(ref cause) => write!(f, "{}", cause),
8627        }
8628    }
8629}
8630impl Error for UpdateAccountError {}
8631/// Errors returned by UpdateApiKey
8632#[derive(Debug, PartialEq)]
8633pub enum UpdateApiKeyError {
8634    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8635    BadRequest(String),
8636    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
8637    Conflict(String),
8638    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8639    NotFound(String),
8640    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8641    TooManyRequests(String),
8642    /// <p>The request is denied because the caller has insufficient permissions.</p>
8643    Unauthorized(String),
8644}
8645
8646impl UpdateApiKeyError {
8647    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateApiKeyError> {
8648        if let Some(err) = proto::json::Error::parse_rest(&res) {
8649            match err.typ.as_str() {
8650                "BadRequestException" => {
8651                    return RusotoError::Service(UpdateApiKeyError::BadRequest(err.msg))
8652                }
8653                "ConflictException" => {
8654                    return RusotoError::Service(UpdateApiKeyError::Conflict(err.msg))
8655                }
8656                "NotFoundException" => {
8657                    return RusotoError::Service(UpdateApiKeyError::NotFound(err.msg))
8658                }
8659                "TooManyRequestsException" => {
8660                    return RusotoError::Service(UpdateApiKeyError::TooManyRequests(err.msg))
8661                }
8662                "UnauthorizedException" => {
8663                    return RusotoError::Service(UpdateApiKeyError::Unauthorized(err.msg))
8664                }
8665                "ValidationException" => return RusotoError::Validation(err.msg),
8666                _ => {}
8667            }
8668        }
8669        RusotoError::Unknown(res)
8670    }
8671}
8672impl fmt::Display for UpdateApiKeyError {
8673    #[allow(unused_variables)]
8674    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8675        match *self {
8676            UpdateApiKeyError::BadRequest(ref cause) => write!(f, "{}", cause),
8677            UpdateApiKeyError::Conflict(ref cause) => write!(f, "{}", cause),
8678            UpdateApiKeyError::NotFound(ref cause) => write!(f, "{}", cause),
8679            UpdateApiKeyError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8680            UpdateApiKeyError::Unauthorized(ref cause) => write!(f, "{}", cause),
8681        }
8682    }
8683}
8684impl Error for UpdateApiKeyError {}
8685/// Errors returned by UpdateAuthorizer
8686#[derive(Debug, PartialEq)]
8687pub enum UpdateAuthorizerError {
8688    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8689    BadRequest(String),
8690    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8691    NotFound(String),
8692    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8693    TooManyRequests(String),
8694    /// <p>The request is denied because the caller has insufficient permissions.</p>
8695    Unauthorized(String),
8696}
8697
8698impl UpdateAuthorizerError {
8699    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateAuthorizerError> {
8700        if let Some(err) = proto::json::Error::parse_rest(&res) {
8701            match err.typ.as_str() {
8702                "BadRequestException" => {
8703                    return RusotoError::Service(UpdateAuthorizerError::BadRequest(err.msg))
8704                }
8705                "NotFoundException" => {
8706                    return RusotoError::Service(UpdateAuthorizerError::NotFound(err.msg))
8707                }
8708                "TooManyRequestsException" => {
8709                    return RusotoError::Service(UpdateAuthorizerError::TooManyRequests(err.msg))
8710                }
8711                "UnauthorizedException" => {
8712                    return RusotoError::Service(UpdateAuthorizerError::Unauthorized(err.msg))
8713                }
8714                "ValidationException" => return RusotoError::Validation(err.msg),
8715                _ => {}
8716            }
8717        }
8718        RusotoError::Unknown(res)
8719    }
8720}
8721impl fmt::Display for UpdateAuthorizerError {
8722    #[allow(unused_variables)]
8723    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8724        match *self {
8725            UpdateAuthorizerError::BadRequest(ref cause) => write!(f, "{}", cause),
8726            UpdateAuthorizerError::NotFound(ref cause) => write!(f, "{}", cause),
8727            UpdateAuthorizerError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8728            UpdateAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
8729        }
8730    }
8731}
8732impl Error for UpdateAuthorizerError {}
8733/// Errors returned by UpdateBasePathMapping
8734#[derive(Debug, PartialEq)]
8735pub enum UpdateBasePathMappingError {
8736    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8737    BadRequest(String),
8738    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
8739    Conflict(String),
8740    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8741    NotFound(String),
8742    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8743    TooManyRequests(String),
8744    /// <p>The request is denied because the caller has insufficient permissions.</p>
8745    Unauthorized(String),
8746}
8747
8748impl UpdateBasePathMappingError {
8749    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateBasePathMappingError> {
8750        if let Some(err) = proto::json::Error::parse_rest(&res) {
8751            match err.typ.as_str() {
8752                "BadRequestException" => {
8753                    return RusotoError::Service(UpdateBasePathMappingError::BadRequest(err.msg))
8754                }
8755                "ConflictException" => {
8756                    return RusotoError::Service(UpdateBasePathMappingError::Conflict(err.msg))
8757                }
8758                "NotFoundException" => {
8759                    return RusotoError::Service(UpdateBasePathMappingError::NotFound(err.msg))
8760                }
8761                "TooManyRequestsException" => {
8762                    return RusotoError::Service(UpdateBasePathMappingError::TooManyRequests(
8763                        err.msg,
8764                    ))
8765                }
8766                "UnauthorizedException" => {
8767                    return RusotoError::Service(UpdateBasePathMappingError::Unauthorized(err.msg))
8768                }
8769                "ValidationException" => return RusotoError::Validation(err.msg),
8770                _ => {}
8771            }
8772        }
8773        RusotoError::Unknown(res)
8774    }
8775}
8776impl fmt::Display for UpdateBasePathMappingError {
8777    #[allow(unused_variables)]
8778    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8779        match *self {
8780            UpdateBasePathMappingError::BadRequest(ref cause) => write!(f, "{}", cause),
8781            UpdateBasePathMappingError::Conflict(ref cause) => write!(f, "{}", cause),
8782            UpdateBasePathMappingError::NotFound(ref cause) => write!(f, "{}", cause),
8783            UpdateBasePathMappingError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8784            UpdateBasePathMappingError::Unauthorized(ref cause) => write!(f, "{}", cause),
8785        }
8786    }
8787}
8788impl Error for UpdateBasePathMappingError {}
8789/// Errors returned by UpdateClientCertificate
8790#[derive(Debug, PartialEq)]
8791pub enum UpdateClientCertificateError {
8792    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8793    BadRequest(String),
8794    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8795    NotFound(String),
8796    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8797    TooManyRequests(String),
8798    /// <p>The request is denied because the caller has insufficient permissions.</p>
8799    Unauthorized(String),
8800}
8801
8802impl UpdateClientCertificateError {
8803    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateClientCertificateError> {
8804        if let Some(err) = proto::json::Error::parse_rest(&res) {
8805            match err.typ.as_str() {
8806                "BadRequestException" => {
8807                    return RusotoError::Service(UpdateClientCertificateError::BadRequest(err.msg))
8808                }
8809                "NotFoundException" => {
8810                    return RusotoError::Service(UpdateClientCertificateError::NotFound(err.msg))
8811                }
8812                "TooManyRequestsException" => {
8813                    return RusotoError::Service(UpdateClientCertificateError::TooManyRequests(
8814                        err.msg,
8815                    ))
8816                }
8817                "UnauthorizedException" => {
8818                    return RusotoError::Service(UpdateClientCertificateError::Unauthorized(
8819                        err.msg,
8820                    ))
8821                }
8822                "ValidationException" => return RusotoError::Validation(err.msg),
8823                _ => {}
8824            }
8825        }
8826        RusotoError::Unknown(res)
8827    }
8828}
8829impl fmt::Display for UpdateClientCertificateError {
8830    #[allow(unused_variables)]
8831    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8832        match *self {
8833            UpdateClientCertificateError::BadRequest(ref cause) => write!(f, "{}", cause),
8834            UpdateClientCertificateError::NotFound(ref cause) => write!(f, "{}", cause),
8835            UpdateClientCertificateError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8836            UpdateClientCertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
8837        }
8838    }
8839}
8840impl Error for UpdateClientCertificateError {}
8841/// Errors returned by UpdateDeployment
8842#[derive(Debug, PartialEq)]
8843pub enum UpdateDeploymentError {
8844    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8845    BadRequest(String),
8846    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8847    NotFound(String),
8848    /// <p>The requested service is not available. For details see the accompanying error message. Retry after the specified time period.</p>
8849    ServiceUnavailable(String),
8850    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8851    TooManyRequests(String),
8852    /// <p>The request is denied because the caller has insufficient permissions.</p>
8853    Unauthorized(String),
8854}
8855
8856impl UpdateDeploymentError {
8857    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateDeploymentError> {
8858        if let Some(err) = proto::json::Error::parse_rest(&res) {
8859            match err.typ.as_str() {
8860                "BadRequestException" => {
8861                    return RusotoError::Service(UpdateDeploymentError::BadRequest(err.msg))
8862                }
8863                "NotFoundException" => {
8864                    return RusotoError::Service(UpdateDeploymentError::NotFound(err.msg))
8865                }
8866                "ServiceUnavailableException" => {
8867                    return RusotoError::Service(UpdateDeploymentError::ServiceUnavailable(err.msg))
8868                }
8869                "TooManyRequestsException" => {
8870                    return RusotoError::Service(UpdateDeploymentError::TooManyRequests(err.msg))
8871                }
8872                "UnauthorizedException" => {
8873                    return RusotoError::Service(UpdateDeploymentError::Unauthorized(err.msg))
8874                }
8875                "ValidationException" => return RusotoError::Validation(err.msg),
8876                _ => {}
8877            }
8878        }
8879        RusotoError::Unknown(res)
8880    }
8881}
8882impl fmt::Display for UpdateDeploymentError {
8883    #[allow(unused_variables)]
8884    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8885        match *self {
8886            UpdateDeploymentError::BadRequest(ref cause) => write!(f, "{}", cause),
8887            UpdateDeploymentError::NotFound(ref cause) => write!(f, "{}", cause),
8888            UpdateDeploymentError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
8889            UpdateDeploymentError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8890            UpdateDeploymentError::Unauthorized(ref cause) => write!(f, "{}", cause),
8891        }
8892    }
8893}
8894impl Error for UpdateDeploymentError {}
8895/// Errors returned by UpdateDocumentationPart
8896#[derive(Debug, PartialEq)]
8897pub enum UpdateDocumentationPartError {
8898    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8899    BadRequest(String),
8900    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
8901    Conflict(String),
8902    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
8903    LimitExceeded(String),
8904    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8905    NotFound(String),
8906    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8907    TooManyRequests(String),
8908    /// <p>The request is denied because the caller has insufficient permissions.</p>
8909    Unauthorized(String),
8910}
8911
8912impl UpdateDocumentationPartError {
8913    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateDocumentationPartError> {
8914        if let Some(err) = proto::json::Error::parse_rest(&res) {
8915            match err.typ.as_str() {
8916                "BadRequestException" => {
8917                    return RusotoError::Service(UpdateDocumentationPartError::BadRequest(err.msg))
8918                }
8919                "ConflictException" => {
8920                    return RusotoError::Service(UpdateDocumentationPartError::Conflict(err.msg))
8921                }
8922                "LimitExceededException" => {
8923                    return RusotoError::Service(UpdateDocumentationPartError::LimitExceeded(
8924                        err.msg,
8925                    ))
8926                }
8927                "NotFoundException" => {
8928                    return RusotoError::Service(UpdateDocumentationPartError::NotFound(err.msg))
8929                }
8930                "TooManyRequestsException" => {
8931                    return RusotoError::Service(UpdateDocumentationPartError::TooManyRequests(
8932                        err.msg,
8933                    ))
8934                }
8935                "UnauthorizedException" => {
8936                    return RusotoError::Service(UpdateDocumentationPartError::Unauthorized(
8937                        err.msg,
8938                    ))
8939                }
8940                "ValidationException" => return RusotoError::Validation(err.msg),
8941                _ => {}
8942            }
8943        }
8944        RusotoError::Unknown(res)
8945    }
8946}
8947impl fmt::Display for UpdateDocumentationPartError {
8948    #[allow(unused_variables)]
8949    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8950        match *self {
8951            UpdateDocumentationPartError::BadRequest(ref cause) => write!(f, "{}", cause),
8952            UpdateDocumentationPartError::Conflict(ref cause) => write!(f, "{}", cause),
8953            UpdateDocumentationPartError::LimitExceeded(ref cause) => write!(f, "{}", cause),
8954            UpdateDocumentationPartError::NotFound(ref cause) => write!(f, "{}", cause),
8955            UpdateDocumentationPartError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8956            UpdateDocumentationPartError::Unauthorized(ref cause) => write!(f, "{}", cause),
8957        }
8958    }
8959}
8960impl Error for UpdateDocumentationPartError {}
8961/// Errors returned by UpdateDocumentationVersion
8962#[derive(Debug, PartialEq)]
8963pub enum UpdateDocumentationVersionError {
8964    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
8965    BadRequest(String),
8966    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
8967    Conflict(String),
8968    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
8969    NotFound(String),
8970    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
8971    TooManyRequests(String),
8972    /// <p>The request is denied because the caller has insufficient permissions.</p>
8973    Unauthorized(String),
8974}
8975
8976impl UpdateDocumentationVersionError {
8977    pub fn from_response(
8978        res: BufferedHttpResponse,
8979    ) -> RusotoError<UpdateDocumentationVersionError> {
8980        if let Some(err) = proto::json::Error::parse_rest(&res) {
8981            match err.typ.as_str() {
8982                "BadRequestException" => {
8983                    return RusotoError::Service(UpdateDocumentationVersionError::BadRequest(
8984                        err.msg,
8985                    ))
8986                }
8987                "ConflictException" => {
8988                    return RusotoError::Service(UpdateDocumentationVersionError::Conflict(err.msg))
8989                }
8990                "NotFoundException" => {
8991                    return RusotoError::Service(UpdateDocumentationVersionError::NotFound(err.msg))
8992                }
8993                "TooManyRequestsException" => {
8994                    return RusotoError::Service(UpdateDocumentationVersionError::TooManyRequests(
8995                        err.msg,
8996                    ))
8997                }
8998                "UnauthorizedException" => {
8999                    return RusotoError::Service(UpdateDocumentationVersionError::Unauthorized(
9000                        err.msg,
9001                    ))
9002                }
9003                "ValidationException" => return RusotoError::Validation(err.msg),
9004                _ => {}
9005            }
9006        }
9007        RusotoError::Unknown(res)
9008    }
9009}
9010impl fmt::Display for UpdateDocumentationVersionError {
9011    #[allow(unused_variables)]
9012    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9013        match *self {
9014            UpdateDocumentationVersionError::BadRequest(ref cause) => write!(f, "{}", cause),
9015            UpdateDocumentationVersionError::Conflict(ref cause) => write!(f, "{}", cause),
9016            UpdateDocumentationVersionError::NotFound(ref cause) => write!(f, "{}", cause),
9017            UpdateDocumentationVersionError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9018            UpdateDocumentationVersionError::Unauthorized(ref cause) => write!(f, "{}", cause),
9019        }
9020    }
9021}
9022impl Error for UpdateDocumentationVersionError {}
9023/// Errors returned by UpdateDomainName
9024#[derive(Debug, PartialEq)]
9025pub enum UpdateDomainNameError {
9026    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9027    BadRequest(String),
9028    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
9029    Conflict(String),
9030    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9031    NotFound(String),
9032    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9033    TooManyRequests(String),
9034    /// <p>The request is denied because the caller has insufficient permissions.</p>
9035    Unauthorized(String),
9036}
9037
9038impl UpdateDomainNameError {
9039    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateDomainNameError> {
9040        if let Some(err) = proto::json::Error::parse_rest(&res) {
9041            match err.typ.as_str() {
9042                "BadRequestException" => {
9043                    return RusotoError::Service(UpdateDomainNameError::BadRequest(err.msg))
9044                }
9045                "ConflictException" => {
9046                    return RusotoError::Service(UpdateDomainNameError::Conflict(err.msg))
9047                }
9048                "NotFoundException" => {
9049                    return RusotoError::Service(UpdateDomainNameError::NotFound(err.msg))
9050                }
9051                "TooManyRequestsException" => {
9052                    return RusotoError::Service(UpdateDomainNameError::TooManyRequests(err.msg))
9053                }
9054                "UnauthorizedException" => {
9055                    return RusotoError::Service(UpdateDomainNameError::Unauthorized(err.msg))
9056                }
9057                "ValidationException" => return RusotoError::Validation(err.msg),
9058                _ => {}
9059            }
9060        }
9061        RusotoError::Unknown(res)
9062    }
9063}
9064impl fmt::Display for UpdateDomainNameError {
9065    #[allow(unused_variables)]
9066    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9067        match *self {
9068            UpdateDomainNameError::BadRequest(ref cause) => write!(f, "{}", cause),
9069            UpdateDomainNameError::Conflict(ref cause) => write!(f, "{}", cause),
9070            UpdateDomainNameError::NotFound(ref cause) => write!(f, "{}", cause),
9071            UpdateDomainNameError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9072            UpdateDomainNameError::Unauthorized(ref cause) => write!(f, "{}", cause),
9073        }
9074    }
9075}
9076impl Error for UpdateDomainNameError {}
9077/// Errors returned by UpdateGatewayResponse
9078#[derive(Debug, PartialEq)]
9079pub enum UpdateGatewayResponseError {
9080    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9081    BadRequest(String),
9082    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9083    NotFound(String),
9084    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9085    TooManyRequests(String),
9086    /// <p>The request is denied because the caller has insufficient permissions.</p>
9087    Unauthorized(String),
9088}
9089
9090impl UpdateGatewayResponseError {
9091    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateGatewayResponseError> {
9092        if let Some(err) = proto::json::Error::parse_rest(&res) {
9093            match err.typ.as_str() {
9094                "BadRequestException" => {
9095                    return RusotoError::Service(UpdateGatewayResponseError::BadRequest(err.msg))
9096                }
9097                "NotFoundException" => {
9098                    return RusotoError::Service(UpdateGatewayResponseError::NotFound(err.msg))
9099                }
9100                "TooManyRequestsException" => {
9101                    return RusotoError::Service(UpdateGatewayResponseError::TooManyRequests(
9102                        err.msg,
9103                    ))
9104                }
9105                "UnauthorizedException" => {
9106                    return RusotoError::Service(UpdateGatewayResponseError::Unauthorized(err.msg))
9107                }
9108                "ValidationException" => return RusotoError::Validation(err.msg),
9109                _ => {}
9110            }
9111        }
9112        RusotoError::Unknown(res)
9113    }
9114}
9115impl fmt::Display for UpdateGatewayResponseError {
9116    #[allow(unused_variables)]
9117    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9118        match *self {
9119            UpdateGatewayResponseError::BadRequest(ref cause) => write!(f, "{}", cause),
9120            UpdateGatewayResponseError::NotFound(ref cause) => write!(f, "{}", cause),
9121            UpdateGatewayResponseError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9122            UpdateGatewayResponseError::Unauthorized(ref cause) => write!(f, "{}", cause),
9123        }
9124    }
9125}
9126impl Error for UpdateGatewayResponseError {}
9127/// Errors returned by UpdateIntegration
9128#[derive(Debug, PartialEq)]
9129pub enum UpdateIntegrationError {
9130    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9131    BadRequest(String),
9132    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
9133    Conflict(String),
9134    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9135    NotFound(String),
9136    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9137    TooManyRequests(String),
9138    /// <p>The request is denied because the caller has insufficient permissions.</p>
9139    Unauthorized(String),
9140}
9141
9142impl UpdateIntegrationError {
9143    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateIntegrationError> {
9144        if let Some(err) = proto::json::Error::parse_rest(&res) {
9145            match err.typ.as_str() {
9146                "BadRequestException" => {
9147                    return RusotoError::Service(UpdateIntegrationError::BadRequest(err.msg))
9148                }
9149                "ConflictException" => {
9150                    return RusotoError::Service(UpdateIntegrationError::Conflict(err.msg))
9151                }
9152                "NotFoundException" => {
9153                    return RusotoError::Service(UpdateIntegrationError::NotFound(err.msg))
9154                }
9155                "TooManyRequestsException" => {
9156                    return RusotoError::Service(UpdateIntegrationError::TooManyRequests(err.msg))
9157                }
9158                "UnauthorizedException" => {
9159                    return RusotoError::Service(UpdateIntegrationError::Unauthorized(err.msg))
9160                }
9161                "ValidationException" => return RusotoError::Validation(err.msg),
9162                _ => {}
9163            }
9164        }
9165        RusotoError::Unknown(res)
9166    }
9167}
9168impl fmt::Display for UpdateIntegrationError {
9169    #[allow(unused_variables)]
9170    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9171        match *self {
9172            UpdateIntegrationError::BadRequest(ref cause) => write!(f, "{}", cause),
9173            UpdateIntegrationError::Conflict(ref cause) => write!(f, "{}", cause),
9174            UpdateIntegrationError::NotFound(ref cause) => write!(f, "{}", cause),
9175            UpdateIntegrationError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9176            UpdateIntegrationError::Unauthorized(ref cause) => write!(f, "{}", cause),
9177        }
9178    }
9179}
9180impl Error for UpdateIntegrationError {}
9181/// Errors returned by UpdateIntegrationResponse
9182#[derive(Debug, PartialEq)]
9183pub enum UpdateIntegrationResponseError {
9184    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9185    BadRequest(String),
9186    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
9187    Conflict(String),
9188    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9189    NotFound(String),
9190    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9191    TooManyRequests(String),
9192    /// <p>The request is denied because the caller has insufficient permissions.</p>
9193    Unauthorized(String),
9194}
9195
9196impl UpdateIntegrationResponseError {
9197    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateIntegrationResponseError> {
9198        if let Some(err) = proto::json::Error::parse_rest(&res) {
9199            match err.typ.as_str() {
9200                "BadRequestException" => {
9201                    return RusotoError::Service(UpdateIntegrationResponseError::BadRequest(
9202                        err.msg,
9203                    ))
9204                }
9205                "ConflictException" => {
9206                    return RusotoError::Service(UpdateIntegrationResponseError::Conflict(err.msg))
9207                }
9208                "NotFoundException" => {
9209                    return RusotoError::Service(UpdateIntegrationResponseError::NotFound(err.msg))
9210                }
9211                "TooManyRequestsException" => {
9212                    return RusotoError::Service(UpdateIntegrationResponseError::TooManyRequests(
9213                        err.msg,
9214                    ))
9215                }
9216                "UnauthorizedException" => {
9217                    return RusotoError::Service(UpdateIntegrationResponseError::Unauthorized(
9218                        err.msg,
9219                    ))
9220                }
9221                "ValidationException" => return RusotoError::Validation(err.msg),
9222                _ => {}
9223            }
9224        }
9225        RusotoError::Unknown(res)
9226    }
9227}
9228impl fmt::Display for UpdateIntegrationResponseError {
9229    #[allow(unused_variables)]
9230    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9231        match *self {
9232            UpdateIntegrationResponseError::BadRequest(ref cause) => write!(f, "{}", cause),
9233            UpdateIntegrationResponseError::Conflict(ref cause) => write!(f, "{}", cause),
9234            UpdateIntegrationResponseError::NotFound(ref cause) => write!(f, "{}", cause),
9235            UpdateIntegrationResponseError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9236            UpdateIntegrationResponseError::Unauthorized(ref cause) => write!(f, "{}", cause),
9237        }
9238    }
9239}
9240impl Error for UpdateIntegrationResponseError {}
9241/// Errors returned by UpdateMethod
9242#[derive(Debug, PartialEq)]
9243pub enum UpdateMethodError {
9244    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9245    BadRequest(String),
9246    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
9247    Conflict(String),
9248    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9249    NotFound(String),
9250    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9251    TooManyRequests(String),
9252    /// <p>The request is denied because the caller has insufficient permissions.</p>
9253    Unauthorized(String),
9254}
9255
9256impl UpdateMethodError {
9257    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateMethodError> {
9258        if let Some(err) = proto::json::Error::parse_rest(&res) {
9259            match err.typ.as_str() {
9260                "BadRequestException" => {
9261                    return RusotoError::Service(UpdateMethodError::BadRequest(err.msg))
9262                }
9263                "ConflictException" => {
9264                    return RusotoError::Service(UpdateMethodError::Conflict(err.msg))
9265                }
9266                "NotFoundException" => {
9267                    return RusotoError::Service(UpdateMethodError::NotFound(err.msg))
9268                }
9269                "TooManyRequestsException" => {
9270                    return RusotoError::Service(UpdateMethodError::TooManyRequests(err.msg))
9271                }
9272                "UnauthorizedException" => {
9273                    return RusotoError::Service(UpdateMethodError::Unauthorized(err.msg))
9274                }
9275                "ValidationException" => return RusotoError::Validation(err.msg),
9276                _ => {}
9277            }
9278        }
9279        RusotoError::Unknown(res)
9280    }
9281}
9282impl fmt::Display for UpdateMethodError {
9283    #[allow(unused_variables)]
9284    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9285        match *self {
9286            UpdateMethodError::BadRequest(ref cause) => write!(f, "{}", cause),
9287            UpdateMethodError::Conflict(ref cause) => write!(f, "{}", cause),
9288            UpdateMethodError::NotFound(ref cause) => write!(f, "{}", cause),
9289            UpdateMethodError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9290            UpdateMethodError::Unauthorized(ref cause) => write!(f, "{}", cause),
9291        }
9292    }
9293}
9294impl Error for UpdateMethodError {}
9295/// Errors returned by UpdateMethodResponse
9296#[derive(Debug, PartialEq)]
9297pub enum UpdateMethodResponseError {
9298    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9299    BadRequest(String),
9300    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
9301    Conflict(String),
9302    /// <p>The request exceeded the rate limit. Retry after the specified time period.</p>
9303    LimitExceeded(String),
9304    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9305    NotFound(String),
9306    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9307    TooManyRequests(String),
9308    /// <p>The request is denied because the caller has insufficient permissions.</p>
9309    Unauthorized(String),
9310}
9311
9312impl UpdateMethodResponseError {
9313    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateMethodResponseError> {
9314        if let Some(err) = proto::json::Error::parse_rest(&res) {
9315            match err.typ.as_str() {
9316                "BadRequestException" => {
9317                    return RusotoError::Service(UpdateMethodResponseError::BadRequest(err.msg))
9318                }
9319                "ConflictException" => {
9320                    return RusotoError::Service(UpdateMethodResponseError::Conflict(err.msg))
9321                }
9322                "LimitExceededException" => {
9323                    return RusotoError::Service(UpdateMethodResponseError::LimitExceeded(err.msg))
9324                }
9325                "NotFoundException" => {
9326                    return RusotoError::Service(UpdateMethodResponseError::NotFound(err.msg))
9327                }
9328                "TooManyRequestsException" => {
9329                    return RusotoError::Service(UpdateMethodResponseError::TooManyRequests(
9330                        err.msg,
9331                    ))
9332                }
9333                "UnauthorizedException" => {
9334                    return RusotoError::Service(UpdateMethodResponseError::Unauthorized(err.msg))
9335                }
9336                "ValidationException" => return RusotoError::Validation(err.msg),
9337                _ => {}
9338            }
9339        }
9340        RusotoError::Unknown(res)
9341    }
9342}
9343impl fmt::Display for UpdateMethodResponseError {
9344    #[allow(unused_variables)]
9345    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9346        match *self {
9347            UpdateMethodResponseError::BadRequest(ref cause) => write!(f, "{}", cause),
9348            UpdateMethodResponseError::Conflict(ref cause) => write!(f, "{}", cause),
9349            UpdateMethodResponseError::LimitExceeded(ref cause) => write!(f, "{}", cause),
9350            UpdateMethodResponseError::NotFound(ref cause) => write!(f, "{}", cause),
9351            UpdateMethodResponseError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9352            UpdateMethodResponseError::Unauthorized(ref cause) => write!(f, "{}", cause),
9353        }
9354    }
9355}
9356impl Error for UpdateMethodResponseError {}
9357/// Errors returned by UpdateModel
9358#[derive(Debug, PartialEq)]
9359pub enum UpdateModelError {
9360    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9361    BadRequest(String),
9362    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
9363    Conflict(String),
9364    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9365    NotFound(String),
9366    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9367    TooManyRequests(String),
9368    /// <p>The request is denied because the caller has insufficient permissions.</p>
9369    Unauthorized(String),
9370}
9371
9372impl UpdateModelError {
9373    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateModelError> {
9374        if let Some(err) = proto::json::Error::parse_rest(&res) {
9375            match err.typ.as_str() {
9376                "BadRequestException" => {
9377                    return RusotoError::Service(UpdateModelError::BadRequest(err.msg))
9378                }
9379                "ConflictException" => {
9380                    return RusotoError::Service(UpdateModelError::Conflict(err.msg))
9381                }
9382                "NotFoundException" => {
9383                    return RusotoError::Service(UpdateModelError::NotFound(err.msg))
9384                }
9385                "TooManyRequestsException" => {
9386                    return RusotoError::Service(UpdateModelError::TooManyRequests(err.msg))
9387                }
9388                "UnauthorizedException" => {
9389                    return RusotoError::Service(UpdateModelError::Unauthorized(err.msg))
9390                }
9391                "ValidationException" => return RusotoError::Validation(err.msg),
9392                _ => {}
9393            }
9394        }
9395        RusotoError::Unknown(res)
9396    }
9397}
9398impl fmt::Display for UpdateModelError {
9399    #[allow(unused_variables)]
9400    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9401        match *self {
9402            UpdateModelError::BadRequest(ref cause) => write!(f, "{}", cause),
9403            UpdateModelError::Conflict(ref cause) => write!(f, "{}", cause),
9404            UpdateModelError::NotFound(ref cause) => write!(f, "{}", cause),
9405            UpdateModelError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9406            UpdateModelError::Unauthorized(ref cause) => write!(f, "{}", cause),
9407        }
9408    }
9409}
9410impl Error for UpdateModelError {}
9411/// Errors returned by UpdateRequestValidator
9412#[derive(Debug, PartialEq)]
9413pub enum UpdateRequestValidatorError {
9414    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9415    BadRequest(String),
9416    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9417    NotFound(String),
9418    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9419    TooManyRequests(String),
9420    /// <p>The request is denied because the caller has insufficient permissions.</p>
9421    Unauthorized(String),
9422}
9423
9424impl UpdateRequestValidatorError {
9425    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateRequestValidatorError> {
9426        if let Some(err) = proto::json::Error::parse_rest(&res) {
9427            match err.typ.as_str() {
9428                "BadRequestException" => {
9429                    return RusotoError::Service(UpdateRequestValidatorError::BadRequest(err.msg))
9430                }
9431                "NotFoundException" => {
9432                    return RusotoError::Service(UpdateRequestValidatorError::NotFound(err.msg))
9433                }
9434                "TooManyRequestsException" => {
9435                    return RusotoError::Service(UpdateRequestValidatorError::TooManyRequests(
9436                        err.msg,
9437                    ))
9438                }
9439                "UnauthorizedException" => {
9440                    return RusotoError::Service(UpdateRequestValidatorError::Unauthorized(err.msg))
9441                }
9442                "ValidationException" => return RusotoError::Validation(err.msg),
9443                _ => {}
9444            }
9445        }
9446        RusotoError::Unknown(res)
9447    }
9448}
9449impl fmt::Display for UpdateRequestValidatorError {
9450    #[allow(unused_variables)]
9451    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9452        match *self {
9453            UpdateRequestValidatorError::BadRequest(ref cause) => write!(f, "{}", cause),
9454            UpdateRequestValidatorError::NotFound(ref cause) => write!(f, "{}", cause),
9455            UpdateRequestValidatorError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9456            UpdateRequestValidatorError::Unauthorized(ref cause) => write!(f, "{}", cause),
9457        }
9458    }
9459}
9460impl Error for UpdateRequestValidatorError {}
9461/// Errors returned by UpdateResource
9462#[derive(Debug, PartialEq)]
9463pub enum UpdateResourceError {
9464    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9465    BadRequest(String),
9466    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
9467    Conflict(String),
9468    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9469    NotFound(String),
9470    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9471    TooManyRequests(String),
9472    /// <p>The request is denied because the caller has insufficient permissions.</p>
9473    Unauthorized(String),
9474}
9475
9476impl UpdateResourceError {
9477    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateResourceError> {
9478        if let Some(err) = proto::json::Error::parse_rest(&res) {
9479            match err.typ.as_str() {
9480                "BadRequestException" => {
9481                    return RusotoError::Service(UpdateResourceError::BadRequest(err.msg))
9482                }
9483                "ConflictException" => {
9484                    return RusotoError::Service(UpdateResourceError::Conflict(err.msg))
9485                }
9486                "NotFoundException" => {
9487                    return RusotoError::Service(UpdateResourceError::NotFound(err.msg))
9488                }
9489                "TooManyRequestsException" => {
9490                    return RusotoError::Service(UpdateResourceError::TooManyRequests(err.msg))
9491                }
9492                "UnauthorizedException" => {
9493                    return RusotoError::Service(UpdateResourceError::Unauthorized(err.msg))
9494                }
9495                "ValidationException" => return RusotoError::Validation(err.msg),
9496                _ => {}
9497            }
9498        }
9499        RusotoError::Unknown(res)
9500    }
9501}
9502impl fmt::Display for UpdateResourceError {
9503    #[allow(unused_variables)]
9504    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9505        match *self {
9506            UpdateResourceError::BadRequest(ref cause) => write!(f, "{}", cause),
9507            UpdateResourceError::Conflict(ref cause) => write!(f, "{}", cause),
9508            UpdateResourceError::NotFound(ref cause) => write!(f, "{}", cause),
9509            UpdateResourceError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9510            UpdateResourceError::Unauthorized(ref cause) => write!(f, "{}", cause),
9511        }
9512    }
9513}
9514impl Error for UpdateResourceError {}
9515/// Errors returned by UpdateRestApi
9516#[derive(Debug, PartialEq)]
9517pub enum UpdateRestApiError {
9518    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9519    BadRequest(String),
9520    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
9521    Conflict(String),
9522    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9523    NotFound(String),
9524    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9525    TooManyRequests(String),
9526    /// <p>The request is denied because the caller has insufficient permissions.</p>
9527    Unauthorized(String),
9528}
9529
9530impl UpdateRestApiError {
9531    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateRestApiError> {
9532        if let Some(err) = proto::json::Error::parse_rest(&res) {
9533            match err.typ.as_str() {
9534                "BadRequestException" => {
9535                    return RusotoError::Service(UpdateRestApiError::BadRequest(err.msg))
9536                }
9537                "ConflictException" => {
9538                    return RusotoError::Service(UpdateRestApiError::Conflict(err.msg))
9539                }
9540                "NotFoundException" => {
9541                    return RusotoError::Service(UpdateRestApiError::NotFound(err.msg))
9542                }
9543                "TooManyRequestsException" => {
9544                    return RusotoError::Service(UpdateRestApiError::TooManyRequests(err.msg))
9545                }
9546                "UnauthorizedException" => {
9547                    return RusotoError::Service(UpdateRestApiError::Unauthorized(err.msg))
9548                }
9549                "ValidationException" => return RusotoError::Validation(err.msg),
9550                _ => {}
9551            }
9552        }
9553        RusotoError::Unknown(res)
9554    }
9555}
9556impl fmt::Display for UpdateRestApiError {
9557    #[allow(unused_variables)]
9558    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9559        match *self {
9560            UpdateRestApiError::BadRequest(ref cause) => write!(f, "{}", cause),
9561            UpdateRestApiError::Conflict(ref cause) => write!(f, "{}", cause),
9562            UpdateRestApiError::NotFound(ref cause) => write!(f, "{}", cause),
9563            UpdateRestApiError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9564            UpdateRestApiError::Unauthorized(ref cause) => write!(f, "{}", cause),
9565        }
9566    }
9567}
9568impl Error for UpdateRestApiError {}
9569/// Errors returned by UpdateStage
9570#[derive(Debug, PartialEq)]
9571pub enum UpdateStageError {
9572    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9573    BadRequest(String),
9574    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
9575    Conflict(String),
9576    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9577    NotFound(String),
9578    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9579    TooManyRequests(String),
9580    /// <p>The request is denied because the caller has insufficient permissions.</p>
9581    Unauthorized(String),
9582}
9583
9584impl UpdateStageError {
9585    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateStageError> {
9586        if let Some(err) = proto::json::Error::parse_rest(&res) {
9587            match err.typ.as_str() {
9588                "BadRequestException" => {
9589                    return RusotoError::Service(UpdateStageError::BadRequest(err.msg))
9590                }
9591                "ConflictException" => {
9592                    return RusotoError::Service(UpdateStageError::Conflict(err.msg))
9593                }
9594                "NotFoundException" => {
9595                    return RusotoError::Service(UpdateStageError::NotFound(err.msg))
9596                }
9597                "TooManyRequestsException" => {
9598                    return RusotoError::Service(UpdateStageError::TooManyRequests(err.msg))
9599                }
9600                "UnauthorizedException" => {
9601                    return RusotoError::Service(UpdateStageError::Unauthorized(err.msg))
9602                }
9603                "ValidationException" => return RusotoError::Validation(err.msg),
9604                _ => {}
9605            }
9606        }
9607        RusotoError::Unknown(res)
9608    }
9609}
9610impl fmt::Display for UpdateStageError {
9611    #[allow(unused_variables)]
9612    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9613        match *self {
9614            UpdateStageError::BadRequest(ref cause) => write!(f, "{}", cause),
9615            UpdateStageError::Conflict(ref cause) => write!(f, "{}", cause),
9616            UpdateStageError::NotFound(ref cause) => write!(f, "{}", cause),
9617            UpdateStageError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9618            UpdateStageError::Unauthorized(ref cause) => write!(f, "{}", cause),
9619        }
9620    }
9621}
9622impl Error for UpdateStageError {}
9623/// Errors returned by UpdateUsage
9624#[derive(Debug, PartialEq)]
9625pub enum UpdateUsageError {
9626    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9627    BadRequest(String),
9628    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9629    NotFound(String),
9630    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9631    TooManyRequests(String),
9632    /// <p>The request is denied because the caller has insufficient permissions.</p>
9633    Unauthorized(String),
9634}
9635
9636impl UpdateUsageError {
9637    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateUsageError> {
9638        if let Some(err) = proto::json::Error::parse_rest(&res) {
9639            match err.typ.as_str() {
9640                "BadRequestException" => {
9641                    return RusotoError::Service(UpdateUsageError::BadRequest(err.msg))
9642                }
9643                "NotFoundException" => {
9644                    return RusotoError::Service(UpdateUsageError::NotFound(err.msg))
9645                }
9646                "TooManyRequestsException" => {
9647                    return RusotoError::Service(UpdateUsageError::TooManyRequests(err.msg))
9648                }
9649                "UnauthorizedException" => {
9650                    return RusotoError::Service(UpdateUsageError::Unauthorized(err.msg))
9651                }
9652                "ValidationException" => return RusotoError::Validation(err.msg),
9653                _ => {}
9654            }
9655        }
9656        RusotoError::Unknown(res)
9657    }
9658}
9659impl fmt::Display for UpdateUsageError {
9660    #[allow(unused_variables)]
9661    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9662        match *self {
9663            UpdateUsageError::BadRequest(ref cause) => write!(f, "{}", cause),
9664            UpdateUsageError::NotFound(ref cause) => write!(f, "{}", cause),
9665            UpdateUsageError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9666            UpdateUsageError::Unauthorized(ref cause) => write!(f, "{}", cause),
9667        }
9668    }
9669}
9670impl Error for UpdateUsageError {}
9671/// Errors returned by UpdateUsagePlan
9672#[derive(Debug, PartialEq)]
9673pub enum UpdateUsagePlanError {
9674    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9675    BadRequest(String),
9676    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
9677    Conflict(String),
9678    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9679    NotFound(String),
9680    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9681    TooManyRequests(String),
9682    /// <p>The request is denied because the caller has insufficient permissions.</p>
9683    Unauthorized(String),
9684}
9685
9686impl UpdateUsagePlanError {
9687    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateUsagePlanError> {
9688        if let Some(err) = proto::json::Error::parse_rest(&res) {
9689            match err.typ.as_str() {
9690                "BadRequestException" => {
9691                    return RusotoError::Service(UpdateUsagePlanError::BadRequest(err.msg))
9692                }
9693                "ConflictException" => {
9694                    return RusotoError::Service(UpdateUsagePlanError::Conflict(err.msg))
9695                }
9696                "NotFoundException" => {
9697                    return RusotoError::Service(UpdateUsagePlanError::NotFound(err.msg))
9698                }
9699                "TooManyRequestsException" => {
9700                    return RusotoError::Service(UpdateUsagePlanError::TooManyRequests(err.msg))
9701                }
9702                "UnauthorizedException" => {
9703                    return RusotoError::Service(UpdateUsagePlanError::Unauthorized(err.msg))
9704                }
9705                "ValidationException" => return RusotoError::Validation(err.msg),
9706                _ => {}
9707            }
9708        }
9709        RusotoError::Unknown(res)
9710    }
9711}
9712impl fmt::Display for UpdateUsagePlanError {
9713    #[allow(unused_variables)]
9714    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9715        match *self {
9716            UpdateUsagePlanError::BadRequest(ref cause) => write!(f, "{}", cause),
9717            UpdateUsagePlanError::Conflict(ref cause) => write!(f, "{}", cause),
9718            UpdateUsagePlanError::NotFound(ref cause) => write!(f, "{}", cause),
9719            UpdateUsagePlanError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9720            UpdateUsagePlanError::Unauthorized(ref cause) => write!(f, "{}", cause),
9721        }
9722    }
9723}
9724impl Error for UpdateUsagePlanError {}
9725/// Errors returned by UpdateVpcLink
9726#[derive(Debug, PartialEq)]
9727pub enum UpdateVpcLinkError {
9728    /// <p>The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>
9729    BadRequest(String),
9730    /// <p>The request configuration has conflicts. For details, see the accompanying error message.</p>
9731    Conflict(String),
9732    /// <p>The requested resource is not found. Make sure that the request URI is correct.</p>
9733    NotFound(String),
9734    /// <p>The request has reached its throttling limit. Retry after the specified time period.</p>
9735    TooManyRequests(String),
9736    /// <p>The request is denied because the caller has insufficient permissions.</p>
9737    Unauthorized(String),
9738}
9739
9740impl UpdateVpcLinkError {
9741    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateVpcLinkError> {
9742        if let Some(err) = proto::json::Error::parse_rest(&res) {
9743            match err.typ.as_str() {
9744                "BadRequestException" => {
9745                    return RusotoError::Service(UpdateVpcLinkError::BadRequest(err.msg))
9746                }
9747                "ConflictException" => {
9748                    return RusotoError::Service(UpdateVpcLinkError::Conflict(err.msg))
9749                }
9750                "NotFoundException" => {
9751                    return RusotoError::Service(UpdateVpcLinkError::NotFound(err.msg))
9752                }
9753                "TooManyRequestsException" => {
9754                    return RusotoError::Service(UpdateVpcLinkError::TooManyRequests(err.msg))
9755                }
9756                "UnauthorizedException" => {
9757                    return RusotoError::Service(UpdateVpcLinkError::Unauthorized(err.msg))
9758                }
9759                "ValidationException" => return RusotoError::Validation(err.msg),
9760                _ => {}
9761            }
9762        }
9763        RusotoError::Unknown(res)
9764    }
9765}
9766impl fmt::Display for UpdateVpcLinkError {
9767    #[allow(unused_variables)]
9768    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9769        match *self {
9770            UpdateVpcLinkError::BadRequest(ref cause) => write!(f, "{}", cause),
9771            UpdateVpcLinkError::Conflict(ref cause) => write!(f, "{}", cause),
9772            UpdateVpcLinkError::NotFound(ref cause) => write!(f, "{}", cause),
9773            UpdateVpcLinkError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9774            UpdateVpcLinkError::Unauthorized(ref cause) => write!(f, "{}", cause),
9775        }
9776    }
9777}
9778impl Error for UpdateVpcLinkError {}
9779/// Trait representing the capabilities of the Amazon API Gateway API. Amazon API Gateway clients implement this trait.
9780#[async_trait]
9781pub trait ApiGateway {
9782    /// <p><p>Create an <a>ApiKey</a> resource. </p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-api-key.html">AWS CLI</a></div></p>
9783    async fn create_api_key(
9784        &self,
9785        input: CreateApiKeyRequest,
9786    ) -> Result<ApiKey, RusotoError<CreateApiKeyError>>;
9787
9788    /// <p><p>Adds a new <a>Authorizer</a> resource to an existing <a>RestApi</a> resource.</p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-authorizer.html">AWS CLI</a></div></p>
9789    async fn create_authorizer(
9790        &self,
9791        input: CreateAuthorizerRequest,
9792    ) -> Result<Authorizer, RusotoError<CreateAuthorizerError>>;
9793
9794    /// <p>Creates a new <a>BasePathMapping</a> resource.</p>
9795    async fn create_base_path_mapping(
9796        &self,
9797        input: CreateBasePathMappingRequest,
9798    ) -> Result<BasePathMapping, RusotoError<CreateBasePathMappingError>>;
9799
9800    /// <p>Creates a <a>Deployment</a> resource, which makes a specified <a>RestApi</a> callable over the internet.</p>
9801    async fn create_deployment(
9802        &self,
9803        input: CreateDeploymentRequest,
9804    ) -> Result<Deployment, RusotoError<CreateDeploymentError>>;
9805
9806    async fn create_documentation_part(
9807        &self,
9808        input: CreateDocumentationPartRequest,
9809    ) -> Result<DocumentationPart, RusotoError<CreateDocumentationPartError>>;
9810
9811    async fn create_documentation_version(
9812        &self,
9813        input: CreateDocumentationVersionRequest,
9814    ) -> Result<DocumentationVersion, RusotoError<CreateDocumentationVersionError>>;
9815
9816    /// <p>Creates a new domain name.</p>
9817    async fn create_domain_name(
9818        &self,
9819        input: CreateDomainNameRequest,
9820    ) -> Result<DomainName, RusotoError<CreateDomainNameError>>;
9821
9822    /// <p>Adds a new <a>Model</a> resource to an existing <a>RestApi</a> resource.</p>
9823    async fn create_model(
9824        &self,
9825        input: CreateModelRequest,
9826    ) -> Result<Model, RusotoError<CreateModelError>>;
9827
9828    /// <p>Creates a <a>ReqeustValidator</a> of a given <a>RestApi</a>.</p>
9829    async fn create_request_validator(
9830        &self,
9831        input: CreateRequestValidatorRequest,
9832    ) -> Result<RequestValidator, RusotoError<CreateRequestValidatorError>>;
9833
9834    /// <p>Creates a <a>Resource</a> resource.</p>
9835    async fn create_resource(
9836        &self,
9837        input: CreateResourceRequest,
9838    ) -> Result<Resource, RusotoError<CreateResourceError>>;
9839
9840    /// <p>Creates a new <a>RestApi</a> resource.</p>
9841    async fn create_rest_api(
9842        &self,
9843        input: CreateRestApiRequest,
9844    ) -> Result<RestApi, RusotoError<CreateRestApiError>>;
9845
9846    /// <p>Creates a new <a>Stage</a> resource that references a pre-existing <a>Deployment</a> for the API. </p>
9847    async fn create_stage(
9848        &self,
9849        input: CreateStageRequest,
9850    ) -> Result<Stage, RusotoError<CreateStageError>>;
9851
9852    /// <p>Creates a usage plan with the throttle and quota limits, as well as the associated API stages, specified in the payload. </p>
9853    async fn create_usage_plan(
9854        &self,
9855        input: CreateUsagePlanRequest,
9856    ) -> Result<UsagePlan, RusotoError<CreateUsagePlanError>>;
9857
9858    /// <p>Creates a usage plan key for adding an existing API key to a usage plan.</p>
9859    async fn create_usage_plan_key(
9860        &self,
9861        input: CreateUsagePlanKeyRequest,
9862    ) -> Result<UsagePlanKey, RusotoError<CreateUsagePlanKeyError>>;
9863
9864    /// <p>Creates a VPC link, under the caller's account in a selected region, in an asynchronous operation that typically takes 2-4 minutes to complete and become operational. The caller must have permissions to create and update VPC Endpoint services.</p>
9865    async fn create_vpc_link(
9866        &self,
9867        input: CreateVpcLinkRequest,
9868    ) -> Result<VpcLink, RusotoError<CreateVpcLinkError>>;
9869
9870    /// <p>Deletes the <a>ApiKey</a> resource.</p>
9871    async fn delete_api_key(
9872        &self,
9873        input: DeleteApiKeyRequest,
9874    ) -> Result<(), RusotoError<DeleteApiKeyError>>;
9875
9876    /// <p><p>Deletes an existing <a>Authorizer</a> resource.</p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/delete-authorizer.html">AWS CLI</a></div></p>
9877    async fn delete_authorizer(
9878        &self,
9879        input: DeleteAuthorizerRequest,
9880    ) -> Result<(), RusotoError<DeleteAuthorizerError>>;
9881
9882    /// <p>Deletes the <a>BasePathMapping</a> resource.</p>
9883    async fn delete_base_path_mapping(
9884        &self,
9885        input: DeleteBasePathMappingRequest,
9886    ) -> Result<(), RusotoError<DeleteBasePathMappingError>>;
9887
9888    /// <p>Deletes the <a>ClientCertificate</a> resource.</p>
9889    async fn delete_client_certificate(
9890        &self,
9891        input: DeleteClientCertificateRequest,
9892    ) -> Result<(), RusotoError<DeleteClientCertificateError>>;
9893
9894    /// <p>Deletes a <a>Deployment</a> resource. Deleting a deployment will only succeed if there are no <a>Stage</a> resources associated with it.</p>
9895    async fn delete_deployment(
9896        &self,
9897        input: DeleteDeploymentRequest,
9898    ) -> Result<(), RusotoError<DeleteDeploymentError>>;
9899
9900    async fn delete_documentation_part(
9901        &self,
9902        input: DeleteDocumentationPartRequest,
9903    ) -> Result<(), RusotoError<DeleteDocumentationPartError>>;
9904
9905    async fn delete_documentation_version(
9906        &self,
9907        input: DeleteDocumentationVersionRequest,
9908    ) -> Result<(), RusotoError<DeleteDocumentationVersionError>>;
9909
9910    /// <p>Deletes the <a>DomainName</a> resource.</p>
9911    async fn delete_domain_name(
9912        &self,
9913        input: DeleteDomainNameRequest,
9914    ) -> Result<(), RusotoError<DeleteDomainNameError>>;
9915
9916    /// <p>Clears any customization of a <a>GatewayResponse</a> of a specified response type on the given <a>RestApi</a> and resets it with the default settings.</p>
9917    async fn delete_gateway_response(
9918        &self,
9919        input: DeleteGatewayResponseRequest,
9920    ) -> Result<(), RusotoError<DeleteGatewayResponseError>>;
9921
9922    /// <p>Represents a delete integration.</p>
9923    async fn delete_integration(
9924        &self,
9925        input: DeleteIntegrationRequest,
9926    ) -> Result<(), RusotoError<DeleteIntegrationError>>;
9927
9928    /// <p>Represents a delete integration response.</p>
9929    async fn delete_integration_response(
9930        &self,
9931        input: DeleteIntegrationResponseRequest,
9932    ) -> Result<(), RusotoError<DeleteIntegrationResponseError>>;
9933
9934    /// <p>Deletes an existing <a>Method</a> resource.</p>
9935    async fn delete_method(
9936        &self,
9937        input: DeleteMethodRequest,
9938    ) -> Result<(), RusotoError<DeleteMethodError>>;
9939
9940    /// <p>Deletes an existing <a>MethodResponse</a> resource.</p>
9941    async fn delete_method_response(
9942        &self,
9943        input: DeleteMethodResponseRequest,
9944    ) -> Result<(), RusotoError<DeleteMethodResponseError>>;
9945
9946    /// <p>Deletes a model.</p>
9947    async fn delete_model(
9948        &self,
9949        input: DeleteModelRequest,
9950    ) -> Result<(), RusotoError<DeleteModelError>>;
9951
9952    /// <p>Deletes a <a>RequestValidator</a> of a given <a>RestApi</a>.</p>
9953    async fn delete_request_validator(
9954        &self,
9955        input: DeleteRequestValidatorRequest,
9956    ) -> Result<(), RusotoError<DeleteRequestValidatorError>>;
9957
9958    /// <p>Deletes a <a>Resource</a> resource.</p>
9959    async fn delete_resource(
9960        &self,
9961        input: DeleteResourceRequest,
9962    ) -> Result<(), RusotoError<DeleteResourceError>>;
9963
9964    /// <p>Deletes the specified API.</p>
9965    async fn delete_rest_api(
9966        &self,
9967        input: DeleteRestApiRequest,
9968    ) -> Result<(), RusotoError<DeleteRestApiError>>;
9969
9970    /// <p>Deletes a <a>Stage</a> resource.</p>
9971    async fn delete_stage(
9972        &self,
9973        input: DeleteStageRequest,
9974    ) -> Result<(), RusotoError<DeleteStageError>>;
9975
9976    /// <p>Deletes a usage plan of a given plan Id.</p>
9977    async fn delete_usage_plan(
9978        &self,
9979        input: DeleteUsagePlanRequest,
9980    ) -> Result<(), RusotoError<DeleteUsagePlanError>>;
9981
9982    /// <p>Deletes a usage plan key and remove the underlying API key from the associated usage plan.</p>
9983    async fn delete_usage_plan_key(
9984        &self,
9985        input: DeleteUsagePlanKeyRequest,
9986    ) -> Result<(), RusotoError<DeleteUsagePlanKeyError>>;
9987
9988    /// <p>Deletes an existing <a>VpcLink</a> of a specified identifier.</p>
9989    async fn delete_vpc_link(
9990        &self,
9991        input: DeleteVpcLinkRequest,
9992    ) -> Result<(), RusotoError<DeleteVpcLinkError>>;
9993
9994    /// <p>Flushes all authorizer cache entries on a stage.</p>
9995    async fn flush_stage_authorizers_cache(
9996        &self,
9997        input: FlushStageAuthorizersCacheRequest,
9998    ) -> Result<(), RusotoError<FlushStageAuthorizersCacheError>>;
9999
10000    /// <p>Flushes a stage's cache.</p>
10001    async fn flush_stage_cache(
10002        &self,
10003        input: FlushStageCacheRequest,
10004    ) -> Result<(), RusotoError<FlushStageCacheError>>;
10005
10006    /// <p>Generates a <a>ClientCertificate</a> resource.</p>
10007    async fn generate_client_certificate(
10008        &self,
10009        input: GenerateClientCertificateRequest,
10010    ) -> Result<ClientCertificate, RusotoError<GenerateClientCertificateError>>;
10011
10012    /// <p>Gets information about the current <a>Account</a> resource.</p>
10013    async fn get_account(&self) -> Result<Account, RusotoError<GetAccountError>>;
10014
10015    /// <p>Gets information about the current <a>ApiKey</a> resource.</p>
10016    async fn get_api_key(
10017        &self,
10018        input: GetApiKeyRequest,
10019    ) -> Result<ApiKey, RusotoError<GetApiKeyError>>;
10020
10021    /// <p>Gets information about the current <a>ApiKeys</a> resource.</p>
10022    async fn get_api_keys(
10023        &self,
10024        input: GetApiKeysRequest,
10025    ) -> Result<ApiKeys, RusotoError<GetApiKeysError>>;
10026
10027    /// <p><p>Describe an existing <a>Authorizer</a> resource.</p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-authorizer.html">AWS CLI</a></div></p>
10028    async fn get_authorizer(
10029        &self,
10030        input: GetAuthorizerRequest,
10031    ) -> Result<Authorizer, RusotoError<GetAuthorizerError>>;
10032
10033    /// <p><p>Describe an existing <a>Authorizers</a> resource.</p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-authorizers.html">AWS CLI</a></div></p>
10034    async fn get_authorizers(
10035        &self,
10036        input: GetAuthorizersRequest,
10037    ) -> Result<Authorizers, RusotoError<GetAuthorizersError>>;
10038
10039    /// <p>Describe a <a>BasePathMapping</a> resource.</p>
10040    async fn get_base_path_mapping(
10041        &self,
10042        input: GetBasePathMappingRequest,
10043    ) -> Result<BasePathMapping, RusotoError<GetBasePathMappingError>>;
10044
10045    /// <p>Represents a collection of <a>BasePathMapping</a> resources.</p>
10046    async fn get_base_path_mappings(
10047        &self,
10048        input: GetBasePathMappingsRequest,
10049    ) -> Result<BasePathMappings, RusotoError<GetBasePathMappingsError>>;
10050
10051    /// <p>Gets information about the current <a>ClientCertificate</a> resource.</p>
10052    async fn get_client_certificate(
10053        &self,
10054        input: GetClientCertificateRequest,
10055    ) -> Result<ClientCertificate, RusotoError<GetClientCertificateError>>;
10056
10057    /// <p>Gets a collection of <a>ClientCertificate</a> resources.</p>
10058    async fn get_client_certificates(
10059        &self,
10060        input: GetClientCertificatesRequest,
10061    ) -> Result<ClientCertificates, RusotoError<GetClientCertificatesError>>;
10062
10063    /// <p>Gets information about a <a>Deployment</a> resource.</p>
10064    async fn get_deployment(
10065        &self,
10066        input: GetDeploymentRequest,
10067    ) -> Result<Deployment, RusotoError<GetDeploymentError>>;
10068
10069    /// <p>Gets information about a <a>Deployments</a> collection.</p>
10070    async fn get_deployments(
10071        &self,
10072        input: GetDeploymentsRequest,
10073    ) -> Result<Deployments, RusotoError<GetDeploymentsError>>;
10074
10075    async fn get_documentation_part(
10076        &self,
10077        input: GetDocumentationPartRequest,
10078    ) -> Result<DocumentationPart, RusotoError<GetDocumentationPartError>>;
10079
10080    async fn get_documentation_parts(
10081        &self,
10082        input: GetDocumentationPartsRequest,
10083    ) -> Result<DocumentationParts, RusotoError<GetDocumentationPartsError>>;
10084
10085    async fn get_documentation_version(
10086        &self,
10087        input: GetDocumentationVersionRequest,
10088    ) -> Result<DocumentationVersion, RusotoError<GetDocumentationVersionError>>;
10089
10090    async fn get_documentation_versions(
10091        &self,
10092        input: GetDocumentationVersionsRequest,
10093    ) -> Result<DocumentationVersions, RusotoError<GetDocumentationVersionsError>>;
10094
10095    /// <p>Represents a domain name that is contained in a simpler, more intuitive URL that can be called.</p>
10096    async fn get_domain_name(
10097        &self,
10098        input: GetDomainNameRequest,
10099    ) -> Result<DomainName, RusotoError<GetDomainNameError>>;
10100
10101    /// <p>Represents a collection of <a>DomainName</a> resources.</p>
10102    async fn get_domain_names(
10103        &self,
10104        input: GetDomainNamesRequest,
10105    ) -> Result<DomainNames, RusotoError<GetDomainNamesError>>;
10106
10107    /// <p>Exports a deployed version of a <a>RestApi</a> in a specified format.</p>
10108    async fn get_export(
10109        &self,
10110        input: GetExportRequest,
10111    ) -> Result<ExportResponse, RusotoError<GetExportError>>;
10112
10113    /// <p>Gets a <a>GatewayResponse</a> of a specified response type on the given <a>RestApi</a>.</p>
10114    async fn get_gateway_response(
10115        &self,
10116        input: GetGatewayResponseRequest,
10117    ) -> Result<GatewayResponse, RusotoError<GetGatewayResponseError>>;
10118
10119    /// <p>Gets the <a>GatewayResponses</a> collection on the given <a>RestApi</a>. If an API developer has not added any definitions for gateway responses, the result will be the API Gateway-generated default <a>GatewayResponses</a> collection for the supported response types.</p>
10120    async fn get_gateway_responses(
10121        &self,
10122        input: GetGatewayResponsesRequest,
10123    ) -> Result<GatewayResponses, RusotoError<GetGatewayResponsesError>>;
10124
10125    /// <p>Get the integration settings.</p>
10126    async fn get_integration(
10127        &self,
10128        input: GetIntegrationRequest,
10129    ) -> Result<Integration, RusotoError<GetIntegrationError>>;
10130
10131    /// <p>Represents a get integration response.</p>
10132    async fn get_integration_response(
10133        &self,
10134        input: GetIntegrationResponseRequest,
10135    ) -> Result<IntegrationResponse, RusotoError<GetIntegrationResponseError>>;
10136
10137    /// <p>Describe an existing <a>Method</a> resource.</p>
10138    async fn get_method(
10139        &self,
10140        input: GetMethodRequest,
10141    ) -> Result<Method, RusotoError<GetMethodError>>;
10142
10143    /// <p>Describes a <a>MethodResponse</a> resource.</p>
10144    async fn get_method_response(
10145        &self,
10146        input: GetMethodResponseRequest,
10147    ) -> Result<MethodResponse, RusotoError<GetMethodResponseError>>;
10148
10149    /// <p>Describes an existing model defined for a <a>RestApi</a> resource.</p>
10150    async fn get_model(&self, input: GetModelRequest) -> Result<Model, RusotoError<GetModelError>>;
10151
10152    /// <p>Generates a sample mapping template that can be used to transform a payload into the structure of a model.</p>
10153    async fn get_model_template(
10154        &self,
10155        input: GetModelTemplateRequest,
10156    ) -> Result<Template, RusotoError<GetModelTemplateError>>;
10157
10158    /// <p>Describes existing <a>Models</a> defined for a <a>RestApi</a> resource.</p>
10159    async fn get_models(
10160        &self,
10161        input: GetModelsRequest,
10162    ) -> Result<Models, RusotoError<GetModelsError>>;
10163
10164    /// <p>Gets a <a>RequestValidator</a> of a given <a>RestApi</a>.</p>
10165    async fn get_request_validator(
10166        &self,
10167        input: GetRequestValidatorRequest,
10168    ) -> Result<RequestValidator, RusotoError<GetRequestValidatorError>>;
10169
10170    /// <p>Gets the <a>RequestValidators</a> collection of a given <a>RestApi</a>.</p>
10171    async fn get_request_validators(
10172        &self,
10173        input: GetRequestValidatorsRequest,
10174    ) -> Result<RequestValidators, RusotoError<GetRequestValidatorsError>>;
10175
10176    /// <p>Lists information about a resource.</p>
10177    async fn get_resource(
10178        &self,
10179        input: GetResourceRequest,
10180    ) -> Result<Resource, RusotoError<GetResourceError>>;
10181
10182    /// <p>Lists information about a collection of <a>Resource</a> resources.</p>
10183    async fn get_resources(
10184        &self,
10185        input: GetResourcesRequest,
10186    ) -> Result<Resources, RusotoError<GetResourcesError>>;
10187
10188    /// <p>Lists the <a>RestApi</a> resource in the collection.</p>
10189    async fn get_rest_api(
10190        &self,
10191        input: GetRestApiRequest,
10192    ) -> Result<RestApi, RusotoError<GetRestApiError>>;
10193
10194    /// <p>Lists the <a>RestApis</a> resources for your collection.</p>
10195    async fn get_rest_apis(
10196        &self,
10197        input: GetRestApisRequest,
10198    ) -> Result<RestApis, RusotoError<GetRestApisError>>;
10199
10200    /// <p>Generates a client SDK for a <a>RestApi</a> and <a>Stage</a>.</p>
10201    async fn get_sdk(&self, input: GetSdkRequest) -> Result<SdkResponse, RusotoError<GetSdkError>>;
10202
10203    async fn get_sdk_type(
10204        &self,
10205        input: GetSdkTypeRequest,
10206    ) -> Result<SdkType, RusotoError<GetSdkTypeError>>;
10207
10208    async fn get_sdk_types(
10209        &self,
10210        input: GetSdkTypesRequest,
10211    ) -> Result<SdkTypes, RusotoError<GetSdkTypesError>>;
10212
10213    /// <p>Gets information about a <a>Stage</a> resource.</p>
10214    async fn get_stage(&self, input: GetStageRequest) -> Result<Stage, RusotoError<GetStageError>>;
10215
10216    /// <p>Gets information about one or more <a>Stage</a> resources.</p>
10217    async fn get_stages(
10218        &self,
10219        input: GetStagesRequest,
10220    ) -> Result<Stages, RusotoError<GetStagesError>>;
10221
10222    /// <p>Gets the <a>Tags</a> collection for a given resource.</p>
10223    async fn get_tags(&self, input: GetTagsRequest) -> Result<Tags, RusotoError<GetTagsError>>;
10224
10225    /// <p>Gets the usage data of a usage plan in a specified time interval.</p>
10226    async fn get_usage(&self, input: GetUsageRequest) -> Result<Usage, RusotoError<GetUsageError>>;
10227
10228    /// <p>Gets a usage plan of a given plan identifier.</p>
10229    async fn get_usage_plan(
10230        &self,
10231        input: GetUsagePlanRequest,
10232    ) -> Result<UsagePlan, RusotoError<GetUsagePlanError>>;
10233
10234    /// <p>Gets a usage plan key of a given key identifier.</p>
10235    async fn get_usage_plan_key(
10236        &self,
10237        input: GetUsagePlanKeyRequest,
10238    ) -> Result<UsagePlanKey, RusotoError<GetUsagePlanKeyError>>;
10239
10240    /// <p>Gets all the usage plan keys representing the API keys added to a specified usage plan.</p>
10241    async fn get_usage_plan_keys(
10242        &self,
10243        input: GetUsagePlanKeysRequest,
10244    ) -> Result<UsagePlanKeys, RusotoError<GetUsagePlanKeysError>>;
10245
10246    /// <p>Gets all the usage plans of the caller's account.</p>
10247    async fn get_usage_plans(
10248        &self,
10249        input: GetUsagePlansRequest,
10250    ) -> Result<UsagePlans, RusotoError<GetUsagePlansError>>;
10251
10252    /// <p>Gets a specified VPC link under the caller's account in a region.</p>
10253    async fn get_vpc_link(
10254        &self,
10255        input: GetVpcLinkRequest,
10256    ) -> Result<VpcLink, RusotoError<GetVpcLinkError>>;
10257
10258    /// <p>Gets the <a>VpcLinks</a> collection under the caller's account in a selected region.</p>
10259    async fn get_vpc_links(
10260        &self,
10261        input: GetVpcLinksRequest,
10262    ) -> Result<VpcLinks, RusotoError<GetVpcLinksError>>;
10263
10264    /// <p>Import API keys from an external source, such as a CSV-formatted file.</p>
10265    async fn import_api_keys(
10266        &self,
10267        input: ImportApiKeysRequest,
10268    ) -> Result<ApiKeyIds, RusotoError<ImportApiKeysError>>;
10269
10270    async fn import_documentation_parts(
10271        &self,
10272        input: ImportDocumentationPartsRequest,
10273    ) -> Result<DocumentationPartIds, RusotoError<ImportDocumentationPartsError>>;
10274
10275    /// <p>A feature of the API Gateway control service for creating a new API from an external API definition file.</p>
10276    async fn import_rest_api(
10277        &self,
10278        input: ImportRestApiRequest,
10279    ) -> Result<RestApi, RusotoError<ImportRestApiError>>;
10280
10281    /// <p>Creates a customization of a <a>GatewayResponse</a> of a specified response type and status code on the given <a>RestApi</a>.</p>
10282    async fn put_gateway_response(
10283        &self,
10284        input: PutGatewayResponseRequest,
10285    ) -> Result<GatewayResponse, RusotoError<PutGatewayResponseError>>;
10286
10287    /// <p>Sets up a method's integration.</p>
10288    async fn put_integration(
10289        &self,
10290        input: PutIntegrationRequest,
10291    ) -> Result<Integration, RusotoError<PutIntegrationError>>;
10292
10293    /// <p>Represents a put integration.</p>
10294    async fn put_integration_response(
10295        &self,
10296        input: PutIntegrationResponseRequest,
10297    ) -> Result<IntegrationResponse, RusotoError<PutIntegrationResponseError>>;
10298
10299    /// <p>Add a method to an existing <a>Resource</a> resource.</p>
10300    async fn put_method(
10301        &self,
10302        input: PutMethodRequest,
10303    ) -> Result<Method, RusotoError<PutMethodError>>;
10304
10305    /// <p>Adds a <a>MethodResponse</a> to an existing <a>Method</a> resource.</p>
10306    async fn put_method_response(
10307        &self,
10308        input: PutMethodResponseRequest,
10309    ) -> Result<MethodResponse, RusotoError<PutMethodResponseError>>;
10310
10311    /// <p>A feature of the API Gateway control service for updating an existing API with an input of external API definitions. The update can take the form of merging the supplied definition into the existing API or overwriting the existing API.</p>
10312    async fn put_rest_api(
10313        &self,
10314        input: PutRestApiRequest,
10315    ) -> Result<RestApi, RusotoError<PutRestApiError>>;
10316
10317    /// <p>Adds or updates a tag on a given resource.</p>
10318    async fn tag_resource(
10319        &self,
10320        input: TagResourceRequest,
10321    ) -> Result<(), RusotoError<TagResourceError>>;
10322
10323    /// <p><p>Simulate the execution of an <a>Authorizer</a> in your <a>RestApi</a> with headers, parameters, and an incoming request body.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html">Use Lambda Function as Authorizer</a> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html">Use Cognito User Pool as Authorizer</a> </div></p>
10324    async fn test_invoke_authorizer(
10325        &self,
10326        input: TestInvokeAuthorizerRequest,
10327    ) -> Result<TestInvokeAuthorizerResponse, RusotoError<TestInvokeAuthorizerError>>;
10328
10329    /// <p>Simulate the execution of a <a>Method</a> in your <a>RestApi</a> with headers, parameters, and an incoming request body.</p>
10330    async fn test_invoke_method(
10331        &self,
10332        input: TestInvokeMethodRequest,
10333    ) -> Result<TestInvokeMethodResponse, RusotoError<TestInvokeMethodError>>;
10334
10335    /// <p>Removes a tag from a given resource.</p>
10336    async fn untag_resource(
10337        &self,
10338        input: UntagResourceRequest,
10339    ) -> Result<(), RusotoError<UntagResourceError>>;
10340
10341    /// <p>Changes information about the current <a>Account</a> resource.</p>
10342    async fn update_account(
10343        &self,
10344        input: UpdateAccountRequest,
10345    ) -> Result<Account, RusotoError<UpdateAccountError>>;
10346
10347    /// <p>Changes information about an <a>ApiKey</a> resource.</p>
10348    async fn update_api_key(
10349        &self,
10350        input: UpdateApiKeyRequest,
10351    ) -> Result<ApiKey, RusotoError<UpdateApiKeyError>>;
10352
10353    /// <p><p>Updates an existing <a>Authorizer</a> resource.</p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-authorizer.html">AWS CLI</a></div></p>
10354    async fn update_authorizer(
10355        &self,
10356        input: UpdateAuthorizerRequest,
10357    ) -> Result<Authorizer, RusotoError<UpdateAuthorizerError>>;
10358
10359    /// <p>Changes information about the <a>BasePathMapping</a> resource.</p>
10360    async fn update_base_path_mapping(
10361        &self,
10362        input: UpdateBasePathMappingRequest,
10363    ) -> Result<BasePathMapping, RusotoError<UpdateBasePathMappingError>>;
10364
10365    /// <p>Changes information about an <a>ClientCertificate</a> resource.</p>
10366    async fn update_client_certificate(
10367        &self,
10368        input: UpdateClientCertificateRequest,
10369    ) -> Result<ClientCertificate, RusotoError<UpdateClientCertificateError>>;
10370
10371    /// <p>Changes information about a <a>Deployment</a> resource.</p>
10372    async fn update_deployment(
10373        &self,
10374        input: UpdateDeploymentRequest,
10375    ) -> Result<Deployment, RusotoError<UpdateDeploymentError>>;
10376
10377    async fn update_documentation_part(
10378        &self,
10379        input: UpdateDocumentationPartRequest,
10380    ) -> Result<DocumentationPart, RusotoError<UpdateDocumentationPartError>>;
10381
10382    async fn update_documentation_version(
10383        &self,
10384        input: UpdateDocumentationVersionRequest,
10385    ) -> Result<DocumentationVersion, RusotoError<UpdateDocumentationVersionError>>;
10386
10387    /// <p>Changes information about the <a>DomainName</a> resource.</p>
10388    async fn update_domain_name(
10389        &self,
10390        input: UpdateDomainNameRequest,
10391    ) -> Result<DomainName, RusotoError<UpdateDomainNameError>>;
10392
10393    /// <p>Updates a <a>GatewayResponse</a> of a specified response type on the given <a>RestApi</a>.</p>
10394    async fn update_gateway_response(
10395        &self,
10396        input: UpdateGatewayResponseRequest,
10397    ) -> Result<GatewayResponse, RusotoError<UpdateGatewayResponseError>>;
10398
10399    /// <p>Represents an update integration.</p>
10400    async fn update_integration(
10401        &self,
10402        input: UpdateIntegrationRequest,
10403    ) -> Result<Integration, RusotoError<UpdateIntegrationError>>;
10404
10405    /// <p>Represents an update integration response.</p>
10406    async fn update_integration_response(
10407        &self,
10408        input: UpdateIntegrationResponseRequest,
10409    ) -> Result<IntegrationResponse, RusotoError<UpdateIntegrationResponseError>>;
10410
10411    /// <p>Updates an existing <a>Method</a> resource.</p>
10412    async fn update_method(
10413        &self,
10414        input: UpdateMethodRequest,
10415    ) -> Result<Method, RusotoError<UpdateMethodError>>;
10416
10417    /// <p>Updates an existing <a>MethodResponse</a> resource.</p>
10418    async fn update_method_response(
10419        &self,
10420        input: UpdateMethodResponseRequest,
10421    ) -> Result<MethodResponse, RusotoError<UpdateMethodResponseError>>;
10422
10423    /// <p>Changes information about a model.</p>
10424    async fn update_model(
10425        &self,
10426        input: UpdateModelRequest,
10427    ) -> Result<Model, RusotoError<UpdateModelError>>;
10428
10429    /// <p>Updates a <a>RequestValidator</a> of a given <a>RestApi</a>.</p>
10430    async fn update_request_validator(
10431        &self,
10432        input: UpdateRequestValidatorRequest,
10433    ) -> Result<RequestValidator, RusotoError<UpdateRequestValidatorError>>;
10434
10435    /// <p>Changes information about a <a>Resource</a> resource.</p>
10436    async fn update_resource(
10437        &self,
10438        input: UpdateResourceRequest,
10439    ) -> Result<Resource, RusotoError<UpdateResourceError>>;
10440
10441    /// <p>Changes information about the specified API.</p>
10442    async fn update_rest_api(
10443        &self,
10444        input: UpdateRestApiRequest,
10445    ) -> Result<RestApi, RusotoError<UpdateRestApiError>>;
10446
10447    /// <p>Changes information about a <a>Stage</a> resource.</p>
10448    async fn update_stage(
10449        &self,
10450        input: UpdateStageRequest,
10451    ) -> Result<Stage, RusotoError<UpdateStageError>>;
10452
10453    /// <p>Grants a temporary extension to the remaining quota of a usage plan associated with a specified API key.</p>
10454    async fn update_usage(
10455        &self,
10456        input: UpdateUsageRequest,
10457    ) -> Result<Usage, RusotoError<UpdateUsageError>>;
10458
10459    /// <p>Updates a usage plan of a given plan Id.</p>
10460    async fn update_usage_plan(
10461        &self,
10462        input: UpdateUsagePlanRequest,
10463    ) -> Result<UsagePlan, RusotoError<UpdateUsagePlanError>>;
10464
10465    /// <p>Updates an existing <a>VpcLink</a> of a specified identifier.</p>
10466    async fn update_vpc_link(
10467        &self,
10468        input: UpdateVpcLinkRequest,
10469    ) -> Result<VpcLink, RusotoError<UpdateVpcLinkError>>;
10470}
10471/// A client for the Amazon API Gateway API.
10472#[derive(Clone)]
10473pub struct ApiGatewayClient {
10474    client: Client,
10475    region: region::Region,
10476}
10477
10478impl ApiGatewayClient {
10479    /// Creates a client backed by the default tokio event loop.
10480    ///
10481    /// The client will use the default credentials provider and tls client.
10482    pub fn new(region: region::Region) -> ApiGatewayClient {
10483        ApiGatewayClient {
10484            client: Client::shared(),
10485            region,
10486        }
10487    }
10488
10489    pub fn new_with<P, D>(
10490        request_dispatcher: D,
10491        credentials_provider: P,
10492        region: region::Region,
10493    ) -> ApiGatewayClient
10494    where
10495        P: ProvideAwsCredentials + Send + Sync + 'static,
10496        D: DispatchSignedRequest + Send + Sync + 'static,
10497    {
10498        ApiGatewayClient {
10499            client: Client::new_with(credentials_provider, request_dispatcher),
10500            region,
10501        }
10502    }
10503
10504    pub fn new_with_client(client: Client, region: region::Region) -> ApiGatewayClient {
10505        ApiGatewayClient { client, region }
10506    }
10507}
10508
10509#[async_trait]
10510impl ApiGateway for ApiGatewayClient {
10511    /// <p><p>Create an <a>ApiKey</a> resource. </p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-api-key.html">AWS CLI</a></div></p>
10512    #[allow(unused_mut)]
10513    async fn create_api_key(
10514        &self,
10515        input: CreateApiKeyRequest,
10516    ) -> Result<ApiKey, RusotoError<CreateApiKeyError>> {
10517        let request_uri = "/apikeys";
10518
10519        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10520        request.set_content_type("application/x-amz-json-1.1".to_owned());
10521
10522        let encoded = Some(serde_json::to_vec(&input).unwrap());
10523        request.set_payload(encoded);
10524
10525        let mut response = self
10526            .client
10527            .sign_and_dispatch(request)
10528            .await
10529            .map_err(RusotoError::from)?;
10530        if response.status.as_u16() == 201 {
10531            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10532            let result = proto::json::ResponsePayload::new(&response).deserialize::<ApiKey, _>()?;
10533
10534            Ok(result)
10535        } else {
10536            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10537            Err(CreateApiKeyError::from_response(response))
10538        }
10539    }
10540
10541    /// <p><p>Adds a new <a>Authorizer</a> resource to an existing <a>RestApi</a> resource.</p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-authorizer.html">AWS CLI</a></div></p>
10542    #[allow(unused_mut)]
10543    async fn create_authorizer(
10544        &self,
10545        input: CreateAuthorizerRequest,
10546    ) -> Result<Authorizer, RusotoError<CreateAuthorizerError>> {
10547        let request_uri = format!(
10548            "/restapis/{restapi_id}/authorizers",
10549            restapi_id = input.rest_api_id
10550        );
10551
10552        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10553        request.set_content_type("application/x-amz-json-1.1".to_owned());
10554
10555        let encoded = Some(serde_json::to_vec(&input).unwrap());
10556        request.set_payload(encoded);
10557
10558        let mut response = self
10559            .client
10560            .sign_and_dispatch(request)
10561            .await
10562            .map_err(RusotoError::from)?;
10563        if response.status.as_u16() == 201 {
10564            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10565            let result =
10566                proto::json::ResponsePayload::new(&response).deserialize::<Authorizer, _>()?;
10567
10568            Ok(result)
10569        } else {
10570            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10571            Err(CreateAuthorizerError::from_response(response))
10572        }
10573    }
10574
10575    /// <p>Creates a new <a>BasePathMapping</a> resource.</p>
10576    #[allow(unused_mut)]
10577    async fn create_base_path_mapping(
10578        &self,
10579        input: CreateBasePathMappingRequest,
10580    ) -> Result<BasePathMapping, RusotoError<CreateBasePathMappingError>> {
10581        let request_uri = format!(
10582            "/domainnames/{domain_name}/basepathmappings",
10583            domain_name = input.domain_name
10584        );
10585
10586        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10587        request.set_content_type("application/x-amz-json-1.1".to_owned());
10588
10589        let encoded = Some(serde_json::to_vec(&input).unwrap());
10590        request.set_payload(encoded);
10591
10592        let mut response = self
10593            .client
10594            .sign_and_dispatch(request)
10595            .await
10596            .map_err(RusotoError::from)?;
10597        if response.status.as_u16() == 201 {
10598            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10599            let result =
10600                proto::json::ResponsePayload::new(&response).deserialize::<BasePathMapping, _>()?;
10601
10602            Ok(result)
10603        } else {
10604            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10605            Err(CreateBasePathMappingError::from_response(response))
10606        }
10607    }
10608
10609    /// <p>Creates a <a>Deployment</a> resource, which makes a specified <a>RestApi</a> callable over the internet.</p>
10610    #[allow(unused_mut)]
10611    async fn create_deployment(
10612        &self,
10613        input: CreateDeploymentRequest,
10614    ) -> Result<Deployment, RusotoError<CreateDeploymentError>> {
10615        let request_uri = format!(
10616            "/restapis/{restapi_id}/deployments",
10617            restapi_id = input.rest_api_id
10618        );
10619
10620        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10621        request.set_content_type("application/x-amz-json-1.1".to_owned());
10622
10623        let encoded = Some(serde_json::to_vec(&input).unwrap());
10624        request.set_payload(encoded);
10625
10626        let mut response = self
10627            .client
10628            .sign_and_dispatch(request)
10629            .await
10630            .map_err(RusotoError::from)?;
10631        if response.status.as_u16() == 201 {
10632            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10633            let result =
10634                proto::json::ResponsePayload::new(&response).deserialize::<Deployment, _>()?;
10635
10636            Ok(result)
10637        } else {
10638            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10639            Err(CreateDeploymentError::from_response(response))
10640        }
10641    }
10642
10643    #[allow(unused_mut)]
10644    async fn create_documentation_part(
10645        &self,
10646        input: CreateDocumentationPartRequest,
10647    ) -> Result<DocumentationPart, RusotoError<CreateDocumentationPartError>> {
10648        let request_uri = format!(
10649            "/restapis/{restapi_id}/documentation/parts",
10650            restapi_id = input.rest_api_id
10651        );
10652
10653        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10654        request.set_content_type("application/x-amz-json-1.1".to_owned());
10655
10656        let encoded = Some(serde_json::to_vec(&input).unwrap());
10657        request.set_payload(encoded);
10658
10659        let mut response = self
10660            .client
10661            .sign_and_dispatch(request)
10662            .await
10663            .map_err(RusotoError::from)?;
10664        if response.status.as_u16() == 201 {
10665            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10666            let result = proto::json::ResponsePayload::new(&response)
10667                .deserialize::<DocumentationPart, _>()?;
10668
10669            Ok(result)
10670        } else {
10671            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10672            Err(CreateDocumentationPartError::from_response(response))
10673        }
10674    }
10675
10676    #[allow(unused_mut)]
10677    async fn create_documentation_version(
10678        &self,
10679        input: CreateDocumentationVersionRequest,
10680    ) -> Result<DocumentationVersion, RusotoError<CreateDocumentationVersionError>> {
10681        let request_uri = format!(
10682            "/restapis/{restapi_id}/documentation/versions",
10683            restapi_id = input.rest_api_id
10684        );
10685
10686        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10687        request.set_content_type("application/x-amz-json-1.1".to_owned());
10688
10689        let encoded = Some(serde_json::to_vec(&input).unwrap());
10690        request.set_payload(encoded);
10691
10692        let mut response = self
10693            .client
10694            .sign_and_dispatch(request)
10695            .await
10696            .map_err(RusotoError::from)?;
10697        if response.status.as_u16() == 201 {
10698            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10699            let result = proto::json::ResponsePayload::new(&response)
10700                .deserialize::<DocumentationVersion, _>()?;
10701
10702            Ok(result)
10703        } else {
10704            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10705            Err(CreateDocumentationVersionError::from_response(response))
10706        }
10707    }
10708
10709    /// <p>Creates a new domain name.</p>
10710    #[allow(unused_mut)]
10711    async fn create_domain_name(
10712        &self,
10713        input: CreateDomainNameRequest,
10714    ) -> Result<DomainName, RusotoError<CreateDomainNameError>> {
10715        let request_uri = "/domainnames";
10716
10717        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10718        request.set_content_type("application/x-amz-json-1.1".to_owned());
10719
10720        let encoded = Some(serde_json::to_vec(&input).unwrap());
10721        request.set_payload(encoded);
10722
10723        let mut response = self
10724            .client
10725            .sign_and_dispatch(request)
10726            .await
10727            .map_err(RusotoError::from)?;
10728        if response.status.as_u16() == 201 {
10729            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10730            let result =
10731                proto::json::ResponsePayload::new(&response).deserialize::<DomainName, _>()?;
10732
10733            Ok(result)
10734        } else {
10735            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10736            Err(CreateDomainNameError::from_response(response))
10737        }
10738    }
10739
10740    /// <p>Adds a new <a>Model</a> resource to an existing <a>RestApi</a> resource.</p>
10741    #[allow(unused_mut)]
10742    async fn create_model(
10743        &self,
10744        input: CreateModelRequest,
10745    ) -> Result<Model, RusotoError<CreateModelError>> {
10746        let request_uri = format!(
10747            "/restapis/{restapi_id}/models",
10748            restapi_id = input.rest_api_id
10749        );
10750
10751        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10752        request.set_content_type("application/x-amz-json-1.1".to_owned());
10753
10754        let encoded = Some(serde_json::to_vec(&input).unwrap());
10755        request.set_payload(encoded);
10756
10757        let mut response = self
10758            .client
10759            .sign_and_dispatch(request)
10760            .await
10761            .map_err(RusotoError::from)?;
10762        if response.status.as_u16() == 201 {
10763            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10764            let result = proto::json::ResponsePayload::new(&response).deserialize::<Model, _>()?;
10765
10766            Ok(result)
10767        } else {
10768            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10769            Err(CreateModelError::from_response(response))
10770        }
10771    }
10772
10773    /// <p>Creates a <a>ReqeustValidator</a> of a given <a>RestApi</a>.</p>
10774    #[allow(unused_mut)]
10775    async fn create_request_validator(
10776        &self,
10777        input: CreateRequestValidatorRequest,
10778    ) -> Result<RequestValidator, RusotoError<CreateRequestValidatorError>> {
10779        let request_uri = format!(
10780            "/restapis/{restapi_id}/requestvalidators",
10781            restapi_id = input.rest_api_id
10782        );
10783
10784        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10785        request.set_content_type("application/x-amz-json-1.1".to_owned());
10786
10787        let encoded = Some(serde_json::to_vec(&input).unwrap());
10788        request.set_payload(encoded);
10789
10790        let mut response = self
10791            .client
10792            .sign_and_dispatch(request)
10793            .await
10794            .map_err(RusotoError::from)?;
10795        if response.status.as_u16() == 201 {
10796            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10797            let result = proto::json::ResponsePayload::new(&response)
10798                .deserialize::<RequestValidator, _>()?;
10799
10800            Ok(result)
10801        } else {
10802            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10803            Err(CreateRequestValidatorError::from_response(response))
10804        }
10805    }
10806
10807    /// <p>Creates a <a>Resource</a> resource.</p>
10808    #[allow(unused_mut)]
10809    async fn create_resource(
10810        &self,
10811        input: CreateResourceRequest,
10812    ) -> Result<Resource, RusotoError<CreateResourceError>> {
10813        let request_uri = format!(
10814            "/restapis/{restapi_id}/resources/{parent_id}",
10815            parent_id = input.parent_id,
10816            restapi_id = input.rest_api_id
10817        );
10818
10819        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10820        request.set_content_type("application/x-amz-json-1.1".to_owned());
10821
10822        let encoded = Some(serde_json::to_vec(&input).unwrap());
10823        request.set_payload(encoded);
10824
10825        let mut response = self
10826            .client
10827            .sign_and_dispatch(request)
10828            .await
10829            .map_err(RusotoError::from)?;
10830        if response.status.as_u16() == 201 {
10831            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10832            let result =
10833                proto::json::ResponsePayload::new(&response).deserialize::<Resource, _>()?;
10834
10835            Ok(result)
10836        } else {
10837            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10838            Err(CreateResourceError::from_response(response))
10839        }
10840    }
10841
10842    /// <p>Creates a new <a>RestApi</a> resource.</p>
10843    #[allow(unused_mut)]
10844    async fn create_rest_api(
10845        &self,
10846        input: CreateRestApiRequest,
10847    ) -> Result<RestApi, RusotoError<CreateRestApiError>> {
10848        let request_uri = "/restapis";
10849
10850        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10851        request.set_content_type("application/x-amz-json-1.1".to_owned());
10852
10853        let encoded = Some(serde_json::to_vec(&input).unwrap());
10854        request.set_payload(encoded);
10855
10856        let mut response = self
10857            .client
10858            .sign_and_dispatch(request)
10859            .await
10860            .map_err(RusotoError::from)?;
10861        if response.status.as_u16() == 201 {
10862            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10863            let result =
10864                proto::json::ResponsePayload::new(&response).deserialize::<RestApi, _>()?;
10865
10866            Ok(result)
10867        } else {
10868            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10869            Err(CreateRestApiError::from_response(response))
10870        }
10871    }
10872
10873    /// <p>Creates a new <a>Stage</a> resource that references a pre-existing <a>Deployment</a> for the API. </p>
10874    #[allow(unused_mut)]
10875    async fn create_stage(
10876        &self,
10877        input: CreateStageRequest,
10878    ) -> Result<Stage, RusotoError<CreateStageError>> {
10879        let request_uri = format!(
10880            "/restapis/{restapi_id}/stages",
10881            restapi_id = input.rest_api_id
10882        );
10883
10884        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10885        request.set_content_type("application/x-amz-json-1.1".to_owned());
10886
10887        let encoded = Some(serde_json::to_vec(&input).unwrap());
10888        request.set_payload(encoded);
10889
10890        let mut response = self
10891            .client
10892            .sign_and_dispatch(request)
10893            .await
10894            .map_err(RusotoError::from)?;
10895        if response.status.as_u16() == 201 {
10896            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10897            let result = proto::json::ResponsePayload::new(&response).deserialize::<Stage, _>()?;
10898
10899            Ok(result)
10900        } else {
10901            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10902            Err(CreateStageError::from_response(response))
10903        }
10904    }
10905
10906    /// <p>Creates a usage plan with the throttle and quota limits, as well as the associated API stages, specified in the payload. </p>
10907    #[allow(unused_mut)]
10908    async fn create_usage_plan(
10909        &self,
10910        input: CreateUsagePlanRequest,
10911    ) -> Result<UsagePlan, RusotoError<CreateUsagePlanError>> {
10912        let request_uri = "/usageplans";
10913
10914        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10915        request.set_content_type("application/x-amz-json-1.1".to_owned());
10916
10917        let encoded = Some(serde_json::to_vec(&input).unwrap());
10918        request.set_payload(encoded);
10919
10920        let mut response = self
10921            .client
10922            .sign_and_dispatch(request)
10923            .await
10924            .map_err(RusotoError::from)?;
10925        if response.status.as_u16() == 201 {
10926            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10927            let result =
10928                proto::json::ResponsePayload::new(&response).deserialize::<UsagePlan, _>()?;
10929
10930            Ok(result)
10931        } else {
10932            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10933            Err(CreateUsagePlanError::from_response(response))
10934        }
10935    }
10936
10937    /// <p>Creates a usage plan key for adding an existing API key to a usage plan.</p>
10938    #[allow(unused_mut)]
10939    async fn create_usage_plan_key(
10940        &self,
10941        input: CreateUsagePlanKeyRequest,
10942    ) -> Result<UsagePlanKey, RusotoError<CreateUsagePlanKeyError>> {
10943        let request_uri = format!(
10944            "/usageplans/{usageplan_id}/keys",
10945            usageplan_id = input.usage_plan_id
10946        );
10947
10948        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10949        request.set_content_type("application/x-amz-json-1.1".to_owned());
10950
10951        let encoded = Some(serde_json::to_vec(&input).unwrap());
10952        request.set_payload(encoded);
10953
10954        let mut response = self
10955            .client
10956            .sign_and_dispatch(request)
10957            .await
10958            .map_err(RusotoError::from)?;
10959        if response.status.as_u16() == 201 {
10960            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10961            let result =
10962                proto::json::ResponsePayload::new(&response).deserialize::<UsagePlanKey, _>()?;
10963
10964            Ok(result)
10965        } else {
10966            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10967            Err(CreateUsagePlanKeyError::from_response(response))
10968        }
10969    }
10970
10971    /// <p>Creates a VPC link, under the caller's account in a selected region, in an asynchronous operation that typically takes 2-4 minutes to complete and become operational. The caller must have permissions to create and update VPC Endpoint services.</p>
10972    #[allow(unused_mut)]
10973    async fn create_vpc_link(
10974        &self,
10975        input: CreateVpcLinkRequest,
10976    ) -> Result<VpcLink, RusotoError<CreateVpcLinkError>> {
10977        let request_uri = "/vpclinks";
10978
10979        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
10980        request.set_content_type("application/x-amz-json-1.1".to_owned());
10981
10982        let encoded = Some(serde_json::to_vec(&input).unwrap());
10983        request.set_payload(encoded);
10984
10985        let mut response = self
10986            .client
10987            .sign_and_dispatch(request)
10988            .await
10989            .map_err(RusotoError::from)?;
10990        if response.status.as_u16() == 202 {
10991            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10992            let result =
10993                proto::json::ResponsePayload::new(&response).deserialize::<VpcLink, _>()?;
10994
10995            Ok(result)
10996        } else {
10997            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10998            Err(CreateVpcLinkError::from_response(response))
10999        }
11000    }
11001
11002    /// <p>Deletes the <a>ApiKey</a> resource.</p>
11003    #[allow(unused_mut)]
11004    async fn delete_api_key(
11005        &self,
11006        input: DeleteApiKeyRequest,
11007    ) -> Result<(), RusotoError<DeleteApiKeyError>> {
11008        let request_uri = format!("/apikeys/{api_key}", api_key = input.api_key);
11009
11010        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11011        request.set_content_type("application/x-amz-json-1.1".to_owned());
11012
11013        let mut response = self
11014            .client
11015            .sign_and_dispatch(request)
11016            .await
11017            .map_err(RusotoError::from)?;
11018        if response.status.as_u16() == 202 {
11019            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11020            let result = ::std::mem::drop(response);
11021
11022            Ok(result)
11023        } else {
11024            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11025            Err(DeleteApiKeyError::from_response(response))
11026        }
11027    }
11028
11029    /// <p><p>Deletes an existing <a>Authorizer</a> resource.</p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/delete-authorizer.html">AWS CLI</a></div></p>
11030    #[allow(unused_mut)]
11031    async fn delete_authorizer(
11032        &self,
11033        input: DeleteAuthorizerRequest,
11034    ) -> Result<(), RusotoError<DeleteAuthorizerError>> {
11035        let request_uri = format!(
11036            "/restapis/{restapi_id}/authorizers/{authorizer_id}",
11037            authorizer_id = input.authorizer_id,
11038            restapi_id = input.rest_api_id
11039        );
11040
11041        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11042        request.set_content_type("application/x-amz-json-1.1".to_owned());
11043
11044        let mut response = self
11045            .client
11046            .sign_and_dispatch(request)
11047            .await
11048            .map_err(RusotoError::from)?;
11049        if response.status.as_u16() == 202 {
11050            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11051            let result = ::std::mem::drop(response);
11052
11053            Ok(result)
11054        } else {
11055            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11056            Err(DeleteAuthorizerError::from_response(response))
11057        }
11058    }
11059
11060    /// <p>Deletes the <a>BasePathMapping</a> resource.</p>
11061    #[allow(unused_mut)]
11062    async fn delete_base_path_mapping(
11063        &self,
11064        input: DeleteBasePathMappingRequest,
11065    ) -> Result<(), RusotoError<DeleteBasePathMappingError>> {
11066        let request_uri = format!(
11067            "/domainnames/{domain_name}/basepathmappings/{base_path}",
11068            base_path = input.base_path,
11069            domain_name = input.domain_name
11070        );
11071
11072        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11073        request.set_content_type("application/x-amz-json-1.1".to_owned());
11074
11075        let mut response = self
11076            .client
11077            .sign_and_dispatch(request)
11078            .await
11079            .map_err(RusotoError::from)?;
11080        if response.status.as_u16() == 202 {
11081            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11082            let result = ::std::mem::drop(response);
11083
11084            Ok(result)
11085        } else {
11086            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11087            Err(DeleteBasePathMappingError::from_response(response))
11088        }
11089    }
11090
11091    /// <p>Deletes the <a>ClientCertificate</a> resource.</p>
11092    #[allow(unused_mut)]
11093    async fn delete_client_certificate(
11094        &self,
11095        input: DeleteClientCertificateRequest,
11096    ) -> Result<(), RusotoError<DeleteClientCertificateError>> {
11097        let request_uri = format!(
11098            "/clientcertificates/{clientcertificate_id}",
11099            clientcertificate_id = input.client_certificate_id
11100        );
11101
11102        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11103        request.set_content_type("application/x-amz-json-1.1".to_owned());
11104
11105        let mut response = self
11106            .client
11107            .sign_and_dispatch(request)
11108            .await
11109            .map_err(RusotoError::from)?;
11110        if response.status.as_u16() == 202 {
11111            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11112            let result = ::std::mem::drop(response);
11113
11114            Ok(result)
11115        } else {
11116            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11117            Err(DeleteClientCertificateError::from_response(response))
11118        }
11119    }
11120
11121    /// <p>Deletes a <a>Deployment</a> resource. Deleting a deployment will only succeed if there are no <a>Stage</a> resources associated with it.</p>
11122    #[allow(unused_mut)]
11123    async fn delete_deployment(
11124        &self,
11125        input: DeleteDeploymentRequest,
11126    ) -> Result<(), RusotoError<DeleteDeploymentError>> {
11127        let request_uri = format!(
11128            "/restapis/{restapi_id}/deployments/{deployment_id}",
11129            deployment_id = input.deployment_id,
11130            restapi_id = input.rest_api_id
11131        );
11132
11133        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11134        request.set_content_type("application/x-amz-json-1.1".to_owned());
11135
11136        let mut response = self
11137            .client
11138            .sign_and_dispatch(request)
11139            .await
11140            .map_err(RusotoError::from)?;
11141        if response.status.as_u16() == 202 {
11142            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11143            let result = ::std::mem::drop(response);
11144
11145            Ok(result)
11146        } else {
11147            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11148            Err(DeleteDeploymentError::from_response(response))
11149        }
11150    }
11151
11152    #[allow(unused_mut)]
11153    async fn delete_documentation_part(
11154        &self,
11155        input: DeleteDocumentationPartRequest,
11156    ) -> Result<(), RusotoError<DeleteDocumentationPartError>> {
11157        let request_uri = format!(
11158            "/restapis/{restapi_id}/documentation/parts/{part_id}",
11159            part_id = input.documentation_part_id,
11160            restapi_id = input.rest_api_id
11161        );
11162
11163        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11164        request.set_content_type("application/x-amz-json-1.1".to_owned());
11165
11166        let mut response = self
11167            .client
11168            .sign_and_dispatch(request)
11169            .await
11170            .map_err(RusotoError::from)?;
11171        if response.status.as_u16() == 202 {
11172            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11173            let result = ::std::mem::drop(response);
11174
11175            Ok(result)
11176        } else {
11177            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11178            Err(DeleteDocumentationPartError::from_response(response))
11179        }
11180    }
11181
11182    #[allow(unused_mut)]
11183    async fn delete_documentation_version(
11184        &self,
11185        input: DeleteDocumentationVersionRequest,
11186    ) -> Result<(), RusotoError<DeleteDocumentationVersionError>> {
11187        let request_uri = format!(
11188            "/restapis/{restapi_id}/documentation/versions/{doc_version}",
11189            doc_version = input.documentation_version,
11190            restapi_id = input.rest_api_id
11191        );
11192
11193        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11194        request.set_content_type("application/x-amz-json-1.1".to_owned());
11195
11196        let mut response = self
11197            .client
11198            .sign_and_dispatch(request)
11199            .await
11200            .map_err(RusotoError::from)?;
11201        if response.status.as_u16() == 202 {
11202            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11203            let result = ::std::mem::drop(response);
11204
11205            Ok(result)
11206        } else {
11207            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11208            Err(DeleteDocumentationVersionError::from_response(response))
11209        }
11210    }
11211
11212    /// <p>Deletes the <a>DomainName</a> resource.</p>
11213    #[allow(unused_mut)]
11214    async fn delete_domain_name(
11215        &self,
11216        input: DeleteDomainNameRequest,
11217    ) -> Result<(), RusotoError<DeleteDomainNameError>> {
11218        let request_uri = format!(
11219            "/domainnames/{domain_name}",
11220            domain_name = input.domain_name
11221        );
11222
11223        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11224        request.set_content_type("application/x-amz-json-1.1".to_owned());
11225
11226        let mut response = self
11227            .client
11228            .sign_and_dispatch(request)
11229            .await
11230            .map_err(RusotoError::from)?;
11231        if response.status.as_u16() == 202 {
11232            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11233            let result = ::std::mem::drop(response);
11234
11235            Ok(result)
11236        } else {
11237            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11238            Err(DeleteDomainNameError::from_response(response))
11239        }
11240    }
11241
11242    /// <p>Clears any customization of a <a>GatewayResponse</a> of a specified response type on the given <a>RestApi</a> and resets it with the default settings.</p>
11243    #[allow(unused_mut)]
11244    async fn delete_gateway_response(
11245        &self,
11246        input: DeleteGatewayResponseRequest,
11247    ) -> Result<(), RusotoError<DeleteGatewayResponseError>> {
11248        let request_uri = format!(
11249            "/restapis/{restapi_id}/gatewayresponses/{response_type}",
11250            response_type = input.response_type,
11251            restapi_id = input.rest_api_id
11252        );
11253
11254        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11255        request.set_content_type("application/x-amz-json-1.1".to_owned());
11256
11257        let mut response = self
11258            .client
11259            .sign_and_dispatch(request)
11260            .await
11261            .map_err(RusotoError::from)?;
11262        if response.status.as_u16() == 202 {
11263            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11264            let result = ::std::mem::drop(response);
11265
11266            Ok(result)
11267        } else {
11268            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11269            Err(DeleteGatewayResponseError::from_response(response))
11270        }
11271    }
11272
11273    /// <p>Represents a delete integration.</p>
11274    #[allow(unused_mut)]
11275    async fn delete_integration(
11276        &self,
11277        input: DeleteIntegrationRequest,
11278    ) -> Result<(), RusotoError<DeleteIntegrationError>> {
11279        let request_uri = format!(
11280            "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration",
11281            http_method = input.http_method,
11282            resource_id = input.resource_id,
11283            restapi_id = input.rest_api_id
11284        );
11285
11286        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11287        request.set_content_type("application/x-amz-json-1.1".to_owned());
11288
11289        let mut response = self
11290            .client
11291            .sign_and_dispatch(request)
11292            .await
11293            .map_err(RusotoError::from)?;
11294        if response.status.as_u16() == 204 {
11295            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11296            let result = ::std::mem::drop(response);
11297
11298            Ok(result)
11299        } else {
11300            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11301            Err(DeleteIntegrationError::from_response(response))
11302        }
11303    }
11304
11305    /// <p>Represents a delete integration response.</p>
11306    #[allow(unused_mut)]
11307    async fn delete_integration_response(
11308        &self,
11309        input: DeleteIntegrationResponseRequest,
11310    ) -> Result<(), RusotoError<DeleteIntegrationResponseError>> {
11311        let request_uri = format!("/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}", http_method = input.http_method, resource_id = input.resource_id, restapi_id = input.rest_api_id, status_code = input.status_code);
11312
11313        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11314        request.set_content_type("application/x-amz-json-1.1".to_owned());
11315
11316        let mut response = self
11317            .client
11318            .sign_and_dispatch(request)
11319            .await
11320            .map_err(RusotoError::from)?;
11321        if response.status.as_u16() == 204 {
11322            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11323            let result = ::std::mem::drop(response);
11324
11325            Ok(result)
11326        } else {
11327            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11328            Err(DeleteIntegrationResponseError::from_response(response))
11329        }
11330    }
11331
11332    /// <p>Deletes an existing <a>Method</a> resource.</p>
11333    #[allow(unused_mut)]
11334    async fn delete_method(
11335        &self,
11336        input: DeleteMethodRequest,
11337    ) -> Result<(), RusotoError<DeleteMethodError>> {
11338        let request_uri = format!(
11339            "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}",
11340            http_method = input.http_method,
11341            resource_id = input.resource_id,
11342            restapi_id = input.rest_api_id
11343        );
11344
11345        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11346        request.set_content_type("application/x-amz-json-1.1".to_owned());
11347
11348        let mut response = self
11349            .client
11350            .sign_and_dispatch(request)
11351            .await
11352            .map_err(RusotoError::from)?;
11353        if response.status.as_u16() == 204 {
11354            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11355            let result = ::std::mem::drop(response);
11356
11357            Ok(result)
11358        } else {
11359            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11360            Err(DeleteMethodError::from_response(response))
11361        }
11362    }
11363
11364    /// <p>Deletes an existing <a>MethodResponse</a> resource.</p>
11365    #[allow(unused_mut)]
11366    async fn delete_method_response(
11367        &self,
11368        input: DeleteMethodResponseRequest,
11369    ) -> Result<(), RusotoError<DeleteMethodResponseError>> {
11370        let request_uri = format!("/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", http_method = input.http_method, resource_id = input.resource_id, restapi_id = input.rest_api_id, status_code = input.status_code);
11371
11372        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11373        request.set_content_type("application/x-amz-json-1.1".to_owned());
11374
11375        let mut response = self
11376            .client
11377            .sign_and_dispatch(request)
11378            .await
11379            .map_err(RusotoError::from)?;
11380        if response.status.as_u16() == 204 {
11381            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11382            let result = ::std::mem::drop(response);
11383
11384            Ok(result)
11385        } else {
11386            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11387            Err(DeleteMethodResponseError::from_response(response))
11388        }
11389    }
11390
11391    /// <p>Deletes a model.</p>
11392    #[allow(unused_mut)]
11393    async fn delete_model(
11394        &self,
11395        input: DeleteModelRequest,
11396    ) -> Result<(), RusotoError<DeleteModelError>> {
11397        let request_uri = format!(
11398            "/restapis/{restapi_id}/models/{model_name}",
11399            model_name = input.model_name,
11400            restapi_id = input.rest_api_id
11401        );
11402
11403        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11404        request.set_content_type("application/x-amz-json-1.1".to_owned());
11405
11406        let mut response = self
11407            .client
11408            .sign_and_dispatch(request)
11409            .await
11410            .map_err(RusotoError::from)?;
11411        if response.status.as_u16() == 202 {
11412            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11413            let result = ::std::mem::drop(response);
11414
11415            Ok(result)
11416        } else {
11417            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11418            Err(DeleteModelError::from_response(response))
11419        }
11420    }
11421
11422    /// <p>Deletes a <a>RequestValidator</a> of a given <a>RestApi</a>.</p>
11423    #[allow(unused_mut)]
11424    async fn delete_request_validator(
11425        &self,
11426        input: DeleteRequestValidatorRequest,
11427    ) -> Result<(), RusotoError<DeleteRequestValidatorError>> {
11428        let request_uri = format!(
11429            "/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}",
11430            requestvalidator_id = input.request_validator_id,
11431            restapi_id = input.rest_api_id
11432        );
11433
11434        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11435        request.set_content_type("application/x-amz-json-1.1".to_owned());
11436
11437        let mut response = self
11438            .client
11439            .sign_and_dispatch(request)
11440            .await
11441            .map_err(RusotoError::from)?;
11442        if response.status.as_u16() == 202 {
11443            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11444            let result = ::std::mem::drop(response);
11445
11446            Ok(result)
11447        } else {
11448            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11449            Err(DeleteRequestValidatorError::from_response(response))
11450        }
11451    }
11452
11453    /// <p>Deletes a <a>Resource</a> resource.</p>
11454    #[allow(unused_mut)]
11455    async fn delete_resource(
11456        &self,
11457        input: DeleteResourceRequest,
11458    ) -> Result<(), RusotoError<DeleteResourceError>> {
11459        let request_uri = format!(
11460            "/restapis/{restapi_id}/resources/{resource_id}",
11461            resource_id = input.resource_id,
11462            restapi_id = input.rest_api_id
11463        );
11464
11465        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11466        request.set_content_type("application/x-amz-json-1.1".to_owned());
11467
11468        let mut response = self
11469            .client
11470            .sign_and_dispatch(request)
11471            .await
11472            .map_err(RusotoError::from)?;
11473        if response.status.as_u16() == 202 {
11474            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11475            let result = ::std::mem::drop(response);
11476
11477            Ok(result)
11478        } else {
11479            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11480            Err(DeleteResourceError::from_response(response))
11481        }
11482    }
11483
11484    /// <p>Deletes the specified API.</p>
11485    #[allow(unused_mut)]
11486    async fn delete_rest_api(
11487        &self,
11488        input: DeleteRestApiRequest,
11489    ) -> Result<(), RusotoError<DeleteRestApiError>> {
11490        let request_uri = format!("/restapis/{restapi_id}", restapi_id = input.rest_api_id);
11491
11492        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11493        request.set_content_type("application/x-amz-json-1.1".to_owned());
11494
11495        let mut response = self
11496            .client
11497            .sign_and_dispatch(request)
11498            .await
11499            .map_err(RusotoError::from)?;
11500        if response.status.as_u16() == 202 {
11501            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11502            let result = ::std::mem::drop(response);
11503
11504            Ok(result)
11505        } else {
11506            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11507            Err(DeleteRestApiError::from_response(response))
11508        }
11509    }
11510
11511    /// <p>Deletes a <a>Stage</a> resource.</p>
11512    #[allow(unused_mut)]
11513    async fn delete_stage(
11514        &self,
11515        input: DeleteStageRequest,
11516    ) -> Result<(), RusotoError<DeleteStageError>> {
11517        let request_uri = format!(
11518            "/restapis/{restapi_id}/stages/{stage_name}",
11519            restapi_id = input.rest_api_id,
11520            stage_name = input.stage_name
11521        );
11522
11523        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11524        request.set_content_type("application/x-amz-json-1.1".to_owned());
11525
11526        let mut response = self
11527            .client
11528            .sign_and_dispatch(request)
11529            .await
11530            .map_err(RusotoError::from)?;
11531        if response.status.as_u16() == 202 {
11532            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11533            let result = ::std::mem::drop(response);
11534
11535            Ok(result)
11536        } else {
11537            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11538            Err(DeleteStageError::from_response(response))
11539        }
11540    }
11541
11542    /// <p>Deletes a usage plan of a given plan Id.</p>
11543    #[allow(unused_mut)]
11544    async fn delete_usage_plan(
11545        &self,
11546        input: DeleteUsagePlanRequest,
11547    ) -> Result<(), RusotoError<DeleteUsagePlanError>> {
11548        let request_uri = format!(
11549            "/usageplans/{usageplan_id}",
11550            usageplan_id = input.usage_plan_id
11551        );
11552
11553        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11554        request.set_content_type("application/x-amz-json-1.1".to_owned());
11555
11556        let mut response = self
11557            .client
11558            .sign_and_dispatch(request)
11559            .await
11560            .map_err(RusotoError::from)?;
11561        if response.status.as_u16() == 202 {
11562            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11563            let result = ::std::mem::drop(response);
11564
11565            Ok(result)
11566        } else {
11567            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11568            Err(DeleteUsagePlanError::from_response(response))
11569        }
11570    }
11571
11572    /// <p>Deletes a usage plan key and remove the underlying API key from the associated usage plan.</p>
11573    #[allow(unused_mut)]
11574    async fn delete_usage_plan_key(
11575        &self,
11576        input: DeleteUsagePlanKeyRequest,
11577    ) -> Result<(), RusotoError<DeleteUsagePlanKeyError>> {
11578        let request_uri = format!(
11579            "/usageplans/{usageplan_id}/keys/{key_id}",
11580            key_id = input.key_id,
11581            usageplan_id = input.usage_plan_id
11582        );
11583
11584        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11585        request.set_content_type("application/x-amz-json-1.1".to_owned());
11586
11587        let mut response = self
11588            .client
11589            .sign_and_dispatch(request)
11590            .await
11591            .map_err(RusotoError::from)?;
11592        if response.status.as_u16() == 202 {
11593            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11594            let result = ::std::mem::drop(response);
11595
11596            Ok(result)
11597        } else {
11598            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11599            Err(DeleteUsagePlanKeyError::from_response(response))
11600        }
11601    }
11602
11603    /// <p>Deletes an existing <a>VpcLink</a> of a specified identifier.</p>
11604    #[allow(unused_mut)]
11605    async fn delete_vpc_link(
11606        &self,
11607        input: DeleteVpcLinkRequest,
11608    ) -> Result<(), RusotoError<DeleteVpcLinkError>> {
11609        let request_uri = format!("/vpclinks/{vpclink_id}", vpclink_id = input.vpc_link_id);
11610
11611        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11612        request.set_content_type("application/x-amz-json-1.1".to_owned());
11613
11614        let mut response = self
11615            .client
11616            .sign_and_dispatch(request)
11617            .await
11618            .map_err(RusotoError::from)?;
11619        if response.status.as_u16() == 202 {
11620            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11621            let result = ::std::mem::drop(response);
11622
11623            Ok(result)
11624        } else {
11625            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11626            Err(DeleteVpcLinkError::from_response(response))
11627        }
11628    }
11629
11630    /// <p>Flushes all authorizer cache entries on a stage.</p>
11631    #[allow(unused_mut)]
11632    async fn flush_stage_authorizers_cache(
11633        &self,
11634        input: FlushStageAuthorizersCacheRequest,
11635    ) -> Result<(), RusotoError<FlushStageAuthorizersCacheError>> {
11636        let request_uri = format!(
11637            "/restapis/{restapi_id}/stages/{stage_name}/cache/authorizers",
11638            restapi_id = input.rest_api_id,
11639            stage_name = input.stage_name
11640        );
11641
11642        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11643        request.set_content_type("application/x-amz-json-1.1".to_owned());
11644
11645        let mut response = self
11646            .client
11647            .sign_and_dispatch(request)
11648            .await
11649            .map_err(RusotoError::from)?;
11650        if response.status.as_u16() == 202 {
11651            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11652            let result = ::std::mem::drop(response);
11653
11654            Ok(result)
11655        } else {
11656            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11657            Err(FlushStageAuthorizersCacheError::from_response(response))
11658        }
11659    }
11660
11661    /// <p>Flushes a stage's cache.</p>
11662    #[allow(unused_mut)]
11663    async fn flush_stage_cache(
11664        &self,
11665        input: FlushStageCacheRequest,
11666    ) -> Result<(), RusotoError<FlushStageCacheError>> {
11667        let request_uri = format!(
11668            "/restapis/{restapi_id}/stages/{stage_name}/cache/data",
11669            restapi_id = input.rest_api_id,
11670            stage_name = input.stage_name
11671        );
11672
11673        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
11674        request.set_content_type("application/x-amz-json-1.1".to_owned());
11675
11676        let mut response = self
11677            .client
11678            .sign_and_dispatch(request)
11679            .await
11680            .map_err(RusotoError::from)?;
11681        if response.status.as_u16() == 202 {
11682            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11683            let result = ::std::mem::drop(response);
11684
11685            Ok(result)
11686        } else {
11687            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11688            Err(FlushStageCacheError::from_response(response))
11689        }
11690    }
11691
11692    /// <p>Generates a <a>ClientCertificate</a> resource.</p>
11693    #[allow(unused_mut)]
11694    async fn generate_client_certificate(
11695        &self,
11696        input: GenerateClientCertificateRequest,
11697    ) -> Result<ClientCertificate, RusotoError<GenerateClientCertificateError>> {
11698        let request_uri = "/clientcertificates";
11699
11700        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
11701        request.set_content_type("application/x-amz-json-1.1".to_owned());
11702
11703        let encoded = Some(serde_json::to_vec(&input).unwrap());
11704        request.set_payload(encoded);
11705
11706        let mut response = self
11707            .client
11708            .sign_and_dispatch(request)
11709            .await
11710            .map_err(RusotoError::from)?;
11711        if response.status.as_u16() == 201 {
11712            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11713            let result = proto::json::ResponsePayload::new(&response)
11714                .deserialize::<ClientCertificate, _>()?;
11715
11716            Ok(result)
11717        } else {
11718            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11719            Err(GenerateClientCertificateError::from_response(response))
11720        }
11721    }
11722
11723    /// <p>Gets information about the current <a>Account</a> resource.</p>
11724    #[allow(unused_mut)]
11725    async fn get_account(&self) -> Result<Account, RusotoError<GetAccountError>> {
11726        let request_uri = "/account";
11727
11728        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
11729        request.set_content_type("application/x-amz-json-1.1".to_owned());
11730
11731        let mut response = self
11732            .client
11733            .sign_and_dispatch(request)
11734            .await
11735            .map_err(RusotoError::from)?;
11736        if response.status.is_success() {
11737            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11738            let result =
11739                proto::json::ResponsePayload::new(&response).deserialize::<Account, _>()?;
11740
11741            Ok(result)
11742        } else {
11743            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11744            Err(GetAccountError::from_response(response))
11745        }
11746    }
11747
11748    /// <p>Gets information about the current <a>ApiKey</a> resource.</p>
11749    #[allow(unused_mut)]
11750    async fn get_api_key(
11751        &self,
11752        input: GetApiKeyRequest,
11753    ) -> Result<ApiKey, RusotoError<GetApiKeyError>> {
11754        let request_uri = format!("/apikeys/{api_key}", api_key = input.api_key);
11755
11756        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
11757        request.set_content_type("application/x-amz-json-1.1".to_owned());
11758
11759        let mut params = Params::new();
11760        if let Some(ref x) = input.include_value {
11761            params.put("includeValue", x);
11762        }
11763        request.set_params(params);
11764
11765        let mut response = self
11766            .client
11767            .sign_and_dispatch(request)
11768            .await
11769            .map_err(RusotoError::from)?;
11770        if response.status.is_success() {
11771            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11772            let result = proto::json::ResponsePayload::new(&response).deserialize::<ApiKey, _>()?;
11773
11774            Ok(result)
11775        } else {
11776            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11777            Err(GetApiKeyError::from_response(response))
11778        }
11779    }
11780
11781    /// <p>Gets information about the current <a>ApiKeys</a> resource.</p>
11782    #[allow(unused_mut)]
11783    async fn get_api_keys(
11784        &self,
11785        input: GetApiKeysRequest,
11786    ) -> Result<ApiKeys, RusotoError<GetApiKeysError>> {
11787        let request_uri = "/apikeys";
11788
11789        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
11790        request.set_content_type("application/x-amz-json-1.1".to_owned());
11791
11792        let mut params = Params::new();
11793        if let Some(ref x) = input.customer_id {
11794            params.put("customerId", x);
11795        }
11796        if let Some(ref x) = input.include_values {
11797            params.put("includeValues", x);
11798        }
11799        if let Some(ref x) = input.limit {
11800            params.put("limit", x);
11801        }
11802        if let Some(ref x) = input.name_query {
11803            params.put("name", x);
11804        }
11805        if let Some(ref x) = input.position {
11806            params.put("position", x);
11807        }
11808        request.set_params(params);
11809
11810        let mut response = self
11811            .client
11812            .sign_and_dispatch(request)
11813            .await
11814            .map_err(RusotoError::from)?;
11815        if response.status.is_success() {
11816            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11817            let result =
11818                proto::json::ResponsePayload::new(&response).deserialize::<ApiKeys, _>()?;
11819
11820            Ok(result)
11821        } else {
11822            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11823            Err(GetApiKeysError::from_response(response))
11824        }
11825    }
11826
11827    /// <p><p>Describe an existing <a>Authorizer</a> resource.</p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-authorizer.html">AWS CLI</a></div></p>
11828    #[allow(unused_mut)]
11829    async fn get_authorizer(
11830        &self,
11831        input: GetAuthorizerRequest,
11832    ) -> Result<Authorizer, RusotoError<GetAuthorizerError>> {
11833        let request_uri = format!(
11834            "/restapis/{restapi_id}/authorizers/{authorizer_id}",
11835            authorizer_id = input.authorizer_id,
11836            restapi_id = input.rest_api_id
11837        );
11838
11839        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
11840        request.set_content_type("application/x-amz-json-1.1".to_owned());
11841
11842        let mut response = self
11843            .client
11844            .sign_and_dispatch(request)
11845            .await
11846            .map_err(RusotoError::from)?;
11847        if response.status.is_success() {
11848            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11849            let result =
11850                proto::json::ResponsePayload::new(&response).deserialize::<Authorizer, _>()?;
11851
11852            Ok(result)
11853        } else {
11854            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11855            Err(GetAuthorizerError::from_response(response))
11856        }
11857    }
11858
11859    /// <p><p>Describe an existing <a>Authorizers</a> resource.</p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-authorizers.html">AWS CLI</a></div></p>
11860    #[allow(unused_mut)]
11861    async fn get_authorizers(
11862        &self,
11863        input: GetAuthorizersRequest,
11864    ) -> Result<Authorizers, RusotoError<GetAuthorizersError>> {
11865        let request_uri = format!(
11866            "/restapis/{restapi_id}/authorizers",
11867            restapi_id = input.rest_api_id
11868        );
11869
11870        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
11871        request.set_content_type("application/x-amz-json-1.1".to_owned());
11872
11873        let mut params = Params::new();
11874        if let Some(ref x) = input.limit {
11875            params.put("limit", x);
11876        }
11877        if let Some(ref x) = input.position {
11878            params.put("position", x);
11879        }
11880        request.set_params(params);
11881
11882        let mut response = self
11883            .client
11884            .sign_and_dispatch(request)
11885            .await
11886            .map_err(RusotoError::from)?;
11887        if response.status.is_success() {
11888            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11889            let result =
11890                proto::json::ResponsePayload::new(&response).deserialize::<Authorizers, _>()?;
11891
11892            Ok(result)
11893        } else {
11894            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11895            Err(GetAuthorizersError::from_response(response))
11896        }
11897    }
11898
11899    /// <p>Describe a <a>BasePathMapping</a> resource.</p>
11900    #[allow(unused_mut)]
11901    async fn get_base_path_mapping(
11902        &self,
11903        input: GetBasePathMappingRequest,
11904    ) -> Result<BasePathMapping, RusotoError<GetBasePathMappingError>> {
11905        let request_uri = format!(
11906            "/domainnames/{domain_name}/basepathmappings/{base_path}",
11907            base_path = input.base_path,
11908            domain_name = input.domain_name
11909        );
11910
11911        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
11912        request.set_content_type("application/x-amz-json-1.1".to_owned());
11913
11914        let mut response = self
11915            .client
11916            .sign_and_dispatch(request)
11917            .await
11918            .map_err(RusotoError::from)?;
11919        if response.status.is_success() {
11920            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11921            let result =
11922                proto::json::ResponsePayload::new(&response).deserialize::<BasePathMapping, _>()?;
11923
11924            Ok(result)
11925        } else {
11926            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11927            Err(GetBasePathMappingError::from_response(response))
11928        }
11929    }
11930
11931    /// <p>Represents a collection of <a>BasePathMapping</a> resources.</p>
11932    #[allow(unused_mut)]
11933    async fn get_base_path_mappings(
11934        &self,
11935        input: GetBasePathMappingsRequest,
11936    ) -> Result<BasePathMappings, RusotoError<GetBasePathMappingsError>> {
11937        let request_uri = format!(
11938            "/domainnames/{domain_name}/basepathmappings",
11939            domain_name = input.domain_name
11940        );
11941
11942        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
11943        request.set_content_type("application/x-amz-json-1.1".to_owned());
11944
11945        let mut params = Params::new();
11946        if let Some(ref x) = input.limit {
11947            params.put("limit", x);
11948        }
11949        if let Some(ref x) = input.position {
11950            params.put("position", x);
11951        }
11952        request.set_params(params);
11953
11954        let mut response = self
11955            .client
11956            .sign_and_dispatch(request)
11957            .await
11958            .map_err(RusotoError::from)?;
11959        if response.status.is_success() {
11960            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11961            let result = proto::json::ResponsePayload::new(&response)
11962                .deserialize::<BasePathMappings, _>()?;
11963
11964            Ok(result)
11965        } else {
11966            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11967            Err(GetBasePathMappingsError::from_response(response))
11968        }
11969    }
11970
11971    /// <p>Gets information about the current <a>ClientCertificate</a> resource.</p>
11972    #[allow(unused_mut)]
11973    async fn get_client_certificate(
11974        &self,
11975        input: GetClientCertificateRequest,
11976    ) -> Result<ClientCertificate, RusotoError<GetClientCertificateError>> {
11977        let request_uri = format!(
11978            "/clientcertificates/{clientcertificate_id}",
11979            clientcertificate_id = input.client_certificate_id
11980        );
11981
11982        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
11983        request.set_content_type("application/x-amz-json-1.1".to_owned());
11984
11985        let mut response = self
11986            .client
11987            .sign_and_dispatch(request)
11988            .await
11989            .map_err(RusotoError::from)?;
11990        if response.status.is_success() {
11991            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11992            let result = proto::json::ResponsePayload::new(&response)
11993                .deserialize::<ClientCertificate, _>()?;
11994
11995            Ok(result)
11996        } else {
11997            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11998            Err(GetClientCertificateError::from_response(response))
11999        }
12000    }
12001
12002    /// <p>Gets a collection of <a>ClientCertificate</a> resources.</p>
12003    #[allow(unused_mut)]
12004    async fn get_client_certificates(
12005        &self,
12006        input: GetClientCertificatesRequest,
12007    ) -> Result<ClientCertificates, RusotoError<GetClientCertificatesError>> {
12008        let request_uri = "/clientcertificates";
12009
12010        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12011        request.set_content_type("application/x-amz-json-1.1".to_owned());
12012
12013        let mut params = Params::new();
12014        if let Some(ref x) = input.limit {
12015            params.put("limit", x);
12016        }
12017        if let Some(ref x) = input.position {
12018            params.put("position", x);
12019        }
12020        request.set_params(params);
12021
12022        let mut response = self
12023            .client
12024            .sign_and_dispatch(request)
12025            .await
12026            .map_err(RusotoError::from)?;
12027        if response.status.is_success() {
12028            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12029            let result = proto::json::ResponsePayload::new(&response)
12030                .deserialize::<ClientCertificates, _>()?;
12031
12032            Ok(result)
12033        } else {
12034            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12035            Err(GetClientCertificatesError::from_response(response))
12036        }
12037    }
12038
12039    /// <p>Gets information about a <a>Deployment</a> resource.</p>
12040    #[allow(unused_mut)]
12041    async fn get_deployment(
12042        &self,
12043        input: GetDeploymentRequest,
12044    ) -> Result<Deployment, RusotoError<GetDeploymentError>> {
12045        let request_uri = format!(
12046            "/restapis/{restapi_id}/deployments/{deployment_id}",
12047            deployment_id = input.deployment_id,
12048            restapi_id = input.rest_api_id
12049        );
12050
12051        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12052        request.set_content_type("application/x-amz-json-1.1".to_owned());
12053
12054        let mut params = Params::new();
12055        if let Some(ref x) = input.embed {
12056            for item in x.iter() {
12057                params.put("embed", item);
12058            }
12059        }
12060        request.set_params(params);
12061
12062        let mut response = self
12063            .client
12064            .sign_and_dispatch(request)
12065            .await
12066            .map_err(RusotoError::from)?;
12067        if response.status.is_success() {
12068            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12069            let result =
12070                proto::json::ResponsePayload::new(&response).deserialize::<Deployment, _>()?;
12071
12072            Ok(result)
12073        } else {
12074            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12075            Err(GetDeploymentError::from_response(response))
12076        }
12077    }
12078
12079    /// <p>Gets information about a <a>Deployments</a> collection.</p>
12080    #[allow(unused_mut)]
12081    async fn get_deployments(
12082        &self,
12083        input: GetDeploymentsRequest,
12084    ) -> Result<Deployments, RusotoError<GetDeploymentsError>> {
12085        let request_uri = format!(
12086            "/restapis/{restapi_id}/deployments",
12087            restapi_id = input.rest_api_id
12088        );
12089
12090        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12091        request.set_content_type("application/x-amz-json-1.1".to_owned());
12092
12093        let mut params = Params::new();
12094        if let Some(ref x) = input.limit {
12095            params.put("limit", x);
12096        }
12097        if let Some(ref x) = input.position {
12098            params.put("position", x);
12099        }
12100        request.set_params(params);
12101
12102        let mut response = self
12103            .client
12104            .sign_and_dispatch(request)
12105            .await
12106            .map_err(RusotoError::from)?;
12107        if response.status.is_success() {
12108            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12109            let result =
12110                proto::json::ResponsePayload::new(&response).deserialize::<Deployments, _>()?;
12111
12112            Ok(result)
12113        } else {
12114            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12115            Err(GetDeploymentsError::from_response(response))
12116        }
12117    }
12118
12119    #[allow(unused_mut)]
12120    async fn get_documentation_part(
12121        &self,
12122        input: GetDocumentationPartRequest,
12123    ) -> Result<DocumentationPart, RusotoError<GetDocumentationPartError>> {
12124        let request_uri = format!(
12125            "/restapis/{restapi_id}/documentation/parts/{part_id}",
12126            part_id = input.documentation_part_id,
12127            restapi_id = input.rest_api_id
12128        );
12129
12130        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12131        request.set_content_type("application/x-amz-json-1.1".to_owned());
12132
12133        let mut response = self
12134            .client
12135            .sign_and_dispatch(request)
12136            .await
12137            .map_err(RusotoError::from)?;
12138        if response.status.is_success() {
12139            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12140            let result = proto::json::ResponsePayload::new(&response)
12141                .deserialize::<DocumentationPart, _>()?;
12142
12143            Ok(result)
12144        } else {
12145            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12146            Err(GetDocumentationPartError::from_response(response))
12147        }
12148    }
12149
12150    #[allow(unused_mut)]
12151    async fn get_documentation_parts(
12152        &self,
12153        input: GetDocumentationPartsRequest,
12154    ) -> Result<DocumentationParts, RusotoError<GetDocumentationPartsError>> {
12155        let request_uri = format!(
12156            "/restapis/{restapi_id}/documentation/parts",
12157            restapi_id = input.rest_api_id
12158        );
12159
12160        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12161        request.set_content_type("application/x-amz-json-1.1".to_owned());
12162
12163        let mut params = Params::new();
12164        if let Some(ref x) = input.limit {
12165            params.put("limit", x);
12166        }
12167        if let Some(ref x) = input.location_status {
12168            params.put("locationStatus", x);
12169        }
12170        if let Some(ref x) = input.name_query {
12171            params.put("name", x);
12172        }
12173        if let Some(ref x) = input.path {
12174            params.put("path", x);
12175        }
12176        if let Some(ref x) = input.position {
12177            params.put("position", x);
12178        }
12179        if let Some(ref x) = input.type_ {
12180            params.put("type", x);
12181        }
12182        request.set_params(params);
12183
12184        let mut response = self
12185            .client
12186            .sign_and_dispatch(request)
12187            .await
12188            .map_err(RusotoError::from)?;
12189        if response.status.is_success() {
12190            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12191            let result = proto::json::ResponsePayload::new(&response)
12192                .deserialize::<DocumentationParts, _>()?;
12193
12194            Ok(result)
12195        } else {
12196            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12197            Err(GetDocumentationPartsError::from_response(response))
12198        }
12199    }
12200
12201    #[allow(unused_mut)]
12202    async fn get_documentation_version(
12203        &self,
12204        input: GetDocumentationVersionRequest,
12205    ) -> Result<DocumentationVersion, RusotoError<GetDocumentationVersionError>> {
12206        let request_uri = format!(
12207            "/restapis/{restapi_id}/documentation/versions/{doc_version}",
12208            doc_version = input.documentation_version,
12209            restapi_id = input.rest_api_id
12210        );
12211
12212        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12213        request.set_content_type("application/x-amz-json-1.1".to_owned());
12214
12215        let mut response = self
12216            .client
12217            .sign_and_dispatch(request)
12218            .await
12219            .map_err(RusotoError::from)?;
12220        if response.status.is_success() {
12221            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12222            let result = proto::json::ResponsePayload::new(&response)
12223                .deserialize::<DocumentationVersion, _>()?;
12224
12225            Ok(result)
12226        } else {
12227            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12228            Err(GetDocumentationVersionError::from_response(response))
12229        }
12230    }
12231
12232    #[allow(unused_mut)]
12233    async fn get_documentation_versions(
12234        &self,
12235        input: GetDocumentationVersionsRequest,
12236    ) -> Result<DocumentationVersions, RusotoError<GetDocumentationVersionsError>> {
12237        let request_uri = format!(
12238            "/restapis/{restapi_id}/documentation/versions",
12239            restapi_id = input.rest_api_id
12240        );
12241
12242        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12243        request.set_content_type("application/x-amz-json-1.1".to_owned());
12244
12245        let mut params = Params::new();
12246        if let Some(ref x) = input.limit {
12247            params.put("limit", x);
12248        }
12249        if let Some(ref x) = input.position {
12250            params.put("position", x);
12251        }
12252        request.set_params(params);
12253
12254        let mut response = self
12255            .client
12256            .sign_and_dispatch(request)
12257            .await
12258            .map_err(RusotoError::from)?;
12259        if response.status.is_success() {
12260            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12261            let result = proto::json::ResponsePayload::new(&response)
12262                .deserialize::<DocumentationVersions, _>()?;
12263
12264            Ok(result)
12265        } else {
12266            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12267            Err(GetDocumentationVersionsError::from_response(response))
12268        }
12269    }
12270
12271    /// <p>Represents a domain name that is contained in a simpler, more intuitive URL that can be called.</p>
12272    #[allow(unused_mut)]
12273    async fn get_domain_name(
12274        &self,
12275        input: GetDomainNameRequest,
12276    ) -> Result<DomainName, RusotoError<GetDomainNameError>> {
12277        let request_uri = format!(
12278            "/domainnames/{domain_name}",
12279            domain_name = input.domain_name
12280        );
12281
12282        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12283        request.set_content_type("application/x-amz-json-1.1".to_owned());
12284
12285        let mut response = self
12286            .client
12287            .sign_and_dispatch(request)
12288            .await
12289            .map_err(RusotoError::from)?;
12290        if response.status.is_success() {
12291            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12292            let result =
12293                proto::json::ResponsePayload::new(&response).deserialize::<DomainName, _>()?;
12294
12295            Ok(result)
12296        } else {
12297            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12298            Err(GetDomainNameError::from_response(response))
12299        }
12300    }
12301
12302    /// <p>Represents a collection of <a>DomainName</a> resources.</p>
12303    #[allow(unused_mut)]
12304    async fn get_domain_names(
12305        &self,
12306        input: GetDomainNamesRequest,
12307    ) -> Result<DomainNames, RusotoError<GetDomainNamesError>> {
12308        let request_uri = "/domainnames";
12309
12310        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12311        request.set_content_type("application/x-amz-json-1.1".to_owned());
12312
12313        let mut params = Params::new();
12314        if let Some(ref x) = input.limit {
12315            params.put("limit", x);
12316        }
12317        if let Some(ref x) = input.position {
12318            params.put("position", x);
12319        }
12320        request.set_params(params);
12321
12322        let mut response = self
12323            .client
12324            .sign_and_dispatch(request)
12325            .await
12326            .map_err(RusotoError::from)?;
12327        if response.status.is_success() {
12328            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12329            let result =
12330                proto::json::ResponsePayload::new(&response).deserialize::<DomainNames, _>()?;
12331
12332            Ok(result)
12333        } else {
12334            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12335            Err(GetDomainNamesError::from_response(response))
12336        }
12337    }
12338
12339    /// <p>Exports a deployed version of a <a>RestApi</a> in a specified format.</p>
12340    #[allow(unused_mut)]
12341    async fn get_export(
12342        &self,
12343        input: GetExportRequest,
12344    ) -> Result<ExportResponse, RusotoError<GetExportError>> {
12345        let request_uri = format!(
12346            "/restapis/{restapi_id}/stages/{stage_name}/exports/{export_type}",
12347            export_type = input.export_type,
12348            restapi_id = input.rest_api_id,
12349            stage_name = input.stage_name
12350        );
12351
12352        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12353        request.set_content_type("application/x-amz-json-1.1".to_owned());
12354
12355        request.add_optional_header("Accept", input.accepts.as_ref());
12356        let mut params = Params::new();
12357        if let Some(ref x) = input.parameters {
12358            for (key, val) in x.iter() {
12359                params.put(key, val);
12360            }
12361        }
12362        request.set_params(params);
12363
12364        let mut response = self
12365            .client
12366            .sign_and_dispatch(request)
12367            .await
12368            .map_err(RusotoError::from)?;
12369        if response.status.as_u16() == 200 {
12370            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12371
12372            let mut result = ExportResponse::default();
12373            result.body = Some(response.body);
12374
12375            result.content_disposition = response.headers.remove("Content-Disposition");
12376            result.content_type = response.headers.remove("Content-Type");
12377
12378            Ok(result)
12379        } else {
12380            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12381            Err(GetExportError::from_response(response))
12382        }
12383    }
12384
12385    /// <p>Gets a <a>GatewayResponse</a> of a specified response type on the given <a>RestApi</a>.</p>
12386    #[allow(unused_mut)]
12387    async fn get_gateway_response(
12388        &self,
12389        input: GetGatewayResponseRequest,
12390    ) -> Result<GatewayResponse, RusotoError<GetGatewayResponseError>> {
12391        let request_uri = format!(
12392            "/restapis/{restapi_id}/gatewayresponses/{response_type}",
12393            response_type = input.response_type,
12394            restapi_id = input.rest_api_id
12395        );
12396
12397        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12398        request.set_content_type("application/x-amz-json-1.1".to_owned());
12399
12400        let mut response = self
12401            .client
12402            .sign_and_dispatch(request)
12403            .await
12404            .map_err(RusotoError::from)?;
12405        if response.status.is_success() {
12406            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12407            let result =
12408                proto::json::ResponsePayload::new(&response).deserialize::<GatewayResponse, _>()?;
12409
12410            Ok(result)
12411        } else {
12412            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12413            Err(GetGatewayResponseError::from_response(response))
12414        }
12415    }
12416
12417    /// <p>Gets the <a>GatewayResponses</a> collection on the given <a>RestApi</a>. If an API developer has not added any definitions for gateway responses, the result will be the API Gateway-generated default <a>GatewayResponses</a> collection for the supported response types.</p>
12418    #[allow(unused_mut)]
12419    async fn get_gateway_responses(
12420        &self,
12421        input: GetGatewayResponsesRequest,
12422    ) -> Result<GatewayResponses, RusotoError<GetGatewayResponsesError>> {
12423        let request_uri = format!(
12424            "/restapis/{restapi_id}/gatewayresponses",
12425            restapi_id = input.rest_api_id
12426        );
12427
12428        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12429        request.set_content_type("application/x-amz-json-1.1".to_owned());
12430
12431        let mut params = Params::new();
12432        if let Some(ref x) = input.limit {
12433            params.put("limit", x);
12434        }
12435        if let Some(ref x) = input.position {
12436            params.put("position", x);
12437        }
12438        request.set_params(params);
12439
12440        let mut response = self
12441            .client
12442            .sign_and_dispatch(request)
12443            .await
12444            .map_err(RusotoError::from)?;
12445        if response.status.is_success() {
12446            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12447            let result = proto::json::ResponsePayload::new(&response)
12448                .deserialize::<GatewayResponses, _>()?;
12449
12450            Ok(result)
12451        } else {
12452            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12453            Err(GetGatewayResponsesError::from_response(response))
12454        }
12455    }
12456
12457    /// <p>Get the integration settings.</p>
12458    #[allow(unused_mut)]
12459    async fn get_integration(
12460        &self,
12461        input: GetIntegrationRequest,
12462    ) -> Result<Integration, RusotoError<GetIntegrationError>> {
12463        let request_uri = format!(
12464            "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration",
12465            http_method = input.http_method,
12466            resource_id = input.resource_id,
12467            restapi_id = input.rest_api_id
12468        );
12469
12470        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12471        request.set_content_type("application/x-amz-json-1.1".to_owned());
12472
12473        let mut response = self
12474            .client
12475            .sign_and_dispatch(request)
12476            .await
12477            .map_err(RusotoError::from)?;
12478        if response.status.is_success() {
12479            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12480            let result =
12481                proto::json::ResponsePayload::new(&response).deserialize::<Integration, _>()?;
12482
12483            Ok(result)
12484        } else {
12485            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12486            Err(GetIntegrationError::from_response(response))
12487        }
12488    }
12489
12490    /// <p>Represents a get integration response.</p>
12491    #[allow(unused_mut)]
12492    async fn get_integration_response(
12493        &self,
12494        input: GetIntegrationResponseRequest,
12495    ) -> Result<IntegrationResponse, RusotoError<GetIntegrationResponseError>> {
12496        let request_uri = format!("/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}", http_method = input.http_method, resource_id = input.resource_id, restapi_id = input.rest_api_id, status_code = input.status_code);
12497
12498        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12499        request.set_content_type("application/x-amz-json-1.1".to_owned());
12500
12501        let mut response = self
12502            .client
12503            .sign_and_dispatch(request)
12504            .await
12505            .map_err(RusotoError::from)?;
12506        if response.status.is_success() {
12507            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12508            let result = proto::json::ResponsePayload::new(&response)
12509                .deserialize::<IntegrationResponse, _>()?;
12510
12511            Ok(result)
12512        } else {
12513            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12514            Err(GetIntegrationResponseError::from_response(response))
12515        }
12516    }
12517
12518    /// <p>Describe an existing <a>Method</a> resource.</p>
12519    #[allow(unused_mut)]
12520    async fn get_method(
12521        &self,
12522        input: GetMethodRequest,
12523    ) -> Result<Method, RusotoError<GetMethodError>> {
12524        let request_uri = format!(
12525            "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}",
12526            http_method = input.http_method,
12527            resource_id = input.resource_id,
12528            restapi_id = input.rest_api_id
12529        );
12530
12531        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12532        request.set_content_type("application/x-amz-json-1.1".to_owned());
12533
12534        let mut response = self
12535            .client
12536            .sign_and_dispatch(request)
12537            .await
12538            .map_err(RusotoError::from)?;
12539        if response.status.is_success() {
12540            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12541            let result = proto::json::ResponsePayload::new(&response).deserialize::<Method, _>()?;
12542
12543            Ok(result)
12544        } else {
12545            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12546            Err(GetMethodError::from_response(response))
12547        }
12548    }
12549
12550    /// <p>Describes a <a>MethodResponse</a> resource.</p>
12551    #[allow(unused_mut)]
12552    async fn get_method_response(
12553        &self,
12554        input: GetMethodResponseRequest,
12555    ) -> Result<MethodResponse, RusotoError<GetMethodResponseError>> {
12556        let request_uri = format!("/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", http_method = input.http_method, resource_id = input.resource_id, restapi_id = input.rest_api_id, status_code = input.status_code);
12557
12558        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12559        request.set_content_type("application/x-amz-json-1.1".to_owned());
12560
12561        let mut response = self
12562            .client
12563            .sign_and_dispatch(request)
12564            .await
12565            .map_err(RusotoError::from)?;
12566        if response.status.is_success() {
12567            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12568            let result =
12569                proto::json::ResponsePayload::new(&response).deserialize::<MethodResponse, _>()?;
12570
12571            Ok(result)
12572        } else {
12573            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12574            Err(GetMethodResponseError::from_response(response))
12575        }
12576    }
12577
12578    /// <p>Describes an existing model defined for a <a>RestApi</a> resource.</p>
12579    #[allow(unused_mut)]
12580    async fn get_model(&self, input: GetModelRequest) -> Result<Model, RusotoError<GetModelError>> {
12581        let request_uri = format!(
12582            "/restapis/{restapi_id}/models/{model_name}",
12583            model_name = input.model_name,
12584            restapi_id = input.rest_api_id
12585        );
12586
12587        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12588        request.set_content_type("application/x-amz-json-1.1".to_owned());
12589
12590        let mut params = Params::new();
12591        if let Some(ref x) = input.flatten {
12592            params.put("flatten", x);
12593        }
12594        request.set_params(params);
12595
12596        let mut response = self
12597            .client
12598            .sign_and_dispatch(request)
12599            .await
12600            .map_err(RusotoError::from)?;
12601        if response.status.is_success() {
12602            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12603            let result = proto::json::ResponsePayload::new(&response).deserialize::<Model, _>()?;
12604
12605            Ok(result)
12606        } else {
12607            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12608            Err(GetModelError::from_response(response))
12609        }
12610    }
12611
12612    /// <p>Generates a sample mapping template that can be used to transform a payload into the structure of a model.</p>
12613    #[allow(unused_mut)]
12614    async fn get_model_template(
12615        &self,
12616        input: GetModelTemplateRequest,
12617    ) -> Result<Template, RusotoError<GetModelTemplateError>> {
12618        let request_uri = format!(
12619            "/restapis/{restapi_id}/models/{model_name}/default_template",
12620            model_name = input.model_name,
12621            restapi_id = input.rest_api_id
12622        );
12623
12624        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12625        request.set_content_type("application/x-amz-json-1.1".to_owned());
12626
12627        let mut response = self
12628            .client
12629            .sign_and_dispatch(request)
12630            .await
12631            .map_err(RusotoError::from)?;
12632        if response.status.is_success() {
12633            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12634            let result =
12635                proto::json::ResponsePayload::new(&response).deserialize::<Template, _>()?;
12636
12637            Ok(result)
12638        } else {
12639            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12640            Err(GetModelTemplateError::from_response(response))
12641        }
12642    }
12643
12644    /// <p>Describes existing <a>Models</a> defined for a <a>RestApi</a> resource.</p>
12645    #[allow(unused_mut)]
12646    async fn get_models(
12647        &self,
12648        input: GetModelsRequest,
12649    ) -> Result<Models, RusotoError<GetModelsError>> {
12650        let request_uri = format!(
12651            "/restapis/{restapi_id}/models",
12652            restapi_id = input.rest_api_id
12653        );
12654
12655        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12656        request.set_content_type("application/x-amz-json-1.1".to_owned());
12657
12658        let mut params = Params::new();
12659        if let Some(ref x) = input.limit {
12660            params.put("limit", x);
12661        }
12662        if let Some(ref x) = input.position {
12663            params.put("position", x);
12664        }
12665        request.set_params(params);
12666
12667        let mut response = self
12668            .client
12669            .sign_and_dispatch(request)
12670            .await
12671            .map_err(RusotoError::from)?;
12672        if response.status.is_success() {
12673            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12674            let result = proto::json::ResponsePayload::new(&response).deserialize::<Models, _>()?;
12675
12676            Ok(result)
12677        } else {
12678            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12679            Err(GetModelsError::from_response(response))
12680        }
12681    }
12682
12683    /// <p>Gets a <a>RequestValidator</a> of a given <a>RestApi</a>.</p>
12684    #[allow(unused_mut)]
12685    async fn get_request_validator(
12686        &self,
12687        input: GetRequestValidatorRequest,
12688    ) -> Result<RequestValidator, RusotoError<GetRequestValidatorError>> {
12689        let request_uri = format!(
12690            "/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}",
12691            requestvalidator_id = input.request_validator_id,
12692            restapi_id = input.rest_api_id
12693        );
12694
12695        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12696        request.set_content_type("application/x-amz-json-1.1".to_owned());
12697
12698        let mut response = self
12699            .client
12700            .sign_and_dispatch(request)
12701            .await
12702            .map_err(RusotoError::from)?;
12703        if response.status.is_success() {
12704            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12705            let result = proto::json::ResponsePayload::new(&response)
12706                .deserialize::<RequestValidator, _>()?;
12707
12708            Ok(result)
12709        } else {
12710            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12711            Err(GetRequestValidatorError::from_response(response))
12712        }
12713    }
12714
12715    /// <p>Gets the <a>RequestValidators</a> collection of a given <a>RestApi</a>.</p>
12716    #[allow(unused_mut)]
12717    async fn get_request_validators(
12718        &self,
12719        input: GetRequestValidatorsRequest,
12720    ) -> Result<RequestValidators, RusotoError<GetRequestValidatorsError>> {
12721        let request_uri = format!(
12722            "/restapis/{restapi_id}/requestvalidators",
12723            restapi_id = input.rest_api_id
12724        );
12725
12726        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12727        request.set_content_type("application/x-amz-json-1.1".to_owned());
12728
12729        let mut params = Params::new();
12730        if let Some(ref x) = input.limit {
12731            params.put("limit", x);
12732        }
12733        if let Some(ref x) = input.position {
12734            params.put("position", x);
12735        }
12736        request.set_params(params);
12737
12738        let mut response = self
12739            .client
12740            .sign_and_dispatch(request)
12741            .await
12742            .map_err(RusotoError::from)?;
12743        if response.status.is_success() {
12744            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12745            let result = proto::json::ResponsePayload::new(&response)
12746                .deserialize::<RequestValidators, _>()?;
12747
12748            Ok(result)
12749        } else {
12750            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12751            Err(GetRequestValidatorsError::from_response(response))
12752        }
12753    }
12754
12755    /// <p>Lists information about a resource.</p>
12756    #[allow(unused_mut)]
12757    async fn get_resource(
12758        &self,
12759        input: GetResourceRequest,
12760    ) -> Result<Resource, RusotoError<GetResourceError>> {
12761        let request_uri = format!(
12762            "/restapis/{restapi_id}/resources/{resource_id}",
12763            resource_id = input.resource_id,
12764            restapi_id = input.rest_api_id
12765        );
12766
12767        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12768        request.set_content_type("application/x-amz-json-1.1".to_owned());
12769
12770        let mut params = Params::new();
12771        if let Some(ref x) = input.embed {
12772            for item in x.iter() {
12773                params.put("embed", item);
12774            }
12775        }
12776        request.set_params(params);
12777
12778        let mut response = self
12779            .client
12780            .sign_and_dispatch(request)
12781            .await
12782            .map_err(RusotoError::from)?;
12783        if response.status.is_success() {
12784            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12785            let result =
12786                proto::json::ResponsePayload::new(&response).deserialize::<Resource, _>()?;
12787
12788            Ok(result)
12789        } else {
12790            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12791            Err(GetResourceError::from_response(response))
12792        }
12793    }
12794
12795    /// <p>Lists information about a collection of <a>Resource</a> resources.</p>
12796    #[allow(unused_mut)]
12797    async fn get_resources(
12798        &self,
12799        input: GetResourcesRequest,
12800    ) -> Result<Resources, RusotoError<GetResourcesError>> {
12801        let request_uri = format!(
12802            "/restapis/{restapi_id}/resources",
12803            restapi_id = input.rest_api_id
12804        );
12805
12806        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12807        request.set_content_type("application/x-amz-json-1.1".to_owned());
12808
12809        let mut params = Params::new();
12810        if let Some(ref x) = input.embed {
12811            for item in x.iter() {
12812                params.put("embed", item);
12813            }
12814        }
12815        if let Some(ref x) = input.limit {
12816            params.put("limit", x);
12817        }
12818        if let Some(ref x) = input.position {
12819            params.put("position", x);
12820        }
12821        request.set_params(params);
12822
12823        let mut response = self
12824            .client
12825            .sign_and_dispatch(request)
12826            .await
12827            .map_err(RusotoError::from)?;
12828        if response.status.is_success() {
12829            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12830            let result =
12831                proto::json::ResponsePayload::new(&response).deserialize::<Resources, _>()?;
12832
12833            Ok(result)
12834        } else {
12835            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12836            Err(GetResourcesError::from_response(response))
12837        }
12838    }
12839
12840    /// <p>Lists the <a>RestApi</a> resource in the collection.</p>
12841    #[allow(unused_mut)]
12842    async fn get_rest_api(
12843        &self,
12844        input: GetRestApiRequest,
12845    ) -> Result<RestApi, RusotoError<GetRestApiError>> {
12846        let request_uri = format!("/restapis/{restapi_id}", restapi_id = input.rest_api_id);
12847
12848        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12849        request.set_content_type("application/x-amz-json-1.1".to_owned());
12850
12851        let mut response = self
12852            .client
12853            .sign_and_dispatch(request)
12854            .await
12855            .map_err(RusotoError::from)?;
12856        if response.status.is_success() {
12857            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12858            let result =
12859                proto::json::ResponsePayload::new(&response).deserialize::<RestApi, _>()?;
12860
12861            Ok(result)
12862        } else {
12863            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12864            Err(GetRestApiError::from_response(response))
12865        }
12866    }
12867
12868    /// <p>Lists the <a>RestApis</a> resources for your collection.</p>
12869    #[allow(unused_mut)]
12870    async fn get_rest_apis(
12871        &self,
12872        input: GetRestApisRequest,
12873    ) -> Result<RestApis, RusotoError<GetRestApisError>> {
12874        let request_uri = "/restapis";
12875
12876        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12877        request.set_content_type("application/x-amz-json-1.1".to_owned());
12878
12879        let mut params = Params::new();
12880        if let Some(ref x) = input.limit {
12881            params.put("limit", x);
12882        }
12883        if let Some(ref x) = input.position {
12884            params.put("position", x);
12885        }
12886        request.set_params(params);
12887
12888        let mut response = self
12889            .client
12890            .sign_and_dispatch(request)
12891            .await
12892            .map_err(RusotoError::from)?;
12893        if response.status.is_success() {
12894            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12895            let result =
12896                proto::json::ResponsePayload::new(&response).deserialize::<RestApis, _>()?;
12897
12898            Ok(result)
12899        } else {
12900            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12901            Err(GetRestApisError::from_response(response))
12902        }
12903    }
12904
12905    /// <p>Generates a client SDK for a <a>RestApi</a> and <a>Stage</a>.</p>
12906    #[allow(unused_mut)]
12907    async fn get_sdk(&self, input: GetSdkRequest) -> Result<SdkResponse, RusotoError<GetSdkError>> {
12908        let request_uri = format!(
12909            "/restapis/{restapi_id}/stages/{stage_name}/sdks/{sdk_type}",
12910            restapi_id = input.rest_api_id,
12911            sdk_type = input.sdk_type,
12912            stage_name = input.stage_name
12913        );
12914
12915        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12916        request.set_content_type("application/x-amz-json-1.1".to_owned());
12917
12918        let mut params = Params::new();
12919        if let Some(ref x) = input.parameters {
12920            for (key, val) in x.iter() {
12921                params.put(key, val);
12922            }
12923        }
12924        request.set_params(params);
12925
12926        let mut response = self
12927            .client
12928            .sign_and_dispatch(request)
12929            .await
12930            .map_err(RusotoError::from)?;
12931        if response.status.as_u16() == 200 {
12932            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12933
12934            let mut result = SdkResponse::default();
12935            result.body = Some(response.body);
12936
12937            result.content_disposition = response.headers.remove("Content-Disposition");
12938            result.content_type = response.headers.remove("Content-Type");
12939
12940            Ok(result)
12941        } else {
12942            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12943            Err(GetSdkError::from_response(response))
12944        }
12945    }
12946
12947    #[allow(unused_mut)]
12948    async fn get_sdk_type(
12949        &self,
12950        input: GetSdkTypeRequest,
12951    ) -> Result<SdkType, RusotoError<GetSdkTypeError>> {
12952        let request_uri = format!("/sdktypes/{sdktype_id}", sdktype_id = input.id);
12953
12954        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12955        request.set_content_type("application/x-amz-json-1.1".to_owned());
12956
12957        let mut response = self
12958            .client
12959            .sign_and_dispatch(request)
12960            .await
12961            .map_err(RusotoError::from)?;
12962        if response.status.is_success() {
12963            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12964            let result =
12965                proto::json::ResponsePayload::new(&response).deserialize::<SdkType, _>()?;
12966
12967            Ok(result)
12968        } else {
12969            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
12970            Err(GetSdkTypeError::from_response(response))
12971        }
12972    }
12973
12974    #[allow(unused_mut)]
12975    async fn get_sdk_types(
12976        &self,
12977        input: GetSdkTypesRequest,
12978    ) -> Result<SdkTypes, RusotoError<GetSdkTypesError>> {
12979        let request_uri = "/sdktypes";
12980
12981        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
12982        request.set_content_type("application/x-amz-json-1.1".to_owned());
12983
12984        let mut params = Params::new();
12985        if let Some(ref x) = input.limit {
12986            params.put("limit", x);
12987        }
12988        if let Some(ref x) = input.position {
12989            params.put("position", x);
12990        }
12991        request.set_params(params);
12992
12993        let mut response = self
12994            .client
12995            .sign_and_dispatch(request)
12996            .await
12997            .map_err(RusotoError::from)?;
12998        if response.status.is_success() {
12999            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13000            let result =
13001                proto::json::ResponsePayload::new(&response).deserialize::<SdkTypes, _>()?;
13002
13003            Ok(result)
13004        } else {
13005            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13006            Err(GetSdkTypesError::from_response(response))
13007        }
13008    }
13009
13010    /// <p>Gets information about a <a>Stage</a> resource.</p>
13011    #[allow(unused_mut)]
13012    async fn get_stage(&self, input: GetStageRequest) -> Result<Stage, RusotoError<GetStageError>> {
13013        let request_uri = format!(
13014            "/restapis/{restapi_id}/stages/{stage_name}",
13015            restapi_id = input.rest_api_id,
13016            stage_name = input.stage_name
13017        );
13018
13019        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
13020        request.set_content_type("application/x-amz-json-1.1".to_owned());
13021
13022        let mut response = self
13023            .client
13024            .sign_and_dispatch(request)
13025            .await
13026            .map_err(RusotoError::from)?;
13027        if response.status.is_success() {
13028            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13029            let result = proto::json::ResponsePayload::new(&response).deserialize::<Stage, _>()?;
13030
13031            Ok(result)
13032        } else {
13033            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13034            Err(GetStageError::from_response(response))
13035        }
13036    }
13037
13038    /// <p>Gets information about one or more <a>Stage</a> resources.</p>
13039    #[allow(unused_mut)]
13040    async fn get_stages(
13041        &self,
13042        input: GetStagesRequest,
13043    ) -> Result<Stages, RusotoError<GetStagesError>> {
13044        let request_uri = format!(
13045            "/restapis/{restapi_id}/stages",
13046            restapi_id = input.rest_api_id
13047        );
13048
13049        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
13050        request.set_content_type("application/x-amz-json-1.1".to_owned());
13051
13052        let mut params = Params::new();
13053        if let Some(ref x) = input.deployment_id {
13054            params.put("deploymentId", x);
13055        }
13056        request.set_params(params);
13057
13058        let mut response = self
13059            .client
13060            .sign_and_dispatch(request)
13061            .await
13062            .map_err(RusotoError::from)?;
13063        if response.status.is_success() {
13064            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13065            let result = proto::json::ResponsePayload::new(&response).deserialize::<Stages, _>()?;
13066
13067            Ok(result)
13068        } else {
13069            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13070            Err(GetStagesError::from_response(response))
13071        }
13072    }
13073
13074    /// <p>Gets the <a>Tags</a> collection for a given resource.</p>
13075    #[allow(unused_mut)]
13076    async fn get_tags(&self, input: GetTagsRequest) -> Result<Tags, RusotoError<GetTagsError>> {
13077        let request_uri = format!("/tags/{resource_arn}", resource_arn = input.resource_arn);
13078
13079        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
13080        request.set_content_type("application/x-amz-json-1.1".to_owned());
13081
13082        let mut params = Params::new();
13083        if let Some(ref x) = input.limit {
13084            params.put("limit", x);
13085        }
13086        if let Some(ref x) = input.position {
13087            params.put("position", x);
13088        }
13089        request.set_params(params);
13090
13091        let mut response = self
13092            .client
13093            .sign_and_dispatch(request)
13094            .await
13095            .map_err(RusotoError::from)?;
13096        if response.status.is_success() {
13097            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13098            let result = proto::json::ResponsePayload::new(&response).deserialize::<Tags, _>()?;
13099
13100            Ok(result)
13101        } else {
13102            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13103            Err(GetTagsError::from_response(response))
13104        }
13105    }
13106
13107    /// <p>Gets the usage data of a usage plan in a specified time interval.</p>
13108    #[allow(unused_mut)]
13109    async fn get_usage(&self, input: GetUsageRequest) -> Result<Usage, RusotoError<GetUsageError>> {
13110        let request_uri = format!(
13111            "/usageplans/{usageplan_id}/usage",
13112            usageplan_id = input.usage_plan_id
13113        );
13114
13115        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
13116        request.set_content_type("application/x-amz-json-1.1".to_owned());
13117
13118        let mut params = Params::new();
13119        params.put("endDate", &input.end_date);
13120        if let Some(ref x) = input.key_id {
13121            params.put("keyId", x);
13122        }
13123        if let Some(ref x) = input.limit {
13124            params.put("limit", x);
13125        }
13126        if let Some(ref x) = input.position {
13127            params.put("position", x);
13128        }
13129        params.put("startDate", &input.start_date);
13130        request.set_params(params);
13131
13132        let mut response = self
13133            .client
13134            .sign_and_dispatch(request)
13135            .await
13136            .map_err(RusotoError::from)?;
13137        if response.status.is_success() {
13138            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13139            let result = proto::json::ResponsePayload::new(&response).deserialize::<Usage, _>()?;
13140
13141            Ok(result)
13142        } else {
13143            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13144            Err(GetUsageError::from_response(response))
13145        }
13146    }
13147
13148    /// <p>Gets a usage plan of a given plan identifier.</p>
13149    #[allow(unused_mut)]
13150    async fn get_usage_plan(
13151        &self,
13152        input: GetUsagePlanRequest,
13153    ) -> Result<UsagePlan, RusotoError<GetUsagePlanError>> {
13154        let request_uri = format!(
13155            "/usageplans/{usageplan_id}",
13156            usageplan_id = input.usage_plan_id
13157        );
13158
13159        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
13160        request.set_content_type("application/x-amz-json-1.1".to_owned());
13161
13162        let mut response = self
13163            .client
13164            .sign_and_dispatch(request)
13165            .await
13166            .map_err(RusotoError::from)?;
13167        if response.status.is_success() {
13168            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13169            let result =
13170                proto::json::ResponsePayload::new(&response).deserialize::<UsagePlan, _>()?;
13171
13172            Ok(result)
13173        } else {
13174            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13175            Err(GetUsagePlanError::from_response(response))
13176        }
13177    }
13178
13179    /// <p>Gets a usage plan key of a given key identifier.</p>
13180    #[allow(unused_mut)]
13181    async fn get_usage_plan_key(
13182        &self,
13183        input: GetUsagePlanKeyRequest,
13184    ) -> Result<UsagePlanKey, RusotoError<GetUsagePlanKeyError>> {
13185        let request_uri = format!(
13186            "/usageplans/{usageplan_id}/keys/{key_id}",
13187            key_id = input.key_id,
13188            usageplan_id = input.usage_plan_id
13189        );
13190
13191        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
13192        request.set_content_type("application/x-amz-json-1.1".to_owned());
13193
13194        let mut response = self
13195            .client
13196            .sign_and_dispatch(request)
13197            .await
13198            .map_err(RusotoError::from)?;
13199        if response.status.as_u16() == 200 {
13200            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13201            let result =
13202                proto::json::ResponsePayload::new(&response).deserialize::<UsagePlanKey, _>()?;
13203
13204            Ok(result)
13205        } else {
13206            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13207            Err(GetUsagePlanKeyError::from_response(response))
13208        }
13209    }
13210
13211    /// <p>Gets all the usage plan keys representing the API keys added to a specified usage plan.</p>
13212    #[allow(unused_mut)]
13213    async fn get_usage_plan_keys(
13214        &self,
13215        input: GetUsagePlanKeysRequest,
13216    ) -> Result<UsagePlanKeys, RusotoError<GetUsagePlanKeysError>> {
13217        let request_uri = format!(
13218            "/usageplans/{usageplan_id}/keys",
13219            usageplan_id = input.usage_plan_id
13220        );
13221
13222        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
13223        request.set_content_type("application/x-amz-json-1.1".to_owned());
13224
13225        let mut params = Params::new();
13226        if let Some(ref x) = input.limit {
13227            params.put("limit", x);
13228        }
13229        if let Some(ref x) = input.name_query {
13230            params.put("name", x);
13231        }
13232        if let Some(ref x) = input.position {
13233            params.put("position", x);
13234        }
13235        request.set_params(params);
13236
13237        let mut response = self
13238            .client
13239            .sign_and_dispatch(request)
13240            .await
13241            .map_err(RusotoError::from)?;
13242        if response.status.is_success() {
13243            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13244            let result =
13245                proto::json::ResponsePayload::new(&response).deserialize::<UsagePlanKeys, _>()?;
13246
13247            Ok(result)
13248        } else {
13249            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13250            Err(GetUsagePlanKeysError::from_response(response))
13251        }
13252    }
13253
13254    /// <p>Gets all the usage plans of the caller's account.</p>
13255    #[allow(unused_mut)]
13256    async fn get_usage_plans(
13257        &self,
13258        input: GetUsagePlansRequest,
13259    ) -> Result<UsagePlans, RusotoError<GetUsagePlansError>> {
13260        let request_uri = "/usageplans";
13261
13262        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
13263        request.set_content_type("application/x-amz-json-1.1".to_owned());
13264
13265        let mut params = Params::new();
13266        if let Some(ref x) = input.key_id {
13267            params.put("keyId", x);
13268        }
13269        if let Some(ref x) = input.limit {
13270            params.put("limit", x);
13271        }
13272        if let Some(ref x) = input.position {
13273            params.put("position", x);
13274        }
13275        request.set_params(params);
13276
13277        let mut response = self
13278            .client
13279            .sign_and_dispatch(request)
13280            .await
13281            .map_err(RusotoError::from)?;
13282        if response.status.is_success() {
13283            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13284            let result =
13285                proto::json::ResponsePayload::new(&response).deserialize::<UsagePlans, _>()?;
13286
13287            Ok(result)
13288        } else {
13289            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13290            Err(GetUsagePlansError::from_response(response))
13291        }
13292    }
13293
13294    /// <p>Gets a specified VPC link under the caller's account in a region.</p>
13295    #[allow(unused_mut)]
13296    async fn get_vpc_link(
13297        &self,
13298        input: GetVpcLinkRequest,
13299    ) -> Result<VpcLink, RusotoError<GetVpcLinkError>> {
13300        let request_uri = format!("/vpclinks/{vpclink_id}", vpclink_id = input.vpc_link_id);
13301
13302        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
13303        request.set_content_type("application/x-amz-json-1.1".to_owned());
13304
13305        let mut response = self
13306            .client
13307            .sign_and_dispatch(request)
13308            .await
13309            .map_err(RusotoError::from)?;
13310        if response.status.is_success() {
13311            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13312            let result =
13313                proto::json::ResponsePayload::new(&response).deserialize::<VpcLink, _>()?;
13314
13315            Ok(result)
13316        } else {
13317            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13318            Err(GetVpcLinkError::from_response(response))
13319        }
13320    }
13321
13322    /// <p>Gets the <a>VpcLinks</a> collection under the caller's account in a selected region.</p>
13323    #[allow(unused_mut)]
13324    async fn get_vpc_links(
13325        &self,
13326        input: GetVpcLinksRequest,
13327    ) -> Result<VpcLinks, RusotoError<GetVpcLinksError>> {
13328        let request_uri = "/vpclinks";
13329
13330        let mut request = SignedRequest::new("GET", "apigateway", &self.region, &request_uri);
13331        request.set_content_type("application/x-amz-json-1.1".to_owned());
13332
13333        let mut params = Params::new();
13334        if let Some(ref x) = input.limit {
13335            params.put("limit", x);
13336        }
13337        if let Some(ref x) = input.position {
13338            params.put("position", x);
13339        }
13340        request.set_params(params);
13341
13342        let mut response = self
13343            .client
13344            .sign_and_dispatch(request)
13345            .await
13346            .map_err(RusotoError::from)?;
13347        if response.status.is_success() {
13348            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13349            let result =
13350                proto::json::ResponsePayload::new(&response).deserialize::<VpcLinks, _>()?;
13351
13352            Ok(result)
13353        } else {
13354            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13355            Err(GetVpcLinksError::from_response(response))
13356        }
13357    }
13358
13359    /// <p>Import API keys from an external source, such as a CSV-formatted file.</p>
13360    #[allow(unused_mut)]
13361    async fn import_api_keys(
13362        &self,
13363        input: ImportApiKeysRequest,
13364    ) -> Result<ApiKeyIds, RusotoError<ImportApiKeysError>> {
13365        let request_uri = "/apikeys";
13366
13367        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
13368        request.set_content_type("application/x-amz-json-1.1".to_owned());
13369
13370        let encoded = Some(input.body.to_owned());
13371        request.set_payload(encoded);
13372
13373        let mut params = Params::new();
13374        if let Some(ref x) = input.fail_on_warnings {
13375            params.put("failonwarnings", x);
13376        }
13377        params.put("format", &input.format);
13378        params.put("mode", "import");
13379        request.set_params(params);
13380
13381        let mut response = self
13382            .client
13383            .sign_and_dispatch(request)
13384            .await
13385            .map_err(RusotoError::from)?;
13386        if response.status.as_u16() == 201 {
13387            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13388            let result =
13389                proto::json::ResponsePayload::new(&response).deserialize::<ApiKeyIds, _>()?;
13390
13391            Ok(result)
13392        } else {
13393            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13394            Err(ImportApiKeysError::from_response(response))
13395        }
13396    }
13397
13398    #[allow(unused_mut)]
13399    async fn import_documentation_parts(
13400        &self,
13401        input: ImportDocumentationPartsRequest,
13402    ) -> Result<DocumentationPartIds, RusotoError<ImportDocumentationPartsError>> {
13403        let request_uri = format!(
13404            "/restapis/{restapi_id}/documentation/parts",
13405            restapi_id = input.rest_api_id
13406        );
13407
13408        let mut request = SignedRequest::new("PUT", "apigateway", &self.region, &request_uri);
13409        request.set_content_type("application/x-amz-json-1.1".to_owned());
13410
13411        let encoded = Some(input.body.to_owned());
13412        request.set_payload(encoded);
13413
13414        let mut params = Params::new();
13415        if let Some(ref x) = input.fail_on_warnings {
13416            params.put("failonwarnings", x);
13417        }
13418        if let Some(ref x) = input.mode {
13419            params.put("mode", x);
13420        }
13421        request.set_params(params);
13422
13423        let mut response = self
13424            .client
13425            .sign_and_dispatch(request)
13426            .await
13427            .map_err(RusotoError::from)?;
13428        if response.status.is_success() {
13429            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13430            let result = proto::json::ResponsePayload::new(&response)
13431                .deserialize::<DocumentationPartIds, _>()?;
13432
13433            Ok(result)
13434        } else {
13435            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13436            Err(ImportDocumentationPartsError::from_response(response))
13437        }
13438    }
13439
13440    /// <p>A feature of the API Gateway control service for creating a new API from an external API definition file.</p>
13441    #[allow(unused_mut)]
13442    async fn import_rest_api(
13443        &self,
13444        input: ImportRestApiRequest,
13445    ) -> Result<RestApi, RusotoError<ImportRestApiError>> {
13446        let request_uri = "/restapis";
13447
13448        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
13449        request.set_content_type("application/x-amz-json-1.1".to_owned());
13450
13451        let encoded = Some(input.body.to_owned());
13452        request.set_payload(encoded);
13453
13454        let mut params = Params::new();
13455        if let Some(ref x) = input.fail_on_warnings {
13456            params.put("failonwarnings", x);
13457        }
13458        if let Some(ref x) = input.parameters {
13459            for (key, val) in x.iter() {
13460                params.put(key, val);
13461            }
13462        }
13463        params.put("mode", "import");
13464        request.set_params(params);
13465
13466        let mut response = self
13467            .client
13468            .sign_and_dispatch(request)
13469            .await
13470            .map_err(RusotoError::from)?;
13471        if response.status.as_u16() == 201 {
13472            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13473            let result =
13474                proto::json::ResponsePayload::new(&response).deserialize::<RestApi, _>()?;
13475
13476            Ok(result)
13477        } else {
13478            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13479            Err(ImportRestApiError::from_response(response))
13480        }
13481    }
13482
13483    /// <p>Creates a customization of a <a>GatewayResponse</a> of a specified response type and status code on the given <a>RestApi</a>.</p>
13484    #[allow(unused_mut)]
13485    async fn put_gateway_response(
13486        &self,
13487        input: PutGatewayResponseRequest,
13488    ) -> Result<GatewayResponse, RusotoError<PutGatewayResponseError>> {
13489        let request_uri = format!(
13490            "/restapis/{restapi_id}/gatewayresponses/{response_type}",
13491            response_type = input.response_type,
13492            restapi_id = input.rest_api_id
13493        );
13494
13495        let mut request = SignedRequest::new("PUT", "apigateway", &self.region, &request_uri);
13496        request.set_content_type("application/x-amz-json-1.1".to_owned());
13497
13498        let encoded = Some(serde_json::to_vec(&input).unwrap());
13499        request.set_payload(encoded);
13500
13501        let mut response = self
13502            .client
13503            .sign_and_dispatch(request)
13504            .await
13505            .map_err(RusotoError::from)?;
13506        if response.status.as_u16() == 201 {
13507            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13508            let result =
13509                proto::json::ResponsePayload::new(&response).deserialize::<GatewayResponse, _>()?;
13510
13511            Ok(result)
13512        } else {
13513            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13514            Err(PutGatewayResponseError::from_response(response))
13515        }
13516    }
13517
13518    /// <p>Sets up a method's integration.</p>
13519    #[allow(unused_mut)]
13520    async fn put_integration(
13521        &self,
13522        input: PutIntegrationRequest,
13523    ) -> Result<Integration, RusotoError<PutIntegrationError>> {
13524        let request_uri = format!(
13525            "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration",
13526            http_method = input.http_method,
13527            resource_id = input.resource_id,
13528            restapi_id = input.rest_api_id
13529        );
13530
13531        let mut request = SignedRequest::new("PUT", "apigateway", &self.region, &request_uri);
13532        request.set_content_type("application/x-amz-json-1.1".to_owned());
13533
13534        let encoded = Some(serde_json::to_vec(&input).unwrap());
13535        request.set_payload(encoded);
13536
13537        let mut response = self
13538            .client
13539            .sign_and_dispatch(request)
13540            .await
13541            .map_err(RusotoError::from)?;
13542        if response.status.as_u16() == 201 {
13543            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13544            let result =
13545                proto::json::ResponsePayload::new(&response).deserialize::<Integration, _>()?;
13546
13547            Ok(result)
13548        } else {
13549            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13550            Err(PutIntegrationError::from_response(response))
13551        }
13552    }
13553
13554    /// <p>Represents a put integration.</p>
13555    #[allow(unused_mut)]
13556    async fn put_integration_response(
13557        &self,
13558        input: PutIntegrationResponseRequest,
13559    ) -> Result<IntegrationResponse, RusotoError<PutIntegrationResponseError>> {
13560        let request_uri = format!("/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}", http_method = input.http_method, resource_id = input.resource_id, restapi_id = input.rest_api_id, status_code = input.status_code);
13561
13562        let mut request = SignedRequest::new("PUT", "apigateway", &self.region, &request_uri);
13563        request.set_content_type("application/x-amz-json-1.1".to_owned());
13564
13565        let encoded = Some(serde_json::to_vec(&input).unwrap());
13566        request.set_payload(encoded);
13567
13568        let mut response = self
13569            .client
13570            .sign_and_dispatch(request)
13571            .await
13572            .map_err(RusotoError::from)?;
13573        if response.status.as_u16() == 201 {
13574            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13575            let result = proto::json::ResponsePayload::new(&response)
13576                .deserialize::<IntegrationResponse, _>()?;
13577
13578            Ok(result)
13579        } else {
13580            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13581            Err(PutIntegrationResponseError::from_response(response))
13582        }
13583    }
13584
13585    /// <p>Add a method to an existing <a>Resource</a> resource.</p>
13586    #[allow(unused_mut)]
13587    async fn put_method(
13588        &self,
13589        input: PutMethodRequest,
13590    ) -> Result<Method, RusotoError<PutMethodError>> {
13591        let request_uri = format!(
13592            "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}",
13593            http_method = input.http_method,
13594            resource_id = input.resource_id,
13595            restapi_id = input.rest_api_id
13596        );
13597
13598        let mut request = SignedRequest::new("PUT", "apigateway", &self.region, &request_uri);
13599        request.set_content_type("application/x-amz-json-1.1".to_owned());
13600
13601        let encoded = Some(serde_json::to_vec(&input).unwrap());
13602        request.set_payload(encoded);
13603
13604        let mut response = self
13605            .client
13606            .sign_and_dispatch(request)
13607            .await
13608            .map_err(RusotoError::from)?;
13609        if response.status.as_u16() == 201 {
13610            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13611            let result = proto::json::ResponsePayload::new(&response).deserialize::<Method, _>()?;
13612
13613            Ok(result)
13614        } else {
13615            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13616            Err(PutMethodError::from_response(response))
13617        }
13618    }
13619
13620    /// <p>Adds a <a>MethodResponse</a> to an existing <a>Method</a> resource.</p>
13621    #[allow(unused_mut)]
13622    async fn put_method_response(
13623        &self,
13624        input: PutMethodResponseRequest,
13625    ) -> Result<MethodResponse, RusotoError<PutMethodResponseError>> {
13626        let request_uri = format!("/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", http_method = input.http_method, resource_id = input.resource_id, restapi_id = input.rest_api_id, status_code = input.status_code);
13627
13628        let mut request = SignedRequest::new("PUT", "apigateway", &self.region, &request_uri);
13629        request.set_content_type("application/x-amz-json-1.1".to_owned());
13630
13631        let encoded = Some(serde_json::to_vec(&input).unwrap());
13632        request.set_payload(encoded);
13633
13634        let mut response = self
13635            .client
13636            .sign_and_dispatch(request)
13637            .await
13638            .map_err(RusotoError::from)?;
13639        if response.status.as_u16() == 201 {
13640            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13641            let result =
13642                proto::json::ResponsePayload::new(&response).deserialize::<MethodResponse, _>()?;
13643
13644            Ok(result)
13645        } else {
13646            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13647            Err(PutMethodResponseError::from_response(response))
13648        }
13649    }
13650
13651    /// <p>A feature of the API Gateway control service for updating an existing API with an input of external API definitions. The update can take the form of merging the supplied definition into the existing API or overwriting the existing API.</p>
13652    #[allow(unused_mut)]
13653    async fn put_rest_api(
13654        &self,
13655        input: PutRestApiRequest,
13656    ) -> Result<RestApi, RusotoError<PutRestApiError>> {
13657        let request_uri = format!("/restapis/{restapi_id}", restapi_id = input.rest_api_id);
13658
13659        let mut request = SignedRequest::new("PUT", "apigateway", &self.region, &request_uri);
13660        request.set_content_type("application/x-amz-json-1.1".to_owned());
13661
13662        let encoded = Some(input.body.to_owned());
13663        request.set_payload(encoded);
13664
13665        let mut params = Params::new();
13666        if let Some(ref x) = input.fail_on_warnings {
13667            params.put("failonwarnings", x);
13668        }
13669        if let Some(ref x) = input.mode {
13670            params.put("mode", x);
13671        }
13672        if let Some(ref x) = input.parameters {
13673            for (key, val) in x.iter() {
13674                params.put(key, val);
13675            }
13676        }
13677        request.set_params(params);
13678
13679        let mut response = self
13680            .client
13681            .sign_and_dispatch(request)
13682            .await
13683            .map_err(RusotoError::from)?;
13684        if response.status.is_success() {
13685            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13686            let result =
13687                proto::json::ResponsePayload::new(&response).deserialize::<RestApi, _>()?;
13688
13689            Ok(result)
13690        } else {
13691            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13692            Err(PutRestApiError::from_response(response))
13693        }
13694    }
13695
13696    /// <p>Adds or updates a tag on a given resource.</p>
13697    #[allow(unused_mut)]
13698    async fn tag_resource(
13699        &self,
13700        input: TagResourceRequest,
13701    ) -> Result<(), RusotoError<TagResourceError>> {
13702        let request_uri = format!("/tags/{resource_arn}", resource_arn = input.resource_arn);
13703
13704        let mut request = SignedRequest::new("PUT", "apigateway", &self.region, &request_uri);
13705        request.set_content_type("application/x-amz-json-1.1".to_owned());
13706
13707        let encoded = Some(serde_json::to_vec(&input).unwrap());
13708        request.set_payload(encoded);
13709
13710        let mut response = self
13711            .client
13712            .sign_and_dispatch(request)
13713            .await
13714            .map_err(RusotoError::from)?;
13715        if response.status.as_u16() == 204 {
13716            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13717            let result = ::std::mem::drop(response);
13718
13719            Ok(result)
13720        } else {
13721            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13722            Err(TagResourceError::from_response(response))
13723        }
13724    }
13725
13726    /// <p><p>Simulate the execution of an <a>Authorizer</a> in your <a>RestApi</a> with headers, parameters, and an incoming request body.</p> <div class="seeAlso"> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html">Use Lambda Function as Authorizer</a> <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html">Use Cognito User Pool as Authorizer</a> </div></p>
13727    #[allow(unused_mut)]
13728    async fn test_invoke_authorizer(
13729        &self,
13730        input: TestInvokeAuthorizerRequest,
13731    ) -> Result<TestInvokeAuthorizerResponse, RusotoError<TestInvokeAuthorizerError>> {
13732        let request_uri = format!(
13733            "/restapis/{restapi_id}/authorizers/{authorizer_id}",
13734            authorizer_id = input.authorizer_id,
13735            restapi_id = input.rest_api_id
13736        );
13737
13738        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
13739        request.set_content_type("application/x-amz-json-1.1".to_owned());
13740
13741        let encoded = Some(serde_json::to_vec(&input).unwrap());
13742        request.set_payload(encoded);
13743
13744        let mut response = self
13745            .client
13746            .sign_and_dispatch(request)
13747            .await
13748            .map_err(RusotoError::from)?;
13749        if response.status.is_success() {
13750            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13751            let result = proto::json::ResponsePayload::new(&response)
13752                .deserialize::<TestInvokeAuthorizerResponse, _>()?;
13753
13754            Ok(result)
13755        } else {
13756            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13757            Err(TestInvokeAuthorizerError::from_response(response))
13758        }
13759    }
13760
13761    /// <p>Simulate the execution of a <a>Method</a> in your <a>RestApi</a> with headers, parameters, and an incoming request body.</p>
13762    #[allow(unused_mut)]
13763    async fn test_invoke_method(
13764        &self,
13765        input: TestInvokeMethodRequest,
13766    ) -> Result<TestInvokeMethodResponse, RusotoError<TestInvokeMethodError>> {
13767        let request_uri = format!(
13768            "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}",
13769            http_method = input.http_method,
13770            resource_id = input.resource_id,
13771            restapi_id = input.rest_api_id
13772        );
13773
13774        let mut request = SignedRequest::new("POST", "apigateway", &self.region, &request_uri);
13775        request.set_content_type("application/x-amz-json-1.1".to_owned());
13776
13777        let encoded = Some(serde_json::to_vec(&input).unwrap());
13778        request.set_payload(encoded);
13779
13780        let mut response = self
13781            .client
13782            .sign_and_dispatch(request)
13783            .await
13784            .map_err(RusotoError::from)?;
13785        if response.status.is_success() {
13786            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13787            let result = proto::json::ResponsePayload::new(&response)
13788                .deserialize::<TestInvokeMethodResponse, _>()?;
13789
13790            Ok(result)
13791        } else {
13792            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13793            Err(TestInvokeMethodError::from_response(response))
13794        }
13795    }
13796
13797    /// <p>Removes a tag from a given resource.</p>
13798    #[allow(unused_mut)]
13799    async fn untag_resource(
13800        &self,
13801        input: UntagResourceRequest,
13802    ) -> Result<(), RusotoError<UntagResourceError>> {
13803        let request_uri = format!("/tags/{resource_arn}", resource_arn = input.resource_arn);
13804
13805        let mut request = SignedRequest::new("DELETE", "apigateway", &self.region, &request_uri);
13806        request.set_content_type("application/x-amz-json-1.1".to_owned());
13807
13808        let mut params = Params::new();
13809        for item in input.tag_keys.iter() {
13810            params.put("tagKeys", item);
13811        }
13812        request.set_params(params);
13813
13814        let mut response = self
13815            .client
13816            .sign_and_dispatch(request)
13817            .await
13818            .map_err(RusotoError::from)?;
13819        if response.status.as_u16() == 204 {
13820            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13821            let result = ::std::mem::drop(response);
13822
13823            Ok(result)
13824        } else {
13825            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13826            Err(UntagResourceError::from_response(response))
13827        }
13828    }
13829
13830    /// <p>Changes information about the current <a>Account</a> resource.</p>
13831    #[allow(unused_mut)]
13832    async fn update_account(
13833        &self,
13834        input: UpdateAccountRequest,
13835    ) -> Result<Account, RusotoError<UpdateAccountError>> {
13836        let request_uri = "/account";
13837
13838        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
13839        request.set_content_type("application/x-amz-json-1.1".to_owned());
13840
13841        let encoded = Some(serde_json::to_vec(&input).unwrap());
13842        request.set_payload(encoded);
13843
13844        let mut response = self
13845            .client
13846            .sign_and_dispatch(request)
13847            .await
13848            .map_err(RusotoError::from)?;
13849        if response.status.is_success() {
13850            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13851            let result =
13852                proto::json::ResponsePayload::new(&response).deserialize::<Account, _>()?;
13853
13854            Ok(result)
13855        } else {
13856            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13857            Err(UpdateAccountError::from_response(response))
13858        }
13859    }
13860
13861    /// <p>Changes information about an <a>ApiKey</a> resource.</p>
13862    #[allow(unused_mut)]
13863    async fn update_api_key(
13864        &self,
13865        input: UpdateApiKeyRequest,
13866    ) -> Result<ApiKey, RusotoError<UpdateApiKeyError>> {
13867        let request_uri = format!("/apikeys/{api_key}", api_key = input.api_key);
13868
13869        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
13870        request.set_content_type("application/x-amz-json-1.1".to_owned());
13871
13872        let encoded = Some(serde_json::to_vec(&input).unwrap());
13873        request.set_payload(encoded);
13874
13875        let mut response = self
13876            .client
13877            .sign_and_dispatch(request)
13878            .await
13879            .map_err(RusotoError::from)?;
13880        if response.status.is_success() {
13881            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13882            let result = proto::json::ResponsePayload::new(&response).deserialize::<ApiKey, _>()?;
13883
13884            Ok(result)
13885        } else {
13886            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13887            Err(UpdateApiKeyError::from_response(response))
13888        }
13889    }
13890
13891    /// <p><p>Updates an existing <a>Authorizer</a> resource.</p> <div class="seeAlso"><a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-authorizer.html">AWS CLI</a></div></p>
13892    #[allow(unused_mut)]
13893    async fn update_authorizer(
13894        &self,
13895        input: UpdateAuthorizerRequest,
13896    ) -> Result<Authorizer, RusotoError<UpdateAuthorizerError>> {
13897        let request_uri = format!(
13898            "/restapis/{restapi_id}/authorizers/{authorizer_id}",
13899            authorizer_id = input.authorizer_id,
13900            restapi_id = input.rest_api_id
13901        );
13902
13903        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
13904        request.set_content_type("application/x-amz-json-1.1".to_owned());
13905
13906        let encoded = Some(serde_json::to_vec(&input).unwrap());
13907        request.set_payload(encoded);
13908
13909        let mut response = self
13910            .client
13911            .sign_and_dispatch(request)
13912            .await
13913            .map_err(RusotoError::from)?;
13914        if response.status.is_success() {
13915            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13916            let result =
13917                proto::json::ResponsePayload::new(&response).deserialize::<Authorizer, _>()?;
13918
13919            Ok(result)
13920        } else {
13921            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13922            Err(UpdateAuthorizerError::from_response(response))
13923        }
13924    }
13925
13926    /// <p>Changes information about the <a>BasePathMapping</a> resource.</p>
13927    #[allow(unused_mut)]
13928    async fn update_base_path_mapping(
13929        &self,
13930        input: UpdateBasePathMappingRequest,
13931    ) -> Result<BasePathMapping, RusotoError<UpdateBasePathMappingError>> {
13932        let request_uri = format!(
13933            "/domainnames/{domain_name}/basepathmappings/{base_path}",
13934            base_path = input.base_path,
13935            domain_name = input.domain_name
13936        );
13937
13938        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
13939        request.set_content_type("application/x-amz-json-1.1".to_owned());
13940
13941        let encoded = Some(serde_json::to_vec(&input).unwrap());
13942        request.set_payload(encoded);
13943
13944        let mut response = self
13945            .client
13946            .sign_and_dispatch(request)
13947            .await
13948            .map_err(RusotoError::from)?;
13949        if response.status.is_success() {
13950            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13951            let result =
13952                proto::json::ResponsePayload::new(&response).deserialize::<BasePathMapping, _>()?;
13953
13954            Ok(result)
13955        } else {
13956            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13957            Err(UpdateBasePathMappingError::from_response(response))
13958        }
13959    }
13960
13961    /// <p>Changes information about an <a>ClientCertificate</a> resource.</p>
13962    #[allow(unused_mut)]
13963    async fn update_client_certificate(
13964        &self,
13965        input: UpdateClientCertificateRequest,
13966    ) -> Result<ClientCertificate, RusotoError<UpdateClientCertificateError>> {
13967        let request_uri = format!(
13968            "/clientcertificates/{clientcertificate_id}",
13969            clientcertificate_id = input.client_certificate_id
13970        );
13971
13972        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
13973        request.set_content_type("application/x-amz-json-1.1".to_owned());
13974
13975        let encoded = Some(serde_json::to_vec(&input).unwrap());
13976        request.set_payload(encoded);
13977
13978        let mut response = self
13979            .client
13980            .sign_and_dispatch(request)
13981            .await
13982            .map_err(RusotoError::from)?;
13983        if response.status.is_success() {
13984            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13985            let result = proto::json::ResponsePayload::new(&response)
13986                .deserialize::<ClientCertificate, _>()?;
13987
13988            Ok(result)
13989        } else {
13990            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
13991            Err(UpdateClientCertificateError::from_response(response))
13992        }
13993    }
13994
13995    /// <p>Changes information about a <a>Deployment</a> resource.</p>
13996    #[allow(unused_mut)]
13997    async fn update_deployment(
13998        &self,
13999        input: UpdateDeploymentRequest,
14000    ) -> Result<Deployment, RusotoError<UpdateDeploymentError>> {
14001        let request_uri = format!(
14002            "/restapis/{restapi_id}/deployments/{deployment_id}",
14003            deployment_id = input.deployment_id,
14004            restapi_id = input.rest_api_id
14005        );
14006
14007        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14008        request.set_content_type("application/x-amz-json-1.1".to_owned());
14009
14010        let encoded = Some(serde_json::to_vec(&input).unwrap());
14011        request.set_payload(encoded);
14012
14013        let mut response = self
14014            .client
14015            .sign_and_dispatch(request)
14016            .await
14017            .map_err(RusotoError::from)?;
14018        if response.status.is_success() {
14019            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14020            let result =
14021                proto::json::ResponsePayload::new(&response).deserialize::<Deployment, _>()?;
14022
14023            Ok(result)
14024        } else {
14025            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14026            Err(UpdateDeploymentError::from_response(response))
14027        }
14028    }
14029
14030    #[allow(unused_mut)]
14031    async fn update_documentation_part(
14032        &self,
14033        input: UpdateDocumentationPartRequest,
14034    ) -> Result<DocumentationPart, RusotoError<UpdateDocumentationPartError>> {
14035        let request_uri = format!(
14036            "/restapis/{restapi_id}/documentation/parts/{part_id}",
14037            part_id = input.documentation_part_id,
14038            restapi_id = input.rest_api_id
14039        );
14040
14041        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14042        request.set_content_type("application/x-amz-json-1.1".to_owned());
14043
14044        let encoded = Some(serde_json::to_vec(&input).unwrap());
14045        request.set_payload(encoded);
14046
14047        let mut response = self
14048            .client
14049            .sign_and_dispatch(request)
14050            .await
14051            .map_err(RusotoError::from)?;
14052        if response.status.is_success() {
14053            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14054            let result = proto::json::ResponsePayload::new(&response)
14055                .deserialize::<DocumentationPart, _>()?;
14056
14057            Ok(result)
14058        } else {
14059            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14060            Err(UpdateDocumentationPartError::from_response(response))
14061        }
14062    }
14063
14064    #[allow(unused_mut)]
14065    async fn update_documentation_version(
14066        &self,
14067        input: UpdateDocumentationVersionRequest,
14068    ) -> Result<DocumentationVersion, RusotoError<UpdateDocumentationVersionError>> {
14069        let request_uri = format!(
14070            "/restapis/{restapi_id}/documentation/versions/{doc_version}",
14071            doc_version = input.documentation_version,
14072            restapi_id = input.rest_api_id
14073        );
14074
14075        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14076        request.set_content_type("application/x-amz-json-1.1".to_owned());
14077
14078        let encoded = Some(serde_json::to_vec(&input).unwrap());
14079        request.set_payload(encoded);
14080
14081        let mut response = self
14082            .client
14083            .sign_and_dispatch(request)
14084            .await
14085            .map_err(RusotoError::from)?;
14086        if response.status.is_success() {
14087            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14088            let result = proto::json::ResponsePayload::new(&response)
14089                .deserialize::<DocumentationVersion, _>()?;
14090
14091            Ok(result)
14092        } else {
14093            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14094            Err(UpdateDocumentationVersionError::from_response(response))
14095        }
14096    }
14097
14098    /// <p>Changes information about the <a>DomainName</a> resource.</p>
14099    #[allow(unused_mut)]
14100    async fn update_domain_name(
14101        &self,
14102        input: UpdateDomainNameRequest,
14103    ) -> Result<DomainName, RusotoError<UpdateDomainNameError>> {
14104        let request_uri = format!(
14105            "/domainnames/{domain_name}",
14106            domain_name = input.domain_name
14107        );
14108
14109        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14110        request.set_content_type("application/x-amz-json-1.1".to_owned());
14111
14112        let encoded = Some(serde_json::to_vec(&input).unwrap());
14113        request.set_payload(encoded);
14114
14115        let mut response = self
14116            .client
14117            .sign_and_dispatch(request)
14118            .await
14119            .map_err(RusotoError::from)?;
14120        if response.status.is_success() {
14121            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14122            let result =
14123                proto::json::ResponsePayload::new(&response).deserialize::<DomainName, _>()?;
14124
14125            Ok(result)
14126        } else {
14127            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14128            Err(UpdateDomainNameError::from_response(response))
14129        }
14130    }
14131
14132    /// <p>Updates a <a>GatewayResponse</a> of a specified response type on the given <a>RestApi</a>.</p>
14133    #[allow(unused_mut)]
14134    async fn update_gateway_response(
14135        &self,
14136        input: UpdateGatewayResponseRequest,
14137    ) -> Result<GatewayResponse, RusotoError<UpdateGatewayResponseError>> {
14138        let request_uri = format!(
14139            "/restapis/{restapi_id}/gatewayresponses/{response_type}",
14140            response_type = input.response_type,
14141            restapi_id = input.rest_api_id
14142        );
14143
14144        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14145        request.set_content_type("application/x-amz-json-1.1".to_owned());
14146
14147        let encoded = Some(serde_json::to_vec(&input).unwrap());
14148        request.set_payload(encoded);
14149
14150        let mut response = self
14151            .client
14152            .sign_and_dispatch(request)
14153            .await
14154            .map_err(RusotoError::from)?;
14155        if response.status.is_success() {
14156            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14157            let result =
14158                proto::json::ResponsePayload::new(&response).deserialize::<GatewayResponse, _>()?;
14159
14160            Ok(result)
14161        } else {
14162            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14163            Err(UpdateGatewayResponseError::from_response(response))
14164        }
14165    }
14166
14167    /// <p>Represents an update integration.</p>
14168    #[allow(unused_mut)]
14169    async fn update_integration(
14170        &self,
14171        input: UpdateIntegrationRequest,
14172    ) -> Result<Integration, RusotoError<UpdateIntegrationError>> {
14173        let request_uri = format!(
14174            "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration",
14175            http_method = input.http_method,
14176            resource_id = input.resource_id,
14177            restapi_id = input.rest_api_id
14178        );
14179
14180        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14181        request.set_content_type("application/x-amz-json-1.1".to_owned());
14182
14183        let encoded = Some(serde_json::to_vec(&input).unwrap());
14184        request.set_payload(encoded);
14185
14186        let mut response = self
14187            .client
14188            .sign_and_dispatch(request)
14189            .await
14190            .map_err(RusotoError::from)?;
14191        if response.status.is_success() {
14192            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14193            let result =
14194                proto::json::ResponsePayload::new(&response).deserialize::<Integration, _>()?;
14195
14196            Ok(result)
14197        } else {
14198            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14199            Err(UpdateIntegrationError::from_response(response))
14200        }
14201    }
14202
14203    /// <p>Represents an update integration response.</p>
14204    #[allow(unused_mut)]
14205    async fn update_integration_response(
14206        &self,
14207        input: UpdateIntegrationResponseRequest,
14208    ) -> Result<IntegrationResponse, RusotoError<UpdateIntegrationResponseError>> {
14209        let request_uri = format!("/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}", http_method = input.http_method, resource_id = input.resource_id, restapi_id = input.rest_api_id, status_code = input.status_code);
14210
14211        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14212        request.set_content_type("application/x-amz-json-1.1".to_owned());
14213
14214        let encoded = Some(serde_json::to_vec(&input).unwrap());
14215        request.set_payload(encoded);
14216
14217        let mut response = self
14218            .client
14219            .sign_and_dispatch(request)
14220            .await
14221            .map_err(RusotoError::from)?;
14222        if response.status.is_success() {
14223            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14224            let result = proto::json::ResponsePayload::new(&response)
14225                .deserialize::<IntegrationResponse, _>()?;
14226
14227            Ok(result)
14228        } else {
14229            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14230            Err(UpdateIntegrationResponseError::from_response(response))
14231        }
14232    }
14233
14234    /// <p>Updates an existing <a>Method</a> resource.</p>
14235    #[allow(unused_mut)]
14236    async fn update_method(
14237        &self,
14238        input: UpdateMethodRequest,
14239    ) -> Result<Method, RusotoError<UpdateMethodError>> {
14240        let request_uri = format!(
14241            "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}",
14242            http_method = input.http_method,
14243            resource_id = input.resource_id,
14244            restapi_id = input.rest_api_id
14245        );
14246
14247        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14248        request.set_content_type("application/x-amz-json-1.1".to_owned());
14249
14250        let encoded = Some(serde_json::to_vec(&input).unwrap());
14251        request.set_payload(encoded);
14252
14253        let mut response = self
14254            .client
14255            .sign_and_dispatch(request)
14256            .await
14257            .map_err(RusotoError::from)?;
14258        if response.status.is_success() {
14259            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14260            let result = proto::json::ResponsePayload::new(&response).deserialize::<Method, _>()?;
14261
14262            Ok(result)
14263        } else {
14264            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14265            Err(UpdateMethodError::from_response(response))
14266        }
14267    }
14268
14269    /// <p>Updates an existing <a>MethodResponse</a> resource.</p>
14270    #[allow(unused_mut)]
14271    async fn update_method_response(
14272        &self,
14273        input: UpdateMethodResponseRequest,
14274    ) -> Result<MethodResponse, RusotoError<UpdateMethodResponseError>> {
14275        let request_uri = format!("/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", http_method = input.http_method, resource_id = input.resource_id, restapi_id = input.rest_api_id, status_code = input.status_code);
14276
14277        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14278        request.set_content_type("application/x-amz-json-1.1".to_owned());
14279
14280        let encoded = Some(serde_json::to_vec(&input).unwrap());
14281        request.set_payload(encoded);
14282
14283        let mut response = self
14284            .client
14285            .sign_and_dispatch(request)
14286            .await
14287            .map_err(RusotoError::from)?;
14288        if response.status.as_u16() == 201 {
14289            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14290            let result =
14291                proto::json::ResponsePayload::new(&response).deserialize::<MethodResponse, _>()?;
14292
14293            Ok(result)
14294        } else {
14295            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14296            Err(UpdateMethodResponseError::from_response(response))
14297        }
14298    }
14299
14300    /// <p>Changes information about a model.</p>
14301    #[allow(unused_mut)]
14302    async fn update_model(
14303        &self,
14304        input: UpdateModelRequest,
14305    ) -> Result<Model, RusotoError<UpdateModelError>> {
14306        let request_uri = format!(
14307            "/restapis/{restapi_id}/models/{model_name}",
14308            model_name = input.model_name,
14309            restapi_id = input.rest_api_id
14310        );
14311
14312        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14313        request.set_content_type("application/x-amz-json-1.1".to_owned());
14314
14315        let encoded = Some(serde_json::to_vec(&input).unwrap());
14316        request.set_payload(encoded);
14317
14318        let mut response = self
14319            .client
14320            .sign_and_dispatch(request)
14321            .await
14322            .map_err(RusotoError::from)?;
14323        if response.status.is_success() {
14324            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14325            let result = proto::json::ResponsePayload::new(&response).deserialize::<Model, _>()?;
14326
14327            Ok(result)
14328        } else {
14329            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14330            Err(UpdateModelError::from_response(response))
14331        }
14332    }
14333
14334    /// <p>Updates a <a>RequestValidator</a> of a given <a>RestApi</a>.</p>
14335    #[allow(unused_mut)]
14336    async fn update_request_validator(
14337        &self,
14338        input: UpdateRequestValidatorRequest,
14339    ) -> Result<RequestValidator, RusotoError<UpdateRequestValidatorError>> {
14340        let request_uri = format!(
14341            "/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}",
14342            requestvalidator_id = input.request_validator_id,
14343            restapi_id = input.rest_api_id
14344        );
14345
14346        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14347        request.set_content_type("application/x-amz-json-1.1".to_owned());
14348
14349        let encoded = Some(serde_json::to_vec(&input).unwrap());
14350        request.set_payload(encoded);
14351
14352        let mut response = self
14353            .client
14354            .sign_and_dispatch(request)
14355            .await
14356            .map_err(RusotoError::from)?;
14357        if response.status.is_success() {
14358            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14359            let result = proto::json::ResponsePayload::new(&response)
14360                .deserialize::<RequestValidator, _>()?;
14361
14362            Ok(result)
14363        } else {
14364            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14365            Err(UpdateRequestValidatorError::from_response(response))
14366        }
14367    }
14368
14369    /// <p>Changes information about a <a>Resource</a> resource.</p>
14370    #[allow(unused_mut)]
14371    async fn update_resource(
14372        &self,
14373        input: UpdateResourceRequest,
14374    ) -> Result<Resource, RusotoError<UpdateResourceError>> {
14375        let request_uri = format!(
14376            "/restapis/{restapi_id}/resources/{resource_id}",
14377            resource_id = input.resource_id,
14378            restapi_id = input.rest_api_id
14379        );
14380
14381        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14382        request.set_content_type("application/x-amz-json-1.1".to_owned());
14383
14384        let encoded = Some(serde_json::to_vec(&input).unwrap());
14385        request.set_payload(encoded);
14386
14387        let mut response = self
14388            .client
14389            .sign_and_dispatch(request)
14390            .await
14391            .map_err(RusotoError::from)?;
14392        if response.status.is_success() {
14393            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14394            let result =
14395                proto::json::ResponsePayload::new(&response).deserialize::<Resource, _>()?;
14396
14397            Ok(result)
14398        } else {
14399            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14400            Err(UpdateResourceError::from_response(response))
14401        }
14402    }
14403
14404    /// <p>Changes information about the specified API.</p>
14405    #[allow(unused_mut)]
14406    async fn update_rest_api(
14407        &self,
14408        input: UpdateRestApiRequest,
14409    ) -> Result<RestApi, RusotoError<UpdateRestApiError>> {
14410        let request_uri = format!("/restapis/{restapi_id}", restapi_id = input.rest_api_id);
14411
14412        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14413        request.set_content_type("application/x-amz-json-1.1".to_owned());
14414
14415        let encoded = Some(serde_json::to_vec(&input).unwrap());
14416        request.set_payload(encoded);
14417
14418        let mut response = self
14419            .client
14420            .sign_and_dispatch(request)
14421            .await
14422            .map_err(RusotoError::from)?;
14423        if response.status.is_success() {
14424            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14425            let result =
14426                proto::json::ResponsePayload::new(&response).deserialize::<RestApi, _>()?;
14427
14428            Ok(result)
14429        } else {
14430            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14431            Err(UpdateRestApiError::from_response(response))
14432        }
14433    }
14434
14435    /// <p>Changes information about a <a>Stage</a> resource.</p>
14436    #[allow(unused_mut)]
14437    async fn update_stage(
14438        &self,
14439        input: UpdateStageRequest,
14440    ) -> Result<Stage, RusotoError<UpdateStageError>> {
14441        let request_uri = format!(
14442            "/restapis/{restapi_id}/stages/{stage_name}",
14443            restapi_id = input.rest_api_id,
14444            stage_name = input.stage_name
14445        );
14446
14447        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14448        request.set_content_type("application/x-amz-json-1.1".to_owned());
14449
14450        let encoded = Some(serde_json::to_vec(&input).unwrap());
14451        request.set_payload(encoded);
14452
14453        let mut response = self
14454            .client
14455            .sign_and_dispatch(request)
14456            .await
14457            .map_err(RusotoError::from)?;
14458        if response.status.is_success() {
14459            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14460            let result = proto::json::ResponsePayload::new(&response).deserialize::<Stage, _>()?;
14461
14462            Ok(result)
14463        } else {
14464            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14465            Err(UpdateStageError::from_response(response))
14466        }
14467    }
14468
14469    /// <p>Grants a temporary extension to the remaining quota of a usage plan associated with a specified API key.</p>
14470    #[allow(unused_mut)]
14471    async fn update_usage(
14472        &self,
14473        input: UpdateUsageRequest,
14474    ) -> Result<Usage, RusotoError<UpdateUsageError>> {
14475        let request_uri = format!(
14476            "/usageplans/{usageplan_id}/keys/{key_id}/usage",
14477            key_id = input.key_id,
14478            usageplan_id = input.usage_plan_id
14479        );
14480
14481        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14482        request.set_content_type("application/x-amz-json-1.1".to_owned());
14483
14484        let encoded = Some(serde_json::to_vec(&input).unwrap());
14485        request.set_payload(encoded);
14486
14487        let mut response = self
14488            .client
14489            .sign_and_dispatch(request)
14490            .await
14491            .map_err(RusotoError::from)?;
14492        if response.status.is_success() {
14493            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14494            let result = proto::json::ResponsePayload::new(&response).deserialize::<Usage, _>()?;
14495
14496            Ok(result)
14497        } else {
14498            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14499            Err(UpdateUsageError::from_response(response))
14500        }
14501    }
14502
14503    /// <p>Updates a usage plan of a given plan Id.</p>
14504    #[allow(unused_mut)]
14505    async fn update_usage_plan(
14506        &self,
14507        input: UpdateUsagePlanRequest,
14508    ) -> Result<UsagePlan, RusotoError<UpdateUsagePlanError>> {
14509        let request_uri = format!(
14510            "/usageplans/{usageplan_id}",
14511            usageplan_id = input.usage_plan_id
14512        );
14513
14514        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14515        request.set_content_type("application/x-amz-json-1.1".to_owned());
14516
14517        let encoded = Some(serde_json::to_vec(&input).unwrap());
14518        request.set_payload(encoded);
14519
14520        let mut response = self
14521            .client
14522            .sign_and_dispatch(request)
14523            .await
14524            .map_err(RusotoError::from)?;
14525        if response.status.is_success() {
14526            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14527            let result =
14528                proto::json::ResponsePayload::new(&response).deserialize::<UsagePlan, _>()?;
14529
14530            Ok(result)
14531        } else {
14532            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14533            Err(UpdateUsagePlanError::from_response(response))
14534        }
14535    }
14536
14537    /// <p>Updates an existing <a>VpcLink</a> of a specified identifier.</p>
14538    #[allow(unused_mut)]
14539    async fn update_vpc_link(
14540        &self,
14541        input: UpdateVpcLinkRequest,
14542    ) -> Result<VpcLink, RusotoError<UpdateVpcLinkError>> {
14543        let request_uri = format!("/vpclinks/{vpclink_id}", vpclink_id = input.vpc_link_id);
14544
14545        let mut request = SignedRequest::new("PATCH", "apigateway", &self.region, &request_uri);
14546        request.set_content_type("application/x-amz-json-1.1".to_owned());
14547
14548        let encoded = Some(serde_json::to_vec(&input).unwrap());
14549        request.set_payload(encoded);
14550
14551        let mut response = self
14552            .client
14553            .sign_and_dispatch(request)
14554            .await
14555            .map_err(RusotoError::from)?;
14556        if response.status.is_success() {
14557            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14558            let result =
14559                proto::json::ResponsePayload::new(&response).deserialize::<VpcLink, _>()?;
14560
14561            Ok(result)
14562        } else {
14563            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
14564            Err(UpdateVpcLinkError::from_response(response))
14565        }
14566    }
14567}