1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/route53resolver/Route53Resolver_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/core/utils/memory/stl/AWSVector.h>
10 #include <aws/route53resolver/model/ResolverEndpointDirection.h>
11 #include <aws/route53resolver/model/ResolverEndpointStatus.h>
12 #include <utility>
13 
14 namespace Aws
15 {
16 namespace Utils
17 {
18 namespace Json
19 {
20   class JsonValue;
21   class JsonView;
22 } // namespace Json
23 } // namespace Utils
24 namespace Route53Resolver
25 {
26 namespace Model
27 {
28 
29   /**
30    * <p>In the response to a <a
31    * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverEndpoint.html">CreateResolverEndpoint</a>,
32    * <a
33    * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DeleteResolverEndpoint.html">DeleteResolverEndpoint</a>,
34    * <a
35    * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_GetResolverEndpoint.html">GetResolverEndpoint</a>,
36    * <a
37    * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_ListResolverEndpoints.html">ListResolverEndpoints</a>,
38    * or <a
39    * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_UpdateResolverEndpoint.html">UpdateResolverEndpoint</a>
40    * request, a complex type that contains settings for an existing inbound or
41    * outbound Resolver endpoint.</p><p><h3>See Also:</h3>   <a
42    * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ResolverEndpoint">AWS
43    * API Reference</a></p>
44    */
45   class AWS_ROUTE53RESOLVER_API ResolverEndpoint
46   {
47   public:
48     ResolverEndpoint();
49     ResolverEndpoint(Aws::Utils::Json::JsonView jsonValue);
50     ResolverEndpoint& operator=(Aws::Utils::Json::JsonView jsonValue);
51     Aws::Utils::Json::JsonValue Jsonize() const;
52 
53 
54     /**
55      * <p>The ID of the Resolver endpoint.</p>
56      */
GetId()57     inline const Aws::String& GetId() const{ return m_id; }
58 
59     /**
60      * <p>The ID of the Resolver endpoint.</p>
61      */
IdHasBeenSet()62     inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
63 
64     /**
65      * <p>The ID of the Resolver endpoint.</p>
66      */
SetId(const Aws::String & value)67     inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
68 
69     /**
70      * <p>The ID of the Resolver endpoint.</p>
71      */
SetId(Aws::String && value)72     inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
73 
74     /**
75      * <p>The ID of the Resolver endpoint.</p>
76      */
SetId(const char * value)77     inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
78 
79     /**
80      * <p>The ID of the Resolver endpoint.</p>
81      */
WithId(const Aws::String & value)82     inline ResolverEndpoint& WithId(const Aws::String& value) { SetId(value); return *this;}
83 
84     /**
85      * <p>The ID of the Resolver endpoint.</p>
86      */
WithId(Aws::String && value)87     inline ResolverEndpoint& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
88 
89     /**
90      * <p>The ID of the Resolver endpoint.</p>
91      */
WithId(const char * value)92     inline ResolverEndpoint& WithId(const char* value) { SetId(value); return *this;}
93 
94 
95     /**
96      * <p>A unique string that identifies the request that created the Resolver
97      * endpoint. The <code>CreatorRequestId</code> allows failed requests to be retried
98      * without the risk of running the operation twice.</p>
99      */
GetCreatorRequestId()100     inline const Aws::String& GetCreatorRequestId() const{ return m_creatorRequestId; }
101 
102     /**
103      * <p>A unique string that identifies the request that created the Resolver
104      * endpoint. The <code>CreatorRequestId</code> allows failed requests to be retried
105      * without the risk of running the operation twice.</p>
106      */
CreatorRequestIdHasBeenSet()107     inline bool CreatorRequestIdHasBeenSet() const { return m_creatorRequestIdHasBeenSet; }
108 
109     /**
110      * <p>A unique string that identifies the request that created the Resolver
111      * endpoint. The <code>CreatorRequestId</code> allows failed requests to be retried
112      * without the risk of running the operation twice.</p>
113      */
SetCreatorRequestId(const Aws::String & value)114     inline void SetCreatorRequestId(const Aws::String& value) { m_creatorRequestIdHasBeenSet = true; m_creatorRequestId = value; }
115 
116     /**
117      * <p>A unique string that identifies the request that created the Resolver
118      * endpoint. The <code>CreatorRequestId</code> allows failed requests to be retried
119      * without the risk of running the operation twice.</p>
120      */
SetCreatorRequestId(Aws::String && value)121     inline void SetCreatorRequestId(Aws::String&& value) { m_creatorRequestIdHasBeenSet = true; m_creatorRequestId = std::move(value); }
122 
123     /**
124      * <p>A unique string that identifies the request that created the Resolver
125      * endpoint. The <code>CreatorRequestId</code> allows failed requests to be retried
126      * without the risk of running the operation twice.</p>
127      */
SetCreatorRequestId(const char * value)128     inline void SetCreatorRequestId(const char* value) { m_creatorRequestIdHasBeenSet = true; m_creatorRequestId.assign(value); }
129 
130     /**
131      * <p>A unique string that identifies the request that created the Resolver
132      * endpoint. The <code>CreatorRequestId</code> allows failed requests to be retried
133      * without the risk of running the operation twice.</p>
134      */
WithCreatorRequestId(const Aws::String & value)135     inline ResolverEndpoint& WithCreatorRequestId(const Aws::String& value) { SetCreatorRequestId(value); return *this;}
136 
137     /**
138      * <p>A unique string that identifies the request that created the Resolver
139      * endpoint. The <code>CreatorRequestId</code> allows failed requests to be retried
140      * without the risk of running the operation twice.</p>
141      */
WithCreatorRequestId(Aws::String && value)142     inline ResolverEndpoint& WithCreatorRequestId(Aws::String&& value) { SetCreatorRequestId(std::move(value)); return *this;}
143 
144     /**
145      * <p>A unique string that identifies the request that created the Resolver
146      * endpoint. The <code>CreatorRequestId</code> allows failed requests to be retried
147      * without the risk of running the operation twice.</p>
148      */
WithCreatorRequestId(const char * value)149     inline ResolverEndpoint& WithCreatorRequestId(const char* value) { SetCreatorRequestId(value); return *this;}
150 
151 
152     /**
153      * <p>The ARN (Amazon Resource Name) for the Resolver endpoint.</p>
154      */
GetArn()155     inline const Aws::String& GetArn() const{ return m_arn; }
156 
157     /**
158      * <p>The ARN (Amazon Resource Name) for the Resolver endpoint.</p>
159      */
ArnHasBeenSet()160     inline bool ArnHasBeenSet() const { return m_arnHasBeenSet; }
161 
162     /**
163      * <p>The ARN (Amazon Resource Name) for the Resolver endpoint.</p>
164      */
SetArn(const Aws::String & value)165     inline void SetArn(const Aws::String& value) { m_arnHasBeenSet = true; m_arn = value; }
166 
167     /**
168      * <p>The ARN (Amazon Resource Name) for the Resolver endpoint.</p>
169      */
SetArn(Aws::String && value)170     inline void SetArn(Aws::String&& value) { m_arnHasBeenSet = true; m_arn = std::move(value); }
171 
172     /**
173      * <p>The ARN (Amazon Resource Name) for the Resolver endpoint.</p>
174      */
SetArn(const char * value)175     inline void SetArn(const char* value) { m_arnHasBeenSet = true; m_arn.assign(value); }
176 
177     /**
178      * <p>The ARN (Amazon Resource Name) for the Resolver endpoint.</p>
179      */
WithArn(const Aws::String & value)180     inline ResolverEndpoint& WithArn(const Aws::String& value) { SetArn(value); return *this;}
181 
182     /**
183      * <p>The ARN (Amazon Resource Name) for the Resolver endpoint.</p>
184      */
WithArn(Aws::String && value)185     inline ResolverEndpoint& WithArn(Aws::String&& value) { SetArn(std::move(value)); return *this;}
186 
187     /**
188      * <p>The ARN (Amazon Resource Name) for the Resolver endpoint.</p>
189      */
WithArn(const char * value)190     inline ResolverEndpoint& WithArn(const char* value) { SetArn(value); return *this;}
191 
192 
193     /**
194      * <p>The name that you assigned to the Resolver endpoint when you submitted a <a
195      * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverEndpoint.html">CreateResolverEndpoint</a>
196      * request.</p>
197      */
GetName()198     inline const Aws::String& GetName() const{ return m_name; }
199 
200     /**
201      * <p>The name that you assigned to the Resolver endpoint when you submitted a <a
202      * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverEndpoint.html">CreateResolverEndpoint</a>
203      * request.</p>
204      */
NameHasBeenSet()205     inline bool NameHasBeenSet() const { return m_nameHasBeenSet; }
206 
207     /**
208      * <p>The name that you assigned to the Resolver endpoint when you submitted a <a
209      * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverEndpoint.html">CreateResolverEndpoint</a>
210      * request.</p>
211      */
SetName(const Aws::String & value)212     inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; }
213 
214     /**
215      * <p>The name that you assigned to the Resolver endpoint when you submitted a <a
216      * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverEndpoint.html">CreateResolverEndpoint</a>
217      * request.</p>
218      */
SetName(Aws::String && value)219     inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); }
220 
221     /**
222      * <p>The name that you assigned to the Resolver endpoint when you submitted a <a
223      * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverEndpoint.html">CreateResolverEndpoint</a>
224      * request.</p>
225      */
SetName(const char * value)226     inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); }
227 
228     /**
229      * <p>The name that you assigned to the Resolver endpoint when you submitted a <a
230      * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverEndpoint.html">CreateResolverEndpoint</a>
231      * request.</p>
232      */
WithName(const Aws::String & value)233     inline ResolverEndpoint& WithName(const Aws::String& value) { SetName(value); return *this;}
234 
235     /**
236      * <p>The name that you assigned to the Resolver endpoint when you submitted a <a
237      * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverEndpoint.html">CreateResolverEndpoint</a>
238      * request.</p>
239      */
WithName(Aws::String && value)240     inline ResolverEndpoint& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;}
241 
242     /**
243      * <p>The name that you assigned to the Resolver endpoint when you submitted a <a
244      * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverEndpoint.html">CreateResolverEndpoint</a>
245      * request.</p>
246      */
WithName(const char * value)247     inline ResolverEndpoint& WithName(const char* value) { SetName(value); return *this;}
248 
249 
250     /**
251      * <p>The ID of one or more security groups that control access to this VPC. The
252      * security group must include one or more inbound rules (for inbound endpoints) or
253      * outbound rules (for outbound endpoints). Inbound and outbound rules must allow
254      * TCP and UDP access. For inbound access, open port 53. For outbound access, open
255      * the port that you're using for DNS queries on your network.</p>
256      */
GetSecurityGroupIds()257     inline const Aws::Vector<Aws::String>& GetSecurityGroupIds() const{ return m_securityGroupIds; }
258 
259     /**
260      * <p>The ID of one or more security groups that control access to this VPC. The
261      * security group must include one or more inbound rules (for inbound endpoints) or
262      * outbound rules (for outbound endpoints). Inbound and outbound rules must allow
263      * TCP and UDP access. For inbound access, open port 53. For outbound access, open
264      * the port that you're using for DNS queries on your network.</p>
265      */
SecurityGroupIdsHasBeenSet()266     inline bool SecurityGroupIdsHasBeenSet() const { return m_securityGroupIdsHasBeenSet; }
267 
268     /**
269      * <p>The ID of one or more security groups that control access to this VPC. The
270      * security group must include one or more inbound rules (for inbound endpoints) or
271      * outbound rules (for outbound endpoints). Inbound and outbound rules must allow
272      * TCP and UDP access. For inbound access, open port 53. For outbound access, open
273      * the port that you're using for DNS queries on your network.</p>
274      */
SetSecurityGroupIds(const Aws::Vector<Aws::String> & value)275     inline void SetSecurityGroupIds(const Aws::Vector<Aws::String>& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds = value; }
276 
277     /**
278      * <p>The ID of one or more security groups that control access to this VPC. The
279      * security group must include one or more inbound rules (for inbound endpoints) or
280      * outbound rules (for outbound endpoints). Inbound and outbound rules must allow
281      * TCP and UDP access. For inbound access, open port 53. For outbound access, open
282      * the port that you're using for DNS queries on your network.</p>
283      */
SetSecurityGroupIds(Aws::Vector<Aws::String> && value)284     inline void SetSecurityGroupIds(Aws::Vector<Aws::String>&& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds = std::move(value); }
285 
286     /**
287      * <p>The ID of one or more security groups that control access to this VPC. The
288      * security group must include one or more inbound rules (for inbound endpoints) or
289      * outbound rules (for outbound endpoints). Inbound and outbound rules must allow
290      * TCP and UDP access. For inbound access, open port 53. For outbound access, open
291      * the port that you're using for DNS queries on your network.</p>
292      */
WithSecurityGroupIds(const Aws::Vector<Aws::String> & value)293     inline ResolverEndpoint& WithSecurityGroupIds(const Aws::Vector<Aws::String>& value) { SetSecurityGroupIds(value); return *this;}
294 
295     /**
296      * <p>The ID of one or more security groups that control access to this VPC. The
297      * security group must include one or more inbound rules (for inbound endpoints) or
298      * outbound rules (for outbound endpoints). Inbound and outbound rules must allow
299      * TCP and UDP access. For inbound access, open port 53. For outbound access, open
300      * the port that you're using for DNS queries on your network.</p>
301      */
WithSecurityGroupIds(Aws::Vector<Aws::String> && value)302     inline ResolverEndpoint& WithSecurityGroupIds(Aws::Vector<Aws::String>&& value) { SetSecurityGroupIds(std::move(value)); return *this;}
303 
304     /**
305      * <p>The ID of one or more security groups that control access to this VPC. The
306      * security group must include one or more inbound rules (for inbound endpoints) or
307      * outbound rules (for outbound endpoints). Inbound and outbound rules must allow
308      * TCP and UDP access. For inbound access, open port 53. For outbound access, open
309      * the port that you're using for DNS queries on your network.</p>
310      */
AddSecurityGroupIds(const Aws::String & value)311     inline ResolverEndpoint& AddSecurityGroupIds(const Aws::String& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(value); return *this; }
312 
313     /**
314      * <p>The ID of one or more security groups that control access to this VPC. The
315      * security group must include one or more inbound rules (for inbound endpoints) or
316      * outbound rules (for outbound endpoints). Inbound and outbound rules must allow
317      * TCP and UDP access. For inbound access, open port 53. For outbound access, open
318      * the port that you're using for DNS queries on your network.</p>
319      */
AddSecurityGroupIds(Aws::String && value)320     inline ResolverEndpoint& AddSecurityGroupIds(Aws::String&& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(std::move(value)); return *this; }
321 
322     /**
323      * <p>The ID of one or more security groups that control access to this VPC. The
324      * security group must include one or more inbound rules (for inbound endpoints) or
325      * outbound rules (for outbound endpoints). Inbound and outbound rules must allow
326      * TCP and UDP access. For inbound access, open port 53. For outbound access, open
327      * the port that you're using for DNS queries on your network.</p>
328      */
AddSecurityGroupIds(const char * value)329     inline ResolverEndpoint& AddSecurityGroupIds(const char* value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(value); return *this; }
330 
331 
332     /**
333      * <p>Indicates whether the Resolver endpoint allows inbound or outbound DNS
334      * queries:</p> <ul> <li> <p> <code>INBOUND</code>: allows DNS queries to your VPC
335      * from your network</p> </li> <li> <p> <code>OUTBOUND</code>: allows DNS queries
336      * from your VPC to your network</p> </li> </ul>
337      */
GetDirection()338     inline const ResolverEndpointDirection& GetDirection() const{ return m_direction; }
339 
340     /**
341      * <p>Indicates whether the Resolver endpoint allows inbound or outbound DNS
342      * queries:</p> <ul> <li> <p> <code>INBOUND</code>: allows DNS queries to your VPC
343      * from your network</p> </li> <li> <p> <code>OUTBOUND</code>: allows DNS queries
344      * from your VPC to your network</p> </li> </ul>
345      */
DirectionHasBeenSet()346     inline bool DirectionHasBeenSet() const { return m_directionHasBeenSet; }
347 
348     /**
349      * <p>Indicates whether the Resolver endpoint allows inbound or outbound DNS
350      * queries:</p> <ul> <li> <p> <code>INBOUND</code>: allows DNS queries to your VPC
351      * from your network</p> </li> <li> <p> <code>OUTBOUND</code>: allows DNS queries
352      * from your VPC to your network</p> </li> </ul>
353      */
SetDirection(const ResolverEndpointDirection & value)354     inline void SetDirection(const ResolverEndpointDirection& value) { m_directionHasBeenSet = true; m_direction = value; }
355 
356     /**
357      * <p>Indicates whether the Resolver endpoint allows inbound or outbound DNS
358      * queries:</p> <ul> <li> <p> <code>INBOUND</code>: allows DNS queries to your VPC
359      * from your network</p> </li> <li> <p> <code>OUTBOUND</code>: allows DNS queries
360      * from your VPC to your network</p> </li> </ul>
361      */
SetDirection(ResolverEndpointDirection && value)362     inline void SetDirection(ResolverEndpointDirection&& value) { m_directionHasBeenSet = true; m_direction = std::move(value); }
363 
364     /**
365      * <p>Indicates whether the Resolver endpoint allows inbound or outbound DNS
366      * queries:</p> <ul> <li> <p> <code>INBOUND</code>: allows DNS queries to your VPC
367      * from your network</p> </li> <li> <p> <code>OUTBOUND</code>: allows DNS queries
368      * from your VPC to your network</p> </li> </ul>
369      */
WithDirection(const ResolverEndpointDirection & value)370     inline ResolverEndpoint& WithDirection(const ResolverEndpointDirection& value) { SetDirection(value); return *this;}
371 
372     /**
373      * <p>Indicates whether the Resolver endpoint allows inbound or outbound DNS
374      * queries:</p> <ul> <li> <p> <code>INBOUND</code>: allows DNS queries to your VPC
375      * from your network</p> </li> <li> <p> <code>OUTBOUND</code>: allows DNS queries
376      * from your VPC to your network</p> </li> </ul>
377      */
WithDirection(ResolverEndpointDirection && value)378     inline ResolverEndpoint& WithDirection(ResolverEndpointDirection&& value) { SetDirection(std::move(value)); return *this;}
379 
380 
381     /**
382      * <p>The number of IP addresses that the Resolver endpoint can use for DNS
383      * queries.</p>
384      */
GetIpAddressCount()385     inline int GetIpAddressCount() const{ return m_ipAddressCount; }
386 
387     /**
388      * <p>The number of IP addresses that the Resolver endpoint can use for DNS
389      * queries.</p>
390      */
IpAddressCountHasBeenSet()391     inline bool IpAddressCountHasBeenSet() const { return m_ipAddressCountHasBeenSet; }
392 
393     /**
394      * <p>The number of IP addresses that the Resolver endpoint can use for DNS
395      * queries.</p>
396      */
SetIpAddressCount(int value)397     inline void SetIpAddressCount(int value) { m_ipAddressCountHasBeenSet = true; m_ipAddressCount = value; }
398 
399     /**
400      * <p>The number of IP addresses that the Resolver endpoint can use for DNS
401      * queries.</p>
402      */
WithIpAddressCount(int value)403     inline ResolverEndpoint& WithIpAddressCount(int value) { SetIpAddressCount(value); return *this;}
404 
405 
406     /**
407      * <p>The ID of the VPC that you want to create the Resolver endpoint in.</p>
408      */
GetHostVPCId()409     inline const Aws::String& GetHostVPCId() const{ return m_hostVPCId; }
410 
411     /**
412      * <p>The ID of the VPC that you want to create the Resolver endpoint in.</p>
413      */
HostVPCIdHasBeenSet()414     inline bool HostVPCIdHasBeenSet() const { return m_hostVPCIdHasBeenSet; }
415 
416     /**
417      * <p>The ID of the VPC that you want to create the Resolver endpoint in.</p>
418      */
SetHostVPCId(const Aws::String & value)419     inline void SetHostVPCId(const Aws::String& value) { m_hostVPCIdHasBeenSet = true; m_hostVPCId = value; }
420 
421     /**
422      * <p>The ID of the VPC that you want to create the Resolver endpoint in.</p>
423      */
SetHostVPCId(Aws::String && value)424     inline void SetHostVPCId(Aws::String&& value) { m_hostVPCIdHasBeenSet = true; m_hostVPCId = std::move(value); }
425 
426     /**
427      * <p>The ID of the VPC that you want to create the Resolver endpoint in.</p>
428      */
SetHostVPCId(const char * value)429     inline void SetHostVPCId(const char* value) { m_hostVPCIdHasBeenSet = true; m_hostVPCId.assign(value); }
430 
431     /**
432      * <p>The ID of the VPC that you want to create the Resolver endpoint in.</p>
433      */
WithHostVPCId(const Aws::String & value)434     inline ResolverEndpoint& WithHostVPCId(const Aws::String& value) { SetHostVPCId(value); return *this;}
435 
436     /**
437      * <p>The ID of the VPC that you want to create the Resolver endpoint in.</p>
438      */
WithHostVPCId(Aws::String && value)439     inline ResolverEndpoint& WithHostVPCId(Aws::String&& value) { SetHostVPCId(std::move(value)); return *this;}
440 
441     /**
442      * <p>The ID of the VPC that you want to create the Resolver endpoint in.</p>
443      */
WithHostVPCId(const char * value)444     inline ResolverEndpoint& WithHostVPCId(const char* value) { SetHostVPCId(value); return *this;}
445 
446 
447     /**
448      * <p>A code that specifies the current status of the Resolver endpoint. Valid
449      * values include the following:</p> <ul> <li> <p> <code>CREATING</code>: Resolver
450      * is creating and configuring one or more Amazon VPC network interfaces for this
451      * endpoint.</p> </li> <li> <p> <code>OPERATIONAL</code>: The Amazon VPC network
452      * interfaces for this endpoint are correctly configured and able to pass inbound
453      * or outbound DNS queries between your network and Resolver.</p> </li> <li> <p>
454      * <code>UPDATING</code>: Resolver is associating or disassociating one or more
455      * network interfaces with this endpoint.</p> </li> <li> <p>
456      * <code>AUTO_RECOVERING</code>: Resolver is trying to recover one or more of the
457      * network interfaces that are associated with this endpoint. During the recovery
458      * process, the endpoint functions with limited capacity because of the limit on
459      * the number of DNS queries per IP address (per network interface). For the
460      * current limit, see <a
461      * href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html#limits-api-entities-resolver">Limits
462      * on Route 53 Resolver</a>.</p> </li> <li> <p> <code>ACTION_NEEDED</code>: This
463      * endpoint is unhealthy, and Resolver can't automatically recover it. To resolve
464      * the problem, we recommend that you check each IP address that you associated
465      * with the endpoint. For each IP address that isn't available, add another IP
466      * address and then delete the IP address that isn't available. (An endpoint must
467      * always include at least two IP addresses.) A status of
468      * <code>ACTION_NEEDED</code> can have a variety of causes. Here are two common
469      * causes:</p> <ul> <li> <p>One or more of the network interfaces that are
470      * associated with the endpoint were deleted using Amazon VPC.</p> </li> <li>
471      * <p>The network interface couldn't be created for some reason that's outside the
472      * control of Resolver.</p> </li> </ul> </li> <li> <p> <code>DELETING</code>:
473      * Resolver is deleting this endpoint and the associated network interfaces.</p>
474      * </li> </ul>
475      */
GetStatus()476     inline const ResolverEndpointStatus& GetStatus() const{ return m_status; }
477 
478     /**
479      * <p>A code that specifies the current status of the Resolver endpoint. Valid
480      * values include the following:</p> <ul> <li> <p> <code>CREATING</code>: Resolver
481      * is creating and configuring one or more Amazon VPC network interfaces for this
482      * endpoint.</p> </li> <li> <p> <code>OPERATIONAL</code>: The Amazon VPC network
483      * interfaces for this endpoint are correctly configured and able to pass inbound
484      * or outbound DNS queries between your network and Resolver.</p> </li> <li> <p>
485      * <code>UPDATING</code>: Resolver is associating or disassociating one or more
486      * network interfaces with this endpoint.</p> </li> <li> <p>
487      * <code>AUTO_RECOVERING</code>: Resolver is trying to recover one or more of the
488      * network interfaces that are associated with this endpoint. During the recovery
489      * process, the endpoint functions with limited capacity because of the limit on
490      * the number of DNS queries per IP address (per network interface). For the
491      * current limit, see <a
492      * href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html#limits-api-entities-resolver">Limits
493      * on Route 53 Resolver</a>.</p> </li> <li> <p> <code>ACTION_NEEDED</code>: This
494      * endpoint is unhealthy, and Resolver can't automatically recover it. To resolve
495      * the problem, we recommend that you check each IP address that you associated
496      * with the endpoint. For each IP address that isn't available, add another IP
497      * address and then delete the IP address that isn't available. (An endpoint must
498      * always include at least two IP addresses.) A status of
499      * <code>ACTION_NEEDED</code> can have a variety of causes. Here are two common
500      * causes:</p> <ul> <li> <p>One or more of the network interfaces that are
501      * associated with the endpoint were deleted using Amazon VPC.</p> </li> <li>
502      * <p>The network interface couldn't be created for some reason that's outside the
503      * control of Resolver.</p> </li> </ul> </li> <li> <p> <code>DELETING</code>:
504      * Resolver is deleting this endpoint and the associated network interfaces.</p>
505      * </li> </ul>
506      */
StatusHasBeenSet()507     inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
508 
509     /**
510      * <p>A code that specifies the current status of the Resolver endpoint. Valid
511      * values include the following:</p> <ul> <li> <p> <code>CREATING</code>: Resolver
512      * is creating and configuring one or more Amazon VPC network interfaces for this
513      * endpoint.</p> </li> <li> <p> <code>OPERATIONAL</code>: The Amazon VPC network
514      * interfaces for this endpoint are correctly configured and able to pass inbound
515      * or outbound DNS queries between your network and Resolver.</p> </li> <li> <p>
516      * <code>UPDATING</code>: Resolver is associating or disassociating one or more
517      * network interfaces with this endpoint.</p> </li> <li> <p>
518      * <code>AUTO_RECOVERING</code>: Resolver is trying to recover one or more of the
519      * network interfaces that are associated with this endpoint. During the recovery
520      * process, the endpoint functions with limited capacity because of the limit on
521      * the number of DNS queries per IP address (per network interface). For the
522      * current limit, see <a
523      * href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html#limits-api-entities-resolver">Limits
524      * on Route 53 Resolver</a>.</p> </li> <li> <p> <code>ACTION_NEEDED</code>: This
525      * endpoint is unhealthy, and Resolver can't automatically recover it. To resolve
526      * the problem, we recommend that you check each IP address that you associated
527      * with the endpoint. For each IP address that isn't available, add another IP
528      * address and then delete the IP address that isn't available. (An endpoint must
529      * always include at least two IP addresses.) A status of
530      * <code>ACTION_NEEDED</code> can have a variety of causes. Here are two common
531      * causes:</p> <ul> <li> <p>One or more of the network interfaces that are
532      * associated with the endpoint were deleted using Amazon VPC.</p> </li> <li>
533      * <p>The network interface couldn't be created for some reason that's outside the
534      * control of Resolver.</p> </li> </ul> </li> <li> <p> <code>DELETING</code>:
535      * Resolver is deleting this endpoint and the associated network interfaces.</p>
536      * </li> </ul>
537      */
SetStatus(const ResolverEndpointStatus & value)538     inline void SetStatus(const ResolverEndpointStatus& value) { m_statusHasBeenSet = true; m_status = value; }
539 
540     /**
541      * <p>A code that specifies the current status of the Resolver endpoint. Valid
542      * values include the following:</p> <ul> <li> <p> <code>CREATING</code>: Resolver
543      * is creating and configuring one or more Amazon VPC network interfaces for this
544      * endpoint.</p> </li> <li> <p> <code>OPERATIONAL</code>: The Amazon VPC network
545      * interfaces for this endpoint are correctly configured and able to pass inbound
546      * or outbound DNS queries between your network and Resolver.</p> </li> <li> <p>
547      * <code>UPDATING</code>: Resolver is associating or disassociating one or more
548      * network interfaces with this endpoint.</p> </li> <li> <p>
549      * <code>AUTO_RECOVERING</code>: Resolver is trying to recover one or more of the
550      * network interfaces that are associated with this endpoint. During the recovery
551      * process, the endpoint functions with limited capacity because of the limit on
552      * the number of DNS queries per IP address (per network interface). For the
553      * current limit, see <a
554      * href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html#limits-api-entities-resolver">Limits
555      * on Route 53 Resolver</a>.</p> </li> <li> <p> <code>ACTION_NEEDED</code>: This
556      * endpoint is unhealthy, and Resolver can't automatically recover it. To resolve
557      * the problem, we recommend that you check each IP address that you associated
558      * with the endpoint. For each IP address that isn't available, add another IP
559      * address and then delete the IP address that isn't available. (An endpoint must
560      * always include at least two IP addresses.) A status of
561      * <code>ACTION_NEEDED</code> can have a variety of causes. Here are two common
562      * causes:</p> <ul> <li> <p>One or more of the network interfaces that are
563      * associated with the endpoint were deleted using Amazon VPC.</p> </li> <li>
564      * <p>The network interface couldn't be created for some reason that's outside the
565      * control of Resolver.</p> </li> </ul> </li> <li> <p> <code>DELETING</code>:
566      * Resolver is deleting this endpoint and the associated network interfaces.</p>
567      * </li> </ul>
568      */
SetStatus(ResolverEndpointStatus && value)569     inline void SetStatus(ResolverEndpointStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
570 
571     /**
572      * <p>A code that specifies the current status of the Resolver endpoint. Valid
573      * values include the following:</p> <ul> <li> <p> <code>CREATING</code>: Resolver
574      * is creating and configuring one or more Amazon VPC network interfaces for this
575      * endpoint.</p> </li> <li> <p> <code>OPERATIONAL</code>: The Amazon VPC network
576      * interfaces for this endpoint are correctly configured and able to pass inbound
577      * or outbound DNS queries between your network and Resolver.</p> </li> <li> <p>
578      * <code>UPDATING</code>: Resolver is associating or disassociating one or more
579      * network interfaces with this endpoint.</p> </li> <li> <p>
580      * <code>AUTO_RECOVERING</code>: Resolver is trying to recover one or more of the
581      * network interfaces that are associated with this endpoint. During the recovery
582      * process, the endpoint functions with limited capacity because of the limit on
583      * the number of DNS queries per IP address (per network interface). For the
584      * current limit, see <a
585      * href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html#limits-api-entities-resolver">Limits
586      * on Route 53 Resolver</a>.</p> </li> <li> <p> <code>ACTION_NEEDED</code>: This
587      * endpoint is unhealthy, and Resolver can't automatically recover it. To resolve
588      * the problem, we recommend that you check each IP address that you associated
589      * with the endpoint. For each IP address that isn't available, add another IP
590      * address and then delete the IP address that isn't available. (An endpoint must
591      * always include at least two IP addresses.) A status of
592      * <code>ACTION_NEEDED</code> can have a variety of causes. Here are two common
593      * causes:</p> <ul> <li> <p>One or more of the network interfaces that are
594      * associated with the endpoint were deleted using Amazon VPC.</p> </li> <li>
595      * <p>The network interface couldn't be created for some reason that's outside the
596      * control of Resolver.</p> </li> </ul> </li> <li> <p> <code>DELETING</code>:
597      * Resolver is deleting this endpoint and the associated network interfaces.</p>
598      * </li> </ul>
599      */
WithStatus(const ResolverEndpointStatus & value)600     inline ResolverEndpoint& WithStatus(const ResolverEndpointStatus& value) { SetStatus(value); return *this;}
601 
602     /**
603      * <p>A code that specifies the current status of the Resolver endpoint. Valid
604      * values include the following:</p> <ul> <li> <p> <code>CREATING</code>: Resolver
605      * is creating and configuring one or more Amazon VPC network interfaces for this
606      * endpoint.</p> </li> <li> <p> <code>OPERATIONAL</code>: The Amazon VPC network
607      * interfaces for this endpoint are correctly configured and able to pass inbound
608      * or outbound DNS queries between your network and Resolver.</p> </li> <li> <p>
609      * <code>UPDATING</code>: Resolver is associating or disassociating one or more
610      * network interfaces with this endpoint.</p> </li> <li> <p>
611      * <code>AUTO_RECOVERING</code>: Resolver is trying to recover one or more of the
612      * network interfaces that are associated with this endpoint. During the recovery
613      * process, the endpoint functions with limited capacity because of the limit on
614      * the number of DNS queries per IP address (per network interface). For the
615      * current limit, see <a
616      * href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html#limits-api-entities-resolver">Limits
617      * on Route 53 Resolver</a>.</p> </li> <li> <p> <code>ACTION_NEEDED</code>: This
618      * endpoint is unhealthy, and Resolver can't automatically recover it. To resolve
619      * the problem, we recommend that you check each IP address that you associated
620      * with the endpoint. For each IP address that isn't available, add another IP
621      * address and then delete the IP address that isn't available. (An endpoint must
622      * always include at least two IP addresses.) A status of
623      * <code>ACTION_NEEDED</code> can have a variety of causes. Here are two common
624      * causes:</p> <ul> <li> <p>One or more of the network interfaces that are
625      * associated with the endpoint were deleted using Amazon VPC.</p> </li> <li>
626      * <p>The network interface couldn't be created for some reason that's outside the
627      * control of Resolver.</p> </li> </ul> </li> <li> <p> <code>DELETING</code>:
628      * Resolver is deleting this endpoint and the associated network interfaces.</p>
629      * </li> </ul>
630      */
WithStatus(ResolverEndpointStatus && value)631     inline ResolverEndpoint& WithStatus(ResolverEndpointStatus&& value) { SetStatus(std::move(value)); return *this;}
632 
633 
634     /**
635      * <p>A detailed description of the status of the Resolver endpoint.</p>
636      */
GetStatusMessage()637     inline const Aws::String& GetStatusMessage() const{ return m_statusMessage; }
638 
639     /**
640      * <p>A detailed description of the status of the Resolver endpoint.</p>
641      */
StatusMessageHasBeenSet()642     inline bool StatusMessageHasBeenSet() const { return m_statusMessageHasBeenSet; }
643 
644     /**
645      * <p>A detailed description of the status of the Resolver endpoint.</p>
646      */
SetStatusMessage(const Aws::String & value)647     inline void SetStatusMessage(const Aws::String& value) { m_statusMessageHasBeenSet = true; m_statusMessage = value; }
648 
649     /**
650      * <p>A detailed description of the status of the Resolver endpoint.</p>
651      */
SetStatusMessage(Aws::String && value)652     inline void SetStatusMessage(Aws::String&& value) { m_statusMessageHasBeenSet = true; m_statusMessage = std::move(value); }
653 
654     /**
655      * <p>A detailed description of the status of the Resolver endpoint.</p>
656      */
SetStatusMessage(const char * value)657     inline void SetStatusMessage(const char* value) { m_statusMessageHasBeenSet = true; m_statusMessage.assign(value); }
658 
659     /**
660      * <p>A detailed description of the status of the Resolver endpoint.</p>
661      */
WithStatusMessage(const Aws::String & value)662     inline ResolverEndpoint& WithStatusMessage(const Aws::String& value) { SetStatusMessage(value); return *this;}
663 
664     /**
665      * <p>A detailed description of the status of the Resolver endpoint.</p>
666      */
WithStatusMessage(Aws::String && value)667     inline ResolverEndpoint& WithStatusMessage(Aws::String&& value) { SetStatusMessage(std::move(value)); return *this;}
668 
669     /**
670      * <p>A detailed description of the status of the Resolver endpoint.</p>
671      */
WithStatusMessage(const char * value)672     inline ResolverEndpoint& WithStatusMessage(const char* value) { SetStatusMessage(value); return *this;}
673 
674 
675     /**
676      * <p>The date and time that the endpoint was created, in Unix time format and
677      * Coordinated Universal Time (UTC).</p>
678      */
GetCreationTime()679     inline const Aws::String& GetCreationTime() const{ return m_creationTime; }
680 
681     /**
682      * <p>The date and time that the endpoint was created, in Unix time format and
683      * Coordinated Universal Time (UTC).</p>
684      */
CreationTimeHasBeenSet()685     inline bool CreationTimeHasBeenSet() const { return m_creationTimeHasBeenSet; }
686 
687     /**
688      * <p>The date and time that the endpoint was created, in Unix time format and
689      * Coordinated Universal Time (UTC).</p>
690      */
SetCreationTime(const Aws::String & value)691     inline void SetCreationTime(const Aws::String& value) { m_creationTimeHasBeenSet = true; m_creationTime = value; }
692 
693     /**
694      * <p>The date and time that the endpoint was created, in Unix time format and
695      * Coordinated Universal Time (UTC).</p>
696      */
SetCreationTime(Aws::String && value)697     inline void SetCreationTime(Aws::String&& value) { m_creationTimeHasBeenSet = true; m_creationTime = std::move(value); }
698 
699     /**
700      * <p>The date and time that the endpoint was created, in Unix time format and
701      * Coordinated Universal Time (UTC).</p>
702      */
SetCreationTime(const char * value)703     inline void SetCreationTime(const char* value) { m_creationTimeHasBeenSet = true; m_creationTime.assign(value); }
704 
705     /**
706      * <p>The date and time that the endpoint was created, in Unix time format and
707      * Coordinated Universal Time (UTC).</p>
708      */
WithCreationTime(const Aws::String & value)709     inline ResolverEndpoint& WithCreationTime(const Aws::String& value) { SetCreationTime(value); return *this;}
710 
711     /**
712      * <p>The date and time that the endpoint was created, in Unix time format and
713      * Coordinated Universal Time (UTC).</p>
714      */
WithCreationTime(Aws::String && value)715     inline ResolverEndpoint& WithCreationTime(Aws::String&& value) { SetCreationTime(std::move(value)); return *this;}
716 
717     /**
718      * <p>The date and time that the endpoint was created, in Unix time format and
719      * Coordinated Universal Time (UTC).</p>
720      */
WithCreationTime(const char * value)721     inline ResolverEndpoint& WithCreationTime(const char* value) { SetCreationTime(value); return *this;}
722 
723 
724     /**
725      * <p>The date and time that the endpoint was last modified, in Unix time format
726      * and Coordinated Universal Time (UTC).</p>
727      */
GetModificationTime()728     inline const Aws::String& GetModificationTime() const{ return m_modificationTime; }
729 
730     /**
731      * <p>The date and time that the endpoint was last modified, in Unix time format
732      * and Coordinated Universal Time (UTC).</p>
733      */
ModificationTimeHasBeenSet()734     inline bool ModificationTimeHasBeenSet() const { return m_modificationTimeHasBeenSet; }
735 
736     /**
737      * <p>The date and time that the endpoint was last modified, in Unix time format
738      * and Coordinated Universal Time (UTC).</p>
739      */
SetModificationTime(const Aws::String & value)740     inline void SetModificationTime(const Aws::String& value) { m_modificationTimeHasBeenSet = true; m_modificationTime = value; }
741 
742     /**
743      * <p>The date and time that the endpoint was last modified, in Unix time format
744      * and Coordinated Universal Time (UTC).</p>
745      */
SetModificationTime(Aws::String && value)746     inline void SetModificationTime(Aws::String&& value) { m_modificationTimeHasBeenSet = true; m_modificationTime = std::move(value); }
747 
748     /**
749      * <p>The date and time that the endpoint was last modified, in Unix time format
750      * and Coordinated Universal Time (UTC).</p>
751      */
SetModificationTime(const char * value)752     inline void SetModificationTime(const char* value) { m_modificationTimeHasBeenSet = true; m_modificationTime.assign(value); }
753 
754     /**
755      * <p>The date and time that the endpoint was last modified, in Unix time format
756      * and Coordinated Universal Time (UTC).</p>
757      */
WithModificationTime(const Aws::String & value)758     inline ResolverEndpoint& WithModificationTime(const Aws::String& value) { SetModificationTime(value); return *this;}
759 
760     /**
761      * <p>The date and time that the endpoint was last modified, in Unix time format
762      * and Coordinated Universal Time (UTC).</p>
763      */
WithModificationTime(Aws::String && value)764     inline ResolverEndpoint& WithModificationTime(Aws::String&& value) { SetModificationTime(std::move(value)); return *this;}
765 
766     /**
767      * <p>The date and time that the endpoint was last modified, in Unix time format
768      * and Coordinated Universal Time (UTC).</p>
769      */
WithModificationTime(const char * value)770     inline ResolverEndpoint& WithModificationTime(const char* value) { SetModificationTime(value); return *this;}
771 
772   private:
773 
774     Aws::String m_id;
775     bool m_idHasBeenSet;
776 
777     Aws::String m_creatorRequestId;
778     bool m_creatorRequestIdHasBeenSet;
779 
780     Aws::String m_arn;
781     bool m_arnHasBeenSet;
782 
783     Aws::String m_name;
784     bool m_nameHasBeenSet;
785 
786     Aws::Vector<Aws::String> m_securityGroupIds;
787     bool m_securityGroupIdsHasBeenSet;
788 
789     ResolverEndpointDirection m_direction;
790     bool m_directionHasBeenSet;
791 
792     int m_ipAddressCount;
793     bool m_ipAddressCountHasBeenSet;
794 
795     Aws::String m_hostVPCId;
796     bool m_hostVPCIdHasBeenSet;
797 
798     ResolverEndpointStatus m_status;
799     bool m_statusHasBeenSet;
800 
801     Aws::String m_statusMessage;
802     bool m_statusMessageHasBeenSet;
803 
804     Aws::String m_creationTime;
805     bool m_creationTimeHasBeenSet;
806 
807     Aws::String m_modificationTime;
808     bool m_modificationTimeHasBeenSet;
809   };
810 
811 } // namespace Model
812 } // namespace Route53Resolver
813 } // namespace Aws
814