rusoto_route53/
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::xml::error::*;
24use rusoto_core::proto::xml::util::{
25    self as xml_util, deserialize_elements, find_start_element, skip_tree, write_characters_element,
26};
27use rusoto_core::proto::xml::util::{Next, Peek, XmlParseError, XmlResponse};
28use rusoto_core::request::HttpResponse;
29use rusoto_core::signature::SignedRequest;
30#[cfg(feature = "deserialize_structs")]
31use serde::Deserialize;
32#[cfg(feature = "serialize_structs")]
33use serde::Serialize;
34use std::io::Write;
35use std::str::FromStr;
36use xml;
37use xml::EventReader;
38use xml::EventWriter;
39
40impl Route53Client {
41    async fn sign_and_dispatch<E>(
42        &self,
43        request: SignedRequest,
44        from_response: fn(BufferedHttpResponse) -> RusotoError<E>,
45    ) -> Result<HttpResponse, RusotoError<E>> {
46        let mut response = self.client.sign_and_dispatch(request).await?;
47        if !response.status.is_success() {
48            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
49            return Err(from_response(response));
50        }
51
52        Ok(response)
53    }
54}
55#[allow(dead_code)]
56struct AWSAccountIDDeserializer;
57impl AWSAccountIDDeserializer {
58    #[allow(dead_code, unused_variables)]
59    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
60        xml_util::deserialize_primitive(tag_name, stack, Ok)
61    }
62}
63/// <p>A complex type that contains the type of limit that you specified in the request and the current value for that limit.</p>
64#[derive(Clone, Debug, Default, PartialEq)]
65#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
66pub struct AccountLimit {
67    /// <p><p>The limit that you requested. Valid values include the following:</p> <ul> <li> <p> <b>MAX<em>HEALTH</em>CHECKS<em>BY</em>OWNER</b>: The maximum number of health checks that you can create using the current account.</p> </li> <li> <p> <b>MAX<em>HOSTED</em>ZONES<em>BY</em>OWNER</b>: The maximum number of hosted zones that you can create using the current account.</p> </li> <li> <p> <b>MAX<em>REUSABLE</em>DELEGATION<em>SETS</em>BY<em>OWNER</b>: The maximum number of reusable delegation sets that you can create using the current account.</p> </li> <li> <p> <b>MAX</em>TRAFFIC<em>POLICIES</em>BY<em>OWNER</b>: The maximum number of traffic policies that you can create using the current account.</p> </li> <li> <p> <b>MAX</em>TRAFFIC<em>POLICY</em>INSTANCES<em>BY</em>OWNER</b>: The maximum number of traffic policy instances that you can create using the current account. (Traffic policy instances are referred to as traffic flow policy records in the Amazon Route 53 console.)</p> </li> </ul></p>
68    pub type_: String,
69    /// <p>The current value for the limit that is specified by <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_AccountLimit.html#Route53-Type-AccountLimit-Type">Type</a>.</p>
70    pub value: i64,
71}
72
73#[allow(dead_code)]
74struct AccountLimitDeserializer;
75impl AccountLimitDeserializer {
76    #[allow(dead_code, unused_variables)]
77    fn deserialize<T: Peek + Next>(
78        tag_name: &str,
79        stack: &mut T,
80    ) -> Result<AccountLimit, XmlParseError> {
81        deserialize_elements::<_, AccountLimit, _>(tag_name, stack, |name, stack, obj| {
82            match name {
83                "Type" => {
84                    obj.type_ = AccountLimitTypeDeserializer::deserialize("Type", stack)?;
85                }
86                "Value" => {
87                    obj.value = LimitValueDeserializer::deserialize("Value", stack)?;
88                }
89                _ => skip_tree(stack),
90            }
91            Ok(())
92        })
93    }
94}
95#[allow(dead_code)]
96struct AccountLimitTypeDeserializer;
97impl AccountLimitTypeDeserializer {
98    #[allow(dead_code, unused_variables)]
99    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
100        xml_util::deserialize_primitive(tag_name, stack, Ok)
101    }
102}
103
104pub struct AccountLimitTypeSerializer;
105impl AccountLimitTypeSerializer {
106    #[allow(unused_variables, warnings)]
107    pub fn serialize<W>(
108        mut writer: &mut EventWriter<W>,
109        name: &str,
110        obj: &String,
111    ) -> Result<(), xml::writer::Error>
112    where
113        W: Write,
114    {
115        write_characters_element(writer, name, obj)
116    }
117}
118
119/// <p>A complex type that identifies the CloudWatch alarm that you want Amazon Route 53 health checkers to use to determine whether the specified health check is healthy.</p>
120#[derive(Clone, Debug, Default, PartialEq)]
121#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
122#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
123pub struct AlarmIdentifier {
124    /// <p><p>The name of the CloudWatch alarm that you want Amazon Route 53 health checkers to use to determine whether this health check is healthy.</p> <note> <p>Route 53 supports CloudWatch alarms with the following features:</p> <ul> <li> <p>Standard-resolution metrics. High-resolution metrics aren&#39;t supported. For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/publishingMetrics.html#high-resolution-metrics">High-Resolution Metrics</a> in the <i>Amazon CloudWatch User Guide</i>.</p> </li> <li> <p>Statistics: Average, Minimum, Maximum, Sum, and SampleCount. Extended statistics aren&#39;t supported.</p> </li> </ul> </note></p>
125    pub name: String,
126    /// <p>For the CloudWatch alarm that you want Route 53 health checkers to use to determine whether this health check is healthy, the region that the alarm was created in.</p> <p>For the current list of CloudWatch regions, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#cw_region">Amazon CloudWatch</a> in the <i>AWS Service Endpoints</i> chapter of the <i>Amazon Web Services General Reference</i>.</p>
127    pub region: String,
128}
129
130#[allow(dead_code)]
131struct AlarmIdentifierDeserializer;
132impl AlarmIdentifierDeserializer {
133    #[allow(dead_code, unused_variables)]
134    fn deserialize<T: Peek + Next>(
135        tag_name: &str,
136        stack: &mut T,
137    ) -> Result<AlarmIdentifier, XmlParseError> {
138        deserialize_elements::<_, AlarmIdentifier, _>(tag_name, stack, |name, stack, obj| {
139            match name {
140                "Name" => {
141                    obj.name = AlarmNameDeserializer::deserialize("Name", stack)?;
142                }
143                "Region" => {
144                    obj.region = CloudWatchRegionDeserializer::deserialize("Region", stack)?;
145                }
146                _ => skip_tree(stack),
147            }
148            Ok(())
149        })
150    }
151}
152
153pub struct AlarmIdentifierSerializer;
154impl AlarmIdentifierSerializer {
155    #[allow(unused_variables, warnings)]
156    pub fn serialize<W>(
157        mut writer: &mut EventWriter<W>,
158        name: &str,
159        obj: &AlarmIdentifier,
160    ) -> Result<(), xml::writer::Error>
161    where
162        W: Write,
163    {
164        writer.write(xml::writer::XmlEvent::start_element(name))?;
165        write_characters_element(writer, "Name", &obj.name.to_string())?;
166        write_characters_element(writer, "Region", &obj.region.to_string())?;
167        writer.write(xml::writer::XmlEvent::end_element())
168    }
169}
170
171#[allow(dead_code)]
172struct AlarmNameDeserializer;
173impl AlarmNameDeserializer {
174    #[allow(dead_code, unused_variables)]
175    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
176        xml_util::deserialize_primitive(tag_name, stack, Ok)
177    }
178}
179
180pub struct AlarmNameSerializer;
181impl AlarmNameSerializer {
182    #[allow(unused_variables, warnings)]
183    pub fn serialize<W>(
184        mut writer: &mut EventWriter<W>,
185        name: &str,
186        obj: &String,
187    ) -> Result<(), xml::writer::Error>
188    where
189        W: Write,
190    {
191        write_characters_element(writer, name, obj)
192    }
193}
194
195#[allow(dead_code)]
196struct AliasHealthEnabledDeserializer;
197impl AliasHealthEnabledDeserializer {
198    #[allow(dead_code, unused_variables)]
199    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<bool, XmlParseError> {
200        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(bool::from_str(&s).unwrap()))
201    }
202}
203
204pub struct AliasHealthEnabledSerializer;
205impl AliasHealthEnabledSerializer {
206    #[allow(unused_variables, warnings)]
207    pub fn serialize<W>(
208        mut writer: &mut EventWriter<W>,
209        name: &str,
210        obj: &bool,
211    ) -> Result<(), xml::writer::Error>
212    where
213        W: Write,
214    {
215        write_characters_element(writer, name, &obj.to_string())
216    }
217}
218
219/// <p><p> <i>Alias resource record sets only:</i> Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to.</p> <p>When creating resource record sets for a private hosted zone, note the following:</p> <ul> <li> <p>Creating geolocation alias resource record sets or latency alias resource record sets in a private hosted zone is unsupported.</p> </li> <li> <p>For information about creating failover resource record sets in a private hosted zone, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">Configuring Failover in a Private Hosted Zone</a>.</p> </li> </ul></p>
220#[derive(Clone, Debug, Default, PartialEq)]
221#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
222#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
223pub struct AliasTarget {
224    /// <p><p> <i>Alias resource record sets only:</i> The value that you specify depends on where you want to route queries:</p> <dl> <dt>Amazon API Gateway custom regional APIs and edge-optimized APIs</dt> <dd> <p>Specify the applicable domain name for your API. You can get the applicable value using the AWS CLI command <a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-domain-names.html">get-domain-names</a>:</p> <ul> <li> <p>For regional APIs, specify the value of <code>regionalDomainName</code>.</p> </li> <li> <p>For edge-optimized APIs, specify the value of <code>distributionDomainName</code>. This is the name of the associated CloudFront distribution, such as <code>da1b2c3d4e5.cloudfront.net</code>.</p> </li> </ul> <note> <p>The name of the record that you&#39;re creating must match a custom domain name for your API, such as <code>api.example.com</code>.</p> </note> </dd> <dt>Amazon Virtual Private Cloud interface VPC endpoint</dt> <dd> <p>Enter the API endpoint for the interface endpoint, such as <code>vpce-123456789abcdef01-example-us-east-1a.elasticloadbalancing.us-east-1.vpce.amazonaws.com</code>. For edge-optimized APIs, this is the domain name for the corresponding CloudFront distribution. You can get the value of <code>DnsName</code> using the AWS CLI command <a href="https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html">describe-vpc-endpoints</a>.</p> </dd> <dt>CloudFront distribution</dt> <dd> <p>Specify the domain name that CloudFront assigned when you created your distribution.</p> <p>Your CloudFront distribution must include an alternate domain name that matches the name of the resource record set. For example, if the name of the resource record set is <i>acme.example.com</i>, your CloudFront distribution must include <i>acme.example.com</i> as one of the alternate domain names. For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html">Using Alternate Domain Names (CNAMEs)</a> in the <i>Amazon CloudFront Developer Guide</i>.</p> <p>You can&#39;t create a resource record set in a private hosted zone to route traffic to a CloudFront distribution.</p> <note> <p>For failover alias records, you can&#39;t specify a CloudFront distribution for both the primary and secondary records. A distribution must include an alternate domain name that matches the name of the record. However, the primary and secondary records have the same name, and you can&#39;t include the same alternate domain name in more than one distribution. </p> </note> </dd> <dt>Elastic Beanstalk environment</dt> <dd> <p>If the domain name for your Elastic Beanstalk environment includes the region that you deployed the environment in, you can create an alias record that routes traffic to the environment. For example, the domain name <code>my-environment.<i>us-west-2</i>.elasticbeanstalk.com</code> is a regionalized domain name. </p> <important> <p>For environments that were created before early 2016, the domain name doesn&#39;t include the region. To route traffic to these environments, you must create a CNAME record instead of an alias record. Note that you can&#39;t create a CNAME record for the root domain name. For example, if your domain name is example.com, you can create a record that routes traffic for acme.example.com to your Elastic Beanstalk environment, but you can&#39;t create a record that routes traffic for example.com to your Elastic Beanstalk environment.</p> </important> <p>For Elastic Beanstalk environments that have regionalized subdomains, specify the <code>CNAME</code> attribute for the environment. You can use the following methods to get the value of the CNAME attribute:</p> <ul> <li> <p> <i>AWS Management Console</i>: For information about how to get the value by using the console, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customdomains.html">Using Custom Domains with AWS Elastic Beanstalk</a> in the <i>AWS Elastic Beanstalk Developer Guide</i>.</p> </li> <li> <p> <i>Elastic Beanstalk API</i>: Use the <code>DescribeEnvironments</code> action to get the value of the <code>CNAME</code> attribute. For more information, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironments.html">DescribeEnvironments</a> in the <i>AWS Elastic Beanstalk API Reference</i>.</p> </li> <li> <p> <i>AWS CLI</i>: Use the <code>describe-environments</code> command to get the value of the <code>CNAME</code> attribute. For more information, see <a href="https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-environments.html">describe-environments</a> in the <i>AWS CLI Command Reference</i>.</p> </li> </ul> </dd> <dt>ELB load balancer</dt> <dd> <p>Specify the DNS name that is associated with the load balancer. Get the DNS name by using the AWS Management Console, the ELB API, or the AWS CLI. </p> <ul> <li> <p> <b>AWS Management Console</b>: Go to the EC2 page, choose <b>Load Balancers</b> in the navigation pane, choose the load balancer, choose the <b>Description</b> tab, and get the value of the <b>DNS name</b> field. </p> <p>If you&#39;re routing traffic to a Classic Load Balancer, get the value that begins with <b>dualstack</b>. If you&#39;re routing traffic to another type of load balancer, get the value that applies to the record type, A or AAAA.</p> </li> <li> <p> <b>Elastic Load Balancing API</b>: Use <code>DescribeLoadBalancers</code> to get the value of <code>DNSName</code>. For more information, see the applicable guide:</p> <ul> <li> <p>Classic Load Balancers: <a href="https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_DescribeLoadBalancers.html">DescribeLoadBalancers</a> </p> </li> <li> <p>Application and Network Load Balancers: <a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html">DescribeLoadBalancers</a> </p> </li> </ul> </li> <li> <p> <b>AWS CLI</b>: Use <code>describe-load-balancers</code> to get the value of <code>DNSName</code>. For more information, see the applicable guide:</p> <ul> <li> <p>Classic Load Balancers: <a href="http://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html">describe-load-balancers</a> </p> </li> <li> <p>Application and Network Load Balancers: <a href="http://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-load-balancers.html">describe-load-balancers</a> </p> </li> </ul> </li> </ul> </dd> <dt>AWS Global Accelerator accelerator</dt> <dd> <p>Specify the DNS name for your accelerator:</p> <ul> <li> <p> <b>Global Accelerator API:</b> To get the DNS name, use <a href="https://docs.aws.amazon.com/global-accelerator/latest/api/API_DescribeAccelerator.html">DescribeAccelerator</a>.</p> </li> <li> <p> <b>AWS CLI:</b> To get the DNS name, use <a href="https://docs.aws.amazon.com/cli/latest/reference/globalaccelerator/describe-accelerator.html">describe-accelerator</a>.</p> </li> </ul> </dd> <dt>Amazon S3 bucket that is configured as a static website</dt> <dd> <p>Specify the domain name of the Amazon S3 website endpoint that you created the bucket in, for example, <code>s3-website.us-east-2.amazonaws.com</code>. For more information about valid values, see the table <a href="https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_website_region_endpoints">Amazon S3 Website Endpoints</a> in the <i>Amazon Web Services General Reference</i>. For more information about using S3 buckets for websites, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started.html">Getting Started with Amazon Route 53</a> in the <i>Amazon Route 53 Developer Guide.</i> </p> </dd> <dt>Another Route 53 resource record set</dt> <dd> <p>Specify the value of the <code>Name</code> element for a resource record set in the current hosted zone.</p> <note> <p>If you&#39;re creating an alias record that has the same name as the hosted zone (known as the zone apex), you can&#39;t specify the domain name for a record for which the value of <code>Type</code> is <code>CNAME</code>. This is because the alias record must have the same type as the record that you&#39;re routing traffic to, and creating a CNAME record for the zone apex isn&#39;t supported even for an alias record.</p> </note> </dd> </dl></p>
225    pub dns_name: String,
226    /// <p> <i>Applies only to alias, failover alias, geolocation alias, latency alias, and weighted alias resource record sets:</i> When <code>EvaluateTargetHealth</code> is <code>true</code>, an alias resource record set inherits the health of the referenced AWS resource, such as an ELB load balancer or another resource record set in the hosted zone.</p> <p>Note the following:</p> <dl> <dt>CloudFront distributions</dt> <dd> <p>You can't set <code>EvaluateTargetHealth</code> to <code>true</code> when the alias target is a CloudFront distribution.</p> </dd> <dt>Elastic Beanstalk environments that have regionalized subdomains</dt> <dd> <p>If you specify an Elastic Beanstalk environment in <code>DNSName</code> and the environment contains an ELB load balancer, Elastic Load Balancing routes queries only to the healthy Amazon EC2 instances that are registered with the load balancer. (An environment automatically contains an ELB load balancer if it includes more than one Amazon EC2 instance.) If you set <code>EvaluateTargetHealth</code> to <code>true</code> and either no Amazon EC2 instances are healthy or the load balancer itself is unhealthy, Route 53 routes queries to other available resources that are healthy, if any. </p> <p>If the environment contains a single Amazon EC2 instance, there are no special requirements.</p> </dd> <dt>ELB load balancers</dt> <dd> <p>Health checking behavior depends on the type of load balancer:</p> <ul> <li> <p> <b>Classic Load Balancers</b>: If you specify an ELB Classic Load Balancer in <code>DNSName</code>, Elastic Load Balancing routes queries only to the healthy Amazon EC2 instances that are registered with the load balancer. If you set <code>EvaluateTargetHealth</code> to <code>true</code> and either no EC2 instances are healthy or the load balancer itself is unhealthy, Route 53 routes queries to other resources.</p> </li> <li> <p> <b>Application and Network Load Balancers</b>: If you specify an ELB Application or Network Load Balancer and you set <code>EvaluateTargetHealth</code> to <code>true</code>, Route 53 routes queries to the load balancer based on the health of the target groups that are associated with the load balancer:</p> <ul> <li> <p>For an Application or Network Load Balancer to be considered healthy, every target group that contains targets must contain at least one healthy target. If any target group contains only unhealthy targets, the load balancer is considered unhealthy, and Route 53 routes queries to other resources.</p> </li> <li> <p>A target group that has no registered targets is considered unhealthy.</p> </li> </ul> </li> </ul> <note> <p>When you create a load balancer, you configure settings for Elastic Load Balancing health checks; they're not Route 53 health checks, but they perform a similar function. Do not create Route 53 health checks for the EC2 instances that you register with an ELB load balancer. </p> </note> </dd> <dt>S3 buckets</dt> <dd> <p>There are no special requirements for setting <code>EvaluateTargetHealth</code> to <code>true</code> when the alias target is an S3 bucket.</p> </dd> <dt>Other records in the same hosted zone</dt> <dd> <p>If the AWS resource that you specify in <code>DNSName</code> is a record or a group of records (for example, a group of weighted records) but is not another alias record, we recommend that you associate a health check with all of the records in the alias target. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-complex-configs.html#dns-failover-complex-configs-hc-omitting">What Happens When You Omit Health Checks?</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> </dd> </dl> <p>For more information and examples, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Amazon Route 53 Health Checks and DNS Failover</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
227    pub evaluate_target_health: bool,
228    /// <p><p> <i>Alias resource records sets only</i>: The value used depends on where you want to route traffic:</p> <dl> <dt>Amazon API Gateway custom regional APIs and edge-optimized APIs</dt> <dd> <p>Specify the hosted zone ID for your API. You can get the applicable value using the AWS CLI command <a href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-domain-names.html">get-domain-names</a>:</p> <ul> <li> <p>For regional APIs, specify the value of <code>regionalHostedZoneId</code>.</p> </li> <li> <p>For edge-optimized APIs, specify the value of <code>distributionHostedZoneId</code>.</p> </li> </ul> </dd> <dt>Amazon Virtual Private Cloud interface VPC endpoint</dt> <dd> <p>Specify the hosted zone ID for your interface endpoint. You can get the value of <code>HostedZoneId</code> using the AWS CLI command <a href="https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html">describe-vpc-endpoints</a>.</p> </dd> <dt>CloudFront distribution</dt> <dd> <p>Specify <code>Z2FDTNDATAQYW2</code>.</p> <note> <p>Alias resource record sets for CloudFront can&#39;t be created in a private zone.</p> </note> </dd> <dt>Elastic Beanstalk environment</dt> <dd> <p>Specify the hosted zone ID for the region that you created the environment in. The environment must have a regionalized subdomain. For a list of regions and the corresponding hosted zone IDs, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#elasticbeanstalk_region">AWS Elastic Beanstalk</a> in the &quot;AWS Service Endpoints&quot; chapter of the <i>Amazon Web Services General Reference</i>.</p> </dd> <dt>ELB load balancer</dt> <dd> <p>Specify the value of the hosted zone ID for the load balancer. Use the following methods to get the hosted zone ID:</p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/general/latest/gr/elb.html">Service Endpoints</a> table in the &quot;Elastic Load Balancing Endpoints and Quotas&quot; topic in the <i>Amazon Web Services General Reference</i>: Use the value that corresponds with the region that you created your load balancer in. Note that there are separate columns for Application and Classic Load Balancers and for Network Load Balancers.</p> </li> <li> <p> <b>AWS Management Console</b>: Go to the Amazon EC2 page, choose <b>Load Balancers</b> in the navigation pane, select the load balancer, and get the value of the <b>Hosted zone</b> field on the <b>Description</b> tab.</p> </li> <li> <p> <b>Elastic Load Balancing API</b>: Use <code>DescribeLoadBalancers</code> to get the applicable value. For more information, see the applicable guide:</p> <ul> <li> <p>Classic Load Balancers: Use <a href="https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_DescribeLoadBalancers.html">DescribeLoadBalancers</a> to get the value of <code>CanonicalHostedZoneNameId</code>.</p> </li> <li> <p>Application and Network Load Balancers: Use <a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html">DescribeLoadBalancers</a> to get the value of <code>CanonicalHostedZoneId</code>.</p> </li> </ul> </li> <li> <p> <b>AWS CLI</b>: Use <code>describe-load-balancers</code> to get the applicable value. For more information, see the applicable guide:</p> <ul> <li> <p>Classic Load Balancers: Use <a href="http://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html">describe-load-balancers</a> to get the value of <code>CanonicalHostedZoneNameId</code>.</p> </li> <li> <p>Application and Network Load Balancers: Use <a href="http://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-load-balancers.html">describe-load-balancers</a> to get the value of <code>CanonicalHostedZoneId</code>.</p> </li> </ul> </li> </ul> </dd> <dt>AWS Global Accelerator accelerator</dt> <dd> <p>Specify <code>Z2BJ6XQ5FK7U4H</code>.</p> </dd> <dt>An Amazon S3 bucket configured as a static website</dt> <dd> <p>Specify the hosted zone ID for the region that you created the bucket in. For more information about valid values, see the table <a href="https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_website_region_endpoints">Amazon S3 Website Endpoints</a> in the <i>Amazon Web Services General Reference</i>.</p> </dd> <dt>Another Route 53 resource record set in your hosted zone</dt> <dd> <p>Specify the hosted zone ID of your hosted zone. (An alias resource record set can&#39;t reference a resource record set in a different hosted zone.)</p> </dd> </dl></p>
229    pub hosted_zone_id: String,
230}
231
232#[allow(dead_code)]
233struct AliasTargetDeserializer;
234impl AliasTargetDeserializer {
235    #[allow(dead_code, unused_variables)]
236    fn deserialize<T: Peek + Next>(
237        tag_name: &str,
238        stack: &mut T,
239    ) -> Result<AliasTarget, XmlParseError> {
240        deserialize_elements::<_, AliasTarget, _>(tag_name, stack, |name, stack, obj| {
241            match name {
242                "DNSName" => {
243                    obj.dns_name = DNSNameDeserializer::deserialize("DNSName", stack)?;
244                }
245                "EvaluateTargetHealth" => {
246                    obj.evaluate_target_health =
247                        AliasHealthEnabledDeserializer::deserialize("EvaluateTargetHealth", stack)?;
248                }
249                "HostedZoneId" => {
250                    obj.hosted_zone_id =
251                        ResourceIdDeserializer::deserialize("HostedZoneId", stack)?;
252                }
253                _ => skip_tree(stack),
254            }
255            Ok(())
256        })
257    }
258}
259
260pub struct AliasTargetSerializer;
261impl AliasTargetSerializer {
262    #[allow(unused_variables, warnings)]
263    pub fn serialize<W>(
264        mut writer: &mut EventWriter<W>,
265        name: &str,
266        obj: &AliasTarget,
267    ) -> Result<(), xml::writer::Error>
268    where
269        W: Write,
270    {
271        writer.write(xml::writer::XmlEvent::start_element(name))?;
272        write_characters_element(writer, "DNSName", &obj.dns_name.to_string())?;
273        write_characters_element(
274            writer,
275            "EvaluateTargetHealth",
276            &obj.evaluate_target_health.to_string(),
277        )?;
278        write_characters_element(writer, "HostedZoneId", &obj.hosted_zone_id.to_string())?;
279        writer.write(xml::writer::XmlEvent::end_element())
280    }
281}
282
283pub struct AssociateVPCCommentSerializer;
284impl AssociateVPCCommentSerializer {
285    #[allow(unused_variables, warnings)]
286    pub fn serialize<W>(
287        mut writer: &mut EventWriter<W>,
288        name: &str,
289        obj: &String,
290    ) -> Result<(), xml::writer::Error>
291    where
292        W: Write,
293    {
294        write_characters_element(writer, name, obj)
295    }
296}
297
298/// <p>A complex type that contains information about the request to associate a VPC with a private hosted zone.</p>
299#[derive(Clone, Debug, Default, PartialEq)]
300#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
301pub struct AssociateVPCWithHostedZoneRequest {
302    /// <p> <i>Optional:</i> A comment about the association request.</p>
303    pub comment: Option<String>,
304    /// <p>The ID of the private hosted zone that you want to associate an Amazon VPC with.</p> <p>Note that you can't associate a VPC with a hosted zone that doesn't have an existing VPC association.</p>
305    pub hosted_zone_id: String,
306    /// <p>A complex type that contains information about the VPC that you want to associate with a private hosted zone.</p>
307    pub vpc: VPC,
308}
309
310pub struct AssociateVPCWithHostedZoneRequestSerializer;
311impl AssociateVPCWithHostedZoneRequestSerializer {
312    #[allow(unused_variables, warnings)]
313    pub fn serialize<W>(
314        mut writer: &mut EventWriter<W>,
315        name: &str,
316        obj: &AssociateVPCWithHostedZoneRequest,
317        xmlns: &str,
318    ) -> Result<(), xml::writer::Error>
319    where
320        W: Write,
321    {
322        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
323        if let Some(ref value) = obj.comment {
324            &AssociateVPCCommentSerializer::serialize(&mut writer, "Comment", value)?;
325        }
326        VPCSerializer::serialize(&mut writer, "VPC", &obj.vpc)?;
327        writer.write(xml::writer::XmlEvent::end_element())
328    }
329}
330/// <p>A complex type that contains the response information for the <code>AssociateVPCWithHostedZone</code> request.</p>
331#[derive(Clone, Debug, Default, PartialEq)]
332#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
333pub struct AssociateVPCWithHostedZoneResponse {
334    /// <p>A complex type that describes the changes made to your hosted zone.</p>
335    pub change_info: ChangeInfo,
336}
337
338#[allow(dead_code)]
339struct AssociateVPCWithHostedZoneResponseDeserializer;
340impl AssociateVPCWithHostedZoneResponseDeserializer {
341    #[allow(dead_code, unused_variables)]
342    fn deserialize<T: Peek + Next>(
343        tag_name: &str,
344        stack: &mut T,
345    ) -> Result<AssociateVPCWithHostedZoneResponse, XmlParseError> {
346        deserialize_elements::<_, AssociateVPCWithHostedZoneResponse, _>(
347            tag_name,
348            stack,
349            |name, stack, obj| {
350                match name {
351                    "ChangeInfo" => {
352                        obj.change_info = ChangeInfoDeserializer::deserialize("ChangeInfo", stack)?;
353                    }
354                    _ => skip_tree(stack),
355                }
356                Ok(())
357            },
358        )
359    }
360}
361/// <p>The information for each resource record set that you want to change.</p>
362#[derive(Clone, Debug, Default, PartialEq)]
363#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
364pub struct Change {
365    /// <p><p>The action to perform:</p> <ul> <li> <p> <code>CREATE</code>: Creates a resource record set that has the specified values.</p> </li> <li> <p> <code>DELETE</code>: Deletes a existing resource record set.</p> <important> <p>To delete the resource record set that is associated with a traffic policy instance, use <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_DeleteTrafficPolicyInstance.html">DeleteTrafficPolicyInstance</a>. Amazon Route 53 will delete the resource record set automatically. If you delete the resource record set by using <code>ChangeResourceRecordSets</code>, Route 53 doesn&#39;t automatically delete the traffic policy instance, and you&#39;ll continue to be charged for it even though it&#39;s no longer in use. </p> </important> </li> <li> <p> <code>UPSERT</code>: If a resource record set doesn&#39;t already exist, Route 53 creates it. If a resource record set does exist, Route 53 updates it with the values in the request.</p> </li> </ul></p>
366    pub action: String,
367    /// <p>Information about the resource record set to create, delete, or update.</p>
368    pub resource_record_set: ResourceRecordSet,
369}
370
371pub struct ChangeSerializer;
372impl ChangeSerializer {
373    #[allow(unused_variables, warnings)]
374    pub fn serialize<W>(
375        mut writer: &mut EventWriter<W>,
376        name: &str,
377        obj: &Change,
378    ) -> Result<(), xml::writer::Error>
379    where
380        W: Write,
381    {
382        writer.write(xml::writer::XmlEvent::start_element(name))?;
383        write_characters_element(writer, "Action", &obj.action.to_string())?;
384        ResourceRecordSetSerializer::serialize(
385            &mut writer,
386            "ResourceRecordSet",
387            &obj.resource_record_set,
388        )?;
389        writer.write(xml::writer::XmlEvent::end_element())
390    }
391}
392
393pub struct ChangeActionSerializer;
394impl ChangeActionSerializer {
395    #[allow(unused_variables, warnings)]
396    pub fn serialize<W>(
397        mut writer: &mut EventWriter<W>,
398        name: &str,
399        obj: &String,
400    ) -> Result<(), xml::writer::Error>
401    where
402        W: Write,
403    {
404        write_characters_element(writer, name, obj)
405    }
406}
407
408/// <p>The information for a change request.</p>
409#[derive(Clone, Debug, Default, PartialEq)]
410#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
411pub struct ChangeBatch {
412    /// <p>Information about the changes to make to the record sets.</p>
413    pub changes: Vec<Change>,
414    /// <p> <i>Optional:</i> Any comments you want to include about a change batch request.</p>
415    pub comment: Option<String>,
416}
417
418pub struct ChangeBatchSerializer;
419impl ChangeBatchSerializer {
420    #[allow(unused_variables, warnings)]
421    pub fn serialize<W>(
422        mut writer: &mut EventWriter<W>,
423        name: &str,
424        obj: &ChangeBatch,
425    ) -> Result<(), xml::writer::Error>
426    where
427        W: Write,
428    {
429        writer.write(xml::writer::XmlEvent::start_element(name))?;
430        ChangesSerializer::serialize(&mut writer, "Changes", &obj.changes)?;
431        if let Some(ref value) = obj.comment {
432            write_characters_element(writer, "Comment", &value.to_string())?;
433        }
434        writer.write(xml::writer::XmlEvent::end_element())
435    }
436}
437
438/// <p>A complex type that describes change information about changes made to your hosted zone.</p>
439#[derive(Clone, Debug, Default, PartialEq)]
440#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
441pub struct ChangeInfo {
442    /// <p>A complex type that describes change information about changes made to your hosted zone.</p> <p>This element contains an ID that you use when performing a <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html">GetChange</a> action to get detailed information about the change.</p>
443    pub comment: Option<String>,
444    /// <p>The ID of the request.</p>
445    pub id: String,
446    /// <p>The current state of the request. <code>PENDING</code> indicates that this request has not yet been applied to all Amazon Route 53 DNS servers.</p>
447    pub status: String,
448    /// <p>The date and time that the change request was submitted in <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601 format</a> and Coordinated Universal Time (UTC). For example, the value <code>2017-03-27T17:48:16.751Z</code> represents March 27, 2017 at 17:48:16.751 UTC.</p>
449    pub submitted_at: String,
450}
451
452#[allow(dead_code)]
453struct ChangeInfoDeserializer;
454impl ChangeInfoDeserializer {
455    #[allow(dead_code, unused_variables)]
456    fn deserialize<T: Peek + Next>(
457        tag_name: &str,
458        stack: &mut T,
459    ) -> Result<ChangeInfo, XmlParseError> {
460        deserialize_elements::<_, ChangeInfo, _>(tag_name, stack, |name, stack, obj| {
461            match name {
462                "Comment" => {
463                    obj.comment = Some(ResourceDescriptionDeserializer::deserialize(
464                        "Comment", stack,
465                    )?);
466                }
467                "Id" => {
468                    obj.id = ResourceIdDeserializer::deserialize("Id", stack)?;
469                }
470                "Status" => {
471                    obj.status = ChangeStatusDeserializer::deserialize("Status", stack)?;
472                }
473                "SubmittedAt" => {
474                    obj.submitted_at = TimeStampDeserializer::deserialize("SubmittedAt", stack)?;
475                }
476                _ => skip_tree(stack),
477            }
478            Ok(())
479        })
480    }
481}
482/// <p>A complex type that contains change information for the resource record set.</p>
483#[derive(Clone, Debug, Default, PartialEq)]
484#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
485pub struct ChangeResourceRecordSetsRequest {
486    /// <p>A complex type that contains an optional comment and the <code>Changes</code> element.</p>
487    pub change_batch: ChangeBatch,
488    /// <p>The ID of the hosted zone that contains the resource record sets that you want to change.</p>
489    pub hosted_zone_id: String,
490}
491
492pub struct ChangeResourceRecordSetsRequestSerializer;
493impl ChangeResourceRecordSetsRequestSerializer {
494    #[allow(unused_variables, warnings)]
495    pub fn serialize<W>(
496        mut writer: &mut EventWriter<W>,
497        name: &str,
498        obj: &ChangeResourceRecordSetsRequest,
499        xmlns: &str,
500    ) -> Result<(), xml::writer::Error>
501    where
502        W: Write,
503    {
504        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
505        ChangeBatchSerializer::serialize(&mut writer, "ChangeBatch", &obj.change_batch)?;
506        writer.write(xml::writer::XmlEvent::end_element())
507    }
508}
509/// <p>A complex type containing the response for the request.</p>
510#[derive(Clone, Debug, Default, PartialEq)]
511#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
512pub struct ChangeResourceRecordSetsResponse {
513    /// <p>A complex type that contains information about changes made to your hosted zone.</p> <p>This element contains an ID that you use when performing a <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html">GetChange</a> action to get detailed information about the change.</p>
514    pub change_info: ChangeInfo,
515}
516
517#[allow(dead_code)]
518struct ChangeResourceRecordSetsResponseDeserializer;
519impl ChangeResourceRecordSetsResponseDeserializer {
520    #[allow(dead_code, unused_variables)]
521    fn deserialize<T: Peek + Next>(
522        tag_name: &str,
523        stack: &mut T,
524    ) -> Result<ChangeResourceRecordSetsResponse, XmlParseError> {
525        deserialize_elements::<_, ChangeResourceRecordSetsResponse, _>(
526            tag_name,
527            stack,
528            |name, stack, obj| {
529                match name {
530                    "ChangeInfo" => {
531                        obj.change_info = ChangeInfoDeserializer::deserialize("ChangeInfo", stack)?;
532                    }
533                    _ => skip_tree(stack),
534                }
535                Ok(())
536            },
537        )
538    }
539}
540#[allow(dead_code)]
541struct ChangeStatusDeserializer;
542impl ChangeStatusDeserializer {
543    #[allow(dead_code, unused_variables)]
544    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
545        xml_util::deserialize_primitive(tag_name, stack, Ok)
546    }
547}
548/// <p>A complex type that contains information about the tags that you want to add, edit, or delete.</p>
549#[derive(Clone, Debug, Default, PartialEq)]
550#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
551pub struct ChangeTagsForResourceRequest {
552    /// <p>A complex type that contains a list of the tags that you want to add to the specified health check or hosted zone and/or the tags that you want to edit <code>Value</code> for.</p> <p>You can add a maximum of 10 tags to a health check or a hosted zone.</p>
553    pub add_tags: Option<Vec<Tag>>,
554    /// <p>A complex type that contains a list of the tags that you want to delete from the specified health check or hosted zone. You can specify up to 10 keys.</p>
555    pub remove_tag_keys: Option<Vec<String>>,
556    /// <p>The ID of the resource for which you want to add, change, or delete tags.</p>
557    pub resource_id: String,
558    /// <p><p>The type of the resource.</p> <ul> <li> <p>The resource type for health checks is <code>healthcheck</code>.</p> </li> <li> <p>The resource type for hosted zones is <code>hostedzone</code>.</p> </li> </ul></p>
559    pub resource_type: String,
560}
561
562pub struct ChangeTagsForResourceRequestSerializer;
563impl ChangeTagsForResourceRequestSerializer {
564    #[allow(unused_variables, warnings)]
565    pub fn serialize<W>(
566        mut writer: &mut EventWriter<W>,
567        name: &str,
568        obj: &ChangeTagsForResourceRequest,
569        xmlns: &str,
570    ) -> Result<(), xml::writer::Error>
571    where
572        W: Write,
573    {
574        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
575        if let Some(ref value) = obj.add_tags {
576            &TagListSerializer::serialize(&mut writer, "AddTags", value)?;
577        }
578        if let Some(ref value) = obj.remove_tag_keys {
579            &TagKeyListSerializer::serialize(&mut writer, "RemoveTagKeys", value)?;
580        }
581        writer.write(xml::writer::XmlEvent::end_element())
582    }
583}
584/// <p>Empty response for the request.</p>
585#[derive(Clone, Debug, Default, PartialEq)]
586#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
587pub struct ChangeTagsForResourceResponse {}
588
589#[allow(dead_code)]
590struct ChangeTagsForResourceResponseDeserializer;
591impl ChangeTagsForResourceResponseDeserializer {
592    #[allow(dead_code, unused_variables)]
593    fn deserialize<T: Peek + Next>(
594        tag_name: &str,
595        stack: &mut T,
596    ) -> Result<ChangeTagsForResourceResponse, XmlParseError> {
597        xml_util::start_element(tag_name, stack)?;
598
599        let obj = ChangeTagsForResourceResponse::default();
600
601        xml_util::end_element(tag_name, stack)?;
602
603        Ok(obj)
604    }
605}
606
607pub struct ChangesSerializer;
608impl ChangesSerializer {
609    #[allow(unused_variables, warnings)]
610    pub fn serialize<W>(
611        mut writer: &mut EventWriter<W>,
612        name: &str,
613        obj: &Vec<Change>,
614    ) -> Result<(), xml::writer::Error>
615    where
616        W: Write,
617    {
618        writer.write(xml::writer::XmlEvent::start_element(name))?;
619        for element in obj {
620            ChangeSerializer::serialize(writer, "Change", element)?;
621        }
622        writer.write(xml::writer::XmlEvent::end_element())?;
623        Ok(())
624    }
625}
626
627#[allow(dead_code)]
628struct CheckerIpRangesDeserializer;
629impl CheckerIpRangesDeserializer {
630    #[allow(dead_code, unused_variables)]
631    fn deserialize<T: Peek + Next>(
632        tag_name: &str,
633        stack: &mut T,
634    ) -> Result<Vec<String>, XmlParseError> {
635        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
636            if name == "member" {
637                obj.push(IPAddressCidrDeserializer::deserialize("member", stack)?);
638            } else {
639                skip_tree(stack);
640            }
641            Ok(())
642        })
643    }
644}
645#[allow(dead_code)]
646struct ChildHealthCheckListDeserializer;
647impl ChildHealthCheckListDeserializer {
648    #[allow(dead_code, unused_variables)]
649    fn deserialize<T: Peek + Next>(
650        tag_name: &str,
651        stack: &mut T,
652    ) -> Result<Vec<String>, XmlParseError> {
653        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
654            if name == "ChildHealthCheck" {
655                obj.push(HealthCheckIdDeserializer::deserialize(
656                    "ChildHealthCheck",
657                    stack,
658                )?);
659            } else {
660                skip_tree(stack);
661            }
662            Ok(())
663        })
664    }
665}
666
667pub struct ChildHealthCheckListSerializer;
668impl ChildHealthCheckListSerializer {
669    #[allow(unused_variables, warnings)]
670    pub fn serialize<W>(
671        mut writer: &mut EventWriter<W>,
672        name: &str,
673        obj: &Vec<String>,
674    ) -> Result<(), xml::writer::Error>
675    where
676        W: Write,
677    {
678        writer.write(xml::writer::XmlEvent::start_element(name))?;
679        for element in obj {
680            HealthCheckIdSerializer::serialize(writer, "ChildHealthCheck", element)?;
681        }
682        writer.write(xml::writer::XmlEvent::end_element())?;
683        Ok(())
684    }
685}
686
687/// <p>A complex type that contains information about the CloudWatch alarm that Amazon Route 53 is monitoring for this health check.</p>
688#[derive(Clone, Debug, Default, PartialEq)]
689#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
690pub struct CloudWatchAlarmConfiguration {
691    /// <p>For the metric that the CloudWatch alarm is associated with, the arithmetic operation that is used for the comparison.</p>
692    pub comparison_operator: String,
693    /// <p>For the metric that the CloudWatch alarm is associated with, a complex type that contains information about the dimensions for the metric. For information, see <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html">Amazon CloudWatch Namespaces, Dimensions, and Metrics Reference</a> in the <i>Amazon CloudWatch User Guide</i>.</p>
694    pub dimensions: Option<Vec<Dimension>>,
695    /// <p>For the metric that the CloudWatch alarm is associated with, the number of periods that the metric is compared to the threshold.</p>
696    pub evaluation_periods: i64,
697    /// <p>The name of the CloudWatch metric that the alarm is associated with.</p>
698    pub metric_name: String,
699    /// <p>The namespace of the metric that the alarm is associated with. For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html">Amazon CloudWatch Namespaces, Dimensions, and Metrics Reference</a> in the <i>Amazon CloudWatch User Guide</i>.</p>
700    pub namespace: String,
701    /// <p>For the metric that the CloudWatch alarm is associated with, the duration of one evaluation period in seconds.</p>
702    pub period: i64,
703    /// <p>For the metric that the CloudWatch alarm is associated with, the statistic that is applied to the metric.</p>
704    pub statistic: String,
705    /// <p>For the metric that the CloudWatch alarm is associated with, the value the metric is compared with.</p>
706    pub threshold: f64,
707}
708
709#[allow(dead_code)]
710struct CloudWatchAlarmConfigurationDeserializer;
711impl CloudWatchAlarmConfigurationDeserializer {
712    #[allow(dead_code, unused_variables)]
713    fn deserialize<T: Peek + Next>(
714        tag_name: &str,
715        stack: &mut T,
716    ) -> Result<CloudWatchAlarmConfiguration, XmlParseError> {
717        deserialize_elements::<_, CloudWatchAlarmConfiguration, _>(
718            tag_name,
719            stack,
720            |name, stack, obj| {
721                match name {
722                    "ComparisonOperator" => {
723                        obj.comparison_operator = ComparisonOperatorDeserializer::deserialize(
724                            "ComparisonOperator",
725                            stack,
726                        )?;
727                    }
728                    "Dimensions" => {
729                        obj.dimensions
730                            .get_or_insert(vec![])
731                            .extend(DimensionListDeserializer::deserialize("Dimensions", stack)?);
732                    }
733                    "EvaluationPeriods" => {
734                        obj.evaluation_periods =
735                            EvaluationPeriodsDeserializer::deserialize("EvaluationPeriods", stack)?;
736                    }
737                    "MetricName" => {
738                        obj.metric_name = MetricNameDeserializer::deserialize("MetricName", stack)?;
739                    }
740                    "Namespace" => {
741                        obj.namespace = NamespaceDeserializer::deserialize("Namespace", stack)?;
742                    }
743                    "Period" => {
744                        obj.period = PeriodDeserializer::deserialize("Period", stack)?;
745                    }
746                    "Statistic" => {
747                        obj.statistic = StatisticDeserializer::deserialize("Statistic", stack)?;
748                    }
749                    "Threshold" => {
750                        obj.threshold = ThresholdDeserializer::deserialize("Threshold", stack)?;
751                    }
752                    _ => skip_tree(stack),
753                }
754                Ok(())
755            },
756        )
757    }
758}
759#[allow(dead_code)]
760struct CloudWatchLogsLogGroupArnDeserializer;
761impl CloudWatchLogsLogGroupArnDeserializer {
762    #[allow(dead_code, unused_variables)]
763    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
764        xml_util::deserialize_primitive(tag_name, stack, Ok)
765    }
766}
767
768pub struct CloudWatchLogsLogGroupArnSerializer;
769impl CloudWatchLogsLogGroupArnSerializer {
770    #[allow(unused_variables, warnings)]
771    pub fn serialize<W>(
772        mut writer: &mut EventWriter<W>,
773        name: &str,
774        obj: &String,
775    ) -> Result<(), xml::writer::Error>
776    where
777        W: Write,
778    {
779        write_characters_element(writer, name, obj)
780    }
781}
782
783#[allow(dead_code)]
784struct CloudWatchRegionDeserializer;
785impl CloudWatchRegionDeserializer {
786    #[allow(dead_code, unused_variables)]
787    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
788        xml_util::deserialize_primitive(tag_name, stack, Ok)
789    }
790}
791
792pub struct CloudWatchRegionSerializer;
793impl CloudWatchRegionSerializer {
794    #[allow(unused_variables, warnings)]
795    pub fn serialize<W>(
796        mut writer: &mut EventWriter<W>,
797        name: &str,
798        obj: &String,
799    ) -> Result<(), xml::writer::Error>
800    where
801        W: Write,
802    {
803        write_characters_element(writer, name, obj)
804    }
805}
806
807#[allow(dead_code)]
808struct ComparisonOperatorDeserializer;
809impl ComparisonOperatorDeserializer {
810    #[allow(dead_code, unused_variables)]
811    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
812        xml_util::deserialize_primitive(tag_name, stack, Ok)
813    }
814}
815/// <p>A complex type that contains the health check request information.</p>
816#[derive(Clone, Debug, Default, PartialEq)]
817#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
818pub struct CreateHealthCheckRequest {
819    /// <p><p>A unique string that identifies the request and that allows you to retry a failed <code>CreateHealthCheck</code> request without the risk of creating two identical health checks:</p> <ul> <li> <p>If you send a <code>CreateHealthCheck</code> request with the same <code>CallerReference</code> and settings as a previous request, and if the health check doesn&#39;t exist, Amazon Route 53 creates the health check. If the health check does exist, Route 53 returns the settings for the existing health check.</p> </li> <li> <p>If you send a <code>CreateHealthCheck</code> request with the same <code>CallerReference</code> as a deleted health check, regardless of the settings, Route 53 returns a <code>HealthCheckAlreadyExists</code> error.</p> </li> <li> <p>If you send a <code>CreateHealthCheck</code> request with the same <code>CallerReference</code> as an existing health check but with different settings, Route 53 returns a <code>HealthCheckAlreadyExists</code> error.</p> </li> <li> <p>If you send a <code>CreateHealthCheck</code> request with a unique <code>CallerReference</code> but settings identical to an existing health check, Route 53 creates the health check.</p> </li> </ul></p>
820    pub caller_reference: String,
821    /// <p>A complex type that contains settings for a new health check.</p>
822    pub health_check_config: HealthCheckConfig,
823}
824
825pub struct CreateHealthCheckRequestSerializer;
826impl CreateHealthCheckRequestSerializer {
827    #[allow(unused_variables, warnings)]
828    pub fn serialize<W>(
829        mut writer: &mut EventWriter<W>,
830        name: &str,
831        obj: &CreateHealthCheckRequest,
832        xmlns: &str,
833    ) -> Result<(), xml::writer::Error>
834    where
835        W: Write,
836    {
837        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
838        HealthCheckNonceSerializer::serialize(
839            &mut writer,
840            "CallerReference",
841            &obj.caller_reference,
842        )?;
843        HealthCheckConfigSerializer::serialize(
844            &mut writer,
845            "HealthCheckConfig",
846            &obj.health_check_config,
847        )?;
848        writer.write(xml::writer::XmlEvent::end_element())
849    }
850}
851/// <p>A complex type containing the response information for the new health check.</p>
852#[derive(Clone, Debug, Default, PartialEq)]
853#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
854pub struct CreateHealthCheckResponse {
855    /// <p>A complex type that contains identifying information about the health check.</p>
856    pub health_check: HealthCheck,
857    /// <p>The unique URL representing the new health check.</p>
858    pub location: String,
859}
860
861#[allow(dead_code)]
862struct CreateHealthCheckResponseDeserializer;
863impl CreateHealthCheckResponseDeserializer {
864    #[allow(dead_code, unused_variables)]
865    fn deserialize<T: Peek + Next>(
866        tag_name: &str,
867        stack: &mut T,
868    ) -> Result<CreateHealthCheckResponse, XmlParseError> {
869        deserialize_elements::<_, CreateHealthCheckResponse, _>(
870            tag_name,
871            stack,
872            |name, stack, obj| {
873                match name {
874                    "HealthCheck" => {
875                        obj.health_check =
876                            HealthCheckDeserializer::deserialize("HealthCheck", stack)?;
877                    }
878                    _ => skip_tree(stack),
879                }
880                Ok(())
881            },
882        )
883    }
884}
885/// <p>A complex type that contains information about the request to create a public or private hosted zone.</p>
886#[derive(Clone, Debug, Default, PartialEq)]
887#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
888pub struct CreateHostedZoneRequest {
889    /// <p>A unique string that identifies the request and that allows failed <code>CreateHostedZone</code> requests to be retried without the risk of executing the operation twice. You must use a unique <code>CallerReference</code> string every time you submit a <code>CreateHostedZone</code> request. <code>CallerReference</code> can be any unique string, for example, a date/time stamp.</p>
890    pub caller_reference: String,
891    /// <p>If you want to associate a reusable delegation set with this hosted zone, the ID that Amazon Route 53 assigned to the reusable delegation set when you created it. For more information about reusable delegation sets, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateReusableDelegationSet.html">CreateReusableDelegationSet</a>.</p>
892    pub delegation_set_id: Option<String>,
893    /// <p>(Optional) A complex type that contains the following optional values:</p> <ul> <li> <p>For public and private hosted zones, an optional comment</p> </li> <li> <p>For private hosted zones, an optional <code>PrivateZone</code> element</p> </li> </ul> <p>If you don't specify a comment or the <code>PrivateZone</code> element, omit <code>HostedZoneConfig</code> and the other elements.</p>
894    pub hosted_zone_config: Option<HostedZoneConfig>,
895    /// <p>The name of the domain. Specify a fully qualified domain name, for example, <i>www.example.com</i>. The trailing dot is optional; Amazon Route 53 assumes that the domain name is fully qualified. This means that Route 53 treats <i>www.example.com</i> (without a trailing dot) and <i>www.example.com.</i> (with a trailing dot) as identical.</p> <p>If you're creating a public hosted zone, this is the name you have registered with your DNS registrar. If your domain name is registered with a registrar other than Route 53, change the name servers for your domain to the set of <code>NameServers</code> that <code>CreateHostedZone</code> returns in <code>DelegationSet</code>.</p>
896    pub name: String,
897    /// <p>(Private hosted zones only) A complex type that contains information about the Amazon VPC that you're associating with this hosted zone.</p> <p>You can specify only one Amazon VPC when you create a private hosted zone. To associate additional Amazon VPCs with the hosted zone, use <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_AssociateVPCWithHostedZone.html">AssociateVPCWithHostedZone</a> after you create a hosted zone.</p>
898    pub vpc: Option<VPC>,
899}
900
901pub struct CreateHostedZoneRequestSerializer;
902impl CreateHostedZoneRequestSerializer {
903    #[allow(unused_variables, warnings)]
904    pub fn serialize<W>(
905        mut writer: &mut EventWriter<W>,
906        name: &str,
907        obj: &CreateHostedZoneRequest,
908        xmlns: &str,
909    ) -> Result<(), xml::writer::Error>
910    where
911        W: Write,
912    {
913        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
914        NonceSerializer::serialize(&mut writer, "CallerReference", &obj.caller_reference)?;
915        if let Some(ref value) = obj.delegation_set_id {
916            &ResourceIdSerializer::serialize(&mut writer, "DelegationSetId", value)?;
917        }
918        if let Some(ref value) = obj.hosted_zone_config {
919            &HostedZoneConfigSerializer::serialize(&mut writer, "HostedZoneConfig", value)?;
920        }
921        DNSNameSerializer::serialize(&mut writer, "Name", &obj.name)?;
922        if let Some(ref value) = obj.vpc {
923            &VPCSerializer::serialize(&mut writer, "VPC", value)?;
924        }
925        writer.write(xml::writer::XmlEvent::end_element())
926    }
927}
928/// <p>A complex type containing the response information for the hosted zone.</p>
929#[derive(Clone, Debug, Default, PartialEq)]
930#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
931pub struct CreateHostedZoneResponse {
932    /// <p>A complex type that contains information about the <code>CreateHostedZone</code> request.</p>
933    pub change_info: ChangeInfo,
934    /// <p>A complex type that describes the name servers for this hosted zone.</p>
935    pub delegation_set: DelegationSet,
936    /// <p>A complex type that contains general information about the hosted zone.</p>
937    pub hosted_zone: HostedZone,
938    /// <p>The unique URL representing the new hosted zone.</p>
939    pub location: String,
940    /// <p>A complex type that contains information about an Amazon VPC that you associated with this hosted zone.</p>
941    pub vpc: Option<VPC>,
942}
943
944#[allow(dead_code)]
945struct CreateHostedZoneResponseDeserializer;
946impl CreateHostedZoneResponseDeserializer {
947    #[allow(dead_code, unused_variables)]
948    fn deserialize<T: Peek + Next>(
949        tag_name: &str,
950        stack: &mut T,
951    ) -> Result<CreateHostedZoneResponse, XmlParseError> {
952        deserialize_elements::<_, CreateHostedZoneResponse, _>(
953            tag_name,
954            stack,
955            |name, stack, obj| {
956                match name {
957                    "ChangeInfo" => {
958                        obj.change_info = ChangeInfoDeserializer::deserialize("ChangeInfo", stack)?;
959                    }
960                    "DelegationSet" => {
961                        obj.delegation_set =
962                            DelegationSetDeserializer::deserialize("DelegationSet", stack)?;
963                    }
964                    "HostedZone" => {
965                        obj.hosted_zone = HostedZoneDeserializer::deserialize("HostedZone", stack)?;
966                    }
967                    "VPC" => {
968                        obj.vpc = Some(VPCDeserializer::deserialize("VPC", stack)?);
969                    }
970                    _ => skip_tree(stack),
971                }
972                Ok(())
973            },
974        )
975    }
976}
977#[derive(Clone, Debug, Default, PartialEq)]
978#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
979pub struct CreateQueryLoggingConfigRequest {
980    /// <p>The Amazon Resource Name (ARN) for the log group that you want to Amazon Route 53 to send query logs to. This is the format of the ARN:</p> <p>arn:aws:logs:<i>region</i>:<i>account-id</i>:log-group:<i>log_group_name</i> </p> <p>To get the ARN for a log group, you can use the CloudWatch console, the <a href="https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DescribeLogGroups.html">DescribeLogGroups</a> API action, the <a href="https://docs.aws.amazon.com/cli/latest/reference/logs/describe-log-groups.html">describe-log-groups</a> command, or the applicable command in one of the AWS SDKs.</p>
981    pub cloud_watch_logs_log_group_arn: String,
982    /// <p>The ID of the hosted zone that you want to log queries for. You can log queries only for public hosted zones.</p>
983    pub hosted_zone_id: String,
984}
985
986pub struct CreateQueryLoggingConfigRequestSerializer;
987impl CreateQueryLoggingConfigRequestSerializer {
988    #[allow(unused_variables, warnings)]
989    pub fn serialize<W>(
990        mut writer: &mut EventWriter<W>,
991        name: &str,
992        obj: &CreateQueryLoggingConfigRequest,
993        xmlns: &str,
994    ) -> Result<(), xml::writer::Error>
995    where
996        W: Write,
997    {
998        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
999        CloudWatchLogsLogGroupArnSerializer::serialize(
1000            &mut writer,
1001            "CloudWatchLogsLogGroupArn",
1002            &obj.cloud_watch_logs_log_group_arn,
1003        )?;
1004        ResourceIdSerializer::serialize(&mut writer, "HostedZoneId", &obj.hosted_zone_id)?;
1005        writer.write(xml::writer::XmlEvent::end_element())
1006    }
1007}
1008#[derive(Clone, Debug, Default, PartialEq)]
1009#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1010pub struct CreateQueryLoggingConfigResponse {
1011    /// <p>The unique URL representing the new query logging configuration.</p>
1012    pub location: String,
1013    /// <p>A complex type that contains the ID for a query logging configuration, the ID of the hosted zone that you want to log queries for, and the ARN for the log group that you want Amazon Route 53 to send query logs to.</p>
1014    pub query_logging_config: QueryLoggingConfig,
1015}
1016
1017#[allow(dead_code)]
1018struct CreateQueryLoggingConfigResponseDeserializer;
1019impl CreateQueryLoggingConfigResponseDeserializer {
1020    #[allow(dead_code, unused_variables)]
1021    fn deserialize<T: Peek + Next>(
1022        tag_name: &str,
1023        stack: &mut T,
1024    ) -> Result<CreateQueryLoggingConfigResponse, XmlParseError> {
1025        deserialize_elements::<_, CreateQueryLoggingConfigResponse, _>(
1026            tag_name,
1027            stack,
1028            |name, stack, obj| {
1029                match name {
1030                    "QueryLoggingConfig" => {
1031                        obj.query_logging_config = QueryLoggingConfigDeserializer::deserialize(
1032                            "QueryLoggingConfig",
1033                            stack,
1034                        )?;
1035                    }
1036                    _ => skip_tree(stack),
1037                }
1038                Ok(())
1039            },
1040        )
1041    }
1042}
1043#[derive(Clone, Debug, Default, PartialEq)]
1044#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1045pub struct CreateReusableDelegationSetRequest {
1046    /// <p>A unique string that identifies the request, and that allows you to retry failed <code>CreateReusableDelegationSet</code> requests without the risk of executing the operation twice. You must use a unique <code>CallerReference</code> string every time you submit a <code>CreateReusableDelegationSet</code> request. <code>CallerReference</code> can be any unique string, for example a date/time stamp.</p>
1047    pub caller_reference: String,
1048    /// <p>If you want to mark the delegation set for an existing hosted zone as reusable, the ID for that hosted zone.</p>
1049    pub hosted_zone_id: Option<String>,
1050}
1051
1052pub struct CreateReusableDelegationSetRequestSerializer;
1053impl CreateReusableDelegationSetRequestSerializer {
1054    #[allow(unused_variables, warnings)]
1055    pub fn serialize<W>(
1056        mut writer: &mut EventWriter<W>,
1057        name: &str,
1058        obj: &CreateReusableDelegationSetRequest,
1059        xmlns: &str,
1060    ) -> Result<(), xml::writer::Error>
1061    where
1062        W: Write,
1063    {
1064        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
1065        NonceSerializer::serialize(&mut writer, "CallerReference", &obj.caller_reference)?;
1066        if let Some(ref value) = obj.hosted_zone_id {
1067            &ResourceIdSerializer::serialize(&mut writer, "HostedZoneId", value)?;
1068        }
1069        writer.write(xml::writer::XmlEvent::end_element())
1070    }
1071}
1072#[derive(Clone, Debug, Default, PartialEq)]
1073#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1074pub struct CreateReusableDelegationSetResponse {
1075    /// <p>A complex type that contains name server information.</p>
1076    pub delegation_set: DelegationSet,
1077    /// <p>The unique URL representing the new reusable delegation set.</p>
1078    pub location: String,
1079}
1080
1081#[allow(dead_code)]
1082struct CreateReusableDelegationSetResponseDeserializer;
1083impl CreateReusableDelegationSetResponseDeserializer {
1084    #[allow(dead_code, unused_variables)]
1085    fn deserialize<T: Peek + Next>(
1086        tag_name: &str,
1087        stack: &mut T,
1088    ) -> Result<CreateReusableDelegationSetResponse, XmlParseError> {
1089        deserialize_elements::<_, CreateReusableDelegationSetResponse, _>(
1090            tag_name,
1091            stack,
1092            |name, stack, obj| {
1093                match name {
1094                    "DelegationSet" => {
1095                        obj.delegation_set =
1096                            DelegationSetDeserializer::deserialize("DelegationSet", stack)?;
1097                    }
1098                    _ => skip_tree(stack),
1099                }
1100                Ok(())
1101            },
1102        )
1103    }
1104}
1105/// <p>A complex type that contains information about the resource record sets that you want to create based on a specified traffic policy.</p>
1106#[derive(Clone, Debug, Default, PartialEq)]
1107#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1108pub struct CreateTrafficPolicyInstanceRequest {
1109    /// <p>The ID of the hosted zone that you want Amazon Route 53 to create resource record sets in by using the configuration in a traffic policy.</p>
1110    pub hosted_zone_id: String,
1111    /// <p>The domain name (such as example.com) or subdomain name (such as www.example.com) for which Amazon Route 53 responds to DNS queries by using the resource record sets that Route 53 creates for this traffic policy instance.</p>
1112    pub name: String,
1113    /// <p>(Optional) The TTL that you want Amazon Route 53 to assign to all of the resource record sets that it creates in the specified hosted zone.</p>
1114    pub ttl: i64,
1115    /// <p>The ID of the traffic policy that you want to use to create resource record sets in the specified hosted zone.</p>
1116    pub traffic_policy_id: String,
1117    /// <p>The version of the traffic policy that you want to use to create resource record sets in the specified hosted zone.</p>
1118    pub traffic_policy_version: i64,
1119}
1120
1121pub struct CreateTrafficPolicyInstanceRequestSerializer;
1122impl CreateTrafficPolicyInstanceRequestSerializer {
1123    #[allow(unused_variables, warnings)]
1124    pub fn serialize<W>(
1125        mut writer: &mut EventWriter<W>,
1126        name: &str,
1127        obj: &CreateTrafficPolicyInstanceRequest,
1128        xmlns: &str,
1129    ) -> Result<(), xml::writer::Error>
1130    where
1131        W: Write,
1132    {
1133        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
1134        ResourceIdSerializer::serialize(&mut writer, "HostedZoneId", &obj.hosted_zone_id)?;
1135        DNSNameSerializer::serialize(&mut writer, "Name", &obj.name)?;
1136        TTLSerializer::serialize(&mut writer, "TTL", &obj.ttl)?;
1137        TrafficPolicyIdSerializer::serialize(
1138            &mut writer,
1139            "TrafficPolicyId",
1140            &obj.traffic_policy_id,
1141        )?;
1142        TrafficPolicyVersionSerializer::serialize(
1143            &mut writer,
1144            "TrafficPolicyVersion",
1145            &obj.traffic_policy_version,
1146        )?;
1147        writer.write(xml::writer::XmlEvent::end_element())
1148    }
1149}
1150/// <p>A complex type that contains the response information for the <code>CreateTrafficPolicyInstance</code> request.</p>
1151#[derive(Clone, Debug, Default, PartialEq)]
1152#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1153pub struct CreateTrafficPolicyInstanceResponse {
1154    /// <p>A unique URL that represents a new traffic policy instance.</p>
1155    pub location: String,
1156    /// <p>A complex type that contains settings for the new traffic policy instance.</p>
1157    pub traffic_policy_instance: TrafficPolicyInstance,
1158}
1159
1160#[allow(dead_code)]
1161struct CreateTrafficPolicyInstanceResponseDeserializer;
1162impl CreateTrafficPolicyInstanceResponseDeserializer {
1163    #[allow(dead_code, unused_variables)]
1164    fn deserialize<T: Peek + Next>(
1165        tag_name: &str,
1166        stack: &mut T,
1167    ) -> Result<CreateTrafficPolicyInstanceResponse, XmlParseError> {
1168        deserialize_elements::<_, CreateTrafficPolicyInstanceResponse, _>(
1169            tag_name,
1170            stack,
1171            |name, stack, obj| {
1172                match name {
1173                    "TrafficPolicyInstance" => {
1174                        obj.traffic_policy_instance =
1175                            TrafficPolicyInstanceDeserializer::deserialize(
1176                                "TrafficPolicyInstance",
1177                                stack,
1178                            )?;
1179                    }
1180                    _ => skip_tree(stack),
1181                }
1182                Ok(())
1183            },
1184        )
1185    }
1186}
1187/// <p>A complex type that contains information about the traffic policy that you want to create.</p>
1188#[derive(Clone, Debug, Default, PartialEq)]
1189#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1190pub struct CreateTrafficPolicyRequest {
1191    /// <p>(Optional) Any comments that you want to include about the traffic policy.</p>
1192    pub comment: Option<String>,
1193    /// <p>The definition of this traffic policy in JSON format. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/api-policies-traffic-policy-document-format.html">Traffic Policy Document Format</a>.</p>
1194    pub document: String,
1195    /// <p>The name of the traffic policy.</p>
1196    pub name: String,
1197}
1198
1199pub struct CreateTrafficPolicyRequestSerializer;
1200impl CreateTrafficPolicyRequestSerializer {
1201    #[allow(unused_variables, warnings)]
1202    pub fn serialize<W>(
1203        mut writer: &mut EventWriter<W>,
1204        name: &str,
1205        obj: &CreateTrafficPolicyRequest,
1206        xmlns: &str,
1207    ) -> Result<(), xml::writer::Error>
1208    where
1209        W: Write,
1210    {
1211        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
1212        if let Some(ref value) = obj.comment {
1213            &TrafficPolicyCommentSerializer::serialize(&mut writer, "Comment", value)?;
1214        }
1215        TrafficPolicyDocumentSerializer::serialize(&mut writer, "Document", &obj.document)?;
1216        TrafficPolicyNameSerializer::serialize(&mut writer, "Name", &obj.name)?;
1217        writer.write(xml::writer::XmlEvent::end_element())
1218    }
1219}
1220/// <p>A complex type that contains the response information for the <code>CreateTrafficPolicy</code> request.</p>
1221#[derive(Clone, Debug, Default, PartialEq)]
1222#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1223pub struct CreateTrafficPolicyResponse {
1224    /// <p>A unique URL that represents a new traffic policy.</p>
1225    pub location: String,
1226    /// <p>A complex type that contains settings for the new traffic policy.</p>
1227    pub traffic_policy: TrafficPolicy,
1228}
1229
1230#[allow(dead_code)]
1231struct CreateTrafficPolicyResponseDeserializer;
1232impl CreateTrafficPolicyResponseDeserializer {
1233    #[allow(dead_code, unused_variables)]
1234    fn deserialize<T: Peek + Next>(
1235        tag_name: &str,
1236        stack: &mut T,
1237    ) -> Result<CreateTrafficPolicyResponse, XmlParseError> {
1238        deserialize_elements::<_, CreateTrafficPolicyResponse, _>(
1239            tag_name,
1240            stack,
1241            |name, stack, obj| {
1242                match name {
1243                    "TrafficPolicy" => {
1244                        obj.traffic_policy =
1245                            TrafficPolicyDeserializer::deserialize("TrafficPolicy", stack)?;
1246                    }
1247                    _ => skip_tree(stack),
1248                }
1249                Ok(())
1250            },
1251        )
1252    }
1253}
1254/// <p>A complex type that contains information about the traffic policy that you want to create a new version for.</p>
1255#[derive(Clone, Debug, Default, PartialEq)]
1256#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1257pub struct CreateTrafficPolicyVersionRequest {
1258    /// <p>The comment that you specified in the <code>CreateTrafficPolicyVersion</code> request, if any.</p>
1259    pub comment: Option<String>,
1260    /// <p>The definition of this version of the traffic policy, in JSON format. You specified the JSON in the <code>CreateTrafficPolicyVersion</code> request. For more information about the JSON format, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateTrafficPolicy.html">CreateTrafficPolicy</a>.</p>
1261    pub document: String,
1262    /// <p>The ID of the traffic policy for which you want to create a new version.</p>
1263    pub id: String,
1264}
1265
1266pub struct CreateTrafficPolicyVersionRequestSerializer;
1267impl CreateTrafficPolicyVersionRequestSerializer {
1268    #[allow(unused_variables, warnings)]
1269    pub fn serialize<W>(
1270        mut writer: &mut EventWriter<W>,
1271        name: &str,
1272        obj: &CreateTrafficPolicyVersionRequest,
1273        xmlns: &str,
1274    ) -> Result<(), xml::writer::Error>
1275    where
1276        W: Write,
1277    {
1278        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
1279        if let Some(ref value) = obj.comment {
1280            &TrafficPolicyCommentSerializer::serialize(&mut writer, "Comment", value)?;
1281        }
1282        TrafficPolicyDocumentSerializer::serialize(&mut writer, "Document", &obj.document)?;
1283        writer.write(xml::writer::XmlEvent::end_element())
1284    }
1285}
1286/// <p>A complex type that contains the response information for the <code>CreateTrafficPolicyVersion</code> request.</p>
1287#[derive(Clone, Debug, Default, PartialEq)]
1288#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1289pub struct CreateTrafficPolicyVersionResponse {
1290    /// <p>A unique URL that represents a new traffic policy version.</p>
1291    pub location: String,
1292    /// <p>A complex type that contains settings for the new version of the traffic policy.</p>
1293    pub traffic_policy: TrafficPolicy,
1294}
1295
1296#[allow(dead_code)]
1297struct CreateTrafficPolicyVersionResponseDeserializer;
1298impl CreateTrafficPolicyVersionResponseDeserializer {
1299    #[allow(dead_code, unused_variables)]
1300    fn deserialize<T: Peek + Next>(
1301        tag_name: &str,
1302        stack: &mut T,
1303    ) -> Result<CreateTrafficPolicyVersionResponse, XmlParseError> {
1304        deserialize_elements::<_, CreateTrafficPolicyVersionResponse, _>(
1305            tag_name,
1306            stack,
1307            |name, stack, obj| {
1308                match name {
1309                    "TrafficPolicy" => {
1310                        obj.traffic_policy =
1311                            TrafficPolicyDeserializer::deserialize("TrafficPolicy", stack)?;
1312                    }
1313                    _ => skip_tree(stack),
1314                }
1315                Ok(())
1316            },
1317        )
1318    }
1319}
1320/// <p>A complex type that contains information about the request to authorize associating a VPC with your private hosted zone. Authorization is only required when a private hosted zone and a VPC were created by using different accounts.</p>
1321#[derive(Clone, Debug, Default, PartialEq)]
1322#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1323pub struct CreateVPCAssociationAuthorizationRequest {
1324    /// <p>The ID of the private hosted zone that you want to authorize associating a VPC with.</p>
1325    pub hosted_zone_id: String,
1326    /// <p>A complex type that contains the VPC ID and region for the VPC that you want to authorize associating with your hosted zone.</p>
1327    pub vpc: VPC,
1328}
1329
1330pub struct CreateVPCAssociationAuthorizationRequestSerializer;
1331impl CreateVPCAssociationAuthorizationRequestSerializer {
1332    #[allow(unused_variables, warnings)]
1333    pub fn serialize<W>(
1334        mut writer: &mut EventWriter<W>,
1335        name: &str,
1336        obj: &CreateVPCAssociationAuthorizationRequest,
1337        xmlns: &str,
1338    ) -> Result<(), xml::writer::Error>
1339    where
1340        W: Write,
1341    {
1342        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
1343        VPCSerializer::serialize(&mut writer, "VPC", &obj.vpc)?;
1344        writer.write(xml::writer::XmlEvent::end_element())
1345    }
1346}
1347/// <p>A complex type that contains the response information from a <code>CreateVPCAssociationAuthorization</code> request.</p>
1348#[derive(Clone, Debug, Default, PartialEq)]
1349#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1350pub struct CreateVPCAssociationAuthorizationResponse {
1351    /// <p>The ID of the hosted zone that you authorized associating a VPC with.</p>
1352    pub hosted_zone_id: String,
1353    /// <p>The VPC that you authorized associating with a hosted zone.</p>
1354    pub vpc: VPC,
1355}
1356
1357#[allow(dead_code)]
1358struct CreateVPCAssociationAuthorizationResponseDeserializer;
1359impl CreateVPCAssociationAuthorizationResponseDeserializer {
1360    #[allow(dead_code, unused_variables)]
1361    fn deserialize<T: Peek + Next>(
1362        tag_name: &str,
1363        stack: &mut T,
1364    ) -> Result<CreateVPCAssociationAuthorizationResponse, XmlParseError> {
1365        deserialize_elements::<_, CreateVPCAssociationAuthorizationResponse, _>(
1366            tag_name,
1367            stack,
1368            |name, stack, obj| {
1369                match name {
1370                    "HostedZoneId" => {
1371                        obj.hosted_zone_id =
1372                            ResourceIdDeserializer::deserialize("HostedZoneId", stack)?;
1373                    }
1374                    "VPC" => {
1375                        obj.vpc = VPCDeserializer::deserialize("VPC", stack)?;
1376                    }
1377                    _ => skip_tree(stack),
1378                }
1379                Ok(())
1380            },
1381        )
1382    }
1383}
1384#[allow(dead_code)]
1385struct DNSNameDeserializer;
1386impl DNSNameDeserializer {
1387    #[allow(dead_code, unused_variables)]
1388    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
1389        xml_util::deserialize_primitive(tag_name, stack, Ok)
1390    }
1391}
1392
1393pub struct DNSNameSerializer;
1394impl DNSNameSerializer {
1395    #[allow(unused_variables, warnings)]
1396    pub fn serialize<W>(
1397        mut writer: &mut EventWriter<W>,
1398        name: &str,
1399        obj: &String,
1400    ) -> Result<(), xml::writer::Error>
1401    where
1402        W: Write,
1403    {
1404        write_characters_element(writer, name, obj)
1405    }
1406}
1407
1408#[allow(dead_code)]
1409struct DNSRCodeDeserializer;
1410impl DNSRCodeDeserializer {
1411    #[allow(dead_code, unused_variables)]
1412    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
1413        xml_util::deserialize_primitive(tag_name, stack, Ok)
1414    }
1415}
1416/// <p>A complex type that lists the name servers in a delegation set, as well as the <code>CallerReference</code> and the <code>ID</code> for the delegation set.</p>
1417#[derive(Clone, Debug, Default, PartialEq)]
1418#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1419pub struct DelegationSet {
1420    /// <p>The value that you specified for <code>CallerReference</code> when you created the reusable delegation set.</p>
1421    pub caller_reference: Option<String>,
1422    /// <p>The ID that Amazon Route 53 assigns to a reusable delegation set.</p>
1423    pub id: Option<String>,
1424    /// <p>A complex type that contains a list of the authoritative name servers for a hosted zone or for a reusable delegation set.</p>
1425    pub name_servers: Vec<String>,
1426}
1427
1428#[allow(dead_code)]
1429struct DelegationSetDeserializer;
1430impl DelegationSetDeserializer {
1431    #[allow(dead_code, unused_variables)]
1432    fn deserialize<T: Peek + Next>(
1433        tag_name: &str,
1434        stack: &mut T,
1435    ) -> Result<DelegationSet, XmlParseError> {
1436        deserialize_elements::<_, DelegationSet, _>(tag_name, stack, |name, stack, obj| {
1437            match name {
1438                "CallerReference" => {
1439                    obj.caller_reference =
1440                        Some(NonceDeserializer::deserialize("CallerReference", stack)?);
1441                }
1442                "Id" => {
1443                    obj.id = Some(ResourceIdDeserializer::deserialize("Id", stack)?);
1444                }
1445                "NameServers" => {
1446                    obj.name_servers
1447                        .extend(DelegationSetNameServersDeserializer::deserialize(
1448                            "NameServers",
1449                            stack,
1450                        )?);
1451                }
1452                _ => skip_tree(stack),
1453            }
1454            Ok(())
1455        })
1456    }
1457}
1458#[allow(dead_code)]
1459struct DelegationSetNameServersDeserializer;
1460impl DelegationSetNameServersDeserializer {
1461    #[allow(dead_code, unused_variables)]
1462    fn deserialize<T: Peek + Next>(
1463        tag_name: &str,
1464        stack: &mut T,
1465    ) -> Result<Vec<String>, XmlParseError> {
1466        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
1467            if name == "NameServer" {
1468                obj.push(DNSNameDeserializer::deserialize("NameServer", stack)?);
1469            } else {
1470                skip_tree(stack);
1471            }
1472            Ok(())
1473        })
1474    }
1475}
1476#[allow(dead_code)]
1477struct DelegationSetsDeserializer;
1478impl DelegationSetsDeserializer {
1479    #[allow(dead_code, unused_variables)]
1480    fn deserialize<T: Peek + Next>(
1481        tag_name: &str,
1482        stack: &mut T,
1483    ) -> Result<Vec<DelegationSet>, XmlParseError> {
1484        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
1485            if name == "DelegationSet" {
1486                obj.push(DelegationSetDeserializer::deserialize(
1487                    "DelegationSet",
1488                    stack,
1489                )?);
1490            } else {
1491                skip_tree(stack);
1492            }
1493            Ok(())
1494        })
1495    }
1496}
1497/// <p>This action deletes a health check.</p>
1498#[derive(Clone, Debug, Default, PartialEq)]
1499#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1500pub struct DeleteHealthCheckRequest {
1501    /// <p>The ID of the health check that you want to delete.</p>
1502    pub health_check_id: String,
1503}
1504
1505/// <p>An empty element.</p>
1506#[derive(Clone, Debug, Default, PartialEq)]
1507#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1508pub struct DeleteHealthCheckResponse {}
1509
1510#[allow(dead_code)]
1511struct DeleteHealthCheckResponseDeserializer;
1512impl DeleteHealthCheckResponseDeserializer {
1513    #[allow(dead_code, unused_variables)]
1514    fn deserialize<T: Peek + Next>(
1515        tag_name: &str,
1516        stack: &mut T,
1517    ) -> Result<DeleteHealthCheckResponse, XmlParseError> {
1518        xml_util::start_element(tag_name, stack)?;
1519
1520        let obj = DeleteHealthCheckResponse::default();
1521
1522        xml_util::end_element(tag_name, stack)?;
1523
1524        Ok(obj)
1525    }
1526}
1527/// <p>A request to delete a hosted zone.</p>
1528#[derive(Clone, Debug, Default, PartialEq)]
1529#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1530pub struct DeleteHostedZoneRequest {
1531    /// <p>The ID of the hosted zone you want to delete.</p>
1532    pub id: String,
1533}
1534
1535/// <p>A complex type that contains the response to a <code>DeleteHostedZone</code> request.</p>
1536#[derive(Clone, Debug, Default, PartialEq)]
1537#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1538pub struct DeleteHostedZoneResponse {
1539    /// <p>A complex type that contains the ID, the status, and the date and time of a request to delete a hosted zone.</p>
1540    pub change_info: ChangeInfo,
1541}
1542
1543#[allow(dead_code)]
1544struct DeleteHostedZoneResponseDeserializer;
1545impl DeleteHostedZoneResponseDeserializer {
1546    #[allow(dead_code, unused_variables)]
1547    fn deserialize<T: Peek + Next>(
1548        tag_name: &str,
1549        stack: &mut T,
1550    ) -> Result<DeleteHostedZoneResponse, XmlParseError> {
1551        deserialize_elements::<_, DeleteHostedZoneResponse, _>(
1552            tag_name,
1553            stack,
1554            |name, stack, obj| {
1555                match name {
1556                    "ChangeInfo" => {
1557                        obj.change_info = ChangeInfoDeserializer::deserialize("ChangeInfo", stack)?;
1558                    }
1559                    _ => skip_tree(stack),
1560                }
1561                Ok(())
1562            },
1563        )
1564    }
1565}
1566#[derive(Clone, Debug, Default, PartialEq)]
1567#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1568pub struct DeleteQueryLoggingConfigRequest {
1569    /// <p>The ID of the configuration that you want to delete. </p>
1570    pub id: String,
1571}
1572
1573#[derive(Clone, Debug, Default, PartialEq)]
1574#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1575pub struct DeleteQueryLoggingConfigResponse {}
1576
1577#[allow(dead_code)]
1578struct DeleteQueryLoggingConfigResponseDeserializer;
1579impl DeleteQueryLoggingConfigResponseDeserializer {
1580    #[allow(dead_code, unused_variables)]
1581    fn deserialize<T: Peek + Next>(
1582        tag_name: &str,
1583        stack: &mut T,
1584    ) -> Result<DeleteQueryLoggingConfigResponse, XmlParseError> {
1585        xml_util::start_element(tag_name, stack)?;
1586
1587        let obj = DeleteQueryLoggingConfigResponse::default();
1588
1589        xml_util::end_element(tag_name, stack)?;
1590
1591        Ok(obj)
1592    }
1593}
1594/// <p>A request to delete a reusable delegation set.</p>
1595#[derive(Clone, Debug, Default, PartialEq)]
1596#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1597pub struct DeleteReusableDelegationSetRequest {
1598    /// <p>The ID of the reusable delegation set that you want to delete.</p>
1599    pub id: String,
1600}
1601
1602/// <p>An empty element.</p>
1603#[derive(Clone, Debug, Default, PartialEq)]
1604#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1605pub struct DeleteReusableDelegationSetResponse {}
1606
1607#[allow(dead_code)]
1608struct DeleteReusableDelegationSetResponseDeserializer;
1609impl DeleteReusableDelegationSetResponseDeserializer {
1610    #[allow(dead_code, unused_variables)]
1611    fn deserialize<T: Peek + Next>(
1612        tag_name: &str,
1613        stack: &mut T,
1614    ) -> Result<DeleteReusableDelegationSetResponse, XmlParseError> {
1615        xml_util::start_element(tag_name, stack)?;
1616
1617        let obj = DeleteReusableDelegationSetResponse::default();
1618
1619        xml_util::end_element(tag_name, stack)?;
1620
1621        Ok(obj)
1622    }
1623}
1624/// <p>A request to delete a specified traffic policy instance.</p>
1625#[derive(Clone, Debug, Default, PartialEq)]
1626#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1627pub struct DeleteTrafficPolicyInstanceRequest {
1628    /// <p><p>The ID of the traffic policy instance that you want to delete. </p> <important> <p>When you delete a traffic policy instance, Amazon Route 53 also deletes all of the resource record sets that were created when you created the traffic policy instance.</p> </important></p>
1629    pub id: String,
1630}
1631
1632/// <p>An empty element.</p>
1633#[derive(Clone, Debug, Default, PartialEq)]
1634#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1635pub struct DeleteTrafficPolicyInstanceResponse {}
1636
1637#[allow(dead_code)]
1638struct DeleteTrafficPolicyInstanceResponseDeserializer;
1639impl DeleteTrafficPolicyInstanceResponseDeserializer {
1640    #[allow(dead_code, unused_variables)]
1641    fn deserialize<T: Peek + Next>(
1642        tag_name: &str,
1643        stack: &mut T,
1644    ) -> Result<DeleteTrafficPolicyInstanceResponse, XmlParseError> {
1645        xml_util::start_element(tag_name, stack)?;
1646
1647        let obj = DeleteTrafficPolicyInstanceResponse::default();
1648
1649        xml_util::end_element(tag_name, stack)?;
1650
1651        Ok(obj)
1652    }
1653}
1654/// <p>A request to delete a specified traffic policy version.</p>
1655#[derive(Clone, Debug, Default, PartialEq)]
1656#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1657pub struct DeleteTrafficPolicyRequest {
1658    /// <p>The ID of the traffic policy that you want to delete.</p>
1659    pub id: String,
1660    /// <p>The version number of the traffic policy that you want to delete.</p>
1661    pub version: i64,
1662}
1663
1664/// <p>An empty element.</p>
1665#[derive(Clone, Debug, Default, PartialEq)]
1666#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1667pub struct DeleteTrafficPolicyResponse {}
1668
1669#[allow(dead_code)]
1670struct DeleteTrafficPolicyResponseDeserializer;
1671impl DeleteTrafficPolicyResponseDeserializer {
1672    #[allow(dead_code, unused_variables)]
1673    fn deserialize<T: Peek + Next>(
1674        tag_name: &str,
1675        stack: &mut T,
1676    ) -> Result<DeleteTrafficPolicyResponse, XmlParseError> {
1677        xml_util::start_element(tag_name, stack)?;
1678
1679        let obj = DeleteTrafficPolicyResponse::default();
1680
1681        xml_util::end_element(tag_name, stack)?;
1682
1683        Ok(obj)
1684    }
1685}
1686/// <p>A complex type that contains information about the request to remove authorization to associate a VPC that was created by one AWS account with a hosted zone that was created with a different AWS account. </p>
1687#[derive(Clone, Debug, Default, PartialEq)]
1688#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1689pub struct DeleteVPCAssociationAuthorizationRequest {
1690    /// <p>When removing authorization to associate a VPC that was created by one AWS account with a hosted zone that was created with a different AWS account, the ID of the hosted zone.</p>
1691    pub hosted_zone_id: String,
1692    /// <p>When removing authorization to associate a VPC that was created by one AWS account with a hosted zone that was created with a different AWS account, a complex type that includes the ID and region of the VPC.</p>
1693    pub vpc: VPC,
1694}
1695
1696pub struct DeleteVPCAssociationAuthorizationRequestSerializer;
1697impl DeleteVPCAssociationAuthorizationRequestSerializer {
1698    #[allow(unused_variables, warnings)]
1699    pub fn serialize<W>(
1700        mut writer: &mut EventWriter<W>,
1701        name: &str,
1702        obj: &DeleteVPCAssociationAuthorizationRequest,
1703        xmlns: &str,
1704    ) -> Result<(), xml::writer::Error>
1705    where
1706        W: Write,
1707    {
1708        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
1709        VPCSerializer::serialize(&mut writer, "VPC", &obj.vpc)?;
1710        writer.write(xml::writer::XmlEvent::end_element())
1711    }
1712}
1713/// <p>Empty response for the request.</p>
1714#[derive(Clone, Debug, Default, PartialEq)]
1715#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1716pub struct DeleteVPCAssociationAuthorizationResponse {}
1717
1718#[allow(dead_code)]
1719struct DeleteVPCAssociationAuthorizationResponseDeserializer;
1720impl DeleteVPCAssociationAuthorizationResponseDeserializer {
1721    #[allow(dead_code, unused_variables)]
1722    fn deserialize<T: Peek + Next>(
1723        tag_name: &str,
1724        stack: &mut T,
1725    ) -> Result<DeleteVPCAssociationAuthorizationResponse, XmlParseError> {
1726        xml_util::start_element(tag_name, stack)?;
1727
1728        let obj = DeleteVPCAssociationAuthorizationResponse::default();
1729
1730        xml_util::end_element(tag_name, stack)?;
1731
1732        Ok(obj)
1733    }
1734}
1735/// <p>For the metric that the CloudWatch alarm is associated with, a complex type that contains information about one dimension.</p>
1736#[derive(Clone, Debug, Default, PartialEq)]
1737#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1738pub struct Dimension {
1739    /// <p>For the metric that the CloudWatch alarm is associated with, the name of one dimension.</p>
1740    pub name: String,
1741    /// <p>For the metric that the CloudWatch alarm is associated with, the value of one dimension.</p>
1742    pub value: String,
1743}
1744
1745#[allow(dead_code)]
1746struct DimensionDeserializer;
1747impl DimensionDeserializer {
1748    #[allow(dead_code, unused_variables)]
1749    fn deserialize<T: Peek + Next>(
1750        tag_name: &str,
1751        stack: &mut T,
1752    ) -> Result<Dimension, XmlParseError> {
1753        deserialize_elements::<_, Dimension, _>(tag_name, stack, |name, stack, obj| {
1754            match name {
1755                "Name" => {
1756                    obj.name = DimensionFieldDeserializer::deserialize("Name", stack)?;
1757                }
1758                "Value" => {
1759                    obj.value = DimensionFieldDeserializer::deserialize("Value", stack)?;
1760                }
1761                _ => skip_tree(stack),
1762            }
1763            Ok(())
1764        })
1765    }
1766}
1767#[allow(dead_code)]
1768struct DimensionFieldDeserializer;
1769impl DimensionFieldDeserializer {
1770    #[allow(dead_code, unused_variables)]
1771    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
1772        xml_util::deserialize_primitive(tag_name, stack, Ok)
1773    }
1774}
1775#[allow(dead_code)]
1776struct DimensionListDeserializer;
1777impl DimensionListDeserializer {
1778    #[allow(dead_code, unused_variables)]
1779    fn deserialize<T: Peek + Next>(
1780        tag_name: &str,
1781        stack: &mut T,
1782    ) -> Result<Vec<Dimension>, XmlParseError> {
1783        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
1784            if name == "Dimension" {
1785                obj.push(DimensionDeserializer::deserialize("Dimension", stack)?);
1786            } else {
1787                skip_tree(stack);
1788            }
1789            Ok(())
1790        })
1791    }
1792}
1793#[allow(dead_code)]
1794struct DisabledDeserializer;
1795impl DisabledDeserializer {
1796    #[allow(dead_code, unused_variables)]
1797    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<bool, XmlParseError> {
1798        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(bool::from_str(&s).unwrap()))
1799    }
1800}
1801
1802pub struct DisabledSerializer;
1803impl DisabledSerializer {
1804    #[allow(unused_variables, warnings)]
1805    pub fn serialize<W>(
1806        mut writer: &mut EventWriter<W>,
1807        name: &str,
1808        obj: &bool,
1809    ) -> Result<(), xml::writer::Error>
1810    where
1811        W: Write,
1812    {
1813        write_characters_element(writer, name, &obj.to_string())
1814    }
1815}
1816
1817pub struct DisassociateVPCCommentSerializer;
1818impl DisassociateVPCCommentSerializer {
1819    #[allow(unused_variables, warnings)]
1820    pub fn serialize<W>(
1821        mut writer: &mut EventWriter<W>,
1822        name: &str,
1823        obj: &String,
1824    ) -> Result<(), xml::writer::Error>
1825    where
1826        W: Write,
1827    {
1828        write_characters_element(writer, name, obj)
1829    }
1830}
1831
1832/// <p>A complex type that contains information about the VPC that you want to disassociate from a specified private hosted zone.</p>
1833#[derive(Clone, Debug, Default, PartialEq)]
1834#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1835pub struct DisassociateVPCFromHostedZoneRequest {
1836    /// <p> <i>Optional:</i> A comment about the disassociation request.</p>
1837    pub comment: Option<String>,
1838    /// <p>The ID of the private hosted zone that you want to disassociate a VPC from.</p>
1839    pub hosted_zone_id: String,
1840    /// <p>A complex type that contains information about the VPC that you're disassociating from the specified hosted zone.</p>
1841    pub vpc: VPC,
1842}
1843
1844pub struct DisassociateVPCFromHostedZoneRequestSerializer;
1845impl DisassociateVPCFromHostedZoneRequestSerializer {
1846    #[allow(unused_variables, warnings)]
1847    pub fn serialize<W>(
1848        mut writer: &mut EventWriter<W>,
1849        name: &str,
1850        obj: &DisassociateVPCFromHostedZoneRequest,
1851        xmlns: &str,
1852    ) -> Result<(), xml::writer::Error>
1853    where
1854        W: Write,
1855    {
1856        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
1857        if let Some(ref value) = obj.comment {
1858            &DisassociateVPCCommentSerializer::serialize(&mut writer, "Comment", value)?;
1859        }
1860        VPCSerializer::serialize(&mut writer, "VPC", &obj.vpc)?;
1861        writer.write(xml::writer::XmlEvent::end_element())
1862    }
1863}
1864/// <p>A complex type that contains the response information for the disassociate request.</p>
1865#[derive(Clone, Debug, Default, PartialEq)]
1866#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1867pub struct DisassociateVPCFromHostedZoneResponse {
1868    /// <p>A complex type that describes the changes made to the specified private hosted zone.</p>
1869    pub change_info: ChangeInfo,
1870}
1871
1872#[allow(dead_code)]
1873struct DisassociateVPCFromHostedZoneResponseDeserializer;
1874impl DisassociateVPCFromHostedZoneResponseDeserializer {
1875    #[allow(dead_code, unused_variables)]
1876    fn deserialize<T: Peek + Next>(
1877        tag_name: &str,
1878        stack: &mut T,
1879    ) -> Result<DisassociateVPCFromHostedZoneResponse, XmlParseError> {
1880        deserialize_elements::<_, DisassociateVPCFromHostedZoneResponse, _>(
1881            tag_name,
1882            stack,
1883            |name, stack, obj| {
1884                match name {
1885                    "ChangeInfo" => {
1886                        obj.change_info = ChangeInfoDeserializer::deserialize("ChangeInfo", stack)?;
1887                    }
1888                    _ => skip_tree(stack),
1889                }
1890                Ok(())
1891            },
1892        )
1893    }
1894}
1895#[allow(dead_code)]
1896struct EnableSNIDeserializer;
1897impl EnableSNIDeserializer {
1898    #[allow(dead_code, unused_variables)]
1899    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<bool, XmlParseError> {
1900        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(bool::from_str(&s).unwrap()))
1901    }
1902}
1903
1904pub struct EnableSNISerializer;
1905impl EnableSNISerializer {
1906    #[allow(unused_variables, warnings)]
1907    pub fn serialize<W>(
1908        mut writer: &mut EventWriter<W>,
1909        name: &str,
1910        obj: &bool,
1911    ) -> Result<(), xml::writer::Error>
1912    where
1913        W: Write,
1914    {
1915        write_characters_element(writer, name, &obj.to_string())
1916    }
1917}
1918
1919#[allow(dead_code)]
1920struct EvaluationPeriodsDeserializer;
1921impl EvaluationPeriodsDeserializer {
1922    #[allow(dead_code, unused_variables)]
1923    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
1924        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
1925    }
1926}
1927#[allow(dead_code)]
1928struct FailureThresholdDeserializer;
1929impl FailureThresholdDeserializer {
1930    #[allow(dead_code, unused_variables)]
1931    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
1932        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
1933    }
1934}
1935
1936pub struct FailureThresholdSerializer;
1937impl FailureThresholdSerializer {
1938    #[allow(unused_variables, warnings)]
1939    pub fn serialize<W>(
1940        mut writer: &mut EventWriter<W>,
1941        name: &str,
1942        obj: &i64,
1943    ) -> Result<(), xml::writer::Error>
1944    where
1945        W: Write,
1946    {
1947        write_characters_element(writer, name, &obj.to_string())
1948    }
1949}
1950
1951#[allow(dead_code)]
1952struct FullyQualifiedDomainNameDeserializer;
1953impl FullyQualifiedDomainNameDeserializer {
1954    #[allow(dead_code, unused_variables)]
1955    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
1956        xml_util::deserialize_primitive(tag_name, stack, Ok)
1957    }
1958}
1959
1960pub struct FullyQualifiedDomainNameSerializer;
1961impl FullyQualifiedDomainNameSerializer {
1962    #[allow(unused_variables, warnings)]
1963    pub fn serialize<W>(
1964        mut writer: &mut EventWriter<W>,
1965        name: &str,
1966        obj: &String,
1967    ) -> Result<(), xml::writer::Error>
1968    where
1969        W: Write,
1970    {
1971        write_characters_element(writer, name, obj)
1972    }
1973}
1974
1975/// <p>A complex type that contains information about a geographic location.</p>
1976#[derive(Clone, Debug, Default, PartialEq)]
1977#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
1978#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1979pub struct GeoLocation {
1980    /// <p>The two-letter code for the continent.</p> <p>Amazon Route 53 supports the following continent codes:</p> <ul> <li> <p> <b>AF</b>: Africa</p> </li> <li> <p> <b>AN</b>: Antarctica</p> </li> <li> <p> <b>AS</b>: Asia</p> </li> <li> <p> <b>EU</b>: Europe</p> </li> <li> <p> <b>OC</b>: Oceania</p> </li> <li> <p> <b>NA</b>: North America</p> </li> <li> <p> <b>SA</b>: South America</p> </li> </ul> <p>Constraint: Specifying <code>ContinentCode</code> with either <code>CountryCode</code> or <code>SubdivisionCode</code> returns an <code>InvalidInput</code> error.</p>
1981    pub continent_code: Option<String>,
1982    /// <p>For geolocation resource record sets, the two-letter code for a country.</p> <p>Amazon Route 53 uses the two-letter country codes that are specified in <a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO standard 3166-1 alpha-2</a>.</p>
1983    pub country_code: Option<String>,
1984    /// <p>For geolocation resource record sets, the two-letter code for a state of the United States. Route 53 doesn't support any other values for <code>SubdivisionCode</code>. For a list of state abbreviations, see <a href="https://pe.usps.com/text/pub28/28apb.htm">Appendix B: Two–Letter State and Possession Abbreviations</a> on the United States Postal Service website. </p> <p>If you specify <code>subdivisioncode</code>, you must also specify <code>US</code> for <code>CountryCode</code>. </p>
1985    pub subdivision_code: Option<String>,
1986}
1987
1988#[allow(dead_code)]
1989struct GeoLocationDeserializer;
1990impl GeoLocationDeserializer {
1991    #[allow(dead_code, unused_variables)]
1992    fn deserialize<T: Peek + Next>(
1993        tag_name: &str,
1994        stack: &mut T,
1995    ) -> Result<GeoLocation, XmlParseError> {
1996        deserialize_elements::<_, GeoLocation, _>(tag_name, stack, |name, stack, obj| {
1997            match name {
1998                "ContinentCode" => {
1999                    obj.continent_code = Some(GeoLocationContinentCodeDeserializer::deserialize(
2000                        "ContinentCode",
2001                        stack,
2002                    )?);
2003                }
2004                "CountryCode" => {
2005                    obj.country_code = Some(GeoLocationCountryCodeDeserializer::deserialize(
2006                        "CountryCode",
2007                        stack,
2008                    )?);
2009                }
2010                "SubdivisionCode" => {
2011                    obj.subdivision_code =
2012                        Some(GeoLocationSubdivisionCodeDeserializer::deserialize(
2013                            "SubdivisionCode",
2014                            stack,
2015                        )?);
2016                }
2017                _ => skip_tree(stack),
2018            }
2019            Ok(())
2020        })
2021    }
2022}
2023
2024pub struct GeoLocationSerializer;
2025impl GeoLocationSerializer {
2026    #[allow(unused_variables, warnings)]
2027    pub fn serialize<W>(
2028        mut writer: &mut EventWriter<W>,
2029        name: &str,
2030        obj: &GeoLocation,
2031    ) -> Result<(), xml::writer::Error>
2032    where
2033        W: Write,
2034    {
2035        writer.write(xml::writer::XmlEvent::start_element(name))?;
2036        if let Some(ref value) = obj.continent_code {
2037            write_characters_element(writer, "ContinentCode", &value.to_string())?;
2038        }
2039        if let Some(ref value) = obj.country_code {
2040            write_characters_element(writer, "CountryCode", &value.to_string())?;
2041        }
2042        if let Some(ref value) = obj.subdivision_code {
2043            write_characters_element(writer, "SubdivisionCode", &value.to_string())?;
2044        }
2045        writer.write(xml::writer::XmlEvent::end_element())
2046    }
2047}
2048
2049#[allow(dead_code)]
2050struct GeoLocationContinentCodeDeserializer;
2051impl GeoLocationContinentCodeDeserializer {
2052    #[allow(dead_code, unused_variables)]
2053    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
2054        xml_util::deserialize_primitive(tag_name, stack, Ok)
2055    }
2056}
2057
2058pub struct GeoLocationContinentCodeSerializer;
2059impl GeoLocationContinentCodeSerializer {
2060    #[allow(unused_variables, warnings)]
2061    pub fn serialize<W>(
2062        mut writer: &mut EventWriter<W>,
2063        name: &str,
2064        obj: &String,
2065    ) -> Result<(), xml::writer::Error>
2066    where
2067        W: Write,
2068    {
2069        write_characters_element(writer, name, obj)
2070    }
2071}
2072
2073#[allow(dead_code)]
2074struct GeoLocationContinentNameDeserializer;
2075impl GeoLocationContinentNameDeserializer {
2076    #[allow(dead_code, unused_variables)]
2077    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
2078        xml_util::deserialize_primitive(tag_name, stack, Ok)
2079    }
2080}
2081#[allow(dead_code)]
2082struct GeoLocationCountryCodeDeserializer;
2083impl GeoLocationCountryCodeDeserializer {
2084    #[allow(dead_code, unused_variables)]
2085    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
2086        xml_util::deserialize_primitive(tag_name, stack, Ok)
2087    }
2088}
2089
2090pub struct GeoLocationCountryCodeSerializer;
2091impl GeoLocationCountryCodeSerializer {
2092    #[allow(unused_variables, warnings)]
2093    pub fn serialize<W>(
2094        mut writer: &mut EventWriter<W>,
2095        name: &str,
2096        obj: &String,
2097    ) -> Result<(), xml::writer::Error>
2098    where
2099        W: Write,
2100    {
2101        write_characters_element(writer, name, obj)
2102    }
2103}
2104
2105#[allow(dead_code)]
2106struct GeoLocationCountryNameDeserializer;
2107impl GeoLocationCountryNameDeserializer {
2108    #[allow(dead_code, unused_variables)]
2109    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
2110        xml_util::deserialize_primitive(tag_name, stack, Ok)
2111    }
2112}
2113/// <p>A complex type that contains the codes and full continent, country, and subdivision names for the specified <code>geolocation</code> code.</p>
2114#[derive(Clone, Debug, Default, PartialEq)]
2115#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2116pub struct GeoLocationDetails {
2117    /// <p>The two-letter code for the continent.</p>
2118    pub continent_code: Option<String>,
2119    /// <p>The full name of the continent.</p>
2120    pub continent_name: Option<String>,
2121    /// <p>The two-letter code for the country.</p>
2122    pub country_code: Option<String>,
2123    /// <p>The name of the country.</p>
2124    pub country_name: Option<String>,
2125    /// <p>The code for the subdivision. Route 53 currently supports only states in the United States.</p>
2126    pub subdivision_code: Option<String>,
2127    /// <p>The full name of the subdivision. Route 53 currently supports only states in the United States.</p>
2128    pub subdivision_name: Option<String>,
2129}
2130
2131#[allow(dead_code)]
2132struct GeoLocationDetailsDeserializer;
2133impl GeoLocationDetailsDeserializer {
2134    #[allow(dead_code, unused_variables)]
2135    fn deserialize<T: Peek + Next>(
2136        tag_name: &str,
2137        stack: &mut T,
2138    ) -> Result<GeoLocationDetails, XmlParseError> {
2139        deserialize_elements::<_, GeoLocationDetails, _>(tag_name, stack, |name, stack, obj| {
2140            match name {
2141                "ContinentCode" => {
2142                    obj.continent_code = Some(GeoLocationContinentCodeDeserializer::deserialize(
2143                        "ContinentCode",
2144                        stack,
2145                    )?);
2146                }
2147                "ContinentName" => {
2148                    obj.continent_name = Some(GeoLocationContinentNameDeserializer::deserialize(
2149                        "ContinentName",
2150                        stack,
2151                    )?);
2152                }
2153                "CountryCode" => {
2154                    obj.country_code = Some(GeoLocationCountryCodeDeserializer::deserialize(
2155                        "CountryCode",
2156                        stack,
2157                    )?);
2158                }
2159                "CountryName" => {
2160                    obj.country_name = Some(GeoLocationCountryNameDeserializer::deserialize(
2161                        "CountryName",
2162                        stack,
2163                    )?);
2164                }
2165                "SubdivisionCode" => {
2166                    obj.subdivision_code =
2167                        Some(GeoLocationSubdivisionCodeDeserializer::deserialize(
2168                            "SubdivisionCode",
2169                            stack,
2170                        )?);
2171                }
2172                "SubdivisionName" => {
2173                    obj.subdivision_name =
2174                        Some(GeoLocationSubdivisionNameDeserializer::deserialize(
2175                            "SubdivisionName",
2176                            stack,
2177                        )?);
2178                }
2179                _ => skip_tree(stack),
2180            }
2181            Ok(())
2182        })
2183    }
2184}
2185#[allow(dead_code)]
2186struct GeoLocationDetailsListDeserializer;
2187impl GeoLocationDetailsListDeserializer {
2188    #[allow(dead_code, unused_variables)]
2189    fn deserialize<T: Peek + Next>(
2190        tag_name: &str,
2191        stack: &mut T,
2192    ) -> Result<Vec<GeoLocationDetails>, XmlParseError> {
2193        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
2194            if name == "GeoLocationDetails" {
2195                obj.push(GeoLocationDetailsDeserializer::deserialize(
2196                    "GeoLocationDetails",
2197                    stack,
2198                )?);
2199            } else {
2200                skip_tree(stack);
2201            }
2202            Ok(())
2203        })
2204    }
2205}
2206#[allow(dead_code)]
2207struct GeoLocationSubdivisionCodeDeserializer;
2208impl GeoLocationSubdivisionCodeDeserializer {
2209    #[allow(dead_code, unused_variables)]
2210    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
2211        xml_util::deserialize_primitive(tag_name, stack, Ok)
2212    }
2213}
2214
2215pub struct GeoLocationSubdivisionCodeSerializer;
2216impl GeoLocationSubdivisionCodeSerializer {
2217    #[allow(unused_variables, warnings)]
2218    pub fn serialize<W>(
2219        mut writer: &mut EventWriter<W>,
2220        name: &str,
2221        obj: &String,
2222    ) -> Result<(), xml::writer::Error>
2223    where
2224        W: Write,
2225    {
2226        write_characters_element(writer, name, obj)
2227    }
2228}
2229
2230#[allow(dead_code)]
2231struct GeoLocationSubdivisionNameDeserializer;
2232impl GeoLocationSubdivisionNameDeserializer {
2233    #[allow(dead_code, unused_variables)]
2234    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
2235        xml_util::deserialize_primitive(tag_name, stack, Ok)
2236    }
2237}
2238/// <p>A complex type that contains information about the request to create a hosted zone.</p>
2239#[derive(Clone, Debug, Default, PartialEq)]
2240#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2241pub struct GetAccountLimitRequest {
2242    /// <p><p>The limit that you want to get. Valid values include the following:</p> <ul> <li> <p> <b>MAX<em>HEALTH</em>CHECKS<em>BY</em>OWNER</b>: The maximum number of health checks that you can create using the current account.</p> </li> <li> <p> <b>MAX<em>HOSTED</em>ZONES<em>BY</em>OWNER</b>: The maximum number of hosted zones that you can create using the current account.</p> </li> <li> <p> <b>MAX<em>REUSABLE</em>DELEGATION<em>SETS</em>BY<em>OWNER</b>: The maximum number of reusable delegation sets that you can create using the current account.</p> </li> <li> <p> <b>MAX</em>TRAFFIC<em>POLICIES</em>BY<em>OWNER</b>: The maximum number of traffic policies that you can create using the current account.</p> </li> <li> <p> <b>MAX</em>TRAFFIC<em>POLICY</em>INSTANCES<em>BY</em>OWNER</b>: The maximum number of traffic policy instances that you can create using the current account. (Traffic policy instances are referred to as traffic flow policy records in the Amazon Route 53 console.)</p> </li> </ul></p>
2243    pub type_: String,
2244}
2245
2246/// <p>A complex type that contains the requested limit. </p>
2247#[derive(Clone, Debug, Default, PartialEq)]
2248#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2249pub struct GetAccountLimitResponse {
2250    /// <p>The current number of entities that you have created of the specified type. For example, if you specified <code>MAX_HEALTH_CHECKS_BY_OWNER</code> for the value of <code>Type</code> in the request, the value of <code>Count</code> is the current number of health checks that you have created using the current account.</p>
2251    pub count: i64,
2252    /// <p>The current setting for the specified limit. For example, if you specified <code>MAX_HEALTH_CHECKS_BY_OWNER</code> for the value of <code>Type</code> in the request, the value of <code>Limit</code> is the maximum number of health checks that you can create using the current account.</p>
2253    pub limit: AccountLimit,
2254}
2255
2256#[allow(dead_code)]
2257struct GetAccountLimitResponseDeserializer;
2258impl GetAccountLimitResponseDeserializer {
2259    #[allow(dead_code, unused_variables)]
2260    fn deserialize<T: Peek + Next>(
2261        tag_name: &str,
2262        stack: &mut T,
2263    ) -> Result<GetAccountLimitResponse, XmlParseError> {
2264        deserialize_elements::<_, GetAccountLimitResponse, _>(
2265            tag_name,
2266            stack,
2267            |name, stack, obj| {
2268                match name {
2269                    "Count" => {
2270                        obj.count = UsageCountDeserializer::deserialize("Count", stack)?;
2271                    }
2272                    "Limit" => {
2273                        obj.limit = AccountLimitDeserializer::deserialize("Limit", stack)?;
2274                    }
2275                    _ => skip_tree(stack),
2276                }
2277                Ok(())
2278            },
2279        )
2280    }
2281}
2282/// <p>The input for a GetChange request.</p>
2283#[derive(Clone, Debug, Default, PartialEq)]
2284#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2285pub struct GetChangeRequest {
2286    /// <p>The ID of the change batch request. The value that you specify here is the value that <code>ChangeResourceRecordSets</code> returned in the <code>Id</code> element when you submitted the request.</p>
2287    pub id: String,
2288}
2289
2290/// <p>A complex type that contains the <code>ChangeInfo</code> element.</p>
2291#[derive(Clone, Debug, Default, PartialEq)]
2292#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2293pub struct GetChangeResponse {
2294    /// <p>A complex type that contains information about the specified change batch.</p>
2295    pub change_info: ChangeInfo,
2296}
2297
2298#[allow(dead_code)]
2299struct GetChangeResponseDeserializer;
2300impl GetChangeResponseDeserializer {
2301    #[allow(dead_code, unused_variables)]
2302    fn deserialize<T: Peek + Next>(
2303        tag_name: &str,
2304        stack: &mut T,
2305    ) -> Result<GetChangeResponse, XmlParseError> {
2306        deserialize_elements::<_, GetChangeResponse, _>(tag_name, stack, |name, stack, obj| {
2307            match name {
2308                "ChangeInfo" => {
2309                    obj.change_info = ChangeInfoDeserializer::deserialize("ChangeInfo", stack)?;
2310                }
2311                _ => skip_tree(stack),
2312            }
2313            Ok(())
2314        })
2315    }
2316}
2317/// <p>Empty request.</p>
2318#[derive(Clone, Debug, Default, PartialEq)]
2319#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2320pub struct GetCheckerIpRangesRequest {}
2321
2322/// <p>A complex type that contains the <code>CheckerIpRanges</code> element.</p>
2323#[derive(Clone, Debug, Default, PartialEq)]
2324#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2325pub struct GetCheckerIpRangesResponse {
2326    /// <p>A complex type that contains sorted list of IP ranges in CIDR format for Amazon Route 53 health checkers.</p>
2327    pub checker_ip_ranges: Vec<String>,
2328}
2329
2330#[allow(dead_code)]
2331struct GetCheckerIpRangesResponseDeserializer;
2332impl GetCheckerIpRangesResponseDeserializer {
2333    #[allow(dead_code, unused_variables)]
2334    fn deserialize<T: Peek + Next>(
2335        tag_name: &str,
2336        stack: &mut T,
2337    ) -> Result<GetCheckerIpRangesResponse, XmlParseError> {
2338        deserialize_elements::<_, GetCheckerIpRangesResponse, _>(
2339            tag_name,
2340            stack,
2341            |name, stack, obj| {
2342                match name {
2343                    "CheckerIpRanges" => {
2344                        obj.checker_ip_ranges
2345                            .extend(CheckerIpRangesDeserializer::deserialize(
2346                                "CheckerIpRanges",
2347                                stack,
2348                            )?);
2349                    }
2350                    _ => skip_tree(stack),
2351                }
2352                Ok(())
2353            },
2354        )
2355    }
2356}
2357/// <p>A request for information about whether a specified geographic location is supported for Amazon Route 53 geolocation resource record sets.</p>
2358#[derive(Clone, Debug, Default, PartialEq)]
2359#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2360pub struct GetGeoLocationRequest {
2361    /// <p><p>For geolocation resource record sets, a two-letter abbreviation that identifies a continent. Amazon Route 53 supports the following continent codes:</p> <ul> <li> <p> <b>AF</b>: Africa</p> </li> <li> <p> <b>AN</b>: Antarctica</p> </li> <li> <p> <b>AS</b>: Asia</p> </li> <li> <p> <b>EU</b>: Europe</p> </li> <li> <p> <b>OC</b>: Oceania</p> </li> <li> <p> <b>NA</b>: North America</p> </li> <li> <p> <b>SA</b>: South America</p> </li> </ul></p>
2362    pub continent_code: Option<String>,
2363    /// <p>Amazon Route 53 uses the two-letter country codes that are specified in <a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO standard 3166-1 alpha-2</a>.</p>
2364    pub country_code: Option<String>,
2365    /// <p>For <code>SubdivisionCode</code>, Amazon Route 53 supports only states of the United States. For a list of state abbreviations, see <a href="https://pe.usps.com/text/pub28/28apb.htm">Appendix B: Two–Letter State and Possession Abbreviations</a> on the United States Postal Service website. </p> <p>If you specify <code>subdivisioncode</code>, you must also specify <code>US</code> for <code>CountryCode</code>. </p>
2366    pub subdivision_code: Option<String>,
2367}
2368
2369/// <p>A complex type that contains the response information for the specified geolocation code.</p>
2370#[derive(Clone, Debug, Default, PartialEq)]
2371#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2372pub struct GetGeoLocationResponse {
2373    /// <p>A complex type that contains the codes and full continent, country, and subdivision names for the specified geolocation code.</p>
2374    pub geo_location_details: GeoLocationDetails,
2375}
2376
2377#[allow(dead_code)]
2378struct GetGeoLocationResponseDeserializer;
2379impl GetGeoLocationResponseDeserializer {
2380    #[allow(dead_code, unused_variables)]
2381    fn deserialize<T: Peek + Next>(
2382        tag_name: &str,
2383        stack: &mut T,
2384    ) -> Result<GetGeoLocationResponse, XmlParseError> {
2385        deserialize_elements::<_, GetGeoLocationResponse, _>(tag_name, stack, |name, stack, obj| {
2386            match name {
2387                "GeoLocationDetails" => {
2388                    obj.geo_location_details =
2389                        GeoLocationDetailsDeserializer::deserialize("GeoLocationDetails", stack)?;
2390                }
2391                _ => skip_tree(stack),
2392            }
2393            Ok(())
2394        })
2395    }
2396}
2397/// <p>A request for the number of health checks that are associated with the current AWS account.</p>
2398#[derive(Clone, Debug, Default, PartialEq)]
2399#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2400pub struct GetHealthCheckCountRequest {}
2401
2402/// <p>A complex type that contains the response to a <code>GetHealthCheckCount</code> request.</p>
2403#[derive(Clone, Debug, Default, PartialEq)]
2404#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2405pub struct GetHealthCheckCountResponse {
2406    /// <p>The number of health checks associated with the current AWS account.</p>
2407    pub health_check_count: i64,
2408}
2409
2410#[allow(dead_code)]
2411struct GetHealthCheckCountResponseDeserializer;
2412impl GetHealthCheckCountResponseDeserializer {
2413    #[allow(dead_code, unused_variables)]
2414    fn deserialize<T: Peek + Next>(
2415        tag_name: &str,
2416        stack: &mut T,
2417    ) -> Result<GetHealthCheckCountResponse, XmlParseError> {
2418        deserialize_elements::<_, GetHealthCheckCountResponse, _>(
2419            tag_name,
2420            stack,
2421            |name, stack, obj| {
2422                match name {
2423                    "HealthCheckCount" => {
2424                        obj.health_check_count =
2425                            HealthCheckCountDeserializer::deserialize("HealthCheckCount", stack)?;
2426                    }
2427                    _ => skip_tree(stack),
2428                }
2429                Ok(())
2430            },
2431        )
2432    }
2433}
2434/// <p>A request for the reason that a health check failed most recently.</p>
2435#[derive(Clone, Debug, Default, PartialEq)]
2436#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2437pub struct GetHealthCheckLastFailureReasonRequest {
2438    /// <p><p>The ID for the health check for which you want the last failure reason. When you created the health check, <code>CreateHealthCheck</code> returned the ID in the response, in the <code>HealthCheckId</code> element.</p> <note> <p>If you want to get the last failure reason for a calculated health check, you must use the Amazon Route 53 console or the CloudWatch console. You can&#39;t use <code>GetHealthCheckLastFailureReason</code> for a calculated health check.</p> </note></p>
2439    pub health_check_id: String,
2440}
2441
2442/// <p>A complex type that contains the response to a <code>GetHealthCheckLastFailureReason</code> request.</p>
2443#[derive(Clone, Debug, Default, PartialEq)]
2444#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2445pub struct GetHealthCheckLastFailureReasonResponse {
2446    /// <p>A list that contains one <code>Observation</code> element for each Amazon Route 53 health checker that is reporting a last failure reason. </p>
2447    pub health_check_observations: Vec<HealthCheckObservation>,
2448}
2449
2450#[allow(dead_code)]
2451struct GetHealthCheckLastFailureReasonResponseDeserializer;
2452impl GetHealthCheckLastFailureReasonResponseDeserializer {
2453    #[allow(dead_code, unused_variables)]
2454    fn deserialize<T: Peek + Next>(
2455        tag_name: &str,
2456        stack: &mut T,
2457    ) -> Result<GetHealthCheckLastFailureReasonResponse, XmlParseError> {
2458        deserialize_elements::<_, GetHealthCheckLastFailureReasonResponse, _>(
2459            tag_name,
2460            stack,
2461            |name, stack, obj| {
2462                match name {
2463                    "HealthCheckObservations" => {
2464                        obj.health_check_observations.extend(
2465                            HealthCheckObservationsDeserializer::deserialize(
2466                                "HealthCheckObservations",
2467                                stack,
2468                            )?,
2469                        );
2470                    }
2471                    _ => skip_tree(stack),
2472                }
2473                Ok(())
2474            },
2475        )
2476    }
2477}
2478/// <p>A request to get information about a specified health check. </p>
2479#[derive(Clone, Debug, Default, PartialEq)]
2480#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2481pub struct GetHealthCheckRequest {
2482    /// <p>The identifier that Amazon Route 53 assigned to the health check when you created it. When you add or update a resource record set, you use this value to specify which health check to use. The value can be up to 64 characters long.</p>
2483    pub health_check_id: String,
2484}
2485
2486/// <p>A complex type that contains the response to a <code>GetHealthCheck</code> request.</p>
2487#[derive(Clone, Debug, Default, PartialEq)]
2488#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2489pub struct GetHealthCheckResponse {
2490    /// <p>A complex type that contains information about one health check that is associated with the current AWS account.</p>
2491    pub health_check: HealthCheck,
2492}
2493
2494#[allow(dead_code)]
2495struct GetHealthCheckResponseDeserializer;
2496impl GetHealthCheckResponseDeserializer {
2497    #[allow(dead_code, unused_variables)]
2498    fn deserialize<T: Peek + Next>(
2499        tag_name: &str,
2500        stack: &mut T,
2501    ) -> Result<GetHealthCheckResponse, XmlParseError> {
2502        deserialize_elements::<_, GetHealthCheckResponse, _>(tag_name, stack, |name, stack, obj| {
2503            match name {
2504                "HealthCheck" => {
2505                    obj.health_check = HealthCheckDeserializer::deserialize("HealthCheck", stack)?;
2506                }
2507                _ => skip_tree(stack),
2508            }
2509            Ok(())
2510        })
2511    }
2512}
2513/// <p>A request to get the status for a health check.</p>
2514#[derive(Clone, Debug, Default, PartialEq)]
2515#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2516pub struct GetHealthCheckStatusRequest {
2517    /// <p><p>The ID for the health check that you want the current status for. When you created the health check, <code>CreateHealthCheck</code> returned the ID in the response, in the <code>HealthCheckId</code> element.</p> <note> <p>If you want to check the status of a calculated health check, you must use the Amazon Route 53 console or the CloudWatch console. You can&#39;t use <code>GetHealthCheckStatus</code> to get the status of a calculated health check.</p> </note></p>
2518    pub health_check_id: String,
2519}
2520
2521/// <p>A complex type that contains the response to a <code>GetHealthCheck</code> request.</p>
2522#[derive(Clone, Debug, Default, PartialEq)]
2523#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2524pub struct GetHealthCheckStatusResponse {
2525    /// <p>A list that contains one <code>HealthCheckObservation</code> element for each Amazon Route 53 health checker that is reporting a status about the health check endpoint.</p>
2526    pub health_check_observations: Vec<HealthCheckObservation>,
2527}
2528
2529#[allow(dead_code)]
2530struct GetHealthCheckStatusResponseDeserializer;
2531impl GetHealthCheckStatusResponseDeserializer {
2532    #[allow(dead_code, unused_variables)]
2533    fn deserialize<T: Peek + Next>(
2534        tag_name: &str,
2535        stack: &mut T,
2536    ) -> Result<GetHealthCheckStatusResponse, XmlParseError> {
2537        deserialize_elements::<_, GetHealthCheckStatusResponse, _>(
2538            tag_name,
2539            stack,
2540            |name, stack, obj| {
2541                match name {
2542                    "HealthCheckObservations" => {
2543                        obj.health_check_observations.extend(
2544                            HealthCheckObservationsDeserializer::deserialize(
2545                                "HealthCheckObservations",
2546                                stack,
2547                            )?,
2548                        );
2549                    }
2550                    _ => skip_tree(stack),
2551                }
2552                Ok(())
2553            },
2554        )
2555    }
2556}
2557/// <p>A request to retrieve a count of all the hosted zones that are associated with the current AWS account.</p>
2558#[derive(Clone, Debug, Default, PartialEq)]
2559#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2560pub struct GetHostedZoneCountRequest {}
2561
2562/// <p>A complex type that contains the response to a <code>GetHostedZoneCount</code> request.</p>
2563#[derive(Clone, Debug, Default, PartialEq)]
2564#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2565pub struct GetHostedZoneCountResponse {
2566    /// <p>The total number of public and private hosted zones that are associated with the current AWS account.</p>
2567    pub hosted_zone_count: i64,
2568}
2569
2570#[allow(dead_code)]
2571struct GetHostedZoneCountResponseDeserializer;
2572impl GetHostedZoneCountResponseDeserializer {
2573    #[allow(dead_code, unused_variables)]
2574    fn deserialize<T: Peek + Next>(
2575        tag_name: &str,
2576        stack: &mut T,
2577    ) -> Result<GetHostedZoneCountResponse, XmlParseError> {
2578        deserialize_elements::<_, GetHostedZoneCountResponse, _>(
2579            tag_name,
2580            stack,
2581            |name, stack, obj| {
2582                match name {
2583                    "HostedZoneCount" => {
2584                        obj.hosted_zone_count =
2585                            HostedZoneCountDeserializer::deserialize("HostedZoneCount", stack)?;
2586                    }
2587                    _ => skip_tree(stack),
2588                }
2589                Ok(())
2590            },
2591        )
2592    }
2593}
2594/// <p>A complex type that contains information about the request to create a hosted zone.</p>
2595#[derive(Clone, Debug, Default, PartialEq)]
2596#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2597pub struct GetHostedZoneLimitRequest {
2598    /// <p>The ID of the hosted zone that you want to get a limit for.</p>
2599    pub hosted_zone_id: String,
2600    /// <p><p>The limit that you want to get. Valid values include the following:</p> <ul> <li> <p> <b>MAX<em>RRSETS</em>BY<em>ZONE</b>: The maximum number of records that you can create in the specified hosted zone.</p> </li> <li> <p> <b>MAX</em>VPCS<em>ASSOCIATED</em>BY_ZONE</b>: The maximum number of Amazon VPCs that you can associate with the specified private hosted zone.</p> </li> </ul></p>
2601    pub type_: String,
2602}
2603
2604/// <p>A complex type that contains the requested limit. </p>
2605#[derive(Clone, Debug, Default, PartialEq)]
2606#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2607pub struct GetHostedZoneLimitResponse {
2608    /// <p>The current number of entities that you have created of the specified type. For example, if you specified <code>MAX_RRSETS_BY_ZONE</code> for the value of <code>Type</code> in the request, the value of <code>Count</code> is the current number of records that you have created in the specified hosted zone.</p>
2609    pub count: i64,
2610    /// <p>The current setting for the specified limit. For example, if you specified <code>MAX_RRSETS_BY_ZONE</code> for the value of <code>Type</code> in the request, the value of <code>Limit</code> is the maximum number of records that you can create in the specified hosted zone.</p>
2611    pub limit: HostedZoneLimit,
2612}
2613
2614#[allow(dead_code)]
2615struct GetHostedZoneLimitResponseDeserializer;
2616impl GetHostedZoneLimitResponseDeserializer {
2617    #[allow(dead_code, unused_variables)]
2618    fn deserialize<T: Peek + Next>(
2619        tag_name: &str,
2620        stack: &mut T,
2621    ) -> Result<GetHostedZoneLimitResponse, XmlParseError> {
2622        deserialize_elements::<_, GetHostedZoneLimitResponse, _>(
2623            tag_name,
2624            stack,
2625            |name, stack, obj| {
2626                match name {
2627                    "Count" => {
2628                        obj.count = UsageCountDeserializer::deserialize("Count", stack)?;
2629                    }
2630                    "Limit" => {
2631                        obj.limit = HostedZoneLimitDeserializer::deserialize("Limit", stack)?;
2632                    }
2633                    _ => skip_tree(stack),
2634                }
2635                Ok(())
2636            },
2637        )
2638    }
2639}
2640/// <p>A request to get information about a specified hosted zone. </p>
2641#[derive(Clone, Debug, Default, PartialEq)]
2642#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2643pub struct GetHostedZoneRequest {
2644    /// <p>The ID of the hosted zone that you want to get information about.</p>
2645    pub id: String,
2646}
2647
2648/// <p>A complex type that contain the response to a <code>GetHostedZone</code> request.</p>
2649#[derive(Clone, Debug, Default, PartialEq)]
2650#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2651pub struct GetHostedZoneResponse {
2652    /// <p>A complex type that lists the Amazon Route 53 name servers for the specified hosted zone.</p>
2653    pub delegation_set: Option<DelegationSet>,
2654    /// <p>A complex type that contains general information about the specified hosted zone.</p>
2655    pub hosted_zone: HostedZone,
2656    /// <p>A complex type that contains information about the VPCs that are associated with the specified hosted zone.</p>
2657    pub vp_cs: Option<Vec<VPC>>,
2658}
2659
2660#[allow(dead_code)]
2661struct GetHostedZoneResponseDeserializer;
2662impl GetHostedZoneResponseDeserializer {
2663    #[allow(dead_code, unused_variables)]
2664    fn deserialize<T: Peek + Next>(
2665        tag_name: &str,
2666        stack: &mut T,
2667    ) -> Result<GetHostedZoneResponse, XmlParseError> {
2668        deserialize_elements::<_, GetHostedZoneResponse, _>(tag_name, stack, |name, stack, obj| {
2669            match name {
2670                "DelegationSet" => {
2671                    obj.delegation_set = Some(DelegationSetDeserializer::deserialize(
2672                        "DelegationSet",
2673                        stack,
2674                    )?);
2675                }
2676                "HostedZone" => {
2677                    obj.hosted_zone = HostedZoneDeserializer::deserialize("HostedZone", stack)?;
2678                }
2679                "VPCs" => {
2680                    obj.vp_cs
2681                        .get_or_insert(vec![])
2682                        .extend(VPCsDeserializer::deserialize("VPCs", stack)?);
2683                }
2684                _ => skip_tree(stack),
2685            }
2686            Ok(())
2687        })
2688    }
2689}
2690#[derive(Clone, Debug, Default, PartialEq)]
2691#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2692pub struct GetQueryLoggingConfigRequest {
2693    /// <p>The ID of the configuration for DNS query logging that you want to get information about.</p>
2694    pub id: String,
2695}
2696
2697#[derive(Clone, Debug, Default, PartialEq)]
2698#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2699pub struct GetQueryLoggingConfigResponse {
2700    /// <p>A complex type that contains information about the query logging configuration that you specified in a <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetQueryLoggingConfig.html">GetQueryLoggingConfig</a> request.</p>
2701    pub query_logging_config: QueryLoggingConfig,
2702}
2703
2704#[allow(dead_code)]
2705struct GetQueryLoggingConfigResponseDeserializer;
2706impl GetQueryLoggingConfigResponseDeserializer {
2707    #[allow(dead_code, unused_variables)]
2708    fn deserialize<T: Peek + Next>(
2709        tag_name: &str,
2710        stack: &mut T,
2711    ) -> Result<GetQueryLoggingConfigResponse, XmlParseError> {
2712        deserialize_elements::<_, GetQueryLoggingConfigResponse, _>(
2713            tag_name,
2714            stack,
2715            |name, stack, obj| {
2716                match name {
2717                    "QueryLoggingConfig" => {
2718                        obj.query_logging_config = QueryLoggingConfigDeserializer::deserialize(
2719                            "QueryLoggingConfig",
2720                            stack,
2721                        )?;
2722                    }
2723                    _ => skip_tree(stack),
2724                }
2725                Ok(())
2726            },
2727        )
2728    }
2729}
2730/// <p>A complex type that contains information about the request to create a hosted zone.</p>
2731#[derive(Clone, Debug, Default, PartialEq)]
2732#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2733pub struct GetReusableDelegationSetLimitRequest {
2734    /// <p>The ID of the delegation set that you want to get the limit for.</p>
2735    pub delegation_set_id: String,
2736    /// <p>Specify <code>MAX_ZONES_BY_REUSABLE_DELEGATION_SET</code> to get the maximum number of hosted zones that you can associate with the specified reusable delegation set.</p>
2737    pub type_: String,
2738}
2739
2740/// <p>A complex type that contains the requested limit. </p>
2741#[derive(Clone, Debug, Default, PartialEq)]
2742#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2743pub struct GetReusableDelegationSetLimitResponse {
2744    /// <p>The current number of hosted zones that you can associate with the specified reusable delegation set.</p>
2745    pub count: i64,
2746    /// <p>The current setting for the limit on hosted zones that you can associate with the specified reusable delegation set.</p>
2747    pub limit: ReusableDelegationSetLimit,
2748}
2749
2750#[allow(dead_code)]
2751struct GetReusableDelegationSetLimitResponseDeserializer;
2752impl GetReusableDelegationSetLimitResponseDeserializer {
2753    #[allow(dead_code, unused_variables)]
2754    fn deserialize<T: Peek + Next>(
2755        tag_name: &str,
2756        stack: &mut T,
2757    ) -> Result<GetReusableDelegationSetLimitResponse, XmlParseError> {
2758        deserialize_elements::<_, GetReusableDelegationSetLimitResponse, _>(
2759            tag_name,
2760            stack,
2761            |name, stack, obj| {
2762                match name {
2763                    "Count" => {
2764                        obj.count = UsageCountDeserializer::deserialize("Count", stack)?;
2765                    }
2766                    "Limit" => {
2767                        obj.limit =
2768                            ReusableDelegationSetLimitDeserializer::deserialize("Limit", stack)?;
2769                    }
2770                    _ => skip_tree(stack),
2771                }
2772                Ok(())
2773            },
2774        )
2775    }
2776}
2777/// <p>A request to get information about a specified reusable delegation set.</p>
2778#[derive(Clone, Debug, Default, PartialEq)]
2779#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2780pub struct GetReusableDelegationSetRequest {
2781    /// <p>The ID of the reusable delegation set that you want to get a list of name servers for.</p>
2782    pub id: String,
2783}
2784
2785/// <p>A complex type that contains the response to the <code>GetReusableDelegationSet</code> request.</p>
2786#[derive(Clone, Debug, Default, PartialEq)]
2787#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2788pub struct GetReusableDelegationSetResponse {
2789    /// <p>A complex type that contains information about the reusable delegation set.</p>
2790    pub delegation_set: DelegationSet,
2791}
2792
2793#[allow(dead_code)]
2794struct GetReusableDelegationSetResponseDeserializer;
2795impl GetReusableDelegationSetResponseDeserializer {
2796    #[allow(dead_code, unused_variables)]
2797    fn deserialize<T: Peek + Next>(
2798        tag_name: &str,
2799        stack: &mut T,
2800    ) -> Result<GetReusableDelegationSetResponse, XmlParseError> {
2801        deserialize_elements::<_, GetReusableDelegationSetResponse, _>(
2802            tag_name,
2803            stack,
2804            |name, stack, obj| {
2805                match name {
2806                    "DelegationSet" => {
2807                        obj.delegation_set =
2808                            DelegationSetDeserializer::deserialize("DelegationSet", stack)?;
2809                    }
2810                    _ => skip_tree(stack),
2811                }
2812                Ok(())
2813            },
2814        )
2815    }
2816}
2817/// <p>Request to get the number of traffic policy instances that are associated with the current AWS account.</p>
2818#[derive(Clone, Debug, Default, PartialEq)]
2819#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2820pub struct GetTrafficPolicyInstanceCountRequest {}
2821
2822/// <p>A complex type that contains information about the resource record sets that Amazon Route 53 created based on a specified traffic policy.</p>
2823#[derive(Clone, Debug, Default, PartialEq)]
2824#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2825pub struct GetTrafficPolicyInstanceCountResponse {
2826    /// <p>The number of traffic policy instances that are associated with the current AWS account.</p>
2827    pub traffic_policy_instance_count: i64,
2828}
2829
2830#[allow(dead_code)]
2831struct GetTrafficPolicyInstanceCountResponseDeserializer;
2832impl GetTrafficPolicyInstanceCountResponseDeserializer {
2833    #[allow(dead_code, unused_variables)]
2834    fn deserialize<T: Peek + Next>(
2835        tag_name: &str,
2836        stack: &mut T,
2837    ) -> Result<GetTrafficPolicyInstanceCountResponse, XmlParseError> {
2838        deserialize_elements::<_, GetTrafficPolicyInstanceCountResponse, _>(
2839            tag_name,
2840            stack,
2841            |name, stack, obj| {
2842                match name {
2843                    "TrafficPolicyInstanceCount" => {
2844                        obj.traffic_policy_instance_count =
2845                            TrafficPolicyInstanceCountDeserializer::deserialize(
2846                                "TrafficPolicyInstanceCount",
2847                                stack,
2848                            )?;
2849                    }
2850                    _ => skip_tree(stack),
2851                }
2852                Ok(())
2853            },
2854        )
2855    }
2856}
2857/// <p>Gets information about a specified traffic policy instance.</p>
2858#[derive(Clone, Debug, Default, PartialEq)]
2859#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2860pub struct GetTrafficPolicyInstanceRequest {
2861    /// <p>The ID of the traffic policy instance that you want to get information about.</p>
2862    pub id: String,
2863}
2864
2865/// <p>A complex type that contains information about the resource record sets that Amazon Route 53 created based on a specified traffic policy.</p>
2866#[derive(Clone, Debug, Default, PartialEq)]
2867#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2868pub struct GetTrafficPolicyInstanceResponse {
2869    /// <p>A complex type that contains settings for the traffic policy instance.</p>
2870    pub traffic_policy_instance: TrafficPolicyInstance,
2871}
2872
2873#[allow(dead_code)]
2874struct GetTrafficPolicyInstanceResponseDeserializer;
2875impl GetTrafficPolicyInstanceResponseDeserializer {
2876    #[allow(dead_code, unused_variables)]
2877    fn deserialize<T: Peek + Next>(
2878        tag_name: &str,
2879        stack: &mut T,
2880    ) -> Result<GetTrafficPolicyInstanceResponse, XmlParseError> {
2881        deserialize_elements::<_, GetTrafficPolicyInstanceResponse, _>(
2882            tag_name,
2883            stack,
2884            |name, stack, obj| {
2885                match name {
2886                    "TrafficPolicyInstance" => {
2887                        obj.traffic_policy_instance =
2888                            TrafficPolicyInstanceDeserializer::deserialize(
2889                                "TrafficPolicyInstance",
2890                                stack,
2891                            )?;
2892                    }
2893                    _ => skip_tree(stack),
2894                }
2895                Ok(())
2896            },
2897        )
2898    }
2899}
2900/// <p>Gets information about a specific traffic policy version.</p>
2901#[derive(Clone, Debug, Default, PartialEq)]
2902#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2903pub struct GetTrafficPolicyRequest {
2904    /// <p>The ID of the traffic policy that you want to get information about.</p>
2905    pub id: String,
2906    /// <p>The version number of the traffic policy that you want to get information about.</p>
2907    pub version: i64,
2908}
2909
2910/// <p>A complex type that contains the response information for the request.</p>
2911#[derive(Clone, Debug, Default, PartialEq)]
2912#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2913pub struct GetTrafficPolicyResponse {
2914    /// <p>A complex type that contains settings for the specified traffic policy.</p>
2915    pub traffic_policy: TrafficPolicy,
2916}
2917
2918#[allow(dead_code)]
2919struct GetTrafficPolicyResponseDeserializer;
2920impl GetTrafficPolicyResponseDeserializer {
2921    #[allow(dead_code, unused_variables)]
2922    fn deserialize<T: Peek + Next>(
2923        tag_name: &str,
2924        stack: &mut T,
2925    ) -> Result<GetTrafficPolicyResponse, XmlParseError> {
2926        deserialize_elements::<_, GetTrafficPolicyResponse, _>(
2927            tag_name,
2928            stack,
2929            |name, stack, obj| {
2930                match name {
2931                    "TrafficPolicy" => {
2932                        obj.traffic_policy =
2933                            TrafficPolicyDeserializer::deserialize("TrafficPolicy", stack)?;
2934                    }
2935                    _ => skip_tree(stack),
2936                }
2937                Ok(())
2938            },
2939        )
2940    }
2941}
2942/// <p>A complex type that contains information about one health check that is associated with the current AWS account.</p>
2943#[derive(Clone, Debug, Default, PartialEq)]
2944#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
2945pub struct HealthCheck {
2946    /// <p>A unique string that you specified when you created the health check.</p>
2947    pub caller_reference: String,
2948    /// <p>A complex type that contains information about the CloudWatch alarm that Amazon Route 53 is monitoring for this health check.</p>
2949    pub cloud_watch_alarm_configuration: Option<CloudWatchAlarmConfiguration>,
2950    /// <p>A complex type that contains detailed information about one health check.</p>
2951    pub health_check_config: HealthCheckConfig,
2952    /// <p>The version of the health check. You can optionally pass this value in a call to <code>UpdateHealthCheck</code> to prevent overwriting another change to the health check.</p>
2953    pub health_check_version: i64,
2954    /// <p>The identifier that Amazon Route 53assigned to the health check when you created it. When you add or update a resource record set, you use this value to specify which health check to use. The value can be up to 64 characters long. </p>
2955    pub id: String,
2956    /// <p>If the health check was created by another service, the service that created the health check. When a health check is created by another service, you can't edit or delete it using Amazon Route 53. </p>
2957    pub linked_service: Option<LinkedService>,
2958}
2959
2960#[allow(dead_code)]
2961struct HealthCheckDeserializer;
2962impl HealthCheckDeserializer {
2963    #[allow(dead_code, unused_variables)]
2964    fn deserialize<T: Peek + Next>(
2965        tag_name: &str,
2966        stack: &mut T,
2967    ) -> Result<HealthCheck, XmlParseError> {
2968        deserialize_elements::<_, HealthCheck, _>(tag_name, stack, |name, stack, obj| {
2969            match name {
2970                "CallerReference" => {
2971                    obj.caller_reference =
2972                        HealthCheckNonceDeserializer::deserialize("CallerReference", stack)?;
2973                }
2974                "CloudWatchAlarmConfiguration" => {
2975                    obj.cloud_watch_alarm_configuration =
2976                        Some(CloudWatchAlarmConfigurationDeserializer::deserialize(
2977                            "CloudWatchAlarmConfiguration",
2978                            stack,
2979                        )?);
2980                }
2981                "HealthCheckConfig" => {
2982                    obj.health_check_config =
2983                        HealthCheckConfigDeserializer::deserialize("HealthCheckConfig", stack)?;
2984                }
2985                "HealthCheckVersion" => {
2986                    obj.health_check_version =
2987                        HealthCheckVersionDeserializer::deserialize("HealthCheckVersion", stack)?;
2988                }
2989                "Id" => {
2990                    obj.id = HealthCheckIdDeserializer::deserialize("Id", stack)?;
2991                }
2992                "LinkedService" => {
2993                    obj.linked_service = Some(LinkedServiceDeserializer::deserialize(
2994                        "LinkedService",
2995                        stack,
2996                    )?);
2997                }
2998                _ => skip_tree(stack),
2999            }
3000            Ok(())
3001        })
3002    }
3003}
3004/// <p>A complex type that contains information about the health check.</p>
3005#[derive(Clone, Debug, Default, PartialEq)]
3006#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3007#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3008pub struct HealthCheckConfig {
3009    /// <p>A complex type that identifies the CloudWatch alarm that you want Amazon Route 53 health checkers to use to determine whether the specified health check is healthy.</p>
3010    pub alarm_identifier: Option<AlarmIdentifier>,
3011    /// <p>(CALCULATED Health Checks Only) A complex type that contains one <code>ChildHealthCheck</code> element for each health check that you want to associate with a <code>CALCULATED</code> health check.</p>
3012    pub child_health_checks: Option<Vec<String>>,
3013    /// <p>Stops Route 53 from performing health checks. When you disable a health check, here's what happens:</p> <ul> <li> <p> <b>Health checks that check the health of endpoints:</b> Route 53 stops submitting requests to your application, server, or other resource.</p> </li> <li> <p> <b>Calculated health checks:</b> Route 53 stops aggregating the status of the referenced health checks.</p> </li> <li> <p> <b>Health checks that monitor CloudWatch alarms:</b> Route 53 stops monitoring the corresponding CloudWatch metrics.</p> </li> </ul> <p>After you disable a health check, Route 53 considers the status of the health check to always be healthy. If you configured DNS failover, Route 53 continues to route traffic to the corresponding resources. If you want to stop routing traffic to a resource, change the value of <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-Inverted">Inverted</a>. </p> <p>Charges for a health check still apply when the health check is disabled. For more information, see <a href="http://aws.amazon.com/route53/pricing/">Amazon Route 53 Pricing</a>.</p>
3014    pub disabled: Option<bool>,
3015    /// <p>Specify whether you want Amazon Route 53 to send the value of <code>FullyQualifiedDomainName</code> to the endpoint in the <code>client_hello</code> message during TLS negotiation. This allows the endpoint to respond to <code>HTTPS</code> health check requests with the applicable SSL/TLS certificate.</p> <p>Some endpoints require that <code>HTTPS</code> requests include the host name in the <code>client_hello</code> message. If you don't enable SNI, the status of the health check will be <code>SSL alert handshake_failure</code>. A health check can also have that status for other reasons. If SNI is enabled and you're still getting the error, check the SSL/TLS configuration on your endpoint and confirm that your certificate is valid.</p> <p>The SSL/TLS certificate on your endpoint includes a domain name in the <code>Common Name</code> field and possibly several more in the <code>Subject Alternative Names</code> field. One of the domain names in the certificate should match the value that you specify for <code>FullyQualifiedDomainName</code>. If the endpoint responds to the <code>client_hello</code> message with a certificate that does not include the domain name that you specified in <code>FullyQualifiedDomainName</code>, a health checker will retry the handshake. In the second attempt, the health checker will omit <code>FullyQualifiedDomainName</code> from the <code>client_hello</code> message.</p>
3016    pub enable_sni: Option<bool>,
3017    /// <p>The number of consecutive health checks that an endpoint must pass or fail for Amazon Route 53 to change the current status of the endpoint from unhealthy to healthy or vice versa. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html">How Amazon Route 53 Determines Whether an Endpoint Is Healthy</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>If you don't specify a value for <code>FailureThreshold</code>, the default value is three health checks.</p>
3018    pub failure_threshold: Option<i64>,
3019    /// <p>Amazon Route 53 behavior depends on whether you specify a value for <code>IPAddress</code>.</p> <p> <b>If you specify a value for</b> <code>IPAddress</code>:</p> <p>Amazon Route 53 sends health check requests to the specified IPv4 or IPv6 address and passes the value of <code>FullyQualifiedDomainName</code> in the <code>Host</code> header for all health checks except TCP health checks. This is typically the fully qualified DNS name of the endpoint on which you want Route 53 to perform health checks.</p> <p>When Route 53 checks the health of an endpoint, here is how it constructs the <code>Host</code> header:</p> <ul> <li> <p>If you specify a value of <code>80</code> for <code>Port</code> and <code>HTTP</code> or <code>HTTP_STR_MATCH</code> for <code>Type</code>, Route 53 passes the value of <code>FullyQualifiedDomainName</code> to the endpoint in the Host header. </p> </li> <li> <p>If you specify a value of <code>443</code> for <code>Port</code> and <code>HTTPS</code> or <code>HTTPS_STR_MATCH</code> for <code>Type</code>, Route 53 passes the value of <code>FullyQualifiedDomainName</code> to the endpoint in the <code>Host</code> header.</p> </li> <li> <p>If you specify another value for <code>Port</code> and any value except <code>TCP</code> for <code>Type</code>, Route 53 passes <code>FullyQualifiedDomainName:Port</code> to the endpoint in the <code>Host</code> header.</p> </li> </ul> <p>If you don't specify a value for <code>FullyQualifiedDomainName</code>, Route 53 substitutes the value of <code>IPAddress</code> in the <code>Host</code> header in each of the preceding cases.</p> <p> <b>If you don't specify a value for <code>IPAddress</code> </b>:</p> <p>Route 53 sends a DNS request to the domain that you specify for <code>FullyQualifiedDomainName</code> at the interval that you specify for <code>RequestInterval</code>. Using an IPv4 address that DNS returns, Route 53 then checks the health of the endpoint.</p> <note> <p>If you don't specify a value for <code>IPAddress</code>, Route 53 uses only IPv4 to send health checks to the endpoint. If there's no resource record set with a type of A for the name that you specify for <code>FullyQualifiedDomainName</code>, the health check fails with a "DNS resolution failed" error.</p> </note> <p>If you want to check the health of weighted, latency, or failover resource record sets and you choose to specify the endpoint only by <code>FullyQualifiedDomainName</code>, we recommend that you create a separate health check for each endpoint. For example, create a health check for each HTTP server that is serving content for www.example.com. For the value of <code>FullyQualifiedDomainName</code>, specify the domain name of the server (such as us-east-2-www.example.com), not the name of the resource record sets (www.example.com).</p> <important> <p>In this configuration, if you create a health check for which the value of <code>FullyQualifiedDomainName</code> matches the name of the resource record sets and you then associate the health check with those resource record sets, health check results will be unpredictable.</p> </important> <p>In addition, if the value that you specify for <code>Type</code> is <code>HTTP</code>, <code>HTTPS</code>, <code>HTTP_STR_MATCH</code>, or <code>HTTPS_STR_MATCH</code>, Route 53 passes the value of <code>FullyQualifiedDomainName</code> in the <code>Host</code> header, as it does when you specify a value for <code>IPAddress</code>. If the value of <code>Type</code> is <code>TCP</code>, Route 53 doesn't pass a <code>Host</code> header.</p>
3020    pub fully_qualified_domain_name: Option<String>,
3021    /// <p><p>The number of child health checks that are associated with a <code>CALCULATED</code> health check that Amazon Route 53 must consider healthy for the <code>CALCULATED</code> health check to be considered healthy. To specify the child health checks that you want to associate with a <code>CALCULATED</code> health check, use the <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-ChildHealthChecks">ChildHealthChecks</a> element.</p> <p>Note the following:</p> <ul> <li> <p>If you specify a number greater than the number of child health checks, Route 53 always considers this health check to be unhealthy.</p> </li> <li> <p>If you specify <code>0</code>, Route 53 always considers this health check to be healthy.</p> </li> </ul></p>
3022    pub health_threshold: Option<i64>,
3023    /// <p>The IPv4 or IPv6 IP address of the endpoint that you want Amazon Route 53 to perform health checks on. If you don't specify a value for <code>IPAddress</code>, Route 53 sends a DNS request to resolve the domain name that you specify in <code>FullyQualifiedDomainName</code> at the interval that you specify in <code>RequestInterval</code>. Using an IP address returned by DNS, Route 53 then checks the health of the endpoint.</p> <p>Use one of the following formats for the value of <code>IPAddress</code>: </p> <ul> <li> <p> <b>IPv4 address</b>: four values between 0 and 255, separated by periods (.), for example, <code>192.0.2.44</code>.</p> </li> <li> <p> <b>IPv6 address</b>: eight groups of four hexadecimal values, separated by colons (:), for example, <code>2001:0db8:85a3:0000:0000:abcd:0001:2345</code>. You can also shorten IPv6 addresses as described in RFC 5952, for example, <code>2001:db8:85a3::abcd:1:2345</code>.</p> </li> </ul> <p>If the endpoint is an EC2 instance, we recommend that you create an Elastic IP address, associate it with your EC2 instance, and specify the Elastic IP address for <code>IPAddress</code>. This ensures that the IP address of your instance will never change.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-FullyQualifiedDomainName">FullyQualifiedDomainName</a>. </p> <p>Constraints: Route 53 can't check the health of endpoints for which the IP address is in local, private, non-routable, or multicast ranges. For more information about IP addresses for which you can't create health checks, see the following documents:</p> <ul> <li> <p> <a href="https://tools.ietf.org/html/rfc5735">RFC 5735, Special Use IPv4 Addresses</a> </p> </li> <li> <p> <a href="https://tools.ietf.org/html/rfc6598">RFC 6598, IANA-Reserved IPv4 Prefix for Shared Address Space</a> </p> </li> <li> <p> <a href="https://tools.ietf.org/html/rfc5156">RFC 5156, Special-Use IPv6 Addresses</a> </p> </li> </ul> <p>When the value of <code>Type</code> is <code>CALCULATED</code> or <code>CLOUDWATCH_METRIC</code>, omit <code>IPAddress</code>.</p>
3024    pub ip_address: Option<String>,
3025    /// <p><p>When CloudWatch has insufficient data about the metric to determine the alarm state, the status that you want Amazon Route 53 to assign to the health check:</p> <ul> <li> <p> <code>Healthy</code>: Route 53 considers the health check to be healthy.</p> </li> <li> <p> <code>Unhealthy</code>: Route 53 considers the health check to be unhealthy.</p> </li> <li> <p> <code>LastKnownStatus</code>: Route 53 uses the status of the health check from the last time that CloudWatch had sufficient data to determine the alarm state. For new health checks that have no last known status, the default status for the health check is healthy.</p> </li> </ul></p>
3026    pub insufficient_data_health_status: Option<String>,
3027    /// <p>Specify whether you want Amazon Route 53 to invert the status of a health check, for example, to consider a health check unhealthy when it otherwise would be considered healthy.</p>
3028    pub inverted: Option<bool>,
3029    /// <p><p>Specify whether you want Amazon Route 53 to measure the latency between health checkers in multiple AWS regions and your endpoint, and to display CloudWatch latency graphs on the <b>Health Checks</b> page in the Route 53 console.</p> <important> <p>You can&#39;t change the value of <code>MeasureLatency</code> after you create a health check.</p> </important></p>
3030    pub measure_latency: Option<bool>,
3031    /// <p><p>The port on the endpoint that you want Amazon Route 53 to perform health checks on.</p> <note> <p>Don&#39;t specify a value for <code>Port</code> when you specify a value for <code>Type</code> of <code>CLOUDWATCH_METRIC</code> or <code>CALCULATED</code>.</p> </note></p>
3032    pub port: Option<i64>,
3033    /// <p>A complex type that contains one <code>Region</code> element for each region from which you want Amazon Route 53 health checkers to check the specified endpoint.</p> <p>If you don't specify any regions, Route 53 health checkers automatically performs checks from all of the regions that are listed under <b>Valid Values</b>.</p> <p>If you update a health check to remove a region that has been performing health checks, Route 53 will briefly continue to perform checks from that region to ensure that some health checkers are always checking the endpoint (for example, if you replace three regions with four different regions). </p>
3034    pub regions: Option<Vec<String>>,
3035    /// <p>The number of seconds between the time that Amazon Route 53 gets a response from your endpoint and the time that it sends the next health check request. Each Route 53 health checker makes requests at this interval.</p> <important> <p>You can't change the value of <code>RequestInterval</code> after you create a health check.</p> </important> <p>If you don't specify a value for <code>RequestInterval</code>, the default value is <code>30</code> seconds.</p>
3036    pub request_interval: Option<i64>,
3037    /// <p>The path, if any, that you want Amazon Route 53 to request when performing health checks. The path can be any value for which your endpoint will return an HTTP status code of 2xx or 3xx when the endpoint is healthy, for example, the file /docs/route53-health-check.html. You can also include query string parameters, for example, <code>/welcome.html?language=jp&amp;login=y</code>. </p>
3038    pub resource_path: Option<String>,
3039    /// <p>If the value of Type is <code>HTTP_STR_MATCH</code> or <code>HTTPS_STR_MATCH</code>, the string that you want Amazon Route 53 to search for in the response body from the specified resource. If the string appears in the response body, Route 53 considers the resource healthy.</p> <p>Route 53 considers case when searching for <code>SearchString</code> in the response body. </p>
3040    pub search_string: Option<String>,
3041    /// <p>The type of health check that you want to create, which indicates how Amazon Route 53 determines whether an endpoint is healthy.</p> <important> <p>You can't change the value of <code>Type</code> after you create a health check.</p> </important> <p>You can create the following types of health checks:</p> <ul> <li> <p> <b>HTTP</b>: Route 53 tries to establish a TCP connection. If successful, Route 53 submits an HTTP request and waits for an HTTP status code of 200 or greater and less than 400.</p> </li> <li> <p> <b>HTTPS</b>: Route 53 tries to establish a TCP connection. If successful, Route 53 submits an HTTPS request and waits for an HTTP status code of 200 or greater and less than 400.</p> <important> <p>If you specify <code>HTTPS</code> for the value of <code>Type</code>, the endpoint must support TLS v1.0 or later.</p> </important> </li> <li> <p> <b>HTTP_STR_MATCH</b>: Route 53 tries to establish a TCP connection. If successful, Route 53 submits an HTTP request and searches the first 5,120 bytes of the response body for the string that you specify in <code>SearchString</code>.</p> </li> <li> <p> <b>HTTPS_STR_MATCH</b>: Route 53 tries to establish a TCP connection. If successful, Route 53 submits an <code>HTTPS</code> request and searches the first 5,120 bytes of the response body for the string that you specify in <code>SearchString</code>.</p> </li> <li> <p> <b>TCP</b>: Route 53 tries to establish a TCP connection.</p> </li> <li> <p> <b>CLOUDWATCH_METRIC</b>: The health check is associated with a CloudWatch alarm. If the state of the alarm is <code>OK</code>, the health check is considered healthy. If the state is <code>ALARM</code>, the health check is considered unhealthy. If CloudWatch doesn't have sufficient data to determine whether the state is <code>OK</code> or <code>ALARM</code>, the health check status depends on the setting for <code>InsufficientDataHealthStatus</code>: <code>Healthy</code>, <code>Unhealthy</code>, or <code>LastKnownStatus</code>. </p> </li> <li> <p> <b>CALCULATED</b>: For health checks that monitor the status of other health checks, Route 53 adds up the number of health checks that Route 53 health checkers consider to be healthy and compares that number with the value of <code>HealthThreshold</code>. </p> </li> </ul> <p>For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html">How Route 53 Determines Whether an Endpoint Is Healthy</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
3042    pub type_: String,
3043}
3044
3045#[allow(dead_code)]
3046struct HealthCheckConfigDeserializer;
3047impl HealthCheckConfigDeserializer {
3048    #[allow(dead_code, unused_variables)]
3049    fn deserialize<T: Peek + Next>(
3050        tag_name: &str,
3051        stack: &mut T,
3052    ) -> Result<HealthCheckConfig, XmlParseError> {
3053        deserialize_elements::<_, HealthCheckConfig, _>(tag_name, stack, |name, stack, obj| {
3054            match name {
3055                "AlarmIdentifier" => {
3056                    obj.alarm_identifier = Some(AlarmIdentifierDeserializer::deserialize(
3057                        "AlarmIdentifier",
3058                        stack,
3059                    )?);
3060                }
3061                "ChildHealthChecks" => {
3062                    obj.child_health_checks.get_or_insert(vec![]).extend(
3063                        ChildHealthCheckListDeserializer::deserialize("ChildHealthChecks", stack)?,
3064                    );
3065                }
3066                "Disabled" => {
3067                    obj.disabled = Some(DisabledDeserializer::deserialize("Disabled", stack)?);
3068                }
3069                "EnableSNI" => {
3070                    obj.enable_sni = Some(EnableSNIDeserializer::deserialize("EnableSNI", stack)?);
3071                }
3072                "FailureThreshold" => {
3073                    obj.failure_threshold = Some(FailureThresholdDeserializer::deserialize(
3074                        "FailureThreshold",
3075                        stack,
3076                    )?);
3077                }
3078                "FullyQualifiedDomainName" => {
3079                    obj.fully_qualified_domain_name =
3080                        Some(FullyQualifiedDomainNameDeserializer::deserialize(
3081                            "FullyQualifiedDomainName",
3082                            stack,
3083                        )?);
3084                }
3085                "HealthThreshold" => {
3086                    obj.health_threshold = Some(HealthThresholdDeserializer::deserialize(
3087                        "HealthThreshold",
3088                        stack,
3089                    )?);
3090                }
3091                "IPAddress" => {
3092                    obj.ip_address = Some(IPAddressDeserializer::deserialize("IPAddress", stack)?);
3093                }
3094                "InsufficientDataHealthStatus" => {
3095                    obj.insufficient_data_health_status =
3096                        Some(InsufficientDataHealthStatusDeserializer::deserialize(
3097                            "InsufficientDataHealthStatus",
3098                            stack,
3099                        )?);
3100                }
3101                "Inverted" => {
3102                    obj.inverted = Some(InvertedDeserializer::deserialize("Inverted", stack)?);
3103                }
3104                "MeasureLatency" => {
3105                    obj.measure_latency = Some(MeasureLatencyDeserializer::deserialize(
3106                        "MeasureLatency",
3107                        stack,
3108                    )?);
3109                }
3110                "Port" => {
3111                    obj.port = Some(PortDeserializer::deserialize("Port", stack)?);
3112                }
3113                "Regions" => {
3114                    obj.regions.get_or_insert(vec![]).extend(
3115                        HealthCheckRegionListDeserializer::deserialize("Regions", stack)?,
3116                    );
3117                }
3118                "RequestInterval" => {
3119                    obj.request_interval = Some(RequestIntervalDeserializer::deserialize(
3120                        "RequestInterval",
3121                        stack,
3122                    )?);
3123                }
3124                "ResourcePath" => {
3125                    obj.resource_path = Some(ResourcePathDeserializer::deserialize(
3126                        "ResourcePath",
3127                        stack,
3128                    )?);
3129                }
3130                "SearchString" => {
3131                    obj.search_string = Some(SearchStringDeserializer::deserialize(
3132                        "SearchString",
3133                        stack,
3134                    )?);
3135                }
3136                "Type" => {
3137                    obj.type_ = HealthCheckTypeDeserializer::deserialize("Type", stack)?;
3138                }
3139                _ => skip_tree(stack),
3140            }
3141            Ok(())
3142        })
3143    }
3144}
3145
3146pub struct HealthCheckConfigSerializer;
3147impl HealthCheckConfigSerializer {
3148    #[allow(unused_variables, warnings)]
3149    pub fn serialize<W>(
3150        mut writer: &mut EventWriter<W>,
3151        name: &str,
3152        obj: &HealthCheckConfig,
3153    ) -> Result<(), xml::writer::Error>
3154    where
3155        W: Write,
3156    {
3157        writer.write(xml::writer::XmlEvent::start_element(name))?;
3158        if let Some(ref value) = obj.alarm_identifier {
3159            &AlarmIdentifierSerializer::serialize(&mut writer, "AlarmIdentifier", value)?;
3160        }
3161        if let Some(ref value) = obj.child_health_checks {
3162            &ChildHealthCheckListSerializer::serialize(&mut writer, "ChildHealthChecks", value)?;
3163        }
3164        if let Some(ref value) = obj.disabled {
3165            write_characters_element(writer, "Disabled", &value.to_string())?;
3166        }
3167        if let Some(ref value) = obj.enable_sni {
3168            write_characters_element(writer, "EnableSNI", &value.to_string())?;
3169        }
3170        if let Some(ref value) = obj.failure_threshold {
3171            write_characters_element(writer, "FailureThreshold", &value.to_string())?;
3172        }
3173        if let Some(ref value) = obj.fully_qualified_domain_name {
3174            write_characters_element(writer, "FullyQualifiedDomainName", &value.to_string())?;
3175        }
3176        if let Some(ref value) = obj.health_threshold {
3177            write_characters_element(writer, "HealthThreshold", &value.to_string())?;
3178        }
3179        if let Some(ref value) = obj.ip_address {
3180            write_characters_element(writer, "IPAddress", &value.to_string())?;
3181        }
3182        if let Some(ref value) = obj.insufficient_data_health_status {
3183            write_characters_element(writer, "InsufficientDataHealthStatus", &value.to_string())?;
3184        }
3185        if let Some(ref value) = obj.inverted {
3186            write_characters_element(writer, "Inverted", &value.to_string())?;
3187        }
3188        if let Some(ref value) = obj.measure_latency {
3189            write_characters_element(writer, "MeasureLatency", &value.to_string())?;
3190        }
3191        if let Some(ref value) = obj.port {
3192            write_characters_element(writer, "Port", &value.to_string())?;
3193        }
3194        if let Some(ref value) = obj.regions {
3195            &HealthCheckRegionListSerializer::serialize(&mut writer, "Regions", value)?;
3196        }
3197        if let Some(ref value) = obj.request_interval {
3198            write_characters_element(writer, "RequestInterval", &value.to_string())?;
3199        }
3200        if let Some(ref value) = obj.resource_path {
3201            write_characters_element(writer, "ResourcePath", &value.to_string())?;
3202        }
3203        if let Some(ref value) = obj.search_string {
3204            write_characters_element(writer, "SearchString", &value.to_string())?;
3205        }
3206        write_characters_element(writer, "Type", &obj.type_.to_string())?;
3207        writer.write(xml::writer::XmlEvent::end_element())
3208    }
3209}
3210
3211#[allow(dead_code)]
3212struct HealthCheckCountDeserializer;
3213impl HealthCheckCountDeserializer {
3214    #[allow(dead_code, unused_variables)]
3215    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
3216        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
3217    }
3218}
3219#[allow(dead_code)]
3220struct HealthCheckIdDeserializer;
3221impl HealthCheckIdDeserializer {
3222    #[allow(dead_code, unused_variables)]
3223    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
3224        xml_util::deserialize_primitive(tag_name, stack, Ok)
3225    }
3226}
3227
3228pub struct HealthCheckIdSerializer;
3229impl HealthCheckIdSerializer {
3230    #[allow(unused_variables, warnings)]
3231    pub fn serialize<W>(
3232        mut writer: &mut EventWriter<W>,
3233        name: &str,
3234        obj: &String,
3235    ) -> Result<(), xml::writer::Error>
3236    where
3237        W: Write,
3238    {
3239        write_characters_element(writer, name, obj)
3240    }
3241}
3242
3243#[allow(dead_code)]
3244struct HealthCheckNonceDeserializer;
3245impl HealthCheckNonceDeserializer {
3246    #[allow(dead_code, unused_variables)]
3247    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
3248        xml_util::deserialize_primitive(tag_name, stack, Ok)
3249    }
3250}
3251
3252pub struct HealthCheckNonceSerializer;
3253impl HealthCheckNonceSerializer {
3254    #[allow(unused_variables, warnings)]
3255    pub fn serialize<W>(
3256        mut writer: &mut EventWriter<W>,
3257        name: &str,
3258        obj: &String,
3259    ) -> Result<(), xml::writer::Error>
3260    where
3261        W: Write,
3262    {
3263        write_characters_element(writer, name, obj)
3264    }
3265}
3266
3267/// <p>A complex type that contains the last failure reason as reported by one Amazon Route 53 health checker.</p>
3268#[derive(Clone, Debug, Default, PartialEq)]
3269#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3270pub struct HealthCheckObservation {
3271    /// <p>The IP address of the Amazon Route 53 health checker that provided the failure reason in <code>StatusReport</code>.</p>
3272    pub ip_address: Option<String>,
3273    /// <p>The region of the Amazon Route 53 health checker that provided the status in <code>StatusReport</code>.</p>
3274    pub region: Option<String>,
3275    /// <p>A complex type that contains the last failure reason as reported by one Amazon Route 53 health checker and the time of the failed health check.</p>
3276    pub status_report: Option<StatusReport>,
3277}
3278
3279#[allow(dead_code)]
3280struct HealthCheckObservationDeserializer;
3281impl HealthCheckObservationDeserializer {
3282    #[allow(dead_code, unused_variables)]
3283    fn deserialize<T: Peek + Next>(
3284        tag_name: &str,
3285        stack: &mut T,
3286    ) -> Result<HealthCheckObservation, XmlParseError> {
3287        deserialize_elements::<_, HealthCheckObservation, _>(tag_name, stack, |name, stack, obj| {
3288            match name {
3289                "IPAddress" => {
3290                    obj.ip_address = Some(IPAddressDeserializer::deserialize("IPAddress", stack)?);
3291                }
3292                "Region" => {
3293                    obj.region = Some(HealthCheckRegionDeserializer::deserialize("Region", stack)?);
3294                }
3295                "StatusReport" => {
3296                    obj.status_report = Some(StatusReportDeserializer::deserialize(
3297                        "StatusReport",
3298                        stack,
3299                    )?);
3300                }
3301                _ => skip_tree(stack),
3302            }
3303            Ok(())
3304        })
3305    }
3306}
3307#[allow(dead_code)]
3308struct HealthCheckObservationsDeserializer;
3309impl HealthCheckObservationsDeserializer {
3310    #[allow(dead_code, unused_variables)]
3311    fn deserialize<T: Peek + Next>(
3312        tag_name: &str,
3313        stack: &mut T,
3314    ) -> Result<Vec<HealthCheckObservation>, XmlParseError> {
3315        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
3316            if name == "HealthCheckObservation" {
3317                obj.push(HealthCheckObservationDeserializer::deserialize(
3318                    "HealthCheckObservation",
3319                    stack,
3320                )?);
3321            } else {
3322                skip_tree(stack);
3323            }
3324            Ok(())
3325        })
3326    }
3327}
3328#[allow(dead_code)]
3329struct HealthCheckRegionDeserializer;
3330impl HealthCheckRegionDeserializer {
3331    #[allow(dead_code, unused_variables)]
3332    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
3333        xml_util::deserialize_primitive(tag_name, stack, Ok)
3334    }
3335}
3336
3337pub struct HealthCheckRegionSerializer;
3338impl HealthCheckRegionSerializer {
3339    #[allow(unused_variables, warnings)]
3340    pub fn serialize<W>(
3341        mut writer: &mut EventWriter<W>,
3342        name: &str,
3343        obj: &String,
3344    ) -> Result<(), xml::writer::Error>
3345    where
3346        W: Write,
3347    {
3348        write_characters_element(writer, name, obj)
3349    }
3350}
3351
3352#[allow(dead_code)]
3353struct HealthCheckRegionListDeserializer;
3354impl HealthCheckRegionListDeserializer {
3355    #[allow(dead_code, unused_variables)]
3356    fn deserialize<T: Peek + Next>(
3357        tag_name: &str,
3358        stack: &mut T,
3359    ) -> Result<Vec<String>, XmlParseError> {
3360        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
3361            if name == "Region" {
3362                obj.push(HealthCheckRegionDeserializer::deserialize("Region", stack)?);
3363            } else {
3364                skip_tree(stack);
3365            }
3366            Ok(())
3367        })
3368    }
3369}
3370
3371pub struct HealthCheckRegionListSerializer;
3372impl HealthCheckRegionListSerializer {
3373    #[allow(unused_variables, warnings)]
3374    pub fn serialize<W>(
3375        mut writer: &mut EventWriter<W>,
3376        name: &str,
3377        obj: &Vec<String>,
3378    ) -> Result<(), xml::writer::Error>
3379    where
3380        W: Write,
3381    {
3382        writer.write(xml::writer::XmlEvent::start_element(name))?;
3383        for element in obj {
3384            HealthCheckRegionSerializer::serialize(writer, "Region", element)?;
3385        }
3386        writer.write(xml::writer::XmlEvent::end_element())?;
3387        Ok(())
3388    }
3389}
3390
3391#[allow(dead_code)]
3392struct HealthCheckTypeDeserializer;
3393impl HealthCheckTypeDeserializer {
3394    #[allow(dead_code, unused_variables)]
3395    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
3396        xml_util::deserialize_primitive(tag_name, stack, Ok)
3397    }
3398}
3399
3400pub struct HealthCheckTypeSerializer;
3401impl HealthCheckTypeSerializer {
3402    #[allow(unused_variables, warnings)]
3403    pub fn serialize<W>(
3404        mut writer: &mut EventWriter<W>,
3405        name: &str,
3406        obj: &String,
3407    ) -> Result<(), xml::writer::Error>
3408    where
3409        W: Write,
3410    {
3411        write_characters_element(writer, name, obj)
3412    }
3413}
3414
3415#[allow(dead_code)]
3416struct HealthCheckVersionDeserializer;
3417impl HealthCheckVersionDeserializer {
3418    #[allow(dead_code, unused_variables)]
3419    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
3420        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
3421    }
3422}
3423
3424pub struct HealthCheckVersionSerializer;
3425impl HealthCheckVersionSerializer {
3426    #[allow(unused_variables, warnings)]
3427    pub fn serialize<W>(
3428        mut writer: &mut EventWriter<W>,
3429        name: &str,
3430        obj: &i64,
3431    ) -> Result<(), xml::writer::Error>
3432    where
3433        W: Write,
3434    {
3435        write_characters_element(writer, name, &obj.to_string())
3436    }
3437}
3438
3439#[allow(dead_code)]
3440struct HealthChecksDeserializer;
3441impl HealthChecksDeserializer {
3442    #[allow(dead_code, unused_variables)]
3443    fn deserialize<T: Peek + Next>(
3444        tag_name: &str,
3445        stack: &mut T,
3446    ) -> Result<Vec<HealthCheck>, XmlParseError> {
3447        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
3448            if name == "HealthCheck" {
3449                obj.push(HealthCheckDeserializer::deserialize("HealthCheck", stack)?);
3450            } else {
3451                skip_tree(stack);
3452            }
3453            Ok(())
3454        })
3455    }
3456}
3457#[allow(dead_code)]
3458struct HealthThresholdDeserializer;
3459impl HealthThresholdDeserializer {
3460    #[allow(dead_code, unused_variables)]
3461    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
3462        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
3463    }
3464}
3465
3466pub struct HealthThresholdSerializer;
3467impl HealthThresholdSerializer {
3468    #[allow(unused_variables, warnings)]
3469    pub fn serialize<W>(
3470        mut writer: &mut EventWriter<W>,
3471        name: &str,
3472        obj: &i64,
3473    ) -> Result<(), xml::writer::Error>
3474    where
3475        W: Write,
3476    {
3477        write_characters_element(writer, name, &obj.to_string())
3478    }
3479}
3480
3481/// <p>A complex type that contains general information about the hosted zone.</p>
3482#[derive(Clone, Debug, Default, PartialEq)]
3483#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3484pub struct HostedZone {
3485    /// <p>The value that you specified for <code>CallerReference</code> when you created the hosted zone.</p>
3486    pub caller_reference: String,
3487    /// <p>A complex type that includes the <code>Comment</code> and <code>PrivateZone</code> elements. If you omitted the <code>HostedZoneConfig</code> and <code>Comment</code> elements from the request, the <code>Config</code> and <code>Comment</code> elements don't appear in the response.</p>
3488    pub config: Option<HostedZoneConfig>,
3489    /// <p>The ID that Amazon Route 53 assigned to the hosted zone when you created it.</p>
3490    pub id: String,
3491    /// <p>If the hosted zone was created by another service, the service that created the hosted zone. When a hosted zone is created by another service, you can't edit or delete it using Route 53. </p>
3492    pub linked_service: Option<LinkedService>,
3493    /// <p>The name of the domain. For public hosted zones, this is the name that you have registered with your DNS registrar.</p> <p>For information about how to specify characters other than <code>a-z</code>, <code>0-9</code>, and <code>-</code> (hyphen) and how to specify internationalized domain names, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateHostedZone.html">CreateHostedZone</a>.</p>
3494    pub name: String,
3495    /// <p>The number of resource record sets in the hosted zone.</p>
3496    pub resource_record_set_count: Option<i64>,
3497}
3498
3499#[allow(dead_code)]
3500struct HostedZoneDeserializer;
3501impl HostedZoneDeserializer {
3502    #[allow(dead_code, unused_variables)]
3503    fn deserialize<T: Peek + Next>(
3504        tag_name: &str,
3505        stack: &mut T,
3506    ) -> Result<HostedZone, XmlParseError> {
3507        deserialize_elements::<_, HostedZone, _>(tag_name, stack, |name, stack, obj| {
3508            match name {
3509                "CallerReference" => {
3510                    obj.caller_reference =
3511                        NonceDeserializer::deserialize("CallerReference", stack)?;
3512                }
3513                "Config" => {
3514                    obj.config = Some(HostedZoneConfigDeserializer::deserialize("Config", stack)?);
3515                }
3516                "Id" => {
3517                    obj.id = ResourceIdDeserializer::deserialize("Id", stack)?;
3518                }
3519                "LinkedService" => {
3520                    obj.linked_service = Some(LinkedServiceDeserializer::deserialize(
3521                        "LinkedService",
3522                        stack,
3523                    )?);
3524                }
3525                "Name" => {
3526                    obj.name = DNSNameDeserializer::deserialize("Name", stack)?;
3527                }
3528                "ResourceRecordSetCount" => {
3529                    obj.resource_record_set_count =
3530                        Some(HostedZoneRRSetCountDeserializer::deserialize(
3531                            "ResourceRecordSetCount",
3532                            stack,
3533                        )?);
3534                }
3535                _ => skip_tree(stack),
3536            }
3537            Ok(())
3538        })
3539    }
3540}
3541/// <p>A complex type that contains an optional comment about your hosted zone. If you don't want to specify a comment, omit both the <code>HostedZoneConfig</code> and <code>Comment</code> elements.</p>
3542#[derive(Clone, Debug, Default, PartialEq)]
3543#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3544#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3545pub struct HostedZoneConfig {
3546    /// <p>Any comments that you want to include about the hosted zone.</p>
3547    pub comment: Option<String>,
3548    /// <p>A value that indicates whether this is a private hosted zone.</p>
3549    pub private_zone: Option<bool>,
3550}
3551
3552#[allow(dead_code)]
3553struct HostedZoneConfigDeserializer;
3554impl HostedZoneConfigDeserializer {
3555    #[allow(dead_code, unused_variables)]
3556    fn deserialize<T: Peek + Next>(
3557        tag_name: &str,
3558        stack: &mut T,
3559    ) -> Result<HostedZoneConfig, XmlParseError> {
3560        deserialize_elements::<_, HostedZoneConfig, _>(tag_name, stack, |name, stack, obj| {
3561            match name {
3562                "Comment" => {
3563                    obj.comment = Some(ResourceDescriptionDeserializer::deserialize(
3564                        "Comment", stack,
3565                    )?);
3566                }
3567                "PrivateZone" => {
3568                    obj.private_zone = Some(IsPrivateZoneDeserializer::deserialize(
3569                        "PrivateZone",
3570                        stack,
3571                    )?);
3572                }
3573                _ => skip_tree(stack),
3574            }
3575            Ok(())
3576        })
3577    }
3578}
3579
3580pub struct HostedZoneConfigSerializer;
3581impl HostedZoneConfigSerializer {
3582    #[allow(unused_variables, warnings)]
3583    pub fn serialize<W>(
3584        mut writer: &mut EventWriter<W>,
3585        name: &str,
3586        obj: &HostedZoneConfig,
3587    ) -> Result<(), xml::writer::Error>
3588    where
3589        W: Write,
3590    {
3591        writer.write(xml::writer::XmlEvent::start_element(name))?;
3592        if let Some(ref value) = obj.comment {
3593            write_characters_element(writer, "Comment", &value.to_string())?;
3594        }
3595        if let Some(ref value) = obj.private_zone {
3596            write_characters_element(writer, "PrivateZone", &value.to_string())?;
3597        }
3598        writer.write(xml::writer::XmlEvent::end_element())
3599    }
3600}
3601
3602#[allow(dead_code)]
3603struct HostedZoneCountDeserializer;
3604impl HostedZoneCountDeserializer {
3605    #[allow(dead_code, unused_variables)]
3606    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
3607        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
3608    }
3609}
3610/// <p>A complex type that contains the type of limit that you specified in the request and the current value for that limit.</p>
3611#[derive(Clone, Debug, Default, PartialEq)]
3612#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3613pub struct HostedZoneLimit {
3614    /// <p><p>The limit that you requested. Valid values include the following:</p> <ul> <li> <p> <b>MAX<em>RRSETS</em>BY<em>ZONE</b>: The maximum number of records that you can create in the specified hosted zone.</p> </li> <li> <p> <b>MAX</em>VPCS<em>ASSOCIATED</em>BY_ZONE</b>: The maximum number of Amazon VPCs that you can associate with the specified private hosted zone.</p> </li> </ul></p>
3615    pub type_: String,
3616    /// <p>The current value for the limit that is specified by <code>Type</code>.</p>
3617    pub value: i64,
3618}
3619
3620#[allow(dead_code)]
3621struct HostedZoneLimitDeserializer;
3622impl HostedZoneLimitDeserializer {
3623    #[allow(dead_code, unused_variables)]
3624    fn deserialize<T: Peek + Next>(
3625        tag_name: &str,
3626        stack: &mut T,
3627    ) -> Result<HostedZoneLimit, XmlParseError> {
3628        deserialize_elements::<_, HostedZoneLimit, _>(tag_name, stack, |name, stack, obj| {
3629            match name {
3630                "Type" => {
3631                    obj.type_ = HostedZoneLimitTypeDeserializer::deserialize("Type", stack)?;
3632                }
3633                "Value" => {
3634                    obj.value = LimitValueDeserializer::deserialize("Value", stack)?;
3635                }
3636                _ => skip_tree(stack),
3637            }
3638            Ok(())
3639        })
3640    }
3641}
3642#[allow(dead_code)]
3643struct HostedZoneLimitTypeDeserializer;
3644impl HostedZoneLimitTypeDeserializer {
3645    #[allow(dead_code, unused_variables)]
3646    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
3647        xml_util::deserialize_primitive(tag_name, stack, Ok)
3648    }
3649}
3650
3651pub struct HostedZoneLimitTypeSerializer;
3652impl HostedZoneLimitTypeSerializer {
3653    #[allow(unused_variables, warnings)]
3654    pub fn serialize<W>(
3655        mut writer: &mut EventWriter<W>,
3656        name: &str,
3657        obj: &String,
3658    ) -> Result<(), xml::writer::Error>
3659    where
3660        W: Write,
3661    {
3662        write_characters_element(writer, name, obj)
3663    }
3664}
3665
3666/// <p>A complex type that identifies a hosted zone that a specified Amazon VPC is associated with and the owner of the hosted zone. If there is a value for <code>OwningAccount</code>, there is no value for <code>OwningService</code>, and vice versa. </p>
3667#[derive(Clone, Debug, Default, PartialEq)]
3668#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3669pub struct HostedZoneOwner {
3670    /// <p>If the hosted zone was created by an AWS account, or was created by an AWS service that creates hosted zones using the current account, <code>OwningAccount</code> contains the account ID of that account. For example, when you use AWS Cloud Map to create a hosted zone, Cloud Map creates the hosted zone using the current AWS account. </p>
3671    pub owning_account: Option<String>,
3672    /// <p>If an AWS service uses its own account to create a hosted zone and associate the specified VPC with that hosted zone, <code>OwningService</code> contains an abbreviation that identifies the service. For example, if Amazon Elastic File System (Amazon EFS) created a hosted zone and associated a VPC with the hosted zone, the value of <code>OwningService</code> is <code>efs.amazonaws.com</code>.</p>
3673    pub owning_service: Option<String>,
3674}
3675
3676#[allow(dead_code)]
3677struct HostedZoneOwnerDeserializer;
3678impl HostedZoneOwnerDeserializer {
3679    #[allow(dead_code, unused_variables)]
3680    fn deserialize<T: Peek + Next>(
3681        tag_name: &str,
3682        stack: &mut T,
3683    ) -> Result<HostedZoneOwner, XmlParseError> {
3684        deserialize_elements::<_, HostedZoneOwner, _>(tag_name, stack, |name, stack, obj| {
3685            match name {
3686                "OwningAccount" => {
3687                    obj.owning_account = Some(AWSAccountIDDeserializer::deserialize(
3688                        "OwningAccount",
3689                        stack,
3690                    )?);
3691                }
3692                "OwningService" => {
3693                    obj.owning_service = Some(HostedZoneOwningServiceDeserializer::deserialize(
3694                        "OwningService",
3695                        stack,
3696                    )?);
3697                }
3698                _ => skip_tree(stack),
3699            }
3700            Ok(())
3701        })
3702    }
3703}
3704#[allow(dead_code)]
3705struct HostedZoneOwningServiceDeserializer;
3706impl HostedZoneOwningServiceDeserializer {
3707    #[allow(dead_code, unused_variables)]
3708    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
3709        xml_util::deserialize_primitive(tag_name, stack, Ok)
3710    }
3711}
3712#[allow(dead_code)]
3713struct HostedZoneRRSetCountDeserializer;
3714impl HostedZoneRRSetCountDeserializer {
3715    #[allow(dead_code, unused_variables)]
3716    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
3717        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
3718    }
3719}
3720#[allow(dead_code)]
3721struct HostedZoneSummariesDeserializer;
3722impl HostedZoneSummariesDeserializer {
3723    #[allow(dead_code, unused_variables)]
3724    fn deserialize<T: Peek + Next>(
3725        tag_name: &str,
3726        stack: &mut T,
3727    ) -> Result<Vec<HostedZoneSummary>, XmlParseError> {
3728        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
3729            if name == "HostedZoneSummary" {
3730                obj.push(HostedZoneSummaryDeserializer::deserialize(
3731                    "HostedZoneSummary",
3732                    stack,
3733                )?);
3734            } else {
3735                skip_tree(stack);
3736            }
3737            Ok(())
3738        })
3739    }
3740}
3741/// <p>In the response to a <code>ListHostedZonesByVPC</code> request, the <code>HostedZoneSummaries</code> element contains one <code>HostedZoneSummary</code> element for each hosted zone that the specified Amazon VPC is associated with. Each <code>HostedZoneSummary</code> element contains the hosted zone name and ID, and information about who owns the hosted zone.</p>
3742#[derive(Clone, Debug, Default, PartialEq)]
3743#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3744pub struct HostedZoneSummary {
3745    /// <p>The Route 53 hosted zone ID of a private hosted zone that the specified VPC is associated with.</p>
3746    pub hosted_zone_id: String,
3747    /// <p>The name of the private hosted zone, such as <code>example.com</code>.</p>
3748    pub name: String,
3749    /// <p>The owner of a private hosted zone that the specified VPC is associated with. The owner can be either an AWS account or an AWS service.</p>
3750    pub owner: HostedZoneOwner,
3751}
3752
3753#[allow(dead_code)]
3754struct HostedZoneSummaryDeserializer;
3755impl HostedZoneSummaryDeserializer {
3756    #[allow(dead_code, unused_variables)]
3757    fn deserialize<T: Peek + Next>(
3758        tag_name: &str,
3759        stack: &mut T,
3760    ) -> Result<HostedZoneSummary, XmlParseError> {
3761        deserialize_elements::<_, HostedZoneSummary, _>(tag_name, stack, |name, stack, obj| {
3762            match name {
3763                "HostedZoneId" => {
3764                    obj.hosted_zone_id =
3765                        ResourceIdDeserializer::deserialize("HostedZoneId", stack)?;
3766                }
3767                "Name" => {
3768                    obj.name = DNSNameDeserializer::deserialize("Name", stack)?;
3769                }
3770                "Owner" => {
3771                    obj.owner = HostedZoneOwnerDeserializer::deserialize("Owner", stack)?;
3772                }
3773                _ => skip_tree(stack),
3774            }
3775            Ok(())
3776        })
3777    }
3778}
3779#[allow(dead_code)]
3780struct HostedZonesDeserializer;
3781impl HostedZonesDeserializer {
3782    #[allow(dead_code, unused_variables)]
3783    fn deserialize<T: Peek + Next>(
3784        tag_name: &str,
3785        stack: &mut T,
3786    ) -> Result<Vec<HostedZone>, XmlParseError> {
3787        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
3788            if name == "HostedZone" {
3789                obj.push(HostedZoneDeserializer::deserialize("HostedZone", stack)?);
3790            } else {
3791                skip_tree(stack);
3792            }
3793            Ok(())
3794        })
3795    }
3796}
3797#[allow(dead_code)]
3798struct IPAddressDeserializer;
3799impl IPAddressDeserializer {
3800    #[allow(dead_code, unused_variables)]
3801    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
3802        xml_util::deserialize_primitive(tag_name, stack, Ok)
3803    }
3804}
3805
3806pub struct IPAddressSerializer;
3807impl IPAddressSerializer {
3808    #[allow(unused_variables, warnings)]
3809    pub fn serialize<W>(
3810        mut writer: &mut EventWriter<W>,
3811        name: &str,
3812        obj: &String,
3813    ) -> Result<(), xml::writer::Error>
3814    where
3815        W: Write,
3816    {
3817        write_characters_element(writer, name, obj)
3818    }
3819}
3820
3821#[allow(dead_code)]
3822struct IPAddressCidrDeserializer;
3823impl IPAddressCidrDeserializer {
3824    #[allow(dead_code, unused_variables)]
3825    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
3826        xml_util::deserialize_primitive(tag_name, stack, Ok)
3827    }
3828}
3829#[allow(dead_code)]
3830struct InsufficientDataHealthStatusDeserializer;
3831impl InsufficientDataHealthStatusDeserializer {
3832    #[allow(dead_code, unused_variables)]
3833    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
3834        xml_util::deserialize_primitive(tag_name, stack, Ok)
3835    }
3836}
3837
3838pub struct InsufficientDataHealthStatusSerializer;
3839impl InsufficientDataHealthStatusSerializer {
3840    #[allow(unused_variables, warnings)]
3841    pub fn serialize<W>(
3842        mut writer: &mut EventWriter<W>,
3843        name: &str,
3844        obj: &String,
3845    ) -> Result<(), xml::writer::Error>
3846    where
3847        W: Write,
3848    {
3849        write_characters_element(writer, name, obj)
3850    }
3851}
3852
3853#[allow(dead_code)]
3854struct InvertedDeserializer;
3855impl InvertedDeserializer {
3856    #[allow(dead_code, unused_variables)]
3857    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<bool, XmlParseError> {
3858        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(bool::from_str(&s).unwrap()))
3859    }
3860}
3861
3862pub struct InvertedSerializer;
3863impl InvertedSerializer {
3864    #[allow(unused_variables, warnings)]
3865    pub fn serialize<W>(
3866        mut writer: &mut EventWriter<W>,
3867        name: &str,
3868        obj: &bool,
3869    ) -> Result<(), xml::writer::Error>
3870    where
3871        W: Write,
3872    {
3873        write_characters_element(writer, name, &obj.to_string())
3874    }
3875}
3876
3877#[allow(dead_code)]
3878struct IsPrivateZoneDeserializer;
3879impl IsPrivateZoneDeserializer {
3880    #[allow(dead_code, unused_variables)]
3881    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<bool, XmlParseError> {
3882        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(bool::from_str(&s).unwrap()))
3883    }
3884}
3885
3886pub struct IsPrivateZoneSerializer;
3887impl IsPrivateZoneSerializer {
3888    #[allow(unused_variables, warnings)]
3889    pub fn serialize<W>(
3890        mut writer: &mut EventWriter<W>,
3891        name: &str,
3892        obj: &bool,
3893    ) -> Result<(), xml::writer::Error>
3894    where
3895        W: Write,
3896    {
3897        write_characters_element(writer, name, &obj.to_string())
3898    }
3899}
3900
3901#[allow(dead_code)]
3902struct LimitValueDeserializer;
3903impl LimitValueDeserializer {
3904    #[allow(dead_code, unused_variables)]
3905    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
3906        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
3907    }
3908}
3909/// <p>If a health check or hosted zone was created by another service, <code>LinkedService</code> is a complex type that describes the service that created the resource. When a resource is created by another service, you can't edit or delete it using Amazon Route 53. </p>
3910#[derive(Clone, Debug, Default, PartialEq)]
3911#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3912pub struct LinkedService {
3913    /// <p>If the health check or hosted zone was created by another service, an optional description that can be provided by the other service. When a resource is created by another service, you can't edit or delete it using Amazon Route 53. </p>
3914    pub description: Option<String>,
3915    /// <p>If the health check or hosted zone was created by another service, the service that created the resource. When a resource is created by another service, you can't edit or delete it using Amazon Route 53. </p>
3916    pub service_principal: Option<String>,
3917}
3918
3919#[allow(dead_code)]
3920struct LinkedServiceDeserializer;
3921impl LinkedServiceDeserializer {
3922    #[allow(dead_code, unused_variables)]
3923    fn deserialize<T: Peek + Next>(
3924        tag_name: &str,
3925        stack: &mut T,
3926    ) -> Result<LinkedService, XmlParseError> {
3927        deserialize_elements::<_, LinkedService, _>(tag_name, stack, |name, stack, obj| {
3928            match name {
3929                "Description" => {
3930                    obj.description = Some(ResourceDescriptionDeserializer::deserialize(
3931                        "Description",
3932                        stack,
3933                    )?);
3934                }
3935                "ServicePrincipal" => {
3936                    obj.service_principal = Some(ServicePrincipalDeserializer::deserialize(
3937                        "ServicePrincipal",
3938                        stack,
3939                    )?);
3940                }
3941                _ => skip_tree(stack),
3942            }
3943            Ok(())
3944        })
3945    }
3946}
3947/// <p>A request to get a list of geographic locations that Amazon Route 53 supports for geolocation resource record sets. </p>
3948#[derive(Clone, Debug, Default, PartialEq)]
3949#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3950pub struct ListGeoLocationsRequest {
3951    /// <p>(Optional) The maximum number of geolocations to be included in the response body for this request. If more than <code>maxitems</code> geolocations remain to be listed, then the value of the <code>IsTruncated</code> element in the response is <code>true</code>.</p>
3952    pub max_items: Option<String>,
3953    /// <p>The code for the continent with which you want to start listing locations that Amazon Route 53 supports for geolocation. If Route 53 has already returned a page or more of results, if <code>IsTruncated</code> is true, and if <code>NextContinentCode</code> from the previous response has a value, enter that value in <code>startcontinentcode</code> to return the next page of results.</p> <p>Include <code>startcontinentcode</code> only if you want to list continents. Don't include <code>startcontinentcode</code> when you're listing countries or countries with their subdivisions.</p>
3954    pub start_continent_code: Option<String>,
3955    /// <p>The code for the country with which you want to start listing locations that Amazon Route 53 supports for geolocation. If Route 53 has already returned a page or more of results, if <code>IsTruncated</code> is <code>true</code>, and if <code>NextCountryCode</code> from the previous response has a value, enter that value in <code>startcountrycode</code> to return the next page of results.</p>
3956    pub start_country_code: Option<String>,
3957    /// <p>The code for the state of the United States with which you want to start listing locations that Amazon Route 53 supports for geolocation. If Route 53 has already returned a page or more of results, if <code>IsTruncated</code> is <code>true</code>, and if <code>NextSubdivisionCode</code> from the previous response has a value, enter that value in <code>startsubdivisioncode</code> to return the next page of results.</p> <p>To list subdivisions (U.S. states), you must include both <code>startcountrycode</code> and <code>startsubdivisioncode</code>.</p>
3958    pub start_subdivision_code: Option<String>,
3959}
3960
3961/// <p>A complex type containing the response information for the request.</p>
3962#[derive(Clone, Debug, Default, PartialEq)]
3963#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
3964pub struct ListGeoLocationsResponse {
3965    /// <p>A complex type that contains one <code>GeoLocationDetails</code> element for each location that Amazon Route 53 supports for geolocation.</p>
3966    pub geo_location_details_list: Vec<GeoLocationDetails>,
3967    /// <p>A value that indicates whether more locations remain to be listed after the last location in this response. If so, the value of <code>IsTruncated</code> is <code>true</code>. To get more values, submit another request and include the values of <code>NextContinentCode</code>, <code>NextCountryCode</code>, and <code>NextSubdivisionCode</code> in the <code>startcontinentcode</code>, <code>startcountrycode</code>, and <code>startsubdivisioncode</code>, as applicable.</p>
3968    pub is_truncated: bool,
3969    /// <p>The value that you specified for <code>MaxItems</code> in the request.</p>
3970    pub max_items: String,
3971    /// <p>If <code>IsTruncated</code> is <code>true</code>, you can make a follow-up request to display more locations. Enter the value of <code>NextContinentCode</code> in the <code>startcontinentcode</code> parameter in another <code>ListGeoLocations</code> request.</p>
3972    pub next_continent_code: Option<String>,
3973    /// <p>If <code>IsTruncated</code> is <code>true</code>, you can make a follow-up request to display more locations. Enter the value of <code>NextCountryCode</code> in the <code>startcountrycode</code> parameter in another <code>ListGeoLocations</code> request.</p>
3974    pub next_country_code: Option<String>,
3975    /// <p>If <code>IsTruncated</code> is <code>true</code>, you can make a follow-up request to display more locations. Enter the value of <code>NextSubdivisionCode</code> in the <code>startsubdivisioncode</code> parameter in another <code>ListGeoLocations</code> request.</p>
3976    pub next_subdivision_code: Option<String>,
3977}
3978
3979#[allow(dead_code)]
3980struct ListGeoLocationsResponseDeserializer;
3981impl ListGeoLocationsResponseDeserializer {
3982    #[allow(dead_code, unused_variables)]
3983    fn deserialize<T: Peek + Next>(
3984        tag_name: &str,
3985        stack: &mut T,
3986    ) -> Result<ListGeoLocationsResponse, XmlParseError> {
3987        deserialize_elements::<_, ListGeoLocationsResponse, _>(
3988            tag_name,
3989            stack,
3990            |name, stack, obj| {
3991                match name {
3992                    "GeoLocationDetailsList" => {
3993                        obj.geo_location_details_list.extend(
3994                            GeoLocationDetailsListDeserializer::deserialize(
3995                                "GeoLocationDetailsList",
3996                                stack,
3997                            )?,
3998                        );
3999                    }
4000                    "IsTruncated" => {
4001                        obj.is_truncated =
4002                            PageTruncatedDeserializer::deserialize("IsTruncated", stack)?;
4003                    }
4004                    "MaxItems" => {
4005                        obj.max_items = PageMaxItemsDeserializer::deserialize("MaxItems", stack)?;
4006                    }
4007                    "NextContinentCode" => {
4008                        obj.next_continent_code =
4009                            Some(GeoLocationContinentCodeDeserializer::deserialize(
4010                                "NextContinentCode",
4011                                stack,
4012                            )?);
4013                    }
4014                    "NextCountryCode" => {
4015                        obj.next_country_code =
4016                            Some(GeoLocationCountryCodeDeserializer::deserialize(
4017                                "NextCountryCode",
4018                                stack,
4019                            )?);
4020                    }
4021                    "NextSubdivisionCode" => {
4022                        obj.next_subdivision_code =
4023                            Some(GeoLocationSubdivisionCodeDeserializer::deserialize(
4024                                "NextSubdivisionCode",
4025                                stack,
4026                            )?);
4027                    }
4028                    _ => skip_tree(stack),
4029                }
4030                Ok(())
4031            },
4032        )
4033    }
4034}
4035/// <p>A request to retrieve a list of the health checks that are associated with the current AWS account.</p>
4036#[derive(Clone, Debug, Default, PartialEq)]
4037#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4038pub struct ListHealthChecksRequest {
4039    /// <p>If the value of <code>IsTruncated</code> in the previous response was <code>true</code>, you have more health checks. To get another group, submit another <code>ListHealthChecks</code> request. </p> <p>For the value of <code>marker</code>, specify the value of <code>NextMarker</code> from the previous response, which is the ID of the first health check that Amazon Route 53 will return if you submit another request.</p> <p>If the value of <code>IsTruncated</code> in the previous response was <code>false</code>, there are no more health checks to get.</p>
4040    pub marker: Option<String>,
4041    /// <p>The maximum number of health checks that you want <code>ListHealthChecks</code> to return in response to the current request. Amazon Route 53 returns a maximum of 100 items. If you set <code>MaxItems</code> to a value greater than 100, Route 53 returns only the first 100 health checks. </p>
4042    pub max_items: Option<String>,
4043}
4044
4045/// <p>A complex type that contains the response to a <code>ListHealthChecks</code> request.</p>
4046#[derive(Clone, Debug, Default, PartialEq)]
4047#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4048pub struct ListHealthChecksResponse {
4049    /// <p>A complex type that contains one <code>HealthCheck</code> element for each health check that is associated with the current AWS account.</p>
4050    pub health_checks: Vec<HealthCheck>,
4051    /// <p>A flag that indicates whether there are more health checks to be listed. If the response was truncated, you can get the next group of health checks by submitting another <code>ListHealthChecks</code> request and specifying the value of <code>NextMarker</code> in the <code>marker</code> parameter.</p>
4052    pub is_truncated: bool,
4053    /// <p>For the second and subsequent calls to <code>ListHealthChecks</code>, <code>Marker</code> is the value that you specified for the <code>marker</code> parameter in the previous request.</p>
4054    pub marker: String,
4055    /// <p>The value that you specified for the <code>maxitems</code> parameter in the call to <code>ListHealthChecks</code> that produced the current response.</p>
4056    pub max_items: String,
4057    /// <p>If <code>IsTruncated</code> is <code>true</code>, the value of <code>NextMarker</code> identifies the first health check that Amazon Route 53 returns if you submit another <code>ListHealthChecks</code> request and specify the value of <code>NextMarker</code> in the <code>marker</code> parameter.</p>
4058    pub next_marker: Option<String>,
4059}
4060
4061#[allow(dead_code)]
4062struct ListHealthChecksResponseDeserializer;
4063impl ListHealthChecksResponseDeserializer {
4064    #[allow(dead_code, unused_variables)]
4065    fn deserialize<T: Peek + Next>(
4066        tag_name: &str,
4067        stack: &mut T,
4068    ) -> Result<ListHealthChecksResponse, XmlParseError> {
4069        deserialize_elements::<_, ListHealthChecksResponse, _>(
4070            tag_name,
4071            stack,
4072            |name, stack, obj| {
4073                match name {
4074                    "HealthChecks" => {
4075                        obj.health_checks
4076                            .extend(HealthChecksDeserializer::deserialize(
4077                                "HealthChecks",
4078                                stack,
4079                            )?);
4080                    }
4081                    "IsTruncated" => {
4082                        obj.is_truncated =
4083                            PageTruncatedDeserializer::deserialize("IsTruncated", stack)?;
4084                    }
4085                    "Marker" => {
4086                        obj.marker = PageMarkerDeserializer::deserialize("Marker", stack)?;
4087                    }
4088                    "MaxItems" => {
4089                        obj.max_items = PageMaxItemsDeserializer::deserialize("MaxItems", stack)?;
4090                    }
4091                    "NextMarker" => {
4092                        obj.next_marker =
4093                            Some(PageMarkerDeserializer::deserialize("NextMarker", stack)?);
4094                    }
4095                    _ => skip_tree(stack),
4096                }
4097                Ok(())
4098            },
4099        )
4100    }
4101}
4102/// <p>Retrieves a list of the public and private hosted zones that are associated with the current AWS account in ASCII order by domain name. </p>
4103#[derive(Clone, Debug, Default, PartialEq)]
4104#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4105pub struct ListHostedZonesByNameRequest {
4106    /// <p>(Optional) For your first request to <code>ListHostedZonesByName</code>, include the <code>dnsname</code> parameter only if you want to specify the name of the first hosted zone in the response. If you don't include the <code>dnsname</code> parameter, Amazon Route 53 returns all of the hosted zones that were created by the current AWS account, in ASCII order. For subsequent requests, include both <code>dnsname</code> and <code>hostedzoneid</code> parameters. For <code>dnsname</code>, specify the value of <code>NextDNSName</code> from the previous response.</p>
4107    pub dns_name: Option<String>,
4108    /// <p>(Optional) For your first request to <code>ListHostedZonesByName</code>, do not include the <code>hostedzoneid</code> parameter.</p> <p>If you have more hosted zones than the value of <code>maxitems</code>, <code>ListHostedZonesByName</code> returns only the first <code>maxitems</code> hosted zones. To get the next group of <code>maxitems</code> hosted zones, submit another request to <code>ListHostedZonesByName</code> and include both <code>dnsname</code> and <code>hostedzoneid</code> parameters. For the value of <code>hostedzoneid</code>, specify the value of the <code>NextHostedZoneId</code> element from the previous response.</p>
4109    pub hosted_zone_id: Option<String>,
4110    /// <p>The maximum number of hosted zones to be included in the response body for this request. If you have more than <code>maxitems</code> hosted zones, then the value of the <code>IsTruncated</code> element in the response is true, and the values of <code>NextDNSName</code> and <code>NextHostedZoneId</code> specify the first hosted zone in the next group of <code>maxitems</code> hosted zones. </p>
4111    pub max_items: Option<String>,
4112}
4113
4114/// <p>A complex type that contains the response information for the request.</p>
4115#[derive(Clone, Debug, Default, PartialEq)]
4116#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4117pub struct ListHostedZonesByNameResponse {
4118    /// <p>For the second and subsequent calls to <code>ListHostedZonesByName</code>, <code>DNSName</code> is the value that you specified for the <code>dnsname</code> parameter in the request that produced the current response.</p>
4119    pub dns_name: Option<String>,
4120    /// <p>The ID that Amazon Route 53 assigned to the hosted zone when you created it.</p>
4121    pub hosted_zone_id: Option<String>,
4122    /// <p>A complex type that contains general information about the hosted zone.</p>
4123    pub hosted_zones: Vec<HostedZone>,
4124    /// <p>A flag that indicates whether there are more hosted zones to be listed. If the response was truncated, you can get the next group of <code>maxitems</code> hosted zones by calling <code>ListHostedZonesByName</code> again and specifying the values of <code>NextDNSName</code> and <code>NextHostedZoneId</code> elements in the <code>dnsname</code> and <code>hostedzoneid</code> parameters.</p>
4125    pub is_truncated: bool,
4126    /// <p>The value that you specified for the <code>maxitems</code> parameter in the call to <code>ListHostedZonesByName</code> that produced the current response.</p>
4127    pub max_items: String,
4128    /// <p>If <code>IsTruncated</code> is true, the value of <code>NextDNSName</code> is the name of the first hosted zone in the next group of <code>maxitems</code> hosted zones. Call <code>ListHostedZonesByName</code> again and specify the value of <code>NextDNSName</code> and <code>NextHostedZoneId</code> in the <code>dnsname</code> and <code>hostedzoneid</code> parameters, respectively.</p> <p>This element is present only if <code>IsTruncated</code> is <code>true</code>.</p>
4129    pub next_dns_name: Option<String>,
4130    /// <p>If <code>IsTruncated</code> is <code>true</code>, the value of <code>NextHostedZoneId</code> identifies the first hosted zone in the next group of <code>maxitems</code> hosted zones. Call <code>ListHostedZonesByName</code> again and specify the value of <code>NextDNSName</code> and <code>NextHostedZoneId</code> in the <code>dnsname</code> and <code>hostedzoneid</code> parameters, respectively.</p> <p>This element is present only if <code>IsTruncated</code> is <code>true</code>.</p>
4131    pub next_hosted_zone_id: Option<String>,
4132}
4133
4134#[allow(dead_code)]
4135struct ListHostedZonesByNameResponseDeserializer;
4136impl ListHostedZonesByNameResponseDeserializer {
4137    #[allow(dead_code, unused_variables)]
4138    fn deserialize<T: Peek + Next>(
4139        tag_name: &str,
4140        stack: &mut T,
4141    ) -> Result<ListHostedZonesByNameResponse, XmlParseError> {
4142        deserialize_elements::<_, ListHostedZonesByNameResponse, _>(
4143            tag_name,
4144            stack,
4145            |name, stack, obj| {
4146                match name {
4147                    "DNSName" => {
4148                        obj.dns_name = Some(DNSNameDeserializer::deserialize("DNSName", stack)?);
4149                    }
4150                    "HostedZoneId" => {
4151                        obj.hosted_zone_id =
4152                            Some(ResourceIdDeserializer::deserialize("HostedZoneId", stack)?);
4153                    }
4154                    "HostedZones" => {
4155                        obj.hosted_zones
4156                            .extend(HostedZonesDeserializer::deserialize("HostedZones", stack)?);
4157                    }
4158                    "IsTruncated" => {
4159                        obj.is_truncated =
4160                            PageTruncatedDeserializer::deserialize("IsTruncated", stack)?;
4161                    }
4162                    "MaxItems" => {
4163                        obj.max_items = PageMaxItemsDeserializer::deserialize("MaxItems", stack)?;
4164                    }
4165                    "NextDNSName" => {
4166                        obj.next_dns_name =
4167                            Some(DNSNameDeserializer::deserialize("NextDNSName", stack)?);
4168                    }
4169                    "NextHostedZoneId" => {
4170                        obj.next_hosted_zone_id = Some(ResourceIdDeserializer::deserialize(
4171                            "NextHostedZoneId",
4172                            stack,
4173                        )?);
4174                    }
4175                    _ => skip_tree(stack),
4176                }
4177                Ok(())
4178            },
4179        )
4180    }
4181}
4182/// <p>Lists all the private hosted zones that a specified VPC is associated with, regardless of which AWS account created the hosted zones.</p>
4183#[derive(Clone, Debug, Default, PartialEq)]
4184#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4185pub struct ListHostedZonesByVPCRequest {
4186    /// <p>(Optional) The maximum number of hosted zones that you want Amazon Route 53 to return. If the specified VPC is associated with more than <code>MaxItems</code> hosted zones, the response includes a <code>NextToken</code> element. <code>NextToken</code> contains the hosted zone ID of the first hosted zone that Route 53 will return if you submit another request.</p>
4187    pub max_items: Option<String>,
4188    /// <p>If the previous response included a <code>NextToken</code> element, the specified VPC is associated with more hosted zones. To get more hosted zones, submit another <code>ListHostedZonesByVPC</code> request. </p> <p>For the value of <code>NextToken</code>, specify the value of <code>NextToken</code> from the previous response.</p> <p>If the previous response didn't include a <code>NextToken</code> element, there are no more hosted zones to get.</p>
4189    pub next_token: Option<String>,
4190    /// <p>The ID of the Amazon VPC that you want to list hosted zones for.</p>
4191    pub vpc_id: String,
4192    /// <p>For the Amazon VPC that you specified for <code>VPCId</code>, the AWS Region that you created the VPC in. </p>
4193    pub vpc_region: String,
4194}
4195
4196#[derive(Clone, Debug, Default, PartialEq)]
4197#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4198pub struct ListHostedZonesByVPCResponse {
4199    /// <p>A list that contains one <code>HostedZoneSummary</code> element for each hosted zone that the specified Amazon VPC is associated with. Each <code>HostedZoneSummary</code> element contains the hosted zone name and ID, and information about who owns the hosted zone.</p>
4200    pub hosted_zone_summaries: Vec<HostedZoneSummary>,
4201    /// <p>The value that you specified for <code>MaxItems</code> in the most recent <code>ListHostedZonesByVPC</code> request.</p>
4202    pub max_items: String,
4203    /// <p>The value that you specified for <code>NextToken</code> in the most recent <code>ListHostedZonesByVPC</code> request.</p>
4204    pub next_token: Option<String>,
4205}
4206
4207#[allow(dead_code)]
4208struct ListHostedZonesByVPCResponseDeserializer;
4209impl ListHostedZonesByVPCResponseDeserializer {
4210    #[allow(dead_code, unused_variables)]
4211    fn deserialize<T: Peek + Next>(
4212        tag_name: &str,
4213        stack: &mut T,
4214    ) -> Result<ListHostedZonesByVPCResponse, XmlParseError> {
4215        deserialize_elements::<_, ListHostedZonesByVPCResponse, _>(
4216            tag_name,
4217            stack,
4218            |name, stack, obj| {
4219                match name {
4220                    "HostedZoneSummaries" => {
4221                        obj.hosted_zone_summaries.extend(
4222                            HostedZoneSummariesDeserializer::deserialize(
4223                                "HostedZoneSummaries",
4224                                stack,
4225                            )?,
4226                        );
4227                    }
4228                    "MaxItems" => {
4229                        obj.max_items = PageMaxItemsDeserializer::deserialize("MaxItems", stack)?;
4230                    }
4231                    "NextToken" => {
4232                        obj.next_token = Some(PaginationTokenDeserializer::deserialize(
4233                            "NextToken",
4234                            stack,
4235                        )?);
4236                    }
4237                    _ => skip_tree(stack),
4238                }
4239                Ok(())
4240            },
4241        )
4242    }
4243}
4244/// <p>A request to retrieve a list of the public and private hosted zones that are associated with the current AWS account.</p>
4245#[derive(Clone, Debug, Default, PartialEq)]
4246#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4247pub struct ListHostedZonesRequest {
4248    /// <p>If you're using reusable delegation sets and you want to list all of the hosted zones that are associated with a reusable delegation set, specify the ID of that reusable delegation set. </p>
4249    pub delegation_set_id: Option<String>,
4250    /// <p>If the value of <code>IsTruncated</code> in the previous response was <code>true</code>, you have more hosted zones. To get more hosted zones, submit another <code>ListHostedZones</code> request. </p> <p>For the value of <code>marker</code>, specify the value of <code>NextMarker</code> from the previous response, which is the ID of the first hosted zone that Amazon Route 53 will return if you submit another request.</p> <p>If the value of <code>IsTruncated</code> in the previous response was <code>false</code>, there are no more hosted zones to get.</p>
4251    pub marker: Option<String>,
4252    /// <p>(Optional) The maximum number of hosted zones that you want Amazon Route 53 to return. If you have more than <code>maxitems</code> hosted zones, the value of <code>IsTruncated</code> in the response is <code>true</code>, and the value of <code>NextMarker</code> is the hosted zone ID of the first hosted zone that Route 53 will return if you submit another request.</p>
4253    pub max_items: Option<String>,
4254}
4255
4256#[derive(Clone, Debug, Default, PartialEq)]
4257#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4258pub struct ListHostedZonesResponse {
4259    /// <p>A complex type that contains general information about the hosted zone.</p>
4260    pub hosted_zones: Vec<HostedZone>,
4261    /// <p>A flag indicating whether there are more hosted zones to be listed. If the response was truncated, you can get more hosted zones by submitting another <code>ListHostedZones</code> request and specifying the value of <code>NextMarker</code> in the <code>marker</code> parameter.</p>
4262    pub is_truncated: bool,
4263    /// <p>For the second and subsequent calls to <code>ListHostedZones</code>, <code>Marker</code> is the value that you specified for the <code>marker</code> parameter in the request that produced the current response.</p>
4264    pub marker: String,
4265    /// <p>The value that you specified for the <code>maxitems</code> parameter in the call to <code>ListHostedZones</code> that produced the current response.</p>
4266    pub max_items: String,
4267    /// <p>If <code>IsTruncated</code> is <code>true</code>, the value of <code>NextMarker</code> identifies the first hosted zone in the next group of hosted zones. Submit another <code>ListHostedZones</code> request, and specify the value of <code>NextMarker</code> from the response in the <code>marker</code> parameter.</p> <p>This element is present only if <code>IsTruncated</code> is <code>true</code>.</p>
4268    pub next_marker: Option<String>,
4269}
4270
4271#[allow(dead_code)]
4272struct ListHostedZonesResponseDeserializer;
4273impl ListHostedZonesResponseDeserializer {
4274    #[allow(dead_code, unused_variables)]
4275    fn deserialize<T: Peek + Next>(
4276        tag_name: &str,
4277        stack: &mut T,
4278    ) -> Result<ListHostedZonesResponse, XmlParseError> {
4279        deserialize_elements::<_, ListHostedZonesResponse, _>(
4280            tag_name,
4281            stack,
4282            |name, stack, obj| {
4283                match name {
4284                    "HostedZones" => {
4285                        obj.hosted_zones
4286                            .extend(HostedZonesDeserializer::deserialize("HostedZones", stack)?);
4287                    }
4288                    "IsTruncated" => {
4289                        obj.is_truncated =
4290                            PageTruncatedDeserializer::deserialize("IsTruncated", stack)?;
4291                    }
4292                    "Marker" => {
4293                        obj.marker = PageMarkerDeserializer::deserialize("Marker", stack)?;
4294                    }
4295                    "MaxItems" => {
4296                        obj.max_items = PageMaxItemsDeserializer::deserialize("MaxItems", stack)?;
4297                    }
4298                    "NextMarker" => {
4299                        obj.next_marker =
4300                            Some(PageMarkerDeserializer::deserialize("NextMarker", stack)?);
4301                    }
4302                    _ => skip_tree(stack),
4303                }
4304                Ok(())
4305            },
4306        )
4307    }
4308}
4309#[derive(Clone, Debug, Default, PartialEq)]
4310#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4311pub struct ListQueryLoggingConfigsRequest {
4312    /// <p>(Optional) If you want to list the query logging configuration that is associated with a hosted zone, specify the ID in <code>HostedZoneId</code>. </p> <p>If you don't specify a hosted zone ID, <code>ListQueryLoggingConfigs</code> returns all of the configurations that are associated with the current AWS account.</p>
4313    pub hosted_zone_id: Option<String>,
4314    /// <p>(Optional) The maximum number of query logging configurations that you want Amazon Route 53 to return in response to the current request. If the current AWS account has more than <code>MaxResults</code> configurations, use the value of <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_ListQueryLoggingConfigs.html#API_ListQueryLoggingConfigs_RequestSyntax">NextToken</a> in the response to get the next page of results.</p> <p>If you don't specify a value for <code>MaxResults</code>, Route 53 returns up to 100 configurations.</p>
4315    pub max_results: Option<String>,
4316    /// <p>(Optional) If the current AWS account has more than <code>MaxResults</code> query logging configurations, use <code>NextToken</code> to get the second and subsequent pages of results.</p> <p>For the first <code>ListQueryLoggingConfigs</code> request, omit this value.</p> <p>For the second and subsequent requests, get the value of <code>NextToken</code> from the previous response and specify that value for <code>NextToken</code> in the request.</p>
4317    pub next_token: Option<String>,
4318}
4319
4320#[derive(Clone, Debug, Default, PartialEq)]
4321#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4322pub struct ListQueryLoggingConfigsResponse {
4323    /// <p>If a response includes the last of the query logging configurations that are associated with the current AWS account, <code>NextToken</code> doesn't appear in the response.</p> <p>If a response doesn't include the last of the configurations, you can get more configurations by submitting another <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_ListQueryLoggingConfigs.html">ListQueryLoggingConfigs</a> request. Get the value of <code>NextToken</code> that Amazon Route 53 returned in the previous response and include it in <code>NextToken</code> in the next request.</p>
4324    pub next_token: Option<String>,
4325    /// <p>An array that contains one <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_QueryLoggingConfig.html">QueryLoggingConfig</a> element for each configuration for DNS query logging that is associated with the current AWS account.</p>
4326    pub query_logging_configs: Vec<QueryLoggingConfig>,
4327}
4328
4329#[allow(dead_code)]
4330struct ListQueryLoggingConfigsResponseDeserializer;
4331impl ListQueryLoggingConfigsResponseDeserializer {
4332    #[allow(dead_code, unused_variables)]
4333    fn deserialize<T: Peek + Next>(
4334        tag_name: &str,
4335        stack: &mut T,
4336    ) -> Result<ListQueryLoggingConfigsResponse, XmlParseError> {
4337        deserialize_elements::<_, ListQueryLoggingConfigsResponse, _>(
4338            tag_name,
4339            stack,
4340            |name, stack, obj| {
4341                match name {
4342                    "NextToken" => {
4343                        obj.next_token = Some(PaginationTokenDeserializer::deserialize(
4344                            "NextToken",
4345                            stack,
4346                        )?);
4347                    }
4348                    "QueryLoggingConfigs" => {
4349                        obj.query_logging_configs.extend(
4350                            QueryLoggingConfigsDeserializer::deserialize(
4351                                "QueryLoggingConfigs",
4352                                stack,
4353                            )?,
4354                        );
4355                    }
4356                    _ => skip_tree(stack),
4357                }
4358                Ok(())
4359            },
4360        )
4361    }
4362}
4363/// <p>A request for the resource record sets that are associated with a specified hosted zone.</p>
4364#[derive(Clone, Debug, Default, PartialEq)]
4365#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4366pub struct ListResourceRecordSetsRequest {
4367    /// <p>The ID of the hosted zone that contains the resource record sets that you want to list.</p>
4368    pub hosted_zone_id: String,
4369    /// <p>(Optional) The maximum number of resource records sets to include in the response body for this request. If the response includes more than <code>maxitems</code> resource record sets, the value of the <code>IsTruncated</code> element in the response is <code>true</code>, and the values of the <code>NextRecordName</code> and <code>NextRecordType</code> elements in the response identify the first resource record set in the next group of <code>maxitems</code> resource record sets.</p>
4370    pub max_items: Option<String>,
4371    /// <p> <i>Resource record sets that have a routing policy other than simple:</i> If results were truncated for a given DNS name and type, specify the value of <code>NextRecordIdentifier</code> from the previous response to get the next resource record set that has the current DNS name and type.</p>
4372    pub start_record_identifier: Option<String>,
4373    /// <p>The first name in the lexicographic ordering of resource record sets that you want to list. If the specified record name doesn't exist, the results begin with the first resource record set that has a name greater than the value of <code>name</code>.</p>
4374    pub start_record_name: Option<String>,
4375    /// <p>The type of resource record set to begin the record listing from.</p> <p>Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> | <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code> </p> <p>Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code> </p> <p>Values for alias resource record sets: </p> <ul> <li> <p> <b>API Gateway custom regional API or edge-optimized API</b>: A</p> </li> <li> <p> <b>CloudFront distribution</b>: A or AAAA</p> </li> <li> <p> <b>Elastic Beanstalk environment that has a regionalized subdomain</b>: A</p> </li> <li> <p> <b>Elastic Load Balancing load balancer</b>: A | AAAA</p> </li> <li> <p> <b>S3 bucket</b>: A</p> </li> <li> <p> <b>VPC interface VPC endpoint</b>: A</p> </li> <li> <p> <b>Another resource record set in this hosted zone:</b> The type of the resource record set that the alias references.</p> </li> </ul> <p>Constraint: Specifying <code>type</code> without specifying <code>name</code> returns an <code>InvalidInput</code> error.</p>
4376    pub start_record_type: Option<String>,
4377}
4378
4379/// <p>A complex type that contains list information for the resource record set.</p>
4380#[derive(Clone, Debug, Default, PartialEq)]
4381#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4382pub struct ListResourceRecordSetsResponse {
4383    /// <p>A flag that indicates whether more resource record sets remain to be listed. If your results were truncated, you can make a follow-up pagination request by using the <code>NextRecordName</code> element.</p>
4384    pub is_truncated: bool,
4385    /// <p>The maximum number of records you requested.</p>
4386    pub max_items: String,
4387    /// <p> <i>Resource record sets that have a routing policy other than simple:</i> If results were truncated for a given DNS name and type, the value of <code>SetIdentifier</code> for the next resource record set that has the current DNS name and type.</p> <p>For information about routing policies, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html">Choosing a Routing Policy</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
4388    pub next_record_identifier: Option<String>,
4389    /// <p>If the results were truncated, the name of the next record in the list.</p> <p>This element is present only if <code>IsTruncated</code> is true. </p>
4390    pub next_record_name: Option<String>,
4391    /// <p>If the results were truncated, the type of the next record in the list.</p> <p>This element is present only if <code>IsTruncated</code> is true. </p>
4392    pub next_record_type: Option<String>,
4393    /// <p>Information about multiple resource record sets.</p>
4394    pub resource_record_sets: Vec<ResourceRecordSet>,
4395}
4396
4397#[allow(dead_code)]
4398struct ListResourceRecordSetsResponseDeserializer;
4399impl ListResourceRecordSetsResponseDeserializer {
4400    #[allow(dead_code, unused_variables)]
4401    fn deserialize<T: Peek + Next>(
4402        tag_name: &str,
4403        stack: &mut T,
4404    ) -> Result<ListResourceRecordSetsResponse, XmlParseError> {
4405        deserialize_elements::<_, ListResourceRecordSetsResponse, _>(
4406            tag_name,
4407            stack,
4408            |name, stack, obj| {
4409                match name {
4410                    "IsTruncated" => {
4411                        obj.is_truncated =
4412                            PageTruncatedDeserializer::deserialize("IsTruncated", stack)?;
4413                    }
4414                    "MaxItems" => {
4415                        obj.max_items = PageMaxItemsDeserializer::deserialize("MaxItems", stack)?;
4416                    }
4417                    "NextRecordIdentifier" => {
4418                        obj.next_record_identifier =
4419                            Some(ResourceRecordSetIdentifierDeserializer::deserialize(
4420                                "NextRecordIdentifier",
4421                                stack,
4422                            )?);
4423                    }
4424                    "NextRecordName" => {
4425                        obj.next_record_name =
4426                            Some(DNSNameDeserializer::deserialize("NextRecordName", stack)?);
4427                    }
4428                    "NextRecordType" => {
4429                        obj.next_record_type =
4430                            Some(RRTypeDeserializer::deserialize("NextRecordType", stack)?);
4431                    }
4432                    "ResourceRecordSets" => {
4433                        obj.resource_record_sets.extend(
4434                            ResourceRecordSetsDeserializer::deserialize(
4435                                "ResourceRecordSets",
4436                                stack,
4437                            )?,
4438                        );
4439                    }
4440                    _ => skip_tree(stack),
4441                }
4442                Ok(())
4443            },
4444        )
4445    }
4446}
4447/// <p>A request to get a list of the reusable delegation sets that are associated with the current AWS account.</p>
4448#[derive(Clone, Debug, Default, PartialEq)]
4449#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4450pub struct ListReusableDelegationSetsRequest {
4451    /// <p>If the value of <code>IsTruncated</code> in the previous response was <code>true</code>, you have more reusable delegation sets. To get another group, submit another <code>ListReusableDelegationSets</code> request. </p> <p>For the value of <code>marker</code>, specify the value of <code>NextMarker</code> from the previous response, which is the ID of the first reusable delegation set that Amazon Route 53 will return if you submit another request.</p> <p>If the value of <code>IsTruncated</code> in the previous response was <code>false</code>, there are no more reusable delegation sets to get.</p>
4452    pub marker: Option<String>,
4453    /// <p>The number of reusable delegation sets that you want Amazon Route 53 to return in the response to this request. If you specify a value greater than 100, Route 53 returns only the first 100 reusable delegation sets.</p>
4454    pub max_items: Option<String>,
4455}
4456
4457/// <p>A complex type that contains information about the reusable delegation sets that are associated with the current AWS account.</p>
4458#[derive(Clone, Debug, Default, PartialEq)]
4459#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4460pub struct ListReusableDelegationSetsResponse {
4461    /// <p>A complex type that contains one <code>DelegationSet</code> element for each reusable delegation set that was created by the current AWS account.</p>
4462    pub delegation_sets: Vec<DelegationSet>,
4463    /// <p>A flag that indicates whether there are more reusable delegation sets to be listed.</p>
4464    pub is_truncated: bool,
4465    /// <p>For the second and subsequent calls to <code>ListReusableDelegationSets</code>, <code>Marker</code> is the value that you specified for the <code>marker</code> parameter in the request that produced the current response.</p>
4466    pub marker: String,
4467    /// <p>The value that you specified for the <code>maxitems</code> parameter in the call to <code>ListReusableDelegationSets</code> that produced the current response.</p>
4468    pub max_items: String,
4469    /// <p>If <code>IsTruncated</code> is <code>true</code>, the value of <code>NextMarker</code> identifies the next reusable delegation set that Amazon Route 53 will return if you submit another <code>ListReusableDelegationSets</code> request and specify the value of <code>NextMarker</code> in the <code>marker</code> parameter.</p>
4470    pub next_marker: Option<String>,
4471}
4472
4473#[allow(dead_code)]
4474struct ListReusableDelegationSetsResponseDeserializer;
4475impl ListReusableDelegationSetsResponseDeserializer {
4476    #[allow(dead_code, unused_variables)]
4477    fn deserialize<T: Peek + Next>(
4478        tag_name: &str,
4479        stack: &mut T,
4480    ) -> Result<ListReusableDelegationSetsResponse, XmlParseError> {
4481        deserialize_elements::<_, ListReusableDelegationSetsResponse, _>(
4482            tag_name,
4483            stack,
4484            |name, stack, obj| {
4485                match name {
4486                    "DelegationSets" => {
4487                        obj.delegation_sets
4488                            .extend(DelegationSetsDeserializer::deserialize(
4489                                "DelegationSets",
4490                                stack,
4491                            )?);
4492                    }
4493                    "IsTruncated" => {
4494                        obj.is_truncated =
4495                            PageTruncatedDeserializer::deserialize("IsTruncated", stack)?;
4496                    }
4497                    "Marker" => {
4498                        obj.marker = PageMarkerDeserializer::deserialize("Marker", stack)?;
4499                    }
4500                    "MaxItems" => {
4501                        obj.max_items = PageMaxItemsDeserializer::deserialize("MaxItems", stack)?;
4502                    }
4503                    "NextMarker" => {
4504                        obj.next_marker =
4505                            Some(PageMarkerDeserializer::deserialize("NextMarker", stack)?);
4506                    }
4507                    _ => skip_tree(stack),
4508                }
4509                Ok(())
4510            },
4511        )
4512    }
4513}
4514/// <p>A complex type containing information about a request for a list of the tags that are associated with an individual resource.</p>
4515#[derive(Clone, Debug, Default, PartialEq)]
4516#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4517pub struct ListTagsForResourceRequest {
4518    /// <p>The ID of the resource for which you want to retrieve tags.</p>
4519    pub resource_id: String,
4520    /// <p><p>The type of the resource.</p> <ul> <li> <p>The resource type for health checks is <code>healthcheck</code>.</p> </li> <li> <p>The resource type for hosted zones is <code>hostedzone</code>.</p> </li> </ul></p>
4521    pub resource_type: String,
4522}
4523
4524/// <p>A complex type that contains information about the health checks or hosted zones for which you want to list tags.</p>
4525#[derive(Clone, Debug, Default, PartialEq)]
4526#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4527pub struct ListTagsForResourceResponse {
4528    /// <p>A <code>ResourceTagSet</code> containing tags associated with the specified resource.</p>
4529    pub resource_tag_set: ResourceTagSet,
4530}
4531
4532#[allow(dead_code)]
4533struct ListTagsForResourceResponseDeserializer;
4534impl ListTagsForResourceResponseDeserializer {
4535    #[allow(dead_code, unused_variables)]
4536    fn deserialize<T: Peek + Next>(
4537        tag_name: &str,
4538        stack: &mut T,
4539    ) -> Result<ListTagsForResourceResponse, XmlParseError> {
4540        deserialize_elements::<_, ListTagsForResourceResponse, _>(
4541            tag_name,
4542            stack,
4543            |name, stack, obj| {
4544                match name {
4545                    "ResourceTagSet" => {
4546                        obj.resource_tag_set =
4547                            ResourceTagSetDeserializer::deserialize("ResourceTagSet", stack)?;
4548                    }
4549                    _ => skip_tree(stack),
4550                }
4551                Ok(())
4552            },
4553        )
4554    }
4555}
4556/// <p>A complex type that contains information about the health checks or hosted zones for which you want to list tags.</p>
4557#[derive(Clone, Debug, Default, PartialEq)]
4558#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4559pub struct ListTagsForResourcesRequest {
4560    /// <p>A complex type that contains the ResourceId element for each resource for which you want to get a list of tags.</p>
4561    pub resource_ids: Vec<String>,
4562    /// <p><p>The type of the resources.</p> <ul> <li> <p>The resource type for health checks is <code>healthcheck</code>.</p> </li> <li> <p>The resource type for hosted zones is <code>hostedzone</code>.</p> </li> </ul></p>
4563    pub resource_type: String,
4564}
4565
4566pub struct ListTagsForResourcesRequestSerializer;
4567impl ListTagsForResourcesRequestSerializer {
4568    #[allow(unused_variables, warnings)]
4569    pub fn serialize<W>(
4570        mut writer: &mut EventWriter<W>,
4571        name: &str,
4572        obj: &ListTagsForResourcesRequest,
4573        xmlns: &str,
4574    ) -> Result<(), xml::writer::Error>
4575    where
4576        W: Write,
4577    {
4578        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
4579        TagResourceIdListSerializer::serialize(&mut writer, "ResourceIds", &obj.resource_ids)?;
4580        writer.write(xml::writer::XmlEvent::end_element())
4581    }
4582}
4583/// <p>A complex type containing tags for the specified resources.</p>
4584#[derive(Clone, Debug, Default, PartialEq)]
4585#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4586pub struct ListTagsForResourcesResponse {
4587    /// <p>A list of <code>ResourceTagSet</code>s containing tags associated with the specified resources.</p>
4588    pub resource_tag_sets: Vec<ResourceTagSet>,
4589}
4590
4591#[allow(dead_code)]
4592struct ListTagsForResourcesResponseDeserializer;
4593impl ListTagsForResourcesResponseDeserializer {
4594    #[allow(dead_code, unused_variables)]
4595    fn deserialize<T: Peek + Next>(
4596        tag_name: &str,
4597        stack: &mut T,
4598    ) -> Result<ListTagsForResourcesResponse, XmlParseError> {
4599        deserialize_elements::<_, ListTagsForResourcesResponse, _>(
4600            tag_name,
4601            stack,
4602            |name, stack, obj| {
4603                match name {
4604                    "ResourceTagSets" => {
4605                        obj.resource_tag_sets
4606                            .extend(ResourceTagSetListDeserializer::deserialize(
4607                                "ResourceTagSets",
4608                                stack,
4609                            )?);
4610                    }
4611                    _ => skip_tree(stack),
4612                }
4613                Ok(())
4614            },
4615        )
4616    }
4617}
4618/// <p>A complex type that contains the information about the request to list the traffic policies that are associated with the current AWS account.</p>
4619#[derive(Clone, Debug, Default, PartialEq)]
4620#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4621pub struct ListTrafficPoliciesRequest {
4622    /// <p>(Optional) The maximum number of traffic policies that you want Amazon Route 53 to return in response to this request. If you have more than <code>MaxItems</code> traffic policies, the value of <code>IsTruncated</code> in the response is <code>true</code>, and the value of <code>TrafficPolicyIdMarker</code> is the ID of the first traffic policy that Route 53 will return if you submit another request.</p>
4623    pub max_items: Option<String>,
4624    /// <p>(Conditional) For your first request to <code>ListTrafficPolicies</code>, don't include the <code>TrafficPolicyIdMarker</code> parameter.</p> <p>If you have more traffic policies than the value of <code>MaxItems</code>, <code>ListTrafficPolicies</code> returns only the first <code>MaxItems</code> traffic policies. To get the next group of policies, submit another request to <code>ListTrafficPolicies</code>. For the value of <code>TrafficPolicyIdMarker</code>, specify the value of <code>TrafficPolicyIdMarker</code> that was returned in the previous response.</p>
4625    pub traffic_policy_id_marker: Option<String>,
4626}
4627
4628/// <p>A complex type that contains the response information for the request.</p>
4629#[derive(Clone, Debug, Default, PartialEq)]
4630#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4631pub struct ListTrafficPoliciesResponse {
4632    /// <p>A flag that indicates whether there are more traffic policies to be listed. If the response was truncated, you can get the next group of traffic policies by submitting another <code>ListTrafficPolicies</code> request and specifying the value of <code>TrafficPolicyIdMarker</code> in the <code>TrafficPolicyIdMarker</code> request parameter.</p>
4633    pub is_truncated: bool,
4634    /// <p>The value that you specified for the <code>MaxItems</code> parameter in the <code>ListTrafficPolicies</code> request that produced the current response.</p>
4635    pub max_items: String,
4636    /// <p>If the value of <code>IsTruncated</code> is <code>true</code>, <code>TrafficPolicyIdMarker</code> is the ID of the first traffic policy in the next group of <code>MaxItems</code> traffic policies.</p>
4637    pub traffic_policy_id_marker: String,
4638    /// <p>A list that contains one <code>TrafficPolicySummary</code> element for each traffic policy that was created by the current AWS account.</p>
4639    pub traffic_policy_summaries: Vec<TrafficPolicySummary>,
4640}
4641
4642#[allow(dead_code)]
4643struct ListTrafficPoliciesResponseDeserializer;
4644impl ListTrafficPoliciesResponseDeserializer {
4645    #[allow(dead_code, unused_variables)]
4646    fn deserialize<T: Peek + Next>(
4647        tag_name: &str,
4648        stack: &mut T,
4649    ) -> Result<ListTrafficPoliciesResponse, XmlParseError> {
4650        deserialize_elements::<_, ListTrafficPoliciesResponse, _>(
4651            tag_name,
4652            stack,
4653            |name, stack, obj| {
4654                match name {
4655                    "IsTruncated" => {
4656                        obj.is_truncated =
4657                            PageTruncatedDeserializer::deserialize("IsTruncated", stack)?;
4658                    }
4659                    "MaxItems" => {
4660                        obj.max_items = PageMaxItemsDeserializer::deserialize("MaxItems", stack)?;
4661                    }
4662                    "TrafficPolicyIdMarker" => {
4663                        obj.traffic_policy_id_marker = TrafficPolicyIdDeserializer::deserialize(
4664                            "TrafficPolicyIdMarker",
4665                            stack,
4666                        )?;
4667                    }
4668                    "TrafficPolicySummaries" => {
4669                        obj.traffic_policy_summaries.extend(
4670                            TrafficPolicySummariesDeserializer::deserialize(
4671                                "TrafficPolicySummaries",
4672                                stack,
4673                            )?,
4674                        );
4675                    }
4676                    _ => skip_tree(stack),
4677                }
4678                Ok(())
4679            },
4680        )
4681    }
4682}
4683/// <p>A request for the traffic policy instances that you created in a specified hosted zone.</p>
4684#[derive(Clone, Debug, Default, PartialEq)]
4685#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4686pub struct ListTrafficPolicyInstancesByHostedZoneRequest {
4687    /// <p>The ID of the hosted zone that you want to list traffic policy instances for.</p>
4688    pub hosted_zone_id: String,
4689    /// <p>The maximum number of traffic policy instances to be included in the response body for this request. If you have more than <code>MaxItems</code> traffic policy instances, the value of the <code>IsTruncated</code> element in the response is <code>true</code>, and the values of <code>HostedZoneIdMarker</code>, <code>TrafficPolicyInstanceNameMarker</code>, and <code>TrafficPolicyInstanceTypeMarker</code> represent the first traffic policy instance that Amazon Route 53 will return if you submit another request.</p>
4690    pub max_items: Option<String>,
4691    /// <p>If the value of <code>IsTruncated</code> in the previous response is true, you have more traffic policy instances. To get more traffic policy instances, submit another <code>ListTrafficPolicyInstances</code> request. For the value of <code>trafficpolicyinstancename</code>, specify the value of <code>TrafficPolicyInstanceNameMarker</code> from the previous response, which is the name of the first traffic policy instance in the next group of traffic policy instances.</p> <p>If the value of <code>IsTruncated</code> in the previous response was <code>false</code>, there are no more traffic policy instances to get.</p>
4692    pub traffic_policy_instance_name_marker: Option<String>,
4693    /// <p>If the value of <code>IsTruncated</code> in the previous response is true, you have more traffic policy instances. To get more traffic policy instances, submit another <code>ListTrafficPolicyInstances</code> request. For the value of <code>trafficpolicyinstancetype</code>, specify the value of <code>TrafficPolicyInstanceTypeMarker</code> from the previous response, which is the type of the first traffic policy instance in the next group of traffic policy instances.</p> <p>If the value of <code>IsTruncated</code> in the previous response was <code>false</code>, there are no more traffic policy instances to get.</p>
4694    pub traffic_policy_instance_type_marker: Option<String>,
4695}
4696
4697/// <p>A complex type that contains the response information for the request.</p>
4698#[derive(Clone, Debug, Default, PartialEq)]
4699#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4700pub struct ListTrafficPolicyInstancesByHostedZoneResponse {
4701    /// <p>A flag that indicates whether there are more traffic policy instances to be listed. If the response was truncated, you can get the next group of traffic policy instances by submitting another <code>ListTrafficPolicyInstancesByHostedZone</code> request and specifying the values of <code>HostedZoneIdMarker</code>, <code>TrafficPolicyInstanceNameMarker</code>, and <code>TrafficPolicyInstanceTypeMarker</code> in the corresponding request parameters.</p>
4702    pub is_truncated: bool,
4703    /// <p>The value that you specified for the <code>MaxItems</code> parameter in the <code>ListTrafficPolicyInstancesByHostedZone</code> request that produced the current response.</p>
4704    pub max_items: String,
4705    /// <p>If <code>IsTruncated</code> is <code>true</code>, <code>TrafficPolicyInstanceNameMarker</code> is the name of the first traffic policy instance in the next group of traffic policy instances.</p>
4706    pub traffic_policy_instance_name_marker: Option<String>,
4707    /// <p>If <code>IsTruncated</code> is true, <code>TrafficPolicyInstanceTypeMarker</code> is the DNS type of the resource record sets that are associated with the first traffic policy instance in the next group of traffic policy instances.</p>
4708    pub traffic_policy_instance_type_marker: Option<String>,
4709    /// <p>A list that contains one <code>TrafficPolicyInstance</code> element for each traffic policy instance that matches the elements in the request. </p>
4710    pub traffic_policy_instances: Vec<TrafficPolicyInstance>,
4711}
4712
4713#[allow(dead_code)]
4714struct ListTrafficPolicyInstancesByHostedZoneResponseDeserializer;
4715impl ListTrafficPolicyInstancesByHostedZoneResponseDeserializer {
4716    #[allow(dead_code, unused_variables)]
4717    fn deserialize<T: Peek + Next>(
4718        tag_name: &str,
4719        stack: &mut T,
4720    ) -> Result<ListTrafficPolicyInstancesByHostedZoneResponse, XmlParseError> {
4721        deserialize_elements::<_, ListTrafficPolicyInstancesByHostedZoneResponse, _>(
4722            tag_name,
4723            stack,
4724            |name, stack, obj| {
4725                match name {
4726                    "IsTruncated" => {
4727                        obj.is_truncated =
4728                            PageTruncatedDeserializer::deserialize("IsTruncated", stack)?;
4729                    }
4730                    "MaxItems" => {
4731                        obj.max_items = PageMaxItemsDeserializer::deserialize("MaxItems", stack)?;
4732                    }
4733                    "TrafficPolicyInstanceNameMarker" => {
4734                        obj.traffic_policy_instance_name_marker =
4735                            Some(DNSNameDeserializer::deserialize(
4736                                "TrafficPolicyInstanceNameMarker",
4737                                stack,
4738                            )?);
4739                    }
4740                    "TrafficPolicyInstanceTypeMarker" => {
4741                        obj.traffic_policy_instance_type_marker =
4742                            Some(RRTypeDeserializer::deserialize(
4743                                "TrafficPolicyInstanceTypeMarker",
4744                                stack,
4745                            )?);
4746                    }
4747                    "TrafficPolicyInstances" => {
4748                        obj.traffic_policy_instances.extend(
4749                            TrafficPolicyInstancesDeserializer::deserialize(
4750                                "TrafficPolicyInstances",
4751                                stack,
4752                            )?,
4753                        );
4754                    }
4755                    _ => skip_tree(stack),
4756                }
4757                Ok(())
4758            },
4759        )
4760    }
4761}
4762/// <p>A complex type that contains the information about the request to list your traffic policy instances.</p>
4763#[derive(Clone, Debug, Default, PartialEq)]
4764#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4765pub struct ListTrafficPolicyInstancesByPolicyRequest {
4766    /// <p>If the value of <code>IsTruncated</code> in the previous response was <code>true</code>, you have more traffic policy instances. To get more traffic policy instances, submit another <code>ListTrafficPolicyInstancesByPolicy</code> request. </p> <p>For the value of <code>hostedzoneid</code>, specify the value of <code>HostedZoneIdMarker</code> from the previous response, which is the hosted zone ID of the first traffic policy instance that Amazon Route 53 will return if you submit another request.</p> <p>If the value of <code>IsTruncated</code> in the previous response was <code>false</code>, there are no more traffic policy instances to get.</p>
4767    pub hosted_zone_id_marker: Option<String>,
4768    /// <p>The maximum number of traffic policy instances to be included in the response body for this request. If you have more than <code>MaxItems</code> traffic policy instances, the value of the <code>IsTruncated</code> element in the response is <code>true</code>, and the values of <code>HostedZoneIdMarker</code>, <code>TrafficPolicyInstanceNameMarker</code>, and <code>TrafficPolicyInstanceTypeMarker</code> represent the first traffic policy instance that Amazon Route 53 will return if you submit another request.</p>
4769    pub max_items: Option<String>,
4770    /// <p>The ID of the traffic policy for which you want to list traffic policy instances.</p>
4771    pub traffic_policy_id: String,
4772    /// <p>If the value of <code>IsTruncated</code> in the previous response was <code>true</code>, you have more traffic policy instances. To get more traffic policy instances, submit another <code>ListTrafficPolicyInstancesByPolicy</code> request.</p> <p>For the value of <code>trafficpolicyinstancename</code>, specify the value of <code>TrafficPolicyInstanceNameMarker</code> from the previous response, which is the name of the first traffic policy instance that Amazon Route 53 will return if you submit another request.</p> <p>If the value of <code>IsTruncated</code> in the previous response was <code>false</code>, there are no more traffic policy instances to get.</p>
4773    pub traffic_policy_instance_name_marker: Option<String>,
4774    /// <p>If the value of <code>IsTruncated</code> in the previous response was <code>true</code>, you have more traffic policy instances. To get more traffic policy instances, submit another <code>ListTrafficPolicyInstancesByPolicy</code> request.</p> <p>For the value of <code>trafficpolicyinstancetype</code>, specify the value of <code>TrafficPolicyInstanceTypeMarker</code> from the previous response, which is the name of the first traffic policy instance that Amazon Route 53 will return if you submit another request.</p> <p>If the value of <code>IsTruncated</code> in the previous response was <code>false</code>, there are no more traffic policy instances to get.</p>
4775    pub traffic_policy_instance_type_marker: Option<String>,
4776    /// <p>The version of the traffic policy for which you want to list traffic policy instances. The version must be associated with the traffic policy that is specified by <code>TrafficPolicyId</code>.</p>
4777    pub traffic_policy_version: i64,
4778}
4779
4780/// <p>A complex type that contains the response information for the request.</p>
4781#[derive(Clone, Debug, Default, PartialEq)]
4782#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4783pub struct ListTrafficPolicyInstancesByPolicyResponse {
4784    /// <p>If <code>IsTruncated</code> is <code>true</code>, <code>HostedZoneIdMarker</code> is the ID of the hosted zone of the first traffic policy instance in the next group of traffic policy instances.</p>
4785    pub hosted_zone_id_marker: Option<String>,
4786    /// <p>A flag that indicates whether there are more traffic policy instances to be listed. If the response was truncated, you can get the next group of traffic policy instances by calling <code>ListTrafficPolicyInstancesByPolicy</code> again and specifying the values of the <code>HostedZoneIdMarker</code>, <code>TrafficPolicyInstanceNameMarker</code>, and <code>TrafficPolicyInstanceTypeMarker</code> elements in the corresponding request parameters.</p>
4787    pub is_truncated: bool,
4788    /// <p>The value that you specified for the <code>MaxItems</code> parameter in the call to <code>ListTrafficPolicyInstancesByPolicy</code> that produced the current response.</p>
4789    pub max_items: String,
4790    /// <p>If <code>IsTruncated</code> is <code>true</code>, <code>TrafficPolicyInstanceNameMarker</code> is the name of the first traffic policy instance in the next group of <code>MaxItems</code> traffic policy instances.</p>
4791    pub traffic_policy_instance_name_marker: Option<String>,
4792    /// <p>If <code>IsTruncated</code> is <code>true</code>, <code>TrafficPolicyInstanceTypeMarker</code> is the DNS type of the resource record sets that are associated with the first traffic policy instance in the next group of <code>MaxItems</code> traffic policy instances.</p>
4793    pub traffic_policy_instance_type_marker: Option<String>,
4794    /// <p>A list that contains one <code>TrafficPolicyInstance</code> element for each traffic policy instance that matches the elements in the request.</p>
4795    pub traffic_policy_instances: Vec<TrafficPolicyInstance>,
4796}
4797
4798#[allow(dead_code)]
4799struct ListTrafficPolicyInstancesByPolicyResponseDeserializer;
4800impl ListTrafficPolicyInstancesByPolicyResponseDeserializer {
4801    #[allow(dead_code, unused_variables)]
4802    fn deserialize<T: Peek + Next>(
4803        tag_name: &str,
4804        stack: &mut T,
4805    ) -> Result<ListTrafficPolicyInstancesByPolicyResponse, XmlParseError> {
4806        deserialize_elements::<_, ListTrafficPolicyInstancesByPolicyResponse, _>(
4807            tag_name,
4808            stack,
4809            |name, stack, obj| {
4810                match name {
4811                    "HostedZoneIdMarker" => {
4812                        obj.hosted_zone_id_marker = Some(ResourceIdDeserializer::deserialize(
4813                            "HostedZoneIdMarker",
4814                            stack,
4815                        )?);
4816                    }
4817                    "IsTruncated" => {
4818                        obj.is_truncated =
4819                            PageTruncatedDeserializer::deserialize("IsTruncated", stack)?;
4820                    }
4821                    "MaxItems" => {
4822                        obj.max_items = PageMaxItemsDeserializer::deserialize("MaxItems", stack)?;
4823                    }
4824                    "TrafficPolicyInstanceNameMarker" => {
4825                        obj.traffic_policy_instance_name_marker =
4826                            Some(DNSNameDeserializer::deserialize(
4827                                "TrafficPolicyInstanceNameMarker",
4828                                stack,
4829                            )?);
4830                    }
4831                    "TrafficPolicyInstanceTypeMarker" => {
4832                        obj.traffic_policy_instance_type_marker =
4833                            Some(RRTypeDeserializer::deserialize(
4834                                "TrafficPolicyInstanceTypeMarker",
4835                                stack,
4836                            )?);
4837                    }
4838                    "TrafficPolicyInstances" => {
4839                        obj.traffic_policy_instances.extend(
4840                            TrafficPolicyInstancesDeserializer::deserialize(
4841                                "TrafficPolicyInstances",
4842                                stack,
4843                            )?,
4844                        );
4845                    }
4846                    _ => skip_tree(stack),
4847                }
4848                Ok(())
4849            },
4850        )
4851    }
4852}
4853/// <p>A request to get information about the traffic policy instances that you created by using the current AWS account.</p>
4854#[derive(Clone, Debug, Default, PartialEq)]
4855#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4856pub struct ListTrafficPolicyInstancesRequest {
4857    /// <p>If the value of <code>IsTruncated</code> in the previous response was <code>true</code>, you have more traffic policy instances. To get more traffic policy instances, submit another <code>ListTrafficPolicyInstances</code> request. For the value of <code>HostedZoneId</code>, specify the value of <code>HostedZoneIdMarker</code> from the previous response, which is the hosted zone ID of the first traffic policy instance in the next group of traffic policy instances.</p> <p>If the value of <code>IsTruncated</code> in the previous response was <code>false</code>, there are no more traffic policy instances to get.</p>
4858    pub hosted_zone_id_marker: Option<String>,
4859    /// <p>The maximum number of traffic policy instances that you want Amazon Route 53 to return in response to a <code>ListTrafficPolicyInstances</code> request. If you have more than <code>MaxItems</code> traffic policy instances, the value of the <code>IsTruncated</code> element in the response is <code>true</code>, and the values of <code>HostedZoneIdMarker</code>, <code>TrafficPolicyInstanceNameMarker</code>, and <code>TrafficPolicyInstanceTypeMarker</code> represent the first traffic policy instance in the next group of <code>MaxItems</code> traffic policy instances.</p>
4860    pub max_items: Option<String>,
4861    /// <p>If the value of <code>IsTruncated</code> in the previous response was <code>true</code>, you have more traffic policy instances. To get more traffic policy instances, submit another <code>ListTrafficPolicyInstances</code> request. For the value of <code>trafficpolicyinstancename</code>, specify the value of <code>TrafficPolicyInstanceNameMarker</code> from the previous response, which is the name of the first traffic policy instance in the next group of traffic policy instances.</p> <p>If the value of <code>IsTruncated</code> in the previous response was <code>false</code>, there are no more traffic policy instances to get.</p>
4862    pub traffic_policy_instance_name_marker: Option<String>,
4863    /// <p>If the value of <code>IsTruncated</code> in the previous response was <code>true</code>, you have more traffic policy instances. To get more traffic policy instances, submit another <code>ListTrafficPolicyInstances</code> request. For the value of <code>trafficpolicyinstancetype</code>, specify the value of <code>TrafficPolicyInstanceTypeMarker</code> from the previous response, which is the type of the first traffic policy instance in the next group of traffic policy instances.</p> <p>If the value of <code>IsTruncated</code> in the previous response was <code>false</code>, there are no more traffic policy instances to get.</p>
4864    pub traffic_policy_instance_type_marker: Option<String>,
4865}
4866
4867/// <p>A complex type that contains the response information for the request.</p>
4868#[derive(Clone, Debug, Default, PartialEq)]
4869#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4870pub struct ListTrafficPolicyInstancesResponse {
4871    /// <p>If <code>IsTruncated</code> is <code>true</code>, <code>HostedZoneIdMarker</code> is the ID of the hosted zone of the first traffic policy instance that Route 53 will return if you submit another <code>ListTrafficPolicyInstances</code> request. </p>
4872    pub hosted_zone_id_marker: Option<String>,
4873    /// <p>A flag that indicates whether there are more traffic policy instances to be listed. If the response was truncated, you can get more traffic policy instances by calling <code>ListTrafficPolicyInstances</code> again and specifying the values of the <code>HostedZoneIdMarker</code>, <code>TrafficPolicyInstanceNameMarker</code>, and <code>TrafficPolicyInstanceTypeMarker</code> in the corresponding request parameters.</p>
4874    pub is_truncated: bool,
4875    /// <p>The value that you specified for the <code>MaxItems</code> parameter in the call to <code>ListTrafficPolicyInstances</code> that produced the current response.</p>
4876    pub max_items: String,
4877    /// <p>If <code>IsTruncated</code> is <code>true</code>, <code>TrafficPolicyInstanceNameMarker</code> is the name of the first traffic policy instance that Route 53 will return if you submit another <code>ListTrafficPolicyInstances</code> request. </p>
4878    pub traffic_policy_instance_name_marker: Option<String>,
4879    /// <p>If <code>IsTruncated</code> is <code>true</code>, <code>TrafficPolicyInstanceTypeMarker</code> is the DNS type of the resource record sets that are associated with the first traffic policy instance that Amazon Route 53 will return if you submit another <code>ListTrafficPolicyInstances</code> request. </p>
4880    pub traffic_policy_instance_type_marker: Option<String>,
4881    /// <p>A list that contains one <code>TrafficPolicyInstance</code> element for each traffic policy instance that matches the elements in the request.</p>
4882    pub traffic_policy_instances: Vec<TrafficPolicyInstance>,
4883}
4884
4885#[allow(dead_code)]
4886struct ListTrafficPolicyInstancesResponseDeserializer;
4887impl ListTrafficPolicyInstancesResponseDeserializer {
4888    #[allow(dead_code, unused_variables)]
4889    fn deserialize<T: Peek + Next>(
4890        tag_name: &str,
4891        stack: &mut T,
4892    ) -> Result<ListTrafficPolicyInstancesResponse, XmlParseError> {
4893        deserialize_elements::<_, ListTrafficPolicyInstancesResponse, _>(
4894            tag_name,
4895            stack,
4896            |name, stack, obj| {
4897                match name {
4898                    "HostedZoneIdMarker" => {
4899                        obj.hosted_zone_id_marker = Some(ResourceIdDeserializer::deserialize(
4900                            "HostedZoneIdMarker",
4901                            stack,
4902                        )?);
4903                    }
4904                    "IsTruncated" => {
4905                        obj.is_truncated =
4906                            PageTruncatedDeserializer::deserialize("IsTruncated", stack)?;
4907                    }
4908                    "MaxItems" => {
4909                        obj.max_items = PageMaxItemsDeserializer::deserialize("MaxItems", stack)?;
4910                    }
4911                    "TrafficPolicyInstanceNameMarker" => {
4912                        obj.traffic_policy_instance_name_marker =
4913                            Some(DNSNameDeserializer::deserialize(
4914                                "TrafficPolicyInstanceNameMarker",
4915                                stack,
4916                            )?);
4917                    }
4918                    "TrafficPolicyInstanceTypeMarker" => {
4919                        obj.traffic_policy_instance_type_marker =
4920                            Some(RRTypeDeserializer::deserialize(
4921                                "TrafficPolicyInstanceTypeMarker",
4922                                stack,
4923                            )?);
4924                    }
4925                    "TrafficPolicyInstances" => {
4926                        obj.traffic_policy_instances.extend(
4927                            TrafficPolicyInstancesDeserializer::deserialize(
4928                                "TrafficPolicyInstances",
4929                                stack,
4930                            )?,
4931                        );
4932                    }
4933                    _ => skip_tree(stack),
4934                }
4935                Ok(())
4936            },
4937        )
4938    }
4939}
4940/// <p>A complex type that contains the information about the request to list your traffic policies.</p>
4941#[derive(Clone, Debug, Default, PartialEq)]
4942#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4943pub struct ListTrafficPolicyVersionsRequest {
4944    /// <p>Specify the value of <code>Id</code> of the traffic policy for which you want to list all versions.</p>
4945    pub id: String,
4946    /// <p>The maximum number of traffic policy versions that you want Amazon Route 53 to include in the response body for this request. If the specified traffic policy has more than <code>MaxItems</code> versions, the value of <code>IsTruncated</code> in the response is <code>true</code>, and the value of the <code>TrafficPolicyVersionMarker</code> element is the ID of the first version that Route 53 will return if you submit another request.</p>
4947    pub max_items: Option<String>,
4948    /// <p>For your first request to <code>ListTrafficPolicyVersions</code>, don't include the <code>TrafficPolicyVersionMarker</code> parameter.</p> <p>If you have more traffic policy versions than the value of <code>MaxItems</code>, <code>ListTrafficPolicyVersions</code> returns only the first group of <code>MaxItems</code> versions. To get more traffic policy versions, submit another <code>ListTrafficPolicyVersions</code> request. For the value of <code>TrafficPolicyVersionMarker</code>, specify the value of <code>TrafficPolicyVersionMarker</code> in the previous response.</p>
4949    pub traffic_policy_version_marker: Option<String>,
4950}
4951
4952/// <p>A complex type that contains the response information for the request.</p>
4953#[derive(Clone, Debug, Default, PartialEq)]
4954#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
4955pub struct ListTrafficPolicyVersionsResponse {
4956    /// <p>A flag that indicates whether there are more traffic policies to be listed. If the response was truncated, you can get the next group of traffic policies by submitting another <code>ListTrafficPolicyVersions</code> request and specifying the value of <code>NextMarker</code> in the <code>marker</code> parameter.</p>
4957    pub is_truncated: bool,
4958    /// <p>The value that you specified for the <code>maxitems</code> parameter in the <code>ListTrafficPolicyVersions</code> request that produced the current response.</p>
4959    pub max_items: String,
4960    /// <p>A list that contains one <code>TrafficPolicy</code> element for each traffic policy version that is associated with the specified traffic policy.</p>
4961    pub traffic_policies: Vec<TrafficPolicy>,
4962    /// <p>If <code>IsTruncated</code> is <code>true</code>, the value of <code>TrafficPolicyVersionMarker</code> identifies the first traffic policy that Amazon Route 53 will return if you submit another request. Call <code>ListTrafficPolicyVersions</code> again and specify the value of <code>TrafficPolicyVersionMarker</code> in the <code>TrafficPolicyVersionMarker</code> request parameter.</p> <p>This element is present only if <code>IsTruncated</code> is <code>true</code>.</p>
4963    pub traffic_policy_version_marker: String,
4964}
4965
4966#[allow(dead_code)]
4967struct ListTrafficPolicyVersionsResponseDeserializer;
4968impl ListTrafficPolicyVersionsResponseDeserializer {
4969    #[allow(dead_code, unused_variables)]
4970    fn deserialize<T: Peek + Next>(
4971        tag_name: &str,
4972        stack: &mut T,
4973    ) -> Result<ListTrafficPolicyVersionsResponse, XmlParseError> {
4974        deserialize_elements::<_, ListTrafficPolicyVersionsResponse, _>(
4975            tag_name,
4976            stack,
4977            |name, stack, obj| {
4978                match name {
4979                    "IsTruncated" => {
4980                        obj.is_truncated =
4981                            PageTruncatedDeserializer::deserialize("IsTruncated", stack)?;
4982                    }
4983                    "MaxItems" => {
4984                        obj.max_items = PageMaxItemsDeserializer::deserialize("MaxItems", stack)?;
4985                    }
4986                    "TrafficPolicies" => {
4987                        obj.traffic_policies
4988                            .extend(TrafficPoliciesDeserializer::deserialize(
4989                                "TrafficPolicies",
4990                                stack,
4991                            )?);
4992                    }
4993                    "TrafficPolicyVersionMarker" => {
4994                        obj.traffic_policy_version_marker =
4995                            TrafficPolicyVersionMarkerDeserializer::deserialize(
4996                                "TrafficPolicyVersionMarker",
4997                                stack,
4998                            )?;
4999                    }
5000                    _ => skip_tree(stack),
5001                }
5002                Ok(())
5003            },
5004        )
5005    }
5006}
5007/// <p>A complex type that contains information about that can be associated with your hosted zone.</p>
5008#[derive(Clone, Debug, Default, PartialEq)]
5009#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5010pub struct ListVPCAssociationAuthorizationsRequest {
5011    /// <p>The ID of the hosted zone for which you want a list of VPCs that can be associated with the hosted zone.</p>
5012    pub hosted_zone_id: String,
5013    /// <p> <i>Optional</i>: An integer that specifies the maximum number of VPCs that you want Amazon Route 53 to return. If you don't specify a value for <code>MaxResults</code>, Route 53 returns up to 50 VPCs per page.</p>
5014    pub max_results: Option<String>,
5015    /// <p> <i>Optional</i>: If a response includes a <code>NextToken</code> element, there are more VPCs that can be associated with the specified hosted zone. To get the next page of results, submit another request, and include the value of <code>NextToken</code> from the response in the <code>nexttoken</code> parameter in another <code>ListVPCAssociationAuthorizations</code> request.</p>
5016    pub next_token: Option<String>,
5017}
5018
5019/// <p>A complex type that contains the response information for the request.</p>
5020#[derive(Clone, Debug, Default, PartialEq)]
5021#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5022pub struct ListVPCAssociationAuthorizationsResponse {
5023    /// <p>The ID of the hosted zone that you can associate the listed VPCs with.</p>
5024    pub hosted_zone_id: String,
5025    /// <p>When the response includes a <code>NextToken</code> element, there are more VPCs that can be associated with the specified hosted zone. To get the next page of VPCs, submit another <code>ListVPCAssociationAuthorizations</code> request, and include the value of the <code>NextToken</code> element from the response in the <code>nexttoken</code> request parameter.</p>
5026    pub next_token: Option<String>,
5027    /// <p>The list of VPCs that are authorized to be associated with the specified hosted zone.</p>
5028    pub vp_cs: Vec<VPC>,
5029}
5030
5031#[allow(dead_code)]
5032struct ListVPCAssociationAuthorizationsResponseDeserializer;
5033impl ListVPCAssociationAuthorizationsResponseDeserializer {
5034    #[allow(dead_code, unused_variables)]
5035    fn deserialize<T: Peek + Next>(
5036        tag_name: &str,
5037        stack: &mut T,
5038    ) -> Result<ListVPCAssociationAuthorizationsResponse, XmlParseError> {
5039        deserialize_elements::<_, ListVPCAssociationAuthorizationsResponse, _>(
5040            tag_name,
5041            stack,
5042            |name, stack, obj| {
5043                match name {
5044                    "HostedZoneId" => {
5045                        obj.hosted_zone_id =
5046                            ResourceIdDeserializer::deserialize("HostedZoneId", stack)?;
5047                    }
5048                    "NextToken" => {
5049                        obj.next_token = Some(PaginationTokenDeserializer::deserialize(
5050                            "NextToken",
5051                            stack,
5052                        )?);
5053                    }
5054                    "VPCs" => {
5055                        obj.vp_cs
5056                            .extend(VPCsDeserializer::deserialize("VPCs", stack)?);
5057                    }
5058                    _ => skip_tree(stack),
5059                }
5060                Ok(())
5061            },
5062        )
5063    }
5064}
5065
5066pub struct MaxResultsSerializer;
5067impl MaxResultsSerializer {
5068    #[allow(unused_variables, warnings)]
5069    pub fn serialize<W>(
5070        mut writer: &mut EventWriter<W>,
5071        name: &str,
5072        obj: &String,
5073    ) -> Result<(), xml::writer::Error>
5074    where
5075        W: Write,
5076    {
5077        write_characters_element(writer, name, obj)
5078    }
5079}
5080
5081#[allow(dead_code)]
5082struct MeasureLatencyDeserializer;
5083impl MeasureLatencyDeserializer {
5084    #[allow(dead_code, unused_variables)]
5085    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<bool, XmlParseError> {
5086        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(bool::from_str(&s).unwrap()))
5087    }
5088}
5089
5090pub struct MeasureLatencySerializer;
5091impl MeasureLatencySerializer {
5092    #[allow(unused_variables, warnings)]
5093    pub fn serialize<W>(
5094        mut writer: &mut EventWriter<W>,
5095        name: &str,
5096        obj: &bool,
5097    ) -> Result<(), xml::writer::Error>
5098    where
5099        W: Write,
5100    {
5101        write_characters_element(writer, name, &obj.to_string())
5102    }
5103}
5104
5105#[allow(dead_code)]
5106struct MessageDeserializer;
5107impl MessageDeserializer {
5108    #[allow(dead_code, unused_variables)]
5109    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5110        xml_util::deserialize_primitive(tag_name, stack, Ok)
5111    }
5112}
5113#[allow(dead_code)]
5114struct MetricNameDeserializer;
5115impl MetricNameDeserializer {
5116    #[allow(dead_code, unused_variables)]
5117    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5118        xml_util::deserialize_primitive(tag_name, stack, Ok)
5119    }
5120}
5121#[allow(dead_code)]
5122struct NameserverDeserializer;
5123impl NameserverDeserializer {
5124    #[allow(dead_code, unused_variables)]
5125    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5126        xml_util::deserialize_primitive(tag_name, stack, Ok)
5127    }
5128}
5129#[allow(dead_code)]
5130struct NamespaceDeserializer;
5131impl NamespaceDeserializer {
5132    #[allow(dead_code, unused_variables)]
5133    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5134        xml_util::deserialize_primitive(tag_name, stack, Ok)
5135    }
5136}
5137#[allow(dead_code)]
5138struct NonceDeserializer;
5139impl NonceDeserializer {
5140    #[allow(dead_code, unused_variables)]
5141    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5142        xml_util::deserialize_primitive(tag_name, stack, Ok)
5143    }
5144}
5145
5146pub struct NonceSerializer;
5147impl NonceSerializer {
5148    #[allow(unused_variables, warnings)]
5149    pub fn serialize<W>(
5150        mut writer: &mut EventWriter<W>,
5151        name: &str,
5152        obj: &String,
5153    ) -> Result<(), xml::writer::Error>
5154    where
5155        W: Write,
5156    {
5157        write_characters_element(writer, name, obj)
5158    }
5159}
5160
5161#[allow(dead_code)]
5162struct PageMarkerDeserializer;
5163impl PageMarkerDeserializer {
5164    #[allow(dead_code, unused_variables)]
5165    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5166        xml_util::deserialize_primitive(tag_name, stack, Ok)
5167    }
5168}
5169
5170pub struct PageMarkerSerializer;
5171impl PageMarkerSerializer {
5172    #[allow(unused_variables, warnings)]
5173    pub fn serialize<W>(
5174        mut writer: &mut EventWriter<W>,
5175        name: &str,
5176        obj: &String,
5177    ) -> Result<(), xml::writer::Error>
5178    where
5179        W: Write,
5180    {
5181        write_characters_element(writer, name, obj)
5182    }
5183}
5184
5185#[allow(dead_code)]
5186struct PageMaxItemsDeserializer;
5187impl PageMaxItemsDeserializer {
5188    #[allow(dead_code, unused_variables)]
5189    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5190        xml_util::deserialize_primitive(tag_name, stack, Ok)
5191    }
5192}
5193
5194pub struct PageMaxItemsSerializer;
5195impl PageMaxItemsSerializer {
5196    #[allow(unused_variables, warnings)]
5197    pub fn serialize<W>(
5198        mut writer: &mut EventWriter<W>,
5199        name: &str,
5200        obj: &String,
5201    ) -> Result<(), xml::writer::Error>
5202    where
5203        W: Write,
5204    {
5205        write_characters_element(writer, name, obj)
5206    }
5207}
5208
5209#[allow(dead_code)]
5210struct PageTruncatedDeserializer;
5211impl PageTruncatedDeserializer {
5212    #[allow(dead_code, unused_variables)]
5213    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<bool, XmlParseError> {
5214        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(bool::from_str(&s).unwrap()))
5215    }
5216}
5217#[allow(dead_code)]
5218struct PaginationTokenDeserializer;
5219impl PaginationTokenDeserializer {
5220    #[allow(dead_code, unused_variables)]
5221    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5222        xml_util::deserialize_primitive(tag_name, stack, Ok)
5223    }
5224}
5225
5226pub struct PaginationTokenSerializer;
5227impl PaginationTokenSerializer {
5228    #[allow(unused_variables, warnings)]
5229    pub fn serialize<W>(
5230        mut writer: &mut EventWriter<W>,
5231        name: &str,
5232        obj: &String,
5233    ) -> Result<(), xml::writer::Error>
5234    where
5235        W: Write,
5236    {
5237        write_characters_element(writer, name, obj)
5238    }
5239}
5240
5241#[allow(dead_code)]
5242struct PeriodDeserializer;
5243impl PeriodDeserializer {
5244    #[allow(dead_code, unused_variables)]
5245    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
5246        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
5247    }
5248}
5249#[allow(dead_code)]
5250struct PortDeserializer;
5251impl PortDeserializer {
5252    #[allow(dead_code, unused_variables)]
5253    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
5254        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
5255    }
5256}
5257
5258pub struct PortSerializer;
5259impl PortSerializer {
5260    #[allow(unused_variables, warnings)]
5261    pub fn serialize<W>(
5262        mut writer: &mut EventWriter<W>,
5263        name: &str,
5264        obj: &i64,
5265    ) -> Result<(), xml::writer::Error>
5266    where
5267        W: Write,
5268    {
5269        write_characters_element(writer, name, &obj.to_string())
5270    }
5271}
5272
5273/// <p>A complex type that contains information about a configuration for DNS query logging.</p>
5274#[derive(Clone, Debug, Default, PartialEq)]
5275#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5276pub struct QueryLoggingConfig {
5277    /// <p>The Amazon Resource Name (ARN) of the CloudWatch Logs log group that Amazon Route 53 is publishing logs to.</p>
5278    pub cloud_watch_logs_log_group_arn: String,
5279    /// <p>The ID of the hosted zone that CloudWatch Logs is logging queries for. </p>
5280    pub hosted_zone_id: String,
5281    /// <p>The ID for a configuration for DNS query logging.</p>
5282    pub id: String,
5283}
5284
5285#[allow(dead_code)]
5286struct QueryLoggingConfigDeserializer;
5287impl QueryLoggingConfigDeserializer {
5288    #[allow(dead_code, unused_variables)]
5289    fn deserialize<T: Peek + Next>(
5290        tag_name: &str,
5291        stack: &mut T,
5292    ) -> Result<QueryLoggingConfig, XmlParseError> {
5293        deserialize_elements::<_, QueryLoggingConfig, _>(tag_name, stack, |name, stack, obj| {
5294            match name {
5295                "CloudWatchLogsLogGroupArn" => {
5296                    obj.cloud_watch_logs_log_group_arn =
5297                        CloudWatchLogsLogGroupArnDeserializer::deserialize(
5298                            "CloudWatchLogsLogGroupArn",
5299                            stack,
5300                        )?;
5301                }
5302                "HostedZoneId" => {
5303                    obj.hosted_zone_id =
5304                        ResourceIdDeserializer::deserialize("HostedZoneId", stack)?;
5305                }
5306                "Id" => {
5307                    obj.id = QueryLoggingConfigIdDeserializer::deserialize("Id", stack)?;
5308                }
5309                _ => skip_tree(stack),
5310            }
5311            Ok(())
5312        })
5313    }
5314}
5315#[allow(dead_code)]
5316struct QueryLoggingConfigIdDeserializer;
5317impl QueryLoggingConfigIdDeserializer {
5318    #[allow(dead_code, unused_variables)]
5319    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5320        xml_util::deserialize_primitive(tag_name, stack, Ok)
5321    }
5322}
5323
5324pub struct QueryLoggingConfigIdSerializer;
5325impl QueryLoggingConfigIdSerializer {
5326    #[allow(unused_variables, warnings)]
5327    pub fn serialize<W>(
5328        mut writer: &mut EventWriter<W>,
5329        name: &str,
5330        obj: &String,
5331    ) -> Result<(), xml::writer::Error>
5332    where
5333        W: Write,
5334    {
5335        write_characters_element(writer, name, obj)
5336    }
5337}
5338
5339#[allow(dead_code)]
5340struct QueryLoggingConfigsDeserializer;
5341impl QueryLoggingConfigsDeserializer {
5342    #[allow(dead_code, unused_variables)]
5343    fn deserialize<T: Peek + Next>(
5344        tag_name: &str,
5345        stack: &mut T,
5346    ) -> Result<Vec<QueryLoggingConfig>, XmlParseError> {
5347        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
5348            if name == "QueryLoggingConfig" {
5349                obj.push(QueryLoggingConfigDeserializer::deserialize(
5350                    "QueryLoggingConfig",
5351                    stack,
5352                )?);
5353            } else {
5354                skip_tree(stack);
5355            }
5356            Ok(())
5357        })
5358    }
5359}
5360#[allow(dead_code)]
5361struct RDataDeserializer;
5362impl RDataDeserializer {
5363    #[allow(dead_code, unused_variables)]
5364    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5365        xml_util::deserialize_primitive(tag_name, stack, Ok)
5366    }
5367}
5368
5369pub struct RDataSerializer;
5370impl RDataSerializer {
5371    #[allow(unused_variables, warnings)]
5372    pub fn serialize<W>(
5373        mut writer: &mut EventWriter<W>,
5374        name: &str,
5375        obj: &String,
5376    ) -> Result<(), xml::writer::Error>
5377    where
5378        W: Write,
5379    {
5380        write_characters_element(writer, name, obj)
5381    }
5382}
5383
5384#[allow(dead_code)]
5385struct RRTypeDeserializer;
5386impl RRTypeDeserializer {
5387    #[allow(dead_code, unused_variables)]
5388    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5389        xml_util::deserialize_primitive(tag_name, stack, Ok)
5390    }
5391}
5392
5393pub struct RRTypeSerializer;
5394impl RRTypeSerializer {
5395    #[allow(unused_variables, warnings)]
5396    pub fn serialize<W>(
5397        mut writer: &mut EventWriter<W>,
5398        name: &str,
5399        obj: &String,
5400    ) -> Result<(), xml::writer::Error>
5401    where
5402        W: Write,
5403    {
5404        write_characters_element(writer, name, obj)
5405    }
5406}
5407
5408#[allow(dead_code)]
5409struct RecordDataDeserializer;
5410impl RecordDataDeserializer {
5411    #[allow(dead_code, unused_variables)]
5412    fn deserialize<T: Peek + Next>(
5413        tag_name: &str,
5414        stack: &mut T,
5415    ) -> Result<Vec<String>, XmlParseError> {
5416        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
5417            if name == "RecordDataEntry" {
5418                obj.push(RecordDataEntryDeserializer::deserialize(
5419                    "RecordDataEntry",
5420                    stack,
5421                )?);
5422            } else {
5423                skip_tree(stack);
5424            }
5425            Ok(())
5426        })
5427    }
5428}
5429#[allow(dead_code)]
5430struct RecordDataEntryDeserializer;
5431impl RecordDataEntryDeserializer {
5432    #[allow(dead_code, unused_variables)]
5433    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5434        xml_util::deserialize_primitive(tag_name, stack, Ok)
5435    }
5436}
5437#[allow(dead_code)]
5438struct RequestIntervalDeserializer;
5439impl RequestIntervalDeserializer {
5440    #[allow(dead_code, unused_variables)]
5441    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
5442        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
5443    }
5444}
5445
5446pub struct RequestIntervalSerializer;
5447impl RequestIntervalSerializer {
5448    #[allow(unused_variables, warnings)]
5449    pub fn serialize<W>(
5450        mut writer: &mut EventWriter<W>,
5451        name: &str,
5452        obj: &i64,
5453    ) -> Result<(), xml::writer::Error>
5454    where
5455        W: Write,
5456    {
5457        write_characters_element(writer, name, &obj.to_string())
5458    }
5459}
5460
5461pub struct ResettableElementNameSerializer;
5462impl ResettableElementNameSerializer {
5463    #[allow(unused_variables, warnings)]
5464    pub fn serialize<W>(
5465        mut writer: &mut EventWriter<W>,
5466        name: &str,
5467        obj: &String,
5468    ) -> Result<(), xml::writer::Error>
5469    where
5470        W: Write,
5471    {
5472        write_characters_element(writer, name, obj)
5473    }
5474}
5475
5476pub struct ResettableElementNameListSerializer;
5477impl ResettableElementNameListSerializer {
5478    #[allow(unused_variables, warnings)]
5479    pub fn serialize<W>(
5480        mut writer: &mut EventWriter<W>,
5481        name: &str,
5482        obj: &Vec<String>,
5483    ) -> Result<(), xml::writer::Error>
5484    where
5485        W: Write,
5486    {
5487        writer.write(xml::writer::XmlEvent::start_element(name))?;
5488        for element in obj {
5489            ResettableElementNameSerializer::serialize(writer, "ResettableElementName", element)?;
5490        }
5491        writer.write(xml::writer::XmlEvent::end_element())?;
5492        Ok(())
5493    }
5494}
5495
5496#[allow(dead_code)]
5497struct ResourceDescriptionDeserializer;
5498impl ResourceDescriptionDeserializer {
5499    #[allow(dead_code, unused_variables)]
5500    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5501        xml_util::deserialize_primitive(tag_name, stack, Ok)
5502    }
5503}
5504
5505pub struct ResourceDescriptionSerializer;
5506impl ResourceDescriptionSerializer {
5507    #[allow(unused_variables, warnings)]
5508    pub fn serialize<W>(
5509        mut writer: &mut EventWriter<W>,
5510        name: &str,
5511        obj: &String,
5512    ) -> Result<(), xml::writer::Error>
5513    where
5514        W: Write,
5515    {
5516        write_characters_element(writer, name, obj)
5517    }
5518}
5519
5520#[allow(dead_code)]
5521struct ResourceIdDeserializer;
5522impl ResourceIdDeserializer {
5523    #[allow(dead_code, unused_variables)]
5524    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5525        xml_util::deserialize_primitive(tag_name, stack, Ok)
5526    }
5527}
5528
5529pub struct ResourceIdSerializer;
5530impl ResourceIdSerializer {
5531    #[allow(unused_variables, warnings)]
5532    pub fn serialize<W>(
5533        mut writer: &mut EventWriter<W>,
5534        name: &str,
5535        obj: &String,
5536    ) -> Result<(), xml::writer::Error>
5537    where
5538        W: Write,
5539    {
5540        write_characters_element(writer, name, obj)
5541    }
5542}
5543
5544#[allow(dead_code)]
5545struct ResourcePathDeserializer;
5546impl ResourcePathDeserializer {
5547    #[allow(dead_code, unused_variables)]
5548    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5549        xml_util::deserialize_primitive(tag_name, stack, Ok)
5550    }
5551}
5552
5553pub struct ResourcePathSerializer;
5554impl ResourcePathSerializer {
5555    #[allow(unused_variables, warnings)]
5556    pub fn serialize<W>(
5557        mut writer: &mut EventWriter<W>,
5558        name: &str,
5559        obj: &String,
5560    ) -> Result<(), xml::writer::Error>
5561    where
5562        W: Write,
5563    {
5564        write_characters_element(writer, name, obj)
5565    }
5566}
5567
5568/// <p><p>Information specific to the resource record.</p> <note> <p>If you&#39;re creating an alias resource record set, omit <code>ResourceRecord</code>.</p> </note></p>
5569#[derive(Clone, Debug, Default, PartialEq)]
5570#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5571#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5572pub struct ResourceRecord {
5573    /// <p><p>The current or new DNS record value, not to exceed 4,000 characters. In the case of a <code>DELETE</code> action, if the current value does not match the actual value, an error is returned. For descriptions about how to format <code>Value</code> for different record types, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS Resource Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>You can specify more than one value for all record types except <code>CNAME</code> and <code>SOA</code>. </p> <note> <p>If you&#39;re creating an alias resource record set, omit <code>Value</code>.</p> </note></p>
5574    pub value: String,
5575}
5576
5577#[allow(dead_code)]
5578struct ResourceRecordDeserializer;
5579impl ResourceRecordDeserializer {
5580    #[allow(dead_code, unused_variables)]
5581    fn deserialize<T: Peek + Next>(
5582        tag_name: &str,
5583        stack: &mut T,
5584    ) -> Result<ResourceRecord, XmlParseError> {
5585        deserialize_elements::<_, ResourceRecord, _>(tag_name, stack, |name, stack, obj| {
5586            match name {
5587                "Value" => {
5588                    obj.value = RDataDeserializer::deserialize("Value", stack)?;
5589                }
5590                _ => skip_tree(stack),
5591            }
5592            Ok(())
5593        })
5594    }
5595}
5596
5597pub struct ResourceRecordSerializer;
5598impl ResourceRecordSerializer {
5599    #[allow(unused_variables, warnings)]
5600    pub fn serialize<W>(
5601        mut writer: &mut EventWriter<W>,
5602        name: &str,
5603        obj: &ResourceRecord,
5604    ) -> Result<(), xml::writer::Error>
5605    where
5606        W: Write,
5607    {
5608        writer.write(xml::writer::XmlEvent::start_element(name))?;
5609        write_characters_element(writer, "Value", &obj.value.to_string())?;
5610        writer.write(xml::writer::XmlEvent::end_element())
5611    }
5612}
5613
5614/// <p>Information about the resource record set to create or delete.</p>
5615#[derive(Clone, Debug, Default, PartialEq)]
5616#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5617#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5618pub struct ResourceRecordSet {
5619    /// <p><p> <i>Alias resource record sets only:</i> Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to. </p> <p>If you&#39;re creating resource records sets for a private hosted zone, note the following:</p> <ul> <li> <p>You can&#39;t create an alias resource record set in a private hosted zone to route traffic to a CloudFront distribution.</p> </li> <li> <p>Creating geolocation alias resource record sets or latency alias resource record sets in a private hosted zone is unsupported.</p> </li> <li> <p>For information about creating failover resource record sets in a private hosted zone, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">Configuring Failover in a Private Hosted Zone</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> </li> </ul></p>
5620    pub alias_target: Option<AliasTarget>,
5621    /// <p><p> <i>Failover resource record sets only:</i> To configure failover, you add the <code>Failover</code> element to two resource record sets. For one resource record set, you specify <code>PRIMARY</code> as the value for <code>Failover</code>; for the other resource record set, you specify <code>SECONDARY</code>. In addition, you include the <code>HealthCheckId</code> element and specify the health check that you want Amazon Route 53 to perform for each resource record set.</p> <p>Except where noted, the following failover behaviors assume that you have included the <code>HealthCheckId</code> element in both resource record sets:</p> <ul> <li> <p>When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable value from the primary resource record set regardless of the health of the secondary resource record set.</p> </li> <li> <p>When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route 53 responds to DNS queries with the applicable value from the secondary resource record set.</p> </li> <li> <p>When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable value from the primary resource record set regardless of the health of the primary resource record set.</p> </li> <li> <p>If you omit the <code>HealthCheckId</code> element for the secondary resource record set, and if the primary resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable value from the secondary resource record set. This is true regardless of the health of the associated endpoint.</p> </li> </ul> <p>You can&#39;t create non-failover resource record sets that have the same values for the <code>Name</code> and <code>Type</code> elements as failover resource record sets.</p> <p>For failover alias resource record sets, you must also include the <code>EvaluateTargetHealth</code> element and set the value to true.</p> <p>For more information about configuring failover for Route 53, see the following topics in the <i>Amazon Route 53 Developer Guide</i>: </p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health Checks and DNS Failover</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">Configuring Failover in a Private Hosted Zone</a> </p> </li> </ul></p>
5622    pub failover: Option<String>,
5623    /// <p> <i>Geolocation resource record sets only:</i> A complex type that lets you control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query. For example, if you want all queries from Africa to be routed to a web server with an IP address of <code>192.0.2.111</code>, create a resource record set with a <code>Type</code> of <code>A</code> and a <code>ContinentCode</code> of <code>AF</code>.</p> <note> <p>Although creating geolocation and geolocation alias resource record sets in a private hosted zone is allowed, it's not supported.</p> </note> <p>If you create separate resource record sets for overlapping geographic regions (for example, one resource record set for a continent and one for a country on the same continent), priority goes to the smallest geographic region. This allows you to route most queries for a continent to one resource and to route queries for a country on that continent to a different resource.</p> <p>You can't create two geolocation resource record sets that specify the same geographic location.</p> <p>The value <code>*</code> in the <code>CountryCode</code> element matches all geographic locations that aren't specified in other geolocation resource record sets that have the same values for the <code>Name</code> and <code>Type</code> elements.</p> <important> <p>Geolocation works by mapping IP addresses to locations. However, some IP addresses aren't mapped to geographic locations, so even if you create geolocation resource record sets that cover all seven continents, Route 53 will receive some DNS queries from locations that it can't identify. We recommend that you create a resource record set for which the value of <code>CountryCode</code> is <code>*</code>. Two groups of queries are routed to the resource that you specify in this record: queries that come from locations for which you haven't created geolocation resource record sets and queries from IP addresses that aren't mapped to a location. If you don't create a <code>*</code> resource record set, Route 53 returns a "no answer" response for queries from those locations.</p> </important> <p>You can't create non-geolocation resource record sets that have the same values for the <code>Name</code> and <code>Type</code> elements as geolocation resource record sets.</p>
5624    pub geo_location: Option<GeoLocation>,
5625    /// <p><p>If you want Amazon Route 53 to return this resource record set in response to a DNS query only when the status of a health check is healthy, include the <code>HealthCheckId</code> element and specify the ID of the applicable health check.</p> <p>Route 53 determines whether a resource record set is healthy based on one of the following:</p> <ul> <li> <p>By periodically sending a request to the endpoint that is specified in the health check</p> </li> <li> <p>By aggregating the status of a specified group of health checks (calculated health checks)</p> </li> <li> <p>By determining the current state of a CloudWatch alarm (CloudWatch metric health checks)</p> </li> </ul> <important> <p>Route 53 doesn&#39;t check the health of the endpoint that is specified in the resource record set, for example, the endpoint specified by the IP address in the <code>Value</code> element. When you add a <code>HealthCheckId</code> element to a resource record set, Route 53 checks the health of the endpoint that you specified in the health check. </p> </important> <p>For more information, see the following topics in the <i>Amazon Route 53 Developer Guide</i>:</p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html">How Amazon Route 53 Determines Whether an Endpoint Is Healthy</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html">Route 53 Health Checks and DNS Failover</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html">Configuring Failover in a Private Hosted Zone</a> </p> </li> </ul> <p> <b>When to Specify HealthCheckId</b> </p> <p>Specifying a value for <code>HealthCheckId</code> is useful only when Route 53 is choosing between two or more resource record sets to respond to a DNS query, and you want Route 53 to base the choice in part on the status of a health check. Configuring health checks makes sense only in the following configurations:</p> <ul> <li> <p> <b>Non-alias resource record sets</b>: You&#39;re checking the health of a group of non-alias resource record sets that have the same routing policy, name, and type (such as multiple weighted records named www.example.com with a type of A) and you specify health check IDs for all the resource record sets. </p> <p>If the health check status for a resource record set is healthy, Route 53 includes the record among the records that it responds to DNS queries with.</p> <p>If the health check status for a resource record set is unhealthy, Route 53 stops responding to DNS queries using the value for that resource record set.</p> <p>If the health check status for all resource record sets in the group is unhealthy, Route 53 considers all resource record sets in the group healthy and responds to DNS queries accordingly. </p> </li> <li> <p> <b>Alias resource record sets</b>: You specify the following settings:</p> <ul> <li> <p>You set <code>EvaluateTargetHealth</code> to true for an alias resource record set in a group of resource record sets that have the same routing policy, name, and type (such as multiple weighted records named www.example.com with a type of A). </p> </li> <li> <p>You configure the alias resource record set to route traffic to a non-alias resource record set in the same hosted zone.</p> </li> <li> <p>You specify a health check ID for the non-alias resource record set. </p> </li> </ul> <p>If the health check status is healthy, Route 53 considers the alias resource record set to be healthy and includes the alias record among the records that it responds to DNS queries with.</p> <p>If the health check status is unhealthy, Route 53 stops responding to DNS queries using the alias resource record set.</p> <note> <p>The alias resource record set can also route traffic to a <i>group</i> of non-alias resource record sets that have the same routing policy, name, and type. In that configuration, associate health checks with all of the resource record sets in the group of non-alias resource record sets.</p> </note> </li> </ul> <p> <b>Geolocation Routing</b> </p> <p>For geolocation resource record sets, if an endpoint is unhealthy, Route 53 looks for a resource record set for the larger, associated geographic region. For example, suppose you have resource record sets for a state in the United States, for the entire United States, for North America, and a resource record set that has <code><em></code> for <code>CountryCode</code> is <code></em></code>, which applies to all locations. If the endpoint for the state resource record set is unhealthy, Route 53 checks for healthy resource record sets in the following order until it finds a resource record set for which the endpoint is healthy:</p> <ul> <li> <p>The United States</p> </li> <li> <p>North America</p> </li> <li> <p>The default resource record set</p> </li> </ul> <p> <b>Specifying the Health Check Endpoint by Domain Name</b> </p> <p>If your health checks specify the endpoint only by domain name, we recommend that you create a separate health check for each endpoint. For example, create a health check for each <code>HTTP</code> server that is serving content for <code>www.example.com</code>. For the value of <code>FullyQualifiedDomainName</code>, specify the domain name of the server (such as <code>us-east-2-www.example.com</code>), not the name of the resource record sets (<code>www.example.com</code>).</p> <important> <p>Health check results will be unpredictable if you do the following:</p> <ul> <li> <p>Create a health check that has the same value for <code>FullyQualifiedDomainName</code> as the name of a resource record set.</p> </li> <li> <p>Associate that health check with the resource record set.</p> </li> </ul> </important></p>
5626    pub health_check_id: Option<String>,
5627    /// <p> <i>Multivalue answer resource record sets only</i>: To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify <code>true</code> for <code>MultiValueAnswer</code>. Note the following:</p> <ul> <li> <p>If you associate a health check with a multivalue answer resource record set, Amazon Route 53 responds to DNS queries with the corresponding IP address only when the health check is healthy.</p> </li> <li> <p>If you don't associate a health check with a multivalue answer record, Route 53 always considers the record to be healthy.</p> </li> <li> <p>Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy records, Route 53 responds to all DNS queries with all the healthy records.</p> </li> <li> <p>If you have more than eight healthy records, Route 53 responds to different DNS resolvers with different combinations of healthy records.</p> </li> <li> <p>When all records are unhealthy, Route 53 responds to DNS queries with up to eight unhealthy records.</p> </li> <li> <p>If a resource becomes unavailable after a resolver caches a response, client software typically tries another of the IP addresses in the response.</p> </li> </ul> <p>You can't create multivalue answer alias records.</p>
5628    pub multi_value_answer: Option<bool>,
5629    /// <p>For <code>ChangeResourceRecordSets</code> requests, the name of the record that you want to create, update, or delete. For <code>ListResourceRecordSets</code> responses, the name of a record in the specified hosted zone.</p> <p> <b>ChangeResourceRecordSets Only</b> </p> <p>Enter a fully qualified domain name, for example, <code>www.example.com</code>. You can optionally include a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you specify is fully qualified. This means that Route 53 treats <code>www.example.com</code> (without a trailing dot) and <code>www.example.com.</code> (with a trailing dot) as identical.</p> <p>For information about how to specify characters other than <code>a-z</code>, <code>0-9</code>, and <code>-</code> (hyphen) and how to specify internationalized domain names, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html">DNS Domain Name Format</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example, <code>*.example.com</code>. Note the following:</p> <ul> <li> <p>The * must replace the entire label. For example, you can't specify <code>*prod.example.com</code> or <code>prod*.example.com</code>.</p> </li> <li> <p>The * can't replace any of the middle labels, for example, marketing.*.example.com.</p> </li> <li> <p>If you include * in any position other than the leftmost label in a domain name, DNS treats it as an * character (ASCII 42), not as a wildcard.</p> <important> <p>You can't use the * wildcard for resource records sets that have a type of NS.</p> </important> </li> </ul> <p>You can use the * wildcard as the leftmost label in a domain name, for example, <code>*.example.com</code>. You can't use an * for one of the middle labels, for example, <code>marketing.*.example.com</code>. In addition, the * must replace the entire label; for example, you can't specify <code>prod*.example.com</code>.</p>
5630    pub name: String,
5631    /// <p><p> <i>Latency-based resource record sets only:</i> The Amazon EC2 Region where you created the resource that this resource record set refers to. The resource typically is an AWS resource, such as an EC2 instance or an ELB load balancer, and is referred to by an IP address or a DNS domain name, depending on the record type.</p> <note> <p>Although creating latency and latency alias resource record sets in a private hosted zone is allowed, it&#39;s not supported.</p> </note> <p>When Amazon Route 53 receives a DNS query for a domain name and type for which you have created latency resource record sets, Route 53 selects the latency resource record set that has the lowest latency between the end user and the associated Amazon EC2 Region. Route 53 then returns the value that is associated with the selected resource record set.</p> <p>Note the following:</p> <ul> <li> <p>You can only specify one <code>ResourceRecord</code> per latency resource record set.</p> </li> <li> <p>You can only create one latency resource record set for each Amazon EC2 Region.</p> </li> <li> <p>You aren&#39;t required to create latency resource record sets for all Amazon EC2 Regions. Route 53 will choose the region with the best latency from among the regions that you create latency resource record sets for.</p> </li> <li> <p>You can&#39;t create non-latency resource record sets that have the same values for the <code>Name</code> and <code>Type</code> elements as latency resource record sets.</p> </li> </ul></p>
5632    pub region: Option<String>,
5633    /// <p><p>Information about the resource records to act upon.</p> <note> <p>If you&#39;re creating an alias resource record set, omit <code>ResourceRecords</code>.</p> </note></p>
5634    pub resource_records: Option<Vec<ResourceRecord>>,
5635    /// <p> <i>Resource record sets that have a routing policy other than simple:</i> An identifier that differentiates among multiple resource record sets that have the same combination of name and type, such as multiple weighted resource record sets named acme.example.com that have a type of A. In a group of resource record sets that have the same name and type, the value of <code>SetIdentifier</code> must be unique for each resource record set. </p> <p>For information about routing policies, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html">Choosing a Routing Policy</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
5636    pub set_identifier: Option<String>,
5637    /// <p><p>The resource record cache time to live (TTL), in seconds. Note the following:</p> <ul> <li> <p>If you&#39;re creating or updating an alias resource record set, omit <code>TTL</code>. Amazon Route 53 uses the value of <code>TTL</code> for the alias target. </p> </li> <li> <p>If you&#39;re associating this resource record set with a health check (if you&#39;re adding a <code>HealthCheckId</code> element), we recommend that you specify a <code>TTL</code> of 60 seconds or less so clients respond quickly to changes in health status.</p> </li> <li> <p>All of the resource record sets in a group of weighted resource record sets must have the same value for <code>TTL</code>.</p> </li> <li> <p>If a group of weighted resource record sets includes one or more weighted alias resource record sets for which the alias target is an ELB load balancer, we recommend that you specify a <code>TTL</code> of 60 seconds for all of the non-alias weighted resource record sets that have the same name and type. Values other than 60 seconds (the TTL for load balancers) will change the effect of the values that you specify for <code>Weight</code>.</p> </li> </ul></p>
5638    pub ttl: Option<i64>,
5639    /// <p><p>When you create a traffic policy instance, Amazon Route 53 automatically creates a resource record set. <code>TrafficPolicyInstanceId</code> is the ID of the traffic policy instance that Route 53 created this resource record set for.</p> <important> <p>To delete the resource record set that is associated with a traffic policy instance, use <code>DeleteTrafficPolicyInstance</code>. Route 53 will delete the resource record set automatically. If you delete the resource record set by using <code>ChangeResourceRecordSets</code>, Route 53 doesn&#39;t automatically delete the traffic policy instance, and you&#39;ll continue to be charged for it even though it&#39;s no longer in use. </p> </important></p>
5640    pub traffic_policy_instance_id: Option<String>,
5641    /// <p><p>The DNS record type. For information about different record types and how data is encoded for them, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html">Supported DNS Resource Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> | <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code> </p> <p>Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the resource record sets in the group.</p> <p>Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code> </p> <note> <p>SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer recommend that you create resource record sets for which the value of <code>Type</code> is <code>SPF</code>. RFC 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</i>, has been updated to say, &quot;...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it.&quot; In RFC 7208, see section 14.1, <a href="http://tools.ietf.org/html/rfc7208#section-14.1">The SPF DNS Record Type</a>.</p> </note> <p>Values for alias resource record sets:</p> <ul> <li> <p> <b>Amazon API Gateway custom regional APIs and edge-optimized APIs:</b> <code>A</code> </p> </li> <li> <p> <b>CloudFront distributions:</b> <code>A</code> </p> <p>If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution, one with a value of <code>A</code> and one with a value of <code>AAAA</code>. </p> </li> <li> <p> <b>Amazon API Gateway environment that has a regionalized subdomain</b>: <code>A</code> </p> </li> <li> <p> <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code> </p> </li> <li> <p> <b>Amazon S3 buckets:</b> <code>A</code> </p> </li> <li> <p> <b>Amazon Virtual Private Cloud interface VPC endpoints</b> <code>A</code> </p> </li> <li> <p> <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that you&#39;re creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.</p> <note> <p>If you&#39;re creating an alias record that has the same name as the hosted zone (known as the zone apex), you can&#39;t route traffic to a record for which the value of <code>Type</code> is <code>CNAME</code>. This is because the alias record must have the same type as the record you&#39;re routing traffic to, and creating a CNAME record for the zone apex isn&#39;t supported even for an alias record.</p> </note> </li> </ul></p>
5642    pub type_: String,
5643    /// <p><p> <i>Weighted resource record sets only:</i> Among resource record sets that have the same combination of DNS name and type, a value that determines the proportion of DNS queries that Amazon Route 53 responds to using the current resource record set. Route 53 calculates the sum of the weights for the resource record sets that have the same combination of DNS name and type. Route 53 then responds to queries based on the ratio of a resource&#39;s weight to the total. Note the following:</p> <ul> <li> <p>You must specify a value for the <code>Weight</code> element for every weighted resource record set.</p> </li> <li> <p>You can only specify one <code>ResourceRecord</code> per weighted resource record set.</p> </li> <li> <p>You can&#39;t create latency, failover, or geolocation resource record sets that have the same values for the <code>Name</code> and <code>Type</code> elements as weighted resource record sets.</p> </li> <li> <p>You can create a maximum of 100 weighted resource record sets that have the same values for the <code>Name</code> and <code>Type</code> elements.</p> </li> <li> <p>For weighted (but not weighted alias) resource record sets, if you set <code>Weight</code> to <code>0</code> for a resource record set, Route 53 never responds to queries with the applicable value for that resource record set. However, if you set <code>Weight</code> to <code>0</code> for all resource record sets that have the same combination of DNS name and type, traffic is routed to all resources with equal probability.</p> <p>The effect of setting <code>Weight</code> to <code>0</code> is different when you associate health checks with weighted resource record sets. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring-options.html">Options for Configuring Route 53 Active-Active and Active-Passive Failover</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> </li> </ul></p>
5644    pub weight: Option<i64>,
5645}
5646
5647#[allow(dead_code)]
5648struct ResourceRecordSetDeserializer;
5649impl ResourceRecordSetDeserializer {
5650    #[allow(dead_code, unused_variables)]
5651    fn deserialize<T: Peek + Next>(
5652        tag_name: &str,
5653        stack: &mut T,
5654    ) -> Result<ResourceRecordSet, XmlParseError> {
5655        deserialize_elements::<_, ResourceRecordSet, _>(tag_name, stack, |name, stack, obj| {
5656            match name {
5657                "AliasTarget" => {
5658                    obj.alias_target =
5659                        Some(AliasTargetDeserializer::deserialize("AliasTarget", stack)?);
5660                }
5661                "Failover" => {
5662                    obj.failover = Some(ResourceRecordSetFailoverDeserializer::deserialize(
5663                        "Failover", stack,
5664                    )?);
5665                }
5666                "GeoLocation" => {
5667                    obj.geo_location =
5668                        Some(GeoLocationDeserializer::deserialize("GeoLocation", stack)?);
5669                }
5670                "HealthCheckId" => {
5671                    obj.health_check_id = Some(HealthCheckIdDeserializer::deserialize(
5672                        "HealthCheckId",
5673                        stack,
5674                    )?);
5675                }
5676                "MultiValueAnswer" => {
5677                    obj.multi_value_answer =
5678                        Some(ResourceRecordSetMultiValueAnswerDeserializer::deserialize(
5679                            "MultiValueAnswer",
5680                            stack,
5681                        )?);
5682                }
5683                "Name" => {
5684                    obj.name = DNSNameDeserializer::deserialize("Name", stack)?;
5685                }
5686                "Region" => {
5687                    obj.region = Some(ResourceRecordSetRegionDeserializer::deserialize(
5688                        "Region", stack,
5689                    )?);
5690                }
5691                "ResourceRecords" => {
5692                    obj.resource_records.get_or_insert(vec![]).extend(
5693                        ResourceRecordsDeserializer::deserialize("ResourceRecords", stack)?,
5694                    );
5695                }
5696                "SetIdentifier" => {
5697                    obj.set_identifier =
5698                        Some(ResourceRecordSetIdentifierDeserializer::deserialize(
5699                            "SetIdentifier",
5700                            stack,
5701                        )?);
5702                }
5703                "TTL" => {
5704                    obj.ttl = Some(TTLDeserializer::deserialize("TTL", stack)?);
5705                }
5706                "TrafficPolicyInstanceId" => {
5707                    obj.traffic_policy_instance_id =
5708                        Some(TrafficPolicyInstanceIdDeserializer::deserialize(
5709                            "TrafficPolicyInstanceId",
5710                            stack,
5711                        )?);
5712                }
5713                "Type" => {
5714                    obj.type_ = RRTypeDeserializer::deserialize("Type", stack)?;
5715                }
5716                "Weight" => {
5717                    obj.weight = Some(ResourceRecordSetWeightDeserializer::deserialize(
5718                        "Weight", stack,
5719                    )?);
5720                }
5721                _ => skip_tree(stack),
5722            }
5723            Ok(())
5724        })
5725    }
5726}
5727
5728pub struct ResourceRecordSetSerializer;
5729impl ResourceRecordSetSerializer {
5730    #[allow(unused_variables, warnings)]
5731    pub fn serialize<W>(
5732        mut writer: &mut EventWriter<W>,
5733        name: &str,
5734        obj: &ResourceRecordSet,
5735    ) -> Result<(), xml::writer::Error>
5736    where
5737        W: Write,
5738    {
5739        writer.write(xml::writer::XmlEvent::start_element(name))?;
5740        if let Some(ref value) = obj.alias_target {
5741            &AliasTargetSerializer::serialize(&mut writer, "AliasTarget", value)?;
5742        }
5743        if let Some(ref value) = obj.failover {
5744            write_characters_element(writer, "Failover", &value.to_string())?;
5745        }
5746        if let Some(ref value) = obj.geo_location {
5747            &GeoLocationSerializer::serialize(&mut writer, "GeoLocation", value)?;
5748        }
5749        if let Some(ref value) = obj.health_check_id {
5750            write_characters_element(writer, "HealthCheckId", &value.to_string())?;
5751        }
5752        if let Some(ref value) = obj.multi_value_answer {
5753            write_characters_element(writer, "MultiValueAnswer", &value.to_string())?;
5754        }
5755        write_characters_element(writer, "Name", &obj.name.to_string())?;
5756        if let Some(ref value) = obj.region {
5757            write_characters_element(writer, "Region", &value.to_string())?;
5758        }
5759        if let Some(ref value) = obj.resource_records {
5760            &ResourceRecordsSerializer::serialize(&mut writer, "ResourceRecords", value)?;
5761        }
5762        if let Some(ref value) = obj.set_identifier {
5763            write_characters_element(writer, "SetIdentifier", &value.to_string())?;
5764        }
5765        if let Some(ref value) = obj.ttl {
5766            write_characters_element(writer, "TTL", &value.to_string())?;
5767        }
5768        if let Some(ref value) = obj.traffic_policy_instance_id {
5769            write_characters_element(writer, "TrafficPolicyInstanceId", &value.to_string())?;
5770        }
5771        write_characters_element(writer, "Type", &obj.type_.to_string())?;
5772        if let Some(ref value) = obj.weight {
5773            write_characters_element(writer, "Weight", &value.to_string())?;
5774        }
5775        writer.write(xml::writer::XmlEvent::end_element())
5776    }
5777}
5778
5779#[allow(dead_code)]
5780struct ResourceRecordSetFailoverDeserializer;
5781impl ResourceRecordSetFailoverDeserializer {
5782    #[allow(dead_code, unused_variables)]
5783    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5784        xml_util::deserialize_primitive(tag_name, stack, Ok)
5785    }
5786}
5787
5788pub struct ResourceRecordSetFailoverSerializer;
5789impl ResourceRecordSetFailoverSerializer {
5790    #[allow(unused_variables, warnings)]
5791    pub fn serialize<W>(
5792        mut writer: &mut EventWriter<W>,
5793        name: &str,
5794        obj: &String,
5795    ) -> Result<(), xml::writer::Error>
5796    where
5797        W: Write,
5798    {
5799        write_characters_element(writer, name, obj)
5800    }
5801}
5802
5803#[allow(dead_code)]
5804struct ResourceRecordSetIdentifierDeserializer;
5805impl ResourceRecordSetIdentifierDeserializer {
5806    #[allow(dead_code, unused_variables)]
5807    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5808        xml_util::deserialize_primitive(tag_name, stack, Ok)
5809    }
5810}
5811
5812pub struct ResourceRecordSetIdentifierSerializer;
5813impl ResourceRecordSetIdentifierSerializer {
5814    #[allow(unused_variables, warnings)]
5815    pub fn serialize<W>(
5816        mut writer: &mut EventWriter<W>,
5817        name: &str,
5818        obj: &String,
5819    ) -> Result<(), xml::writer::Error>
5820    where
5821        W: Write,
5822    {
5823        write_characters_element(writer, name, obj)
5824    }
5825}
5826
5827#[allow(dead_code)]
5828struct ResourceRecordSetMultiValueAnswerDeserializer;
5829impl ResourceRecordSetMultiValueAnswerDeserializer {
5830    #[allow(dead_code, unused_variables)]
5831    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<bool, XmlParseError> {
5832        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(bool::from_str(&s).unwrap()))
5833    }
5834}
5835
5836pub struct ResourceRecordSetMultiValueAnswerSerializer;
5837impl ResourceRecordSetMultiValueAnswerSerializer {
5838    #[allow(unused_variables, warnings)]
5839    pub fn serialize<W>(
5840        mut writer: &mut EventWriter<W>,
5841        name: &str,
5842        obj: &bool,
5843    ) -> Result<(), xml::writer::Error>
5844    where
5845        W: Write,
5846    {
5847        write_characters_element(writer, name, &obj.to_string())
5848    }
5849}
5850
5851#[allow(dead_code)]
5852struct ResourceRecordSetRegionDeserializer;
5853impl ResourceRecordSetRegionDeserializer {
5854    #[allow(dead_code, unused_variables)]
5855    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
5856        xml_util::deserialize_primitive(tag_name, stack, Ok)
5857    }
5858}
5859
5860pub struct ResourceRecordSetRegionSerializer;
5861impl ResourceRecordSetRegionSerializer {
5862    #[allow(unused_variables, warnings)]
5863    pub fn serialize<W>(
5864        mut writer: &mut EventWriter<W>,
5865        name: &str,
5866        obj: &String,
5867    ) -> Result<(), xml::writer::Error>
5868    where
5869        W: Write,
5870    {
5871        write_characters_element(writer, name, obj)
5872    }
5873}
5874
5875#[allow(dead_code)]
5876struct ResourceRecordSetWeightDeserializer;
5877impl ResourceRecordSetWeightDeserializer {
5878    #[allow(dead_code, unused_variables)]
5879    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
5880        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
5881    }
5882}
5883
5884pub struct ResourceRecordSetWeightSerializer;
5885impl ResourceRecordSetWeightSerializer {
5886    #[allow(unused_variables, warnings)]
5887    pub fn serialize<W>(
5888        mut writer: &mut EventWriter<W>,
5889        name: &str,
5890        obj: &i64,
5891    ) -> Result<(), xml::writer::Error>
5892    where
5893        W: Write,
5894    {
5895        write_characters_element(writer, name, &obj.to_string())
5896    }
5897}
5898
5899#[allow(dead_code)]
5900struct ResourceRecordSetsDeserializer;
5901impl ResourceRecordSetsDeserializer {
5902    #[allow(dead_code, unused_variables)]
5903    fn deserialize<T: Peek + Next>(
5904        tag_name: &str,
5905        stack: &mut T,
5906    ) -> Result<Vec<ResourceRecordSet>, XmlParseError> {
5907        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
5908            if name == "ResourceRecordSet" {
5909                obj.push(ResourceRecordSetDeserializer::deserialize(
5910                    "ResourceRecordSet",
5911                    stack,
5912                )?);
5913            } else {
5914                skip_tree(stack);
5915            }
5916            Ok(())
5917        })
5918    }
5919}
5920#[allow(dead_code)]
5921struct ResourceRecordsDeserializer;
5922impl ResourceRecordsDeserializer {
5923    #[allow(dead_code, unused_variables)]
5924    fn deserialize<T: Peek + Next>(
5925        tag_name: &str,
5926        stack: &mut T,
5927    ) -> Result<Vec<ResourceRecord>, XmlParseError> {
5928        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
5929            if name == "ResourceRecord" {
5930                obj.push(ResourceRecordDeserializer::deserialize(
5931                    "ResourceRecord",
5932                    stack,
5933                )?);
5934            } else {
5935                skip_tree(stack);
5936            }
5937            Ok(())
5938        })
5939    }
5940}
5941
5942pub struct ResourceRecordsSerializer;
5943impl ResourceRecordsSerializer {
5944    #[allow(unused_variables, warnings)]
5945    pub fn serialize<W>(
5946        mut writer: &mut EventWriter<W>,
5947        name: &str,
5948        obj: &Vec<ResourceRecord>,
5949    ) -> Result<(), xml::writer::Error>
5950    where
5951        W: Write,
5952    {
5953        writer.write(xml::writer::XmlEvent::start_element(name))?;
5954        for element in obj {
5955            ResourceRecordSerializer::serialize(writer, "ResourceRecord", element)?;
5956        }
5957        writer.write(xml::writer::XmlEvent::end_element())?;
5958        Ok(())
5959    }
5960}
5961
5962/// <p>A complex type containing a resource and its associated tags.</p>
5963#[derive(Clone, Debug, Default, PartialEq)]
5964#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
5965pub struct ResourceTagSet {
5966    /// <p>The ID for the specified resource.</p>
5967    pub resource_id: Option<String>,
5968    /// <p><p>The type of the resource.</p> <ul> <li> <p>The resource type for health checks is <code>healthcheck</code>.</p> </li> <li> <p>The resource type for hosted zones is <code>hostedzone</code>.</p> </li> </ul></p>
5969    pub resource_type: Option<String>,
5970    /// <p>The tags associated with the specified resource.</p>
5971    pub tags: Option<Vec<Tag>>,
5972}
5973
5974#[allow(dead_code)]
5975struct ResourceTagSetDeserializer;
5976impl ResourceTagSetDeserializer {
5977    #[allow(dead_code, unused_variables)]
5978    fn deserialize<T: Peek + Next>(
5979        tag_name: &str,
5980        stack: &mut T,
5981    ) -> Result<ResourceTagSet, XmlParseError> {
5982        deserialize_elements::<_, ResourceTagSet, _>(tag_name, stack, |name, stack, obj| {
5983            match name {
5984                "ResourceId" => {
5985                    obj.resource_id =
5986                        Some(TagResourceIdDeserializer::deserialize("ResourceId", stack)?);
5987                }
5988                "ResourceType" => {
5989                    obj.resource_type = Some(TagResourceTypeDeserializer::deserialize(
5990                        "ResourceType",
5991                        stack,
5992                    )?);
5993                }
5994                "Tags" => {
5995                    obj.tags
5996                        .get_or_insert(vec![])
5997                        .extend(TagListDeserializer::deserialize("Tags", stack)?);
5998                }
5999                _ => skip_tree(stack),
6000            }
6001            Ok(())
6002        })
6003    }
6004}
6005#[allow(dead_code)]
6006struct ResourceTagSetListDeserializer;
6007impl ResourceTagSetListDeserializer {
6008    #[allow(dead_code, unused_variables)]
6009    fn deserialize<T: Peek + Next>(
6010        tag_name: &str,
6011        stack: &mut T,
6012    ) -> Result<Vec<ResourceTagSet>, XmlParseError> {
6013        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
6014            if name == "ResourceTagSet" {
6015                obj.push(ResourceTagSetDeserializer::deserialize(
6016                    "ResourceTagSet",
6017                    stack,
6018                )?);
6019            } else {
6020                skip_tree(stack);
6021            }
6022            Ok(())
6023        })
6024    }
6025}
6026/// <p>A complex type that contains the type of limit that you specified in the request and the current value for that limit.</p>
6027#[derive(Clone, Debug, Default, PartialEq)]
6028#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6029pub struct ReusableDelegationSetLimit {
6030    /// <p>The limit that you requested: <code>MAX_ZONES_BY_REUSABLE_DELEGATION_SET</code>, the maximum number of hosted zones that you can associate with the specified reusable delegation set.</p>
6031    pub type_: String,
6032    /// <p>The current value for the <code>MAX_ZONES_BY_REUSABLE_DELEGATION_SET</code> limit.</p>
6033    pub value: i64,
6034}
6035
6036#[allow(dead_code)]
6037struct ReusableDelegationSetLimitDeserializer;
6038impl ReusableDelegationSetLimitDeserializer {
6039    #[allow(dead_code, unused_variables)]
6040    fn deserialize<T: Peek + Next>(
6041        tag_name: &str,
6042        stack: &mut T,
6043    ) -> Result<ReusableDelegationSetLimit, XmlParseError> {
6044        deserialize_elements::<_, ReusableDelegationSetLimit, _>(
6045            tag_name,
6046            stack,
6047            |name, stack, obj| {
6048                match name {
6049                    "Type" => {
6050                        obj.type_ =
6051                            ReusableDelegationSetLimitTypeDeserializer::deserialize("Type", stack)?;
6052                    }
6053                    "Value" => {
6054                        obj.value = LimitValueDeserializer::deserialize("Value", stack)?;
6055                    }
6056                    _ => skip_tree(stack),
6057                }
6058                Ok(())
6059            },
6060        )
6061    }
6062}
6063#[allow(dead_code)]
6064struct ReusableDelegationSetLimitTypeDeserializer;
6065impl ReusableDelegationSetLimitTypeDeserializer {
6066    #[allow(dead_code, unused_variables)]
6067    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6068        xml_util::deserialize_primitive(tag_name, stack, Ok)
6069    }
6070}
6071
6072pub struct ReusableDelegationSetLimitTypeSerializer;
6073impl ReusableDelegationSetLimitTypeSerializer {
6074    #[allow(unused_variables, warnings)]
6075    pub fn serialize<W>(
6076        mut writer: &mut EventWriter<W>,
6077        name: &str,
6078        obj: &String,
6079    ) -> Result<(), xml::writer::Error>
6080    where
6081        W: Write,
6082    {
6083        write_characters_element(writer, name, obj)
6084    }
6085}
6086
6087#[allow(dead_code)]
6088struct SearchStringDeserializer;
6089impl SearchStringDeserializer {
6090    #[allow(dead_code, unused_variables)]
6091    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6092        xml_util::deserialize_primitive(tag_name, stack, Ok)
6093    }
6094}
6095
6096pub struct SearchStringSerializer;
6097impl SearchStringSerializer {
6098    #[allow(unused_variables, warnings)]
6099    pub fn serialize<W>(
6100        mut writer: &mut EventWriter<W>,
6101        name: &str,
6102        obj: &String,
6103    ) -> Result<(), xml::writer::Error>
6104    where
6105        W: Write,
6106    {
6107        write_characters_element(writer, name, obj)
6108    }
6109}
6110
6111#[allow(dead_code)]
6112struct ServicePrincipalDeserializer;
6113impl ServicePrincipalDeserializer {
6114    #[allow(dead_code, unused_variables)]
6115    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6116        xml_util::deserialize_primitive(tag_name, stack, Ok)
6117    }
6118}
6119#[allow(dead_code)]
6120struct StatisticDeserializer;
6121impl StatisticDeserializer {
6122    #[allow(dead_code, unused_variables)]
6123    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6124        xml_util::deserialize_primitive(tag_name, stack, Ok)
6125    }
6126}
6127#[allow(dead_code)]
6128struct StatusDeserializer;
6129impl StatusDeserializer {
6130    #[allow(dead_code, unused_variables)]
6131    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6132        xml_util::deserialize_primitive(tag_name, stack, Ok)
6133    }
6134}
6135/// <p>A complex type that contains the status that one Amazon Route 53 health checker reports and the time of the health check.</p>
6136#[derive(Clone, Debug, Default, PartialEq)]
6137#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6138pub struct StatusReport {
6139    /// <p>The date and time that the health checker performed the health check in <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601 format</a> and Coordinated Universal Time (UTC). For example, the value <code>2017-03-27T17:48:16.751Z</code> represents March 27, 2017 at 17:48:16.751 UTC.</p>
6140    pub checked_time: Option<String>,
6141    /// <p>A description of the status of the health check endpoint as reported by one of the Amazon Route 53 health checkers.</p>
6142    pub status: Option<String>,
6143}
6144
6145#[allow(dead_code)]
6146struct StatusReportDeserializer;
6147impl StatusReportDeserializer {
6148    #[allow(dead_code, unused_variables)]
6149    fn deserialize<T: Peek + Next>(
6150        tag_name: &str,
6151        stack: &mut T,
6152    ) -> Result<StatusReport, XmlParseError> {
6153        deserialize_elements::<_, StatusReport, _>(tag_name, stack, |name, stack, obj| {
6154            match name {
6155                "CheckedTime" => {
6156                    obj.checked_time =
6157                        Some(TimeStampDeserializer::deserialize("CheckedTime", stack)?);
6158                }
6159                "Status" => {
6160                    obj.status = Some(StatusDeserializer::deserialize("Status", stack)?);
6161                }
6162                _ => skip_tree(stack),
6163            }
6164            Ok(())
6165        })
6166    }
6167}
6168
6169pub struct SubnetMaskSerializer;
6170impl SubnetMaskSerializer {
6171    #[allow(unused_variables, warnings)]
6172    pub fn serialize<W>(
6173        mut writer: &mut EventWriter<W>,
6174        name: &str,
6175        obj: &String,
6176    ) -> Result<(), xml::writer::Error>
6177    where
6178        W: Write,
6179    {
6180        write_characters_element(writer, name, obj)
6181    }
6182}
6183
6184#[allow(dead_code)]
6185struct TTLDeserializer;
6186impl TTLDeserializer {
6187    #[allow(dead_code, unused_variables)]
6188    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
6189        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
6190    }
6191}
6192
6193pub struct TTLSerializer;
6194impl TTLSerializer {
6195    #[allow(unused_variables, warnings)]
6196    pub fn serialize<W>(
6197        mut writer: &mut EventWriter<W>,
6198        name: &str,
6199        obj: &i64,
6200    ) -> Result<(), xml::writer::Error>
6201    where
6202        W: Write,
6203    {
6204        write_characters_element(writer, name, &obj.to_string())
6205    }
6206}
6207
6208/// <p>A complex type that contains information about a tag that you want to add or edit for the specified health check or hosted zone.</p>
6209#[derive(Clone, Debug, Default, PartialEq)]
6210#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6211#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6212pub struct Tag {
6213    /// <p><p>The value of <code>Key</code> depends on the operation that you want to perform:</p> <ul> <li> <p> <b>Add a tag to a health check or hosted zone</b>: <code>Key</code> is the name that you want to give the new tag.</p> </li> <li> <p> <b>Edit a tag</b>: <code>Key</code> is the name of the tag that you want to change the <code>Value</code> for.</p> </li> <li> <p> <b> Delete a key</b>: <code>Key</code> is the name of the tag you want to remove.</p> </li> <li> <p> <b>Give a name to a health check</b>: Edit the default <code>Name</code> tag. In the Amazon Route 53 console, the list of your health checks includes a <b>Name</b> column that lets you see the name that you&#39;ve given to each health check.</p> </li> </ul></p>
6214    pub key: Option<String>,
6215    /// <p><p>The value of <code>Value</code> depends on the operation that you want to perform:</p> <ul> <li> <p> <b>Add a tag to a health check or hosted zone</b>: <code>Value</code> is the value that you want to give the new tag.</p> </li> <li> <p> <b>Edit a tag</b>: <code>Value</code> is the new value that you want to assign the tag.</p> </li> </ul></p>
6216    pub value: Option<String>,
6217}
6218
6219#[allow(dead_code)]
6220struct TagDeserializer;
6221impl TagDeserializer {
6222    #[allow(dead_code, unused_variables)]
6223    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Tag, XmlParseError> {
6224        deserialize_elements::<_, Tag, _>(tag_name, stack, |name, stack, obj| {
6225            match name {
6226                "Key" => {
6227                    obj.key = Some(TagKeyDeserializer::deserialize("Key", stack)?);
6228                }
6229                "Value" => {
6230                    obj.value = Some(TagValueDeserializer::deserialize("Value", stack)?);
6231                }
6232                _ => skip_tree(stack),
6233            }
6234            Ok(())
6235        })
6236    }
6237}
6238
6239pub struct TagSerializer;
6240impl TagSerializer {
6241    #[allow(unused_variables, warnings)]
6242    pub fn serialize<W>(
6243        mut writer: &mut EventWriter<W>,
6244        name: &str,
6245        obj: &Tag,
6246    ) -> Result<(), xml::writer::Error>
6247    where
6248        W: Write,
6249    {
6250        writer.write(xml::writer::XmlEvent::start_element(name))?;
6251        if let Some(ref value) = obj.key {
6252            write_characters_element(writer, "Key", &value.to_string())?;
6253        }
6254        if let Some(ref value) = obj.value {
6255            write_characters_element(writer, "Value", &value.to_string())?;
6256        }
6257        writer.write(xml::writer::XmlEvent::end_element())
6258    }
6259}
6260
6261#[allow(dead_code)]
6262struct TagKeyDeserializer;
6263impl TagKeyDeserializer {
6264    #[allow(dead_code, unused_variables)]
6265    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6266        xml_util::deserialize_primitive(tag_name, stack, Ok)
6267    }
6268}
6269
6270pub struct TagKeySerializer;
6271impl TagKeySerializer {
6272    #[allow(unused_variables, warnings)]
6273    pub fn serialize<W>(
6274        mut writer: &mut EventWriter<W>,
6275        name: &str,
6276        obj: &String,
6277    ) -> Result<(), xml::writer::Error>
6278    where
6279        W: Write,
6280    {
6281        write_characters_element(writer, name, obj)
6282    }
6283}
6284
6285pub struct TagKeyListSerializer;
6286impl TagKeyListSerializer {
6287    #[allow(unused_variables, warnings)]
6288    pub fn serialize<W>(
6289        mut writer: &mut EventWriter<W>,
6290        name: &str,
6291        obj: &Vec<String>,
6292    ) -> Result<(), xml::writer::Error>
6293    where
6294        W: Write,
6295    {
6296        writer.write(xml::writer::XmlEvent::start_element(name))?;
6297        for element in obj {
6298            TagKeySerializer::serialize(writer, "Key", element)?;
6299        }
6300        writer.write(xml::writer::XmlEvent::end_element())?;
6301        Ok(())
6302    }
6303}
6304
6305#[allow(dead_code)]
6306struct TagListDeserializer;
6307impl TagListDeserializer {
6308    #[allow(dead_code, unused_variables)]
6309    fn deserialize<T: Peek + Next>(
6310        tag_name: &str,
6311        stack: &mut T,
6312    ) -> Result<Vec<Tag>, XmlParseError> {
6313        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
6314            if name == "Tag" {
6315                obj.push(TagDeserializer::deserialize("Tag", stack)?);
6316            } else {
6317                skip_tree(stack);
6318            }
6319            Ok(())
6320        })
6321    }
6322}
6323
6324pub struct TagListSerializer;
6325impl TagListSerializer {
6326    #[allow(unused_variables, warnings)]
6327    pub fn serialize<W>(
6328        mut writer: &mut EventWriter<W>,
6329        name: &str,
6330        obj: &Vec<Tag>,
6331    ) -> Result<(), xml::writer::Error>
6332    where
6333        W: Write,
6334    {
6335        writer.write(xml::writer::XmlEvent::start_element(name))?;
6336        for element in obj {
6337            TagSerializer::serialize(writer, "Tag", element)?;
6338        }
6339        writer.write(xml::writer::XmlEvent::end_element())?;
6340        Ok(())
6341    }
6342}
6343
6344#[allow(dead_code)]
6345struct TagResourceIdDeserializer;
6346impl TagResourceIdDeserializer {
6347    #[allow(dead_code, unused_variables)]
6348    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6349        xml_util::deserialize_primitive(tag_name, stack, Ok)
6350    }
6351}
6352
6353pub struct TagResourceIdSerializer;
6354impl TagResourceIdSerializer {
6355    #[allow(unused_variables, warnings)]
6356    pub fn serialize<W>(
6357        mut writer: &mut EventWriter<W>,
6358        name: &str,
6359        obj: &String,
6360    ) -> Result<(), xml::writer::Error>
6361    where
6362        W: Write,
6363    {
6364        write_characters_element(writer, name, obj)
6365    }
6366}
6367
6368pub struct TagResourceIdListSerializer;
6369impl TagResourceIdListSerializer {
6370    #[allow(unused_variables, warnings)]
6371    pub fn serialize<W>(
6372        mut writer: &mut EventWriter<W>,
6373        name: &str,
6374        obj: &Vec<String>,
6375    ) -> Result<(), xml::writer::Error>
6376    where
6377        W: Write,
6378    {
6379        writer.write(xml::writer::XmlEvent::start_element(name))?;
6380        for element in obj {
6381            TagResourceIdSerializer::serialize(writer, "ResourceId", element)?;
6382        }
6383        writer.write(xml::writer::XmlEvent::end_element())?;
6384        Ok(())
6385    }
6386}
6387
6388#[allow(dead_code)]
6389struct TagResourceTypeDeserializer;
6390impl TagResourceTypeDeserializer {
6391    #[allow(dead_code, unused_variables)]
6392    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6393        xml_util::deserialize_primitive(tag_name, stack, Ok)
6394    }
6395}
6396
6397pub struct TagResourceTypeSerializer;
6398impl TagResourceTypeSerializer {
6399    #[allow(unused_variables, warnings)]
6400    pub fn serialize<W>(
6401        mut writer: &mut EventWriter<W>,
6402        name: &str,
6403        obj: &String,
6404    ) -> Result<(), xml::writer::Error>
6405    where
6406        W: Write,
6407    {
6408        write_characters_element(writer, name, obj)
6409    }
6410}
6411
6412#[allow(dead_code)]
6413struct TagValueDeserializer;
6414impl TagValueDeserializer {
6415    #[allow(dead_code, unused_variables)]
6416    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6417        xml_util::deserialize_primitive(tag_name, stack, Ok)
6418    }
6419}
6420
6421pub struct TagValueSerializer;
6422impl TagValueSerializer {
6423    #[allow(unused_variables, warnings)]
6424    pub fn serialize<W>(
6425        mut writer: &mut EventWriter<W>,
6426        name: &str,
6427        obj: &String,
6428    ) -> Result<(), xml::writer::Error>
6429    where
6430        W: Write,
6431    {
6432        write_characters_element(writer, name, obj)
6433    }
6434}
6435
6436/// <p>Gets the value that Amazon Route 53 returns in response to a DNS request for a specified record name and type. You can optionally specify the IP address of a DNS resolver, an EDNS0 client subnet IP address, and a subnet mask. </p>
6437#[derive(Clone, Debug, Default, PartialEq)]
6438#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6439pub struct TestDNSAnswerRequest {
6440    /// <p>If the resolver that you specified for resolverip supports EDNS0, specify the IPv4 or IPv6 address of a client in the applicable location, for example, <code>192.0.2.44</code> or <code>2001:db8:85a3::8a2e:370:7334</code>.</p>
6441    pub edns0_client_subnet_ip: Option<String>,
6442    /// <p><p>If you specify an IP address for <code>edns0clientsubnetip</code>, you can optionally specify the number of bits of the IP address that you want the checking tool to include in the DNS query. For example, if you specify <code>192.0.2.44</code> for <code>edns0clientsubnetip</code> and <code>24</code> for <code>edns0clientsubnetmask</code>, the checking tool will simulate a request from 192.0.2.0/24. The default value is 24 bits for IPv4 addresses and 64 bits for IPv6 addresses.</p> <p>The range of valid values depends on whether <code>edns0clientsubnetip</code> is an IPv4 or an IPv6 address:</p> <ul> <li> <p> <b>IPv4</b>: Specify a value between 0 and 32</p> </li> <li> <p> <b>IPv6</b>: Specify a value between 0 and 128</p> </li> </ul></p>
6443    pub edns0_client_subnet_mask: Option<String>,
6444    /// <p>The ID of the hosted zone that you want Amazon Route 53 to simulate a query for.</p>
6445    pub hosted_zone_id: String,
6446    /// <p>The name of the resource record set that you want Amazon Route 53 to simulate a query for.</p>
6447    pub record_name: String,
6448    /// <p>The type of the resource record set.</p>
6449    pub record_type: String,
6450    /// <p>If you want to simulate a request from a specific DNS resolver, specify the IP address for that resolver. If you omit this value, <code>TestDnsAnswer</code> uses the IP address of a DNS resolver in the AWS US East (N. Virginia) Region (<code>us-east-1</code>).</p>
6451    pub resolver_ip: Option<String>,
6452}
6453
6454/// <p>A complex type that contains the response to a <code>TestDNSAnswer</code> request. </p>
6455#[derive(Clone, Debug, Default, PartialEq)]
6456#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6457pub struct TestDNSAnswerResponse {
6458    /// <p>The Amazon Route 53 name server used to respond to the request.</p>
6459    pub nameserver: String,
6460    /// <p>The protocol that Amazon Route 53 used to respond to the request, either <code>UDP</code> or <code>TCP</code>. </p>
6461    pub protocol: String,
6462    /// <p>A list that contains values that Amazon Route 53 returned for this resource record set.</p>
6463    pub record_data: Vec<String>,
6464    /// <p>The name of the resource record set that you submitted a request for.</p>
6465    pub record_name: String,
6466    /// <p>The type of the resource record set that you submitted a request for.</p>
6467    pub record_type: String,
6468    /// <p>A code that indicates whether the request is valid or not. The most common response code is <code>NOERROR</code>, meaning that the request is valid. If the response is not valid, Amazon Route 53 returns a response code that describes the error. For a list of possible response codes, see <a href="http://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6">DNS RCODES</a> on the IANA website. </p>
6469    pub response_code: String,
6470}
6471
6472#[allow(dead_code)]
6473struct TestDNSAnswerResponseDeserializer;
6474impl TestDNSAnswerResponseDeserializer {
6475    #[allow(dead_code, unused_variables)]
6476    fn deserialize<T: Peek + Next>(
6477        tag_name: &str,
6478        stack: &mut T,
6479    ) -> Result<TestDNSAnswerResponse, XmlParseError> {
6480        deserialize_elements::<_, TestDNSAnswerResponse, _>(tag_name, stack, |name, stack, obj| {
6481            match name {
6482                "Nameserver" => {
6483                    obj.nameserver = NameserverDeserializer::deserialize("Nameserver", stack)?;
6484                }
6485                "Protocol" => {
6486                    obj.protocol = TransportProtocolDeserializer::deserialize("Protocol", stack)?;
6487                }
6488                "RecordData" => {
6489                    obj.record_data
6490                        .extend(RecordDataDeserializer::deserialize("RecordData", stack)?);
6491                }
6492                "RecordName" => {
6493                    obj.record_name = DNSNameDeserializer::deserialize("RecordName", stack)?;
6494                }
6495                "RecordType" => {
6496                    obj.record_type = RRTypeDeserializer::deserialize("RecordType", stack)?;
6497                }
6498                "ResponseCode" => {
6499                    obj.response_code = DNSRCodeDeserializer::deserialize("ResponseCode", stack)?;
6500                }
6501                _ => skip_tree(stack),
6502            }
6503            Ok(())
6504        })
6505    }
6506}
6507#[allow(dead_code)]
6508struct ThresholdDeserializer;
6509impl ThresholdDeserializer {
6510    #[allow(dead_code, unused_variables)]
6511    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<f64, XmlParseError> {
6512        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(f64::from_str(&s).unwrap()))
6513    }
6514}
6515#[allow(dead_code)]
6516struct TimeStampDeserializer;
6517impl TimeStampDeserializer {
6518    #[allow(dead_code, unused_variables)]
6519    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6520        xml_util::deserialize_primitive(tag_name, stack, Ok)
6521    }
6522}
6523#[allow(dead_code)]
6524struct TrafficPoliciesDeserializer;
6525impl TrafficPoliciesDeserializer {
6526    #[allow(dead_code, unused_variables)]
6527    fn deserialize<T: Peek + Next>(
6528        tag_name: &str,
6529        stack: &mut T,
6530    ) -> Result<Vec<TrafficPolicy>, XmlParseError> {
6531        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
6532            if name == "TrafficPolicy" {
6533                obj.push(TrafficPolicyDeserializer::deserialize(
6534                    "TrafficPolicy",
6535                    stack,
6536                )?);
6537            } else {
6538                skip_tree(stack);
6539            }
6540            Ok(())
6541        })
6542    }
6543}
6544/// <p>A complex type that contains settings for a traffic policy.</p>
6545#[derive(Clone, Debug, Default, PartialEq)]
6546#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6547pub struct TrafficPolicy {
6548    /// <p>The comment that you specify in the <code>CreateTrafficPolicy</code> request, if any.</p>
6549    pub comment: Option<String>,
6550    /// <p>The definition of a traffic policy in JSON format. You specify the JSON document to use for a new traffic policy in the <code>CreateTrafficPolicy</code> request. For more information about the JSON format, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/api-policies-traffic-policy-document-format.html">Traffic Policy Document Format</a>.</p>
6551    pub document: String,
6552    /// <p>The ID that Amazon Route 53 assigned to a traffic policy when you created it.</p>
6553    pub id: String,
6554    /// <p>The name that you specified when you created the traffic policy.</p>
6555    pub name: String,
6556    /// <p>The DNS type of the resource record sets that Amazon Route 53 creates when you use a traffic policy to create a traffic policy instance.</p>
6557    pub type_: String,
6558    /// <p>The version number that Amazon Route 53 assigns to a traffic policy. For a new traffic policy, the value of <code>Version</code> is always 1.</p>
6559    pub version: i64,
6560}
6561
6562#[allow(dead_code)]
6563struct TrafficPolicyDeserializer;
6564impl TrafficPolicyDeserializer {
6565    #[allow(dead_code, unused_variables)]
6566    fn deserialize<T: Peek + Next>(
6567        tag_name: &str,
6568        stack: &mut T,
6569    ) -> Result<TrafficPolicy, XmlParseError> {
6570        deserialize_elements::<_, TrafficPolicy, _>(tag_name, stack, |name, stack, obj| {
6571            match name {
6572                "Comment" => {
6573                    obj.comment = Some(TrafficPolicyCommentDeserializer::deserialize(
6574                        "Comment", stack,
6575                    )?);
6576                }
6577                "Document" => {
6578                    obj.document =
6579                        TrafficPolicyDocumentDeserializer::deserialize("Document", stack)?;
6580                }
6581                "Id" => {
6582                    obj.id = TrafficPolicyIdDeserializer::deserialize("Id", stack)?;
6583                }
6584                "Name" => {
6585                    obj.name = TrafficPolicyNameDeserializer::deserialize("Name", stack)?;
6586                }
6587                "Type" => {
6588                    obj.type_ = RRTypeDeserializer::deserialize("Type", stack)?;
6589                }
6590                "Version" => {
6591                    obj.version = TrafficPolicyVersionDeserializer::deserialize("Version", stack)?;
6592                }
6593                _ => skip_tree(stack),
6594            }
6595            Ok(())
6596        })
6597    }
6598}
6599#[allow(dead_code)]
6600struct TrafficPolicyCommentDeserializer;
6601impl TrafficPolicyCommentDeserializer {
6602    #[allow(dead_code, unused_variables)]
6603    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6604        xml_util::deserialize_primitive(tag_name, stack, Ok)
6605    }
6606}
6607
6608pub struct TrafficPolicyCommentSerializer;
6609impl TrafficPolicyCommentSerializer {
6610    #[allow(unused_variables, warnings)]
6611    pub fn serialize<W>(
6612        mut writer: &mut EventWriter<W>,
6613        name: &str,
6614        obj: &String,
6615    ) -> Result<(), xml::writer::Error>
6616    where
6617        W: Write,
6618    {
6619        write_characters_element(writer, name, obj)
6620    }
6621}
6622
6623#[allow(dead_code)]
6624struct TrafficPolicyDocumentDeserializer;
6625impl TrafficPolicyDocumentDeserializer {
6626    #[allow(dead_code, unused_variables)]
6627    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6628        xml_util::deserialize_primitive(tag_name, stack, Ok)
6629    }
6630}
6631
6632pub struct TrafficPolicyDocumentSerializer;
6633impl TrafficPolicyDocumentSerializer {
6634    #[allow(unused_variables, warnings)]
6635    pub fn serialize<W>(
6636        mut writer: &mut EventWriter<W>,
6637        name: &str,
6638        obj: &String,
6639    ) -> Result<(), xml::writer::Error>
6640    where
6641        W: Write,
6642    {
6643        write_characters_element(writer, name, obj)
6644    }
6645}
6646
6647#[allow(dead_code)]
6648struct TrafficPolicyIdDeserializer;
6649impl TrafficPolicyIdDeserializer {
6650    #[allow(dead_code, unused_variables)]
6651    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6652        xml_util::deserialize_primitive(tag_name, stack, Ok)
6653    }
6654}
6655
6656pub struct TrafficPolicyIdSerializer;
6657impl TrafficPolicyIdSerializer {
6658    #[allow(unused_variables, warnings)]
6659    pub fn serialize<W>(
6660        mut writer: &mut EventWriter<W>,
6661        name: &str,
6662        obj: &String,
6663    ) -> Result<(), xml::writer::Error>
6664    where
6665        W: Write,
6666    {
6667        write_characters_element(writer, name, obj)
6668    }
6669}
6670
6671/// <p>A complex type that contains settings for the new traffic policy instance.</p>
6672#[derive(Clone, Debug, Default, PartialEq)]
6673#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6674pub struct TrafficPolicyInstance {
6675    /// <p>The ID of the hosted zone that Amazon Route 53 created resource record sets in.</p>
6676    pub hosted_zone_id: String,
6677    /// <p>The ID that Amazon Route 53 assigned to the new traffic policy instance.</p>
6678    pub id: String,
6679    /// <p>If <code>State</code> is <code>Failed</code>, an explanation of the reason for the failure. If <code>State</code> is another value, <code>Message</code> is empty.</p>
6680    pub message: String,
6681    /// <p>The DNS name, such as www.example.com, for which Amazon Route 53 responds to queries by using the resource record sets that are associated with this traffic policy instance. </p>
6682    pub name: String,
6683    /// <p><p>The value of <code>State</code> is one of the following values:</p> <dl> <dt>Applied</dt> <dd> <p>Amazon Route 53 has finished creating resource record sets, and changes have propagated to all Route 53 edge locations.</p> </dd> <dt>Creating</dt> <dd> <p>Route 53 is creating the resource record sets. Use <code>GetTrafficPolicyInstance</code> to confirm that the <code>CreateTrafficPolicyInstance</code> request completed successfully.</p> </dd> <dt>Failed</dt> <dd> <p>Route 53 wasn&#39;t able to create or update the resource record sets. When the value of <code>State</code> is <code>Failed</code>, see <code>Message</code> for an explanation of what caused the request to fail.</p> </dd> </dl></p>
6684    pub state: String,
6685    /// <p>The TTL that Amazon Route 53 assigned to all of the resource record sets that it created in the specified hosted zone.</p>
6686    pub ttl: i64,
6687    /// <p>The ID of the traffic policy that Amazon Route 53 used to create resource record sets in the specified hosted zone.</p>
6688    pub traffic_policy_id: String,
6689    /// <p>The DNS type that Amazon Route 53 assigned to all of the resource record sets that it created for this traffic policy instance. </p>
6690    pub traffic_policy_type: String,
6691    /// <p>The version of the traffic policy that Amazon Route 53 used to create resource record sets in the specified hosted zone.</p>
6692    pub traffic_policy_version: i64,
6693}
6694
6695#[allow(dead_code)]
6696struct TrafficPolicyInstanceDeserializer;
6697impl TrafficPolicyInstanceDeserializer {
6698    #[allow(dead_code, unused_variables)]
6699    fn deserialize<T: Peek + Next>(
6700        tag_name: &str,
6701        stack: &mut T,
6702    ) -> Result<TrafficPolicyInstance, XmlParseError> {
6703        deserialize_elements::<_, TrafficPolicyInstance, _>(tag_name, stack, |name, stack, obj| {
6704            match name {
6705                "HostedZoneId" => {
6706                    obj.hosted_zone_id =
6707                        ResourceIdDeserializer::deserialize("HostedZoneId", stack)?;
6708                }
6709                "Id" => {
6710                    obj.id = TrafficPolicyInstanceIdDeserializer::deserialize("Id", stack)?;
6711                }
6712                "Message" => {
6713                    obj.message = MessageDeserializer::deserialize("Message", stack)?;
6714                }
6715                "Name" => {
6716                    obj.name = DNSNameDeserializer::deserialize("Name", stack)?;
6717                }
6718                "State" => {
6719                    obj.state =
6720                        TrafficPolicyInstanceStateDeserializer::deserialize("State", stack)?;
6721                }
6722                "TTL" => {
6723                    obj.ttl = TTLDeserializer::deserialize("TTL", stack)?;
6724                }
6725                "TrafficPolicyId" => {
6726                    obj.traffic_policy_id =
6727                        TrafficPolicyIdDeserializer::deserialize("TrafficPolicyId", stack)?;
6728                }
6729                "TrafficPolicyType" => {
6730                    obj.traffic_policy_type =
6731                        RRTypeDeserializer::deserialize("TrafficPolicyType", stack)?;
6732                }
6733                "TrafficPolicyVersion" => {
6734                    obj.traffic_policy_version = TrafficPolicyVersionDeserializer::deserialize(
6735                        "TrafficPolicyVersion",
6736                        stack,
6737                    )?;
6738                }
6739                _ => skip_tree(stack),
6740            }
6741            Ok(())
6742        })
6743    }
6744}
6745#[allow(dead_code)]
6746struct TrafficPolicyInstanceCountDeserializer;
6747impl TrafficPolicyInstanceCountDeserializer {
6748    #[allow(dead_code, unused_variables)]
6749    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
6750        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
6751    }
6752}
6753#[allow(dead_code)]
6754struct TrafficPolicyInstanceIdDeserializer;
6755impl TrafficPolicyInstanceIdDeserializer {
6756    #[allow(dead_code, unused_variables)]
6757    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6758        xml_util::deserialize_primitive(tag_name, stack, Ok)
6759    }
6760}
6761
6762pub struct TrafficPolicyInstanceIdSerializer;
6763impl TrafficPolicyInstanceIdSerializer {
6764    #[allow(unused_variables, warnings)]
6765    pub fn serialize<W>(
6766        mut writer: &mut EventWriter<W>,
6767        name: &str,
6768        obj: &String,
6769    ) -> Result<(), xml::writer::Error>
6770    where
6771        W: Write,
6772    {
6773        write_characters_element(writer, name, obj)
6774    }
6775}
6776
6777#[allow(dead_code)]
6778struct TrafficPolicyInstanceStateDeserializer;
6779impl TrafficPolicyInstanceStateDeserializer {
6780    #[allow(dead_code, unused_variables)]
6781    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6782        xml_util::deserialize_primitive(tag_name, stack, Ok)
6783    }
6784}
6785#[allow(dead_code)]
6786struct TrafficPolicyInstancesDeserializer;
6787impl TrafficPolicyInstancesDeserializer {
6788    #[allow(dead_code, unused_variables)]
6789    fn deserialize<T: Peek + Next>(
6790        tag_name: &str,
6791        stack: &mut T,
6792    ) -> Result<Vec<TrafficPolicyInstance>, XmlParseError> {
6793        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
6794            if name == "TrafficPolicyInstance" {
6795                obj.push(TrafficPolicyInstanceDeserializer::deserialize(
6796                    "TrafficPolicyInstance",
6797                    stack,
6798                )?);
6799            } else {
6800                skip_tree(stack);
6801            }
6802            Ok(())
6803        })
6804    }
6805}
6806#[allow(dead_code)]
6807struct TrafficPolicyNameDeserializer;
6808impl TrafficPolicyNameDeserializer {
6809    #[allow(dead_code, unused_variables)]
6810    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6811        xml_util::deserialize_primitive(tag_name, stack, Ok)
6812    }
6813}
6814
6815pub struct TrafficPolicyNameSerializer;
6816impl TrafficPolicyNameSerializer {
6817    #[allow(unused_variables, warnings)]
6818    pub fn serialize<W>(
6819        mut writer: &mut EventWriter<W>,
6820        name: &str,
6821        obj: &String,
6822    ) -> Result<(), xml::writer::Error>
6823    where
6824        W: Write,
6825    {
6826        write_characters_element(writer, name, obj)
6827    }
6828}
6829
6830#[allow(dead_code)]
6831struct TrafficPolicySummariesDeserializer;
6832impl TrafficPolicySummariesDeserializer {
6833    #[allow(dead_code, unused_variables)]
6834    fn deserialize<T: Peek + Next>(
6835        tag_name: &str,
6836        stack: &mut T,
6837    ) -> Result<Vec<TrafficPolicySummary>, XmlParseError> {
6838        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
6839            if name == "TrafficPolicySummary" {
6840                obj.push(TrafficPolicySummaryDeserializer::deserialize(
6841                    "TrafficPolicySummary",
6842                    stack,
6843                )?);
6844            } else {
6845                skip_tree(stack);
6846            }
6847            Ok(())
6848        })
6849    }
6850}
6851/// <p>A complex type that contains information about the latest version of one traffic policy that is associated with the current AWS account.</p>
6852#[derive(Clone, Debug, Default, PartialEq)]
6853#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
6854pub struct TrafficPolicySummary {
6855    /// <p>The ID that Amazon Route 53 assigned to the traffic policy when you created it.</p>
6856    pub id: String,
6857    /// <p>The version number of the latest version of the traffic policy.</p>
6858    pub latest_version: i64,
6859    /// <p>The name that you specified for the traffic policy when you created it.</p>
6860    pub name: String,
6861    /// <p>The number of traffic policies that are associated with the current AWS account.</p>
6862    pub traffic_policy_count: i64,
6863    /// <p>The DNS type of the resource record sets that Amazon Route 53 creates when you use a traffic policy to create a traffic policy instance.</p>
6864    pub type_: String,
6865}
6866
6867#[allow(dead_code)]
6868struct TrafficPolicySummaryDeserializer;
6869impl TrafficPolicySummaryDeserializer {
6870    #[allow(dead_code, unused_variables)]
6871    fn deserialize<T: Peek + Next>(
6872        tag_name: &str,
6873        stack: &mut T,
6874    ) -> Result<TrafficPolicySummary, XmlParseError> {
6875        deserialize_elements::<_, TrafficPolicySummary, _>(tag_name, stack, |name, stack, obj| {
6876            match name {
6877                "Id" => {
6878                    obj.id = TrafficPolicyIdDeserializer::deserialize("Id", stack)?;
6879                }
6880                "LatestVersion" => {
6881                    obj.latest_version =
6882                        TrafficPolicyVersionDeserializer::deserialize("LatestVersion", stack)?;
6883                }
6884                "Name" => {
6885                    obj.name = TrafficPolicyNameDeserializer::deserialize("Name", stack)?;
6886                }
6887                "TrafficPolicyCount" => {
6888                    obj.traffic_policy_count =
6889                        TrafficPolicyVersionDeserializer::deserialize("TrafficPolicyCount", stack)?;
6890                }
6891                "Type" => {
6892                    obj.type_ = RRTypeDeserializer::deserialize("Type", stack)?;
6893                }
6894                _ => skip_tree(stack),
6895            }
6896            Ok(())
6897        })
6898    }
6899}
6900#[allow(dead_code)]
6901struct TrafficPolicyVersionDeserializer;
6902impl TrafficPolicyVersionDeserializer {
6903    #[allow(dead_code, unused_variables)]
6904    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
6905        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
6906    }
6907}
6908
6909pub struct TrafficPolicyVersionSerializer;
6910impl TrafficPolicyVersionSerializer {
6911    #[allow(unused_variables, warnings)]
6912    pub fn serialize<W>(
6913        mut writer: &mut EventWriter<W>,
6914        name: &str,
6915        obj: &i64,
6916    ) -> Result<(), xml::writer::Error>
6917    where
6918        W: Write,
6919    {
6920        write_characters_element(writer, name, &obj.to_string())
6921    }
6922}
6923
6924#[allow(dead_code)]
6925struct TrafficPolicyVersionMarkerDeserializer;
6926impl TrafficPolicyVersionMarkerDeserializer {
6927    #[allow(dead_code, unused_variables)]
6928    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6929        xml_util::deserialize_primitive(tag_name, stack, Ok)
6930    }
6931}
6932
6933pub struct TrafficPolicyVersionMarkerSerializer;
6934impl TrafficPolicyVersionMarkerSerializer {
6935    #[allow(unused_variables, warnings)]
6936    pub fn serialize<W>(
6937        mut writer: &mut EventWriter<W>,
6938        name: &str,
6939        obj: &String,
6940    ) -> Result<(), xml::writer::Error>
6941    where
6942        W: Write,
6943    {
6944        write_characters_element(writer, name, obj)
6945    }
6946}
6947
6948#[allow(dead_code)]
6949struct TransportProtocolDeserializer;
6950impl TransportProtocolDeserializer {
6951    #[allow(dead_code, unused_variables)]
6952    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
6953        xml_util::deserialize_primitive(tag_name, stack, Ok)
6954    }
6955}
6956/// <p>A complex type that contains information about a request to update a health check.</p>
6957#[derive(Clone, Debug, Default, PartialEq)]
6958#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6959pub struct UpdateHealthCheckRequest {
6960    /// <p>A complex type that identifies the CloudWatch alarm that you want Amazon Route 53 health checkers to use to determine whether the specified health check is healthy.</p>
6961    pub alarm_identifier: Option<AlarmIdentifier>,
6962    /// <p>A complex type that contains one <code>ChildHealthCheck</code> element for each health check that you want to associate with a <code>CALCULATED</code> health check.</p>
6963    pub child_health_checks: Option<Vec<String>>,
6964    /// <p>Stops Route 53 from performing health checks. When you disable a health check, here's what happens:</p> <ul> <li> <p> <b>Health checks that check the health of endpoints:</b> Route 53 stops submitting requests to your application, server, or other resource.</p> </li> <li> <p> <b>Calculated health checks:</b> Route 53 stops aggregating the status of the referenced health checks.</p> </li> <li> <p> <b>Health checks that monitor CloudWatch alarms:</b> Route 53 stops monitoring the corresponding CloudWatch metrics.</p> </li> </ul> <p>After you disable a health check, Route 53 considers the status of the health check to always be healthy. If you configured DNS failover, Route 53 continues to route traffic to the corresponding resources. If you want to stop routing traffic to a resource, change the value of <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-Inverted">Inverted</a>. </p> <p>Charges for a health check still apply when the health check is disabled. For more information, see <a href="http://aws.amazon.com/route53/pricing/">Amazon Route 53 Pricing</a>.</p>
6965    pub disabled: Option<bool>,
6966    /// <p>Specify whether you want Amazon Route 53 to send the value of <code>FullyQualifiedDomainName</code> to the endpoint in the <code>client_hello</code> message during <code>TLS</code> negotiation. This allows the endpoint to respond to <code>HTTPS</code> health check requests with the applicable SSL/TLS certificate.</p> <p>Some endpoints require that HTTPS requests include the host name in the <code>client_hello</code> message. If you don't enable SNI, the status of the health check will be SSL alert <code>handshake_failure</code>. A health check can also have that status for other reasons. If SNI is enabled and you're still getting the error, check the SSL/TLS configuration on your endpoint and confirm that your certificate is valid.</p> <p>The SSL/TLS certificate on your endpoint includes a domain name in the <code>Common Name</code> field and possibly several more in the <code>Subject Alternative Names</code> field. One of the domain names in the certificate should match the value that you specify for <code>FullyQualifiedDomainName</code>. If the endpoint responds to the <code>client_hello</code> message with a certificate that does not include the domain name that you specified in <code>FullyQualifiedDomainName</code>, a health checker will retry the handshake. In the second attempt, the health checker will omit <code>FullyQualifiedDomainName</code> from the <code>client_hello</code> message.</p>
6967    pub enable_sni: Option<bool>,
6968    /// <p>The number of consecutive health checks that an endpoint must pass or fail for Amazon Route 53 to change the current status of the endpoint from unhealthy to healthy or vice versa. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html">How Amazon Route 53 Determines Whether an Endpoint Is Healthy</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>If you don't specify a value for <code>FailureThreshold</code>, the default value is three health checks.</p>
6969    pub failure_threshold: Option<i64>,
6970    /// <p>Amazon Route 53 behavior depends on whether you specify a value for <code>IPAddress</code>.</p> <note> <p>If a health check already has a value for <code>IPAddress</code>, you can change the value. However, you can't update an existing health check to add or remove the value of <code>IPAddress</code>. </p> </note> <p> <b>If you specify a value for</b> <code>IPAddress</code>:</p> <p>Route 53 sends health check requests to the specified IPv4 or IPv6 address and passes the value of <code>FullyQualifiedDomainName</code> in the <code>Host</code> header for all health checks except TCP health checks. This is typically the fully qualified DNS name of the endpoint on which you want Route 53 to perform health checks.</p> <p>When Route 53 checks the health of an endpoint, here is how it constructs the <code>Host</code> header:</p> <ul> <li> <p>If you specify a value of <code>80</code> for <code>Port</code> and <code>HTTP</code> or <code>HTTP_STR_MATCH</code> for <code>Type</code>, Route 53 passes the value of <code>FullyQualifiedDomainName</code> to the endpoint in the <code>Host</code> header.</p> </li> <li> <p>If you specify a value of <code>443</code> for <code>Port</code> and <code>HTTPS</code> or <code>HTTPS_STR_MATCH</code> for <code>Type</code>, Route 53 passes the value of <code>FullyQualifiedDomainName</code> to the endpoint in the <code>Host</code> header.</p> </li> <li> <p>If you specify another value for <code>Port</code> and any value except <code>TCP</code> for <code>Type</code>, Route 53 passes <i> <code>FullyQualifiedDomainName</code>:<code>Port</code> </i> to the endpoint in the <code>Host</code> header.</p> </li> </ul> <p>If you don't specify a value for <code>FullyQualifiedDomainName</code>, Route 53 substitutes the value of <code>IPAddress</code> in the <code>Host</code> header in each of the above cases.</p> <p> <b>If you don't specify a value for</b> <code>IPAddress</code>:</p> <p>If you don't specify a value for <code>IPAddress</code>, Route 53 sends a DNS request to the domain that you specify in <code>FullyQualifiedDomainName</code> at the interval you specify in <code>RequestInterval</code>. Using an IPv4 address that is returned by DNS, Route 53 then checks the health of the endpoint.</p> <note> <p>If you don't specify a value for <code>IPAddress</code>, Route 53 uses only IPv4 to send health checks to the endpoint. If there's no resource record set with a type of A for the name that you specify for <code>FullyQualifiedDomainName</code>, the health check fails with a "DNS resolution failed" error.</p> </note> <p>If you want to check the health of weighted, latency, or failover resource record sets and you choose to specify the endpoint only by <code>FullyQualifiedDomainName</code>, we recommend that you create a separate health check for each endpoint. For example, create a health check for each HTTP server that is serving content for www.example.com. For the value of <code>FullyQualifiedDomainName</code>, specify the domain name of the server (such as <code>us-east-2-www.example.com</code>), not the name of the resource record sets (www.example.com).</p> <important> <p>In this configuration, if the value of <code>FullyQualifiedDomainName</code> matches the name of the resource record sets and you then associate the health check with those resource record sets, health check results will be unpredictable.</p> </important> <p>In addition, if the value of <code>Type</code> is <code>HTTP</code>, <code>HTTPS</code>, <code>HTTP_STR_MATCH</code>, or <code>HTTPS_STR_MATCH</code>, Route 53 passes the value of <code>FullyQualifiedDomainName</code> in the <code>Host</code> header, as it does when you specify a value for <code>IPAddress</code>. If the value of <code>Type</code> is <code>TCP</code>, Route 53 doesn't pass a <code>Host</code> header.</p>
6971    pub fully_qualified_domain_name: Option<String>,
6972    /// <p>The ID for the health check for which you want detailed information. When you created the health check, <code>CreateHealthCheck</code> returned the ID in the response, in the <code>HealthCheckId</code> element.</p>
6973    pub health_check_id: String,
6974    /// <p><p>A sequential counter that Amazon Route 53 sets to <code>1</code> when you create a health check and increments by 1 each time you update settings for the health check.</p> <p>We recommend that you use <code>GetHealthCheck</code> or <code>ListHealthChecks</code> to get the current value of <code>HealthCheckVersion</code> for the health check that you want to update, and that you include that value in your <code>UpdateHealthCheck</code> request. This prevents Route 53 from overwriting an intervening update:</p> <ul> <li> <p>If the value in the <code>UpdateHealthCheck</code> request matches the value of <code>HealthCheckVersion</code> in the health check, Route 53 updates the health check with the new settings.</p> </li> <li> <p>If the value of <code>HealthCheckVersion</code> in the health check is greater, the health check was changed after you got the version number. Route 53 does not update the health check, and it returns a <code>HealthCheckVersionMismatch</code> error.</p> </li> </ul></p>
6975    pub health_check_version: Option<i64>,
6976    /// <p><p>The number of child health checks that are associated with a <code>CALCULATED</code> health that Amazon Route 53 must consider healthy for the <code>CALCULATED</code> health check to be considered healthy. To specify the child health checks that you want to associate with a <code>CALCULATED</code> health check, use the <code>ChildHealthChecks</code> and <code>ChildHealthCheck</code> elements.</p> <p>Note the following:</p> <ul> <li> <p>If you specify a number greater than the number of child health checks, Route 53 always considers this health check to be unhealthy.</p> </li> <li> <p>If you specify <code>0</code>, Route 53 always considers this health check to be healthy.</p> </li> </ul></p>
6977    pub health_threshold: Option<i64>,
6978    /// <p><p>The IPv4 or IPv6 IP address for the endpoint that you want Amazon Route 53 to perform health checks on. If you don&#39;t specify a value for <code>IPAddress</code>, Route 53 sends a DNS request to resolve the domain name that you specify in <code>FullyQualifiedDomainName</code> at the interval that you specify in <code>RequestInterval</code>. Using an IP address that is returned by DNS, Route 53 then checks the health of the endpoint.</p> <p>Use one of the following formats for the value of <code>IPAddress</code>: </p> <ul> <li> <p> <b>IPv4 address</b>: four values between 0 and 255, separated by periods (.), for example, <code>192.0.2.44</code>.</p> </li> <li> <p> <b>IPv6 address</b>: eight groups of four hexadecimal values, separated by colons (:), for example, <code>2001:0db8:85a3:0000:0000:abcd:0001:2345</code>. You can also shorten IPv6 addresses as described in RFC 5952, for example, <code>2001:db8:85a3::abcd:1:2345</code>.</p> </li> </ul> <p>If the endpoint is an EC2 instance, we recommend that you create an Elastic IP address, associate it with your EC2 instance, and specify the Elastic IP address for <code>IPAddress</code>. This ensures that the IP address of your instance never changes. For more information, see the applicable documentation:</p> <ul> <li> <p>Linux: <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html">Elastic IP Addresses (EIP)</a> in the <i>Amazon EC2 User Guide for Linux Instances</i> </p> </li> <li> <p>Windows: <a href="https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-ip-addresses-eip.html">Elastic IP Addresses (EIP)</a> in the <i>Amazon EC2 User Guide for Windows Instances</i> </p> </li> </ul> <note> <p>If a health check already has a value for <code>IPAddress</code>, you can change the value. However, you can&#39;t update an existing health check to add or remove the value of <code>IPAddress</code>. </p> </note> <p>For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-FullyQualifiedDomainName">FullyQualifiedDomainName</a>. </p> <p>Constraints: Route 53 can&#39;t check the health of endpoints for which the IP address is in local, private, non-routable, or multicast ranges. For more information about IP addresses for which you can&#39;t create health checks, see the following documents:</p> <ul> <li> <p> <a href="https://tools.ietf.org/html/rfc5735">RFC 5735, Special Use IPv4 Addresses</a> </p> </li> <li> <p> <a href="https://tools.ietf.org/html/rfc6598">RFC 6598, IANA-Reserved IPv4 Prefix for Shared Address Space</a> </p> </li> <li> <p> <a href="https://tools.ietf.org/html/rfc5156">RFC 5156, Special-Use IPv6 Addresses</a> </p> </li> </ul></p>
6979    pub ip_address: Option<String>,
6980    /// <p><p>When CloudWatch has insufficient data about the metric to determine the alarm state, the status that you want Amazon Route 53 to assign to the health check:</p> <ul> <li> <p> <code>Healthy</code>: Route 53 considers the health check to be healthy.</p> </li> <li> <p> <code>Unhealthy</code>: Route 53 considers the health check to be unhealthy.</p> </li> <li> <p> <code>LastKnownStatus</code>: Route 53 uses the status of the health check from the last time CloudWatch had sufficient data to determine the alarm state. For new health checks that have no last known status, the default status for the health check is healthy.</p> </li> </ul></p>
6981    pub insufficient_data_health_status: Option<String>,
6982    /// <p>Specify whether you want Amazon Route 53 to invert the status of a health check, for example, to consider a health check unhealthy when it otherwise would be considered healthy.</p>
6983    pub inverted: Option<bool>,
6984    /// <p><p>The port on the endpoint that you want Amazon Route 53 to perform health checks on.</p> <note> <p>Don&#39;t specify a value for <code>Port</code> when you specify a value for <code>Type</code> of <code>CLOUDWATCH_METRIC</code> or <code>CALCULATED</code>.</p> </note></p>
6985    pub port: Option<i64>,
6986    /// <p>A complex type that contains one <code>Region</code> element for each region that you want Amazon Route 53 health checkers to check the specified endpoint from.</p>
6987    pub regions: Option<Vec<String>>,
6988    /// <p><p>A complex type that contains one <code>ResettableElementName</code> element for each element that you want to reset to the default value. Valid values for <code>ResettableElementName</code> include the following:</p> <ul> <li> <p> <code>ChildHealthChecks</code>: Amazon Route 53 resets <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-ChildHealthChecks">ChildHealthChecks</a> to null.</p> </li> <li> <p> <code>FullyQualifiedDomainName</code>: Route 53 resets <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-FullyQualifiedDomainName">FullyQualifiedDomainName</a>. to null.</p> </li> <li> <p> <code>Regions</code>: Route 53 resets the <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-Regions">Regions</a> list to the default set of regions. </p> </li> <li> <p> <code>ResourcePath</code>: Route 53 resets <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-ResourcePath">ResourcePath</a> to null.</p> </li> </ul></p>
6989    pub reset_elements: Option<Vec<String>>,
6990    /// <p>The path that you want Amazon Route 53 to request when performing health checks. The path can be any value for which your endpoint will return an HTTP status code of 2xx or 3xx when the endpoint is healthy, for example the file /docs/route53-health-check.html. You can also include query string parameters, for example, <code>/welcome.html?language=jp&amp;login=y</code>. </p> <p>Specify this value only if you want to change it.</p>
6991    pub resource_path: Option<String>,
6992    /// <p>If the value of <code>Type</code> is <code>HTTP_STR_MATCH</code> or <code>HTTPS_STR_MATCH</code>, the string that you want Amazon Route 53 to search for in the response body from the specified resource. If the string appears in the response body, Route 53 considers the resource healthy. (You can't change the value of <code>Type</code> when you update a health check.)</p>
6993    pub search_string: Option<String>,
6994}
6995
6996pub struct UpdateHealthCheckRequestSerializer;
6997impl UpdateHealthCheckRequestSerializer {
6998    #[allow(unused_variables, warnings)]
6999    pub fn serialize<W>(
7000        mut writer: &mut EventWriter<W>,
7001        name: &str,
7002        obj: &UpdateHealthCheckRequest,
7003        xmlns: &str,
7004    ) -> Result<(), xml::writer::Error>
7005    where
7006        W: Write,
7007    {
7008        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
7009        if let Some(ref value) = obj.alarm_identifier {
7010            &AlarmIdentifierSerializer::serialize(&mut writer, "AlarmIdentifier", value)?;
7011        }
7012        if let Some(ref value) = obj.child_health_checks {
7013            &ChildHealthCheckListSerializer::serialize(&mut writer, "ChildHealthChecks", value)?;
7014        }
7015        if let Some(ref value) = obj.disabled {
7016            &DisabledSerializer::serialize(&mut writer, "Disabled", value)?;
7017        }
7018        if let Some(ref value) = obj.enable_sni {
7019            &EnableSNISerializer::serialize(&mut writer, "EnableSNI", value)?;
7020        }
7021        if let Some(ref value) = obj.failure_threshold {
7022            &FailureThresholdSerializer::serialize(&mut writer, "FailureThreshold", value)?;
7023        }
7024        if let Some(ref value) = obj.fully_qualified_domain_name {
7025            &FullyQualifiedDomainNameSerializer::serialize(
7026                &mut writer,
7027                "FullyQualifiedDomainName",
7028                value,
7029            )?;
7030        }
7031        if let Some(ref value) = obj.health_check_version {
7032            &HealthCheckVersionSerializer::serialize(&mut writer, "HealthCheckVersion", value)?;
7033        }
7034        if let Some(ref value) = obj.health_threshold {
7035            &HealthThresholdSerializer::serialize(&mut writer, "HealthThreshold", value)?;
7036        }
7037        if let Some(ref value) = obj.ip_address {
7038            &IPAddressSerializer::serialize(&mut writer, "IPAddress", value)?;
7039        }
7040        if let Some(ref value) = obj.insufficient_data_health_status {
7041            &InsufficientDataHealthStatusSerializer::serialize(
7042                &mut writer,
7043                "InsufficientDataHealthStatus",
7044                value,
7045            )?;
7046        }
7047        if let Some(ref value) = obj.inverted {
7048            &InvertedSerializer::serialize(&mut writer, "Inverted", value)?;
7049        }
7050        if let Some(ref value) = obj.port {
7051            &PortSerializer::serialize(&mut writer, "Port", value)?;
7052        }
7053        if let Some(ref value) = obj.regions {
7054            &HealthCheckRegionListSerializer::serialize(&mut writer, "Regions", value)?;
7055        }
7056        if let Some(ref value) = obj.reset_elements {
7057            &ResettableElementNameListSerializer::serialize(&mut writer, "ResetElements", value)?;
7058        }
7059        if let Some(ref value) = obj.resource_path {
7060            &ResourcePathSerializer::serialize(&mut writer, "ResourcePath", value)?;
7061        }
7062        if let Some(ref value) = obj.search_string {
7063            &SearchStringSerializer::serialize(&mut writer, "SearchString", value)?;
7064        }
7065        writer.write(xml::writer::XmlEvent::end_element())
7066    }
7067}
7068/// <p>A complex type that contains the response to the <code>UpdateHealthCheck</code> request.</p>
7069#[derive(Clone, Debug, Default, PartialEq)]
7070#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7071pub struct UpdateHealthCheckResponse {
7072    /// <p>A complex type that contains the response to an <code>UpdateHealthCheck</code> request.</p>
7073    pub health_check: HealthCheck,
7074}
7075
7076#[allow(dead_code)]
7077struct UpdateHealthCheckResponseDeserializer;
7078impl UpdateHealthCheckResponseDeserializer {
7079    #[allow(dead_code, unused_variables)]
7080    fn deserialize<T: Peek + Next>(
7081        tag_name: &str,
7082        stack: &mut T,
7083    ) -> Result<UpdateHealthCheckResponse, XmlParseError> {
7084        deserialize_elements::<_, UpdateHealthCheckResponse, _>(
7085            tag_name,
7086            stack,
7087            |name, stack, obj| {
7088                match name {
7089                    "HealthCheck" => {
7090                        obj.health_check =
7091                            HealthCheckDeserializer::deserialize("HealthCheck", stack)?;
7092                    }
7093                    _ => skip_tree(stack),
7094                }
7095                Ok(())
7096            },
7097        )
7098    }
7099}
7100/// <p>A request to update the comment for a hosted zone.</p>
7101#[derive(Clone, Debug, Default, PartialEq)]
7102#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7103pub struct UpdateHostedZoneCommentRequest {
7104    /// <p>The new comment for the hosted zone. If you don't specify a value for <code>Comment</code>, Amazon Route 53 deletes the existing value of the <code>Comment</code> element, if any.</p>
7105    pub comment: Option<String>,
7106    /// <p>The ID for the hosted zone that you want to update the comment for.</p>
7107    pub id: String,
7108}
7109
7110pub struct UpdateHostedZoneCommentRequestSerializer;
7111impl UpdateHostedZoneCommentRequestSerializer {
7112    #[allow(unused_variables, warnings)]
7113    pub fn serialize<W>(
7114        mut writer: &mut EventWriter<W>,
7115        name: &str,
7116        obj: &UpdateHostedZoneCommentRequest,
7117        xmlns: &str,
7118    ) -> Result<(), xml::writer::Error>
7119    where
7120        W: Write,
7121    {
7122        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
7123        if let Some(ref value) = obj.comment {
7124            &ResourceDescriptionSerializer::serialize(&mut writer, "Comment", value)?;
7125        }
7126        writer.write(xml::writer::XmlEvent::end_element())
7127    }
7128}
7129/// <p>A complex type that contains the response to the <code>UpdateHostedZoneComment</code> request.</p>
7130#[derive(Clone, Debug, Default, PartialEq)]
7131#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7132pub struct UpdateHostedZoneCommentResponse {
7133    /// <p>A complex type that contains the response to the <code>UpdateHostedZoneComment</code> request.</p>
7134    pub hosted_zone: HostedZone,
7135}
7136
7137#[allow(dead_code)]
7138struct UpdateHostedZoneCommentResponseDeserializer;
7139impl UpdateHostedZoneCommentResponseDeserializer {
7140    #[allow(dead_code, unused_variables)]
7141    fn deserialize<T: Peek + Next>(
7142        tag_name: &str,
7143        stack: &mut T,
7144    ) -> Result<UpdateHostedZoneCommentResponse, XmlParseError> {
7145        deserialize_elements::<_, UpdateHostedZoneCommentResponse, _>(
7146            tag_name,
7147            stack,
7148            |name, stack, obj| {
7149                match name {
7150                    "HostedZone" => {
7151                        obj.hosted_zone = HostedZoneDeserializer::deserialize("HostedZone", stack)?;
7152                    }
7153                    _ => skip_tree(stack),
7154                }
7155                Ok(())
7156            },
7157        )
7158    }
7159}
7160/// <p>A complex type that contains information about the traffic policy that you want to update the comment for.</p>
7161#[derive(Clone, Debug, Default, PartialEq)]
7162#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7163pub struct UpdateTrafficPolicyCommentRequest {
7164    /// <p>The new comment for the specified traffic policy and version.</p>
7165    pub comment: String,
7166    /// <p>The value of <code>Id</code> for the traffic policy that you want to update the comment for.</p>
7167    pub id: String,
7168    /// <p>The value of <code>Version</code> for the traffic policy that you want to update the comment for.</p>
7169    pub version: i64,
7170}
7171
7172pub struct UpdateTrafficPolicyCommentRequestSerializer;
7173impl UpdateTrafficPolicyCommentRequestSerializer {
7174    #[allow(unused_variables, warnings)]
7175    pub fn serialize<W>(
7176        mut writer: &mut EventWriter<W>,
7177        name: &str,
7178        obj: &UpdateTrafficPolicyCommentRequest,
7179        xmlns: &str,
7180    ) -> Result<(), xml::writer::Error>
7181    where
7182        W: Write,
7183    {
7184        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
7185        TrafficPolicyCommentSerializer::serialize(&mut writer, "Comment", &obj.comment)?;
7186        writer.write(xml::writer::XmlEvent::end_element())
7187    }
7188}
7189/// <p>A complex type that contains the response information for the traffic policy.</p>
7190#[derive(Clone, Debug, Default, PartialEq)]
7191#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7192pub struct UpdateTrafficPolicyCommentResponse {
7193    /// <p>A complex type that contains settings for the specified traffic policy.</p>
7194    pub traffic_policy: TrafficPolicy,
7195}
7196
7197#[allow(dead_code)]
7198struct UpdateTrafficPolicyCommentResponseDeserializer;
7199impl UpdateTrafficPolicyCommentResponseDeserializer {
7200    #[allow(dead_code, unused_variables)]
7201    fn deserialize<T: Peek + Next>(
7202        tag_name: &str,
7203        stack: &mut T,
7204    ) -> Result<UpdateTrafficPolicyCommentResponse, XmlParseError> {
7205        deserialize_elements::<_, UpdateTrafficPolicyCommentResponse, _>(
7206            tag_name,
7207            stack,
7208            |name, stack, obj| {
7209                match name {
7210                    "TrafficPolicy" => {
7211                        obj.traffic_policy =
7212                            TrafficPolicyDeserializer::deserialize("TrafficPolicy", stack)?;
7213                    }
7214                    _ => skip_tree(stack),
7215                }
7216                Ok(())
7217            },
7218        )
7219    }
7220}
7221/// <p>A complex type that contains information about the resource record sets that you want to update based on a specified traffic policy instance.</p>
7222#[derive(Clone, Debug, Default, PartialEq)]
7223#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7224pub struct UpdateTrafficPolicyInstanceRequest {
7225    /// <p>The ID of the traffic policy instance that you want to update.</p>
7226    pub id: String,
7227    /// <p>The TTL that you want Amazon Route 53 to assign to all of the updated resource record sets.</p>
7228    pub ttl: i64,
7229    /// <p>The ID of the traffic policy that you want Amazon Route 53 to use to update resource record sets for the specified traffic policy instance.</p>
7230    pub traffic_policy_id: String,
7231    /// <p>The version of the traffic policy that you want Amazon Route 53 to use to update resource record sets for the specified traffic policy instance.</p>
7232    pub traffic_policy_version: i64,
7233}
7234
7235pub struct UpdateTrafficPolicyInstanceRequestSerializer;
7236impl UpdateTrafficPolicyInstanceRequestSerializer {
7237    #[allow(unused_variables, warnings)]
7238    pub fn serialize<W>(
7239        mut writer: &mut EventWriter<W>,
7240        name: &str,
7241        obj: &UpdateTrafficPolicyInstanceRequest,
7242        xmlns: &str,
7243    ) -> Result<(), xml::writer::Error>
7244    where
7245        W: Write,
7246    {
7247        writer.write(xml::writer::XmlEvent::start_element(name).default_ns(xmlns))?;
7248        TTLSerializer::serialize(&mut writer, "TTL", &obj.ttl)?;
7249        TrafficPolicyIdSerializer::serialize(
7250            &mut writer,
7251            "TrafficPolicyId",
7252            &obj.traffic_policy_id,
7253        )?;
7254        TrafficPolicyVersionSerializer::serialize(
7255            &mut writer,
7256            "TrafficPolicyVersion",
7257            &obj.traffic_policy_version,
7258        )?;
7259        writer.write(xml::writer::XmlEvent::end_element())
7260    }
7261}
7262/// <p>A complex type that contains information about the resource record sets that Amazon Route 53 created based on a specified traffic policy.</p>
7263#[derive(Clone, Debug, Default, PartialEq)]
7264#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7265pub struct UpdateTrafficPolicyInstanceResponse {
7266    /// <p>A complex type that contains settings for the updated traffic policy instance.</p>
7267    pub traffic_policy_instance: TrafficPolicyInstance,
7268}
7269
7270#[allow(dead_code)]
7271struct UpdateTrafficPolicyInstanceResponseDeserializer;
7272impl UpdateTrafficPolicyInstanceResponseDeserializer {
7273    #[allow(dead_code, unused_variables)]
7274    fn deserialize<T: Peek + Next>(
7275        tag_name: &str,
7276        stack: &mut T,
7277    ) -> Result<UpdateTrafficPolicyInstanceResponse, XmlParseError> {
7278        deserialize_elements::<_, UpdateTrafficPolicyInstanceResponse, _>(
7279            tag_name,
7280            stack,
7281            |name, stack, obj| {
7282                match name {
7283                    "TrafficPolicyInstance" => {
7284                        obj.traffic_policy_instance =
7285                            TrafficPolicyInstanceDeserializer::deserialize(
7286                                "TrafficPolicyInstance",
7287                                stack,
7288                            )?;
7289                    }
7290                    _ => skip_tree(stack),
7291                }
7292                Ok(())
7293            },
7294        )
7295    }
7296}
7297#[allow(dead_code)]
7298struct UsageCountDeserializer;
7299impl UsageCountDeserializer {
7300    #[allow(dead_code, unused_variables)]
7301    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<i64, XmlParseError> {
7302        xml_util::deserialize_primitive(tag_name, stack, |s| Ok(i64::from_str(&s).unwrap()))
7303    }
7304}
7305/// <p>(Private hosted zones only) A complex type that contains information about an Amazon VPC.</p>
7306#[derive(Clone, Debug, Default, PartialEq)]
7307#[cfg_attr(feature = "serialize_structs", derive(Serialize))]
7308#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7309pub struct VPC {
7310    pub vpc_id: Option<String>,
7311    /// <p>(Private hosted zones only) The region that an Amazon VPC was created in.</p>
7312    pub vpc_region: Option<String>,
7313}
7314
7315#[allow(dead_code)]
7316struct VPCDeserializer;
7317impl VPCDeserializer {
7318    #[allow(dead_code, unused_variables)]
7319    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<VPC, XmlParseError> {
7320        deserialize_elements::<_, VPC, _>(tag_name, stack, |name, stack, obj| {
7321            match name {
7322                "VPCId" => {
7323                    obj.vpc_id = Some(VPCIdDeserializer::deserialize("VPCId", stack)?);
7324                }
7325                "VPCRegion" => {
7326                    obj.vpc_region = Some(VPCRegionDeserializer::deserialize("VPCRegion", stack)?);
7327                }
7328                _ => skip_tree(stack),
7329            }
7330            Ok(())
7331        })
7332    }
7333}
7334
7335pub struct VPCSerializer;
7336impl VPCSerializer {
7337    #[allow(unused_variables, warnings)]
7338    pub fn serialize<W>(
7339        mut writer: &mut EventWriter<W>,
7340        name: &str,
7341        obj: &VPC,
7342    ) -> Result<(), xml::writer::Error>
7343    where
7344        W: Write,
7345    {
7346        writer.write(xml::writer::XmlEvent::start_element(name))?;
7347        if let Some(ref value) = obj.vpc_id {
7348            write_characters_element(writer, "VPCId", &value.to_string())?;
7349        }
7350        if let Some(ref value) = obj.vpc_region {
7351            write_characters_element(writer, "VPCRegion", &value.to_string())?;
7352        }
7353        writer.write(xml::writer::XmlEvent::end_element())
7354    }
7355}
7356
7357#[allow(dead_code)]
7358struct VPCIdDeserializer;
7359impl VPCIdDeserializer {
7360    #[allow(dead_code, unused_variables)]
7361    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
7362        xml_util::deserialize_primitive(tag_name, stack, Ok)
7363    }
7364}
7365
7366pub struct VPCIdSerializer;
7367impl VPCIdSerializer {
7368    #[allow(unused_variables, warnings)]
7369    pub fn serialize<W>(
7370        mut writer: &mut EventWriter<W>,
7371        name: &str,
7372        obj: &String,
7373    ) -> Result<(), xml::writer::Error>
7374    where
7375        W: Write,
7376    {
7377        write_characters_element(writer, name, obj)
7378    }
7379}
7380
7381#[allow(dead_code)]
7382struct VPCRegionDeserializer;
7383impl VPCRegionDeserializer {
7384    #[allow(dead_code, unused_variables)]
7385    fn deserialize<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<String, XmlParseError> {
7386        xml_util::deserialize_primitive(tag_name, stack, Ok)
7387    }
7388}
7389
7390pub struct VPCRegionSerializer;
7391impl VPCRegionSerializer {
7392    #[allow(unused_variables, warnings)]
7393    pub fn serialize<W>(
7394        mut writer: &mut EventWriter<W>,
7395        name: &str,
7396        obj: &String,
7397    ) -> Result<(), xml::writer::Error>
7398    where
7399        W: Write,
7400    {
7401        write_characters_element(writer, name, obj)
7402    }
7403}
7404
7405#[allow(dead_code)]
7406struct VPCsDeserializer;
7407impl VPCsDeserializer {
7408    #[allow(dead_code, unused_variables)]
7409    fn deserialize<T: Peek + Next>(
7410        tag_name: &str,
7411        stack: &mut T,
7412    ) -> Result<Vec<VPC>, XmlParseError> {
7413        deserialize_elements::<_, Vec<_>, _>(tag_name, stack, |name, stack, obj| {
7414            if name == "VPC" {
7415                obj.push(VPCDeserializer::deserialize("VPC", stack)?);
7416            } else {
7417                skip_tree(stack);
7418            }
7419            Ok(())
7420        })
7421    }
7422}
7423/// Errors returned by AssociateVPCWithHostedZone
7424#[derive(Debug, PartialEq)]
7425pub enum AssociateVPCWithHostedZoneError {
7426    /// <p><p>The cause of this error depends on the operation that you&#39;re performing:</p> <ul> <li> <p> <b>Create a public hosted zone:</b> Two hosted zones that have the same name or that have a parent/child relationship (example.com and test.example.com) can&#39;t have any common name servers. You tried to create a hosted zone that has the same name as an existing hosted zone or that&#39;s the parent or child of an existing hosted zone, and you specified a delegation set that shares one or more name servers with the existing hosted zone. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateReusableDelegationSet.html">CreateReusableDelegationSet</a>.</p> </li> <li> <p> <b>Create a private hosted zone:</b> A hosted zone with the specified name already exists and is already associated with the Amazon VPC that you specified.</p> </li> <li> <p> <b>Associate VPCs with a private hosted zone:</b> The VPC that you specified is already associated with another hosted zone that has the same name.</p> </li> </ul></p>
7427    ConflictingDomainExists(String),
7428    /// <p>The input is not valid.</p>
7429    InvalidInput(String),
7430    /// <p>The VPC ID that you specified either isn't a valid ID or the current account is not authorized to access this VPC.</p>
7431    InvalidVPCId(String),
7432    /// <p>This operation can't be completed either because the current account has reached the limit on reusable delegation sets that it can create or because you've reached the limit on the number of Amazon VPCs that you can associate with a private hosted zone. To get the current limit on the number of reusable delegation sets, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetAccountLimit.html">GetAccountLimit</a>. To get the current limit on the number of Amazon VPCs that you can associate with a private hosted zone, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetHostedZoneLimit.html">GetHostedZoneLimit</a>. To request a higher limit, <a href="http://aws.amazon.com/route53-request">create a case</a> with the AWS Support Center.</p>
7433    LimitsExceeded(String),
7434    /// <p>No hosted zone exists with the ID that you specified.</p>
7435    NoSuchHostedZone(String),
7436    /// <p>Associating the specified VPC with the specified hosted zone has not been authorized.</p>
7437    NotAuthorized(String),
7438    /// <p>If Amazon Route 53 can't process a request before the next request arrives, it will reject subsequent requests for the same hosted zone and return an <code>HTTP 400 error</code> (<code>Bad request</code>). If Route 53 returns this error repeatedly for the same request, we recommend that you wait, in intervals of increasing duration, before you try the request again.</p>
7439    PriorRequestNotComplete(String),
7440    /// <p>You're trying to associate a VPC with a public hosted zone. Amazon Route 53 doesn't support associating a VPC with a public hosted zone.</p>
7441    PublicZoneVPCAssociation(String),
7442}
7443
7444impl AssociateVPCWithHostedZoneError {
7445    pub fn from_response(
7446        res: BufferedHttpResponse,
7447    ) -> RusotoError<AssociateVPCWithHostedZoneError> {
7448        {
7449            let reader = EventReader::new(res.body.as_ref());
7450            let mut stack = XmlResponse::new(reader.into_iter().peekable());
7451            find_start_element(&mut stack);
7452            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
7453                match &parsed_error.code[..] {
7454                    "ConflictingDomainExists" => {
7455                        return RusotoError::Service(
7456                            AssociateVPCWithHostedZoneError::ConflictingDomainExists(
7457                                parsed_error.message,
7458                            ),
7459                        )
7460                    }
7461                    "InvalidInput" => {
7462                        return RusotoError::Service(AssociateVPCWithHostedZoneError::InvalidInput(
7463                            parsed_error.message,
7464                        ))
7465                    }
7466                    "InvalidVPCId" => {
7467                        return RusotoError::Service(AssociateVPCWithHostedZoneError::InvalidVPCId(
7468                            parsed_error.message,
7469                        ))
7470                    }
7471                    "LimitsExceeded" => {
7472                        return RusotoError::Service(
7473                            AssociateVPCWithHostedZoneError::LimitsExceeded(parsed_error.message),
7474                        )
7475                    }
7476                    "NoSuchHostedZone" => {
7477                        return RusotoError::Service(
7478                            AssociateVPCWithHostedZoneError::NoSuchHostedZone(parsed_error.message),
7479                        )
7480                    }
7481                    "NotAuthorizedException" => {
7482                        return RusotoError::Service(
7483                            AssociateVPCWithHostedZoneError::NotAuthorized(parsed_error.message),
7484                        )
7485                    }
7486                    "PriorRequestNotComplete" => {
7487                        return RusotoError::Service(
7488                            AssociateVPCWithHostedZoneError::PriorRequestNotComplete(
7489                                parsed_error.message,
7490                            ),
7491                        )
7492                    }
7493                    "PublicZoneVPCAssociation" => {
7494                        return RusotoError::Service(
7495                            AssociateVPCWithHostedZoneError::PublicZoneVPCAssociation(
7496                                parsed_error.message,
7497                            ),
7498                        )
7499                    }
7500                    _ => {}
7501                }
7502            }
7503        }
7504        RusotoError::Unknown(res)
7505    }
7506
7507    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
7508    where
7509        T: Peek + Next,
7510    {
7511        xml_util::start_element("ErrorResponse", stack)?;
7512        XmlErrorDeserializer::deserialize("Error", stack)
7513    }
7514}
7515impl fmt::Display for AssociateVPCWithHostedZoneError {
7516    #[allow(unused_variables)]
7517    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7518        match *self {
7519            AssociateVPCWithHostedZoneError::ConflictingDomainExists(ref cause) => {
7520                write!(f, "{}", cause)
7521            }
7522            AssociateVPCWithHostedZoneError::InvalidInput(ref cause) => write!(f, "{}", cause),
7523            AssociateVPCWithHostedZoneError::InvalidVPCId(ref cause) => write!(f, "{}", cause),
7524            AssociateVPCWithHostedZoneError::LimitsExceeded(ref cause) => write!(f, "{}", cause),
7525            AssociateVPCWithHostedZoneError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
7526            AssociateVPCWithHostedZoneError::NotAuthorized(ref cause) => write!(f, "{}", cause),
7527            AssociateVPCWithHostedZoneError::PriorRequestNotComplete(ref cause) => {
7528                write!(f, "{}", cause)
7529            }
7530            AssociateVPCWithHostedZoneError::PublicZoneVPCAssociation(ref cause) => {
7531                write!(f, "{}", cause)
7532            }
7533        }
7534    }
7535}
7536impl Error for AssociateVPCWithHostedZoneError {}
7537/// Errors returned by ChangeResourceRecordSets
7538#[derive(Debug, PartialEq)]
7539pub enum ChangeResourceRecordSetsError {
7540    /// <p>This exception contains a list of messages that might contain one or more error messages. Each error message indicates one error in the change batch.</p>
7541    InvalidChangeBatch(String),
7542    /// <p>The input is not valid.</p>
7543    InvalidInput(String),
7544    /// <p>No health check exists with the specified ID.</p>
7545    NoSuchHealthCheck(String),
7546    /// <p>No hosted zone exists with the ID that you specified.</p>
7547    NoSuchHostedZone(String),
7548    /// <p>If Amazon Route 53 can't process a request before the next request arrives, it will reject subsequent requests for the same hosted zone and return an <code>HTTP 400 error</code> (<code>Bad request</code>). If Route 53 returns this error repeatedly for the same request, we recommend that you wait, in intervals of increasing duration, before you try the request again.</p>
7549    PriorRequestNotComplete(String),
7550}
7551
7552impl ChangeResourceRecordSetsError {
7553    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ChangeResourceRecordSetsError> {
7554        {
7555            let reader = EventReader::new(res.body.as_ref());
7556            let mut stack = XmlResponse::new(reader.into_iter().peekable());
7557            find_start_element(&mut stack);
7558            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
7559                match &parsed_error.code[..] {
7560                    "InvalidChangeBatch" => {
7561                        return RusotoError::Service(
7562                            ChangeResourceRecordSetsError::InvalidChangeBatch(parsed_error.message),
7563                        )
7564                    }
7565                    "InvalidInput" => {
7566                        return RusotoError::Service(ChangeResourceRecordSetsError::InvalidInput(
7567                            parsed_error.message,
7568                        ))
7569                    }
7570                    "NoSuchHealthCheck" => {
7571                        return RusotoError::Service(
7572                            ChangeResourceRecordSetsError::NoSuchHealthCheck(parsed_error.message),
7573                        )
7574                    }
7575                    "NoSuchHostedZone" => {
7576                        return RusotoError::Service(
7577                            ChangeResourceRecordSetsError::NoSuchHostedZone(parsed_error.message),
7578                        )
7579                    }
7580                    "PriorRequestNotComplete" => {
7581                        return RusotoError::Service(
7582                            ChangeResourceRecordSetsError::PriorRequestNotComplete(
7583                                parsed_error.message,
7584                            ),
7585                        )
7586                    }
7587                    _ => {}
7588                }
7589            }
7590        }
7591        RusotoError::Unknown(res)
7592    }
7593
7594    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
7595    where
7596        T: Peek + Next,
7597    {
7598        xml_util::start_element("ErrorResponse", stack)?;
7599        XmlErrorDeserializer::deserialize("Error", stack)
7600    }
7601}
7602impl fmt::Display for ChangeResourceRecordSetsError {
7603    #[allow(unused_variables)]
7604    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7605        match *self {
7606            ChangeResourceRecordSetsError::InvalidChangeBatch(ref cause) => write!(f, "{}", cause),
7607            ChangeResourceRecordSetsError::InvalidInput(ref cause) => write!(f, "{}", cause),
7608            ChangeResourceRecordSetsError::NoSuchHealthCheck(ref cause) => write!(f, "{}", cause),
7609            ChangeResourceRecordSetsError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
7610            ChangeResourceRecordSetsError::PriorRequestNotComplete(ref cause) => {
7611                write!(f, "{}", cause)
7612            }
7613        }
7614    }
7615}
7616impl Error for ChangeResourceRecordSetsError {}
7617/// Errors returned by ChangeTagsForResource
7618#[derive(Debug, PartialEq)]
7619pub enum ChangeTagsForResourceError {
7620    /// <p>The input is not valid.</p>
7621    InvalidInput(String),
7622    /// <p>No health check exists with the specified ID.</p>
7623    NoSuchHealthCheck(String),
7624    /// <p>No hosted zone exists with the ID that you specified.</p>
7625    NoSuchHostedZone(String),
7626    /// <p>If Amazon Route 53 can't process a request before the next request arrives, it will reject subsequent requests for the same hosted zone and return an <code>HTTP 400 error</code> (<code>Bad request</code>). If Route 53 returns this error repeatedly for the same request, we recommend that you wait, in intervals of increasing duration, before you try the request again.</p>
7627    PriorRequestNotComplete(String),
7628    /// <p>The limit on the number of requests per second was exceeded.</p>
7629    Throttling(String),
7630}
7631
7632impl ChangeTagsForResourceError {
7633    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ChangeTagsForResourceError> {
7634        {
7635            let reader = EventReader::new(res.body.as_ref());
7636            let mut stack = XmlResponse::new(reader.into_iter().peekable());
7637            find_start_element(&mut stack);
7638            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
7639                match &parsed_error.code[..] {
7640                    "InvalidInput" => {
7641                        return RusotoError::Service(ChangeTagsForResourceError::InvalidInput(
7642                            parsed_error.message,
7643                        ))
7644                    }
7645                    "NoSuchHealthCheck" => {
7646                        return RusotoError::Service(ChangeTagsForResourceError::NoSuchHealthCheck(
7647                            parsed_error.message,
7648                        ))
7649                    }
7650                    "NoSuchHostedZone" => {
7651                        return RusotoError::Service(ChangeTagsForResourceError::NoSuchHostedZone(
7652                            parsed_error.message,
7653                        ))
7654                    }
7655                    "PriorRequestNotComplete" => {
7656                        return RusotoError::Service(
7657                            ChangeTagsForResourceError::PriorRequestNotComplete(
7658                                parsed_error.message,
7659                            ),
7660                        )
7661                    }
7662                    "ThrottlingException" => {
7663                        return RusotoError::Service(ChangeTagsForResourceError::Throttling(
7664                            parsed_error.message,
7665                        ))
7666                    }
7667                    _ => {}
7668                }
7669            }
7670        }
7671        RusotoError::Unknown(res)
7672    }
7673
7674    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
7675    where
7676        T: Peek + Next,
7677    {
7678        xml_util::start_element("ErrorResponse", stack)?;
7679        XmlErrorDeserializer::deserialize("Error", stack)
7680    }
7681}
7682impl fmt::Display for ChangeTagsForResourceError {
7683    #[allow(unused_variables)]
7684    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7685        match *self {
7686            ChangeTagsForResourceError::InvalidInput(ref cause) => write!(f, "{}", cause),
7687            ChangeTagsForResourceError::NoSuchHealthCheck(ref cause) => write!(f, "{}", cause),
7688            ChangeTagsForResourceError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
7689            ChangeTagsForResourceError::PriorRequestNotComplete(ref cause) => {
7690                write!(f, "{}", cause)
7691            }
7692            ChangeTagsForResourceError::Throttling(ref cause) => write!(f, "{}", cause),
7693        }
7694    }
7695}
7696impl Error for ChangeTagsForResourceError {}
7697/// Errors returned by CreateHealthCheck
7698#[derive(Debug, PartialEq)]
7699pub enum CreateHealthCheckError {
7700    /// <p><p> The health check you&#39;re attempting to create already exists. Amazon Route 53 returns this error when you submit a request that has the following values:</p> <ul> <li> <p>The same value for <code>CallerReference</code> as an existing health check, and one or more values that differ from the existing health check that has the same caller reference.</p> </li> <li> <p>The same value for <code>CallerReference</code> as a health check that you created and later deleted, regardless of the other settings in the request.</p> </li> </ul></p>
7701    HealthCheckAlreadyExists(String),
7702    /// <p>The input is not valid.</p>
7703    InvalidInput(String),
7704    /// <p>This health check can't be created because the current account has reached the limit on the number of active health checks.</p> <p>For information about default limits, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html">Limits</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>For information about how to get the current limit for an account, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetAccountLimit.html">GetAccountLimit</a>. To request a higher limit, <a href="http://aws.amazon.com/route53-request">create a case</a> with the AWS Support Center.</p> <p>You have reached the maximum number of active health checks for an AWS account. To request a higher limit, <a href="http://aws.amazon.com/route53-request">create a case</a> with the AWS Support Center.</p>
7705    TooManyHealthChecks(String),
7706}
7707
7708impl CreateHealthCheckError {
7709    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateHealthCheckError> {
7710        {
7711            let reader = EventReader::new(res.body.as_ref());
7712            let mut stack = XmlResponse::new(reader.into_iter().peekable());
7713            find_start_element(&mut stack);
7714            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
7715                match &parsed_error.code[..] {
7716                    "HealthCheckAlreadyExists" => {
7717                        return RusotoError::Service(
7718                            CreateHealthCheckError::HealthCheckAlreadyExists(parsed_error.message),
7719                        )
7720                    }
7721                    "InvalidInput" => {
7722                        return RusotoError::Service(CreateHealthCheckError::InvalidInput(
7723                            parsed_error.message,
7724                        ))
7725                    }
7726                    "TooManyHealthChecks" => {
7727                        return RusotoError::Service(CreateHealthCheckError::TooManyHealthChecks(
7728                            parsed_error.message,
7729                        ))
7730                    }
7731                    _ => {}
7732                }
7733            }
7734        }
7735        RusotoError::Unknown(res)
7736    }
7737
7738    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
7739    where
7740        T: Peek + Next,
7741    {
7742        xml_util::start_element("ErrorResponse", stack)?;
7743        XmlErrorDeserializer::deserialize("Error", stack)
7744    }
7745}
7746impl fmt::Display for CreateHealthCheckError {
7747    #[allow(unused_variables)]
7748    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7749        match *self {
7750            CreateHealthCheckError::HealthCheckAlreadyExists(ref cause) => write!(f, "{}", cause),
7751            CreateHealthCheckError::InvalidInput(ref cause) => write!(f, "{}", cause),
7752            CreateHealthCheckError::TooManyHealthChecks(ref cause) => write!(f, "{}", cause),
7753        }
7754    }
7755}
7756impl Error for CreateHealthCheckError {}
7757/// Errors returned by CreateHostedZone
7758#[derive(Debug, PartialEq)]
7759pub enum CreateHostedZoneError {
7760    /// <p><p>The cause of this error depends on the operation that you&#39;re performing:</p> <ul> <li> <p> <b>Create a public hosted zone:</b> Two hosted zones that have the same name or that have a parent/child relationship (example.com and test.example.com) can&#39;t have any common name servers. You tried to create a hosted zone that has the same name as an existing hosted zone or that&#39;s the parent or child of an existing hosted zone, and you specified a delegation set that shares one or more name servers with the existing hosted zone. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateReusableDelegationSet.html">CreateReusableDelegationSet</a>.</p> </li> <li> <p> <b>Create a private hosted zone:</b> A hosted zone with the specified name already exists and is already associated with the Amazon VPC that you specified.</p> </li> <li> <p> <b>Associate VPCs with a private hosted zone:</b> The VPC that you specified is already associated with another hosted zone that has the same name.</p> </li> </ul></p>
7761    ConflictingDomainExists(String),
7762    /// <p>You can create a hosted zone that has the same name as an existing hosted zone (example.com is common), but there is a limit to the number of hosted zones that have the same name. If you get this error, Amazon Route 53 has reached that limit. If you own the domain name and Route 53 generates this error, contact Customer Support.</p>
7763    DelegationSetNotAvailable(String),
7764    /// <p>A reusable delegation set with the specified ID does not exist.</p>
7765    DelegationSetNotReusable(String),
7766    /// <p>The hosted zone you're trying to create already exists. Amazon Route 53 returns this error when a hosted zone has already been created with the specified <code>CallerReference</code>.</p>
7767    HostedZoneAlreadyExists(String),
7768    /// <p>The specified domain name is not valid.</p>
7769    InvalidDomainName(String),
7770    /// <p>The input is not valid.</p>
7771    InvalidInput(String),
7772    /// <p>The VPC ID that you specified either isn't a valid ID or the current account is not authorized to access this VPC.</p>
7773    InvalidVPCId(String),
7774    /// <p>A reusable delegation set with the specified ID does not exist.</p>
7775    NoSuchDelegationSet(String),
7776    /// <p>This operation can't be completed either because the current account has reached the limit on the number of hosted zones or because you've reached the limit on the number of hosted zones that can be associated with a reusable delegation set.</p> <p>For information about default limits, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html">Limits</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>To get the current limit on hosted zones that can be created by an account, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetAccountLimit.html">GetAccountLimit</a>.</p> <p>To get the current limit on hosted zones that can be associated with a reusable delegation set, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetReusableDelegationSetLimit.html">GetReusableDelegationSetLimit</a>.</p> <p>To request a higher limit, <a href="http://aws.amazon.com/route53-request">create a case</a> with the AWS Support Center.</p>
7777    TooManyHostedZones(String),
7778}
7779
7780impl CreateHostedZoneError {
7781    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateHostedZoneError> {
7782        {
7783            let reader = EventReader::new(res.body.as_ref());
7784            let mut stack = XmlResponse::new(reader.into_iter().peekable());
7785            find_start_element(&mut stack);
7786            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
7787                match &parsed_error.code[..] {
7788                    "ConflictingDomainExists" => {
7789                        return RusotoError::Service(
7790                            CreateHostedZoneError::ConflictingDomainExists(parsed_error.message),
7791                        )
7792                    }
7793                    "DelegationSetNotAvailable" => {
7794                        return RusotoError::Service(
7795                            CreateHostedZoneError::DelegationSetNotAvailable(parsed_error.message),
7796                        )
7797                    }
7798                    "DelegationSetNotReusable" => {
7799                        return RusotoError::Service(
7800                            CreateHostedZoneError::DelegationSetNotReusable(parsed_error.message),
7801                        )
7802                    }
7803                    "HostedZoneAlreadyExists" => {
7804                        return RusotoError::Service(
7805                            CreateHostedZoneError::HostedZoneAlreadyExists(parsed_error.message),
7806                        )
7807                    }
7808                    "InvalidDomainName" => {
7809                        return RusotoError::Service(CreateHostedZoneError::InvalidDomainName(
7810                            parsed_error.message,
7811                        ))
7812                    }
7813                    "InvalidInput" => {
7814                        return RusotoError::Service(CreateHostedZoneError::InvalidInput(
7815                            parsed_error.message,
7816                        ))
7817                    }
7818                    "InvalidVPCId" => {
7819                        return RusotoError::Service(CreateHostedZoneError::InvalidVPCId(
7820                            parsed_error.message,
7821                        ))
7822                    }
7823                    "NoSuchDelegationSet" => {
7824                        return RusotoError::Service(CreateHostedZoneError::NoSuchDelegationSet(
7825                            parsed_error.message,
7826                        ))
7827                    }
7828                    "TooManyHostedZones" => {
7829                        return RusotoError::Service(CreateHostedZoneError::TooManyHostedZones(
7830                            parsed_error.message,
7831                        ))
7832                    }
7833                    _ => {}
7834                }
7835            }
7836        }
7837        RusotoError::Unknown(res)
7838    }
7839
7840    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
7841    where
7842        T: Peek + Next,
7843    {
7844        xml_util::start_element("ErrorResponse", stack)?;
7845        XmlErrorDeserializer::deserialize("Error", stack)
7846    }
7847}
7848impl fmt::Display for CreateHostedZoneError {
7849    #[allow(unused_variables)]
7850    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7851        match *self {
7852            CreateHostedZoneError::ConflictingDomainExists(ref cause) => write!(f, "{}", cause),
7853            CreateHostedZoneError::DelegationSetNotAvailable(ref cause) => write!(f, "{}", cause),
7854            CreateHostedZoneError::DelegationSetNotReusable(ref cause) => write!(f, "{}", cause),
7855            CreateHostedZoneError::HostedZoneAlreadyExists(ref cause) => write!(f, "{}", cause),
7856            CreateHostedZoneError::InvalidDomainName(ref cause) => write!(f, "{}", cause),
7857            CreateHostedZoneError::InvalidInput(ref cause) => write!(f, "{}", cause),
7858            CreateHostedZoneError::InvalidVPCId(ref cause) => write!(f, "{}", cause),
7859            CreateHostedZoneError::NoSuchDelegationSet(ref cause) => write!(f, "{}", cause),
7860            CreateHostedZoneError::TooManyHostedZones(ref cause) => write!(f, "{}", cause),
7861        }
7862    }
7863}
7864impl Error for CreateHostedZoneError {}
7865/// Errors returned by CreateQueryLoggingConfig
7866#[derive(Debug, PartialEq)]
7867pub enum CreateQueryLoggingConfigError {
7868    /// <p>Another user submitted a request to create, update, or delete the object at the same time that you did. Retry the request. </p>
7869    ConcurrentModification(String),
7870    /// <p><p>Amazon Route 53 doesn&#39;t have the permissions required to create log streams and send query logs to log streams. Possible causes include the following:</p> <ul> <li> <p>There is no resource policy that specifies the log group ARN in the value for <code>Resource</code>.</p> </li> <li> <p>The resource policy that includes the log group ARN in the value for <code>Resource</code> doesn&#39;t have the necessary permissions.</p> </li> <li> <p>The resource policy hasn&#39;t finished propagating yet.</p> </li> </ul></p>
7871    InsufficientCloudWatchLogsResourcePolicy(String),
7872    /// <p>The input is not valid.</p>
7873    InvalidInput(String),
7874    /// <p>There is no CloudWatch Logs log group with the specified ARN.</p>
7875    NoSuchCloudWatchLogsLogGroup(String),
7876    /// <p>No hosted zone exists with the ID that you specified.</p>
7877    NoSuchHostedZone(String),
7878    /// <p>You can create only one query logging configuration for a hosted zone, and a query logging configuration already exists for this hosted zone.</p>
7879    QueryLoggingConfigAlreadyExists(String),
7880}
7881
7882impl CreateQueryLoggingConfigError {
7883    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateQueryLoggingConfigError> {
7884        {
7885            let reader = EventReader::new(res.body.as_ref());
7886            let mut stack = XmlResponse::new(reader.into_iter().peekable());
7887            find_start_element(&mut stack);
7888            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
7889                match &parsed_error.code[..] {
7890                    "ConcurrentModification" => {
7891                        return RusotoError::Service(
7892                            CreateQueryLoggingConfigError::ConcurrentModification(
7893                                parsed_error.message,
7894                            ),
7895                        )
7896                    }
7897                    "InsufficientCloudWatchLogsResourcePolicy" => {
7898                        return RusotoError::Service(
7899                            CreateQueryLoggingConfigError::InsufficientCloudWatchLogsResourcePolicy(
7900                                parsed_error.message,
7901                            ),
7902                        )
7903                    }
7904                    "InvalidInput" => {
7905                        return RusotoError::Service(CreateQueryLoggingConfigError::InvalidInput(
7906                            parsed_error.message,
7907                        ))
7908                    }
7909                    "NoSuchCloudWatchLogsLogGroup" => {
7910                        return RusotoError::Service(
7911                            CreateQueryLoggingConfigError::NoSuchCloudWatchLogsLogGroup(
7912                                parsed_error.message,
7913                            ),
7914                        )
7915                    }
7916                    "NoSuchHostedZone" => {
7917                        return RusotoError::Service(
7918                            CreateQueryLoggingConfigError::NoSuchHostedZone(parsed_error.message),
7919                        )
7920                    }
7921                    "QueryLoggingConfigAlreadyExists" => {
7922                        return RusotoError::Service(
7923                            CreateQueryLoggingConfigError::QueryLoggingConfigAlreadyExists(
7924                                parsed_error.message,
7925                            ),
7926                        )
7927                    }
7928                    _ => {}
7929                }
7930            }
7931        }
7932        RusotoError::Unknown(res)
7933    }
7934
7935    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
7936    where
7937        T: Peek + Next,
7938    {
7939        xml_util::start_element("ErrorResponse", stack)?;
7940        XmlErrorDeserializer::deserialize("Error", stack)
7941    }
7942}
7943impl fmt::Display for CreateQueryLoggingConfigError {
7944    #[allow(unused_variables)]
7945    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7946        match *self {
7947            CreateQueryLoggingConfigError::ConcurrentModification(ref cause) => {
7948                write!(f, "{}", cause)
7949            }
7950            CreateQueryLoggingConfigError::InsufficientCloudWatchLogsResourcePolicy(ref cause) => {
7951                write!(f, "{}", cause)
7952            }
7953            CreateQueryLoggingConfigError::InvalidInput(ref cause) => write!(f, "{}", cause),
7954            CreateQueryLoggingConfigError::NoSuchCloudWatchLogsLogGroup(ref cause) => {
7955                write!(f, "{}", cause)
7956            }
7957            CreateQueryLoggingConfigError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
7958            CreateQueryLoggingConfigError::QueryLoggingConfigAlreadyExists(ref cause) => {
7959                write!(f, "{}", cause)
7960            }
7961        }
7962    }
7963}
7964impl Error for CreateQueryLoggingConfigError {}
7965/// Errors returned by CreateReusableDelegationSet
7966#[derive(Debug, PartialEq)]
7967pub enum CreateReusableDelegationSetError {
7968    /// <p>A delegation set with the same owner and caller reference combination has already been created.</p>
7969    DelegationSetAlreadyCreated(String),
7970    /// <p>The specified delegation set has already been marked as reusable.</p>
7971    DelegationSetAlreadyReusable(String),
7972    /// <p>You can create a hosted zone that has the same name as an existing hosted zone (example.com is common), but there is a limit to the number of hosted zones that have the same name. If you get this error, Amazon Route 53 has reached that limit. If you own the domain name and Route 53 generates this error, contact Customer Support.</p>
7973    DelegationSetNotAvailable(String),
7974    /// <p>The specified HostedZone can't be found.</p>
7975    HostedZoneNotFound(String),
7976    /// <p>Parameter name is invalid.</p>
7977    InvalidArgument(String),
7978    /// <p>The input is not valid.</p>
7979    InvalidInput(String),
7980    /// <p>This operation can't be completed either because the current account has reached the limit on reusable delegation sets that it can create or because you've reached the limit on the number of Amazon VPCs that you can associate with a private hosted zone. To get the current limit on the number of reusable delegation sets, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetAccountLimit.html">GetAccountLimit</a>. To get the current limit on the number of Amazon VPCs that you can associate with a private hosted zone, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetHostedZoneLimit.html">GetHostedZoneLimit</a>. To request a higher limit, <a href="http://aws.amazon.com/route53-request">create a case</a> with the AWS Support Center.</p>
7981    LimitsExceeded(String),
7982}
7983
7984impl CreateReusableDelegationSetError {
7985    pub fn from_response(
7986        res: BufferedHttpResponse,
7987    ) -> RusotoError<CreateReusableDelegationSetError> {
7988        {
7989            let reader = EventReader::new(res.body.as_ref());
7990            let mut stack = XmlResponse::new(reader.into_iter().peekable());
7991            find_start_element(&mut stack);
7992            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
7993                match &parsed_error.code[..] {
7994                    "DelegationSetAlreadyCreated" => {
7995                        return RusotoError::Service(
7996                            CreateReusableDelegationSetError::DelegationSetAlreadyCreated(
7997                                parsed_error.message,
7998                            ),
7999                        )
8000                    }
8001                    "DelegationSetAlreadyReusable" => {
8002                        return RusotoError::Service(
8003                            CreateReusableDelegationSetError::DelegationSetAlreadyReusable(
8004                                parsed_error.message,
8005                            ),
8006                        )
8007                    }
8008                    "DelegationSetNotAvailable" => {
8009                        return RusotoError::Service(
8010                            CreateReusableDelegationSetError::DelegationSetNotAvailable(
8011                                parsed_error.message,
8012                            ),
8013                        )
8014                    }
8015                    "HostedZoneNotFound" => {
8016                        return RusotoError::Service(
8017                            CreateReusableDelegationSetError::HostedZoneNotFound(
8018                                parsed_error.message,
8019                            ),
8020                        )
8021                    }
8022                    "InvalidArgument" => {
8023                        return RusotoError::Service(
8024                            CreateReusableDelegationSetError::InvalidArgument(parsed_error.message),
8025                        )
8026                    }
8027                    "InvalidInput" => {
8028                        return RusotoError::Service(
8029                            CreateReusableDelegationSetError::InvalidInput(parsed_error.message),
8030                        )
8031                    }
8032                    "LimitsExceeded" => {
8033                        return RusotoError::Service(
8034                            CreateReusableDelegationSetError::LimitsExceeded(parsed_error.message),
8035                        )
8036                    }
8037                    _ => {}
8038                }
8039            }
8040        }
8041        RusotoError::Unknown(res)
8042    }
8043
8044    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8045    where
8046        T: Peek + Next,
8047    {
8048        xml_util::start_element("ErrorResponse", stack)?;
8049        XmlErrorDeserializer::deserialize("Error", stack)
8050    }
8051}
8052impl fmt::Display for CreateReusableDelegationSetError {
8053    #[allow(unused_variables)]
8054    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8055        match *self {
8056            CreateReusableDelegationSetError::DelegationSetAlreadyCreated(ref cause) => {
8057                write!(f, "{}", cause)
8058            }
8059            CreateReusableDelegationSetError::DelegationSetAlreadyReusable(ref cause) => {
8060                write!(f, "{}", cause)
8061            }
8062            CreateReusableDelegationSetError::DelegationSetNotAvailable(ref cause) => {
8063                write!(f, "{}", cause)
8064            }
8065            CreateReusableDelegationSetError::HostedZoneNotFound(ref cause) => {
8066                write!(f, "{}", cause)
8067            }
8068            CreateReusableDelegationSetError::InvalidArgument(ref cause) => write!(f, "{}", cause),
8069            CreateReusableDelegationSetError::InvalidInput(ref cause) => write!(f, "{}", cause),
8070            CreateReusableDelegationSetError::LimitsExceeded(ref cause) => write!(f, "{}", cause),
8071        }
8072    }
8073}
8074impl Error for CreateReusableDelegationSetError {}
8075/// Errors returned by CreateTrafficPolicy
8076#[derive(Debug, PartialEq)]
8077pub enum CreateTrafficPolicyError {
8078    /// <p>The input is not valid.</p>
8079    InvalidInput(String),
8080    /// <p>The format of the traffic policy document that you specified in the <code>Document</code> element is invalid.</p>
8081    InvalidTrafficPolicyDocument(String),
8082    /// <p>This traffic policy can't be created because the current account has reached the limit on the number of traffic policies.</p> <p>For information about default limits, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html">Limits</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>To get the current limit for an account, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetAccountLimit.html">GetAccountLimit</a>. </p> <p>To request a higher limit, <a href="http://aws.amazon.com/route53-request">create a case</a> with the AWS Support Center.</p>
8083    TooManyTrafficPolicies(String),
8084    /// <p>A traffic policy that has the same value for <code>Name</code> already exists.</p>
8085    TrafficPolicyAlreadyExists(String),
8086}
8087
8088impl CreateTrafficPolicyError {
8089    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateTrafficPolicyError> {
8090        {
8091            let reader = EventReader::new(res.body.as_ref());
8092            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8093            find_start_element(&mut stack);
8094            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8095                match &parsed_error.code[..] {
8096                    "InvalidInput" => {
8097                        return RusotoError::Service(CreateTrafficPolicyError::InvalidInput(
8098                            parsed_error.message,
8099                        ))
8100                    }
8101                    "InvalidTrafficPolicyDocument" => {
8102                        return RusotoError::Service(
8103                            CreateTrafficPolicyError::InvalidTrafficPolicyDocument(
8104                                parsed_error.message,
8105                            ),
8106                        )
8107                    }
8108                    "TooManyTrafficPolicies" => {
8109                        return RusotoError::Service(
8110                            CreateTrafficPolicyError::TooManyTrafficPolicies(parsed_error.message),
8111                        )
8112                    }
8113                    "TrafficPolicyAlreadyExists" => {
8114                        return RusotoError::Service(
8115                            CreateTrafficPolicyError::TrafficPolicyAlreadyExists(
8116                                parsed_error.message,
8117                            ),
8118                        )
8119                    }
8120                    _ => {}
8121                }
8122            }
8123        }
8124        RusotoError::Unknown(res)
8125    }
8126
8127    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8128    where
8129        T: Peek + Next,
8130    {
8131        xml_util::start_element("ErrorResponse", stack)?;
8132        XmlErrorDeserializer::deserialize("Error", stack)
8133    }
8134}
8135impl fmt::Display for CreateTrafficPolicyError {
8136    #[allow(unused_variables)]
8137    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8138        match *self {
8139            CreateTrafficPolicyError::InvalidInput(ref cause) => write!(f, "{}", cause),
8140            CreateTrafficPolicyError::InvalidTrafficPolicyDocument(ref cause) => {
8141                write!(f, "{}", cause)
8142            }
8143            CreateTrafficPolicyError::TooManyTrafficPolicies(ref cause) => write!(f, "{}", cause),
8144            CreateTrafficPolicyError::TrafficPolicyAlreadyExists(ref cause) => {
8145                write!(f, "{}", cause)
8146            }
8147        }
8148    }
8149}
8150impl Error for CreateTrafficPolicyError {}
8151/// Errors returned by CreateTrafficPolicyInstance
8152#[derive(Debug, PartialEq)]
8153pub enum CreateTrafficPolicyInstanceError {
8154    /// <p>The input is not valid.</p>
8155    InvalidInput(String),
8156    /// <p>No hosted zone exists with the ID that you specified.</p>
8157    NoSuchHostedZone(String),
8158    /// <p>No traffic policy exists with the specified ID.</p>
8159    NoSuchTrafficPolicy(String),
8160    /// <p>This traffic policy instance can't be created because the current account has reached the limit on the number of traffic policy instances.</p> <p>For information about default limits, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html">Limits</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>For information about how to get the current limit for an account, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetAccountLimit.html">GetAccountLimit</a>.</p> <p>To request a higher limit, <a href="http://aws.amazon.com/route53-request">create a case</a> with the AWS Support Center.</p>
8161    TooManyTrafficPolicyInstances(String),
8162    /// <p>There is already a traffic policy instance with the specified ID.</p>
8163    TrafficPolicyInstanceAlreadyExists(String),
8164}
8165
8166impl CreateTrafficPolicyInstanceError {
8167    pub fn from_response(
8168        res: BufferedHttpResponse,
8169    ) -> RusotoError<CreateTrafficPolicyInstanceError> {
8170        {
8171            let reader = EventReader::new(res.body.as_ref());
8172            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8173            find_start_element(&mut stack);
8174            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8175                match &parsed_error.code[..] {
8176                    "InvalidInput" => {
8177                        return RusotoError::Service(
8178                            CreateTrafficPolicyInstanceError::InvalidInput(parsed_error.message),
8179                        )
8180                    }
8181                    "NoSuchHostedZone" => {
8182                        return RusotoError::Service(
8183                            CreateTrafficPolicyInstanceError::NoSuchHostedZone(
8184                                parsed_error.message,
8185                            ),
8186                        )
8187                    }
8188                    "NoSuchTrafficPolicy" => {
8189                        return RusotoError::Service(
8190                            CreateTrafficPolicyInstanceError::NoSuchTrafficPolicy(
8191                                parsed_error.message,
8192                            ),
8193                        )
8194                    }
8195                    "TooManyTrafficPolicyInstances" => {
8196                        return RusotoError::Service(
8197                            CreateTrafficPolicyInstanceError::TooManyTrafficPolicyInstances(
8198                                parsed_error.message,
8199                            ),
8200                        )
8201                    }
8202                    "TrafficPolicyInstanceAlreadyExists" => {
8203                        return RusotoError::Service(
8204                            CreateTrafficPolicyInstanceError::TrafficPolicyInstanceAlreadyExists(
8205                                parsed_error.message,
8206                            ),
8207                        )
8208                    }
8209                    _ => {}
8210                }
8211            }
8212        }
8213        RusotoError::Unknown(res)
8214    }
8215
8216    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8217    where
8218        T: Peek + Next,
8219    {
8220        xml_util::start_element("ErrorResponse", stack)?;
8221        XmlErrorDeserializer::deserialize("Error", stack)
8222    }
8223}
8224impl fmt::Display for CreateTrafficPolicyInstanceError {
8225    #[allow(unused_variables)]
8226    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8227        match *self {
8228            CreateTrafficPolicyInstanceError::InvalidInput(ref cause) => write!(f, "{}", cause),
8229            CreateTrafficPolicyInstanceError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
8230            CreateTrafficPolicyInstanceError::NoSuchTrafficPolicy(ref cause) => {
8231                write!(f, "{}", cause)
8232            }
8233            CreateTrafficPolicyInstanceError::TooManyTrafficPolicyInstances(ref cause) => {
8234                write!(f, "{}", cause)
8235            }
8236            CreateTrafficPolicyInstanceError::TrafficPolicyInstanceAlreadyExists(ref cause) => {
8237                write!(f, "{}", cause)
8238            }
8239        }
8240    }
8241}
8242impl Error for CreateTrafficPolicyInstanceError {}
8243/// Errors returned by CreateTrafficPolicyVersion
8244#[derive(Debug, PartialEq)]
8245pub enum CreateTrafficPolicyVersionError {
8246    /// <p>Another user submitted a request to create, update, or delete the object at the same time that you did. Retry the request. </p>
8247    ConcurrentModification(String),
8248    /// <p>The input is not valid.</p>
8249    InvalidInput(String),
8250    /// <p>The format of the traffic policy document that you specified in the <code>Document</code> element is invalid.</p>
8251    InvalidTrafficPolicyDocument(String),
8252    /// <p>No traffic policy exists with the specified ID.</p>
8253    NoSuchTrafficPolicy(String),
8254    /// <p>This traffic policy version can't be created because you've reached the limit of 1000 on the number of versions that you can create for the current traffic policy.</p> <p>To create more traffic policy versions, you can use <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetTrafficPolicy.html">GetTrafficPolicy</a> to get the traffic policy document for a specified traffic policy version, and then use <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateTrafficPolicy.html">CreateTrafficPolicy</a> to create a new traffic policy using the traffic policy document.</p>
8255    TooManyTrafficPolicyVersionsForCurrentPolicy(String),
8256}
8257
8258impl CreateTrafficPolicyVersionError {
8259    pub fn from_response(
8260        res: BufferedHttpResponse,
8261    ) -> RusotoError<CreateTrafficPolicyVersionError> {
8262        {
8263            let reader = EventReader::new(res.body.as_ref());
8264            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8265            find_start_element(&mut stack);
8266            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8267                match &parsed_error.code[..] {
8268                                    "ConcurrentModification" => return RusotoError::Service(CreateTrafficPolicyVersionError::ConcurrentModification(parsed_error.message)),"InvalidInput" => return RusotoError::Service(CreateTrafficPolicyVersionError::InvalidInput(parsed_error.message)),"InvalidTrafficPolicyDocument" => return RusotoError::Service(CreateTrafficPolicyVersionError::InvalidTrafficPolicyDocument(parsed_error.message)),"NoSuchTrafficPolicy" => return RusotoError::Service(CreateTrafficPolicyVersionError::NoSuchTrafficPolicy(parsed_error.message)),"TooManyTrafficPolicyVersionsForCurrentPolicy" => return RusotoError::Service(CreateTrafficPolicyVersionError::TooManyTrafficPolicyVersionsForCurrentPolicy(parsed_error.message)),_ => {}
8269                                }
8270            }
8271        }
8272        RusotoError::Unknown(res)
8273    }
8274
8275    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8276    where
8277        T: Peek + Next,
8278    {
8279        xml_util::start_element("ErrorResponse", stack)?;
8280        XmlErrorDeserializer::deserialize("Error", stack)
8281    }
8282}
8283impl fmt::Display for CreateTrafficPolicyVersionError {
8284    #[allow(unused_variables)]
8285    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8286        match *self {
8287            CreateTrafficPolicyVersionError::ConcurrentModification(ref cause) => {
8288                write!(f, "{}", cause)
8289            }
8290            CreateTrafficPolicyVersionError::InvalidInput(ref cause) => write!(f, "{}", cause),
8291            CreateTrafficPolicyVersionError::InvalidTrafficPolicyDocument(ref cause) => {
8292                write!(f, "{}", cause)
8293            }
8294            CreateTrafficPolicyVersionError::NoSuchTrafficPolicy(ref cause) => {
8295                write!(f, "{}", cause)
8296            }
8297            CreateTrafficPolicyVersionError::TooManyTrafficPolicyVersionsForCurrentPolicy(
8298                ref cause,
8299            ) => write!(f, "{}", cause),
8300        }
8301    }
8302}
8303impl Error for CreateTrafficPolicyVersionError {}
8304/// Errors returned by CreateVPCAssociationAuthorization
8305#[derive(Debug, PartialEq)]
8306pub enum CreateVPCAssociationAuthorizationError {
8307    /// <p>Another user submitted a request to create, update, or delete the object at the same time that you did. Retry the request. </p>
8308    ConcurrentModification(String),
8309    /// <p>The input is not valid.</p>
8310    InvalidInput(String),
8311    /// <p>The VPC ID that you specified either isn't a valid ID or the current account is not authorized to access this VPC.</p>
8312    InvalidVPCId(String),
8313    /// <p>No hosted zone exists with the ID that you specified.</p>
8314    NoSuchHostedZone(String),
8315    /// <p>You've created the maximum number of authorizations that can be created for the specified hosted zone. To authorize another VPC to be associated with the hosted zone, submit a <code>DeleteVPCAssociationAuthorization</code> request to remove an existing authorization. To get a list of existing authorizations, submit a <code>ListVPCAssociationAuthorizations</code> request.</p>
8316    TooManyVPCAssociationAuthorizations(String),
8317}
8318
8319impl CreateVPCAssociationAuthorizationError {
8320    pub fn from_response(
8321        res: BufferedHttpResponse,
8322    ) -> RusotoError<CreateVPCAssociationAuthorizationError> {
8323        {
8324            let reader = EventReader::new(res.body.as_ref());
8325            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8326            find_start_element(&mut stack);
8327            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8328                match &parsed_error.code[..] {
8329                    "ConcurrentModification" => {
8330                        return RusotoError::Service(
8331                            CreateVPCAssociationAuthorizationError::ConcurrentModification(
8332                                parsed_error.message,
8333                            ),
8334                        )
8335                    }
8336                    "InvalidInput" => {
8337                        return RusotoError::Service(
8338                            CreateVPCAssociationAuthorizationError::InvalidInput(
8339                                parsed_error.message,
8340                            ),
8341                        )
8342                    }
8343                    "InvalidVPCId" => {
8344                        return RusotoError::Service(
8345                            CreateVPCAssociationAuthorizationError::InvalidVPCId(
8346                                parsed_error.message,
8347                            ),
8348                        )
8349                    }
8350                    "NoSuchHostedZone" => {
8351                        return RusotoError::Service(
8352                            CreateVPCAssociationAuthorizationError::NoSuchHostedZone(
8353                                parsed_error.message,
8354                            ),
8355                        )
8356                    }
8357                    "TooManyVPCAssociationAuthorizations" => return RusotoError::Service(
8358                        CreateVPCAssociationAuthorizationError::TooManyVPCAssociationAuthorizations(
8359                            parsed_error.message,
8360                        ),
8361                    ),
8362                    _ => {}
8363                }
8364            }
8365        }
8366        RusotoError::Unknown(res)
8367    }
8368
8369    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8370    where
8371        T: Peek + Next,
8372    {
8373        xml_util::start_element("ErrorResponse", stack)?;
8374        XmlErrorDeserializer::deserialize("Error", stack)
8375    }
8376}
8377impl fmt::Display for CreateVPCAssociationAuthorizationError {
8378    #[allow(unused_variables)]
8379    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8380        match *self {
8381            CreateVPCAssociationAuthorizationError::ConcurrentModification(ref cause) => {
8382                write!(f, "{}", cause)
8383            }
8384            CreateVPCAssociationAuthorizationError::InvalidInput(ref cause) => {
8385                write!(f, "{}", cause)
8386            }
8387            CreateVPCAssociationAuthorizationError::InvalidVPCId(ref cause) => {
8388                write!(f, "{}", cause)
8389            }
8390            CreateVPCAssociationAuthorizationError::NoSuchHostedZone(ref cause) => {
8391                write!(f, "{}", cause)
8392            }
8393            CreateVPCAssociationAuthorizationError::TooManyVPCAssociationAuthorizations(
8394                ref cause,
8395            ) => write!(f, "{}", cause),
8396        }
8397    }
8398}
8399impl Error for CreateVPCAssociationAuthorizationError {}
8400/// Errors returned by DeleteHealthCheck
8401#[derive(Debug, PartialEq)]
8402pub enum DeleteHealthCheckError {
8403    /// <p>This error code is not in use.</p>
8404    HealthCheckInUse(String),
8405    /// <p>The input is not valid.</p>
8406    InvalidInput(String),
8407    /// <p>No health check exists with the specified ID.</p>
8408    NoSuchHealthCheck(String),
8409}
8410
8411impl DeleteHealthCheckError {
8412    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteHealthCheckError> {
8413        {
8414            let reader = EventReader::new(res.body.as_ref());
8415            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8416            find_start_element(&mut stack);
8417            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8418                match &parsed_error.code[..] {
8419                    "HealthCheckInUse" => {
8420                        return RusotoError::Service(DeleteHealthCheckError::HealthCheckInUse(
8421                            parsed_error.message,
8422                        ))
8423                    }
8424                    "InvalidInput" => {
8425                        return RusotoError::Service(DeleteHealthCheckError::InvalidInput(
8426                            parsed_error.message,
8427                        ))
8428                    }
8429                    "NoSuchHealthCheck" => {
8430                        return RusotoError::Service(DeleteHealthCheckError::NoSuchHealthCheck(
8431                            parsed_error.message,
8432                        ))
8433                    }
8434                    _ => {}
8435                }
8436            }
8437        }
8438        RusotoError::Unknown(res)
8439    }
8440
8441    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8442    where
8443        T: Peek + Next,
8444    {
8445        xml_util::start_element("ErrorResponse", stack)?;
8446        XmlErrorDeserializer::deserialize("Error", stack)
8447    }
8448}
8449impl fmt::Display for DeleteHealthCheckError {
8450    #[allow(unused_variables)]
8451    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8452        match *self {
8453            DeleteHealthCheckError::HealthCheckInUse(ref cause) => write!(f, "{}", cause),
8454            DeleteHealthCheckError::InvalidInput(ref cause) => write!(f, "{}", cause),
8455            DeleteHealthCheckError::NoSuchHealthCheck(ref cause) => write!(f, "{}", cause),
8456        }
8457    }
8458}
8459impl Error for DeleteHealthCheckError {}
8460/// Errors returned by DeleteHostedZone
8461#[derive(Debug, PartialEq)]
8462pub enum DeleteHostedZoneError {
8463    /// <p>The hosted zone contains resource records that are not SOA or NS records.</p>
8464    HostedZoneNotEmpty(String),
8465    /// <p>The specified domain name is not valid.</p>
8466    InvalidDomainName(String),
8467    /// <p>The input is not valid.</p>
8468    InvalidInput(String),
8469    /// <p>No hosted zone exists with the ID that you specified.</p>
8470    NoSuchHostedZone(String),
8471    /// <p>If Amazon Route 53 can't process a request before the next request arrives, it will reject subsequent requests for the same hosted zone and return an <code>HTTP 400 error</code> (<code>Bad request</code>). If Route 53 returns this error repeatedly for the same request, we recommend that you wait, in intervals of increasing duration, before you try the request again.</p>
8472    PriorRequestNotComplete(String),
8473}
8474
8475impl DeleteHostedZoneError {
8476    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteHostedZoneError> {
8477        {
8478            let reader = EventReader::new(res.body.as_ref());
8479            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8480            find_start_element(&mut stack);
8481            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8482                match &parsed_error.code[..] {
8483                    "HostedZoneNotEmpty" => {
8484                        return RusotoError::Service(DeleteHostedZoneError::HostedZoneNotEmpty(
8485                            parsed_error.message,
8486                        ))
8487                    }
8488                    "InvalidDomainName" => {
8489                        return RusotoError::Service(DeleteHostedZoneError::InvalidDomainName(
8490                            parsed_error.message,
8491                        ))
8492                    }
8493                    "InvalidInput" => {
8494                        return RusotoError::Service(DeleteHostedZoneError::InvalidInput(
8495                            parsed_error.message,
8496                        ))
8497                    }
8498                    "NoSuchHostedZone" => {
8499                        return RusotoError::Service(DeleteHostedZoneError::NoSuchHostedZone(
8500                            parsed_error.message,
8501                        ))
8502                    }
8503                    "PriorRequestNotComplete" => {
8504                        return RusotoError::Service(
8505                            DeleteHostedZoneError::PriorRequestNotComplete(parsed_error.message),
8506                        )
8507                    }
8508                    _ => {}
8509                }
8510            }
8511        }
8512        RusotoError::Unknown(res)
8513    }
8514
8515    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8516    where
8517        T: Peek + Next,
8518    {
8519        xml_util::start_element("ErrorResponse", stack)?;
8520        XmlErrorDeserializer::deserialize("Error", stack)
8521    }
8522}
8523impl fmt::Display for DeleteHostedZoneError {
8524    #[allow(unused_variables)]
8525    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8526        match *self {
8527            DeleteHostedZoneError::HostedZoneNotEmpty(ref cause) => write!(f, "{}", cause),
8528            DeleteHostedZoneError::InvalidDomainName(ref cause) => write!(f, "{}", cause),
8529            DeleteHostedZoneError::InvalidInput(ref cause) => write!(f, "{}", cause),
8530            DeleteHostedZoneError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
8531            DeleteHostedZoneError::PriorRequestNotComplete(ref cause) => write!(f, "{}", cause),
8532        }
8533    }
8534}
8535impl Error for DeleteHostedZoneError {}
8536/// Errors returned by DeleteQueryLoggingConfig
8537#[derive(Debug, PartialEq)]
8538pub enum DeleteQueryLoggingConfigError {
8539    /// <p>Another user submitted a request to create, update, or delete the object at the same time that you did. Retry the request. </p>
8540    ConcurrentModification(String),
8541    /// <p>The input is not valid.</p>
8542    InvalidInput(String),
8543    /// <p>There is no DNS query logging configuration with the specified ID.</p>
8544    NoSuchQueryLoggingConfig(String),
8545}
8546
8547impl DeleteQueryLoggingConfigError {
8548    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteQueryLoggingConfigError> {
8549        {
8550            let reader = EventReader::new(res.body.as_ref());
8551            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8552            find_start_element(&mut stack);
8553            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8554                match &parsed_error.code[..] {
8555                    "ConcurrentModification" => {
8556                        return RusotoError::Service(
8557                            DeleteQueryLoggingConfigError::ConcurrentModification(
8558                                parsed_error.message,
8559                            ),
8560                        )
8561                    }
8562                    "InvalidInput" => {
8563                        return RusotoError::Service(DeleteQueryLoggingConfigError::InvalidInput(
8564                            parsed_error.message,
8565                        ))
8566                    }
8567                    "NoSuchQueryLoggingConfig" => {
8568                        return RusotoError::Service(
8569                            DeleteQueryLoggingConfigError::NoSuchQueryLoggingConfig(
8570                                parsed_error.message,
8571                            ),
8572                        )
8573                    }
8574                    _ => {}
8575                }
8576            }
8577        }
8578        RusotoError::Unknown(res)
8579    }
8580
8581    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8582    where
8583        T: Peek + Next,
8584    {
8585        xml_util::start_element("ErrorResponse", stack)?;
8586        XmlErrorDeserializer::deserialize("Error", stack)
8587    }
8588}
8589impl fmt::Display for DeleteQueryLoggingConfigError {
8590    #[allow(unused_variables)]
8591    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8592        match *self {
8593            DeleteQueryLoggingConfigError::ConcurrentModification(ref cause) => {
8594                write!(f, "{}", cause)
8595            }
8596            DeleteQueryLoggingConfigError::InvalidInput(ref cause) => write!(f, "{}", cause),
8597            DeleteQueryLoggingConfigError::NoSuchQueryLoggingConfig(ref cause) => {
8598                write!(f, "{}", cause)
8599            }
8600        }
8601    }
8602}
8603impl Error for DeleteQueryLoggingConfigError {}
8604/// Errors returned by DeleteReusableDelegationSet
8605#[derive(Debug, PartialEq)]
8606pub enum DeleteReusableDelegationSetError {
8607    /// <p>The specified delegation contains associated hosted zones which must be deleted before the reusable delegation set can be deleted.</p>
8608    DelegationSetInUse(String),
8609    /// <p>A reusable delegation set with the specified ID does not exist.</p>
8610    DelegationSetNotReusable(String),
8611    /// <p>The input is not valid.</p>
8612    InvalidInput(String),
8613    /// <p>A reusable delegation set with the specified ID does not exist.</p>
8614    NoSuchDelegationSet(String),
8615}
8616
8617impl DeleteReusableDelegationSetError {
8618    pub fn from_response(
8619        res: BufferedHttpResponse,
8620    ) -> RusotoError<DeleteReusableDelegationSetError> {
8621        {
8622            let reader = EventReader::new(res.body.as_ref());
8623            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8624            find_start_element(&mut stack);
8625            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8626                match &parsed_error.code[..] {
8627                    "DelegationSetInUse" => {
8628                        return RusotoError::Service(
8629                            DeleteReusableDelegationSetError::DelegationSetInUse(
8630                                parsed_error.message,
8631                            ),
8632                        )
8633                    }
8634                    "DelegationSetNotReusable" => {
8635                        return RusotoError::Service(
8636                            DeleteReusableDelegationSetError::DelegationSetNotReusable(
8637                                parsed_error.message,
8638                            ),
8639                        )
8640                    }
8641                    "InvalidInput" => {
8642                        return RusotoError::Service(
8643                            DeleteReusableDelegationSetError::InvalidInput(parsed_error.message),
8644                        )
8645                    }
8646                    "NoSuchDelegationSet" => {
8647                        return RusotoError::Service(
8648                            DeleteReusableDelegationSetError::NoSuchDelegationSet(
8649                                parsed_error.message,
8650                            ),
8651                        )
8652                    }
8653                    _ => {}
8654                }
8655            }
8656        }
8657        RusotoError::Unknown(res)
8658    }
8659
8660    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8661    where
8662        T: Peek + Next,
8663    {
8664        xml_util::start_element("ErrorResponse", stack)?;
8665        XmlErrorDeserializer::deserialize("Error", stack)
8666    }
8667}
8668impl fmt::Display for DeleteReusableDelegationSetError {
8669    #[allow(unused_variables)]
8670    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8671        match *self {
8672            DeleteReusableDelegationSetError::DelegationSetInUse(ref cause) => {
8673                write!(f, "{}", cause)
8674            }
8675            DeleteReusableDelegationSetError::DelegationSetNotReusable(ref cause) => {
8676                write!(f, "{}", cause)
8677            }
8678            DeleteReusableDelegationSetError::InvalidInput(ref cause) => write!(f, "{}", cause),
8679            DeleteReusableDelegationSetError::NoSuchDelegationSet(ref cause) => {
8680                write!(f, "{}", cause)
8681            }
8682        }
8683    }
8684}
8685impl Error for DeleteReusableDelegationSetError {}
8686/// Errors returned by DeleteTrafficPolicy
8687#[derive(Debug, PartialEq)]
8688pub enum DeleteTrafficPolicyError {
8689    /// <p>Another user submitted a request to create, update, or delete the object at the same time that you did. Retry the request. </p>
8690    ConcurrentModification(String),
8691    /// <p>The input is not valid.</p>
8692    InvalidInput(String),
8693    /// <p>No traffic policy exists with the specified ID.</p>
8694    NoSuchTrafficPolicy(String),
8695    /// <p>One or more traffic policy instances were created by using the specified traffic policy.</p>
8696    TrafficPolicyInUse(String),
8697}
8698
8699impl DeleteTrafficPolicyError {
8700    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteTrafficPolicyError> {
8701        {
8702            let reader = EventReader::new(res.body.as_ref());
8703            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8704            find_start_element(&mut stack);
8705            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8706                match &parsed_error.code[..] {
8707                    "ConcurrentModification" => {
8708                        return RusotoError::Service(
8709                            DeleteTrafficPolicyError::ConcurrentModification(parsed_error.message),
8710                        )
8711                    }
8712                    "InvalidInput" => {
8713                        return RusotoError::Service(DeleteTrafficPolicyError::InvalidInput(
8714                            parsed_error.message,
8715                        ))
8716                    }
8717                    "NoSuchTrafficPolicy" => {
8718                        return RusotoError::Service(DeleteTrafficPolicyError::NoSuchTrafficPolicy(
8719                            parsed_error.message,
8720                        ))
8721                    }
8722                    "TrafficPolicyInUse" => {
8723                        return RusotoError::Service(DeleteTrafficPolicyError::TrafficPolicyInUse(
8724                            parsed_error.message,
8725                        ))
8726                    }
8727                    _ => {}
8728                }
8729            }
8730        }
8731        RusotoError::Unknown(res)
8732    }
8733
8734    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8735    where
8736        T: Peek + Next,
8737    {
8738        xml_util::start_element("ErrorResponse", stack)?;
8739        XmlErrorDeserializer::deserialize("Error", stack)
8740    }
8741}
8742impl fmt::Display for DeleteTrafficPolicyError {
8743    #[allow(unused_variables)]
8744    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8745        match *self {
8746            DeleteTrafficPolicyError::ConcurrentModification(ref cause) => write!(f, "{}", cause),
8747            DeleteTrafficPolicyError::InvalidInput(ref cause) => write!(f, "{}", cause),
8748            DeleteTrafficPolicyError::NoSuchTrafficPolicy(ref cause) => write!(f, "{}", cause),
8749            DeleteTrafficPolicyError::TrafficPolicyInUse(ref cause) => write!(f, "{}", cause),
8750        }
8751    }
8752}
8753impl Error for DeleteTrafficPolicyError {}
8754/// Errors returned by DeleteTrafficPolicyInstance
8755#[derive(Debug, PartialEq)]
8756pub enum DeleteTrafficPolicyInstanceError {
8757    /// <p>The input is not valid.</p>
8758    InvalidInput(String),
8759    /// <p>No traffic policy instance exists with the specified ID.</p>
8760    NoSuchTrafficPolicyInstance(String),
8761    /// <p>If Amazon Route 53 can't process a request before the next request arrives, it will reject subsequent requests for the same hosted zone and return an <code>HTTP 400 error</code> (<code>Bad request</code>). If Route 53 returns this error repeatedly for the same request, we recommend that you wait, in intervals of increasing duration, before you try the request again.</p>
8762    PriorRequestNotComplete(String),
8763}
8764
8765impl DeleteTrafficPolicyInstanceError {
8766    pub fn from_response(
8767        res: BufferedHttpResponse,
8768    ) -> RusotoError<DeleteTrafficPolicyInstanceError> {
8769        {
8770            let reader = EventReader::new(res.body.as_ref());
8771            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8772            find_start_element(&mut stack);
8773            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8774                match &parsed_error.code[..] {
8775                    "InvalidInput" => {
8776                        return RusotoError::Service(
8777                            DeleteTrafficPolicyInstanceError::InvalidInput(parsed_error.message),
8778                        )
8779                    }
8780                    "NoSuchTrafficPolicyInstance" => {
8781                        return RusotoError::Service(
8782                            DeleteTrafficPolicyInstanceError::NoSuchTrafficPolicyInstance(
8783                                parsed_error.message,
8784                            ),
8785                        )
8786                    }
8787                    "PriorRequestNotComplete" => {
8788                        return RusotoError::Service(
8789                            DeleteTrafficPolicyInstanceError::PriorRequestNotComplete(
8790                                parsed_error.message,
8791                            ),
8792                        )
8793                    }
8794                    _ => {}
8795                }
8796            }
8797        }
8798        RusotoError::Unknown(res)
8799    }
8800
8801    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8802    where
8803        T: Peek + Next,
8804    {
8805        xml_util::start_element("ErrorResponse", stack)?;
8806        XmlErrorDeserializer::deserialize("Error", stack)
8807    }
8808}
8809impl fmt::Display for DeleteTrafficPolicyInstanceError {
8810    #[allow(unused_variables)]
8811    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8812        match *self {
8813            DeleteTrafficPolicyInstanceError::InvalidInput(ref cause) => write!(f, "{}", cause),
8814            DeleteTrafficPolicyInstanceError::NoSuchTrafficPolicyInstance(ref cause) => {
8815                write!(f, "{}", cause)
8816            }
8817            DeleteTrafficPolicyInstanceError::PriorRequestNotComplete(ref cause) => {
8818                write!(f, "{}", cause)
8819            }
8820        }
8821    }
8822}
8823impl Error for DeleteTrafficPolicyInstanceError {}
8824/// Errors returned by DeleteVPCAssociationAuthorization
8825#[derive(Debug, PartialEq)]
8826pub enum DeleteVPCAssociationAuthorizationError {
8827    /// <p>Another user submitted a request to create, update, or delete the object at the same time that you did. Retry the request. </p>
8828    ConcurrentModification(String),
8829    /// <p>The input is not valid.</p>
8830    InvalidInput(String),
8831    /// <p>The VPC ID that you specified either isn't a valid ID or the current account is not authorized to access this VPC.</p>
8832    InvalidVPCId(String),
8833    /// <p>No hosted zone exists with the ID that you specified.</p>
8834    NoSuchHostedZone(String),
8835    /// <p>The VPC that you specified is not authorized to be associated with the hosted zone.</p>
8836    VPCAssociationAuthorizationNotFound(String),
8837}
8838
8839impl DeleteVPCAssociationAuthorizationError {
8840    pub fn from_response(
8841        res: BufferedHttpResponse,
8842    ) -> RusotoError<DeleteVPCAssociationAuthorizationError> {
8843        {
8844            let reader = EventReader::new(res.body.as_ref());
8845            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8846            find_start_element(&mut stack);
8847            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8848                match &parsed_error.code[..] {
8849                    "ConcurrentModification" => {
8850                        return RusotoError::Service(
8851                            DeleteVPCAssociationAuthorizationError::ConcurrentModification(
8852                                parsed_error.message,
8853                            ),
8854                        )
8855                    }
8856                    "InvalidInput" => {
8857                        return RusotoError::Service(
8858                            DeleteVPCAssociationAuthorizationError::InvalidInput(
8859                                parsed_error.message,
8860                            ),
8861                        )
8862                    }
8863                    "InvalidVPCId" => {
8864                        return RusotoError::Service(
8865                            DeleteVPCAssociationAuthorizationError::InvalidVPCId(
8866                                parsed_error.message,
8867                            ),
8868                        )
8869                    }
8870                    "NoSuchHostedZone" => {
8871                        return RusotoError::Service(
8872                            DeleteVPCAssociationAuthorizationError::NoSuchHostedZone(
8873                                parsed_error.message,
8874                            ),
8875                        )
8876                    }
8877                    "VPCAssociationAuthorizationNotFound" => return RusotoError::Service(
8878                        DeleteVPCAssociationAuthorizationError::VPCAssociationAuthorizationNotFound(
8879                            parsed_error.message,
8880                        ),
8881                    ),
8882                    _ => {}
8883                }
8884            }
8885        }
8886        RusotoError::Unknown(res)
8887    }
8888
8889    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8890    where
8891        T: Peek + Next,
8892    {
8893        xml_util::start_element("ErrorResponse", stack)?;
8894        XmlErrorDeserializer::deserialize("Error", stack)
8895    }
8896}
8897impl fmt::Display for DeleteVPCAssociationAuthorizationError {
8898    #[allow(unused_variables)]
8899    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8900        match *self {
8901            DeleteVPCAssociationAuthorizationError::ConcurrentModification(ref cause) => {
8902                write!(f, "{}", cause)
8903            }
8904            DeleteVPCAssociationAuthorizationError::InvalidInput(ref cause) => {
8905                write!(f, "{}", cause)
8906            }
8907            DeleteVPCAssociationAuthorizationError::InvalidVPCId(ref cause) => {
8908                write!(f, "{}", cause)
8909            }
8910            DeleteVPCAssociationAuthorizationError::NoSuchHostedZone(ref cause) => {
8911                write!(f, "{}", cause)
8912            }
8913            DeleteVPCAssociationAuthorizationError::VPCAssociationAuthorizationNotFound(
8914                ref cause,
8915            ) => write!(f, "{}", cause),
8916        }
8917    }
8918}
8919impl Error for DeleteVPCAssociationAuthorizationError {}
8920/// Errors returned by DisassociateVPCFromHostedZone
8921#[derive(Debug, PartialEq)]
8922pub enum DisassociateVPCFromHostedZoneError {
8923    /// <p>The input is not valid.</p>
8924    InvalidInput(String),
8925    /// <p>The VPC ID that you specified either isn't a valid ID or the current account is not authorized to access this VPC.</p>
8926    InvalidVPCId(String),
8927    /// <p>The VPC that you're trying to disassociate from the private hosted zone is the last VPC that is associated with the hosted zone. Amazon Route 53 doesn't support disassociating the last VPC from a hosted zone.</p>
8928    LastVPCAssociation(String),
8929    /// <p>No hosted zone exists with the ID that you specified.</p>
8930    NoSuchHostedZone(String),
8931    /// <p>The specified VPC and hosted zone are not currently associated.</p>
8932    VPCAssociationNotFound(String),
8933}
8934
8935impl DisassociateVPCFromHostedZoneError {
8936    pub fn from_response(
8937        res: BufferedHttpResponse,
8938    ) -> RusotoError<DisassociateVPCFromHostedZoneError> {
8939        {
8940            let reader = EventReader::new(res.body.as_ref());
8941            let mut stack = XmlResponse::new(reader.into_iter().peekable());
8942            find_start_element(&mut stack);
8943            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
8944                match &parsed_error.code[..] {
8945                    "InvalidInput" => {
8946                        return RusotoError::Service(
8947                            DisassociateVPCFromHostedZoneError::InvalidInput(parsed_error.message),
8948                        )
8949                    }
8950                    "InvalidVPCId" => {
8951                        return RusotoError::Service(
8952                            DisassociateVPCFromHostedZoneError::InvalidVPCId(parsed_error.message),
8953                        )
8954                    }
8955                    "LastVPCAssociation" => {
8956                        return RusotoError::Service(
8957                            DisassociateVPCFromHostedZoneError::LastVPCAssociation(
8958                                parsed_error.message,
8959                            ),
8960                        )
8961                    }
8962                    "NoSuchHostedZone" => {
8963                        return RusotoError::Service(
8964                            DisassociateVPCFromHostedZoneError::NoSuchHostedZone(
8965                                parsed_error.message,
8966                            ),
8967                        )
8968                    }
8969                    "VPCAssociationNotFound" => {
8970                        return RusotoError::Service(
8971                            DisassociateVPCFromHostedZoneError::VPCAssociationNotFound(
8972                                parsed_error.message,
8973                            ),
8974                        )
8975                    }
8976                    _ => {}
8977                }
8978            }
8979        }
8980        RusotoError::Unknown(res)
8981    }
8982
8983    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
8984    where
8985        T: Peek + Next,
8986    {
8987        xml_util::start_element("ErrorResponse", stack)?;
8988        XmlErrorDeserializer::deserialize("Error", stack)
8989    }
8990}
8991impl fmt::Display for DisassociateVPCFromHostedZoneError {
8992    #[allow(unused_variables)]
8993    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8994        match *self {
8995            DisassociateVPCFromHostedZoneError::InvalidInput(ref cause) => write!(f, "{}", cause),
8996            DisassociateVPCFromHostedZoneError::InvalidVPCId(ref cause) => write!(f, "{}", cause),
8997            DisassociateVPCFromHostedZoneError::LastVPCAssociation(ref cause) => {
8998                write!(f, "{}", cause)
8999            }
9000            DisassociateVPCFromHostedZoneError::NoSuchHostedZone(ref cause) => {
9001                write!(f, "{}", cause)
9002            }
9003            DisassociateVPCFromHostedZoneError::VPCAssociationNotFound(ref cause) => {
9004                write!(f, "{}", cause)
9005            }
9006        }
9007    }
9008}
9009impl Error for DisassociateVPCFromHostedZoneError {}
9010/// Errors returned by GetAccountLimit
9011#[derive(Debug, PartialEq)]
9012pub enum GetAccountLimitError {
9013    /// <p>The input is not valid.</p>
9014    InvalidInput(String),
9015}
9016
9017impl GetAccountLimitError {
9018    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetAccountLimitError> {
9019        {
9020            let reader = EventReader::new(res.body.as_ref());
9021            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9022            find_start_element(&mut stack);
9023            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9024                match &parsed_error.code[..] {
9025                    "InvalidInput" => {
9026                        return RusotoError::Service(GetAccountLimitError::InvalidInput(
9027                            parsed_error.message,
9028                        ))
9029                    }
9030                    _ => {}
9031                }
9032            }
9033        }
9034        RusotoError::Unknown(res)
9035    }
9036
9037    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9038    where
9039        T: Peek + Next,
9040    {
9041        xml_util::start_element("ErrorResponse", stack)?;
9042        XmlErrorDeserializer::deserialize("Error", stack)
9043    }
9044}
9045impl fmt::Display for GetAccountLimitError {
9046    #[allow(unused_variables)]
9047    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9048        match *self {
9049            GetAccountLimitError::InvalidInput(ref cause) => write!(f, "{}", cause),
9050        }
9051    }
9052}
9053impl Error for GetAccountLimitError {}
9054/// Errors returned by GetChange
9055#[derive(Debug, PartialEq)]
9056pub enum GetChangeError {
9057    /// <p>The input is not valid.</p>
9058    InvalidInput(String),
9059    /// <p>A change with the specified change ID does not exist.</p>
9060    NoSuchChange(String),
9061}
9062
9063impl GetChangeError {
9064    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetChangeError> {
9065        {
9066            let reader = EventReader::new(res.body.as_ref());
9067            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9068            find_start_element(&mut stack);
9069            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9070                match &parsed_error.code[..] {
9071                    "InvalidInput" => {
9072                        return RusotoError::Service(GetChangeError::InvalidInput(
9073                            parsed_error.message,
9074                        ))
9075                    }
9076                    "NoSuchChange" => {
9077                        return RusotoError::Service(GetChangeError::NoSuchChange(
9078                            parsed_error.message,
9079                        ))
9080                    }
9081                    _ => {}
9082                }
9083            }
9084        }
9085        RusotoError::Unknown(res)
9086    }
9087
9088    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9089    where
9090        T: Peek + Next,
9091    {
9092        xml_util::start_element("ErrorResponse", stack)?;
9093        XmlErrorDeserializer::deserialize("Error", stack)
9094    }
9095}
9096impl fmt::Display for GetChangeError {
9097    #[allow(unused_variables)]
9098    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9099        match *self {
9100            GetChangeError::InvalidInput(ref cause) => write!(f, "{}", cause),
9101            GetChangeError::NoSuchChange(ref cause) => write!(f, "{}", cause),
9102        }
9103    }
9104}
9105impl Error for GetChangeError {}
9106/// Errors returned by GetCheckerIpRanges
9107#[derive(Debug, PartialEq)]
9108pub enum GetCheckerIpRangesError {}
9109
9110impl GetCheckerIpRangesError {
9111    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetCheckerIpRangesError> {
9112        {
9113            let reader = EventReader::new(res.body.as_ref());
9114            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9115            find_start_element(&mut stack);
9116            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9117                match &parsed_error.code[..] {
9118                    _ => {}
9119                }
9120            }
9121        }
9122        RusotoError::Unknown(res)
9123    }
9124
9125    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9126    where
9127        T: Peek + Next,
9128    {
9129        xml_util::start_element("ErrorResponse", stack)?;
9130        XmlErrorDeserializer::deserialize("Error", stack)
9131    }
9132}
9133impl fmt::Display for GetCheckerIpRangesError {
9134    #[allow(unused_variables)]
9135    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9136        match *self {}
9137    }
9138}
9139impl Error for GetCheckerIpRangesError {}
9140/// Errors returned by GetGeoLocation
9141#[derive(Debug, PartialEq)]
9142pub enum GetGeoLocationError {
9143    /// <p>The input is not valid.</p>
9144    InvalidInput(String),
9145    /// <p>Amazon Route 53 doesn't support the specified geographic location. For a list of supported geolocation codes, see the <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GeoLocation.html">GeoLocation</a> data type.</p>
9146    NoSuchGeoLocation(String),
9147}
9148
9149impl GetGeoLocationError {
9150    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetGeoLocationError> {
9151        {
9152            let reader = EventReader::new(res.body.as_ref());
9153            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9154            find_start_element(&mut stack);
9155            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9156                match &parsed_error.code[..] {
9157                    "InvalidInput" => {
9158                        return RusotoError::Service(GetGeoLocationError::InvalidInput(
9159                            parsed_error.message,
9160                        ))
9161                    }
9162                    "NoSuchGeoLocation" => {
9163                        return RusotoError::Service(GetGeoLocationError::NoSuchGeoLocation(
9164                            parsed_error.message,
9165                        ))
9166                    }
9167                    _ => {}
9168                }
9169            }
9170        }
9171        RusotoError::Unknown(res)
9172    }
9173
9174    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9175    where
9176        T: Peek + Next,
9177    {
9178        xml_util::start_element("ErrorResponse", stack)?;
9179        XmlErrorDeserializer::deserialize("Error", stack)
9180    }
9181}
9182impl fmt::Display for GetGeoLocationError {
9183    #[allow(unused_variables)]
9184    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9185        match *self {
9186            GetGeoLocationError::InvalidInput(ref cause) => write!(f, "{}", cause),
9187            GetGeoLocationError::NoSuchGeoLocation(ref cause) => write!(f, "{}", cause),
9188        }
9189    }
9190}
9191impl Error for GetGeoLocationError {}
9192/// Errors returned by GetHealthCheck
9193#[derive(Debug, PartialEq)]
9194pub enum GetHealthCheckError {
9195    /// <p>The resource you're trying to access is unsupported on this Amazon Route 53 endpoint.</p>
9196    IncompatibleVersion(String),
9197    /// <p>The input is not valid.</p>
9198    InvalidInput(String),
9199    /// <p>No health check exists with the specified ID.</p>
9200    NoSuchHealthCheck(String),
9201}
9202
9203impl GetHealthCheckError {
9204    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetHealthCheckError> {
9205        {
9206            let reader = EventReader::new(res.body.as_ref());
9207            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9208            find_start_element(&mut stack);
9209            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9210                match &parsed_error.code[..] {
9211                    "IncompatibleVersion" => {
9212                        return RusotoError::Service(GetHealthCheckError::IncompatibleVersion(
9213                            parsed_error.message,
9214                        ))
9215                    }
9216                    "InvalidInput" => {
9217                        return RusotoError::Service(GetHealthCheckError::InvalidInput(
9218                            parsed_error.message,
9219                        ))
9220                    }
9221                    "NoSuchHealthCheck" => {
9222                        return RusotoError::Service(GetHealthCheckError::NoSuchHealthCheck(
9223                            parsed_error.message,
9224                        ))
9225                    }
9226                    _ => {}
9227                }
9228            }
9229        }
9230        RusotoError::Unknown(res)
9231    }
9232
9233    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9234    where
9235        T: Peek + Next,
9236    {
9237        xml_util::start_element("ErrorResponse", stack)?;
9238        XmlErrorDeserializer::deserialize("Error", stack)
9239    }
9240}
9241impl fmt::Display for GetHealthCheckError {
9242    #[allow(unused_variables)]
9243    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9244        match *self {
9245            GetHealthCheckError::IncompatibleVersion(ref cause) => write!(f, "{}", cause),
9246            GetHealthCheckError::InvalidInput(ref cause) => write!(f, "{}", cause),
9247            GetHealthCheckError::NoSuchHealthCheck(ref cause) => write!(f, "{}", cause),
9248        }
9249    }
9250}
9251impl Error for GetHealthCheckError {}
9252/// Errors returned by GetHealthCheckCount
9253#[derive(Debug, PartialEq)]
9254pub enum GetHealthCheckCountError {}
9255
9256impl GetHealthCheckCountError {
9257    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetHealthCheckCountError> {
9258        {
9259            let reader = EventReader::new(res.body.as_ref());
9260            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9261            find_start_element(&mut stack);
9262            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9263                match &parsed_error.code[..] {
9264                    _ => {}
9265                }
9266            }
9267        }
9268        RusotoError::Unknown(res)
9269    }
9270
9271    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9272    where
9273        T: Peek + Next,
9274    {
9275        xml_util::start_element("ErrorResponse", stack)?;
9276        XmlErrorDeserializer::deserialize("Error", stack)
9277    }
9278}
9279impl fmt::Display for GetHealthCheckCountError {
9280    #[allow(unused_variables)]
9281    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9282        match *self {}
9283    }
9284}
9285impl Error for GetHealthCheckCountError {}
9286/// Errors returned by GetHealthCheckLastFailureReason
9287#[derive(Debug, PartialEq)]
9288pub enum GetHealthCheckLastFailureReasonError {
9289    /// <p>The input is not valid.</p>
9290    InvalidInput(String),
9291    /// <p>No health check exists with the specified ID.</p>
9292    NoSuchHealthCheck(String),
9293}
9294
9295impl GetHealthCheckLastFailureReasonError {
9296    pub fn from_response(
9297        res: BufferedHttpResponse,
9298    ) -> RusotoError<GetHealthCheckLastFailureReasonError> {
9299        {
9300            let reader = EventReader::new(res.body.as_ref());
9301            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9302            find_start_element(&mut stack);
9303            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9304                match &parsed_error.code[..] {
9305                    "InvalidInput" => {
9306                        return RusotoError::Service(
9307                            GetHealthCheckLastFailureReasonError::InvalidInput(
9308                                parsed_error.message,
9309                            ),
9310                        )
9311                    }
9312                    "NoSuchHealthCheck" => {
9313                        return RusotoError::Service(
9314                            GetHealthCheckLastFailureReasonError::NoSuchHealthCheck(
9315                                parsed_error.message,
9316                            ),
9317                        )
9318                    }
9319                    _ => {}
9320                }
9321            }
9322        }
9323        RusotoError::Unknown(res)
9324    }
9325
9326    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9327    where
9328        T: Peek + Next,
9329    {
9330        xml_util::start_element("ErrorResponse", stack)?;
9331        XmlErrorDeserializer::deserialize("Error", stack)
9332    }
9333}
9334impl fmt::Display for GetHealthCheckLastFailureReasonError {
9335    #[allow(unused_variables)]
9336    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9337        match *self {
9338            GetHealthCheckLastFailureReasonError::InvalidInput(ref cause) => write!(f, "{}", cause),
9339            GetHealthCheckLastFailureReasonError::NoSuchHealthCheck(ref cause) => {
9340                write!(f, "{}", cause)
9341            }
9342        }
9343    }
9344}
9345impl Error for GetHealthCheckLastFailureReasonError {}
9346/// Errors returned by GetHealthCheckStatus
9347#[derive(Debug, PartialEq)]
9348pub enum GetHealthCheckStatusError {
9349    /// <p>The input is not valid.</p>
9350    InvalidInput(String),
9351    /// <p>No health check exists with the specified ID.</p>
9352    NoSuchHealthCheck(String),
9353}
9354
9355impl GetHealthCheckStatusError {
9356    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetHealthCheckStatusError> {
9357        {
9358            let reader = EventReader::new(res.body.as_ref());
9359            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9360            find_start_element(&mut stack);
9361            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9362                match &parsed_error.code[..] {
9363                    "InvalidInput" => {
9364                        return RusotoError::Service(GetHealthCheckStatusError::InvalidInput(
9365                            parsed_error.message,
9366                        ))
9367                    }
9368                    "NoSuchHealthCheck" => {
9369                        return RusotoError::Service(GetHealthCheckStatusError::NoSuchHealthCheck(
9370                            parsed_error.message,
9371                        ))
9372                    }
9373                    _ => {}
9374                }
9375            }
9376        }
9377        RusotoError::Unknown(res)
9378    }
9379
9380    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9381    where
9382        T: Peek + Next,
9383    {
9384        xml_util::start_element("ErrorResponse", stack)?;
9385        XmlErrorDeserializer::deserialize("Error", stack)
9386    }
9387}
9388impl fmt::Display for GetHealthCheckStatusError {
9389    #[allow(unused_variables)]
9390    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9391        match *self {
9392            GetHealthCheckStatusError::InvalidInput(ref cause) => write!(f, "{}", cause),
9393            GetHealthCheckStatusError::NoSuchHealthCheck(ref cause) => write!(f, "{}", cause),
9394        }
9395    }
9396}
9397impl Error for GetHealthCheckStatusError {}
9398/// Errors returned by GetHostedZone
9399#[derive(Debug, PartialEq)]
9400pub enum GetHostedZoneError {
9401    /// <p>The input is not valid.</p>
9402    InvalidInput(String),
9403    /// <p>No hosted zone exists with the ID that you specified.</p>
9404    NoSuchHostedZone(String),
9405}
9406
9407impl GetHostedZoneError {
9408    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetHostedZoneError> {
9409        {
9410            let reader = EventReader::new(res.body.as_ref());
9411            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9412            find_start_element(&mut stack);
9413            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9414                match &parsed_error.code[..] {
9415                    "InvalidInput" => {
9416                        return RusotoError::Service(GetHostedZoneError::InvalidInput(
9417                            parsed_error.message,
9418                        ))
9419                    }
9420                    "NoSuchHostedZone" => {
9421                        return RusotoError::Service(GetHostedZoneError::NoSuchHostedZone(
9422                            parsed_error.message,
9423                        ))
9424                    }
9425                    _ => {}
9426                }
9427            }
9428        }
9429        RusotoError::Unknown(res)
9430    }
9431
9432    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9433    where
9434        T: Peek + Next,
9435    {
9436        xml_util::start_element("ErrorResponse", stack)?;
9437        XmlErrorDeserializer::deserialize("Error", stack)
9438    }
9439}
9440impl fmt::Display for GetHostedZoneError {
9441    #[allow(unused_variables)]
9442    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9443        match *self {
9444            GetHostedZoneError::InvalidInput(ref cause) => write!(f, "{}", cause),
9445            GetHostedZoneError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
9446        }
9447    }
9448}
9449impl Error for GetHostedZoneError {}
9450/// Errors returned by GetHostedZoneCount
9451#[derive(Debug, PartialEq)]
9452pub enum GetHostedZoneCountError {
9453    /// <p>The input is not valid.</p>
9454    InvalidInput(String),
9455}
9456
9457impl GetHostedZoneCountError {
9458    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetHostedZoneCountError> {
9459        {
9460            let reader = EventReader::new(res.body.as_ref());
9461            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9462            find_start_element(&mut stack);
9463            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9464                match &parsed_error.code[..] {
9465                    "InvalidInput" => {
9466                        return RusotoError::Service(GetHostedZoneCountError::InvalidInput(
9467                            parsed_error.message,
9468                        ))
9469                    }
9470                    _ => {}
9471                }
9472            }
9473        }
9474        RusotoError::Unknown(res)
9475    }
9476
9477    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9478    where
9479        T: Peek + Next,
9480    {
9481        xml_util::start_element("ErrorResponse", stack)?;
9482        XmlErrorDeserializer::deserialize("Error", stack)
9483    }
9484}
9485impl fmt::Display for GetHostedZoneCountError {
9486    #[allow(unused_variables)]
9487    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9488        match *self {
9489            GetHostedZoneCountError::InvalidInput(ref cause) => write!(f, "{}", cause),
9490        }
9491    }
9492}
9493impl Error for GetHostedZoneCountError {}
9494/// Errors returned by GetHostedZoneLimit
9495#[derive(Debug, PartialEq)]
9496pub enum GetHostedZoneLimitError {
9497    /// <p>The specified hosted zone is a public hosted zone, not a private hosted zone.</p>
9498    HostedZoneNotPrivate(String),
9499    /// <p>The input is not valid.</p>
9500    InvalidInput(String),
9501    /// <p>No hosted zone exists with the ID that you specified.</p>
9502    NoSuchHostedZone(String),
9503}
9504
9505impl GetHostedZoneLimitError {
9506    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetHostedZoneLimitError> {
9507        {
9508            let reader = EventReader::new(res.body.as_ref());
9509            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9510            find_start_element(&mut stack);
9511            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9512                match &parsed_error.code[..] {
9513                    "HostedZoneNotPrivate" => {
9514                        return RusotoError::Service(GetHostedZoneLimitError::HostedZoneNotPrivate(
9515                            parsed_error.message,
9516                        ))
9517                    }
9518                    "InvalidInput" => {
9519                        return RusotoError::Service(GetHostedZoneLimitError::InvalidInput(
9520                            parsed_error.message,
9521                        ))
9522                    }
9523                    "NoSuchHostedZone" => {
9524                        return RusotoError::Service(GetHostedZoneLimitError::NoSuchHostedZone(
9525                            parsed_error.message,
9526                        ))
9527                    }
9528                    _ => {}
9529                }
9530            }
9531        }
9532        RusotoError::Unknown(res)
9533    }
9534
9535    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9536    where
9537        T: Peek + Next,
9538    {
9539        xml_util::start_element("ErrorResponse", stack)?;
9540        XmlErrorDeserializer::deserialize("Error", stack)
9541    }
9542}
9543impl fmt::Display for GetHostedZoneLimitError {
9544    #[allow(unused_variables)]
9545    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9546        match *self {
9547            GetHostedZoneLimitError::HostedZoneNotPrivate(ref cause) => write!(f, "{}", cause),
9548            GetHostedZoneLimitError::InvalidInput(ref cause) => write!(f, "{}", cause),
9549            GetHostedZoneLimitError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
9550        }
9551    }
9552}
9553impl Error for GetHostedZoneLimitError {}
9554/// Errors returned by GetQueryLoggingConfig
9555#[derive(Debug, PartialEq)]
9556pub enum GetQueryLoggingConfigError {
9557    /// <p>The input is not valid.</p>
9558    InvalidInput(String),
9559    /// <p>There is no DNS query logging configuration with the specified ID.</p>
9560    NoSuchQueryLoggingConfig(String),
9561}
9562
9563impl GetQueryLoggingConfigError {
9564    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetQueryLoggingConfigError> {
9565        {
9566            let reader = EventReader::new(res.body.as_ref());
9567            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9568            find_start_element(&mut stack);
9569            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9570                match &parsed_error.code[..] {
9571                    "InvalidInput" => {
9572                        return RusotoError::Service(GetQueryLoggingConfigError::InvalidInput(
9573                            parsed_error.message,
9574                        ))
9575                    }
9576                    "NoSuchQueryLoggingConfig" => {
9577                        return RusotoError::Service(
9578                            GetQueryLoggingConfigError::NoSuchQueryLoggingConfig(
9579                                parsed_error.message,
9580                            ),
9581                        )
9582                    }
9583                    _ => {}
9584                }
9585            }
9586        }
9587        RusotoError::Unknown(res)
9588    }
9589
9590    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9591    where
9592        T: Peek + Next,
9593    {
9594        xml_util::start_element("ErrorResponse", stack)?;
9595        XmlErrorDeserializer::deserialize("Error", stack)
9596    }
9597}
9598impl fmt::Display for GetQueryLoggingConfigError {
9599    #[allow(unused_variables)]
9600    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9601        match *self {
9602            GetQueryLoggingConfigError::InvalidInput(ref cause) => write!(f, "{}", cause),
9603            GetQueryLoggingConfigError::NoSuchQueryLoggingConfig(ref cause) => {
9604                write!(f, "{}", cause)
9605            }
9606        }
9607    }
9608}
9609impl Error for GetQueryLoggingConfigError {}
9610/// Errors returned by GetReusableDelegationSet
9611#[derive(Debug, PartialEq)]
9612pub enum GetReusableDelegationSetError {
9613    /// <p>A reusable delegation set with the specified ID does not exist.</p>
9614    DelegationSetNotReusable(String),
9615    /// <p>The input is not valid.</p>
9616    InvalidInput(String),
9617    /// <p>A reusable delegation set with the specified ID does not exist.</p>
9618    NoSuchDelegationSet(String),
9619}
9620
9621impl GetReusableDelegationSetError {
9622    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetReusableDelegationSetError> {
9623        {
9624            let reader = EventReader::new(res.body.as_ref());
9625            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9626            find_start_element(&mut stack);
9627            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9628                match &parsed_error.code[..] {
9629                    "DelegationSetNotReusable" => {
9630                        return RusotoError::Service(
9631                            GetReusableDelegationSetError::DelegationSetNotReusable(
9632                                parsed_error.message,
9633                            ),
9634                        )
9635                    }
9636                    "InvalidInput" => {
9637                        return RusotoError::Service(GetReusableDelegationSetError::InvalidInput(
9638                            parsed_error.message,
9639                        ))
9640                    }
9641                    "NoSuchDelegationSet" => {
9642                        return RusotoError::Service(
9643                            GetReusableDelegationSetError::NoSuchDelegationSet(
9644                                parsed_error.message,
9645                            ),
9646                        )
9647                    }
9648                    _ => {}
9649                }
9650            }
9651        }
9652        RusotoError::Unknown(res)
9653    }
9654
9655    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9656    where
9657        T: Peek + Next,
9658    {
9659        xml_util::start_element("ErrorResponse", stack)?;
9660        XmlErrorDeserializer::deserialize("Error", stack)
9661    }
9662}
9663impl fmt::Display for GetReusableDelegationSetError {
9664    #[allow(unused_variables)]
9665    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9666        match *self {
9667            GetReusableDelegationSetError::DelegationSetNotReusable(ref cause) => {
9668                write!(f, "{}", cause)
9669            }
9670            GetReusableDelegationSetError::InvalidInput(ref cause) => write!(f, "{}", cause),
9671            GetReusableDelegationSetError::NoSuchDelegationSet(ref cause) => write!(f, "{}", cause),
9672        }
9673    }
9674}
9675impl Error for GetReusableDelegationSetError {}
9676/// Errors returned by GetReusableDelegationSetLimit
9677#[derive(Debug, PartialEq)]
9678pub enum GetReusableDelegationSetLimitError {
9679    /// <p>The input is not valid.</p>
9680    InvalidInput(String),
9681    /// <p>A reusable delegation set with the specified ID does not exist.</p>
9682    NoSuchDelegationSet(String),
9683}
9684
9685impl GetReusableDelegationSetLimitError {
9686    pub fn from_response(
9687        res: BufferedHttpResponse,
9688    ) -> RusotoError<GetReusableDelegationSetLimitError> {
9689        {
9690            let reader = EventReader::new(res.body.as_ref());
9691            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9692            find_start_element(&mut stack);
9693            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9694                match &parsed_error.code[..] {
9695                    "InvalidInput" => {
9696                        return RusotoError::Service(
9697                            GetReusableDelegationSetLimitError::InvalidInput(parsed_error.message),
9698                        )
9699                    }
9700                    "NoSuchDelegationSet" => {
9701                        return RusotoError::Service(
9702                            GetReusableDelegationSetLimitError::NoSuchDelegationSet(
9703                                parsed_error.message,
9704                            ),
9705                        )
9706                    }
9707                    _ => {}
9708                }
9709            }
9710        }
9711        RusotoError::Unknown(res)
9712    }
9713
9714    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9715    where
9716        T: Peek + Next,
9717    {
9718        xml_util::start_element("ErrorResponse", stack)?;
9719        XmlErrorDeserializer::deserialize("Error", stack)
9720    }
9721}
9722impl fmt::Display for GetReusableDelegationSetLimitError {
9723    #[allow(unused_variables)]
9724    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9725        match *self {
9726            GetReusableDelegationSetLimitError::InvalidInput(ref cause) => write!(f, "{}", cause),
9727            GetReusableDelegationSetLimitError::NoSuchDelegationSet(ref cause) => {
9728                write!(f, "{}", cause)
9729            }
9730        }
9731    }
9732}
9733impl Error for GetReusableDelegationSetLimitError {}
9734/// Errors returned by GetTrafficPolicy
9735#[derive(Debug, PartialEq)]
9736pub enum GetTrafficPolicyError {
9737    /// <p>The input is not valid.</p>
9738    InvalidInput(String),
9739    /// <p>No traffic policy exists with the specified ID.</p>
9740    NoSuchTrafficPolicy(String),
9741}
9742
9743impl GetTrafficPolicyError {
9744    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetTrafficPolicyError> {
9745        {
9746            let reader = EventReader::new(res.body.as_ref());
9747            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9748            find_start_element(&mut stack);
9749            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9750                match &parsed_error.code[..] {
9751                    "InvalidInput" => {
9752                        return RusotoError::Service(GetTrafficPolicyError::InvalidInput(
9753                            parsed_error.message,
9754                        ))
9755                    }
9756                    "NoSuchTrafficPolicy" => {
9757                        return RusotoError::Service(GetTrafficPolicyError::NoSuchTrafficPolicy(
9758                            parsed_error.message,
9759                        ))
9760                    }
9761                    _ => {}
9762                }
9763            }
9764        }
9765        RusotoError::Unknown(res)
9766    }
9767
9768    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9769    where
9770        T: Peek + Next,
9771    {
9772        xml_util::start_element("ErrorResponse", stack)?;
9773        XmlErrorDeserializer::deserialize("Error", stack)
9774    }
9775}
9776impl fmt::Display for GetTrafficPolicyError {
9777    #[allow(unused_variables)]
9778    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9779        match *self {
9780            GetTrafficPolicyError::InvalidInput(ref cause) => write!(f, "{}", cause),
9781            GetTrafficPolicyError::NoSuchTrafficPolicy(ref cause) => write!(f, "{}", cause),
9782        }
9783    }
9784}
9785impl Error for GetTrafficPolicyError {}
9786/// Errors returned by GetTrafficPolicyInstance
9787#[derive(Debug, PartialEq)]
9788pub enum GetTrafficPolicyInstanceError {
9789    /// <p>The input is not valid.</p>
9790    InvalidInput(String),
9791    /// <p>No traffic policy instance exists with the specified ID.</p>
9792    NoSuchTrafficPolicyInstance(String),
9793}
9794
9795impl GetTrafficPolicyInstanceError {
9796    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetTrafficPolicyInstanceError> {
9797        {
9798            let reader = EventReader::new(res.body.as_ref());
9799            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9800            find_start_element(&mut stack);
9801            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9802                match &parsed_error.code[..] {
9803                    "InvalidInput" => {
9804                        return RusotoError::Service(GetTrafficPolicyInstanceError::InvalidInput(
9805                            parsed_error.message,
9806                        ))
9807                    }
9808                    "NoSuchTrafficPolicyInstance" => {
9809                        return RusotoError::Service(
9810                            GetTrafficPolicyInstanceError::NoSuchTrafficPolicyInstance(
9811                                parsed_error.message,
9812                            ),
9813                        )
9814                    }
9815                    _ => {}
9816                }
9817            }
9818        }
9819        RusotoError::Unknown(res)
9820    }
9821
9822    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9823    where
9824        T: Peek + Next,
9825    {
9826        xml_util::start_element("ErrorResponse", stack)?;
9827        XmlErrorDeserializer::deserialize("Error", stack)
9828    }
9829}
9830impl fmt::Display for GetTrafficPolicyInstanceError {
9831    #[allow(unused_variables)]
9832    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9833        match *self {
9834            GetTrafficPolicyInstanceError::InvalidInput(ref cause) => write!(f, "{}", cause),
9835            GetTrafficPolicyInstanceError::NoSuchTrafficPolicyInstance(ref cause) => {
9836                write!(f, "{}", cause)
9837            }
9838        }
9839    }
9840}
9841impl Error for GetTrafficPolicyInstanceError {}
9842/// Errors returned by GetTrafficPolicyInstanceCount
9843#[derive(Debug, PartialEq)]
9844pub enum GetTrafficPolicyInstanceCountError {}
9845
9846impl GetTrafficPolicyInstanceCountError {
9847    pub fn from_response(
9848        res: BufferedHttpResponse,
9849    ) -> RusotoError<GetTrafficPolicyInstanceCountError> {
9850        {
9851            let reader = EventReader::new(res.body.as_ref());
9852            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9853            find_start_element(&mut stack);
9854            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9855                match &parsed_error.code[..] {
9856                    _ => {}
9857                }
9858            }
9859        }
9860        RusotoError::Unknown(res)
9861    }
9862
9863    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9864    where
9865        T: Peek + Next,
9866    {
9867        xml_util::start_element("ErrorResponse", stack)?;
9868        XmlErrorDeserializer::deserialize("Error", stack)
9869    }
9870}
9871impl fmt::Display for GetTrafficPolicyInstanceCountError {
9872    #[allow(unused_variables)]
9873    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9874        match *self {}
9875    }
9876}
9877impl Error for GetTrafficPolicyInstanceCountError {}
9878/// Errors returned by ListGeoLocations
9879#[derive(Debug, PartialEq)]
9880pub enum ListGeoLocationsError {
9881    /// <p>The input is not valid.</p>
9882    InvalidInput(String),
9883}
9884
9885impl ListGeoLocationsError {
9886    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListGeoLocationsError> {
9887        {
9888            let reader = EventReader::new(res.body.as_ref());
9889            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9890            find_start_element(&mut stack);
9891            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9892                match &parsed_error.code[..] {
9893                    "InvalidInput" => {
9894                        return RusotoError::Service(ListGeoLocationsError::InvalidInput(
9895                            parsed_error.message,
9896                        ))
9897                    }
9898                    _ => {}
9899                }
9900            }
9901        }
9902        RusotoError::Unknown(res)
9903    }
9904
9905    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9906    where
9907        T: Peek + Next,
9908    {
9909        xml_util::start_element("ErrorResponse", stack)?;
9910        XmlErrorDeserializer::deserialize("Error", stack)
9911    }
9912}
9913impl fmt::Display for ListGeoLocationsError {
9914    #[allow(unused_variables)]
9915    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9916        match *self {
9917            ListGeoLocationsError::InvalidInput(ref cause) => write!(f, "{}", cause),
9918        }
9919    }
9920}
9921impl Error for ListGeoLocationsError {}
9922/// Errors returned by ListHealthChecks
9923#[derive(Debug, PartialEq)]
9924pub enum ListHealthChecksError {
9925    /// <p>The resource you're trying to access is unsupported on this Amazon Route 53 endpoint.</p>
9926    IncompatibleVersion(String),
9927    /// <p>The input is not valid.</p>
9928    InvalidInput(String),
9929}
9930
9931impl ListHealthChecksError {
9932    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListHealthChecksError> {
9933        {
9934            let reader = EventReader::new(res.body.as_ref());
9935            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9936            find_start_element(&mut stack);
9937            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9938                match &parsed_error.code[..] {
9939                    "IncompatibleVersion" => {
9940                        return RusotoError::Service(ListHealthChecksError::IncompatibleVersion(
9941                            parsed_error.message,
9942                        ))
9943                    }
9944                    "InvalidInput" => {
9945                        return RusotoError::Service(ListHealthChecksError::InvalidInput(
9946                            parsed_error.message,
9947                        ))
9948                    }
9949                    _ => {}
9950                }
9951            }
9952        }
9953        RusotoError::Unknown(res)
9954    }
9955
9956    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
9957    where
9958        T: Peek + Next,
9959    {
9960        xml_util::start_element("ErrorResponse", stack)?;
9961        XmlErrorDeserializer::deserialize("Error", stack)
9962    }
9963}
9964impl fmt::Display for ListHealthChecksError {
9965    #[allow(unused_variables)]
9966    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9967        match *self {
9968            ListHealthChecksError::IncompatibleVersion(ref cause) => write!(f, "{}", cause),
9969            ListHealthChecksError::InvalidInput(ref cause) => write!(f, "{}", cause),
9970        }
9971    }
9972}
9973impl Error for ListHealthChecksError {}
9974/// Errors returned by ListHostedZones
9975#[derive(Debug, PartialEq)]
9976pub enum ListHostedZonesError {
9977    /// <p>A reusable delegation set with the specified ID does not exist.</p>
9978    DelegationSetNotReusable(String),
9979    /// <p>The input is not valid.</p>
9980    InvalidInput(String),
9981    /// <p>A reusable delegation set with the specified ID does not exist.</p>
9982    NoSuchDelegationSet(String),
9983}
9984
9985impl ListHostedZonesError {
9986    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListHostedZonesError> {
9987        {
9988            let reader = EventReader::new(res.body.as_ref());
9989            let mut stack = XmlResponse::new(reader.into_iter().peekable());
9990            find_start_element(&mut stack);
9991            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
9992                match &parsed_error.code[..] {
9993                    "DelegationSetNotReusable" => {
9994                        return RusotoError::Service(
9995                            ListHostedZonesError::DelegationSetNotReusable(parsed_error.message),
9996                        )
9997                    }
9998                    "InvalidInput" => {
9999                        return RusotoError::Service(ListHostedZonesError::InvalidInput(
10000                            parsed_error.message,
10001                        ))
10002                    }
10003                    "NoSuchDelegationSet" => {
10004                        return RusotoError::Service(ListHostedZonesError::NoSuchDelegationSet(
10005                            parsed_error.message,
10006                        ))
10007                    }
10008                    _ => {}
10009                }
10010            }
10011        }
10012        RusotoError::Unknown(res)
10013    }
10014
10015    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10016    where
10017        T: Peek + Next,
10018    {
10019        xml_util::start_element("ErrorResponse", stack)?;
10020        XmlErrorDeserializer::deserialize("Error", stack)
10021    }
10022}
10023impl fmt::Display for ListHostedZonesError {
10024    #[allow(unused_variables)]
10025    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10026        match *self {
10027            ListHostedZonesError::DelegationSetNotReusable(ref cause) => write!(f, "{}", cause),
10028            ListHostedZonesError::InvalidInput(ref cause) => write!(f, "{}", cause),
10029            ListHostedZonesError::NoSuchDelegationSet(ref cause) => write!(f, "{}", cause),
10030        }
10031    }
10032}
10033impl Error for ListHostedZonesError {}
10034/// Errors returned by ListHostedZonesByName
10035#[derive(Debug, PartialEq)]
10036pub enum ListHostedZonesByNameError {
10037    /// <p>The specified domain name is not valid.</p>
10038    InvalidDomainName(String),
10039    /// <p>The input is not valid.</p>
10040    InvalidInput(String),
10041}
10042
10043impl ListHostedZonesByNameError {
10044    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListHostedZonesByNameError> {
10045        {
10046            let reader = EventReader::new(res.body.as_ref());
10047            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10048            find_start_element(&mut stack);
10049            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10050                match &parsed_error.code[..] {
10051                    "InvalidDomainName" => {
10052                        return RusotoError::Service(ListHostedZonesByNameError::InvalidDomainName(
10053                            parsed_error.message,
10054                        ))
10055                    }
10056                    "InvalidInput" => {
10057                        return RusotoError::Service(ListHostedZonesByNameError::InvalidInput(
10058                            parsed_error.message,
10059                        ))
10060                    }
10061                    _ => {}
10062                }
10063            }
10064        }
10065        RusotoError::Unknown(res)
10066    }
10067
10068    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10069    where
10070        T: Peek + Next,
10071    {
10072        xml_util::start_element("ErrorResponse", stack)?;
10073        XmlErrorDeserializer::deserialize("Error", stack)
10074    }
10075}
10076impl fmt::Display for ListHostedZonesByNameError {
10077    #[allow(unused_variables)]
10078    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10079        match *self {
10080            ListHostedZonesByNameError::InvalidDomainName(ref cause) => write!(f, "{}", cause),
10081            ListHostedZonesByNameError::InvalidInput(ref cause) => write!(f, "{}", cause),
10082        }
10083    }
10084}
10085impl Error for ListHostedZonesByNameError {}
10086/// Errors returned by ListHostedZonesByVPC
10087#[derive(Debug, PartialEq)]
10088pub enum ListHostedZonesByVPCError {
10089    /// <p>The input is not valid.</p>
10090    InvalidInput(String),
10091    /// <p>The value that you specified to get the second or subsequent page of results is invalid.</p>
10092    InvalidPaginationToken(String),
10093}
10094
10095impl ListHostedZonesByVPCError {
10096    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListHostedZonesByVPCError> {
10097        {
10098            let reader = EventReader::new(res.body.as_ref());
10099            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10100            find_start_element(&mut stack);
10101            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10102                match &parsed_error.code[..] {
10103                    "InvalidInput" => {
10104                        return RusotoError::Service(ListHostedZonesByVPCError::InvalidInput(
10105                            parsed_error.message,
10106                        ))
10107                    }
10108                    "InvalidPaginationToken" => {
10109                        return RusotoError::Service(
10110                            ListHostedZonesByVPCError::InvalidPaginationToken(parsed_error.message),
10111                        )
10112                    }
10113                    _ => {}
10114                }
10115            }
10116        }
10117        RusotoError::Unknown(res)
10118    }
10119
10120    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10121    where
10122        T: Peek + Next,
10123    {
10124        xml_util::start_element("ErrorResponse", stack)?;
10125        XmlErrorDeserializer::deserialize("Error", stack)
10126    }
10127}
10128impl fmt::Display for ListHostedZonesByVPCError {
10129    #[allow(unused_variables)]
10130    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10131        match *self {
10132            ListHostedZonesByVPCError::InvalidInput(ref cause) => write!(f, "{}", cause),
10133            ListHostedZonesByVPCError::InvalidPaginationToken(ref cause) => write!(f, "{}", cause),
10134        }
10135    }
10136}
10137impl Error for ListHostedZonesByVPCError {}
10138/// Errors returned by ListQueryLoggingConfigs
10139#[derive(Debug, PartialEq)]
10140pub enum ListQueryLoggingConfigsError {
10141    /// <p>The input is not valid.</p>
10142    InvalidInput(String),
10143    /// <p>The value that you specified to get the second or subsequent page of results is invalid.</p>
10144    InvalidPaginationToken(String),
10145    /// <p>No hosted zone exists with the ID that you specified.</p>
10146    NoSuchHostedZone(String),
10147}
10148
10149impl ListQueryLoggingConfigsError {
10150    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListQueryLoggingConfigsError> {
10151        {
10152            let reader = EventReader::new(res.body.as_ref());
10153            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10154            find_start_element(&mut stack);
10155            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10156                match &parsed_error.code[..] {
10157                    "InvalidInput" => {
10158                        return RusotoError::Service(ListQueryLoggingConfigsError::InvalidInput(
10159                            parsed_error.message,
10160                        ))
10161                    }
10162                    "InvalidPaginationToken" => {
10163                        return RusotoError::Service(
10164                            ListQueryLoggingConfigsError::InvalidPaginationToken(
10165                                parsed_error.message,
10166                            ),
10167                        )
10168                    }
10169                    "NoSuchHostedZone" => {
10170                        return RusotoError::Service(
10171                            ListQueryLoggingConfigsError::NoSuchHostedZone(parsed_error.message),
10172                        )
10173                    }
10174                    _ => {}
10175                }
10176            }
10177        }
10178        RusotoError::Unknown(res)
10179    }
10180
10181    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10182    where
10183        T: Peek + Next,
10184    {
10185        xml_util::start_element("ErrorResponse", stack)?;
10186        XmlErrorDeserializer::deserialize("Error", stack)
10187    }
10188}
10189impl fmt::Display for ListQueryLoggingConfigsError {
10190    #[allow(unused_variables)]
10191    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10192        match *self {
10193            ListQueryLoggingConfigsError::InvalidInput(ref cause) => write!(f, "{}", cause),
10194            ListQueryLoggingConfigsError::InvalidPaginationToken(ref cause) => {
10195                write!(f, "{}", cause)
10196            }
10197            ListQueryLoggingConfigsError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
10198        }
10199    }
10200}
10201impl Error for ListQueryLoggingConfigsError {}
10202/// Errors returned by ListResourceRecordSets
10203#[derive(Debug, PartialEq)]
10204pub enum ListResourceRecordSetsError {
10205    /// <p>The input is not valid.</p>
10206    InvalidInput(String),
10207    /// <p>No hosted zone exists with the ID that you specified.</p>
10208    NoSuchHostedZone(String),
10209}
10210
10211impl ListResourceRecordSetsError {
10212    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListResourceRecordSetsError> {
10213        {
10214            let reader = EventReader::new(res.body.as_ref());
10215            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10216            find_start_element(&mut stack);
10217            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10218                match &parsed_error.code[..] {
10219                    "InvalidInput" => {
10220                        return RusotoError::Service(ListResourceRecordSetsError::InvalidInput(
10221                            parsed_error.message,
10222                        ))
10223                    }
10224                    "NoSuchHostedZone" => {
10225                        return RusotoError::Service(ListResourceRecordSetsError::NoSuchHostedZone(
10226                            parsed_error.message,
10227                        ))
10228                    }
10229                    _ => {}
10230                }
10231            }
10232        }
10233        RusotoError::Unknown(res)
10234    }
10235
10236    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10237    where
10238        T: Peek + Next,
10239    {
10240        xml_util::start_element("ErrorResponse", stack)?;
10241        XmlErrorDeserializer::deserialize("Error", stack)
10242    }
10243}
10244impl fmt::Display for ListResourceRecordSetsError {
10245    #[allow(unused_variables)]
10246    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10247        match *self {
10248            ListResourceRecordSetsError::InvalidInput(ref cause) => write!(f, "{}", cause),
10249            ListResourceRecordSetsError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
10250        }
10251    }
10252}
10253impl Error for ListResourceRecordSetsError {}
10254/// Errors returned by ListReusableDelegationSets
10255#[derive(Debug, PartialEq)]
10256pub enum ListReusableDelegationSetsError {
10257    /// <p>The input is not valid.</p>
10258    InvalidInput(String),
10259}
10260
10261impl ListReusableDelegationSetsError {
10262    pub fn from_response(
10263        res: BufferedHttpResponse,
10264    ) -> RusotoError<ListReusableDelegationSetsError> {
10265        {
10266            let reader = EventReader::new(res.body.as_ref());
10267            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10268            find_start_element(&mut stack);
10269            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10270                match &parsed_error.code[..] {
10271                    "InvalidInput" => {
10272                        return RusotoError::Service(ListReusableDelegationSetsError::InvalidInput(
10273                            parsed_error.message,
10274                        ))
10275                    }
10276                    _ => {}
10277                }
10278            }
10279        }
10280        RusotoError::Unknown(res)
10281    }
10282
10283    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10284    where
10285        T: Peek + Next,
10286    {
10287        xml_util::start_element("ErrorResponse", stack)?;
10288        XmlErrorDeserializer::deserialize("Error", stack)
10289    }
10290}
10291impl fmt::Display for ListReusableDelegationSetsError {
10292    #[allow(unused_variables)]
10293    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10294        match *self {
10295            ListReusableDelegationSetsError::InvalidInput(ref cause) => write!(f, "{}", cause),
10296        }
10297    }
10298}
10299impl Error for ListReusableDelegationSetsError {}
10300/// Errors returned by ListTagsForResource
10301#[derive(Debug, PartialEq)]
10302pub enum ListTagsForResourceError {
10303    /// <p>The input is not valid.</p>
10304    InvalidInput(String),
10305    /// <p>No health check exists with the specified ID.</p>
10306    NoSuchHealthCheck(String),
10307    /// <p>No hosted zone exists with the ID that you specified.</p>
10308    NoSuchHostedZone(String),
10309    /// <p>If Amazon Route 53 can't process a request before the next request arrives, it will reject subsequent requests for the same hosted zone and return an <code>HTTP 400 error</code> (<code>Bad request</code>). If Route 53 returns this error repeatedly for the same request, we recommend that you wait, in intervals of increasing duration, before you try the request again.</p>
10310    PriorRequestNotComplete(String),
10311    /// <p>The limit on the number of requests per second was exceeded.</p>
10312    Throttling(String),
10313}
10314
10315impl ListTagsForResourceError {
10316    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTagsForResourceError> {
10317        {
10318            let reader = EventReader::new(res.body.as_ref());
10319            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10320            find_start_element(&mut stack);
10321            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10322                match &parsed_error.code[..] {
10323                    "InvalidInput" => {
10324                        return RusotoError::Service(ListTagsForResourceError::InvalidInput(
10325                            parsed_error.message,
10326                        ))
10327                    }
10328                    "NoSuchHealthCheck" => {
10329                        return RusotoError::Service(ListTagsForResourceError::NoSuchHealthCheck(
10330                            parsed_error.message,
10331                        ))
10332                    }
10333                    "NoSuchHostedZone" => {
10334                        return RusotoError::Service(ListTagsForResourceError::NoSuchHostedZone(
10335                            parsed_error.message,
10336                        ))
10337                    }
10338                    "PriorRequestNotComplete" => {
10339                        return RusotoError::Service(
10340                            ListTagsForResourceError::PriorRequestNotComplete(parsed_error.message),
10341                        )
10342                    }
10343                    "ThrottlingException" => {
10344                        return RusotoError::Service(ListTagsForResourceError::Throttling(
10345                            parsed_error.message,
10346                        ))
10347                    }
10348                    _ => {}
10349                }
10350            }
10351        }
10352        RusotoError::Unknown(res)
10353    }
10354
10355    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10356    where
10357        T: Peek + Next,
10358    {
10359        xml_util::start_element("ErrorResponse", stack)?;
10360        XmlErrorDeserializer::deserialize("Error", stack)
10361    }
10362}
10363impl fmt::Display for ListTagsForResourceError {
10364    #[allow(unused_variables)]
10365    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10366        match *self {
10367            ListTagsForResourceError::InvalidInput(ref cause) => write!(f, "{}", cause),
10368            ListTagsForResourceError::NoSuchHealthCheck(ref cause) => write!(f, "{}", cause),
10369            ListTagsForResourceError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
10370            ListTagsForResourceError::PriorRequestNotComplete(ref cause) => write!(f, "{}", cause),
10371            ListTagsForResourceError::Throttling(ref cause) => write!(f, "{}", cause),
10372        }
10373    }
10374}
10375impl Error for ListTagsForResourceError {}
10376/// Errors returned by ListTagsForResources
10377#[derive(Debug, PartialEq)]
10378pub enum ListTagsForResourcesError {
10379    /// <p>The input is not valid.</p>
10380    InvalidInput(String),
10381    /// <p>No health check exists with the specified ID.</p>
10382    NoSuchHealthCheck(String),
10383    /// <p>No hosted zone exists with the ID that you specified.</p>
10384    NoSuchHostedZone(String),
10385    /// <p>If Amazon Route 53 can't process a request before the next request arrives, it will reject subsequent requests for the same hosted zone and return an <code>HTTP 400 error</code> (<code>Bad request</code>). If Route 53 returns this error repeatedly for the same request, we recommend that you wait, in intervals of increasing duration, before you try the request again.</p>
10386    PriorRequestNotComplete(String),
10387    /// <p>The limit on the number of requests per second was exceeded.</p>
10388    Throttling(String),
10389}
10390
10391impl ListTagsForResourcesError {
10392    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTagsForResourcesError> {
10393        {
10394            let reader = EventReader::new(res.body.as_ref());
10395            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10396            find_start_element(&mut stack);
10397            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10398                match &parsed_error.code[..] {
10399                    "InvalidInput" => {
10400                        return RusotoError::Service(ListTagsForResourcesError::InvalidInput(
10401                            parsed_error.message,
10402                        ))
10403                    }
10404                    "NoSuchHealthCheck" => {
10405                        return RusotoError::Service(ListTagsForResourcesError::NoSuchHealthCheck(
10406                            parsed_error.message,
10407                        ))
10408                    }
10409                    "NoSuchHostedZone" => {
10410                        return RusotoError::Service(ListTagsForResourcesError::NoSuchHostedZone(
10411                            parsed_error.message,
10412                        ))
10413                    }
10414                    "PriorRequestNotComplete" => {
10415                        return RusotoError::Service(
10416                            ListTagsForResourcesError::PriorRequestNotComplete(
10417                                parsed_error.message,
10418                            ),
10419                        )
10420                    }
10421                    "ThrottlingException" => {
10422                        return RusotoError::Service(ListTagsForResourcesError::Throttling(
10423                            parsed_error.message,
10424                        ))
10425                    }
10426                    _ => {}
10427                }
10428            }
10429        }
10430        RusotoError::Unknown(res)
10431    }
10432
10433    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10434    where
10435        T: Peek + Next,
10436    {
10437        xml_util::start_element("ErrorResponse", stack)?;
10438        XmlErrorDeserializer::deserialize("Error", stack)
10439    }
10440}
10441impl fmt::Display for ListTagsForResourcesError {
10442    #[allow(unused_variables)]
10443    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10444        match *self {
10445            ListTagsForResourcesError::InvalidInput(ref cause) => write!(f, "{}", cause),
10446            ListTagsForResourcesError::NoSuchHealthCheck(ref cause) => write!(f, "{}", cause),
10447            ListTagsForResourcesError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
10448            ListTagsForResourcesError::PriorRequestNotComplete(ref cause) => write!(f, "{}", cause),
10449            ListTagsForResourcesError::Throttling(ref cause) => write!(f, "{}", cause),
10450        }
10451    }
10452}
10453impl Error for ListTagsForResourcesError {}
10454/// Errors returned by ListTrafficPolicies
10455#[derive(Debug, PartialEq)]
10456pub enum ListTrafficPoliciesError {
10457    /// <p>The input is not valid.</p>
10458    InvalidInput(String),
10459}
10460
10461impl ListTrafficPoliciesError {
10462    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTrafficPoliciesError> {
10463        {
10464            let reader = EventReader::new(res.body.as_ref());
10465            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10466            find_start_element(&mut stack);
10467            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10468                match &parsed_error.code[..] {
10469                    "InvalidInput" => {
10470                        return RusotoError::Service(ListTrafficPoliciesError::InvalidInput(
10471                            parsed_error.message,
10472                        ))
10473                    }
10474                    _ => {}
10475                }
10476            }
10477        }
10478        RusotoError::Unknown(res)
10479    }
10480
10481    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10482    where
10483        T: Peek + Next,
10484    {
10485        xml_util::start_element("ErrorResponse", stack)?;
10486        XmlErrorDeserializer::deserialize("Error", stack)
10487    }
10488}
10489impl fmt::Display for ListTrafficPoliciesError {
10490    #[allow(unused_variables)]
10491    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10492        match *self {
10493            ListTrafficPoliciesError::InvalidInput(ref cause) => write!(f, "{}", cause),
10494        }
10495    }
10496}
10497impl Error for ListTrafficPoliciesError {}
10498/// Errors returned by ListTrafficPolicyInstances
10499#[derive(Debug, PartialEq)]
10500pub enum ListTrafficPolicyInstancesError {
10501    /// <p>The input is not valid.</p>
10502    InvalidInput(String),
10503    /// <p>No traffic policy instance exists with the specified ID.</p>
10504    NoSuchTrafficPolicyInstance(String),
10505}
10506
10507impl ListTrafficPolicyInstancesError {
10508    pub fn from_response(
10509        res: BufferedHttpResponse,
10510    ) -> RusotoError<ListTrafficPolicyInstancesError> {
10511        {
10512            let reader = EventReader::new(res.body.as_ref());
10513            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10514            find_start_element(&mut stack);
10515            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10516                match &parsed_error.code[..] {
10517                    "InvalidInput" => {
10518                        return RusotoError::Service(ListTrafficPolicyInstancesError::InvalidInput(
10519                            parsed_error.message,
10520                        ))
10521                    }
10522                    "NoSuchTrafficPolicyInstance" => {
10523                        return RusotoError::Service(
10524                            ListTrafficPolicyInstancesError::NoSuchTrafficPolicyInstance(
10525                                parsed_error.message,
10526                            ),
10527                        )
10528                    }
10529                    _ => {}
10530                }
10531            }
10532        }
10533        RusotoError::Unknown(res)
10534    }
10535
10536    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10537    where
10538        T: Peek + Next,
10539    {
10540        xml_util::start_element("ErrorResponse", stack)?;
10541        XmlErrorDeserializer::deserialize("Error", stack)
10542    }
10543}
10544impl fmt::Display for ListTrafficPolicyInstancesError {
10545    #[allow(unused_variables)]
10546    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10547        match *self {
10548            ListTrafficPolicyInstancesError::InvalidInput(ref cause) => write!(f, "{}", cause),
10549            ListTrafficPolicyInstancesError::NoSuchTrafficPolicyInstance(ref cause) => {
10550                write!(f, "{}", cause)
10551            }
10552        }
10553    }
10554}
10555impl Error for ListTrafficPolicyInstancesError {}
10556/// Errors returned by ListTrafficPolicyInstancesByHostedZone
10557#[derive(Debug, PartialEq)]
10558pub enum ListTrafficPolicyInstancesByHostedZoneError {
10559    /// <p>The input is not valid.</p>
10560    InvalidInput(String),
10561    /// <p>No hosted zone exists with the ID that you specified.</p>
10562    NoSuchHostedZone(String),
10563    /// <p>No traffic policy instance exists with the specified ID.</p>
10564    NoSuchTrafficPolicyInstance(String),
10565}
10566
10567impl ListTrafficPolicyInstancesByHostedZoneError {
10568    pub fn from_response(
10569        res: BufferedHttpResponse,
10570    ) -> RusotoError<ListTrafficPolicyInstancesByHostedZoneError> {
10571        {
10572            let reader = EventReader::new(res.body.as_ref());
10573            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10574            find_start_element(&mut stack);
10575            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10576                match &parsed_error.code[..] {
10577                    "InvalidInput" => {
10578                        return RusotoError::Service(
10579                            ListTrafficPolicyInstancesByHostedZoneError::InvalidInput(
10580                                parsed_error.message,
10581                            ),
10582                        )
10583                    }
10584                    "NoSuchHostedZone" => {
10585                        return RusotoError::Service(
10586                            ListTrafficPolicyInstancesByHostedZoneError::NoSuchHostedZone(
10587                                parsed_error.message,
10588                            ),
10589                        )
10590                    }
10591                    "NoSuchTrafficPolicyInstance" => return RusotoError::Service(
10592                        ListTrafficPolicyInstancesByHostedZoneError::NoSuchTrafficPolicyInstance(
10593                            parsed_error.message,
10594                        ),
10595                    ),
10596                    _ => {}
10597                }
10598            }
10599        }
10600        RusotoError::Unknown(res)
10601    }
10602
10603    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10604    where
10605        T: Peek + Next,
10606    {
10607        xml_util::start_element("ErrorResponse", stack)?;
10608        XmlErrorDeserializer::deserialize("Error", stack)
10609    }
10610}
10611impl fmt::Display for ListTrafficPolicyInstancesByHostedZoneError {
10612    #[allow(unused_variables)]
10613    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10614        match *self {
10615            ListTrafficPolicyInstancesByHostedZoneError::InvalidInput(ref cause) => {
10616                write!(f, "{}", cause)
10617            }
10618            ListTrafficPolicyInstancesByHostedZoneError::NoSuchHostedZone(ref cause) => {
10619                write!(f, "{}", cause)
10620            }
10621            ListTrafficPolicyInstancesByHostedZoneError::NoSuchTrafficPolicyInstance(ref cause) => {
10622                write!(f, "{}", cause)
10623            }
10624        }
10625    }
10626}
10627impl Error for ListTrafficPolicyInstancesByHostedZoneError {}
10628/// Errors returned by ListTrafficPolicyInstancesByPolicy
10629#[derive(Debug, PartialEq)]
10630pub enum ListTrafficPolicyInstancesByPolicyError {
10631    /// <p>The input is not valid.</p>
10632    InvalidInput(String),
10633    /// <p>No traffic policy exists with the specified ID.</p>
10634    NoSuchTrafficPolicy(String),
10635    /// <p>No traffic policy instance exists with the specified ID.</p>
10636    NoSuchTrafficPolicyInstance(String),
10637}
10638
10639impl ListTrafficPolicyInstancesByPolicyError {
10640    pub fn from_response(
10641        res: BufferedHttpResponse,
10642    ) -> RusotoError<ListTrafficPolicyInstancesByPolicyError> {
10643        {
10644            let reader = EventReader::new(res.body.as_ref());
10645            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10646            find_start_element(&mut stack);
10647            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10648                match &parsed_error.code[..] {
10649                    "InvalidInput" => {
10650                        return RusotoError::Service(
10651                            ListTrafficPolicyInstancesByPolicyError::InvalidInput(
10652                                parsed_error.message,
10653                            ),
10654                        )
10655                    }
10656                    "NoSuchTrafficPolicy" => {
10657                        return RusotoError::Service(
10658                            ListTrafficPolicyInstancesByPolicyError::NoSuchTrafficPolicy(
10659                                parsed_error.message,
10660                            ),
10661                        )
10662                    }
10663                    "NoSuchTrafficPolicyInstance" => {
10664                        return RusotoError::Service(
10665                            ListTrafficPolicyInstancesByPolicyError::NoSuchTrafficPolicyInstance(
10666                                parsed_error.message,
10667                            ),
10668                        )
10669                    }
10670                    _ => {}
10671                }
10672            }
10673        }
10674        RusotoError::Unknown(res)
10675    }
10676
10677    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10678    where
10679        T: Peek + Next,
10680    {
10681        xml_util::start_element("ErrorResponse", stack)?;
10682        XmlErrorDeserializer::deserialize("Error", stack)
10683    }
10684}
10685impl fmt::Display for ListTrafficPolicyInstancesByPolicyError {
10686    #[allow(unused_variables)]
10687    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10688        match *self {
10689            ListTrafficPolicyInstancesByPolicyError::InvalidInput(ref cause) => {
10690                write!(f, "{}", cause)
10691            }
10692            ListTrafficPolicyInstancesByPolicyError::NoSuchTrafficPolicy(ref cause) => {
10693                write!(f, "{}", cause)
10694            }
10695            ListTrafficPolicyInstancesByPolicyError::NoSuchTrafficPolicyInstance(ref cause) => {
10696                write!(f, "{}", cause)
10697            }
10698        }
10699    }
10700}
10701impl Error for ListTrafficPolicyInstancesByPolicyError {}
10702/// Errors returned by ListTrafficPolicyVersions
10703#[derive(Debug, PartialEq)]
10704pub enum ListTrafficPolicyVersionsError {
10705    /// <p>The input is not valid.</p>
10706    InvalidInput(String),
10707    /// <p>No traffic policy exists with the specified ID.</p>
10708    NoSuchTrafficPolicy(String),
10709}
10710
10711impl ListTrafficPolicyVersionsError {
10712    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTrafficPolicyVersionsError> {
10713        {
10714            let reader = EventReader::new(res.body.as_ref());
10715            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10716            find_start_element(&mut stack);
10717            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10718                match &parsed_error.code[..] {
10719                    "InvalidInput" => {
10720                        return RusotoError::Service(ListTrafficPolicyVersionsError::InvalidInput(
10721                            parsed_error.message,
10722                        ))
10723                    }
10724                    "NoSuchTrafficPolicy" => {
10725                        return RusotoError::Service(
10726                            ListTrafficPolicyVersionsError::NoSuchTrafficPolicy(
10727                                parsed_error.message,
10728                            ),
10729                        )
10730                    }
10731                    _ => {}
10732                }
10733            }
10734        }
10735        RusotoError::Unknown(res)
10736    }
10737
10738    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10739    where
10740        T: Peek + Next,
10741    {
10742        xml_util::start_element("ErrorResponse", stack)?;
10743        XmlErrorDeserializer::deserialize("Error", stack)
10744    }
10745}
10746impl fmt::Display for ListTrafficPolicyVersionsError {
10747    #[allow(unused_variables)]
10748    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10749        match *self {
10750            ListTrafficPolicyVersionsError::InvalidInput(ref cause) => write!(f, "{}", cause),
10751            ListTrafficPolicyVersionsError::NoSuchTrafficPolicy(ref cause) => {
10752                write!(f, "{}", cause)
10753            }
10754        }
10755    }
10756}
10757impl Error for ListTrafficPolicyVersionsError {}
10758/// Errors returned by ListVPCAssociationAuthorizations
10759#[derive(Debug, PartialEq)]
10760pub enum ListVPCAssociationAuthorizationsError {
10761    /// <p>The input is not valid.</p>
10762    InvalidInput(String),
10763    /// <p>The value that you specified to get the second or subsequent page of results is invalid.</p>
10764    InvalidPaginationToken(String),
10765    /// <p>No hosted zone exists with the ID that you specified.</p>
10766    NoSuchHostedZone(String),
10767}
10768
10769impl ListVPCAssociationAuthorizationsError {
10770    pub fn from_response(
10771        res: BufferedHttpResponse,
10772    ) -> RusotoError<ListVPCAssociationAuthorizationsError> {
10773        {
10774            let reader = EventReader::new(res.body.as_ref());
10775            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10776            find_start_element(&mut stack);
10777            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10778                match &parsed_error.code[..] {
10779                    "InvalidInput" => {
10780                        return RusotoError::Service(
10781                            ListVPCAssociationAuthorizationsError::InvalidInput(
10782                                parsed_error.message,
10783                            ),
10784                        )
10785                    }
10786                    "InvalidPaginationToken" => {
10787                        return RusotoError::Service(
10788                            ListVPCAssociationAuthorizationsError::InvalidPaginationToken(
10789                                parsed_error.message,
10790                            ),
10791                        )
10792                    }
10793                    "NoSuchHostedZone" => {
10794                        return RusotoError::Service(
10795                            ListVPCAssociationAuthorizationsError::NoSuchHostedZone(
10796                                parsed_error.message,
10797                            ),
10798                        )
10799                    }
10800                    _ => {}
10801                }
10802            }
10803        }
10804        RusotoError::Unknown(res)
10805    }
10806
10807    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10808    where
10809        T: Peek + Next,
10810    {
10811        xml_util::start_element("ErrorResponse", stack)?;
10812        XmlErrorDeserializer::deserialize("Error", stack)
10813    }
10814}
10815impl fmt::Display for ListVPCAssociationAuthorizationsError {
10816    #[allow(unused_variables)]
10817    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10818        match *self {
10819            ListVPCAssociationAuthorizationsError::InvalidInput(ref cause) => {
10820                write!(f, "{}", cause)
10821            }
10822            ListVPCAssociationAuthorizationsError::InvalidPaginationToken(ref cause) => {
10823                write!(f, "{}", cause)
10824            }
10825            ListVPCAssociationAuthorizationsError::NoSuchHostedZone(ref cause) => {
10826                write!(f, "{}", cause)
10827            }
10828        }
10829    }
10830}
10831impl Error for ListVPCAssociationAuthorizationsError {}
10832/// Errors returned by TestDNSAnswer
10833#[derive(Debug, PartialEq)]
10834pub enum TestDNSAnswerError {
10835    /// <p>The input is not valid.</p>
10836    InvalidInput(String),
10837    /// <p>No hosted zone exists with the ID that you specified.</p>
10838    NoSuchHostedZone(String),
10839}
10840
10841impl TestDNSAnswerError {
10842    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TestDNSAnswerError> {
10843        {
10844            let reader = EventReader::new(res.body.as_ref());
10845            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10846            find_start_element(&mut stack);
10847            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10848                match &parsed_error.code[..] {
10849                    "InvalidInput" => {
10850                        return RusotoError::Service(TestDNSAnswerError::InvalidInput(
10851                            parsed_error.message,
10852                        ))
10853                    }
10854                    "NoSuchHostedZone" => {
10855                        return RusotoError::Service(TestDNSAnswerError::NoSuchHostedZone(
10856                            parsed_error.message,
10857                        ))
10858                    }
10859                    _ => {}
10860                }
10861            }
10862        }
10863        RusotoError::Unknown(res)
10864    }
10865
10866    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10867    where
10868        T: Peek + Next,
10869    {
10870        xml_util::start_element("ErrorResponse", stack)?;
10871        XmlErrorDeserializer::deserialize("Error", stack)
10872    }
10873}
10874impl fmt::Display for TestDNSAnswerError {
10875    #[allow(unused_variables)]
10876    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10877        match *self {
10878            TestDNSAnswerError::InvalidInput(ref cause) => write!(f, "{}", cause),
10879            TestDNSAnswerError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
10880        }
10881    }
10882}
10883impl Error for TestDNSAnswerError {}
10884/// Errors returned by UpdateHealthCheck
10885#[derive(Debug, PartialEq)]
10886pub enum UpdateHealthCheckError {
10887    /// <p>The value of <code>HealthCheckVersion</code> in the request doesn't match the value of <code>HealthCheckVersion</code> in the health check.</p>
10888    HealthCheckVersionMismatch(String),
10889    /// <p>The input is not valid.</p>
10890    InvalidInput(String),
10891    /// <p>No health check exists with the specified ID.</p>
10892    NoSuchHealthCheck(String),
10893}
10894
10895impl UpdateHealthCheckError {
10896    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateHealthCheckError> {
10897        {
10898            let reader = EventReader::new(res.body.as_ref());
10899            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10900            find_start_element(&mut stack);
10901            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10902                match &parsed_error.code[..] {
10903                    "HealthCheckVersionMismatch" => {
10904                        return RusotoError::Service(
10905                            UpdateHealthCheckError::HealthCheckVersionMismatch(
10906                                parsed_error.message,
10907                            ),
10908                        )
10909                    }
10910                    "InvalidInput" => {
10911                        return RusotoError::Service(UpdateHealthCheckError::InvalidInput(
10912                            parsed_error.message,
10913                        ))
10914                    }
10915                    "NoSuchHealthCheck" => {
10916                        return RusotoError::Service(UpdateHealthCheckError::NoSuchHealthCheck(
10917                            parsed_error.message,
10918                        ))
10919                    }
10920                    _ => {}
10921                }
10922            }
10923        }
10924        RusotoError::Unknown(res)
10925    }
10926
10927    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10928    where
10929        T: Peek + Next,
10930    {
10931        xml_util::start_element("ErrorResponse", stack)?;
10932        XmlErrorDeserializer::deserialize("Error", stack)
10933    }
10934}
10935impl fmt::Display for UpdateHealthCheckError {
10936    #[allow(unused_variables)]
10937    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10938        match *self {
10939            UpdateHealthCheckError::HealthCheckVersionMismatch(ref cause) => write!(f, "{}", cause),
10940            UpdateHealthCheckError::InvalidInput(ref cause) => write!(f, "{}", cause),
10941            UpdateHealthCheckError::NoSuchHealthCheck(ref cause) => write!(f, "{}", cause),
10942        }
10943    }
10944}
10945impl Error for UpdateHealthCheckError {}
10946/// Errors returned by UpdateHostedZoneComment
10947#[derive(Debug, PartialEq)]
10948pub enum UpdateHostedZoneCommentError {
10949    /// <p>The input is not valid.</p>
10950    InvalidInput(String),
10951    /// <p>No hosted zone exists with the ID that you specified.</p>
10952    NoSuchHostedZone(String),
10953}
10954
10955impl UpdateHostedZoneCommentError {
10956    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateHostedZoneCommentError> {
10957        {
10958            let reader = EventReader::new(res.body.as_ref());
10959            let mut stack = XmlResponse::new(reader.into_iter().peekable());
10960            find_start_element(&mut stack);
10961            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
10962                match &parsed_error.code[..] {
10963                    "InvalidInput" => {
10964                        return RusotoError::Service(UpdateHostedZoneCommentError::InvalidInput(
10965                            parsed_error.message,
10966                        ))
10967                    }
10968                    "NoSuchHostedZone" => {
10969                        return RusotoError::Service(
10970                            UpdateHostedZoneCommentError::NoSuchHostedZone(parsed_error.message),
10971                        )
10972                    }
10973                    _ => {}
10974                }
10975            }
10976        }
10977        RusotoError::Unknown(res)
10978    }
10979
10980    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
10981    where
10982        T: Peek + Next,
10983    {
10984        xml_util::start_element("ErrorResponse", stack)?;
10985        XmlErrorDeserializer::deserialize("Error", stack)
10986    }
10987}
10988impl fmt::Display for UpdateHostedZoneCommentError {
10989    #[allow(unused_variables)]
10990    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10991        match *self {
10992            UpdateHostedZoneCommentError::InvalidInput(ref cause) => write!(f, "{}", cause),
10993            UpdateHostedZoneCommentError::NoSuchHostedZone(ref cause) => write!(f, "{}", cause),
10994        }
10995    }
10996}
10997impl Error for UpdateHostedZoneCommentError {}
10998/// Errors returned by UpdateTrafficPolicyComment
10999#[derive(Debug, PartialEq)]
11000pub enum UpdateTrafficPolicyCommentError {
11001    /// <p>Another user submitted a request to create, update, or delete the object at the same time that you did. Retry the request. </p>
11002    ConcurrentModification(String),
11003    /// <p>The input is not valid.</p>
11004    InvalidInput(String),
11005    /// <p>No traffic policy exists with the specified ID.</p>
11006    NoSuchTrafficPolicy(String),
11007}
11008
11009impl UpdateTrafficPolicyCommentError {
11010    pub fn from_response(
11011        res: BufferedHttpResponse,
11012    ) -> RusotoError<UpdateTrafficPolicyCommentError> {
11013        {
11014            let reader = EventReader::new(res.body.as_ref());
11015            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11016            find_start_element(&mut stack);
11017            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11018                match &parsed_error.code[..] {
11019                    "ConcurrentModification" => {
11020                        return RusotoError::Service(
11021                            UpdateTrafficPolicyCommentError::ConcurrentModification(
11022                                parsed_error.message,
11023                            ),
11024                        )
11025                    }
11026                    "InvalidInput" => {
11027                        return RusotoError::Service(UpdateTrafficPolicyCommentError::InvalidInput(
11028                            parsed_error.message,
11029                        ))
11030                    }
11031                    "NoSuchTrafficPolicy" => {
11032                        return RusotoError::Service(
11033                            UpdateTrafficPolicyCommentError::NoSuchTrafficPolicy(
11034                                parsed_error.message,
11035                            ),
11036                        )
11037                    }
11038                    _ => {}
11039                }
11040            }
11041        }
11042        RusotoError::Unknown(res)
11043    }
11044
11045    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11046    where
11047        T: Peek + Next,
11048    {
11049        xml_util::start_element("ErrorResponse", stack)?;
11050        XmlErrorDeserializer::deserialize("Error", stack)
11051    }
11052}
11053impl fmt::Display for UpdateTrafficPolicyCommentError {
11054    #[allow(unused_variables)]
11055    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11056        match *self {
11057            UpdateTrafficPolicyCommentError::ConcurrentModification(ref cause) => {
11058                write!(f, "{}", cause)
11059            }
11060            UpdateTrafficPolicyCommentError::InvalidInput(ref cause) => write!(f, "{}", cause),
11061            UpdateTrafficPolicyCommentError::NoSuchTrafficPolicy(ref cause) => {
11062                write!(f, "{}", cause)
11063            }
11064        }
11065    }
11066}
11067impl Error for UpdateTrafficPolicyCommentError {}
11068/// Errors returned by UpdateTrafficPolicyInstance
11069#[derive(Debug, PartialEq)]
11070pub enum UpdateTrafficPolicyInstanceError {
11071    /// <p>You tried to update a traffic policy instance by using a traffic policy version that has a different DNS type than the current type for the instance. You specified the type in the JSON document in the <code>CreateTrafficPolicy</code> or <code>CreateTrafficPolicyVersion</code>request. </p>
11072    ConflictingTypes(String),
11073    /// <p>The input is not valid.</p>
11074    InvalidInput(String),
11075    /// <p>No traffic policy exists with the specified ID.</p>
11076    NoSuchTrafficPolicy(String),
11077    /// <p>No traffic policy instance exists with the specified ID.</p>
11078    NoSuchTrafficPolicyInstance(String),
11079    /// <p>If Amazon Route 53 can't process a request before the next request arrives, it will reject subsequent requests for the same hosted zone and return an <code>HTTP 400 error</code> (<code>Bad request</code>). If Route 53 returns this error repeatedly for the same request, we recommend that you wait, in intervals of increasing duration, before you try the request again.</p>
11080    PriorRequestNotComplete(String),
11081}
11082
11083impl UpdateTrafficPolicyInstanceError {
11084    pub fn from_response(
11085        res: BufferedHttpResponse,
11086    ) -> RusotoError<UpdateTrafficPolicyInstanceError> {
11087        {
11088            let reader = EventReader::new(res.body.as_ref());
11089            let mut stack = XmlResponse::new(reader.into_iter().peekable());
11090            find_start_element(&mut stack);
11091            if let Ok(parsed_error) = Self::deserialize(&mut stack) {
11092                match &parsed_error.code[..] {
11093                    "ConflictingTypes" => {
11094                        return RusotoError::Service(
11095                            UpdateTrafficPolicyInstanceError::ConflictingTypes(
11096                                parsed_error.message,
11097                            ),
11098                        )
11099                    }
11100                    "InvalidInput" => {
11101                        return RusotoError::Service(
11102                            UpdateTrafficPolicyInstanceError::InvalidInput(parsed_error.message),
11103                        )
11104                    }
11105                    "NoSuchTrafficPolicy" => {
11106                        return RusotoError::Service(
11107                            UpdateTrafficPolicyInstanceError::NoSuchTrafficPolicy(
11108                                parsed_error.message,
11109                            ),
11110                        )
11111                    }
11112                    "NoSuchTrafficPolicyInstance" => {
11113                        return RusotoError::Service(
11114                            UpdateTrafficPolicyInstanceError::NoSuchTrafficPolicyInstance(
11115                                parsed_error.message,
11116                            ),
11117                        )
11118                    }
11119                    "PriorRequestNotComplete" => {
11120                        return RusotoError::Service(
11121                            UpdateTrafficPolicyInstanceError::PriorRequestNotComplete(
11122                                parsed_error.message,
11123                            ),
11124                        )
11125                    }
11126                    _ => {}
11127                }
11128            }
11129        }
11130        RusotoError::Unknown(res)
11131    }
11132
11133    fn deserialize<T>(stack: &mut T) -> Result<XmlError, XmlParseError>
11134    where
11135        T: Peek + Next,
11136    {
11137        xml_util::start_element("ErrorResponse", stack)?;
11138        XmlErrorDeserializer::deserialize("Error", stack)
11139    }
11140}
11141impl fmt::Display for UpdateTrafficPolicyInstanceError {
11142    #[allow(unused_variables)]
11143    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11144        match *self {
11145            UpdateTrafficPolicyInstanceError::ConflictingTypes(ref cause) => write!(f, "{}", cause),
11146            UpdateTrafficPolicyInstanceError::InvalidInput(ref cause) => write!(f, "{}", cause),
11147            UpdateTrafficPolicyInstanceError::NoSuchTrafficPolicy(ref cause) => {
11148                write!(f, "{}", cause)
11149            }
11150            UpdateTrafficPolicyInstanceError::NoSuchTrafficPolicyInstance(ref cause) => {
11151                write!(f, "{}", cause)
11152            }
11153            UpdateTrafficPolicyInstanceError::PriorRequestNotComplete(ref cause) => {
11154                write!(f, "{}", cause)
11155            }
11156        }
11157    }
11158}
11159impl Error for UpdateTrafficPolicyInstanceError {}
11160/// Trait representing the capabilities of the Route 53 API. Route 53 clients implement this trait.
11161#[async_trait]
11162pub trait Route53 {
11163    /// <p><p>Associates an Amazon VPC with a private hosted zone. </p> <note> <p>To perform the association, the VPC and the private hosted zone must already exist. Also, you can&#39;t convert a public hosted zone into a private hosted zone.</p> </note> <p>If you want to associate a VPC that was created by one AWS account with a private hosted zone that was created by a different account, do one of the following:</p> <ul> <li> <p>Use the AWS account that created the private hosted zone to submit a <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateVPCAssociationAuthorization.html">CreateVPCAssociationAuthorization</a> request. Then use the account that created the VPC to submit an <code>AssociateVPCWithHostedZone</code> request.</p> </li> <li> <p>If a subnet in the VPC was shared with another account, you can use the account that the subnet was shared with to submit an <code>AssociateVPCWithHostedZone</code> request. For more information about sharing subnets, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html">Working with Shared VPCs</a>.</p> </li> </ul></p>
11164    async fn associate_vpc_with_hosted_zone(
11165        &self,
11166        input: AssociateVPCWithHostedZoneRequest,
11167    ) -> Result<AssociateVPCWithHostedZoneResponse, RusotoError<AssociateVPCWithHostedZoneError>>;
11168
11169    /// For TXT records, see <a href="./util/fn.quote_txt_record.html">util::quote_txt_record</a>
11170    /// <p>Creates, changes, or deletes a resource record set, which contains authoritative DNS information for a specified domain name or subdomain name. For example, you can use <code>ChangeResourceRecordSets</code> to create a resource record set that routes traffic for test.example.com to a web server that has an IP address of 192.0.2.44.</p> <p> <b>Deleting Resource Record Sets</b> </p> <p>To delete a resource record set, you must specify all the same values that you specified when you created it.</p> <p> <b>Change Batches and Transactional Changes</b> </p> <p>The request body must include a document with a <code>ChangeResourceRecordSetsRequest</code> element. The request body contains a list of change items, known as a change batch. Change batches are considered transactional changes. Route 53 validates the changes in the request and then either makes all or none of the changes in the change batch request. This ensures that DNS routing isn't adversely affected by partial changes to the resource record sets in a hosted zone. </p> <p>For example, suppose a change batch request contains two changes: it deletes the <code>CNAME</code> resource record set for www.example.com and creates an alias resource record set for www.example.com. If validation for both records succeeds, Route 53 deletes the first resource record set and creates the second resource record set in a single operation. If validation for either the <code>DELETE</code> or the <code>CREATE</code> action fails, then the request is canceled, and the original <code>CNAME</code> record continues to exist.</p> <note> <p>If you try to delete the same resource record set more than once in a single change batch, Route 53 returns an <code>InvalidChangeBatch</code> error.</p> </note> <p> <b>Traffic Flow</b> </p> <p>To create resource record sets for complex routing configurations, use either the traffic flow visual editor in the Route 53 console or the API actions for traffic policies and traffic policy instances. Save the configuration as a traffic policy, then associate the traffic policy with one or more domain names (such as example.com) or subdomain names (such as www.example.com), in the same hosted zone or in multiple hosted zones. You can roll back the updates if the new configuration isn't performing as expected. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/traffic-flow.html">Using Traffic Flow to Route DNS Traffic</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p> <b>Create, Delete, and Upsert</b> </p> <p>Use <code>ChangeResourceRecordsSetsRequest</code> to perform the following actions:</p> <ul> <li> <p> <code>CREATE</code>: Creates a resource record set that has the specified values.</p> </li> <li> <p> <code>DELETE</code>: Deletes an existing resource record set that has the specified values.</p> </li> <li> <p> <code>UPSERT</code>: If a resource record set does not already exist, AWS creates it. If a resource set does exist, Route 53 updates it with the values in the request. </p> </li> </ul> <p> <b>Syntaxes for Creating, Updating, and Deleting Resource Record Sets</b> </p> <p>The syntax for a request depends on the type of resource record set that you want to create, delete, or update, such as weighted, alias, or failover. The XML elements in your request must appear in the order listed in the syntax. </p> <p>For an example for each type of resource record set, see "Examples."</p> <p>Don't refer to the syntax in the "Parameter Syntax" section, which includes all of the elements for every kind of resource record set that you can create, delete, or update by using <code>ChangeResourceRecordSets</code>. </p> <p> <b>Change Propagation to Route 53 DNS Servers</b> </p> <p>When you submit a <code>ChangeResourceRecordSets</code> request, Route 53 propagates your changes to all of the Route 53 authoritative DNS servers. While your changes are propagating, <code>GetChange</code> returns a status of <code>PENDING</code>. When propagation is complete, <code>GetChange</code> returns a status of <code>INSYNC</code>. Changes generally propagate to all Route 53 name servers within 60 seconds. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html">GetChange</a>.</p> <p> <b>Limits on ChangeResourceRecordSets Requests</b> </p> <p>For information about the limits on a <code>ChangeResourceRecordSets</code> request, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html">Limits</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
11171    async fn change_resource_record_sets(
11172        &self,
11173        input: ChangeResourceRecordSetsRequest,
11174    ) -> Result<ChangeResourceRecordSetsResponse, RusotoError<ChangeResourceRecordSetsError>>;
11175
11176    /// <p>Adds, edits, or deletes tags for a health check or a hosted zone.</p> <p>For information about using tags for cost allocation, see <a href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using Cost Allocation Tags</a> in the <i>AWS Billing and Cost Management User Guide</i>.</p>
11177    async fn change_tags_for_resource(
11178        &self,
11179        input: ChangeTagsForResourceRequest,
11180    ) -> Result<ChangeTagsForResourceResponse, RusotoError<ChangeTagsForResourceError>>;
11181
11182    /// <p><p>Creates a new health check.</p> <p>For information about adding health checks to resource record sets, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_ResourceRecordSet.html#Route53-Type-ResourceRecordSet-HealthCheckId">HealthCheckId</a> in <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html">ChangeResourceRecordSets</a>. </p> <p> <b>ELB Load Balancers</b> </p> <p>If you&#39;re registering EC2 instances with an Elastic Load Balancing (ELB) load balancer, do not create Amazon Route 53 health checks for the EC2 instances. When you register an EC2 instance with a load balancer, you configure settings for an ELB health check, which performs a similar function to a Route 53 health check.</p> <p> <b>Private Hosted Zones</b> </p> <p>You can associate health checks with failover resource record sets in a private hosted zone. Note the following:</p> <ul> <li> <p>Route 53 health checkers are outside the VPC. To check the health of an endpoint within a VPC by IP address, you must assign a public IP address to the instance in the VPC.</p> </li> <li> <p>You can configure a health checker to check the health of an external resource that the instance relies on, such as a database server.</p> </li> <li> <p>You can create a CloudWatch metric, associate an alarm with the metric, and then create a health check that is based on the state of the alarm. For example, you might create a CloudWatch metric that checks the status of the Amazon EC2 <code>StatusCheckFailed</code> metric, add an alarm to the metric, and then create a health check that is based on the state of the alarm. For information about creating CloudWatch metrics and alarms by using the CloudWatch console, see the <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html">Amazon CloudWatch User Guide</a>.</p> </li> </ul></p>
11183    async fn create_health_check(
11184        &self,
11185        input: CreateHealthCheckRequest,
11186    ) -> Result<CreateHealthCheckResponse, RusotoError<CreateHealthCheckError>>;
11187
11188    /// <p>Creates a new public or private hosted zone. You create records in a public hosted zone to define how you want to route traffic on the internet for a domain, such as example.com, and its subdomains (apex.example.com, acme.example.com). You create records in a private hosted zone to define how you want to route traffic for a domain and its subdomains within one or more Amazon Virtual Private Clouds (Amazon VPCs). </p> <important> <p>You can't convert a public hosted zone to a private hosted zone or vice versa. Instead, you must create a new hosted zone with the same name and create new resource record sets.</p> </important> <p>For more information about charges for hosted zones, see <a href="http://aws.amazon.com/route53/pricing/">Amazon Route 53 Pricing</a>.</p> <p>Note the following:</p> <ul> <li> <p>You can't create a hosted zone for a top-level domain (TLD) such as .com.</p> </li> <li> <p>For public hosted zones, Route 53 automatically creates a default SOA record and four NS records for the zone. For more information about SOA and NS records, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/SOA-NSrecords.html">NS and SOA Records that Route 53 Creates for a Hosted Zone</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>If you want to use the same name servers for multiple public hosted zones, you can optionally associate a reusable delegation set with the hosted zone. See the <code>DelegationSetId</code> element.</p> </li> <li> <p>If your domain is registered with a registrar other than Route 53, you must update the name servers with your registrar to make Route 53 the DNS service for the domain. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html">Migrating DNS Service for an Existing Domain to Amazon Route 53</a> in the <i>Amazon Route 53 Developer Guide</i>. </p> </li> </ul> <p>When you submit a <code>CreateHostedZone</code> request, the initial status of the hosted zone is <code>PENDING</code>. For public hosted zones, this means that the NS and SOA records are not yet available on all Route 53 DNS servers. When the NS and SOA records are available, the status of the zone changes to <code>INSYNC</code>.</p>
11189    async fn create_hosted_zone(
11190        &self,
11191        input: CreateHostedZoneRequest,
11192    ) -> Result<CreateHostedZoneResponse, RusotoError<CreateHostedZoneError>>;
11193
11194    /// <p><p>Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group.</p> <p>DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following:</p> <ul> <li> <p>Route 53 edge location that responded to the DNS query</p> </li> <li> <p>Domain or subdomain that was requested</p> </li> <li> <p>DNS record type, such as A or AAAA</p> </li> <li> <p>DNS response code, such as <code>NoError</code> or <code>ServFail</code> </p> </li> </ul> <dl> <dt>Log Group and Resource Policy</dt> <dd> <p>Before you create a query logging configuration, perform the following operations.</p> <note> <p>If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically.</p> </note> <ol> <li> <p>Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following:</p> <ul> <li> <p>You must create the log group in the us-east-1 region.</p> </li> <li> <p>You must use the same AWS account to create the log group and the hosted zone that you want to configure query logging for.</p> </li> <li> <p>When you create log groups for query logging, we recommend that you use a consistent prefix, for example:</p> <p> <code>/aws/route53/<i>hosted zone name</i> </code> </p> <p>In the next step, you&#39;ll create a resource policy, which controls access to one or more log groups and the associated AWS resources, such as Route 53 hosted zones. There&#39;s a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging.</p> </li> </ul> </li> <li> <p>Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. For the value of <code>Resource</code>, specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with <code><em></code>, for example:</p> <p> <code>arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/</em></code> </p> <note> <p>You can&#39;t use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the AWS SDKs, or the AWS CLI.</p> </note> </li> </ol> </dd> <dt>Log Streams and Edge Locations</dt> <dd> <p>When Route 53 finishes creating the configuration for DNS query logging, it does the following:</p> <ul> <li> <p>Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location.</p> </li> <li> <p>Begins to send query logs to the applicable log stream.</p> </li> </ul> <p>The name of each log stream is in the following format:</p> <p> <code> <i>hosted zone ID</i>/<i>edge location code</i> </code> </p> <p>The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see &quot;The Route 53 Global Network&quot; on the <a href="http://aws.amazon.com/route53/details/">Route 53 Product Details</a> page.</p> </dd> <dt>Queries That Are Logged</dt> <dd> <p>Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn&#39;t forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/welcome-dns-service.html">Routing Internet Traffic to Your Website or Web Application</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> </dd> <dt>Log File Format</dt> <dd> <p>For a list of the values in each query log and the format of each value, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html">Logging DNS Queries</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> </dd> <dt>Pricing</dt> <dd> <p>For information about charges for query logs, see <a href="http://aws.amazon.com/cloudwatch/pricing/">Amazon CloudWatch Pricing</a>.</p> </dd> <dt>How to Stop Logging</dt> <dd> <p>If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_DeleteQueryLoggingConfig.html">DeleteQueryLoggingConfig</a>.</p> </dd> </dl></p>
11195    async fn create_query_logging_config(
11196        &self,
11197        input: CreateQueryLoggingConfigRequest,
11198    ) -> Result<CreateQueryLoggingConfigResponse, RusotoError<CreateQueryLoggingConfigError>>;
11199
11200    /// <p><p>Creates a delegation set (a group of four name servers) that can be reused by multiple hosted zones that were created by the same AWS account. </p> <p>You can also create a reusable delegation set that uses the four name servers that are associated with an existing hosted zone. Specify the hosted zone ID in the <code>CreateReusableDelegationSet</code> request.</p> <note> <p>You can&#39;t associate a reusable delegation set with a private hosted zone.</p> </note> <p>For information about using a reusable delegation set to configure white label name servers, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/white-label-name-servers.html">Configuring White Label Name Servers</a>.</p> <p>The process for migrating existing hosted zones to use a reusable delegation set is comparable to the process for configuring white label name servers. You need to perform the following steps:</p> <ol> <li> <p>Create a reusable delegation set.</p> </li> <li> <p>Recreate hosted zones, and reduce the TTL to 60 seconds or less.</p> </li> <li> <p>Recreate resource record sets in the new hosted zones.</p> </li> <li> <p>Change the registrar&#39;s name servers to use the name servers for the new hosted zones.</p> </li> <li> <p>Monitor traffic for the website or application.</p> </li> <li> <p>Change TTLs back to their original values.</p> </li> </ol> <p>If you want to migrate existing hosted zones to use a reusable delegation set, the existing hosted zones can&#39;t use any of the name servers that are assigned to the reusable delegation set. If one or more hosted zones do use one or more name servers that are assigned to the reusable delegation set, you can do one of the following:</p> <ul> <li> <p>For small numbers of hosted zones—up to a few hundred—it&#39;s relatively easy to create reusable delegation sets until you get one that has four name servers that don&#39;t overlap with any of the name servers in your hosted zones.</p> </li> <li> <p>For larger numbers of hosted zones, the easiest solution is to use more than one reusable delegation set.</p> </li> <li> <p>For larger numbers of hosted zones, you can also migrate hosted zones that have overlapping name servers to hosted zones that don&#39;t have overlapping name servers, then migrate the hosted zones again to use the reusable delegation set.</p> </li> </ul></p>
11201    async fn create_reusable_delegation_set(
11202        &self,
11203        input: CreateReusableDelegationSetRequest,
11204    ) -> Result<CreateReusableDelegationSetResponse, RusotoError<CreateReusableDelegationSetError>>;
11205
11206    /// <p>Creates a traffic policy, which you use to create multiple DNS resource record sets for one domain name (such as example.com) or one subdomain name (such as www.example.com).</p>
11207    async fn create_traffic_policy(
11208        &self,
11209        input: CreateTrafficPolicyRequest,
11210    ) -> Result<CreateTrafficPolicyResponse, RusotoError<CreateTrafficPolicyError>>;
11211
11212    /// <p>Creates resource record sets in a specified hosted zone based on the settings in a specified traffic policy version. In addition, <code>CreateTrafficPolicyInstance</code> associates the resource record sets with a specified domain name (such as example.com) or subdomain name (such as www.example.com). Amazon Route 53 responds to DNS queries for the domain or subdomain name by using the resource record sets that <code>CreateTrafficPolicyInstance</code> created.</p>
11213    async fn create_traffic_policy_instance(
11214        &self,
11215        input: CreateTrafficPolicyInstanceRequest,
11216    ) -> Result<CreateTrafficPolicyInstanceResponse, RusotoError<CreateTrafficPolicyInstanceError>>;
11217
11218    /// <p>Creates a new version of an existing traffic policy. When you create a new version of a traffic policy, you specify the ID of the traffic policy that you want to update and a JSON-formatted document that describes the new version. You use traffic policies to create multiple DNS resource record sets for one domain name (such as example.com) or one subdomain name (such as www.example.com). You can create a maximum of 1000 versions of a traffic policy. If you reach the limit and need to create another version, you'll need to start a new traffic policy.</p>
11219    async fn create_traffic_policy_version(
11220        &self,
11221        input: CreateTrafficPolicyVersionRequest,
11222    ) -> Result<CreateTrafficPolicyVersionResponse, RusotoError<CreateTrafficPolicyVersionError>>;
11223
11224    /// <p><p>Authorizes the AWS account that created a specified VPC to submit an <code>AssociateVPCWithHostedZone</code> request to associate the VPC with a specified hosted zone that was created by a different account. To submit a <code>CreateVPCAssociationAuthorization</code> request, you must use the account that created the hosted zone. After you authorize the association, use the account that created the VPC to submit an <code>AssociateVPCWithHostedZone</code> request.</p> <note> <p>If you want to associate multiple VPCs that you created by using one account with a hosted zone that you created by using a different account, you must submit one authorization request for each VPC.</p> </note></p>
11225    async fn create_vpc_association_authorization(
11226        &self,
11227        input: CreateVPCAssociationAuthorizationRequest,
11228    ) -> Result<
11229        CreateVPCAssociationAuthorizationResponse,
11230        RusotoError<CreateVPCAssociationAuthorizationError>,
11231    >;
11232
11233    /// <p>Deletes a health check.</p> <important> <p>Amazon Route 53 does not prevent you from deleting a health check even if the health check is associated with one or more resource record sets. If you delete a health check and you don't update the associated resource record sets, the future status of the health check can't be predicted and may change. This will affect the routing of DNS queries for your DNS failover configuration. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-creating-deleting.html#health-checks-deleting.html">Replacing and Deleting Health Checks</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> </important> <p>If you're using AWS Cloud Map and you configured Cloud Map to create a Route 53 health check when you register an instance, you can't use the Route 53 <code>DeleteHealthCheck</code> command to delete the health check. The health check is deleted automatically when you deregister the instance; there can be a delay of several hours before the health check is deleted from Route 53. </p>
11234    async fn delete_health_check(
11235        &self,
11236        input: DeleteHealthCheckRequest,
11237    ) -> Result<DeleteHealthCheckResponse, RusotoError<DeleteHealthCheckError>>;
11238
11239    /// <p><p>Deletes a hosted zone.</p> <p>If the hosted zone was created by another service, such as AWS Cloud Map, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DeleteHostedZone.html#delete-public-hosted-zone-created-by-another-service">Deleting Public Hosted Zones That Were Created by Another Service</a> in the <i>Amazon Route 53 Developer Guide</i> for information about how to delete it. (The process is the same for public and private hosted zones that were created by another service.)</p> <p>If you want to keep your domain registration but you want to stop routing internet traffic to your website or web application, we recommend that you delete resource record sets in the hosted zone instead of deleting the hosted zone.</p> <important> <p>If you delete a hosted zone, you can&#39;t undelete it. You must create a new hosted zone and update the name servers for your domain registration, which can require up to 48 hours to take effect. (If you delegated responsibility for a subdomain to a hosted zone and you delete the child hosted zone, you must update the name servers in the parent hosted zone.) In addition, if you delete a hosted zone, someone could hijack the domain and route traffic to their own resources using your domain name.</p> </important> <p>If you want to avoid the monthly charge for the hosted zone, you can transfer DNS service for the domain to a free DNS service. When you transfer DNS service, you have to update the name servers for the domain registration. If the domain is registered with Route 53, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_domains_UpdateDomainNameservers.html">UpdateDomainNameservers</a> for information about how to replace Route 53 name servers with name servers for the new DNS service. If the domain is registered with another registrar, use the method provided by the registrar to update name servers for the domain registration. For more information, perform an internet search on &quot;free DNS service.&quot;</p> <p>You can delete a hosted zone only if it contains only the default SOA record and NS resource record sets. If the hosted zone contains other resource record sets, you must delete them before you can delete the hosted zone. If you try to delete a hosted zone that contains other resource record sets, the request fails, and Route 53 returns a <code>HostedZoneNotEmpty</code> error. For information about deleting records from your hosted zone, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html">ChangeResourceRecordSets</a>.</p> <p>To verify that the hosted zone has been deleted, do one of the following:</p> <ul> <li> <p>Use the <code>GetHostedZone</code> action to request information about the hosted zone.</p> </li> <li> <p>Use the <code>ListHostedZones</code> action to get a list of the hosted zones associated with the current AWS account.</p> </li> </ul></p>
11240    async fn delete_hosted_zone(
11241        &self,
11242        input: DeleteHostedZoneRequest,
11243    ) -> Result<DeleteHostedZoneResponse, RusotoError<DeleteHostedZoneError>>;
11244
11245    /// <p>Deletes a configuration for DNS query logging. If you delete a configuration, Amazon Route 53 stops sending query logs to CloudWatch Logs. Route 53 doesn't delete any logs that are already in CloudWatch Logs.</p> <p>For more information about DNS query logs, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateQueryLoggingConfig.html">CreateQueryLoggingConfig</a>.</p>
11246    async fn delete_query_logging_config(
11247        &self,
11248        input: DeleteQueryLoggingConfigRequest,
11249    ) -> Result<DeleteQueryLoggingConfigResponse, RusotoError<DeleteQueryLoggingConfigError>>;
11250
11251    /// <p>Deletes a reusable delegation set.</p> <important> <p>You can delete a reusable delegation set only if it isn't associated with any hosted zones.</p> </important> <p>To verify that the reusable delegation set is not associated with any hosted zones, submit a <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetReusableDelegationSet.html">GetReusableDelegationSet</a> request and specify the ID of the reusable delegation set that you want to delete.</p>
11252    async fn delete_reusable_delegation_set(
11253        &self,
11254        input: DeleteReusableDelegationSetRequest,
11255    ) -> Result<DeleteReusableDelegationSetResponse, RusotoError<DeleteReusableDelegationSetError>>;
11256
11257    /// <p>Deletes a traffic policy.</p>
11258    async fn delete_traffic_policy(
11259        &self,
11260        input: DeleteTrafficPolicyRequest,
11261    ) -> Result<DeleteTrafficPolicyResponse, RusotoError<DeleteTrafficPolicyError>>;
11262
11263    /// <p><p>Deletes a traffic policy instance and all of the resource record sets that Amazon Route 53 created when you created the instance.</p> <note> <p>In the Route 53 console, traffic policy instances are known as policy records.</p> </note></p>
11264    async fn delete_traffic_policy_instance(
11265        &self,
11266        input: DeleteTrafficPolicyInstanceRequest,
11267    ) -> Result<DeleteTrafficPolicyInstanceResponse, RusotoError<DeleteTrafficPolicyInstanceError>>;
11268
11269    /// <p><p>Removes authorization to submit an <code>AssociateVPCWithHostedZone</code> request to associate a specified VPC with a hosted zone that was created by a different account. You must use the account that created the hosted zone to submit a <code>DeleteVPCAssociationAuthorization</code> request.</p> <important> <p>Sending this request only prevents the AWS account that created the VPC from associating the VPC with the Amazon Route 53 hosted zone in the future. If the VPC is already associated with the hosted zone, <code>DeleteVPCAssociationAuthorization</code> won&#39;t disassociate the VPC from the hosted zone. If you want to delete an existing association, use <code>DisassociateVPCFromHostedZone</code>.</p> </important></p>
11270    async fn delete_vpc_association_authorization(
11271        &self,
11272        input: DeleteVPCAssociationAuthorizationRequest,
11273    ) -> Result<
11274        DeleteVPCAssociationAuthorizationResponse,
11275        RusotoError<DeleteVPCAssociationAuthorizationError>,
11276    >;
11277
11278    /// <p><p>Disassociates an Amazon Virtual Private Cloud (Amazon VPC) from an Amazon Route 53 private hosted zone. Note the following:</p> <ul> <li> <p>You can&#39;t disassociate the last Amazon VPC from a private hosted zone.</p> </li> <li> <p>You can&#39;t convert a private hosted zone into a public hosted zone.</p> </li> <li> <p>You can submit a <code>DisassociateVPCFromHostedZone</code> request using either the account that created the hosted zone or the account that created the Amazon VPC.</p> </li> <li> <p>Some services, such as AWS Cloud Map and Amazon Elastic File System (Amazon EFS) automatically create hosted zones and associate VPCs with the hosted zones. A service can create a hosted zone using your account or using its own account. You can disassociate a VPC from a hosted zone only if the service created the hosted zone using your account.</p> <p>When you run <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_ListHostedZonesByVPC.html">DisassociateVPCFromHostedZone</a>, if the hosted zone has a value for <code>OwningAccount</code>, you can use <code>DisassociateVPCFromHostedZone</code>. If the hosted zone has a value for <code>OwningService</code>, you can&#39;t use <code>DisassociateVPCFromHostedZone</code>.</p> </li> </ul></p>
11279    async fn disassociate_vpc_from_hosted_zone(
11280        &self,
11281        input: DisassociateVPCFromHostedZoneRequest,
11282    ) -> Result<
11283        DisassociateVPCFromHostedZoneResponse,
11284        RusotoError<DisassociateVPCFromHostedZoneError>,
11285    >;
11286
11287    /// <p><p>Gets the specified limit for the current account, for example, the maximum number of health checks that you can create using the account.</p> <p>For the default limit, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html">Limits</a> in the <i>Amazon Route 53 Developer Guide</i>. To request a higher limit, <a href="https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&amp;limitType=service-code-route53">open a case</a>.</p> <note> <p>You can also view account limits in AWS Trusted Advisor. Sign in to the AWS Management Console and open the Trusted Advisor console at <a href="https://console.aws.amazon.com/trustedadvisor">https://console.aws.amazon.com/trustedadvisor/</a>. Then choose <b>Service limits</b> in the navigation pane.</p> </note></p>
11288    async fn get_account_limit(
11289        &self,
11290        input: GetAccountLimitRequest,
11291    ) -> Result<GetAccountLimitResponse, RusotoError<GetAccountLimitError>>;
11292
11293    /// <p><p>Returns the current status of a change batch request. The status is one of the following values:</p> <ul> <li> <p> <code>PENDING</code> indicates that the changes in this request have not propagated to all Amazon Route 53 DNS servers. This is the initial status of all change batch requests.</p> </li> <li> <p> <code>INSYNC</code> indicates that the changes have propagated to all Route 53 DNS servers. </p> </li> </ul></p>
11294    async fn get_change(
11295        &self,
11296        input: GetChangeRequest,
11297    ) -> Result<GetChangeResponse, RusotoError<GetChangeError>>;
11298
11299    /// <p><important> <p> <code>GetCheckerIpRanges</code> still works, but we recommend that you download ip-ranges.json, which includes IP address ranges for all AWS services. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/route-53-ip-addresses.html">IP Address Ranges of Amazon Route 53 Servers</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> </important></p>
11300    async fn get_checker_ip_ranges(
11301        &self,
11302        input: GetCheckerIpRangesRequest,
11303    ) -> Result<GetCheckerIpRangesResponse, RusotoError<GetCheckerIpRangesError>>;
11304
11305    /// <p>Gets information about whether a specified geographic location is supported for Amazon Route 53 geolocation resource record sets.</p> <p>Use the following syntax to determine whether a continent is supported for geolocation:</p> <p> <code>GET /2013-04-01/geolocation?continentcode=<i>two-letter abbreviation for a continent</i> </code> </p> <p>Use the following syntax to determine whether a country is supported for geolocation:</p> <p> <code>GET /2013-04-01/geolocation?countrycode=<i>two-character country code</i> </code> </p> <p>Use the following syntax to determine whether a subdivision of a country is supported for geolocation:</p> <p> <code>GET /2013-04-01/geolocation?countrycode=<i>two-character country code</i>&amp;subdivisioncode=<i>subdivision code</i> </code> </p>
11306    async fn get_geo_location(
11307        &self,
11308        input: GetGeoLocationRequest,
11309    ) -> Result<GetGeoLocationResponse, RusotoError<GetGeoLocationError>>;
11310
11311    /// <p>Gets information about a specified health check.</p>
11312    async fn get_health_check(
11313        &self,
11314        input: GetHealthCheckRequest,
11315    ) -> Result<GetHealthCheckResponse, RusotoError<GetHealthCheckError>>;
11316
11317    /// <p>Retrieves the number of health checks that are associated with the current AWS account.</p>
11318    async fn get_health_check_count(
11319        &self,
11320        input: GetHealthCheckCountRequest,
11321    ) -> Result<GetHealthCheckCountResponse, RusotoError<GetHealthCheckCountError>>;
11322
11323    /// <p>Gets the reason that a specified health check failed most recently.</p>
11324    async fn get_health_check_last_failure_reason(
11325        &self,
11326        input: GetHealthCheckLastFailureReasonRequest,
11327    ) -> Result<
11328        GetHealthCheckLastFailureReasonResponse,
11329        RusotoError<GetHealthCheckLastFailureReasonError>,
11330    >;
11331
11332    /// <p>Gets status of a specified health check. </p>
11333    async fn get_health_check_status(
11334        &self,
11335        input: GetHealthCheckStatusRequest,
11336    ) -> Result<GetHealthCheckStatusResponse, RusotoError<GetHealthCheckStatusError>>;
11337
11338    /// <p>Gets information about a specified hosted zone including the four name servers assigned to the hosted zone.</p>
11339    async fn get_hosted_zone(
11340        &self,
11341        input: GetHostedZoneRequest,
11342    ) -> Result<GetHostedZoneResponse, RusotoError<GetHostedZoneError>>;
11343
11344    /// <p>Retrieves the number of hosted zones that are associated with the current AWS account.</p>
11345    async fn get_hosted_zone_count(
11346        &self,
11347        input: GetHostedZoneCountRequest,
11348    ) -> Result<GetHostedZoneCountResponse, RusotoError<GetHostedZoneCountError>>;
11349
11350    /// <p>Gets the specified limit for a specified hosted zone, for example, the maximum number of records that you can create in the hosted zone. </p> <p>For the default limit, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html">Limits</a> in the <i>Amazon Route 53 Developer Guide</i>. To request a higher limit, <a href="https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&amp;limitType=service-code-route53">open a case</a>.</p>
11351    async fn get_hosted_zone_limit(
11352        &self,
11353        input: GetHostedZoneLimitRequest,
11354    ) -> Result<GetHostedZoneLimitResponse, RusotoError<GetHostedZoneLimitError>>;
11355
11356    /// <p>Gets information about a specified configuration for DNS query logging.</p> <p>For more information about DNS query logs, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateQueryLoggingConfig.html">CreateQueryLoggingConfig</a> and <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html">Logging DNS Queries</a>.</p>
11357    async fn get_query_logging_config(
11358        &self,
11359        input: GetQueryLoggingConfigRequest,
11360    ) -> Result<GetQueryLoggingConfigResponse, RusotoError<GetQueryLoggingConfigError>>;
11361
11362    /// <p>Retrieves information about a specified reusable delegation set, including the four name servers that are assigned to the delegation set.</p>
11363    async fn get_reusable_delegation_set(
11364        &self,
11365        input: GetReusableDelegationSetRequest,
11366    ) -> Result<GetReusableDelegationSetResponse, RusotoError<GetReusableDelegationSetError>>;
11367
11368    /// <p>Gets the maximum number of hosted zones that you can associate with the specified reusable delegation set.</p> <p>For the default limit, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html">Limits</a> in the <i>Amazon Route 53 Developer Guide</i>. To request a higher limit, <a href="https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&amp;limitType=service-code-route53">open a case</a>.</p>
11369    async fn get_reusable_delegation_set_limit(
11370        &self,
11371        input: GetReusableDelegationSetLimitRequest,
11372    ) -> Result<
11373        GetReusableDelegationSetLimitResponse,
11374        RusotoError<GetReusableDelegationSetLimitError>,
11375    >;
11376
11377    /// <p>Gets information about a specific traffic policy version.</p>
11378    async fn get_traffic_policy(
11379        &self,
11380        input: GetTrafficPolicyRequest,
11381    ) -> Result<GetTrafficPolicyResponse, RusotoError<GetTrafficPolicyError>>;
11382
11383    /// <p><p>Gets information about a specified traffic policy instance.</p> <note> <p>After you submit a <code>CreateTrafficPolicyInstance</code> or an <code>UpdateTrafficPolicyInstance</code> request, there&#39;s a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the <code>State</code> response element.</p> </note> <note> <p>In the Route 53 console, traffic policy instances are known as policy records.</p> </note></p>
11384    async fn get_traffic_policy_instance(
11385        &self,
11386        input: GetTrafficPolicyInstanceRequest,
11387    ) -> Result<GetTrafficPolicyInstanceResponse, RusotoError<GetTrafficPolicyInstanceError>>;
11388
11389    /// <p>Gets the number of traffic policy instances that are associated with the current AWS account.</p>
11390    async fn get_traffic_policy_instance_count(
11391        &self,
11392        input: GetTrafficPolicyInstanceCountRequest,
11393    ) -> Result<
11394        GetTrafficPolicyInstanceCountResponse,
11395        RusotoError<GetTrafficPolicyInstanceCountError>,
11396    >;
11397
11398    /// <p>Retrieves a list of supported geographic locations.</p> <p>Countries are listed first, and continents are listed last. If Amazon Route 53 supports subdivisions for a country (for example, states or provinces), the subdivisions for that country are listed in alphabetical order immediately after the corresponding country.</p> <p>For a list of supported geolocation codes, see the <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GeoLocation.html">GeoLocation</a> data type.</p>
11399    async fn list_geo_locations(
11400        &self,
11401        input: ListGeoLocationsRequest,
11402    ) -> Result<ListGeoLocationsResponse, RusotoError<ListGeoLocationsError>>;
11403
11404    /// <p>Retrieve a list of the health checks that are associated with the current AWS account. </p>
11405    async fn list_health_checks(
11406        &self,
11407        input: ListHealthChecksRequest,
11408    ) -> Result<ListHealthChecksResponse, RusotoError<ListHealthChecksError>>;
11409
11410    /// <p>Retrieves a list of the public and private hosted zones that are associated with the current AWS account. The response includes a <code>HostedZones</code> child element for each hosted zone.</p> <p>Amazon Route 53 returns a maximum of 100 items in each response. If you have a lot of hosted zones, you can use the <code>maxitems</code> parameter to list them in groups of up to 100.</p>
11411    async fn list_hosted_zones(
11412        &self,
11413        input: ListHostedZonesRequest,
11414    ) -> Result<ListHostedZonesResponse, RusotoError<ListHostedZonesError>>;
11415
11416    /// <p><p>Retrieves a list of your hosted zones in lexicographic order. The response includes a <code>HostedZones</code> child element for each hosted zone created by the current AWS account. </p> <p> <code>ListHostedZonesByName</code> sorts hosted zones by name with the labels reversed. For example:</p> <p> <code>com.example.www.</code> </p> <p>Note the trailing dot, which can change the sort order in some circumstances.</p> <p>If the domain name includes escape characters or Punycode, <code>ListHostedZonesByName</code> alphabetizes the domain name using the escaped or Punycoded value, which is the format that Amazon Route 53 saves in its database. For example, to create a hosted zone for exämple.com, you specify ex\344mple.com for the domain name. <code>ListHostedZonesByName</code> alphabetizes it as:</p> <p> <code>com.ex\344mple.</code> </p> <p>The labels are reversed and alphabetized using the escaped value. For more information about valid domain name formats, including internationalized domain names, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html">DNS Domain Name Format</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>Route 53 returns up to 100 items in each response. If you have a lot of hosted zones, use the <code>MaxItems</code> parameter to list them in groups of up to 100. The response includes values that help navigate from one group of <code>MaxItems</code> hosted zones to the next:</p> <ul> <li> <p>The <code>DNSName</code> and <code>HostedZoneId</code> elements in the response contain the values, if any, specified for the <code>dnsname</code> and <code>hostedzoneid</code> parameters in the request that produced the current response.</p> </li> <li> <p>The <code>MaxItems</code> element in the response contains the value, if any, that you specified for the <code>maxitems</code> parameter in the request that produced the current response.</p> </li> <li> <p>If the value of <code>IsTruncated</code> in the response is true, there are more hosted zones associated with the current AWS account. </p> <p>If <code>IsTruncated</code> is false, this response includes the last hosted zone that is associated with the current account. The <code>NextDNSName</code> element and <code>NextHostedZoneId</code> elements are omitted from the response.</p> </li> <li> <p>The <code>NextDNSName</code> and <code>NextHostedZoneId</code> elements in the response contain the domain name and the hosted zone ID of the next hosted zone that is associated with the current AWS account. If you want to list more hosted zones, make another call to <code>ListHostedZonesByName</code>, and specify the value of <code>NextDNSName</code> and <code>NextHostedZoneId</code> in the <code>dnsname</code> and <code>hostedzoneid</code> parameters, respectively.</p> </li> </ul></p>
11417    async fn list_hosted_zones_by_name(
11418        &self,
11419        input: ListHostedZonesByNameRequest,
11420    ) -> Result<ListHostedZonesByNameResponse, RusotoError<ListHostedZonesByNameError>>;
11421
11422    /// <p><p>Lists all the private hosted zones that a specified VPC is associated with, regardless of which AWS account or AWS service owns the hosted zones. The <code>HostedZoneOwner</code> structure in the response contains one of the following values:</p> <ul> <li> <p>An <code>OwningAccount</code> element, which contains the account number of either the current AWS account or another AWS account. Some services, such as AWS Cloud Map, create hosted zones using the current account. </p> </li> <li> <p>An <code>OwningService</code> element, which identifies the AWS service that created and owns the hosted zone. For example, if a hosted zone was created by Amazon Elastic File System (Amazon EFS), the value of <code>Owner</code> is <code>efs.amazonaws.com</code>. </p> </li> </ul></p>
11423    async fn list_hosted_zones_by_vpc(
11424        &self,
11425        input: ListHostedZonesByVPCRequest,
11426    ) -> Result<ListHostedZonesByVPCResponse, RusotoError<ListHostedZonesByVPCError>>;
11427
11428    /// <p>Lists the configurations for DNS query logging that are associated with the current AWS account or the configuration that is associated with a specified hosted zone.</p> <p>For more information about DNS query logs, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateQueryLoggingConfig.html">CreateQueryLoggingConfig</a>. Additional information, including the format of DNS query logs, appears in <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html">Logging DNS Queries</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
11429    async fn list_query_logging_configs(
11430        &self,
11431        input: ListQueryLoggingConfigsRequest,
11432    ) -> Result<ListQueryLoggingConfigsResponse, RusotoError<ListQueryLoggingConfigsError>>;
11433
11434    /// <p>Lists the resource record sets in a specified hosted zone.</p> <p> <code>ListResourceRecordSets</code> returns up to 100 resource record sets at a time in ASCII order, beginning at a position specified by the <code>name</code> and <code>type</code> elements.</p> <p> <b>Sort order</b> </p> <p> <code>ListResourceRecordSets</code> sorts results first by DNS name with the labels reversed, for example:</p> <p> <code>com.example.www.</code> </p> <p>Note the trailing dot, which can change the sort order when the record name contains characters that appear before <code>.</code> (decimal 46) in the ASCII table. These characters include the following: <code>! " # $ % &amp; ' ( ) * + , -</code> </p> <p>When multiple records have the same DNS name, <code>ListResourceRecordSets</code> sorts results by the record type.</p> <p> <b>Specifying where to start listing records</b> </p> <p>You can use the name and type elements to specify the resource record set that the list begins with:</p> <dl> <dt>If you do not specify Name or Type</dt> <dd> <p>The results begin with the first resource record set that the hosted zone contains.</p> </dd> <dt>If you specify Name but not Type</dt> <dd> <p>The results begin with the first resource record set in the list whose name is greater than or equal to <code>Name</code>.</p> </dd> <dt>If you specify Type but not Name</dt> <dd> <p>Amazon Route 53 returns the <code>InvalidInput</code> error.</p> </dd> <dt>If you specify both Name and Type</dt> <dd> <p>The results begin with the first resource record set in the list whose name is greater than or equal to <code>Name</code>, and whose type is greater than or equal to <code>Type</code>.</p> </dd> </dl> <p> <b>Resource record sets that are PENDING</b> </p> <p>This action returns the most current version of the records. This includes records that are <code>PENDING</code>, and that are not yet available on all Route 53 DNS servers.</p> <p> <b>Changing resource record sets</b> </p> <p>To ensure that you get an accurate listing of the resource record sets for a hosted zone at a point in time, do not submit a <code>ChangeResourceRecordSets</code> request while you're paging through the results of a <code>ListResourceRecordSets</code> request. If you do, some pages may display results without the latest changes while other pages display results with the latest changes.</p> <p> <b>Displaying the next page of results</b> </p> <p>If a <code>ListResourceRecordSets</code> command returns more than one page of results, the value of <code>IsTruncated</code> is <code>true</code>. To display the next page of results, get the values of <code>NextRecordName</code>, <code>NextRecordType</code>, and <code>NextRecordIdentifier</code> (if any) from the response. Then submit another <code>ListResourceRecordSets</code> request, and specify those values for <code>StartRecordName</code>, <code>StartRecordType</code>, and <code>StartRecordIdentifier</code>.</p>
11435    async fn list_resource_record_sets(
11436        &self,
11437        input: ListResourceRecordSetsRequest,
11438    ) -> Result<ListResourceRecordSetsResponse, RusotoError<ListResourceRecordSetsError>>;
11439
11440    /// <p>Retrieves a list of the reusable delegation sets that are associated with the current AWS account.</p>
11441    async fn list_reusable_delegation_sets(
11442        &self,
11443        input: ListReusableDelegationSetsRequest,
11444    ) -> Result<ListReusableDelegationSetsResponse, RusotoError<ListReusableDelegationSetsError>>;
11445
11446    /// <p>Lists tags for one health check or hosted zone. </p> <p>For information about using tags for cost allocation, see <a href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using Cost Allocation Tags</a> in the <i>AWS Billing and Cost Management User Guide</i>.</p>
11447    async fn list_tags_for_resource(
11448        &self,
11449        input: ListTagsForResourceRequest,
11450    ) -> Result<ListTagsForResourceResponse, RusotoError<ListTagsForResourceError>>;
11451
11452    /// <p>Lists tags for up to 10 health checks or hosted zones.</p> <p>For information about using tags for cost allocation, see <a href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using Cost Allocation Tags</a> in the <i>AWS Billing and Cost Management User Guide</i>.</p>
11453    async fn list_tags_for_resources(
11454        &self,
11455        input: ListTagsForResourcesRequest,
11456    ) -> Result<ListTagsForResourcesResponse, RusotoError<ListTagsForResourcesError>>;
11457
11458    /// <p>Gets information about the latest version for every traffic policy that is associated with the current AWS account. Policies are listed in the order that they were created in. </p>
11459    async fn list_traffic_policies(
11460        &self,
11461        input: ListTrafficPoliciesRequest,
11462    ) -> Result<ListTrafficPoliciesResponse, RusotoError<ListTrafficPoliciesError>>;
11463
11464    /// <p>Gets information about the traffic policy instances that you created by using the current AWS account.</p> <note> <p>After you submit an <code>UpdateTrafficPolicyInstance</code> request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the <code>State</code> response element.</p> </note> <p>Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the <code>MaxItems</code> parameter to list them in groups of up to 100.</p>
11465    async fn list_traffic_policy_instances(
11466        &self,
11467        input: ListTrafficPolicyInstancesRequest,
11468    ) -> Result<ListTrafficPolicyInstancesResponse, RusotoError<ListTrafficPolicyInstancesError>>;
11469
11470    /// <p>Gets information about the traffic policy instances that you created in a specified hosted zone.</p> <note> <p>After you submit a <code>CreateTrafficPolicyInstance</code> or an <code>UpdateTrafficPolicyInstance</code> request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the <code>State</code> response element.</p> </note> <p>Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the <code>MaxItems</code> parameter to list them in groups of up to 100.</p>
11471    async fn list_traffic_policy_instances_by_hosted_zone(
11472        &self,
11473        input: ListTrafficPolicyInstancesByHostedZoneRequest,
11474    ) -> Result<
11475        ListTrafficPolicyInstancesByHostedZoneResponse,
11476        RusotoError<ListTrafficPolicyInstancesByHostedZoneError>,
11477    >;
11478
11479    /// <p>Gets information about the traffic policy instances that you created by using a specify traffic policy version.</p> <note> <p>After you submit a <code>CreateTrafficPolicyInstance</code> or an <code>UpdateTrafficPolicyInstance</code> request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the <code>State</code> response element.</p> </note> <p>Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the <code>MaxItems</code> parameter to list them in groups of up to 100.</p>
11480    async fn list_traffic_policy_instances_by_policy(
11481        &self,
11482        input: ListTrafficPolicyInstancesByPolicyRequest,
11483    ) -> Result<
11484        ListTrafficPolicyInstancesByPolicyResponse,
11485        RusotoError<ListTrafficPolicyInstancesByPolicyError>,
11486    >;
11487
11488    /// <p>Gets information about all of the versions for a specified traffic policy.</p> <p>Traffic policy versions are listed in numerical order by <code>VersionNumber</code>.</p>
11489    async fn list_traffic_policy_versions(
11490        &self,
11491        input: ListTrafficPolicyVersionsRequest,
11492    ) -> Result<ListTrafficPolicyVersionsResponse, RusotoError<ListTrafficPolicyVersionsError>>;
11493
11494    /// <p>Gets a list of the VPCs that were created by other accounts and that can be associated with a specified hosted zone because you've submitted one or more <code>CreateVPCAssociationAuthorization</code> requests. </p> <p>The response includes a <code>VPCs</code> element with a <code>VPC</code> child element for each VPC that can be associated with the hosted zone.</p>
11495    async fn list_vpc_association_authorizations(
11496        &self,
11497        input: ListVPCAssociationAuthorizationsRequest,
11498    ) -> Result<
11499        ListVPCAssociationAuthorizationsResponse,
11500        RusotoError<ListVPCAssociationAuthorizationsError>,
11501    >;
11502
11503    /// <p>Gets the value that Amazon Route 53 returns in response to a DNS request for a specified record name and type. You can optionally specify the IP address of a DNS resolver, an EDNS0 client subnet IP address, and a subnet mask. </p>
11504    async fn test_dns_answer(
11505        &self,
11506        input: TestDNSAnswerRequest,
11507    ) -> Result<TestDNSAnswerResponse, RusotoError<TestDNSAnswerError>>;
11508
11509    /// <p>Updates an existing health check. Note that some values can't be updated. </p> <p>For more information about updating health checks, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-creating-deleting.html">Creating, Updating, and Deleting Health Checks</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
11510    async fn update_health_check(
11511        &self,
11512        input: UpdateHealthCheckRequest,
11513    ) -> Result<UpdateHealthCheckResponse, RusotoError<UpdateHealthCheckError>>;
11514
11515    /// <p>Updates the comment for a specified hosted zone.</p>
11516    async fn update_hosted_zone_comment(
11517        &self,
11518        input: UpdateHostedZoneCommentRequest,
11519    ) -> Result<UpdateHostedZoneCommentResponse, RusotoError<UpdateHostedZoneCommentError>>;
11520
11521    /// <p>Updates the comment for a specified traffic policy version.</p>
11522    async fn update_traffic_policy_comment(
11523        &self,
11524        input: UpdateTrafficPolicyCommentRequest,
11525    ) -> Result<UpdateTrafficPolicyCommentResponse, RusotoError<UpdateTrafficPolicyCommentError>>;
11526
11527    /// <p><p>Updates the resource record sets in a specified hosted zone that were created based on the settings in a specified traffic policy version.</p> <p>When you update a traffic policy instance, Amazon Route 53 continues to respond to DNS queries for the root resource record set name (such as example.com) while it replaces one group of resource record sets with another. Route 53 performs the following operations:</p> <ol> <li> <p>Route 53 creates a new group of resource record sets based on the specified traffic policy. This is true regardless of how significant the differences are between the existing resource record sets and the new resource record sets. </p> </li> <li> <p>When all of the new resource record sets have been created, Route 53 starts to respond to DNS queries for the root resource record set name (such as example.com) by using the new resource record sets.</p> </li> <li> <p>Route 53 deletes the old group of resource record sets that are associated with the root resource record set name.</p> </li> </ol></p>
11528    async fn update_traffic_policy_instance(
11529        &self,
11530        input: UpdateTrafficPolicyInstanceRequest,
11531    ) -> Result<UpdateTrafficPolicyInstanceResponse, RusotoError<UpdateTrafficPolicyInstanceError>>;
11532}
11533/// A client for the Route 53 API.
11534#[derive(Clone)]
11535pub struct Route53Client {
11536    client: Client,
11537    region: region::Region,
11538}
11539
11540impl Route53Client {
11541    /// Creates a client backed by the default tokio event loop.
11542    ///
11543    /// The client will use the default credentials provider and tls client.
11544    pub fn new(region: region::Region) -> Route53Client {
11545        Route53Client {
11546            client: Client::shared(),
11547            region,
11548        }
11549    }
11550
11551    pub fn new_with<P, D>(
11552        request_dispatcher: D,
11553        credentials_provider: P,
11554        region: region::Region,
11555    ) -> Route53Client
11556    where
11557        P: ProvideAwsCredentials + Send + Sync + 'static,
11558        D: DispatchSignedRequest + Send + Sync + 'static,
11559    {
11560        Route53Client {
11561            client: Client::new_with(credentials_provider, request_dispatcher),
11562            region,
11563        }
11564    }
11565
11566    pub fn new_with_client(client: Client, region: region::Region) -> Route53Client {
11567        Route53Client { client, region }
11568    }
11569}
11570
11571#[async_trait]
11572impl Route53 for Route53Client {
11573    /// <p><p>Associates an Amazon VPC with a private hosted zone. </p> <note> <p>To perform the association, the VPC and the private hosted zone must already exist. Also, you can&#39;t convert a public hosted zone into a private hosted zone.</p> </note> <p>If you want to associate a VPC that was created by one AWS account with a private hosted zone that was created by a different account, do one of the following:</p> <ul> <li> <p>Use the AWS account that created the private hosted zone to submit a <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateVPCAssociationAuthorization.html">CreateVPCAssociationAuthorization</a> request. Then use the account that created the VPC to submit an <code>AssociateVPCWithHostedZone</code> request.</p> </li> <li> <p>If a subnet in the VPC was shared with another account, you can use the account that the subnet was shared with to submit an <code>AssociateVPCWithHostedZone</code> request. For more information about sharing subnets, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html">Working with Shared VPCs</a>.</p> </li> </ul></p>
11574    #[allow(unused_variables, warnings)]
11575    async fn associate_vpc_with_hosted_zone(
11576        &self,
11577        input: AssociateVPCWithHostedZoneRequest,
11578    ) -> Result<AssociateVPCWithHostedZoneResponse, RusotoError<AssociateVPCWithHostedZoneError>>
11579    {
11580        let request_uri = format!(
11581            "/2013-04-01/hostedzone/{id}/associatevpc",
11582            id = input.hosted_zone_id
11583        )
11584        .replace("/hostedzone/hostedzone/", "/hostedzone/")
11585        .replace("/hostedzone//hostedzone/", "/hostedzone/")
11586        .replace("/change/change/", "/change/");
11587
11588        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
11589
11590        let mut writer = EventWriter::new(Vec::new());
11591        AssociateVPCWithHostedZoneRequestSerializer::serialize(
11592            &mut writer,
11593            "AssociateVPCWithHostedZoneRequest",
11594            &input,
11595            "https://route53.amazonaws.com/doc/2013-04-01/",
11596        );
11597        request.set_payload(Some(writer.into_inner()));
11598
11599        let mut response = self
11600            .sign_and_dispatch(request, AssociateVPCWithHostedZoneError::from_response)
11601            .await?;
11602
11603        let mut response = response;
11604        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
11605            AssociateVPCWithHostedZoneResponseDeserializer::deserialize(actual_tag_name, stack)
11606        })
11607        .await?;
11608        let mut result = result;
11609        // parse non-payload
11610        Ok(result)
11611    }
11612
11613    /// For TXT records, see <a href="./util/fn.quote_txt_record.html">util::quote_txt_record</a>
11614    /// <p>Creates, changes, or deletes a resource record set, which contains authoritative DNS information for a specified domain name or subdomain name. For example, you can use <code>ChangeResourceRecordSets</code> to create a resource record set that routes traffic for test.example.com to a web server that has an IP address of 192.0.2.44.</p> <p> <b>Deleting Resource Record Sets</b> </p> <p>To delete a resource record set, you must specify all the same values that you specified when you created it.</p> <p> <b>Change Batches and Transactional Changes</b> </p> <p>The request body must include a document with a <code>ChangeResourceRecordSetsRequest</code> element. The request body contains a list of change items, known as a change batch. Change batches are considered transactional changes. Route 53 validates the changes in the request and then either makes all or none of the changes in the change batch request. This ensures that DNS routing isn't adversely affected by partial changes to the resource record sets in a hosted zone. </p> <p>For example, suppose a change batch request contains two changes: it deletes the <code>CNAME</code> resource record set for www.example.com and creates an alias resource record set for www.example.com. If validation for both records succeeds, Route 53 deletes the first resource record set and creates the second resource record set in a single operation. If validation for either the <code>DELETE</code> or the <code>CREATE</code> action fails, then the request is canceled, and the original <code>CNAME</code> record continues to exist.</p> <note> <p>If you try to delete the same resource record set more than once in a single change batch, Route 53 returns an <code>InvalidChangeBatch</code> error.</p> </note> <p> <b>Traffic Flow</b> </p> <p>To create resource record sets for complex routing configurations, use either the traffic flow visual editor in the Route 53 console or the API actions for traffic policies and traffic policy instances. Save the configuration as a traffic policy, then associate the traffic policy with one or more domain names (such as example.com) or subdomain names (such as www.example.com), in the same hosted zone or in multiple hosted zones. You can roll back the updates if the new configuration isn't performing as expected. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/traffic-flow.html">Using Traffic Flow to Route DNS Traffic</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p> <b>Create, Delete, and Upsert</b> </p> <p>Use <code>ChangeResourceRecordsSetsRequest</code> to perform the following actions:</p> <ul> <li> <p> <code>CREATE</code>: Creates a resource record set that has the specified values.</p> </li> <li> <p> <code>DELETE</code>: Deletes an existing resource record set that has the specified values.</p> </li> <li> <p> <code>UPSERT</code>: If a resource record set does not already exist, AWS creates it. If a resource set does exist, Route 53 updates it with the values in the request. </p> </li> </ul> <p> <b>Syntaxes for Creating, Updating, and Deleting Resource Record Sets</b> </p> <p>The syntax for a request depends on the type of resource record set that you want to create, delete, or update, such as weighted, alias, or failover. The XML elements in your request must appear in the order listed in the syntax. </p> <p>For an example for each type of resource record set, see "Examples."</p> <p>Don't refer to the syntax in the "Parameter Syntax" section, which includes all of the elements for every kind of resource record set that you can create, delete, or update by using <code>ChangeResourceRecordSets</code>. </p> <p> <b>Change Propagation to Route 53 DNS Servers</b> </p> <p>When you submit a <code>ChangeResourceRecordSets</code> request, Route 53 propagates your changes to all of the Route 53 authoritative DNS servers. While your changes are propagating, <code>GetChange</code> returns a status of <code>PENDING</code>. When propagation is complete, <code>GetChange</code> returns a status of <code>INSYNC</code>. Changes generally propagate to all Route 53 name servers within 60 seconds. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html">GetChange</a>.</p> <p> <b>Limits on ChangeResourceRecordSets Requests</b> </p> <p>For information about the limits on a <code>ChangeResourceRecordSets</code> request, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html">Limits</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
11615    #[allow(unused_variables, warnings)]
11616    async fn change_resource_record_sets(
11617        &self,
11618        input: ChangeResourceRecordSetsRequest,
11619    ) -> Result<ChangeResourceRecordSetsResponse, RusotoError<ChangeResourceRecordSetsError>> {
11620        let request_uri = format!(
11621            "/2013-04-01/hostedzone/{id}/rrset/",
11622            id = input.hosted_zone_id
11623        )
11624        .replace("/hostedzone/hostedzone/", "/hostedzone/")
11625        .replace("/hostedzone//hostedzone/", "/hostedzone/")
11626        .replace("/change/change/", "/change/");
11627
11628        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
11629
11630        let mut writer = EventWriter::new(Vec::new());
11631        ChangeResourceRecordSetsRequestSerializer::serialize(
11632            &mut writer,
11633            "ChangeResourceRecordSetsRequest",
11634            &input,
11635            "https://route53.amazonaws.com/doc/2013-04-01/",
11636        );
11637        request.set_payload(Some(writer.into_inner()));
11638
11639        let mut response = self
11640            .sign_and_dispatch(request, ChangeResourceRecordSetsError::from_response)
11641            .await?;
11642
11643        let mut response = response;
11644        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
11645            ChangeResourceRecordSetsResponseDeserializer::deserialize(actual_tag_name, stack)
11646        })
11647        .await?;
11648        let mut result = result;
11649        // parse non-payload
11650        Ok(result)
11651    }
11652
11653    /// <p>Adds, edits, or deletes tags for a health check or a hosted zone.</p> <p>For information about using tags for cost allocation, see <a href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using Cost Allocation Tags</a> in the <i>AWS Billing and Cost Management User Guide</i>.</p>
11654    #[allow(unused_variables, warnings)]
11655    async fn change_tags_for_resource(
11656        &self,
11657        input: ChangeTagsForResourceRequest,
11658    ) -> Result<ChangeTagsForResourceResponse, RusotoError<ChangeTagsForResourceError>> {
11659        let request_uri = format!(
11660            "/2013-04-01/tags/{resource_type}/{resource_id}",
11661            resource_id = input.resource_id,
11662            resource_type = input.resource_type
11663        )
11664        .replace("/hostedzone/hostedzone/", "/hostedzone/")
11665        .replace("/hostedzone//hostedzone/", "/hostedzone/")
11666        .replace("/change/change/", "/change/");
11667
11668        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
11669
11670        let mut writer = EventWriter::new(Vec::new());
11671        ChangeTagsForResourceRequestSerializer::serialize(
11672            &mut writer,
11673            "ChangeTagsForResourceRequest",
11674            &input,
11675            "https://route53.amazonaws.com/doc/2013-04-01/",
11676        );
11677        request.set_payload(Some(writer.into_inner()));
11678
11679        let mut response = self
11680            .sign_and_dispatch(request, ChangeTagsForResourceError::from_response)
11681            .await?;
11682
11683        let result = ChangeTagsForResourceResponse::default();
11684        let mut result = result;
11685        // parse non-payload
11686        Ok(result)
11687    }
11688
11689    /// <p><p>Creates a new health check.</p> <p>For information about adding health checks to resource record sets, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_ResourceRecordSet.html#Route53-Type-ResourceRecordSet-HealthCheckId">HealthCheckId</a> in <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html">ChangeResourceRecordSets</a>. </p> <p> <b>ELB Load Balancers</b> </p> <p>If you&#39;re registering EC2 instances with an Elastic Load Balancing (ELB) load balancer, do not create Amazon Route 53 health checks for the EC2 instances. When you register an EC2 instance with a load balancer, you configure settings for an ELB health check, which performs a similar function to a Route 53 health check.</p> <p> <b>Private Hosted Zones</b> </p> <p>You can associate health checks with failover resource record sets in a private hosted zone. Note the following:</p> <ul> <li> <p>Route 53 health checkers are outside the VPC. To check the health of an endpoint within a VPC by IP address, you must assign a public IP address to the instance in the VPC.</p> </li> <li> <p>You can configure a health checker to check the health of an external resource that the instance relies on, such as a database server.</p> </li> <li> <p>You can create a CloudWatch metric, associate an alarm with the metric, and then create a health check that is based on the state of the alarm. For example, you might create a CloudWatch metric that checks the status of the Amazon EC2 <code>StatusCheckFailed</code> metric, add an alarm to the metric, and then create a health check that is based on the state of the alarm. For information about creating CloudWatch metrics and alarms by using the CloudWatch console, see the <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html">Amazon CloudWatch User Guide</a>.</p> </li> </ul></p>
11690    #[allow(unused_variables, warnings)]
11691    async fn create_health_check(
11692        &self,
11693        input: CreateHealthCheckRequest,
11694    ) -> Result<CreateHealthCheckResponse, RusotoError<CreateHealthCheckError>> {
11695        let request_uri = "/2013-04-01/healthcheck";
11696
11697        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
11698
11699        let mut writer = EventWriter::new(Vec::new());
11700        CreateHealthCheckRequestSerializer::serialize(
11701            &mut writer,
11702            "CreateHealthCheckRequest",
11703            &input,
11704            "https://route53.amazonaws.com/doc/2013-04-01/",
11705        );
11706        request.set_payload(Some(writer.into_inner()));
11707
11708        let mut response = self
11709            .sign_and_dispatch(request, CreateHealthCheckError::from_response)
11710            .await?;
11711
11712        let mut response = response;
11713        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
11714            CreateHealthCheckResponseDeserializer::deserialize(actual_tag_name, stack)
11715        })
11716        .await?;
11717        let mut result = result;
11718        let value = response.headers.remove("Location").unwrap();
11719        result.location = value; // parse non-payload
11720        Ok(result)
11721    }
11722
11723    /// <p>Creates a new public or private hosted zone. You create records in a public hosted zone to define how you want to route traffic on the internet for a domain, such as example.com, and its subdomains (apex.example.com, acme.example.com). You create records in a private hosted zone to define how you want to route traffic for a domain and its subdomains within one or more Amazon Virtual Private Clouds (Amazon VPCs). </p> <important> <p>You can't convert a public hosted zone to a private hosted zone or vice versa. Instead, you must create a new hosted zone with the same name and create new resource record sets.</p> </important> <p>For more information about charges for hosted zones, see <a href="http://aws.amazon.com/route53/pricing/">Amazon Route 53 Pricing</a>.</p> <p>Note the following:</p> <ul> <li> <p>You can't create a hosted zone for a top-level domain (TLD) such as .com.</p> </li> <li> <p>For public hosted zones, Route 53 automatically creates a default SOA record and four NS records for the zone. For more information about SOA and NS records, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/SOA-NSrecords.html">NS and SOA Records that Route 53 Creates for a Hosted Zone</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>If you want to use the same name servers for multiple public hosted zones, you can optionally associate a reusable delegation set with the hosted zone. See the <code>DelegationSetId</code> element.</p> </li> <li> <p>If your domain is registered with a registrar other than Route 53, you must update the name servers with your registrar to make Route 53 the DNS service for the domain. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html">Migrating DNS Service for an Existing Domain to Amazon Route 53</a> in the <i>Amazon Route 53 Developer Guide</i>. </p> </li> </ul> <p>When you submit a <code>CreateHostedZone</code> request, the initial status of the hosted zone is <code>PENDING</code>. For public hosted zones, this means that the NS and SOA records are not yet available on all Route 53 DNS servers. When the NS and SOA records are available, the status of the zone changes to <code>INSYNC</code>.</p>
11724    #[allow(unused_variables, warnings)]
11725    async fn create_hosted_zone(
11726        &self,
11727        input: CreateHostedZoneRequest,
11728    ) -> Result<CreateHostedZoneResponse, RusotoError<CreateHostedZoneError>> {
11729        let request_uri = "/2013-04-01/hostedzone";
11730
11731        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
11732
11733        let mut writer = EventWriter::new(Vec::new());
11734        CreateHostedZoneRequestSerializer::serialize(
11735            &mut writer,
11736            "CreateHostedZoneRequest",
11737            &input,
11738            "https://route53.amazonaws.com/doc/2013-04-01/",
11739        );
11740        request.set_payload(Some(writer.into_inner()));
11741
11742        let mut response = self
11743            .sign_and_dispatch(request, CreateHostedZoneError::from_response)
11744            .await?;
11745
11746        let mut response = response;
11747        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
11748            CreateHostedZoneResponseDeserializer::deserialize(actual_tag_name, stack)
11749        })
11750        .await?;
11751        let mut result = result;
11752        let value = response.headers.remove("Location").unwrap();
11753        result.location = value; // parse non-payload
11754        Ok(result)
11755    }
11756
11757    /// <p><p>Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group.</p> <p>DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following:</p> <ul> <li> <p>Route 53 edge location that responded to the DNS query</p> </li> <li> <p>Domain or subdomain that was requested</p> </li> <li> <p>DNS record type, such as A or AAAA</p> </li> <li> <p>DNS response code, such as <code>NoError</code> or <code>ServFail</code> </p> </li> </ul> <dl> <dt>Log Group and Resource Policy</dt> <dd> <p>Before you create a query logging configuration, perform the following operations.</p> <note> <p>If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically.</p> </note> <ol> <li> <p>Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following:</p> <ul> <li> <p>You must create the log group in the us-east-1 region.</p> </li> <li> <p>You must use the same AWS account to create the log group and the hosted zone that you want to configure query logging for.</p> </li> <li> <p>When you create log groups for query logging, we recommend that you use a consistent prefix, for example:</p> <p> <code>/aws/route53/<i>hosted zone name</i> </code> </p> <p>In the next step, you&#39;ll create a resource policy, which controls access to one or more log groups and the associated AWS resources, such as Route 53 hosted zones. There&#39;s a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging.</p> </li> </ul> </li> <li> <p>Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. For the value of <code>Resource</code>, specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with <code><em></code>, for example:</p> <p> <code>arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/</em></code> </p> <note> <p>You can&#39;t use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the AWS SDKs, or the AWS CLI.</p> </note> </li> </ol> </dd> <dt>Log Streams and Edge Locations</dt> <dd> <p>When Route 53 finishes creating the configuration for DNS query logging, it does the following:</p> <ul> <li> <p>Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location.</p> </li> <li> <p>Begins to send query logs to the applicable log stream.</p> </li> </ul> <p>The name of each log stream is in the following format:</p> <p> <code> <i>hosted zone ID</i>/<i>edge location code</i> </code> </p> <p>The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see &quot;The Route 53 Global Network&quot; on the <a href="http://aws.amazon.com/route53/details/">Route 53 Product Details</a> page.</p> </dd> <dt>Queries That Are Logged</dt> <dd> <p>Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn&#39;t forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/welcome-dns-service.html">Routing Internet Traffic to Your Website or Web Application</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> </dd> <dt>Log File Format</dt> <dd> <p>For a list of the values in each query log and the format of each value, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html">Logging DNS Queries</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> </dd> <dt>Pricing</dt> <dd> <p>For information about charges for query logs, see <a href="http://aws.amazon.com/cloudwatch/pricing/">Amazon CloudWatch Pricing</a>.</p> </dd> <dt>How to Stop Logging</dt> <dd> <p>If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_DeleteQueryLoggingConfig.html">DeleteQueryLoggingConfig</a>.</p> </dd> </dl></p>
11758    #[allow(unused_variables, warnings)]
11759    async fn create_query_logging_config(
11760        &self,
11761        input: CreateQueryLoggingConfigRequest,
11762    ) -> Result<CreateQueryLoggingConfigResponse, RusotoError<CreateQueryLoggingConfigError>> {
11763        let request_uri = "/2013-04-01/queryloggingconfig";
11764
11765        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
11766
11767        let mut writer = EventWriter::new(Vec::new());
11768        CreateQueryLoggingConfigRequestSerializer::serialize(
11769            &mut writer,
11770            "CreateQueryLoggingConfigRequest",
11771            &input,
11772            "https://route53.amazonaws.com/doc/2013-04-01/",
11773        );
11774        request.set_payload(Some(writer.into_inner()));
11775
11776        let mut response = self
11777            .sign_and_dispatch(request, CreateQueryLoggingConfigError::from_response)
11778            .await?;
11779
11780        let mut response = response;
11781        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
11782            CreateQueryLoggingConfigResponseDeserializer::deserialize(actual_tag_name, stack)
11783        })
11784        .await?;
11785        let mut result = result;
11786        let value = response.headers.remove("Location").unwrap();
11787        result.location = value; // parse non-payload
11788        Ok(result)
11789    }
11790
11791    /// <p><p>Creates a delegation set (a group of four name servers) that can be reused by multiple hosted zones that were created by the same AWS account. </p> <p>You can also create a reusable delegation set that uses the four name servers that are associated with an existing hosted zone. Specify the hosted zone ID in the <code>CreateReusableDelegationSet</code> request.</p> <note> <p>You can&#39;t associate a reusable delegation set with a private hosted zone.</p> </note> <p>For information about using a reusable delegation set to configure white label name servers, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/white-label-name-servers.html">Configuring White Label Name Servers</a>.</p> <p>The process for migrating existing hosted zones to use a reusable delegation set is comparable to the process for configuring white label name servers. You need to perform the following steps:</p> <ol> <li> <p>Create a reusable delegation set.</p> </li> <li> <p>Recreate hosted zones, and reduce the TTL to 60 seconds or less.</p> </li> <li> <p>Recreate resource record sets in the new hosted zones.</p> </li> <li> <p>Change the registrar&#39;s name servers to use the name servers for the new hosted zones.</p> </li> <li> <p>Monitor traffic for the website or application.</p> </li> <li> <p>Change TTLs back to their original values.</p> </li> </ol> <p>If you want to migrate existing hosted zones to use a reusable delegation set, the existing hosted zones can&#39;t use any of the name servers that are assigned to the reusable delegation set. If one or more hosted zones do use one or more name servers that are assigned to the reusable delegation set, you can do one of the following:</p> <ul> <li> <p>For small numbers of hosted zones—up to a few hundred—it&#39;s relatively easy to create reusable delegation sets until you get one that has four name servers that don&#39;t overlap with any of the name servers in your hosted zones.</p> </li> <li> <p>For larger numbers of hosted zones, the easiest solution is to use more than one reusable delegation set.</p> </li> <li> <p>For larger numbers of hosted zones, you can also migrate hosted zones that have overlapping name servers to hosted zones that don&#39;t have overlapping name servers, then migrate the hosted zones again to use the reusable delegation set.</p> </li> </ul></p>
11792    #[allow(unused_variables, warnings)]
11793    async fn create_reusable_delegation_set(
11794        &self,
11795        input: CreateReusableDelegationSetRequest,
11796    ) -> Result<CreateReusableDelegationSetResponse, RusotoError<CreateReusableDelegationSetError>>
11797    {
11798        let request_uri = "/2013-04-01/delegationset";
11799
11800        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
11801
11802        let mut writer = EventWriter::new(Vec::new());
11803        CreateReusableDelegationSetRequestSerializer::serialize(
11804            &mut writer,
11805            "CreateReusableDelegationSetRequest",
11806            &input,
11807            "https://route53.amazonaws.com/doc/2013-04-01/",
11808        );
11809        request.set_payload(Some(writer.into_inner()));
11810
11811        let mut response = self
11812            .sign_and_dispatch(request, CreateReusableDelegationSetError::from_response)
11813            .await?;
11814
11815        let mut response = response;
11816        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
11817            CreateReusableDelegationSetResponseDeserializer::deserialize(actual_tag_name, stack)
11818        })
11819        .await?;
11820        let mut result = result;
11821        let value = response.headers.remove("Location").unwrap();
11822        result.location = value; // parse non-payload
11823        Ok(result)
11824    }
11825
11826    /// <p>Creates a traffic policy, which you use to create multiple DNS resource record sets for one domain name (such as example.com) or one subdomain name (such as www.example.com).</p>
11827    #[allow(unused_variables, warnings)]
11828    async fn create_traffic_policy(
11829        &self,
11830        input: CreateTrafficPolicyRequest,
11831    ) -> Result<CreateTrafficPolicyResponse, RusotoError<CreateTrafficPolicyError>> {
11832        let request_uri = "/2013-04-01/trafficpolicy";
11833
11834        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
11835
11836        let mut writer = EventWriter::new(Vec::new());
11837        CreateTrafficPolicyRequestSerializer::serialize(
11838            &mut writer,
11839            "CreateTrafficPolicyRequest",
11840            &input,
11841            "https://route53.amazonaws.com/doc/2013-04-01/",
11842        );
11843        request.set_payload(Some(writer.into_inner()));
11844
11845        let mut response = self
11846            .sign_and_dispatch(request, CreateTrafficPolicyError::from_response)
11847            .await?;
11848
11849        let mut response = response;
11850        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
11851            CreateTrafficPolicyResponseDeserializer::deserialize(actual_tag_name, stack)
11852        })
11853        .await?;
11854        let mut result = result;
11855        let value = response.headers.remove("Location").unwrap();
11856        result.location = value; // parse non-payload
11857        Ok(result)
11858    }
11859
11860    /// <p>Creates resource record sets in a specified hosted zone based on the settings in a specified traffic policy version. In addition, <code>CreateTrafficPolicyInstance</code> associates the resource record sets with a specified domain name (such as example.com) or subdomain name (such as www.example.com). Amazon Route 53 responds to DNS queries for the domain or subdomain name by using the resource record sets that <code>CreateTrafficPolicyInstance</code> created.</p>
11861    #[allow(unused_variables, warnings)]
11862    async fn create_traffic_policy_instance(
11863        &self,
11864        input: CreateTrafficPolicyInstanceRequest,
11865    ) -> Result<CreateTrafficPolicyInstanceResponse, RusotoError<CreateTrafficPolicyInstanceError>>
11866    {
11867        let request_uri = "/2013-04-01/trafficpolicyinstance";
11868
11869        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
11870
11871        let mut writer = EventWriter::new(Vec::new());
11872        CreateTrafficPolicyInstanceRequestSerializer::serialize(
11873            &mut writer,
11874            "CreateTrafficPolicyInstanceRequest",
11875            &input,
11876            "https://route53.amazonaws.com/doc/2013-04-01/",
11877        );
11878        request.set_payload(Some(writer.into_inner()));
11879
11880        let mut response = self
11881            .sign_and_dispatch(request, CreateTrafficPolicyInstanceError::from_response)
11882            .await?;
11883
11884        let mut response = response;
11885        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
11886            CreateTrafficPolicyInstanceResponseDeserializer::deserialize(actual_tag_name, stack)
11887        })
11888        .await?;
11889        let mut result = result;
11890        let value = response.headers.remove("Location").unwrap();
11891        result.location = value; // parse non-payload
11892        Ok(result)
11893    }
11894
11895    /// <p>Creates a new version of an existing traffic policy. When you create a new version of a traffic policy, you specify the ID of the traffic policy that you want to update and a JSON-formatted document that describes the new version. You use traffic policies to create multiple DNS resource record sets for one domain name (such as example.com) or one subdomain name (such as www.example.com). You can create a maximum of 1000 versions of a traffic policy. If you reach the limit and need to create another version, you'll need to start a new traffic policy.</p>
11896    #[allow(unused_variables, warnings)]
11897    async fn create_traffic_policy_version(
11898        &self,
11899        input: CreateTrafficPolicyVersionRequest,
11900    ) -> Result<CreateTrafficPolicyVersionResponse, RusotoError<CreateTrafficPolicyVersionError>>
11901    {
11902        let request_uri = format!("/2013-04-01/trafficpolicy/{id}", id = input.id)
11903            .replace("/hostedzone/hostedzone/", "/hostedzone/")
11904            .replace("/hostedzone//hostedzone/", "/hostedzone/")
11905            .replace("/change/change/", "/change/");
11906
11907        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
11908
11909        let mut writer = EventWriter::new(Vec::new());
11910        CreateTrafficPolicyVersionRequestSerializer::serialize(
11911            &mut writer,
11912            "CreateTrafficPolicyVersionRequest",
11913            &input,
11914            "https://route53.amazonaws.com/doc/2013-04-01/",
11915        );
11916        request.set_payload(Some(writer.into_inner()));
11917
11918        let mut response = self
11919            .sign_and_dispatch(request, CreateTrafficPolicyVersionError::from_response)
11920            .await?;
11921
11922        let mut response = response;
11923        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
11924            CreateTrafficPolicyVersionResponseDeserializer::deserialize(actual_tag_name, stack)
11925        })
11926        .await?;
11927        let mut result = result;
11928        let value = response.headers.remove("Location").unwrap();
11929        result.location = value; // parse non-payload
11930        Ok(result)
11931    }
11932
11933    /// <p><p>Authorizes the AWS account that created a specified VPC to submit an <code>AssociateVPCWithHostedZone</code> request to associate the VPC with a specified hosted zone that was created by a different account. To submit a <code>CreateVPCAssociationAuthorization</code> request, you must use the account that created the hosted zone. After you authorize the association, use the account that created the VPC to submit an <code>AssociateVPCWithHostedZone</code> request.</p> <note> <p>If you want to associate multiple VPCs that you created by using one account with a hosted zone that you created by using a different account, you must submit one authorization request for each VPC.</p> </note></p>
11934    #[allow(unused_variables, warnings)]
11935    async fn create_vpc_association_authorization(
11936        &self,
11937        input: CreateVPCAssociationAuthorizationRequest,
11938    ) -> Result<
11939        CreateVPCAssociationAuthorizationResponse,
11940        RusotoError<CreateVPCAssociationAuthorizationError>,
11941    > {
11942        let request_uri = format!(
11943            "/2013-04-01/hostedzone/{id}/authorizevpcassociation",
11944            id = input.hosted_zone_id
11945        )
11946        .replace("/hostedzone/hostedzone/", "/hostedzone/")
11947        .replace("/hostedzone//hostedzone/", "/hostedzone/")
11948        .replace("/change/change/", "/change/");
11949
11950        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
11951
11952        let mut writer = EventWriter::new(Vec::new());
11953        CreateVPCAssociationAuthorizationRequestSerializer::serialize(
11954            &mut writer,
11955            "CreateVPCAssociationAuthorizationRequest",
11956            &input,
11957            "https://route53.amazonaws.com/doc/2013-04-01/",
11958        );
11959        request.set_payload(Some(writer.into_inner()));
11960
11961        let mut response = self
11962            .sign_and_dispatch(
11963                request,
11964                CreateVPCAssociationAuthorizationError::from_response,
11965            )
11966            .await?;
11967
11968        let mut response = response;
11969        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
11970            CreateVPCAssociationAuthorizationResponseDeserializer::deserialize(
11971                actual_tag_name,
11972                stack,
11973            )
11974        })
11975        .await?;
11976        let mut result = result;
11977        // parse non-payload
11978        Ok(result)
11979    }
11980
11981    /// <p>Deletes a health check.</p> <important> <p>Amazon Route 53 does not prevent you from deleting a health check even if the health check is associated with one or more resource record sets. If you delete a health check and you don't update the associated resource record sets, the future status of the health check can't be predicted and may change. This will affect the routing of DNS queries for your DNS failover configuration. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-creating-deleting.html#health-checks-deleting.html">Replacing and Deleting Health Checks</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> </important> <p>If you're using AWS Cloud Map and you configured Cloud Map to create a Route 53 health check when you register an instance, you can't use the Route 53 <code>DeleteHealthCheck</code> command to delete the health check. The health check is deleted automatically when you deregister the instance; there can be a delay of several hours before the health check is deleted from Route 53. </p>
11982    #[allow(unused_variables, warnings)]
11983    async fn delete_health_check(
11984        &self,
11985        input: DeleteHealthCheckRequest,
11986    ) -> Result<DeleteHealthCheckResponse, RusotoError<DeleteHealthCheckError>> {
11987        let request_uri = format!(
11988            "/2013-04-01/healthcheck/{health_check_id}",
11989            health_check_id = input.health_check_id
11990        )
11991        .replace("/hostedzone/hostedzone/", "/hostedzone/")
11992        .replace("/hostedzone//hostedzone/", "/hostedzone/")
11993        .replace("/change/change/", "/change/");
11994
11995        let mut request = SignedRequest::new("DELETE", "route53", &self.region, &request_uri);
11996
11997        let mut response = self
11998            .sign_and_dispatch(request, DeleteHealthCheckError::from_response)
11999            .await?;
12000
12001        let result = DeleteHealthCheckResponse::default();
12002        let mut result = result;
12003        // parse non-payload
12004        Ok(result)
12005    }
12006
12007    /// <p><p>Deletes a hosted zone.</p> <p>If the hosted zone was created by another service, such as AWS Cloud Map, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DeleteHostedZone.html#delete-public-hosted-zone-created-by-another-service">Deleting Public Hosted Zones That Were Created by Another Service</a> in the <i>Amazon Route 53 Developer Guide</i> for information about how to delete it. (The process is the same for public and private hosted zones that were created by another service.)</p> <p>If you want to keep your domain registration but you want to stop routing internet traffic to your website or web application, we recommend that you delete resource record sets in the hosted zone instead of deleting the hosted zone.</p> <important> <p>If you delete a hosted zone, you can&#39;t undelete it. You must create a new hosted zone and update the name servers for your domain registration, which can require up to 48 hours to take effect. (If you delegated responsibility for a subdomain to a hosted zone and you delete the child hosted zone, you must update the name servers in the parent hosted zone.) In addition, if you delete a hosted zone, someone could hijack the domain and route traffic to their own resources using your domain name.</p> </important> <p>If you want to avoid the monthly charge for the hosted zone, you can transfer DNS service for the domain to a free DNS service. When you transfer DNS service, you have to update the name servers for the domain registration. If the domain is registered with Route 53, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_domains_UpdateDomainNameservers.html">UpdateDomainNameservers</a> for information about how to replace Route 53 name servers with name servers for the new DNS service. If the domain is registered with another registrar, use the method provided by the registrar to update name servers for the domain registration. For more information, perform an internet search on &quot;free DNS service.&quot;</p> <p>You can delete a hosted zone only if it contains only the default SOA record and NS resource record sets. If the hosted zone contains other resource record sets, you must delete them before you can delete the hosted zone. If you try to delete a hosted zone that contains other resource record sets, the request fails, and Route 53 returns a <code>HostedZoneNotEmpty</code> error. For information about deleting records from your hosted zone, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html">ChangeResourceRecordSets</a>.</p> <p>To verify that the hosted zone has been deleted, do one of the following:</p> <ul> <li> <p>Use the <code>GetHostedZone</code> action to request information about the hosted zone.</p> </li> <li> <p>Use the <code>ListHostedZones</code> action to get a list of the hosted zones associated with the current AWS account.</p> </li> </ul></p>
12008    #[allow(unused_variables, warnings)]
12009    async fn delete_hosted_zone(
12010        &self,
12011        input: DeleteHostedZoneRequest,
12012    ) -> Result<DeleteHostedZoneResponse, RusotoError<DeleteHostedZoneError>> {
12013        let request_uri = format!("/2013-04-01/hostedzone/{id}", id = input.id)
12014            .replace("/hostedzone/hostedzone/", "/hostedzone/")
12015            .replace("/hostedzone//hostedzone/", "/hostedzone/")
12016            .replace("/change/change/", "/change/");
12017
12018        let mut request = SignedRequest::new("DELETE", "route53", &self.region, &request_uri);
12019
12020        let mut response = self
12021            .sign_and_dispatch(request, DeleteHostedZoneError::from_response)
12022            .await?;
12023
12024        let mut response = response;
12025        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12026            DeleteHostedZoneResponseDeserializer::deserialize(actual_tag_name, stack)
12027        })
12028        .await?;
12029        let mut result = result;
12030        // parse non-payload
12031        Ok(result)
12032    }
12033
12034    /// <p>Deletes a configuration for DNS query logging. If you delete a configuration, Amazon Route 53 stops sending query logs to CloudWatch Logs. Route 53 doesn't delete any logs that are already in CloudWatch Logs.</p> <p>For more information about DNS query logs, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateQueryLoggingConfig.html">CreateQueryLoggingConfig</a>.</p>
12035    #[allow(unused_variables, warnings)]
12036    async fn delete_query_logging_config(
12037        &self,
12038        input: DeleteQueryLoggingConfigRequest,
12039    ) -> Result<DeleteQueryLoggingConfigResponse, RusotoError<DeleteQueryLoggingConfigError>> {
12040        let request_uri = format!("/2013-04-01/queryloggingconfig/{id}", id = input.id)
12041            .replace("/hostedzone/hostedzone/", "/hostedzone/")
12042            .replace("/hostedzone//hostedzone/", "/hostedzone/")
12043            .replace("/change/change/", "/change/");
12044
12045        let mut request = SignedRequest::new("DELETE", "route53", &self.region, &request_uri);
12046
12047        let mut response = self
12048            .sign_and_dispatch(request, DeleteQueryLoggingConfigError::from_response)
12049            .await?;
12050
12051        let result = DeleteQueryLoggingConfigResponse::default();
12052        let mut result = result;
12053        // parse non-payload
12054        Ok(result)
12055    }
12056
12057    /// <p>Deletes a reusable delegation set.</p> <important> <p>You can delete a reusable delegation set only if it isn't associated with any hosted zones.</p> </important> <p>To verify that the reusable delegation set is not associated with any hosted zones, submit a <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetReusableDelegationSet.html">GetReusableDelegationSet</a> request and specify the ID of the reusable delegation set that you want to delete.</p>
12058    #[allow(unused_variables, warnings)]
12059    async fn delete_reusable_delegation_set(
12060        &self,
12061        input: DeleteReusableDelegationSetRequest,
12062    ) -> Result<DeleteReusableDelegationSetResponse, RusotoError<DeleteReusableDelegationSetError>>
12063    {
12064        let request_uri = format!("/2013-04-01/delegationset/{id}", id = input.id)
12065            .replace("/hostedzone/hostedzone/", "/hostedzone/")
12066            .replace("/hostedzone//hostedzone/", "/hostedzone/")
12067            .replace("/change/change/", "/change/");
12068
12069        let mut request = SignedRequest::new("DELETE", "route53", &self.region, &request_uri);
12070
12071        let mut response = self
12072            .sign_and_dispatch(request, DeleteReusableDelegationSetError::from_response)
12073            .await?;
12074
12075        let result = DeleteReusableDelegationSetResponse::default();
12076        let mut result = result;
12077        // parse non-payload
12078        Ok(result)
12079    }
12080
12081    /// <p>Deletes a traffic policy.</p>
12082    #[allow(unused_variables, warnings)]
12083    async fn delete_traffic_policy(
12084        &self,
12085        input: DeleteTrafficPolicyRequest,
12086    ) -> Result<DeleteTrafficPolicyResponse, RusotoError<DeleteTrafficPolicyError>> {
12087        let request_uri = format!(
12088            "/2013-04-01/trafficpolicy/{id}/{version}",
12089            id = input.id,
12090            version = input.version
12091        )
12092        .replace("/hostedzone/hostedzone/", "/hostedzone/")
12093        .replace("/hostedzone//hostedzone/", "/hostedzone/")
12094        .replace("/change/change/", "/change/");
12095
12096        let mut request = SignedRequest::new("DELETE", "route53", &self.region, &request_uri);
12097
12098        let mut response = self
12099            .sign_and_dispatch(request, DeleteTrafficPolicyError::from_response)
12100            .await?;
12101
12102        let result = DeleteTrafficPolicyResponse::default();
12103        let mut result = result;
12104        // parse non-payload
12105        Ok(result)
12106    }
12107
12108    /// <p><p>Deletes a traffic policy instance and all of the resource record sets that Amazon Route 53 created when you created the instance.</p> <note> <p>In the Route 53 console, traffic policy instances are known as policy records.</p> </note></p>
12109    #[allow(unused_variables, warnings)]
12110    async fn delete_traffic_policy_instance(
12111        &self,
12112        input: DeleteTrafficPolicyInstanceRequest,
12113    ) -> Result<DeleteTrafficPolicyInstanceResponse, RusotoError<DeleteTrafficPolicyInstanceError>>
12114    {
12115        let request_uri = format!("/2013-04-01/trafficpolicyinstance/{id}", id = input.id)
12116            .replace("/hostedzone/hostedzone/", "/hostedzone/")
12117            .replace("/hostedzone//hostedzone/", "/hostedzone/")
12118            .replace("/change/change/", "/change/");
12119
12120        let mut request = SignedRequest::new("DELETE", "route53", &self.region, &request_uri);
12121
12122        let mut response = self
12123            .sign_and_dispatch(request, DeleteTrafficPolicyInstanceError::from_response)
12124            .await?;
12125
12126        let result = DeleteTrafficPolicyInstanceResponse::default();
12127        let mut result = result;
12128        // parse non-payload
12129        Ok(result)
12130    }
12131
12132    /// <p><p>Removes authorization to submit an <code>AssociateVPCWithHostedZone</code> request to associate a specified VPC with a hosted zone that was created by a different account. You must use the account that created the hosted zone to submit a <code>DeleteVPCAssociationAuthorization</code> request.</p> <important> <p>Sending this request only prevents the AWS account that created the VPC from associating the VPC with the Amazon Route 53 hosted zone in the future. If the VPC is already associated with the hosted zone, <code>DeleteVPCAssociationAuthorization</code> won&#39;t disassociate the VPC from the hosted zone. If you want to delete an existing association, use <code>DisassociateVPCFromHostedZone</code>.</p> </important></p>
12133    #[allow(unused_variables, warnings)]
12134    async fn delete_vpc_association_authorization(
12135        &self,
12136        input: DeleteVPCAssociationAuthorizationRequest,
12137    ) -> Result<
12138        DeleteVPCAssociationAuthorizationResponse,
12139        RusotoError<DeleteVPCAssociationAuthorizationError>,
12140    > {
12141        let request_uri = format!(
12142            "/2013-04-01/hostedzone/{id}/deauthorizevpcassociation",
12143            id = input.hosted_zone_id
12144        )
12145        .replace("/hostedzone/hostedzone/", "/hostedzone/")
12146        .replace("/hostedzone//hostedzone/", "/hostedzone/")
12147        .replace("/change/change/", "/change/");
12148
12149        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
12150
12151        let mut writer = EventWriter::new(Vec::new());
12152        DeleteVPCAssociationAuthorizationRequestSerializer::serialize(
12153            &mut writer,
12154            "DeleteVPCAssociationAuthorizationRequest",
12155            &input,
12156            "https://route53.amazonaws.com/doc/2013-04-01/",
12157        );
12158        request.set_payload(Some(writer.into_inner()));
12159
12160        let mut response = self
12161            .sign_and_dispatch(
12162                request,
12163                DeleteVPCAssociationAuthorizationError::from_response,
12164            )
12165            .await?;
12166
12167        let result = DeleteVPCAssociationAuthorizationResponse::default();
12168        let mut result = result;
12169        // parse non-payload
12170        Ok(result)
12171    }
12172
12173    /// <p><p>Disassociates an Amazon Virtual Private Cloud (Amazon VPC) from an Amazon Route 53 private hosted zone. Note the following:</p> <ul> <li> <p>You can&#39;t disassociate the last Amazon VPC from a private hosted zone.</p> </li> <li> <p>You can&#39;t convert a private hosted zone into a public hosted zone.</p> </li> <li> <p>You can submit a <code>DisassociateVPCFromHostedZone</code> request using either the account that created the hosted zone or the account that created the Amazon VPC.</p> </li> <li> <p>Some services, such as AWS Cloud Map and Amazon Elastic File System (Amazon EFS) automatically create hosted zones and associate VPCs with the hosted zones. A service can create a hosted zone using your account or using its own account. You can disassociate a VPC from a hosted zone only if the service created the hosted zone using your account.</p> <p>When you run <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_ListHostedZonesByVPC.html">DisassociateVPCFromHostedZone</a>, if the hosted zone has a value for <code>OwningAccount</code>, you can use <code>DisassociateVPCFromHostedZone</code>. If the hosted zone has a value for <code>OwningService</code>, you can&#39;t use <code>DisassociateVPCFromHostedZone</code>.</p> </li> </ul></p>
12174    #[allow(unused_variables, warnings)]
12175    async fn disassociate_vpc_from_hosted_zone(
12176        &self,
12177        input: DisassociateVPCFromHostedZoneRequest,
12178    ) -> Result<
12179        DisassociateVPCFromHostedZoneResponse,
12180        RusotoError<DisassociateVPCFromHostedZoneError>,
12181    > {
12182        let request_uri = format!(
12183            "/2013-04-01/hostedzone/{id}/disassociatevpc",
12184            id = input.hosted_zone_id
12185        )
12186        .replace("/hostedzone/hostedzone/", "/hostedzone/")
12187        .replace("/hostedzone//hostedzone/", "/hostedzone/")
12188        .replace("/change/change/", "/change/");
12189
12190        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
12191
12192        let mut writer = EventWriter::new(Vec::new());
12193        DisassociateVPCFromHostedZoneRequestSerializer::serialize(
12194            &mut writer,
12195            "DisassociateVPCFromHostedZoneRequest",
12196            &input,
12197            "https://route53.amazonaws.com/doc/2013-04-01/",
12198        );
12199        request.set_payload(Some(writer.into_inner()));
12200
12201        let mut response = self
12202            .sign_and_dispatch(request, DisassociateVPCFromHostedZoneError::from_response)
12203            .await?;
12204
12205        let mut response = response;
12206        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12207            DisassociateVPCFromHostedZoneResponseDeserializer::deserialize(actual_tag_name, stack)
12208        })
12209        .await?;
12210        let mut result = result;
12211        // parse non-payload
12212        Ok(result)
12213    }
12214
12215    /// <p><p>Gets the specified limit for the current account, for example, the maximum number of health checks that you can create using the account.</p> <p>For the default limit, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html">Limits</a> in the <i>Amazon Route 53 Developer Guide</i>. To request a higher limit, <a href="https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&amp;limitType=service-code-route53">open a case</a>.</p> <note> <p>You can also view account limits in AWS Trusted Advisor. Sign in to the AWS Management Console and open the Trusted Advisor console at <a href="https://console.aws.amazon.com/trustedadvisor">https://console.aws.amazon.com/trustedadvisor/</a>. Then choose <b>Service limits</b> in the navigation pane.</p> </note></p>
12216    #[allow(unused_variables, warnings)]
12217    async fn get_account_limit(
12218        &self,
12219        input: GetAccountLimitRequest,
12220    ) -> Result<GetAccountLimitResponse, RusotoError<GetAccountLimitError>> {
12221        let request_uri = format!("/2013-04-01/accountlimit/{type}", type = input.type_)
12222            .replace("/hostedzone/hostedzone/", "/hostedzone/")
12223            .replace("/hostedzone//hostedzone/", "/hostedzone/")
12224            .replace("/change/change/", "/change/");
12225
12226        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12227
12228        let mut response = self
12229            .sign_and_dispatch(request, GetAccountLimitError::from_response)
12230            .await?;
12231
12232        let mut response = response;
12233        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12234            GetAccountLimitResponseDeserializer::deserialize(actual_tag_name, stack)
12235        })
12236        .await?;
12237        let mut result = result;
12238        // parse non-payload
12239        Ok(result)
12240    }
12241
12242    /// <p><p>Returns the current status of a change batch request. The status is one of the following values:</p> <ul> <li> <p> <code>PENDING</code> indicates that the changes in this request have not propagated to all Amazon Route 53 DNS servers. This is the initial status of all change batch requests.</p> </li> <li> <p> <code>INSYNC</code> indicates that the changes have propagated to all Route 53 DNS servers. </p> </li> </ul></p>
12243    #[allow(unused_variables, warnings)]
12244    async fn get_change(
12245        &self,
12246        input: GetChangeRequest,
12247    ) -> Result<GetChangeResponse, RusotoError<GetChangeError>> {
12248        let request_uri = format!("/2013-04-01/change/{id}", id = input.id)
12249            .replace("/hostedzone/hostedzone/", "/hostedzone/")
12250            .replace("/hostedzone//hostedzone/", "/hostedzone/")
12251            .replace("/change/change/", "/change/");
12252
12253        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12254
12255        let mut response = self
12256            .sign_and_dispatch(request, GetChangeError::from_response)
12257            .await?;
12258
12259        let mut response = response;
12260        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12261            GetChangeResponseDeserializer::deserialize(actual_tag_name, stack)
12262        })
12263        .await?;
12264        let mut result = result;
12265        // parse non-payload
12266        Ok(result)
12267    }
12268
12269    /// <p><important> <p> <code>GetCheckerIpRanges</code> still works, but we recommend that you download ip-ranges.json, which includes IP address ranges for all AWS services. For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/route-53-ip-addresses.html">IP Address Ranges of Amazon Route 53 Servers</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> </important></p>
12270    #[allow(unused_variables, warnings)]
12271    async fn get_checker_ip_ranges(
12272        &self,
12273        input: GetCheckerIpRangesRequest,
12274    ) -> Result<GetCheckerIpRangesResponse, RusotoError<GetCheckerIpRangesError>> {
12275        let request_uri = "/2013-04-01/checkeripranges";
12276
12277        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12278
12279        let mut response = self
12280            .sign_and_dispatch(request, GetCheckerIpRangesError::from_response)
12281            .await?;
12282
12283        let mut response = response;
12284        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12285            GetCheckerIpRangesResponseDeserializer::deserialize(actual_tag_name, stack)
12286        })
12287        .await?;
12288        let mut result = result;
12289        // parse non-payload
12290        Ok(result)
12291    }
12292
12293    /// <p>Gets information about whether a specified geographic location is supported for Amazon Route 53 geolocation resource record sets.</p> <p>Use the following syntax to determine whether a continent is supported for geolocation:</p> <p> <code>GET /2013-04-01/geolocation?continentcode=<i>two-letter abbreviation for a continent</i> </code> </p> <p>Use the following syntax to determine whether a country is supported for geolocation:</p> <p> <code>GET /2013-04-01/geolocation?countrycode=<i>two-character country code</i> </code> </p> <p>Use the following syntax to determine whether a subdivision of a country is supported for geolocation:</p> <p> <code>GET /2013-04-01/geolocation?countrycode=<i>two-character country code</i>&amp;subdivisioncode=<i>subdivision code</i> </code> </p>
12294    #[allow(unused_variables, warnings)]
12295    async fn get_geo_location(
12296        &self,
12297        input: GetGeoLocationRequest,
12298    ) -> Result<GetGeoLocationResponse, RusotoError<GetGeoLocationError>> {
12299        let request_uri = "/2013-04-01/geolocation";
12300
12301        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12302
12303        let mut params = Params::new();
12304        if let Some(ref x) = input.continent_code {
12305            params.put("continentcode", x);
12306        }
12307        if let Some(ref x) = input.country_code {
12308            params.put("countrycode", x);
12309        }
12310        if let Some(ref x) = input.subdivision_code {
12311            params.put("subdivisioncode", x);
12312        }
12313        request.set_params(params);
12314
12315        let mut response = self
12316            .sign_and_dispatch(request, GetGeoLocationError::from_response)
12317            .await?;
12318
12319        let mut response = response;
12320        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12321            GetGeoLocationResponseDeserializer::deserialize(actual_tag_name, stack)
12322        })
12323        .await?;
12324        let mut result = result;
12325        // parse non-payload
12326        Ok(result)
12327    }
12328
12329    /// <p>Gets information about a specified health check.</p>
12330    #[allow(unused_variables, warnings)]
12331    async fn get_health_check(
12332        &self,
12333        input: GetHealthCheckRequest,
12334    ) -> Result<GetHealthCheckResponse, RusotoError<GetHealthCheckError>> {
12335        let request_uri = format!(
12336            "/2013-04-01/healthcheck/{health_check_id}",
12337            health_check_id = input.health_check_id
12338        )
12339        .replace("/hostedzone/hostedzone/", "/hostedzone/")
12340        .replace("/hostedzone//hostedzone/", "/hostedzone/")
12341        .replace("/change/change/", "/change/");
12342
12343        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12344
12345        let mut response = self
12346            .sign_and_dispatch(request, GetHealthCheckError::from_response)
12347            .await?;
12348
12349        let mut response = response;
12350        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12351            GetHealthCheckResponseDeserializer::deserialize(actual_tag_name, stack)
12352        })
12353        .await?;
12354        let mut result = result;
12355        // parse non-payload
12356        Ok(result)
12357    }
12358
12359    /// <p>Retrieves the number of health checks that are associated with the current AWS account.</p>
12360    #[allow(unused_variables, warnings)]
12361    async fn get_health_check_count(
12362        &self,
12363        input: GetHealthCheckCountRequest,
12364    ) -> Result<GetHealthCheckCountResponse, RusotoError<GetHealthCheckCountError>> {
12365        let request_uri = "/2013-04-01/healthcheckcount";
12366
12367        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12368
12369        let mut response = self
12370            .sign_and_dispatch(request, GetHealthCheckCountError::from_response)
12371            .await?;
12372
12373        let mut response = response;
12374        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12375            GetHealthCheckCountResponseDeserializer::deserialize(actual_tag_name, stack)
12376        })
12377        .await?;
12378        let mut result = result;
12379        // parse non-payload
12380        Ok(result)
12381    }
12382
12383    /// <p>Gets the reason that a specified health check failed most recently.</p>
12384    #[allow(unused_variables, warnings)]
12385    async fn get_health_check_last_failure_reason(
12386        &self,
12387        input: GetHealthCheckLastFailureReasonRequest,
12388    ) -> Result<
12389        GetHealthCheckLastFailureReasonResponse,
12390        RusotoError<GetHealthCheckLastFailureReasonError>,
12391    > {
12392        let request_uri = format!(
12393            "/2013-04-01/healthcheck/{health_check_id}/lastfailurereason",
12394            health_check_id = input.health_check_id
12395        )
12396        .replace("/hostedzone/hostedzone/", "/hostedzone/")
12397        .replace("/hostedzone//hostedzone/", "/hostedzone/")
12398        .replace("/change/change/", "/change/");
12399
12400        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12401
12402        let mut response = self
12403            .sign_and_dispatch(request, GetHealthCheckLastFailureReasonError::from_response)
12404            .await?;
12405
12406        let mut response = response;
12407        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12408            GetHealthCheckLastFailureReasonResponseDeserializer::deserialize(actual_tag_name, stack)
12409        })
12410        .await?;
12411        let mut result = result;
12412        // parse non-payload
12413        Ok(result)
12414    }
12415
12416    /// <p>Gets status of a specified health check. </p>
12417    #[allow(unused_variables, warnings)]
12418    async fn get_health_check_status(
12419        &self,
12420        input: GetHealthCheckStatusRequest,
12421    ) -> Result<GetHealthCheckStatusResponse, RusotoError<GetHealthCheckStatusError>> {
12422        let request_uri = format!(
12423            "/2013-04-01/healthcheck/{health_check_id}/status",
12424            health_check_id = input.health_check_id
12425        )
12426        .replace("/hostedzone/hostedzone/", "/hostedzone/")
12427        .replace("/hostedzone//hostedzone/", "/hostedzone/")
12428        .replace("/change/change/", "/change/");
12429
12430        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12431
12432        let mut response = self
12433            .sign_and_dispatch(request, GetHealthCheckStatusError::from_response)
12434            .await?;
12435
12436        let mut response = response;
12437        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12438            GetHealthCheckStatusResponseDeserializer::deserialize(actual_tag_name, stack)
12439        })
12440        .await?;
12441        let mut result = result;
12442        // parse non-payload
12443        Ok(result)
12444    }
12445
12446    /// <p>Gets information about a specified hosted zone including the four name servers assigned to the hosted zone.</p>
12447    #[allow(unused_variables, warnings)]
12448    async fn get_hosted_zone(
12449        &self,
12450        input: GetHostedZoneRequest,
12451    ) -> Result<GetHostedZoneResponse, RusotoError<GetHostedZoneError>> {
12452        let request_uri = format!("/2013-04-01/hostedzone/{id}", id = input.id)
12453            .replace("/hostedzone/hostedzone/", "/hostedzone/")
12454            .replace("/hostedzone//hostedzone/", "/hostedzone/")
12455            .replace("/change/change/", "/change/");
12456
12457        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12458
12459        let mut response = self
12460            .sign_and_dispatch(request, GetHostedZoneError::from_response)
12461            .await?;
12462
12463        let mut response = response;
12464        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12465            GetHostedZoneResponseDeserializer::deserialize(actual_tag_name, stack)
12466        })
12467        .await?;
12468        let mut result = result;
12469        // parse non-payload
12470        Ok(result)
12471    }
12472
12473    /// <p>Retrieves the number of hosted zones that are associated with the current AWS account.</p>
12474    #[allow(unused_variables, warnings)]
12475    async fn get_hosted_zone_count(
12476        &self,
12477        input: GetHostedZoneCountRequest,
12478    ) -> Result<GetHostedZoneCountResponse, RusotoError<GetHostedZoneCountError>> {
12479        let request_uri = "/2013-04-01/hostedzonecount";
12480
12481        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12482
12483        let mut response = self
12484            .sign_and_dispatch(request, GetHostedZoneCountError::from_response)
12485            .await?;
12486
12487        let mut response = response;
12488        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12489            GetHostedZoneCountResponseDeserializer::deserialize(actual_tag_name, stack)
12490        })
12491        .await?;
12492        let mut result = result;
12493        // parse non-payload
12494        Ok(result)
12495    }
12496
12497    /// <p>Gets the specified limit for a specified hosted zone, for example, the maximum number of records that you can create in the hosted zone. </p> <p>For the default limit, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html">Limits</a> in the <i>Amazon Route 53 Developer Guide</i>. To request a higher limit, <a href="https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&amp;limitType=service-code-route53">open a case</a>.</p>
12498    #[allow(unused_variables, warnings)]
12499    async fn get_hosted_zone_limit(
12500        &self,
12501        input: GetHostedZoneLimitRequest,
12502    ) -> Result<GetHostedZoneLimitResponse, RusotoError<GetHostedZoneLimitError>> {
12503        let request_uri = format!("/2013-04-01/hostedzonelimit/{id}/{type}", id = input.hosted_zone_id, type = input.type_).replace("/hostedzone/hostedzone/", "/hostedzone/").replace("/hostedzone//hostedzone/", "/hostedzone/").replace("/change/change/", "/change/");
12504
12505        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12506
12507        let mut response = self
12508            .sign_and_dispatch(request, GetHostedZoneLimitError::from_response)
12509            .await?;
12510
12511        let mut response = response;
12512        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12513            GetHostedZoneLimitResponseDeserializer::deserialize(actual_tag_name, stack)
12514        })
12515        .await?;
12516        let mut result = result;
12517        // parse non-payload
12518        Ok(result)
12519    }
12520
12521    /// <p>Gets information about a specified configuration for DNS query logging.</p> <p>For more information about DNS query logs, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateQueryLoggingConfig.html">CreateQueryLoggingConfig</a> and <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html">Logging DNS Queries</a>.</p>
12522    #[allow(unused_variables, warnings)]
12523    async fn get_query_logging_config(
12524        &self,
12525        input: GetQueryLoggingConfigRequest,
12526    ) -> Result<GetQueryLoggingConfigResponse, RusotoError<GetQueryLoggingConfigError>> {
12527        let request_uri = format!("/2013-04-01/queryloggingconfig/{id}", id = input.id)
12528            .replace("/hostedzone/hostedzone/", "/hostedzone/")
12529            .replace("/hostedzone//hostedzone/", "/hostedzone/")
12530            .replace("/change/change/", "/change/");
12531
12532        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12533
12534        let mut response = self
12535            .sign_and_dispatch(request, GetQueryLoggingConfigError::from_response)
12536            .await?;
12537
12538        let mut response = response;
12539        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12540            GetQueryLoggingConfigResponseDeserializer::deserialize(actual_tag_name, stack)
12541        })
12542        .await?;
12543        let mut result = result;
12544        // parse non-payload
12545        Ok(result)
12546    }
12547
12548    /// <p>Retrieves information about a specified reusable delegation set, including the four name servers that are assigned to the delegation set.</p>
12549    #[allow(unused_variables, warnings)]
12550    async fn get_reusable_delegation_set(
12551        &self,
12552        input: GetReusableDelegationSetRequest,
12553    ) -> Result<GetReusableDelegationSetResponse, RusotoError<GetReusableDelegationSetError>> {
12554        let request_uri = format!("/2013-04-01/delegationset/{id}", id = input.id)
12555            .replace("/hostedzone/hostedzone/", "/hostedzone/")
12556            .replace("/hostedzone//hostedzone/", "/hostedzone/")
12557            .replace("/change/change/", "/change/");
12558
12559        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12560
12561        let mut response = self
12562            .sign_and_dispatch(request, GetReusableDelegationSetError::from_response)
12563            .await?;
12564
12565        let mut response = response;
12566        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12567            GetReusableDelegationSetResponseDeserializer::deserialize(actual_tag_name, stack)
12568        })
12569        .await?;
12570        let mut result = result;
12571        // parse non-payload
12572        Ok(result)
12573    }
12574
12575    /// <p>Gets the maximum number of hosted zones that you can associate with the specified reusable delegation set.</p> <p>For the default limit, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html">Limits</a> in the <i>Amazon Route 53 Developer Guide</i>. To request a higher limit, <a href="https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&amp;limitType=service-code-route53">open a case</a>.</p>
12576    #[allow(unused_variables, warnings)]
12577    async fn get_reusable_delegation_set_limit(
12578        &self,
12579        input: GetReusableDelegationSetLimitRequest,
12580    ) -> Result<
12581        GetReusableDelegationSetLimitResponse,
12582        RusotoError<GetReusableDelegationSetLimitError>,
12583    > {
12584        let request_uri = format!("/2013-04-01/reusabledelegationsetlimit/{id}/{type}", id = input.delegation_set_id, type = input.type_).replace("/hostedzone/hostedzone/", "/hostedzone/").replace("/hostedzone//hostedzone/", "/hostedzone/").replace("/change/change/", "/change/");
12585
12586        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12587
12588        let mut response = self
12589            .sign_and_dispatch(request, GetReusableDelegationSetLimitError::from_response)
12590            .await?;
12591
12592        let mut response = response;
12593        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12594            GetReusableDelegationSetLimitResponseDeserializer::deserialize(actual_tag_name, stack)
12595        })
12596        .await?;
12597        let mut result = result;
12598        // parse non-payload
12599        Ok(result)
12600    }
12601
12602    /// <p>Gets information about a specific traffic policy version.</p>
12603    #[allow(unused_variables, warnings)]
12604    async fn get_traffic_policy(
12605        &self,
12606        input: GetTrafficPolicyRequest,
12607    ) -> Result<GetTrafficPolicyResponse, RusotoError<GetTrafficPolicyError>> {
12608        let request_uri = format!(
12609            "/2013-04-01/trafficpolicy/{id}/{version}",
12610            id = input.id,
12611            version = input.version
12612        )
12613        .replace("/hostedzone/hostedzone/", "/hostedzone/")
12614        .replace("/hostedzone//hostedzone/", "/hostedzone/")
12615        .replace("/change/change/", "/change/");
12616
12617        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12618
12619        let mut response = self
12620            .sign_and_dispatch(request, GetTrafficPolicyError::from_response)
12621            .await?;
12622
12623        let mut response = response;
12624        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12625            GetTrafficPolicyResponseDeserializer::deserialize(actual_tag_name, stack)
12626        })
12627        .await?;
12628        let mut result = result;
12629        // parse non-payload
12630        Ok(result)
12631    }
12632
12633    /// <p><p>Gets information about a specified traffic policy instance.</p> <note> <p>After you submit a <code>CreateTrafficPolicyInstance</code> or an <code>UpdateTrafficPolicyInstance</code> request, there&#39;s a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the <code>State</code> response element.</p> </note> <note> <p>In the Route 53 console, traffic policy instances are known as policy records.</p> </note></p>
12634    #[allow(unused_variables, warnings)]
12635    async fn get_traffic_policy_instance(
12636        &self,
12637        input: GetTrafficPolicyInstanceRequest,
12638    ) -> Result<GetTrafficPolicyInstanceResponse, RusotoError<GetTrafficPolicyInstanceError>> {
12639        let request_uri = format!("/2013-04-01/trafficpolicyinstance/{id}", id = input.id)
12640            .replace("/hostedzone/hostedzone/", "/hostedzone/")
12641            .replace("/hostedzone//hostedzone/", "/hostedzone/")
12642            .replace("/change/change/", "/change/");
12643
12644        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12645
12646        let mut response = self
12647            .sign_and_dispatch(request, GetTrafficPolicyInstanceError::from_response)
12648            .await?;
12649
12650        let mut response = response;
12651        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12652            GetTrafficPolicyInstanceResponseDeserializer::deserialize(actual_tag_name, stack)
12653        })
12654        .await?;
12655        let mut result = result;
12656        // parse non-payload
12657        Ok(result)
12658    }
12659
12660    /// <p>Gets the number of traffic policy instances that are associated with the current AWS account.</p>
12661    #[allow(unused_variables, warnings)]
12662    async fn get_traffic_policy_instance_count(
12663        &self,
12664        input: GetTrafficPolicyInstanceCountRequest,
12665    ) -> Result<
12666        GetTrafficPolicyInstanceCountResponse,
12667        RusotoError<GetTrafficPolicyInstanceCountError>,
12668    > {
12669        let request_uri = "/2013-04-01/trafficpolicyinstancecount";
12670
12671        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12672
12673        let mut response = self
12674            .sign_and_dispatch(request, GetTrafficPolicyInstanceCountError::from_response)
12675            .await?;
12676
12677        let mut response = response;
12678        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12679            GetTrafficPolicyInstanceCountResponseDeserializer::deserialize(actual_tag_name, stack)
12680        })
12681        .await?;
12682        let mut result = result;
12683        // parse non-payload
12684        Ok(result)
12685    }
12686
12687    /// <p>Retrieves a list of supported geographic locations.</p> <p>Countries are listed first, and continents are listed last. If Amazon Route 53 supports subdivisions for a country (for example, states or provinces), the subdivisions for that country are listed in alphabetical order immediately after the corresponding country.</p> <p>For a list of supported geolocation codes, see the <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_GeoLocation.html">GeoLocation</a> data type.</p>
12688    #[allow(unused_variables, warnings)]
12689    async fn list_geo_locations(
12690        &self,
12691        input: ListGeoLocationsRequest,
12692    ) -> Result<ListGeoLocationsResponse, RusotoError<ListGeoLocationsError>> {
12693        let request_uri = "/2013-04-01/geolocations";
12694
12695        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12696
12697        let mut params = Params::new();
12698        if let Some(ref x) = input.max_items {
12699            params.put("maxitems", x);
12700        }
12701        if let Some(ref x) = input.start_continent_code {
12702            params.put("startcontinentcode", x);
12703        }
12704        if let Some(ref x) = input.start_country_code {
12705            params.put("startcountrycode", x);
12706        }
12707        if let Some(ref x) = input.start_subdivision_code {
12708            params.put("startsubdivisioncode", x);
12709        }
12710        request.set_params(params);
12711
12712        let mut response = self
12713            .sign_and_dispatch(request, ListGeoLocationsError::from_response)
12714            .await?;
12715
12716        let mut response = response;
12717        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12718            ListGeoLocationsResponseDeserializer::deserialize(actual_tag_name, stack)
12719        })
12720        .await?;
12721        let mut result = result;
12722        // parse non-payload
12723        Ok(result)
12724    }
12725
12726    /// <p>Retrieve a list of the health checks that are associated with the current AWS account. </p>
12727    #[allow(unused_variables, warnings)]
12728    async fn list_health_checks(
12729        &self,
12730        input: ListHealthChecksRequest,
12731    ) -> Result<ListHealthChecksResponse, RusotoError<ListHealthChecksError>> {
12732        let request_uri = "/2013-04-01/healthcheck";
12733
12734        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12735
12736        let mut params = Params::new();
12737        if let Some(ref x) = input.marker {
12738            params.put("marker", x);
12739        }
12740        if let Some(ref x) = input.max_items {
12741            params.put("maxitems", x);
12742        }
12743        request.set_params(params);
12744
12745        let mut response = self
12746            .sign_and_dispatch(request, ListHealthChecksError::from_response)
12747            .await?;
12748
12749        let mut response = response;
12750        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12751            ListHealthChecksResponseDeserializer::deserialize(actual_tag_name, stack)
12752        })
12753        .await?;
12754        let mut result = result;
12755        // parse non-payload
12756        Ok(result)
12757    }
12758
12759    /// <p>Retrieves a list of the public and private hosted zones that are associated with the current AWS account. The response includes a <code>HostedZones</code> child element for each hosted zone.</p> <p>Amazon Route 53 returns a maximum of 100 items in each response. If you have a lot of hosted zones, you can use the <code>maxitems</code> parameter to list them in groups of up to 100.</p>
12760    #[allow(unused_variables, warnings)]
12761    async fn list_hosted_zones(
12762        &self,
12763        input: ListHostedZonesRequest,
12764    ) -> Result<ListHostedZonesResponse, RusotoError<ListHostedZonesError>> {
12765        let request_uri = "/2013-04-01/hostedzone";
12766
12767        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12768
12769        let mut params = Params::new();
12770        if let Some(ref x) = input.delegation_set_id {
12771            params.put("delegationsetid", x);
12772        }
12773        if let Some(ref x) = input.marker {
12774            params.put("marker", x);
12775        }
12776        if let Some(ref x) = input.max_items {
12777            params.put("maxitems", x);
12778        }
12779        request.set_params(params);
12780
12781        let mut response = self
12782            .sign_and_dispatch(request, ListHostedZonesError::from_response)
12783            .await?;
12784
12785        let mut response = response;
12786        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12787            ListHostedZonesResponseDeserializer::deserialize(actual_tag_name, stack)
12788        })
12789        .await?;
12790        let mut result = result;
12791        // parse non-payload
12792        Ok(result)
12793    }
12794
12795    /// <p><p>Retrieves a list of your hosted zones in lexicographic order. The response includes a <code>HostedZones</code> child element for each hosted zone created by the current AWS account. </p> <p> <code>ListHostedZonesByName</code> sorts hosted zones by name with the labels reversed. For example:</p> <p> <code>com.example.www.</code> </p> <p>Note the trailing dot, which can change the sort order in some circumstances.</p> <p>If the domain name includes escape characters or Punycode, <code>ListHostedZonesByName</code> alphabetizes the domain name using the escaped or Punycoded value, which is the format that Amazon Route 53 saves in its database. For example, to create a hosted zone for exämple.com, you specify ex\344mple.com for the domain name. <code>ListHostedZonesByName</code> alphabetizes it as:</p> <p> <code>com.ex\344mple.</code> </p> <p>The labels are reversed and alphabetized using the escaped value. For more information about valid domain name formats, including internationalized domain names, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html">DNS Domain Name Format</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>Route 53 returns up to 100 items in each response. If you have a lot of hosted zones, use the <code>MaxItems</code> parameter to list them in groups of up to 100. The response includes values that help navigate from one group of <code>MaxItems</code> hosted zones to the next:</p> <ul> <li> <p>The <code>DNSName</code> and <code>HostedZoneId</code> elements in the response contain the values, if any, specified for the <code>dnsname</code> and <code>hostedzoneid</code> parameters in the request that produced the current response.</p> </li> <li> <p>The <code>MaxItems</code> element in the response contains the value, if any, that you specified for the <code>maxitems</code> parameter in the request that produced the current response.</p> </li> <li> <p>If the value of <code>IsTruncated</code> in the response is true, there are more hosted zones associated with the current AWS account. </p> <p>If <code>IsTruncated</code> is false, this response includes the last hosted zone that is associated with the current account. The <code>NextDNSName</code> element and <code>NextHostedZoneId</code> elements are omitted from the response.</p> </li> <li> <p>The <code>NextDNSName</code> and <code>NextHostedZoneId</code> elements in the response contain the domain name and the hosted zone ID of the next hosted zone that is associated with the current AWS account. If you want to list more hosted zones, make another call to <code>ListHostedZonesByName</code>, and specify the value of <code>NextDNSName</code> and <code>NextHostedZoneId</code> in the <code>dnsname</code> and <code>hostedzoneid</code> parameters, respectively.</p> </li> </ul></p>
12796    #[allow(unused_variables, warnings)]
12797    async fn list_hosted_zones_by_name(
12798        &self,
12799        input: ListHostedZonesByNameRequest,
12800    ) -> Result<ListHostedZonesByNameResponse, RusotoError<ListHostedZonesByNameError>> {
12801        let request_uri = "/2013-04-01/hostedzonesbyname";
12802
12803        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12804
12805        let mut params = Params::new();
12806        if let Some(ref x) = input.dns_name {
12807            params.put("dnsname", x);
12808        }
12809        if let Some(ref x) = input.hosted_zone_id {
12810            params.put("hostedzoneid", x);
12811        }
12812        if let Some(ref x) = input.max_items {
12813            params.put("maxitems", x);
12814        }
12815        request.set_params(params);
12816
12817        let mut response = self
12818            .sign_and_dispatch(request, ListHostedZonesByNameError::from_response)
12819            .await?;
12820
12821        let mut response = response;
12822        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12823            ListHostedZonesByNameResponseDeserializer::deserialize(actual_tag_name, stack)
12824        })
12825        .await?;
12826        let mut result = result;
12827        // parse non-payload
12828        Ok(result)
12829    }
12830
12831    /// <p><p>Lists all the private hosted zones that a specified VPC is associated with, regardless of which AWS account or AWS service owns the hosted zones. The <code>HostedZoneOwner</code> structure in the response contains one of the following values:</p> <ul> <li> <p>An <code>OwningAccount</code> element, which contains the account number of either the current AWS account or another AWS account. Some services, such as AWS Cloud Map, create hosted zones using the current account. </p> </li> <li> <p>An <code>OwningService</code> element, which identifies the AWS service that created and owns the hosted zone. For example, if a hosted zone was created by Amazon Elastic File System (Amazon EFS), the value of <code>Owner</code> is <code>efs.amazonaws.com</code>. </p> </li> </ul></p>
12832    #[allow(unused_variables, warnings)]
12833    async fn list_hosted_zones_by_vpc(
12834        &self,
12835        input: ListHostedZonesByVPCRequest,
12836    ) -> Result<ListHostedZonesByVPCResponse, RusotoError<ListHostedZonesByVPCError>> {
12837        let request_uri = "/2013-04-01/hostedzonesbyvpc";
12838
12839        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12840
12841        let mut params = Params::new();
12842        if let Some(ref x) = input.max_items {
12843            params.put("maxitems", x);
12844        }
12845        if let Some(ref x) = input.next_token {
12846            params.put("nexttoken", x);
12847        }
12848        params.put("vpcid", &input.vpc_id);
12849        params.put("vpcregion", &input.vpc_region);
12850        request.set_params(params);
12851
12852        let mut response = self
12853            .sign_and_dispatch(request, ListHostedZonesByVPCError::from_response)
12854            .await?;
12855
12856        let mut response = response;
12857        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12858            ListHostedZonesByVPCResponseDeserializer::deserialize(actual_tag_name, stack)
12859        })
12860        .await?;
12861        let mut result = result;
12862        // parse non-payload
12863        Ok(result)
12864    }
12865
12866    /// <p>Lists the configurations for DNS query logging that are associated with the current AWS account or the configuration that is associated with a specified hosted zone.</p> <p>For more information about DNS query logs, see <a href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateQueryLoggingConfig.html">CreateQueryLoggingConfig</a>. Additional information, including the format of DNS query logs, appears in <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html">Logging DNS Queries</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
12867    #[allow(unused_variables, warnings)]
12868    async fn list_query_logging_configs(
12869        &self,
12870        input: ListQueryLoggingConfigsRequest,
12871    ) -> Result<ListQueryLoggingConfigsResponse, RusotoError<ListQueryLoggingConfigsError>> {
12872        let request_uri = "/2013-04-01/queryloggingconfig";
12873
12874        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12875
12876        let mut params = Params::new();
12877        if let Some(ref x) = input.hosted_zone_id {
12878            params.put("hostedzoneid", x);
12879        }
12880        if let Some(ref x) = input.max_results {
12881            params.put("maxresults", x);
12882        }
12883        if let Some(ref x) = input.next_token {
12884            params.put("nexttoken", x);
12885        }
12886        request.set_params(params);
12887
12888        let mut response = self
12889            .sign_and_dispatch(request, ListQueryLoggingConfigsError::from_response)
12890            .await?;
12891
12892        let mut response = response;
12893        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12894            ListQueryLoggingConfigsResponseDeserializer::deserialize(actual_tag_name, stack)
12895        })
12896        .await?;
12897        let mut result = result;
12898        // parse non-payload
12899        Ok(result)
12900    }
12901
12902    /// <p>Lists the resource record sets in a specified hosted zone.</p> <p> <code>ListResourceRecordSets</code> returns up to 100 resource record sets at a time in ASCII order, beginning at a position specified by the <code>name</code> and <code>type</code> elements.</p> <p> <b>Sort order</b> </p> <p> <code>ListResourceRecordSets</code> sorts results first by DNS name with the labels reversed, for example:</p> <p> <code>com.example.www.</code> </p> <p>Note the trailing dot, which can change the sort order when the record name contains characters that appear before <code>.</code> (decimal 46) in the ASCII table. These characters include the following: <code>! " # $ % &amp; ' ( ) * + , -</code> </p> <p>When multiple records have the same DNS name, <code>ListResourceRecordSets</code> sorts results by the record type.</p> <p> <b>Specifying where to start listing records</b> </p> <p>You can use the name and type elements to specify the resource record set that the list begins with:</p> <dl> <dt>If you do not specify Name or Type</dt> <dd> <p>The results begin with the first resource record set that the hosted zone contains.</p> </dd> <dt>If you specify Name but not Type</dt> <dd> <p>The results begin with the first resource record set in the list whose name is greater than or equal to <code>Name</code>.</p> </dd> <dt>If you specify Type but not Name</dt> <dd> <p>Amazon Route 53 returns the <code>InvalidInput</code> error.</p> </dd> <dt>If you specify both Name and Type</dt> <dd> <p>The results begin with the first resource record set in the list whose name is greater than or equal to <code>Name</code>, and whose type is greater than or equal to <code>Type</code>.</p> </dd> </dl> <p> <b>Resource record sets that are PENDING</b> </p> <p>This action returns the most current version of the records. This includes records that are <code>PENDING</code>, and that are not yet available on all Route 53 DNS servers.</p> <p> <b>Changing resource record sets</b> </p> <p>To ensure that you get an accurate listing of the resource record sets for a hosted zone at a point in time, do not submit a <code>ChangeResourceRecordSets</code> request while you're paging through the results of a <code>ListResourceRecordSets</code> request. If you do, some pages may display results without the latest changes while other pages display results with the latest changes.</p> <p> <b>Displaying the next page of results</b> </p> <p>If a <code>ListResourceRecordSets</code> command returns more than one page of results, the value of <code>IsTruncated</code> is <code>true</code>. To display the next page of results, get the values of <code>NextRecordName</code>, <code>NextRecordType</code>, and <code>NextRecordIdentifier</code> (if any) from the response. Then submit another <code>ListResourceRecordSets</code> request, and specify those values for <code>StartRecordName</code>, <code>StartRecordType</code>, and <code>StartRecordIdentifier</code>.</p>
12903    #[allow(unused_variables, warnings)]
12904    async fn list_resource_record_sets(
12905        &self,
12906        input: ListResourceRecordSetsRequest,
12907    ) -> Result<ListResourceRecordSetsResponse, RusotoError<ListResourceRecordSetsError>> {
12908        let request_uri = format!(
12909            "/2013-04-01/hostedzone/{id}/rrset",
12910            id = input.hosted_zone_id
12911        )
12912        .replace("/hostedzone/hostedzone/", "/hostedzone/")
12913        .replace("/hostedzone//hostedzone/", "/hostedzone/")
12914        .replace("/change/change/", "/change/");
12915
12916        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12917
12918        let mut params = Params::new();
12919        if let Some(ref x) = input.max_items {
12920            params.put("maxitems", x);
12921        }
12922        if let Some(ref x) = input.start_record_identifier {
12923            params.put("identifier", x);
12924        }
12925        if let Some(ref x) = input.start_record_name {
12926            params.put("name", x);
12927        }
12928        if let Some(ref x) = input.start_record_type {
12929            params.put("type", x);
12930        }
12931        request.set_params(params);
12932
12933        let mut response = self
12934            .sign_and_dispatch(request, ListResourceRecordSetsError::from_response)
12935            .await?;
12936
12937        let mut response = response;
12938        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12939            ListResourceRecordSetsResponseDeserializer::deserialize(actual_tag_name, stack)
12940        })
12941        .await?;
12942        let mut result = result;
12943        // parse non-payload
12944        Ok(result)
12945    }
12946
12947    /// <p>Retrieves a list of the reusable delegation sets that are associated with the current AWS account.</p>
12948    #[allow(unused_variables, warnings)]
12949    async fn list_reusable_delegation_sets(
12950        &self,
12951        input: ListReusableDelegationSetsRequest,
12952    ) -> Result<ListReusableDelegationSetsResponse, RusotoError<ListReusableDelegationSetsError>>
12953    {
12954        let request_uri = "/2013-04-01/delegationset";
12955
12956        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12957
12958        let mut params = Params::new();
12959        if let Some(ref x) = input.marker {
12960            params.put("marker", x);
12961        }
12962        if let Some(ref x) = input.max_items {
12963            params.put("maxitems", x);
12964        }
12965        request.set_params(params);
12966
12967        let mut response = self
12968            .sign_and_dispatch(request, ListReusableDelegationSetsError::from_response)
12969            .await?;
12970
12971        let mut response = response;
12972        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
12973            ListReusableDelegationSetsResponseDeserializer::deserialize(actual_tag_name, stack)
12974        })
12975        .await?;
12976        let mut result = result;
12977        // parse non-payload
12978        Ok(result)
12979    }
12980
12981    /// <p>Lists tags for one health check or hosted zone. </p> <p>For information about using tags for cost allocation, see <a href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using Cost Allocation Tags</a> in the <i>AWS Billing and Cost Management User Guide</i>.</p>
12982    #[allow(unused_variables, warnings)]
12983    async fn list_tags_for_resource(
12984        &self,
12985        input: ListTagsForResourceRequest,
12986    ) -> Result<ListTagsForResourceResponse, RusotoError<ListTagsForResourceError>> {
12987        let request_uri = format!(
12988            "/2013-04-01/tags/{resource_type}/{resource_id}",
12989            resource_id = input.resource_id,
12990            resource_type = input.resource_type
12991        )
12992        .replace("/hostedzone/hostedzone/", "/hostedzone/")
12993        .replace("/hostedzone//hostedzone/", "/hostedzone/")
12994        .replace("/change/change/", "/change/");
12995
12996        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
12997
12998        let mut response = self
12999            .sign_and_dispatch(request, ListTagsForResourceError::from_response)
13000            .await?;
13001
13002        let mut response = response;
13003        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13004            ListTagsForResourceResponseDeserializer::deserialize(actual_tag_name, stack)
13005        })
13006        .await?;
13007        let mut result = result;
13008        // parse non-payload
13009        Ok(result)
13010    }
13011
13012    /// <p>Lists tags for up to 10 health checks or hosted zones.</p> <p>For information about using tags for cost allocation, see <a href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using Cost Allocation Tags</a> in the <i>AWS Billing and Cost Management User Guide</i>.</p>
13013    #[allow(unused_variables, warnings)]
13014    async fn list_tags_for_resources(
13015        &self,
13016        input: ListTagsForResourcesRequest,
13017    ) -> Result<ListTagsForResourcesResponse, RusotoError<ListTagsForResourcesError>> {
13018        let request_uri = format!(
13019            "/2013-04-01/tags/{resource_type}",
13020            resource_type = input.resource_type
13021        )
13022        .replace("/hostedzone/hostedzone/", "/hostedzone/")
13023        .replace("/hostedzone//hostedzone/", "/hostedzone/")
13024        .replace("/change/change/", "/change/");
13025
13026        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
13027
13028        let mut writer = EventWriter::new(Vec::new());
13029        ListTagsForResourcesRequestSerializer::serialize(
13030            &mut writer,
13031            "ListTagsForResourcesRequest",
13032            &input,
13033            "https://route53.amazonaws.com/doc/2013-04-01/",
13034        );
13035        request.set_payload(Some(writer.into_inner()));
13036
13037        let mut response = self
13038            .sign_and_dispatch(request, ListTagsForResourcesError::from_response)
13039            .await?;
13040
13041        let mut response = response;
13042        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13043            ListTagsForResourcesResponseDeserializer::deserialize(actual_tag_name, stack)
13044        })
13045        .await?;
13046        let mut result = result;
13047        // parse non-payload
13048        Ok(result)
13049    }
13050
13051    /// <p>Gets information about the latest version for every traffic policy that is associated with the current AWS account. Policies are listed in the order that they were created in. </p>
13052    #[allow(unused_variables, warnings)]
13053    async fn list_traffic_policies(
13054        &self,
13055        input: ListTrafficPoliciesRequest,
13056    ) -> Result<ListTrafficPoliciesResponse, RusotoError<ListTrafficPoliciesError>> {
13057        let request_uri = "/2013-04-01/trafficpolicies";
13058
13059        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
13060
13061        let mut params = Params::new();
13062        if let Some(ref x) = input.max_items {
13063            params.put("maxitems", x);
13064        }
13065        if let Some(ref x) = input.traffic_policy_id_marker {
13066            params.put("trafficpolicyid", x);
13067        }
13068        request.set_params(params);
13069
13070        let mut response = self
13071            .sign_and_dispatch(request, ListTrafficPoliciesError::from_response)
13072            .await?;
13073
13074        let mut response = response;
13075        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13076            ListTrafficPoliciesResponseDeserializer::deserialize(actual_tag_name, stack)
13077        })
13078        .await?;
13079        let mut result = result;
13080        // parse non-payload
13081        Ok(result)
13082    }
13083
13084    /// <p>Gets information about the traffic policy instances that you created by using the current AWS account.</p> <note> <p>After you submit an <code>UpdateTrafficPolicyInstance</code> request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the <code>State</code> response element.</p> </note> <p>Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the <code>MaxItems</code> parameter to list them in groups of up to 100.</p>
13085    #[allow(unused_variables, warnings)]
13086    async fn list_traffic_policy_instances(
13087        &self,
13088        input: ListTrafficPolicyInstancesRequest,
13089    ) -> Result<ListTrafficPolicyInstancesResponse, RusotoError<ListTrafficPolicyInstancesError>>
13090    {
13091        let request_uri = "/2013-04-01/trafficpolicyinstances";
13092
13093        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
13094
13095        let mut params = Params::new();
13096        if let Some(ref x) = input.hosted_zone_id_marker {
13097            params.put("hostedzoneid", x);
13098        }
13099        if let Some(ref x) = input.max_items {
13100            params.put("maxitems", x);
13101        }
13102        if let Some(ref x) = input.traffic_policy_instance_name_marker {
13103            params.put("trafficpolicyinstancename", x);
13104        }
13105        if let Some(ref x) = input.traffic_policy_instance_type_marker {
13106            params.put("trafficpolicyinstancetype", x);
13107        }
13108        request.set_params(params);
13109
13110        let mut response = self
13111            .sign_and_dispatch(request, ListTrafficPolicyInstancesError::from_response)
13112            .await?;
13113
13114        let mut response = response;
13115        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13116            ListTrafficPolicyInstancesResponseDeserializer::deserialize(actual_tag_name, stack)
13117        })
13118        .await?;
13119        let mut result = result;
13120        // parse non-payload
13121        Ok(result)
13122    }
13123
13124    /// <p>Gets information about the traffic policy instances that you created in a specified hosted zone.</p> <note> <p>After you submit a <code>CreateTrafficPolicyInstance</code> or an <code>UpdateTrafficPolicyInstance</code> request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the <code>State</code> response element.</p> </note> <p>Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the <code>MaxItems</code> parameter to list them in groups of up to 100.</p>
13125    #[allow(unused_variables, warnings)]
13126    async fn list_traffic_policy_instances_by_hosted_zone(
13127        &self,
13128        input: ListTrafficPolicyInstancesByHostedZoneRequest,
13129    ) -> Result<
13130        ListTrafficPolicyInstancesByHostedZoneResponse,
13131        RusotoError<ListTrafficPolicyInstancesByHostedZoneError>,
13132    > {
13133        let request_uri = "/2013-04-01/trafficpolicyinstances/hostedzone";
13134
13135        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
13136
13137        let mut params = Params::new();
13138        params.put("id", &input.hosted_zone_id);
13139        if let Some(ref x) = input.max_items {
13140            params.put("maxitems", x);
13141        }
13142        if let Some(ref x) = input.traffic_policy_instance_name_marker {
13143            params.put("trafficpolicyinstancename", x);
13144        }
13145        if let Some(ref x) = input.traffic_policy_instance_type_marker {
13146            params.put("trafficpolicyinstancetype", x);
13147        }
13148        request.set_params(params);
13149
13150        let mut response = self
13151            .sign_and_dispatch(
13152                request,
13153                ListTrafficPolicyInstancesByHostedZoneError::from_response,
13154            )
13155            .await?;
13156
13157        let mut response = response;
13158        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13159            ListTrafficPolicyInstancesByHostedZoneResponseDeserializer::deserialize(
13160                actual_tag_name,
13161                stack,
13162            )
13163        })
13164        .await?;
13165        let mut result = result;
13166        // parse non-payload
13167        Ok(result)
13168    }
13169
13170    /// <p>Gets information about the traffic policy instances that you created by using a specify traffic policy version.</p> <note> <p>After you submit a <code>CreateTrafficPolicyInstance</code> or an <code>UpdateTrafficPolicyInstance</code> request, there's a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the <code>State</code> response element.</p> </note> <p>Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the <code>MaxItems</code> parameter to list them in groups of up to 100.</p>
13171    #[allow(unused_variables, warnings)]
13172    async fn list_traffic_policy_instances_by_policy(
13173        &self,
13174        input: ListTrafficPolicyInstancesByPolicyRequest,
13175    ) -> Result<
13176        ListTrafficPolicyInstancesByPolicyResponse,
13177        RusotoError<ListTrafficPolicyInstancesByPolicyError>,
13178    > {
13179        let request_uri = "/2013-04-01/trafficpolicyinstances/trafficpolicy";
13180
13181        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
13182
13183        let mut params = Params::new();
13184        if let Some(ref x) = input.hosted_zone_id_marker {
13185            params.put("hostedzoneid", x);
13186        }
13187        if let Some(ref x) = input.max_items {
13188            params.put("maxitems", x);
13189        }
13190        params.put("id", &input.traffic_policy_id);
13191        if let Some(ref x) = input.traffic_policy_instance_name_marker {
13192            params.put("trafficpolicyinstancename", x);
13193        }
13194        if let Some(ref x) = input.traffic_policy_instance_type_marker {
13195            params.put("trafficpolicyinstancetype", x);
13196        }
13197        params.put("version", &input.traffic_policy_version);
13198        request.set_params(params);
13199
13200        let mut response = self
13201            .sign_and_dispatch(
13202                request,
13203                ListTrafficPolicyInstancesByPolicyError::from_response,
13204            )
13205            .await?;
13206
13207        let mut response = response;
13208        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13209            ListTrafficPolicyInstancesByPolicyResponseDeserializer::deserialize(
13210                actual_tag_name,
13211                stack,
13212            )
13213        })
13214        .await?;
13215        let mut result = result;
13216        // parse non-payload
13217        Ok(result)
13218    }
13219
13220    /// <p>Gets information about all of the versions for a specified traffic policy.</p> <p>Traffic policy versions are listed in numerical order by <code>VersionNumber</code>.</p>
13221    #[allow(unused_variables, warnings)]
13222    async fn list_traffic_policy_versions(
13223        &self,
13224        input: ListTrafficPolicyVersionsRequest,
13225    ) -> Result<ListTrafficPolicyVersionsResponse, RusotoError<ListTrafficPolicyVersionsError>>
13226    {
13227        let request_uri = format!("/2013-04-01/trafficpolicies/{id}/versions", id = input.id)
13228            .replace("/hostedzone/hostedzone/", "/hostedzone/")
13229            .replace("/hostedzone//hostedzone/", "/hostedzone/")
13230            .replace("/change/change/", "/change/");
13231
13232        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
13233
13234        let mut params = Params::new();
13235        if let Some(ref x) = input.max_items {
13236            params.put("maxitems", x);
13237        }
13238        if let Some(ref x) = input.traffic_policy_version_marker {
13239            params.put("trafficpolicyversion", x);
13240        }
13241        request.set_params(params);
13242
13243        let mut response = self
13244            .sign_and_dispatch(request, ListTrafficPolicyVersionsError::from_response)
13245            .await?;
13246
13247        let mut response = response;
13248        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13249            ListTrafficPolicyVersionsResponseDeserializer::deserialize(actual_tag_name, stack)
13250        })
13251        .await?;
13252        let mut result = result;
13253        // parse non-payload
13254        Ok(result)
13255    }
13256
13257    /// <p>Gets a list of the VPCs that were created by other accounts and that can be associated with a specified hosted zone because you've submitted one or more <code>CreateVPCAssociationAuthorization</code> requests. </p> <p>The response includes a <code>VPCs</code> element with a <code>VPC</code> child element for each VPC that can be associated with the hosted zone.</p>
13258    #[allow(unused_variables, warnings)]
13259    async fn list_vpc_association_authorizations(
13260        &self,
13261        input: ListVPCAssociationAuthorizationsRequest,
13262    ) -> Result<
13263        ListVPCAssociationAuthorizationsResponse,
13264        RusotoError<ListVPCAssociationAuthorizationsError>,
13265    > {
13266        let request_uri = format!(
13267            "/2013-04-01/hostedzone/{id}/authorizevpcassociation",
13268            id = input.hosted_zone_id
13269        )
13270        .replace("/hostedzone/hostedzone/", "/hostedzone/")
13271        .replace("/hostedzone//hostedzone/", "/hostedzone/")
13272        .replace("/change/change/", "/change/");
13273
13274        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
13275
13276        let mut params = Params::new();
13277        if let Some(ref x) = input.max_results {
13278            params.put("maxresults", x);
13279        }
13280        if let Some(ref x) = input.next_token {
13281            params.put("nexttoken", x);
13282        }
13283        request.set_params(params);
13284
13285        let mut response = self
13286            .sign_and_dispatch(
13287                request,
13288                ListVPCAssociationAuthorizationsError::from_response,
13289            )
13290            .await?;
13291
13292        let mut response = response;
13293        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13294            ListVPCAssociationAuthorizationsResponseDeserializer::deserialize(
13295                actual_tag_name,
13296                stack,
13297            )
13298        })
13299        .await?;
13300        let mut result = result;
13301        // parse non-payload
13302        Ok(result)
13303    }
13304
13305    /// <p>Gets the value that Amazon Route 53 returns in response to a DNS request for a specified record name and type. You can optionally specify the IP address of a DNS resolver, an EDNS0 client subnet IP address, and a subnet mask. </p>
13306    #[allow(unused_variables, warnings)]
13307    async fn test_dns_answer(
13308        &self,
13309        input: TestDNSAnswerRequest,
13310    ) -> Result<TestDNSAnswerResponse, RusotoError<TestDNSAnswerError>> {
13311        let request_uri = "/2013-04-01/testdnsanswer";
13312
13313        let mut request = SignedRequest::new("GET", "route53", &self.region, &request_uri);
13314
13315        let mut params = Params::new();
13316        if let Some(ref x) = input.edns0_client_subnet_ip {
13317            params.put("edns0clientsubnetip", x);
13318        }
13319        if let Some(ref x) = input.edns0_client_subnet_mask {
13320            params.put("edns0clientsubnetmask", x);
13321        }
13322        params.put("hostedzoneid", &input.hosted_zone_id);
13323        params.put("recordname", &input.record_name);
13324        params.put("recordtype", &input.record_type);
13325        if let Some(ref x) = input.resolver_ip {
13326            params.put("resolverip", x);
13327        }
13328        request.set_params(params);
13329
13330        let mut response = self
13331            .sign_and_dispatch(request, TestDNSAnswerError::from_response)
13332            .await?;
13333
13334        let mut response = response;
13335        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13336            TestDNSAnswerResponseDeserializer::deserialize(actual_tag_name, stack)
13337        })
13338        .await?;
13339        let mut result = result;
13340        // parse non-payload
13341        Ok(result)
13342    }
13343
13344    /// <p>Updates an existing health check. Note that some values can't be updated. </p> <p>For more information about updating health checks, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-creating-deleting.html">Creating, Updating, and Deleting Health Checks</a> in the <i>Amazon Route 53 Developer Guide</i>.</p>
13345    #[allow(unused_variables, warnings)]
13346    async fn update_health_check(
13347        &self,
13348        input: UpdateHealthCheckRequest,
13349    ) -> Result<UpdateHealthCheckResponse, RusotoError<UpdateHealthCheckError>> {
13350        let request_uri = format!(
13351            "/2013-04-01/healthcheck/{health_check_id}",
13352            health_check_id = input.health_check_id
13353        )
13354        .replace("/hostedzone/hostedzone/", "/hostedzone/")
13355        .replace("/hostedzone//hostedzone/", "/hostedzone/")
13356        .replace("/change/change/", "/change/");
13357
13358        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
13359
13360        let mut writer = EventWriter::new(Vec::new());
13361        UpdateHealthCheckRequestSerializer::serialize(
13362            &mut writer,
13363            "UpdateHealthCheckRequest",
13364            &input,
13365            "https://route53.amazonaws.com/doc/2013-04-01/",
13366        );
13367        request.set_payload(Some(writer.into_inner()));
13368
13369        let mut response = self
13370            .sign_and_dispatch(request, UpdateHealthCheckError::from_response)
13371            .await?;
13372
13373        let mut response = response;
13374        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13375            UpdateHealthCheckResponseDeserializer::deserialize(actual_tag_name, stack)
13376        })
13377        .await?;
13378        let mut result = result;
13379        // parse non-payload
13380        Ok(result)
13381    }
13382
13383    /// <p>Updates the comment for a specified hosted zone.</p>
13384    #[allow(unused_variables, warnings)]
13385    async fn update_hosted_zone_comment(
13386        &self,
13387        input: UpdateHostedZoneCommentRequest,
13388    ) -> Result<UpdateHostedZoneCommentResponse, RusotoError<UpdateHostedZoneCommentError>> {
13389        let request_uri = format!("/2013-04-01/hostedzone/{id}", id = input.id)
13390            .replace("/hostedzone/hostedzone/", "/hostedzone/")
13391            .replace("/hostedzone//hostedzone/", "/hostedzone/")
13392            .replace("/change/change/", "/change/");
13393
13394        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
13395
13396        let mut writer = EventWriter::new(Vec::new());
13397        UpdateHostedZoneCommentRequestSerializer::serialize(
13398            &mut writer,
13399            "UpdateHostedZoneCommentRequest",
13400            &input,
13401            "https://route53.amazonaws.com/doc/2013-04-01/",
13402        );
13403        request.set_payload(Some(writer.into_inner()));
13404
13405        let mut response = self
13406            .sign_and_dispatch(request, UpdateHostedZoneCommentError::from_response)
13407            .await?;
13408
13409        let mut response = response;
13410        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13411            UpdateHostedZoneCommentResponseDeserializer::deserialize(actual_tag_name, stack)
13412        })
13413        .await?;
13414        let mut result = result;
13415        // parse non-payload
13416        Ok(result)
13417    }
13418
13419    /// <p>Updates the comment for a specified traffic policy version.</p>
13420    #[allow(unused_variables, warnings)]
13421    async fn update_traffic_policy_comment(
13422        &self,
13423        input: UpdateTrafficPolicyCommentRequest,
13424    ) -> Result<UpdateTrafficPolicyCommentResponse, RusotoError<UpdateTrafficPolicyCommentError>>
13425    {
13426        let request_uri = format!(
13427            "/2013-04-01/trafficpolicy/{id}/{version}",
13428            id = input.id,
13429            version = input.version
13430        )
13431        .replace("/hostedzone/hostedzone/", "/hostedzone/")
13432        .replace("/hostedzone//hostedzone/", "/hostedzone/")
13433        .replace("/change/change/", "/change/");
13434
13435        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
13436
13437        let mut writer = EventWriter::new(Vec::new());
13438        UpdateTrafficPolicyCommentRequestSerializer::serialize(
13439            &mut writer,
13440            "UpdateTrafficPolicyCommentRequest",
13441            &input,
13442            "https://route53.amazonaws.com/doc/2013-04-01/",
13443        );
13444        request.set_payload(Some(writer.into_inner()));
13445
13446        let mut response = self
13447            .sign_and_dispatch(request, UpdateTrafficPolicyCommentError::from_response)
13448            .await?;
13449
13450        let mut response = response;
13451        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13452            UpdateTrafficPolicyCommentResponseDeserializer::deserialize(actual_tag_name, stack)
13453        })
13454        .await?;
13455        let mut result = result;
13456        // parse non-payload
13457        Ok(result)
13458    }
13459
13460    /// <p><p>Updates the resource record sets in a specified hosted zone that were created based on the settings in a specified traffic policy version.</p> <p>When you update a traffic policy instance, Amazon Route 53 continues to respond to DNS queries for the root resource record set name (such as example.com) while it replaces one group of resource record sets with another. Route 53 performs the following operations:</p> <ol> <li> <p>Route 53 creates a new group of resource record sets based on the specified traffic policy. This is true regardless of how significant the differences are between the existing resource record sets and the new resource record sets. </p> </li> <li> <p>When all of the new resource record sets have been created, Route 53 starts to respond to DNS queries for the root resource record set name (such as example.com) by using the new resource record sets.</p> </li> <li> <p>Route 53 deletes the old group of resource record sets that are associated with the root resource record set name.</p> </li> </ol></p>
13461    #[allow(unused_variables, warnings)]
13462    async fn update_traffic_policy_instance(
13463        &self,
13464        input: UpdateTrafficPolicyInstanceRequest,
13465    ) -> Result<UpdateTrafficPolicyInstanceResponse, RusotoError<UpdateTrafficPolicyInstanceError>>
13466    {
13467        let request_uri = format!("/2013-04-01/trafficpolicyinstance/{id}", id = input.id)
13468            .replace("/hostedzone/hostedzone/", "/hostedzone/")
13469            .replace("/hostedzone//hostedzone/", "/hostedzone/")
13470            .replace("/change/change/", "/change/");
13471
13472        let mut request = SignedRequest::new("POST", "route53", &self.region, &request_uri);
13473
13474        let mut writer = EventWriter::new(Vec::new());
13475        UpdateTrafficPolicyInstanceRequestSerializer::serialize(
13476            &mut writer,
13477            "UpdateTrafficPolicyInstanceRequest",
13478            &input,
13479            "https://route53.amazonaws.com/doc/2013-04-01/",
13480        );
13481        request.set_payload(Some(writer.into_inner()));
13482
13483        let mut response = self
13484            .sign_and_dispatch(request, UpdateTrafficPolicyInstanceError::from_response)
13485            .await?;
13486
13487        let mut response = response;
13488        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
13489            UpdateTrafficPolicyInstanceResponseDeserializer::deserialize(actual_tag_name, stack)
13490        })
13491        .await?;
13492        let mut result = result;
13493        // parse non-payload
13494        Ok(result)
13495    }
13496}
13497
13498#[cfg(test)]
13499mod protocol_tests {
13500
13501    extern crate rusoto_mock;
13502
13503    use self::rusoto_mock::*;
13504    use super::*;
13505    use rusoto_core::Region as rusoto_region;
13506
13507    #[tokio::test]
13508    async fn test_parse_error_route_53_get_hosted_zone() {
13509        let mock_response = MockResponseReader::read_response(
13510            "test_resources/generated/error",
13511            "route53-get-hosted-zone.xml",
13512        );
13513        let mock = MockRequestDispatcher::with_status(400).with_body(&mock_response);
13514        let client = Route53Client::new_with(mock, MockCredentialsProvider, rusoto_region::UsEast1);
13515        let request = GetHostedZoneRequest::default();
13516        let result = client.get_hosted_zone(request).await;
13517        assert!(!result.is_ok(), "parse error: {:?}", result);
13518    }
13519}