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/route53resolver/Route53ResolverErrors.h>
9 #include <aws/core/client/AWSError.h>
10 #include <aws/core/client/ClientConfiguration.h>
11 #include <aws/core/client/AWSClient.h>
12 #include <aws/core/utils/memory/stl/AWSString.h>
13 #include <aws/core/utils/json/JsonSerializer.h>
14 #include <aws/route53resolver/model/AssociateFirewallRuleGroupResult.h>
15 #include <aws/route53resolver/model/AssociateResolverEndpointIpAddressResult.h>
16 #include <aws/route53resolver/model/AssociateResolverQueryLogConfigResult.h>
17 #include <aws/route53resolver/model/AssociateResolverRuleResult.h>
18 #include <aws/route53resolver/model/CreateFirewallDomainListResult.h>
19 #include <aws/route53resolver/model/CreateFirewallRuleResult.h>
20 #include <aws/route53resolver/model/CreateFirewallRuleGroupResult.h>
21 #include <aws/route53resolver/model/CreateResolverEndpointResult.h>
22 #include <aws/route53resolver/model/CreateResolverQueryLogConfigResult.h>
23 #include <aws/route53resolver/model/CreateResolverRuleResult.h>
24 #include <aws/route53resolver/model/DeleteFirewallDomainListResult.h>
25 #include <aws/route53resolver/model/DeleteFirewallRuleResult.h>
26 #include <aws/route53resolver/model/DeleteFirewallRuleGroupResult.h>
27 #include <aws/route53resolver/model/DeleteResolverEndpointResult.h>
28 #include <aws/route53resolver/model/DeleteResolverQueryLogConfigResult.h>
29 #include <aws/route53resolver/model/DeleteResolverRuleResult.h>
30 #include <aws/route53resolver/model/DisassociateFirewallRuleGroupResult.h>
31 #include <aws/route53resolver/model/DisassociateResolverEndpointIpAddressResult.h>
32 #include <aws/route53resolver/model/DisassociateResolverQueryLogConfigResult.h>
33 #include <aws/route53resolver/model/DisassociateResolverRuleResult.h>
34 #include <aws/route53resolver/model/GetFirewallConfigResult.h>
35 #include <aws/route53resolver/model/GetFirewallDomainListResult.h>
36 #include <aws/route53resolver/model/GetFirewallRuleGroupResult.h>
37 #include <aws/route53resolver/model/GetFirewallRuleGroupAssociationResult.h>
38 #include <aws/route53resolver/model/GetFirewallRuleGroupPolicyResult.h>
39 #include <aws/route53resolver/model/GetResolverDnssecConfigResult.h>
40 #include <aws/route53resolver/model/GetResolverEndpointResult.h>
41 #include <aws/route53resolver/model/GetResolverQueryLogConfigResult.h>
42 #include <aws/route53resolver/model/GetResolverQueryLogConfigAssociationResult.h>
43 #include <aws/route53resolver/model/GetResolverQueryLogConfigPolicyResult.h>
44 #include <aws/route53resolver/model/GetResolverRuleResult.h>
45 #include <aws/route53resolver/model/GetResolverRuleAssociationResult.h>
46 #include <aws/route53resolver/model/GetResolverRulePolicyResult.h>
47 #include <aws/route53resolver/model/ImportFirewallDomainsResult.h>
48 #include <aws/route53resolver/model/ListFirewallConfigsResult.h>
49 #include <aws/route53resolver/model/ListFirewallDomainListsResult.h>
50 #include <aws/route53resolver/model/ListFirewallDomainsResult.h>
51 #include <aws/route53resolver/model/ListFirewallRuleGroupAssociationsResult.h>
52 #include <aws/route53resolver/model/ListFirewallRuleGroupsResult.h>
53 #include <aws/route53resolver/model/ListFirewallRulesResult.h>
54 #include <aws/route53resolver/model/ListResolverDnssecConfigsResult.h>
55 #include <aws/route53resolver/model/ListResolverEndpointIpAddressesResult.h>
56 #include <aws/route53resolver/model/ListResolverEndpointsResult.h>
57 #include <aws/route53resolver/model/ListResolverQueryLogConfigAssociationsResult.h>
58 #include <aws/route53resolver/model/ListResolverQueryLogConfigsResult.h>
59 #include <aws/route53resolver/model/ListResolverRuleAssociationsResult.h>
60 #include <aws/route53resolver/model/ListResolverRulesResult.h>
61 #include <aws/route53resolver/model/ListTagsForResourceResult.h>
62 #include <aws/route53resolver/model/PutFirewallRuleGroupPolicyResult.h>
63 #include <aws/route53resolver/model/PutResolverQueryLogConfigPolicyResult.h>
64 #include <aws/route53resolver/model/PutResolverRulePolicyResult.h>
65 #include <aws/route53resolver/model/TagResourceResult.h>
66 #include <aws/route53resolver/model/UntagResourceResult.h>
67 #include <aws/route53resolver/model/UpdateFirewallConfigResult.h>
68 #include <aws/route53resolver/model/UpdateFirewallDomainsResult.h>
69 #include <aws/route53resolver/model/UpdateFirewallRuleResult.h>
70 #include <aws/route53resolver/model/UpdateFirewallRuleGroupAssociationResult.h>
71 #include <aws/route53resolver/model/UpdateResolverDnssecConfigResult.h>
72 #include <aws/route53resolver/model/UpdateResolverEndpointResult.h>
73 #include <aws/route53resolver/model/UpdateResolverRuleResult.h>
74 #include <aws/core/client/AsyncCallerContext.h>
75 #include <aws/core/http/HttpTypes.h>
76 #include <future>
77 #include <functional>
78 
79 namespace Aws
80 {
81 
82 namespace Http
83 {
84   class HttpClient;
85   class HttpClientFactory;
86 } // namespace Http
87 
88 namespace Utils
89 {
90   template< typename R, typename E> class Outcome;
91 namespace Threading
92 {
93   class Executor;
94 } // namespace Threading
95 } // namespace Utils
96 
97 namespace Auth
98 {
99   class AWSCredentials;
100   class AWSCredentialsProvider;
101 } // namespace Auth
102 
103 namespace Client
104 {
105   class RetryStrategy;
106 } // namespace Client
107 
108 namespace Route53Resolver
109 {
110 
111 namespace Model
112 {
113         class AssociateFirewallRuleGroupRequest;
114         class AssociateResolverEndpointIpAddressRequest;
115         class AssociateResolverQueryLogConfigRequest;
116         class AssociateResolverRuleRequest;
117         class CreateFirewallDomainListRequest;
118         class CreateFirewallRuleRequest;
119         class CreateFirewallRuleGroupRequest;
120         class CreateResolverEndpointRequest;
121         class CreateResolverQueryLogConfigRequest;
122         class CreateResolverRuleRequest;
123         class DeleteFirewallDomainListRequest;
124         class DeleteFirewallRuleRequest;
125         class DeleteFirewallRuleGroupRequest;
126         class DeleteResolverEndpointRequest;
127         class DeleteResolverQueryLogConfigRequest;
128         class DeleteResolverRuleRequest;
129         class DisassociateFirewallRuleGroupRequest;
130         class DisassociateResolverEndpointIpAddressRequest;
131         class DisassociateResolverQueryLogConfigRequest;
132         class DisassociateResolverRuleRequest;
133         class GetFirewallConfigRequest;
134         class GetFirewallDomainListRequest;
135         class GetFirewallRuleGroupRequest;
136         class GetFirewallRuleGroupAssociationRequest;
137         class GetFirewallRuleGroupPolicyRequest;
138         class GetResolverDnssecConfigRequest;
139         class GetResolverEndpointRequest;
140         class GetResolverQueryLogConfigRequest;
141         class GetResolverQueryLogConfigAssociationRequest;
142         class GetResolverQueryLogConfigPolicyRequest;
143         class GetResolverRuleRequest;
144         class GetResolverRuleAssociationRequest;
145         class GetResolverRulePolicyRequest;
146         class ImportFirewallDomainsRequest;
147         class ListFirewallConfigsRequest;
148         class ListFirewallDomainListsRequest;
149         class ListFirewallDomainsRequest;
150         class ListFirewallRuleGroupAssociationsRequest;
151         class ListFirewallRuleGroupsRequest;
152         class ListFirewallRulesRequest;
153         class ListResolverDnssecConfigsRequest;
154         class ListResolverEndpointIpAddressesRequest;
155         class ListResolverEndpointsRequest;
156         class ListResolverQueryLogConfigAssociationsRequest;
157         class ListResolverQueryLogConfigsRequest;
158         class ListResolverRuleAssociationsRequest;
159         class ListResolverRulesRequest;
160         class ListTagsForResourceRequest;
161         class PutFirewallRuleGroupPolicyRequest;
162         class PutResolverQueryLogConfigPolicyRequest;
163         class PutResolverRulePolicyRequest;
164         class TagResourceRequest;
165         class UntagResourceRequest;
166         class UpdateFirewallConfigRequest;
167         class UpdateFirewallDomainsRequest;
168         class UpdateFirewallRuleRequest;
169         class UpdateFirewallRuleGroupAssociationRequest;
170         class UpdateResolverDnssecConfigRequest;
171         class UpdateResolverEndpointRequest;
172         class UpdateResolverRuleRequest;
173 
174         typedef Aws::Utils::Outcome<AssociateFirewallRuleGroupResult, Route53ResolverError> AssociateFirewallRuleGroupOutcome;
175         typedef Aws::Utils::Outcome<AssociateResolverEndpointIpAddressResult, Route53ResolverError> AssociateResolverEndpointIpAddressOutcome;
176         typedef Aws::Utils::Outcome<AssociateResolverQueryLogConfigResult, Route53ResolverError> AssociateResolverQueryLogConfigOutcome;
177         typedef Aws::Utils::Outcome<AssociateResolverRuleResult, Route53ResolverError> AssociateResolverRuleOutcome;
178         typedef Aws::Utils::Outcome<CreateFirewallDomainListResult, Route53ResolverError> CreateFirewallDomainListOutcome;
179         typedef Aws::Utils::Outcome<CreateFirewallRuleResult, Route53ResolverError> CreateFirewallRuleOutcome;
180         typedef Aws::Utils::Outcome<CreateFirewallRuleGroupResult, Route53ResolverError> CreateFirewallRuleGroupOutcome;
181         typedef Aws::Utils::Outcome<CreateResolverEndpointResult, Route53ResolverError> CreateResolverEndpointOutcome;
182         typedef Aws::Utils::Outcome<CreateResolverQueryLogConfigResult, Route53ResolverError> CreateResolverQueryLogConfigOutcome;
183         typedef Aws::Utils::Outcome<CreateResolverRuleResult, Route53ResolverError> CreateResolverRuleOutcome;
184         typedef Aws::Utils::Outcome<DeleteFirewallDomainListResult, Route53ResolverError> DeleteFirewallDomainListOutcome;
185         typedef Aws::Utils::Outcome<DeleteFirewallRuleResult, Route53ResolverError> DeleteFirewallRuleOutcome;
186         typedef Aws::Utils::Outcome<DeleteFirewallRuleGroupResult, Route53ResolverError> DeleteFirewallRuleGroupOutcome;
187         typedef Aws::Utils::Outcome<DeleteResolverEndpointResult, Route53ResolverError> DeleteResolverEndpointOutcome;
188         typedef Aws::Utils::Outcome<DeleteResolverQueryLogConfigResult, Route53ResolverError> DeleteResolverQueryLogConfigOutcome;
189         typedef Aws::Utils::Outcome<DeleteResolverRuleResult, Route53ResolverError> DeleteResolverRuleOutcome;
190         typedef Aws::Utils::Outcome<DisassociateFirewallRuleGroupResult, Route53ResolverError> DisassociateFirewallRuleGroupOutcome;
191         typedef Aws::Utils::Outcome<DisassociateResolverEndpointIpAddressResult, Route53ResolverError> DisassociateResolverEndpointIpAddressOutcome;
192         typedef Aws::Utils::Outcome<DisassociateResolverQueryLogConfigResult, Route53ResolverError> DisassociateResolverQueryLogConfigOutcome;
193         typedef Aws::Utils::Outcome<DisassociateResolverRuleResult, Route53ResolverError> DisassociateResolverRuleOutcome;
194         typedef Aws::Utils::Outcome<GetFirewallConfigResult, Route53ResolverError> GetFirewallConfigOutcome;
195         typedef Aws::Utils::Outcome<GetFirewallDomainListResult, Route53ResolverError> GetFirewallDomainListOutcome;
196         typedef Aws::Utils::Outcome<GetFirewallRuleGroupResult, Route53ResolverError> GetFirewallRuleGroupOutcome;
197         typedef Aws::Utils::Outcome<GetFirewallRuleGroupAssociationResult, Route53ResolverError> GetFirewallRuleGroupAssociationOutcome;
198         typedef Aws::Utils::Outcome<GetFirewallRuleGroupPolicyResult, Route53ResolverError> GetFirewallRuleGroupPolicyOutcome;
199         typedef Aws::Utils::Outcome<GetResolverDnssecConfigResult, Route53ResolverError> GetResolverDnssecConfigOutcome;
200         typedef Aws::Utils::Outcome<GetResolverEndpointResult, Route53ResolverError> GetResolverEndpointOutcome;
201         typedef Aws::Utils::Outcome<GetResolverQueryLogConfigResult, Route53ResolverError> GetResolverQueryLogConfigOutcome;
202         typedef Aws::Utils::Outcome<GetResolverQueryLogConfigAssociationResult, Route53ResolverError> GetResolverQueryLogConfigAssociationOutcome;
203         typedef Aws::Utils::Outcome<GetResolverQueryLogConfigPolicyResult, Route53ResolverError> GetResolverQueryLogConfigPolicyOutcome;
204         typedef Aws::Utils::Outcome<GetResolverRuleResult, Route53ResolverError> GetResolverRuleOutcome;
205         typedef Aws::Utils::Outcome<GetResolverRuleAssociationResult, Route53ResolverError> GetResolverRuleAssociationOutcome;
206         typedef Aws::Utils::Outcome<GetResolverRulePolicyResult, Route53ResolverError> GetResolverRulePolicyOutcome;
207         typedef Aws::Utils::Outcome<ImportFirewallDomainsResult, Route53ResolverError> ImportFirewallDomainsOutcome;
208         typedef Aws::Utils::Outcome<ListFirewallConfigsResult, Route53ResolverError> ListFirewallConfigsOutcome;
209         typedef Aws::Utils::Outcome<ListFirewallDomainListsResult, Route53ResolverError> ListFirewallDomainListsOutcome;
210         typedef Aws::Utils::Outcome<ListFirewallDomainsResult, Route53ResolverError> ListFirewallDomainsOutcome;
211         typedef Aws::Utils::Outcome<ListFirewallRuleGroupAssociationsResult, Route53ResolverError> ListFirewallRuleGroupAssociationsOutcome;
212         typedef Aws::Utils::Outcome<ListFirewallRuleGroupsResult, Route53ResolverError> ListFirewallRuleGroupsOutcome;
213         typedef Aws::Utils::Outcome<ListFirewallRulesResult, Route53ResolverError> ListFirewallRulesOutcome;
214         typedef Aws::Utils::Outcome<ListResolverDnssecConfigsResult, Route53ResolverError> ListResolverDnssecConfigsOutcome;
215         typedef Aws::Utils::Outcome<ListResolverEndpointIpAddressesResult, Route53ResolverError> ListResolverEndpointIpAddressesOutcome;
216         typedef Aws::Utils::Outcome<ListResolverEndpointsResult, Route53ResolverError> ListResolverEndpointsOutcome;
217         typedef Aws::Utils::Outcome<ListResolverQueryLogConfigAssociationsResult, Route53ResolverError> ListResolverQueryLogConfigAssociationsOutcome;
218         typedef Aws::Utils::Outcome<ListResolverQueryLogConfigsResult, Route53ResolverError> ListResolverQueryLogConfigsOutcome;
219         typedef Aws::Utils::Outcome<ListResolverRuleAssociationsResult, Route53ResolverError> ListResolverRuleAssociationsOutcome;
220         typedef Aws::Utils::Outcome<ListResolverRulesResult, Route53ResolverError> ListResolverRulesOutcome;
221         typedef Aws::Utils::Outcome<ListTagsForResourceResult, Route53ResolverError> ListTagsForResourceOutcome;
222         typedef Aws::Utils::Outcome<PutFirewallRuleGroupPolicyResult, Route53ResolverError> PutFirewallRuleGroupPolicyOutcome;
223         typedef Aws::Utils::Outcome<PutResolverQueryLogConfigPolicyResult, Route53ResolverError> PutResolverQueryLogConfigPolicyOutcome;
224         typedef Aws::Utils::Outcome<PutResolverRulePolicyResult, Route53ResolverError> PutResolverRulePolicyOutcome;
225         typedef Aws::Utils::Outcome<TagResourceResult, Route53ResolverError> TagResourceOutcome;
226         typedef Aws::Utils::Outcome<UntagResourceResult, Route53ResolverError> UntagResourceOutcome;
227         typedef Aws::Utils::Outcome<UpdateFirewallConfigResult, Route53ResolverError> UpdateFirewallConfigOutcome;
228         typedef Aws::Utils::Outcome<UpdateFirewallDomainsResult, Route53ResolverError> UpdateFirewallDomainsOutcome;
229         typedef Aws::Utils::Outcome<UpdateFirewallRuleResult, Route53ResolverError> UpdateFirewallRuleOutcome;
230         typedef Aws::Utils::Outcome<UpdateFirewallRuleGroupAssociationResult, Route53ResolverError> UpdateFirewallRuleGroupAssociationOutcome;
231         typedef Aws::Utils::Outcome<UpdateResolverDnssecConfigResult, Route53ResolverError> UpdateResolverDnssecConfigOutcome;
232         typedef Aws::Utils::Outcome<UpdateResolverEndpointResult, Route53ResolverError> UpdateResolverEndpointOutcome;
233         typedef Aws::Utils::Outcome<UpdateResolverRuleResult, Route53ResolverError> UpdateResolverRuleOutcome;
234 
235         typedef std::future<AssociateFirewallRuleGroupOutcome> AssociateFirewallRuleGroupOutcomeCallable;
236         typedef std::future<AssociateResolverEndpointIpAddressOutcome> AssociateResolverEndpointIpAddressOutcomeCallable;
237         typedef std::future<AssociateResolverQueryLogConfigOutcome> AssociateResolverQueryLogConfigOutcomeCallable;
238         typedef std::future<AssociateResolverRuleOutcome> AssociateResolverRuleOutcomeCallable;
239         typedef std::future<CreateFirewallDomainListOutcome> CreateFirewallDomainListOutcomeCallable;
240         typedef std::future<CreateFirewallRuleOutcome> CreateFirewallRuleOutcomeCallable;
241         typedef std::future<CreateFirewallRuleGroupOutcome> CreateFirewallRuleGroupOutcomeCallable;
242         typedef std::future<CreateResolverEndpointOutcome> CreateResolverEndpointOutcomeCallable;
243         typedef std::future<CreateResolverQueryLogConfigOutcome> CreateResolverQueryLogConfigOutcomeCallable;
244         typedef std::future<CreateResolverRuleOutcome> CreateResolverRuleOutcomeCallable;
245         typedef std::future<DeleteFirewallDomainListOutcome> DeleteFirewallDomainListOutcomeCallable;
246         typedef std::future<DeleteFirewallRuleOutcome> DeleteFirewallRuleOutcomeCallable;
247         typedef std::future<DeleteFirewallRuleGroupOutcome> DeleteFirewallRuleGroupOutcomeCallable;
248         typedef std::future<DeleteResolverEndpointOutcome> DeleteResolverEndpointOutcomeCallable;
249         typedef std::future<DeleteResolverQueryLogConfigOutcome> DeleteResolverQueryLogConfigOutcomeCallable;
250         typedef std::future<DeleteResolverRuleOutcome> DeleteResolverRuleOutcomeCallable;
251         typedef std::future<DisassociateFirewallRuleGroupOutcome> DisassociateFirewallRuleGroupOutcomeCallable;
252         typedef std::future<DisassociateResolverEndpointIpAddressOutcome> DisassociateResolverEndpointIpAddressOutcomeCallable;
253         typedef std::future<DisassociateResolverQueryLogConfigOutcome> DisassociateResolverQueryLogConfigOutcomeCallable;
254         typedef std::future<DisassociateResolverRuleOutcome> DisassociateResolverRuleOutcomeCallable;
255         typedef std::future<GetFirewallConfigOutcome> GetFirewallConfigOutcomeCallable;
256         typedef std::future<GetFirewallDomainListOutcome> GetFirewallDomainListOutcomeCallable;
257         typedef std::future<GetFirewallRuleGroupOutcome> GetFirewallRuleGroupOutcomeCallable;
258         typedef std::future<GetFirewallRuleGroupAssociationOutcome> GetFirewallRuleGroupAssociationOutcomeCallable;
259         typedef std::future<GetFirewallRuleGroupPolicyOutcome> GetFirewallRuleGroupPolicyOutcomeCallable;
260         typedef std::future<GetResolverDnssecConfigOutcome> GetResolverDnssecConfigOutcomeCallable;
261         typedef std::future<GetResolverEndpointOutcome> GetResolverEndpointOutcomeCallable;
262         typedef std::future<GetResolverQueryLogConfigOutcome> GetResolverQueryLogConfigOutcomeCallable;
263         typedef std::future<GetResolverQueryLogConfigAssociationOutcome> GetResolverQueryLogConfigAssociationOutcomeCallable;
264         typedef std::future<GetResolverQueryLogConfigPolicyOutcome> GetResolverQueryLogConfigPolicyOutcomeCallable;
265         typedef std::future<GetResolverRuleOutcome> GetResolverRuleOutcomeCallable;
266         typedef std::future<GetResolverRuleAssociationOutcome> GetResolverRuleAssociationOutcomeCallable;
267         typedef std::future<GetResolverRulePolicyOutcome> GetResolverRulePolicyOutcomeCallable;
268         typedef std::future<ImportFirewallDomainsOutcome> ImportFirewallDomainsOutcomeCallable;
269         typedef std::future<ListFirewallConfigsOutcome> ListFirewallConfigsOutcomeCallable;
270         typedef std::future<ListFirewallDomainListsOutcome> ListFirewallDomainListsOutcomeCallable;
271         typedef std::future<ListFirewallDomainsOutcome> ListFirewallDomainsOutcomeCallable;
272         typedef std::future<ListFirewallRuleGroupAssociationsOutcome> ListFirewallRuleGroupAssociationsOutcomeCallable;
273         typedef std::future<ListFirewallRuleGroupsOutcome> ListFirewallRuleGroupsOutcomeCallable;
274         typedef std::future<ListFirewallRulesOutcome> ListFirewallRulesOutcomeCallable;
275         typedef std::future<ListResolverDnssecConfigsOutcome> ListResolverDnssecConfigsOutcomeCallable;
276         typedef std::future<ListResolverEndpointIpAddressesOutcome> ListResolverEndpointIpAddressesOutcomeCallable;
277         typedef std::future<ListResolverEndpointsOutcome> ListResolverEndpointsOutcomeCallable;
278         typedef std::future<ListResolverQueryLogConfigAssociationsOutcome> ListResolverQueryLogConfigAssociationsOutcomeCallable;
279         typedef std::future<ListResolverQueryLogConfigsOutcome> ListResolverQueryLogConfigsOutcomeCallable;
280         typedef std::future<ListResolverRuleAssociationsOutcome> ListResolverRuleAssociationsOutcomeCallable;
281         typedef std::future<ListResolverRulesOutcome> ListResolverRulesOutcomeCallable;
282         typedef std::future<ListTagsForResourceOutcome> ListTagsForResourceOutcomeCallable;
283         typedef std::future<PutFirewallRuleGroupPolicyOutcome> PutFirewallRuleGroupPolicyOutcomeCallable;
284         typedef std::future<PutResolverQueryLogConfigPolicyOutcome> PutResolverQueryLogConfigPolicyOutcomeCallable;
285         typedef std::future<PutResolverRulePolicyOutcome> PutResolverRulePolicyOutcomeCallable;
286         typedef std::future<TagResourceOutcome> TagResourceOutcomeCallable;
287         typedef std::future<UntagResourceOutcome> UntagResourceOutcomeCallable;
288         typedef std::future<UpdateFirewallConfigOutcome> UpdateFirewallConfigOutcomeCallable;
289         typedef std::future<UpdateFirewallDomainsOutcome> UpdateFirewallDomainsOutcomeCallable;
290         typedef std::future<UpdateFirewallRuleOutcome> UpdateFirewallRuleOutcomeCallable;
291         typedef std::future<UpdateFirewallRuleGroupAssociationOutcome> UpdateFirewallRuleGroupAssociationOutcomeCallable;
292         typedef std::future<UpdateResolverDnssecConfigOutcome> UpdateResolverDnssecConfigOutcomeCallable;
293         typedef std::future<UpdateResolverEndpointOutcome> UpdateResolverEndpointOutcomeCallable;
294         typedef std::future<UpdateResolverRuleOutcome> UpdateResolverRuleOutcomeCallable;
295 } // namespace Model
296 
297   class Route53ResolverClient;
298 
299     typedef std::function<void(const Route53ResolverClient*, const Model::AssociateFirewallRuleGroupRequest&, const Model::AssociateFirewallRuleGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AssociateFirewallRuleGroupResponseReceivedHandler;
300     typedef std::function<void(const Route53ResolverClient*, const Model::AssociateResolverEndpointIpAddressRequest&, const Model::AssociateResolverEndpointIpAddressOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AssociateResolverEndpointIpAddressResponseReceivedHandler;
301     typedef std::function<void(const Route53ResolverClient*, const Model::AssociateResolverQueryLogConfigRequest&, const Model::AssociateResolverQueryLogConfigOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AssociateResolverQueryLogConfigResponseReceivedHandler;
302     typedef std::function<void(const Route53ResolverClient*, const Model::AssociateResolverRuleRequest&, const Model::AssociateResolverRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AssociateResolverRuleResponseReceivedHandler;
303     typedef std::function<void(const Route53ResolverClient*, const Model::CreateFirewallDomainListRequest&, const Model::CreateFirewallDomainListOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateFirewallDomainListResponseReceivedHandler;
304     typedef std::function<void(const Route53ResolverClient*, const Model::CreateFirewallRuleRequest&, const Model::CreateFirewallRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateFirewallRuleResponseReceivedHandler;
305     typedef std::function<void(const Route53ResolverClient*, const Model::CreateFirewallRuleGroupRequest&, const Model::CreateFirewallRuleGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateFirewallRuleGroupResponseReceivedHandler;
306     typedef std::function<void(const Route53ResolverClient*, const Model::CreateResolverEndpointRequest&, const Model::CreateResolverEndpointOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateResolverEndpointResponseReceivedHandler;
307     typedef std::function<void(const Route53ResolverClient*, const Model::CreateResolverQueryLogConfigRequest&, const Model::CreateResolverQueryLogConfigOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateResolverQueryLogConfigResponseReceivedHandler;
308     typedef std::function<void(const Route53ResolverClient*, const Model::CreateResolverRuleRequest&, const Model::CreateResolverRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateResolverRuleResponseReceivedHandler;
309     typedef std::function<void(const Route53ResolverClient*, const Model::DeleteFirewallDomainListRequest&, const Model::DeleteFirewallDomainListOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteFirewallDomainListResponseReceivedHandler;
310     typedef std::function<void(const Route53ResolverClient*, const Model::DeleteFirewallRuleRequest&, const Model::DeleteFirewallRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteFirewallRuleResponseReceivedHandler;
311     typedef std::function<void(const Route53ResolverClient*, const Model::DeleteFirewallRuleGroupRequest&, const Model::DeleteFirewallRuleGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteFirewallRuleGroupResponseReceivedHandler;
312     typedef std::function<void(const Route53ResolverClient*, const Model::DeleteResolverEndpointRequest&, const Model::DeleteResolverEndpointOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteResolverEndpointResponseReceivedHandler;
313     typedef std::function<void(const Route53ResolverClient*, const Model::DeleteResolverQueryLogConfigRequest&, const Model::DeleteResolverQueryLogConfigOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteResolverQueryLogConfigResponseReceivedHandler;
314     typedef std::function<void(const Route53ResolverClient*, const Model::DeleteResolverRuleRequest&, const Model::DeleteResolverRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteResolverRuleResponseReceivedHandler;
315     typedef std::function<void(const Route53ResolverClient*, const Model::DisassociateFirewallRuleGroupRequest&, const Model::DisassociateFirewallRuleGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DisassociateFirewallRuleGroupResponseReceivedHandler;
316     typedef std::function<void(const Route53ResolverClient*, const Model::DisassociateResolverEndpointIpAddressRequest&, const Model::DisassociateResolverEndpointIpAddressOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DisassociateResolverEndpointIpAddressResponseReceivedHandler;
317     typedef std::function<void(const Route53ResolverClient*, const Model::DisassociateResolverQueryLogConfigRequest&, const Model::DisassociateResolverQueryLogConfigOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DisassociateResolverQueryLogConfigResponseReceivedHandler;
318     typedef std::function<void(const Route53ResolverClient*, const Model::DisassociateResolverRuleRequest&, const Model::DisassociateResolverRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DisassociateResolverRuleResponseReceivedHandler;
319     typedef std::function<void(const Route53ResolverClient*, const Model::GetFirewallConfigRequest&, const Model::GetFirewallConfigOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetFirewallConfigResponseReceivedHandler;
320     typedef std::function<void(const Route53ResolverClient*, const Model::GetFirewallDomainListRequest&, const Model::GetFirewallDomainListOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetFirewallDomainListResponseReceivedHandler;
321     typedef std::function<void(const Route53ResolverClient*, const Model::GetFirewallRuleGroupRequest&, const Model::GetFirewallRuleGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetFirewallRuleGroupResponseReceivedHandler;
322     typedef std::function<void(const Route53ResolverClient*, const Model::GetFirewallRuleGroupAssociationRequest&, const Model::GetFirewallRuleGroupAssociationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetFirewallRuleGroupAssociationResponseReceivedHandler;
323     typedef std::function<void(const Route53ResolverClient*, const Model::GetFirewallRuleGroupPolicyRequest&, const Model::GetFirewallRuleGroupPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetFirewallRuleGroupPolicyResponseReceivedHandler;
324     typedef std::function<void(const Route53ResolverClient*, const Model::GetResolverDnssecConfigRequest&, const Model::GetResolverDnssecConfigOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetResolverDnssecConfigResponseReceivedHandler;
325     typedef std::function<void(const Route53ResolverClient*, const Model::GetResolverEndpointRequest&, const Model::GetResolverEndpointOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetResolverEndpointResponseReceivedHandler;
326     typedef std::function<void(const Route53ResolverClient*, const Model::GetResolverQueryLogConfigRequest&, const Model::GetResolverQueryLogConfigOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetResolverQueryLogConfigResponseReceivedHandler;
327     typedef std::function<void(const Route53ResolverClient*, const Model::GetResolverQueryLogConfigAssociationRequest&, const Model::GetResolverQueryLogConfigAssociationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetResolverQueryLogConfigAssociationResponseReceivedHandler;
328     typedef std::function<void(const Route53ResolverClient*, const Model::GetResolverQueryLogConfigPolicyRequest&, const Model::GetResolverQueryLogConfigPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetResolverQueryLogConfigPolicyResponseReceivedHandler;
329     typedef std::function<void(const Route53ResolverClient*, const Model::GetResolverRuleRequest&, const Model::GetResolverRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetResolverRuleResponseReceivedHandler;
330     typedef std::function<void(const Route53ResolverClient*, const Model::GetResolverRuleAssociationRequest&, const Model::GetResolverRuleAssociationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetResolverRuleAssociationResponseReceivedHandler;
331     typedef std::function<void(const Route53ResolverClient*, const Model::GetResolverRulePolicyRequest&, const Model::GetResolverRulePolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetResolverRulePolicyResponseReceivedHandler;
332     typedef std::function<void(const Route53ResolverClient*, const Model::ImportFirewallDomainsRequest&, const Model::ImportFirewallDomainsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ImportFirewallDomainsResponseReceivedHandler;
333     typedef std::function<void(const Route53ResolverClient*, const Model::ListFirewallConfigsRequest&, const Model::ListFirewallConfigsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListFirewallConfigsResponseReceivedHandler;
334     typedef std::function<void(const Route53ResolverClient*, const Model::ListFirewallDomainListsRequest&, const Model::ListFirewallDomainListsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListFirewallDomainListsResponseReceivedHandler;
335     typedef std::function<void(const Route53ResolverClient*, const Model::ListFirewallDomainsRequest&, const Model::ListFirewallDomainsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListFirewallDomainsResponseReceivedHandler;
336     typedef std::function<void(const Route53ResolverClient*, const Model::ListFirewallRuleGroupAssociationsRequest&, const Model::ListFirewallRuleGroupAssociationsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListFirewallRuleGroupAssociationsResponseReceivedHandler;
337     typedef std::function<void(const Route53ResolverClient*, const Model::ListFirewallRuleGroupsRequest&, const Model::ListFirewallRuleGroupsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListFirewallRuleGroupsResponseReceivedHandler;
338     typedef std::function<void(const Route53ResolverClient*, const Model::ListFirewallRulesRequest&, const Model::ListFirewallRulesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListFirewallRulesResponseReceivedHandler;
339     typedef std::function<void(const Route53ResolverClient*, const Model::ListResolverDnssecConfigsRequest&, const Model::ListResolverDnssecConfigsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListResolverDnssecConfigsResponseReceivedHandler;
340     typedef std::function<void(const Route53ResolverClient*, const Model::ListResolverEndpointIpAddressesRequest&, const Model::ListResolverEndpointIpAddressesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListResolverEndpointIpAddressesResponseReceivedHandler;
341     typedef std::function<void(const Route53ResolverClient*, const Model::ListResolverEndpointsRequest&, const Model::ListResolverEndpointsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListResolverEndpointsResponseReceivedHandler;
342     typedef std::function<void(const Route53ResolverClient*, const Model::ListResolverQueryLogConfigAssociationsRequest&, const Model::ListResolverQueryLogConfigAssociationsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListResolverQueryLogConfigAssociationsResponseReceivedHandler;
343     typedef std::function<void(const Route53ResolverClient*, const Model::ListResolverQueryLogConfigsRequest&, const Model::ListResolverQueryLogConfigsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListResolverQueryLogConfigsResponseReceivedHandler;
344     typedef std::function<void(const Route53ResolverClient*, const Model::ListResolverRuleAssociationsRequest&, const Model::ListResolverRuleAssociationsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListResolverRuleAssociationsResponseReceivedHandler;
345     typedef std::function<void(const Route53ResolverClient*, const Model::ListResolverRulesRequest&, const Model::ListResolverRulesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListResolverRulesResponseReceivedHandler;
346     typedef std::function<void(const Route53ResolverClient*, const Model::ListTagsForResourceRequest&, const Model::ListTagsForResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListTagsForResourceResponseReceivedHandler;
347     typedef std::function<void(const Route53ResolverClient*, const Model::PutFirewallRuleGroupPolicyRequest&, const Model::PutFirewallRuleGroupPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutFirewallRuleGroupPolicyResponseReceivedHandler;
348     typedef std::function<void(const Route53ResolverClient*, const Model::PutResolverQueryLogConfigPolicyRequest&, const Model::PutResolverQueryLogConfigPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutResolverQueryLogConfigPolicyResponseReceivedHandler;
349     typedef std::function<void(const Route53ResolverClient*, const Model::PutResolverRulePolicyRequest&, const Model::PutResolverRulePolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutResolverRulePolicyResponseReceivedHandler;
350     typedef std::function<void(const Route53ResolverClient*, const Model::TagResourceRequest&, const Model::TagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > TagResourceResponseReceivedHandler;
351     typedef std::function<void(const Route53ResolverClient*, const Model::UntagResourceRequest&, const Model::UntagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UntagResourceResponseReceivedHandler;
352     typedef std::function<void(const Route53ResolverClient*, const Model::UpdateFirewallConfigRequest&, const Model::UpdateFirewallConfigOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateFirewallConfigResponseReceivedHandler;
353     typedef std::function<void(const Route53ResolverClient*, const Model::UpdateFirewallDomainsRequest&, const Model::UpdateFirewallDomainsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateFirewallDomainsResponseReceivedHandler;
354     typedef std::function<void(const Route53ResolverClient*, const Model::UpdateFirewallRuleRequest&, const Model::UpdateFirewallRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateFirewallRuleResponseReceivedHandler;
355     typedef std::function<void(const Route53ResolverClient*, const Model::UpdateFirewallRuleGroupAssociationRequest&, const Model::UpdateFirewallRuleGroupAssociationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateFirewallRuleGroupAssociationResponseReceivedHandler;
356     typedef std::function<void(const Route53ResolverClient*, const Model::UpdateResolverDnssecConfigRequest&, const Model::UpdateResolverDnssecConfigOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateResolverDnssecConfigResponseReceivedHandler;
357     typedef std::function<void(const Route53ResolverClient*, const Model::UpdateResolverEndpointRequest&, const Model::UpdateResolverEndpointOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateResolverEndpointResponseReceivedHandler;
358     typedef std::function<void(const Route53ResolverClient*, const Model::UpdateResolverRuleRequest&, const Model::UpdateResolverRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateResolverRuleResponseReceivedHandler;
359 
360   /**
361    * <p>When you create a VPC using Amazon VPC, you automatically get DNS resolution
362    * within the VPC from Route 53 Resolver. By default, Resolver answers DNS queries
363    * for VPC domain names such as domain names for EC2 instances or Elastic Load
364    * Balancing load balancers. Resolver performs recursive lookups against public
365    * name servers for all other domain names.</p> <p>You can also configure DNS
366    * resolution between your VPC and your network over a Direct Connect or VPN
367    * connection:</p> <p> <b>Forward DNS queries from resolvers on your network to
368    * Route 53 Resolver</b> </p> <p>DNS resolvers on your network can forward DNS
369    * queries to Resolver in a specified VPC. This allows your DNS resolvers to easily
370    * resolve domain names for Amazon Web Services resources such as EC2 instances or
371    * records in a Route 53 private hosted zone. For more information, see <a
372    * href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html#resolver-overview-forward-network-to-vpc">How
373    * DNS Resolvers on Your Network Forward DNS Queries to Route 53 Resolver</a> in
374    * the <i>Amazon Route 53 Developer Guide</i>.</p> <p> <b>Conditionally forward
375    * queries from a VPC to resolvers on your network</b> </p> <p>You can configure
376    * Resolver to forward queries that it receives from EC2 instances in your VPCs to
377    * DNS resolvers on your network. To forward selected queries, you create Resolver
378    * rules that specify the domain names for the DNS queries that you want to forward
379    * (such as example.com), and the IP addresses of the DNS resolvers on your network
380    * that you want to forward the queries to. If a query matches multiple rules
381    * (example.com, acme.example.com), Resolver chooses the rule with the most
382    * specific match (acme.example.com) and forwards the query to the IP addresses
383    * that you specified in that rule. For more information, see <a
384    * href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html#resolver-overview-forward-vpc-to-network">How
385    * Route 53 Resolver Forwards DNS Queries from Your VPCs to Your Network</a> in the
386    * <i>Amazon Route 53 Developer Guide</i>.</p> <p>Like Amazon VPC, Resolver is
387    * Regional. In each Region where you have VPCs, you can choose whether to forward
388    * queries from your VPCs to your network (outbound queries), from your network to
389    * your VPCs (inbound queries), or both.</p>
390    */
391   class AWS_ROUTE53RESOLVER_API Route53ResolverClient : public Aws::Client::AWSJsonClient
392   {
393     public:
394       typedef Aws::Client::AWSJsonClient BASECLASS;
395 
396        /**
397         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
398         * is not specified, it will be initialized to default values.
399         */
400         Route53ResolverClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
401 
402        /**
403         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
404         * is not specified, it will be initialized to default values.
405         */
406         Route53ResolverClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
407 
408        /**
409         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
410         * the default http client factory will be used
411         */
412         Route53ResolverClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
413             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
414 
415         virtual ~Route53ResolverClient();
416 
417 
418         /**
419          * <p>Associates a <a>FirewallRuleGroup</a> with a VPC, to provide DNS filtering
420          * for the VPC. </p><p><h3>See Also:</h3>   <a
421          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/AssociateFirewallRuleGroup">AWS
422          * API Reference</a></p>
423          */
424         virtual Model::AssociateFirewallRuleGroupOutcome AssociateFirewallRuleGroup(const Model::AssociateFirewallRuleGroupRequest& request) const;
425 
426         /**
427          * <p>Associates a <a>FirewallRuleGroup</a> with a VPC, to provide DNS filtering
428          * for the VPC. </p><p><h3>See Also:</h3>   <a
429          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/AssociateFirewallRuleGroup">AWS
430          * API Reference</a></p>
431          *
432          * returns a future to the operation so that it can be executed in parallel to other requests.
433          */
434         virtual Model::AssociateFirewallRuleGroupOutcomeCallable AssociateFirewallRuleGroupCallable(const Model::AssociateFirewallRuleGroupRequest& request) const;
435 
436         /**
437          * <p>Associates a <a>FirewallRuleGroup</a> with a VPC, to provide DNS filtering
438          * for the VPC. </p><p><h3>See Also:</h3>   <a
439          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/AssociateFirewallRuleGroup">AWS
440          * API Reference</a></p>
441          *
442          * Queues the request into a thread executor and triggers associated callback when operation has finished.
443          */
444         virtual void AssociateFirewallRuleGroupAsync(const Model::AssociateFirewallRuleGroupRequest& request, const AssociateFirewallRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
445 
446         /**
447          * <p>Adds IP addresses to an inbound or an outbound Resolver endpoint. If you want
448          * to add more than one IP address, submit one
449          * <code>AssociateResolverEndpointIpAddress</code> request for each IP address.</p>
450          * <p>To remove an IP address from an endpoint, see <a
451          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverEndpointIpAddress.html">DisassociateResolverEndpointIpAddress</a>.
452          * </p><p><h3>See Also:</h3>   <a
453          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/AssociateResolverEndpointIpAddress">AWS
454          * API Reference</a></p>
455          */
456         virtual Model::AssociateResolverEndpointIpAddressOutcome AssociateResolverEndpointIpAddress(const Model::AssociateResolverEndpointIpAddressRequest& request) const;
457 
458         /**
459          * <p>Adds IP addresses to an inbound or an outbound Resolver endpoint. If you want
460          * to add more than one IP address, submit one
461          * <code>AssociateResolverEndpointIpAddress</code> request for each IP address.</p>
462          * <p>To remove an IP address from an endpoint, see <a
463          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverEndpointIpAddress.html">DisassociateResolverEndpointIpAddress</a>.
464          * </p><p><h3>See Also:</h3>   <a
465          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/AssociateResolverEndpointIpAddress">AWS
466          * API Reference</a></p>
467          *
468          * returns a future to the operation so that it can be executed in parallel to other requests.
469          */
470         virtual Model::AssociateResolverEndpointIpAddressOutcomeCallable AssociateResolverEndpointIpAddressCallable(const Model::AssociateResolverEndpointIpAddressRequest& request) const;
471 
472         /**
473          * <p>Adds IP addresses to an inbound or an outbound Resolver endpoint. If you want
474          * to add more than one IP address, submit one
475          * <code>AssociateResolverEndpointIpAddress</code> request for each IP address.</p>
476          * <p>To remove an IP address from an endpoint, see <a
477          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverEndpointIpAddress.html">DisassociateResolverEndpointIpAddress</a>.
478          * </p><p><h3>See Also:</h3>   <a
479          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/AssociateResolverEndpointIpAddress">AWS
480          * API Reference</a></p>
481          *
482          * Queues the request into a thread executor and triggers associated callback when operation has finished.
483          */
484         virtual void AssociateResolverEndpointIpAddressAsync(const Model::AssociateResolverEndpointIpAddressRequest& request, const AssociateResolverEndpointIpAddressResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
485 
486         /**
487          * <p>Associates an Amazon VPC with a specified query logging configuration. Route
488          * 53 Resolver logs DNS queries that originate in all of the Amazon VPCs that are
489          * associated with a specified query logging configuration. To associate more than
490          * one VPC with a configuration, submit one
491          * <code>AssociateResolverQueryLogConfig</code> request for each VPC.</p>
492          * <p>The VPCs that you associate with a query logging configuration must be in the
493          * same Region as the configuration.</p>  <p>To remove a VPC from a query
494          * logging configuration, see <a
495          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverQueryLogConfig.html">DisassociateResolverQueryLogConfig</a>.
496          * </p><p><h3>See Also:</h3>   <a
497          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/AssociateResolverQueryLogConfig">AWS
498          * API Reference</a></p>
499          */
500         virtual Model::AssociateResolverQueryLogConfigOutcome AssociateResolverQueryLogConfig(const Model::AssociateResolverQueryLogConfigRequest& request) const;
501 
502         /**
503          * <p>Associates an Amazon VPC with a specified query logging configuration. Route
504          * 53 Resolver logs DNS queries that originate in all of the Amazon VPCs that are
505          * associated with a specified query logging configuration. To associate more than
506          * one VPC with a configuration, submit one
507          * <code>AssociateResolverQueryLogConfig</code> request for each VPC.</p>
508          * <p>The VPCs that you associate with a query logging configuration must be in the
509          * same Region as the configuration.</p>  <p>To remove a VPC from a query
510          * logging configuration, see <a
511          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverQueryLogConfig.html">DisassociateResolverQueryLogConfig</a>.
512          * </p><p><h3>See Also:</h3>   <a
513          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/AssociateResolverQueryLogConfig">AWS
514          * API Reference</a></p>
515          *
516          * returns a future to the operation so that it can be executed in parallel to other requests.
517          */
518         virtual Model::AssociateResolverQueryLogConfigOutcomeCallable AssociateResolverQueryLogConfigCallable(const Model::AssociateResolverQueryLogConfigRequest& request) const;
519 
520         /**
521          * <p>Associates an Amazon VPC with a specified query logging configuration. Route
522          * 53 Resolver logs DNS queries that originate in all of the Amazon VPCs that are
523          * associated with a specified query logging configuration. To associate more than
524          * one VPC with a configuration, submit one
525          * <code>AssociateResolverQueryLogConfig</code> request for each VPC.</p>
526          * <p>The VPCs that you associate with a query logging configuration must be in the
527          * same Region as the configuration.</p>  <p>To remove a VPC from a query
528          * logging configuration, see <a
529          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverQueryLogConfig.html">DisassociateResolverQueryLogConfig</a>.
530          * </p><p><h3>See Also:</h3>   <a
531          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/AssociateResolverQueryLogConfig">AWS
532          * API Reference</a></p>
533          *
534          * Queues the request into a thread executor and triggers associated callback when operation has finished.
535          */
536         virtual void AssociateResolverQueryLogConfigAsync(const Model::AssociateResolverQueryLogConfigRequest& request, const AssociateResolverQueryLogConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
537 
538         /**
539          * <p>Associates a Resolver rule with a VPC. When you associate a rule with a VPC,
540          * Resolver forwards all DNS queries for the domain name that is specified in the
541          * rule and that originate in the VPC. The queries are forwarded to the IP
542          * addresses for the DNS resolvers that are specified in the rule. For more
543          * information about rules, see <a
544          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverRule.html">CreateResolverRule</a>.
545          * </p><p><h3>See Also:</h3>   <a
546          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/AssociateResolverRule">AWS
547          * API Reference</a></p>
548          */
549         virtual Model::AssociateResolverRuleOutcome AssociateResolverRule(const Model::AssociateResolverRuleRequest& request) const;
550 
551         /**
552          * <p>Associates a Resolver rule with a VPC. When you associate a rule with a VPC,
553          * Resolver forwards all DNS queries for the domain name that is specified in the
554          * rule and that originate in the VPC. The queries are forwarded to the IP
555          * addresses for the DNS resolvers that are specified in the rule. For more
556          * information about rules, see <a
557          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverRule.html">CreateResolverRule</a>.
558          * </p><p><h3>See Also:</h3>   <a
559          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/AssociateResolverRule">AWS
560          * API Reference</a></p>
561          *
562          * returns a future to the operation so that it can be executed in parallel to other requests.
563          */
564         virtual Model::AssociateResolverRuleOutcomeCallable AssociateResolverRuleCallable(const Model::AssociateResolverRuleRequest& request) const;
565 
566         /**
567          * <p>Associates a Resolver rule with a VPC. When you associate a rule with a VPC,
568          * Resolver forwards all DNS queries for the domain name that is specified in the
569          * rule and that originate in the VPC. The queries are forwarded to the IP
570          * addresses for the DNS resolvers that are specified in the rule. For more
571          * information about rules, see <a
572          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverRule.html">CreateResolverRule</a>.
573          * </p><p><h3>See Also:</h3>   <a
574          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/AssociateResolverRule">AWS
575          * API Reference</a></p>
576          *
577          * Queues the request into a thread executor and triggers associated callback when operation has finished.
578          */
579         virtual void AssociateResolverRuleAsync(const Model::AssociateResolverRuleRequest& request, const AssociateResolverRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
580 
581         /**
582          * <p>Creates an empty firewall domain list for use in DNS Firewall rules. You can
583          * populate the domains for the new list with a file, using
584          * <a>ImportFirewallDomains</a>, or with domain strings, using
585          * <a>UpdateFirewallDomains</a>. </p><p><h3>See Also:</h3>   <a
586          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateFirewallDomainList">AWS
587          * API Reference</a></p>
588          */
589         virtual Model::CreateFirewallDomainListOutcome CreateFirewallDomainList(const Model::CreateFirewallDomainListRequest& request) const;
590 
591         /**
592          * <p>Creates an empty firewall domain list for use in DNS Firewall rules. You can
593          * populate the domains for the new list with a file, using
594          * <a>ImportFirewallDomains</a>, or with domain strings, using
595          * <a>UpdateFirewallDomains</a>. </p><p><h3>See Also:</h3>   <a
596          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateFirewallDomainList">AWS
597          * API Reference</a></p>
598          *
599          * returns a future to the operation so that it can be executed in parallel to other requests.
600          */
601         virtual Model::CreateFirewallDomainListOutcomeCallable CreateFirewallDomainListCallable(const Model::CreateFirewallDomainListRequest& request) const;
602 
603         /**
604          * <p>Creates an empty firewall domain list for use in DNS Firewall rules. You can
605          * populate the domains for the new list with a file, using
606          * <a>ImportFirewallDomains</a>, or with domain strings, using
607          * <a>UpdateFirewallDomains</a>. </p><p><h3>See Also:</h3>   <a
608          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateFirewallDomainList">AWS
609          * API Reference</a></p>
610          *
611          * Queues the request into a thread executor and triggers associated callback when operation has finished.
612          */
613         virtual void CreateFirewallDomainListAsync(const Model::CreateFirewallDomainListRequest& request, const CreateFirewallDomainListResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
614 
615         /**
616          * <p>Creates a single DNS Firewall rule in the specified rule group, using the
617          * specified domain list.</p><p><h3>See Also:</h3>   <a
618          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateFirewallRule">AWS
619          * API Reference</a></p>
620          */
621         virtual Model::CreateFirewallRuleOutcome CreateFirewallRule(const Model::CreateFirewallRuleRequest& request) const;
622 
623         /**
624          * <p>Creates a single DNS Firewall rule in the specified rule group, using the
625          * specified domain list.</p><p><h3>See Also:</h3>   <a
626          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateFirewallRule">AWS
627          * API Reference</a></p>
628          *
629          * returns a future to the operation so that it can be executed in parallel to other requests.
630          */
631         virtual Model::CreateFirewallRuleOutcomeCallable CreateFirewallRuleCallable(const Model::CreateFirewallRuleRequest& request) const;
632 
633         /**
634          * <p>Creates a single DNS Firewall rule in the specified rule group, using the
635          * specified domain list.</p><p><h3>See Also:</h3>   <a
636          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateFirewallRule">AWS
637          * API Reference</a></p>
638          *
639          * Queues the request into a thread executor and triggers associated callback when operation has finished.
640          */
641         virtual void CreateFirewallRuleAsync(const Model::CreateFirewallRuleRequest& request, const CreateFirewallRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
642 
643         /**
644          * <p>Creates an empty DNS Firewall rule group for filtering DNS network traffic in
645          * a VPC. You can add rules to the new rule group by calling
646          * <a>CreateFirewallRule</a>. </p><p><h3>See Also:</h3>   <a
647          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateFirewallRuleGroup">AWS
648          * API Reference</a></p>
649          */
650         virtual Model::CreateFirewallRuleGroupOutcome CreateFirewallRuleGroup(const Model::CreateFirewallRuleGroupRequest& request) const;
651 
652         /**
653          * <p>Creates an empty DNS Firewall rule group for filtering DNS network traffic in
654          * a VPC. You can add rules to the new rule group by calling
655          * <a>CreateFirewallRule</a>. </p><p><h3>See Also:</h3>   <a
656          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateFirewallRuleGroup">AWS
657          * API Reference</a></p>
658          *
659          * returns a future to the operation so that it can be executed in parallel to other requests.
660          */
661         virtual Model::CreateFirewallRuleGroupOutcomeCallable CreateFirewallRuleGroupCallable(const Model::CreateFirewallRuleGroupRequest& request) const;
662 
663         /**
664          * <p>Creates an empty DNS Firewall rule group for filtering DNS network traffic in
665          * a VPC. You can add rules to the new rule group by calling
666          * <a>CreateFirewallRule</a>. </p><p><h3>See Also:</h3>   <a
667          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateFirewallRuleGroup">AWS
668          * API Reference</a></p>
669          *
670          * Queues the request into a thread executor and triggers associated callback when operation has finished.
671          */
672         virtual void CreateFirewallRuleGroupAsync(const Model::CreateFirewallRuleGroupRequest& request, const CreateFirewallRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
673 
674         /**
675          * <p>Creates a Resolver endpoint. There are two types of Resolver endpoints,
676          * inbound and outbound:</p> <ul> <li> <p>An <i>inbound Resolver endpoint</i>
677          * forwards DNS queries to the DNS service for a VPC from your network.</p> </li>
678          * <li> <p>An <i>outbound Resolver endpoint</i> forwards DNS queries from the DNS
679          * service for a VPC to your network.</p> </li> </ul><p><h3>See Also:</h3>   <a
680          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateResolverEndpoint">AWS
681          * API Reference</a></p>
682          */
683         virtual Model::CreateResolverEndpointOutcome CreateResolverEndpoint(const Model::CreateResolverEndpointRequest& request) const;
684 
685         /**
686          * <p>Creates a Resolver endpoint. There are two types of Resolver endpoints,
687          * inbound and outbound:</p> <ul> <li> <p>An <i>inbound Resolver endpoint</i>
688          * forwards DNS queries to the DNS service for a VPC from your network.</p> </li>
689          * <li> <p>An <i>outbound Resolver endpoint</i> forwards DNS queries from the DNS
690          * service for a VPC to your network.</p> </li> </ul><p><h3>See Also:</h3>   <a
691          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateResolverEndpoint">AWS
692          * API Reference</a></p>
693          *
694          * returns a future to the operation so that it can be executed in parallel to other requests.
695          */
696         virtual Model::CreateResolverEndpointOutcomeCallable CreateResolverEndpointCallable(const Model::CreateResolverEndpointRequest& request) const;
697 
698         /**
699          * <p>Creates a Resolver endpoint. There are two types of Resolver endpoints,
700          * inbound and outbound:</p> <ul> <li> <p>An <i>inbound Resolver endpoint</i>
701          * forwards DNS queries to the DNS service for a VPC from your network.</p> </li>
702          * <li> <p>An <i>outbound Resolver endpoint</i> forwards DNS queries from the DNS
703          * service for a VPC to your network.</p> </li> </ul><p><h3>See Also:</h3>   <a
704          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateResolverEndpoint">AWS
705          * API Reference</a></p>
706          *
707          * Queues the request into a thread executor and triggers associated callback when operation has finished.
708          */
709         virtual void CreateResolverEndpointAsync(const Model::CreateResolverEndpointRequest& request, const CreateResolverEndpointResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
710 
711         /**
712          * <p>Creates a Resolver query logging configuration, which defines where you want
713          * Resolver to save DNS query logs that originate in your VPCs. Resolver can log
714          * queries only for VPCs that are in the same Region as the query logging
715          * configuration.</p> <p>To specify which VPCs you want to log queries for, you use
716          * <code>AssociateResolverQueryLogConfig</code>. For more information, see <a
717          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_AssociateResolverQueryLogConfig.html">AssociateResolverQueryLogConfig</a>.
718          * </p> <p>You can optionally use Resource Access Manager (RAM) to share a query
719          * logging configuration with other Amazon Web Services accounts. The other
720          * accounts can then associate VPCs with the configuration. The query logs that
721          * Resolver creates for a configuration include all DNS queries that originate in
722          * all VPCs that are associated with the configuration.</p><p><h3>See Also:</h3>
723          * <a
724          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateResolverQueryLogConfig">AWS
725          * API Reference</a></p>
726          */
727         virtual Model::CreateResolverQueryLogConfigOutcome CreateResolverQueryLogConfig(const Model::CreateResolverQueryLogConfigRequest& request) const;
728 
729         /**
730          * <p>Creates a Resolver query logging configuration, which defines where you want
731          * Resolver to save DNS query logs that originate in your VPCs. Resolver can log
732          * queries only for VPCs that are in the same Region as the query logging
733          * configuration.</p> <p>To specify which VPCs you want to log queries for, you use
734          * <code>AssociateResolverQueryLogConfig</code>. For more information, see <a
735          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_AssociateResolverQueryLogConfig.html">AssociateResolverQueryLogConfig</a>.
736          * </p> <p>You can optionally use Resource Access Manager (RAM) to share a query
737          * logging configuration with other Amazon Web Services accounts. The other
738          * accounts can then associate VPCs with the configuration. The query logs that
739          * Resolver creates for a configuration include all DNS queries that originate in
740          * all VPCs that are associated with the configuration.</p><p><h3>See Also:</h3>
741          * <a
742          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateResolverQueryLogConfig">AWS
743          * API Reference</a></p>
744          *
745          * returns a future to the operation so that it can be executed in parallel to other requests.
746          */
747         virtual Model::CreateResolverQueryLogConfigOutcomeCallable CreateResolverQueryLogConfigCallable(const Model::CreateResolverQueryLogConfigRequest& request) const;
748 
749         /**
750          * <p>Creates a Resolver query logging configuration, which defines where you want
751          * Resolver to save DNS query logs that originate in your VPCs. Resolver can log
752          * queries only for VPCs that are in the same Region as the query logging
753          * configuration.</p> <p>To specify which VPCs you want to log queries for, you use
754          * <code>AssociateResolverQueryLogConfig</code>. For more information, see <a
755          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_AssociateResolverQueryLogConfig.html">AssociateResolverQueryLogConfig</a>.
756          * </p> <p>You can optionally use Resource Access Manager (RAM) to share a query
757          * logging configuration with other Amazon Web Services accounts. The other
758          * accounts can then associate VPCs with the configuration. The query logs that
759          * Resolver creates for a configuration include all DNS queries that originate in
760          * all VPCs that are associated with the configuration.</p><p><h3>See Also:</h3>
761          * <a
762          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateResolverQueryLogConfig">AWS
763          * API Reference</a></p>
764          *
765          * Queues the request into a thread executor and triggers associated callback when operation has finished.
766          */
767         virtual void CreateResolverQueryLogConfigAsync(const Model::CreateResolverQueryLogConfigRequest& request, const CreateResolverQueryLogConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
768 
769         /**
770          * <p>For DNS queries that originate in your VPCs, specifies which Resolver
771          * endpoint the queries pass through, one domain name that you want to forward to
772          * your network, and the IP addresses of the DNS resolvers in your
773          * network.</p><p><h3>See Also:</h3>   <a
774          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateResolverRule">AWS
775          * API Reference</a></p>
776          */
777         virtual Model::CreateResolverRuleOutcome CreateResolverRule(const Model::CreateResolverRuleRequest& request) const;
778 
779         /**
780          * <p>For DNS queries that originate in your VPCs, specifies which Resolver
781          * endpoint the queries pass through, one domain name that you want to forward to
782          * your network, and the IP addresses of the DNS resolvers in your
783          * network.</p><p><h3>See Also:</h3>   <a
784          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateResolverRule">AWS
785          * API Reference</a></p>
786          *
787          * returns a future to the operation so that it can be executed in parallel to other requests.
788          */
789         virtual Model::CreateResolverRuleOutcomeCallable CreateResolverRuleCallable(const Model::CreateResolverRuleRequest& request) const;
790 
791         /**
792          * <p>For DNS queries that originate in your VPCs, specifies which Resolver
793          * endpoint the queries pass through, one domain name that you want to forward to
794          * your network, and the IP addresses of the DNS resolvers in your
795          * network.</p><p><h3>See Also:</h3>   <a
796          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateResolverRule">AWS
797          * API Reference</a></p>
798          *
799          * Queues the request into a thread executor and triggers associated callback when operation has finished.
800          */
801         virtual void CreateResolverRuleAsync(const Model::CreateResolverRuleRequest& request, const CreateResolverRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
802 
803         /**
804          * <p>Deletes the specified domain list. </p><p><h3>See Also:</h3>   <a
805          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteFirewallDomainList">AWS
806          * API Reference</a></p>
807          */
808         virtual Model::DeleteFirewallDomainListOutcome DeleteFirewallDomainList(const Model::DeleteFirewallDomainListRequest& request) const;
809 
810         /**
811          * <p>Deletes the specified domain list. </p><p><h3>See Also:</h3>   <a
812          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteFirewallDomainList">AWS
813          * API Reference</a></p>
814          *
815          * returns a future to the operation so that it can be executed in parallel to other requests.
816          */
817         virtual Model::DeleteFirewallDomainListOutcomeCallable DeleteFirewallDomainListCallable(const Model::DeleteFirewallDomainListRequest& request) const;
818 
819         /**
820          * <p>Deletes the specified domain list. </p><p><h3>See Also:</h3>   <a
821          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteFirewallDomainList">AWS
822          * API Reference</a></p>
823          *
824          * Queues the request into a thread executor and triggers associated callback when operation has finished.
825          */
826         virtual void DeleteFirewallDomainListAsync(const Model::DeleteFirewallDomainListRequest& request, const DeleteFirewallDomainListResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
827 
828         /**
829          * <p>Deletes the specified firewall rule.</p><p><h3>See Also:</h3>   <a
830          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteFirewallRule">AWS
831          * API Reference</a></p>
832          */
833         virtual Model::DeleteFirewallRuleOutcome DeleteFirewallRule(const Model::DeleteFirewallRuleRequest& request) const;
834 
835         /**
836          * <p>Deletes the specified firewall rule.</p><p><h3>See Also:</h3>   <a
837          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteFirewallRule">AWS
838          * API Reference</a></p>
839          *
840          * returns a future to the operation so that it can be executed in parallel to other requests.
841          */
842         virtual Model::DeleteFirewallRuleOutcomeCallable DeleteFirewallRuleCallable(const Model::DeleteFirewallRuleRequest& request) const;
843 
844         /**
845          * <p>Deletes the specified firewall rule.</p><p><h3>See Also:</h3>   <a
846          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteFirewallRule">AWS
847          * API Reference</a></p>
848          *
849          * Queues the request into a thread executor and triggers associated callback when operation has finished.
850          */
851         virtual void DeleteFirewallRuleAsync(const Model::DeleteFirewallRuleRequest& request, const DeleteFirewallRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
852 
853         /**
854          * <p>Deletes the specified firewall rule group. </p><p><h3>See Also:</h3>   <a
855          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteFirewallRuleGroup">AWS
856          * API Reference</a></p>
857          */
858         virtual Model::DeleteFirewallRuleGroupOutcome DeleteFirewallRuleGroup(const Model::DeleteFirewallRuleGroupRequest& request) const;
859 
860         /**
861          * <p>Deletes the specified firewall rule group. </p><p><h3>See Also:</h3>   <a
862          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteFirewallRuleGroup">AWS
863          * API Reference</a></p>
864          *
865          * returns a future to the operation so that it can be executed in parallel to other requests.
866          */
867         virtual Model::DeleteFirewallRuleGroupOutcomeCallable DeleteFirewallRuleGroupCallable(const Model::DeleteFirewallRuleGroupRequest& request) const;
868 
869         /**
870          * <p>Deletes the specified firewall rule group. </p><p><h3>See Also:</h3>   <a
871          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteFirewallRuleGroup">AWS
872          * API Reference</a></p>
873          *
874          * Queues the request into a thread executor and triggers associated callback when operation has finished.
875          */
876         virtual void DeleteFirewallRuleGroupAsync(const Model::DeleteFirewallRuleGroupRequest& request, const DeleteFirewallRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
877 
878         /**
879          * <p>Deletes a Resolver endpoint. The effect of deleting a Resolver endpoint
880          * depends on whether it's an inbound or an outbound Resolver endpoint:</p> <ul>
881          * <li> <p> <b>Inbound</b>: DNS queries from your network are no longer routed to
882          * the DNS service for the specified VPC.</p> </li> <li> <p> <b>Outbound</b>: DNS
883          * queries from a VPC are no longer routed to your network.</p> </li>
884          * </ul><p><h3>See Also:</h3>   <a
885          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteResolverEndpoint">AWS
886          * API Reference</a></p>
887          */
888         virtual Model::DeleteResolverEndpointOutcome DeleteResolverEndpoint(const Model::DeleteResolverEndpointRequest& request) const;
889 
890         /**
891          * <p>Deletes a Resolver endpoint. The effect of deleting a Resolver endpoint
892          * depends on whether it's an inbound or an outbound Resolver endpoint:</p> <ul>
893          * <li> <p> <b>Inbound</b>: DNS queries from your network are no longer routed to
894          * the DNS service for the specified VPC.</p> </li> <li> <p> <b>Outbound</b>: DNS
895          * queries from a VPC are no longer routed to your network.</p> </li>
896          * </ul><p><h3>See Also:</h3>   <a
897          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteResolverEndpoint">AWS
898          * API Reference</a></p>
899          *
900          * returns a future to the operation so that it can be executed in parallel to other requests.
901          */
902         virtual Model::DeleteResolverEndpointOutcomeCallable DeleteResolverEndpointCallable(const Model::DeleteResolverEndpointRequest& request) const;
903 
904         /**
905          * <p>Deletes a Resolver endpoint. The effect of deleting a Resolver endpoint
906          * depends on whether it's an inbound or an outbound Resolver endpoint:</p> <ul>
907          * <li> <p> <b>Inbound</b>: DNS queries from your network are no longer routed to
908          * the DNS service for the specified VPC.</p> </li> <li> <p> <b>Outbound</b>: DNS
909          * queries from a VPC are no longer routed to your network.</p> </li>
910          * </ul><p><h3>See Also:</h3>   <a
911          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteResolverEndpoint">AWS
912          * API Reference</a></p>
913          *
914          * Queues the request into a thread executor and triggers associated callback when operation has finished.
915          */
916         virtual void DeleteResolverEndpointAsync(const Model::DeleteResolverEndpointRequest& request, const DeleteResolverEndpointResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
917 
918         /**
919          * <p>Deletes a query logging configuration. When you delete a configuration,
920          * Resolver stops logging DNS queries for all of the Amazon VPCs that are
921          * associated with the configuration. This also applies if the query logging
922          * configuration is shared with other Amazon Web Services accounts, and the other
923          * accounts have associated VPCs with the shared configuration.</p> <p>Before you
924          * can delete a query logging configuration, you must first disassociate all VPCs
925          * from the configuration. See <a
926          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverQueryLogConfig.html">DisassociateResolverQueryLogConfig</a>.</p>
927          * <p>If you used Resource Access Manager (RAM) to share a query logging
928          * configuration with other accounts, you must stop sharing the configuration
929          * before you can delete a configuration. The accounts that you shared the
930          * configuration with can first disassociate VPCs that they associated with the
931          * configuration, but that's not necessary. If you stop sharing the configuration,
932          * those VPCs are automatically disassociated from the configuration.</p><p><h3>See
933          * Also:</h3>   <a
934          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteResolverQueryLogConfig">AWS
935          * API Reference</a></p>
936          */
937         virtual Model::DeleteResolverQueryLogConfigOutcome DeleteResolverQueryLogConfig(const Model::DeleteResolverQueryLogConfigRequest& request) const;
938 
939         /**
940          * <p>Deletes a query logging configuration. When you delete a configuration,
941          * Resolver stops logging DNS queries for all of the Amazon VPCs that are
942          * associated with the configuration. This also applies if the query logging
943          * configuration is shared with other Amazon Web Services accounts, and the other
944          * accounts have associated VPCs with the shared configuration.</p> <p>Before you
945          * can delete a query logging configuration, you must first disassociate all VPCs
946          * from the configuration. See <a
947          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverQueryLogConfig.html">DisassociateResolverQueryLogConfig</a>.</p>
948          * <p>If you used Resource Access Manager (RAM) to share a query logging
949          * configuration with other accounts, you must stop sharing the configuration
950          * before you can delete a configuration. The accounts that you shared the
951          * configuration with can first disassociate VPCs that they associated with the
952          * configuration, but that's not necessary. If you stop sharing the configuration,
953          * those VPCs are automatically disassociated from the configuration.</p><p><h3>See
954          * Also:</h3>   <a
955          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteResolverQueryLogConfig">AWS
956          * API Reference</a></p>
957          *
958          * returns a future to the operation so that it can be executed in parallel to other requests.
959          */
960         virtual Model::DeleteResolverQueryLogConfigOutcomeCallable DeleteResolverQueryLogConfigCallable(const Model::DeleteResolverQueryLogConfigRequest& request) const;
961 
962         /**
963          * <p>Deletes a query logging configuration. When you delete a configuration,
964          * Resolver stops logging DNS queries for all of the Amazon VPCs that are
965          * associated with the configuration. This also applies if the query logging
966          * configuration is shared with other Amazon Web Services accounts, and the other
967          * accounts have associated VPCs with the shared configuration.</p> <p>Before you
968          * can delete a query logging configuration, you must first disassociate all VPCs
969          * from the configuration. See <a
970          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverQueryLogConfig.html">DisassociateResolverQueryLogConfig</a>.</p>
971          * <p>If you used Resource Access Manager (RAM) to share a query logging
972          * configuration with other accounts, you must stop sharing the configuration
973          * before you can delete a configuration. The accounts that you shared the
974          * configuration with can first disassociate VPCs that they associated with the
975          * configuration, but that's not necessary. If you stop sharing the configuration,
976          * those VPCs are automatically disassociated from the configuration.</p><p><h3>See
977          * Also:</h3>   <a
978          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteResolverQueryLogConfig">AWS
979          * API Reference</a></p>
980          *
981          * Queues the request into a thread executor and triggers associated callback when operation has finished.
982          */
983         virtual void DeleteResolverQueryLogConfigAsync(const Model::DeleteResolverQueryLogConfigRequest& request, const DeleteResolverQueryLogConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
984 
985         /**
986          * <p>Deletes a Resolver rule. Before you can delete a Resolver rule, you must
987          * disassociate it from all the VPCs that you associated the Resolver rule with.
988          * For more information, see <a
989          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverRule.html">DisassociateResolverRule</a>.</p><p><h3>See
990          * Also:</h3>   <a
991          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteResolverRule">AWS
992          * API Reference</a></p>
993          */
994         virtual Model::DeleteResolverRuleOutcome DeleteResolverRule(const Model::DeleteResolverRuleRequest& request) const;
995 
996         /**
997          * <p>Deletes a Resolver rule. Before you can delete a Resolver rule, you must
998          * disassociate it from all the VPCs that you associated the Resolver rule with.
999          * For more information, see <a
1000          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverRule.html">DisassociateResolverRule</a>.</p><p><h3>See
1001          * Also:</h3>   <a
1002          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteResolverRule">AWS
1003          * API Reference</a></p>
1004          *
1005          * returns a future to the operation so that it can be executed in parallel to other requests.
1006          */
1007         virtual Model::DeleteResolverRuleOutcomeCallable DeleteResolverRuleCallable(const Model::DeleteResolverRuleRequest& request) const;
1008 
1009         /**
1010          * <p>Deletes a Resolver rule. Before you can delete a Resolver rule, you must
1011          * disassociate it from all the VPCs that you associated the Resolver rule with.
1012          * For more information, see <a
1013          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverRule.html">DisassociateResolverRule</a>.</p><p><h3>See
1014          * Also:</h3>   <a
1015          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteResolverRule">AWS
1016          * API Reference</a></p>
1017          *
1018          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1019          */
1020         virtual void DeleteResolverRuleAsync(const Model::DeleteResolverRuleRequest& request, const DeleteResolverRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1021 
1022         /**
1023          * <p>Disassociates a <a>FirewallRuleGroup</a> from a VPC, to remove DNS filtering
1024          * from the VPC. </p><p><h3>See Also:</h3>   <a
1025          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DisassociateFirewallRuleGroup">AWS
1026          * API Reference</a></p>
1027          */
1028         virtual Model::DisassociateFirewallRuleGroupOutcome DisassociateFirewallRuleGroup(const Model::DisassociateFirewallRuleGroupRequest& request) const;
1029 
1030         /**
1031          * <p>Disassociates a <a>FirewallRuleGroup</a> from a VPC, to remove DNS filtering
1032          * from the VPC. </p><p><h3>See Also:</h3>   <a
1033          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DisassociateFirewallRuleGroup">AWS
1034          * API Reference</a></p>
1035          *
1036          * returns a future to the operation so that it can be executed in parallel to other requests.
1037          */
1038         virtual Model::DisassociateFirewallRuleGroupOutcomeCallable DisassociateFirewallRuleGroupCallable(const Model::DisassociateFirewallRuleGroupRequest& request) const;
1039 
1040         /**
1041          * <p>Disassociates a <a>FirewallRuleGroup</a> from a VPC, to remove DNS filtering
1042          * from the VPC. </p><p><h3>See Also:</h3>   <a
1043          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DisassociateFirewallRuleGroup">AWS
1044          * API Reference</a></p>
1045          *
1046          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1047          */
1048         virtual void DisassociateFirewallRuleGroupAsync(const Model::DisassociateFirewallRuleGroupRequest& request, const DisassociateFirewallRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1049 
1050         /**
1051          * <p>Removes IP addresses from an inbound or an outbound Resolver endpoint. If you
1052          * want to remove more than one IP address, submit one
1053          * <code>DisassociateResolverEndpointIpAddress</code> request for each IP
1054          * address.</p> <p>To add an IP address to an endpoint, see <a
1055          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_AssociateResolverEndpointIpAddress.html">AssociateResolverEndpointIpAddress</a>.
1056          * </p><p><h3>See Also:</h3>   <a
1057          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DisassociateResolverEndpointIpAddress">AWS
1058          * API Reference</a></p>
1059          */
1060         virtual Model::DisassociateResolverEndpointIpAddressOutcome DisassociateResolverEndpointIpAddress(const Model::DisassociateResolverEndpointIpAddressRequest& request) const;
1061 
1062         /**
1063          * <p>Removes IP addresses from an inbound or an outbound Resolver endpoint. If you
1064          * want to remove more than one IP address, submit one
1065          * <code>DisassociateResolverEndpointIpAddress</code> request for each IP
1066          * address.</p> <p>To add an IP address to an endpoint, see <a
1067          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_AssociateResolverEndpointIpAddress.html">AssociateResolverEndpointIpAddress</a>.
1068          * </p><p><h3>See Also:</h3>   <a
1069          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DisassociateResolverEndpointIpAddress">AWS
1070          * API Reference</a></p>
1071          *
1072          * returns a future to the operation so that it can be executed in parallel to other requests.
1073          */
1074         virtual Model::DisassociateResolverEndpointIpAddressOutcomeCallable DisassociateResolverEndpointIpAddressCallable(const Model::DisassociateResolverEndpointIpAddressRequest& request) const;
1075 
1076         /**
1077          * <p>Removes IP addresses from an inbound or an outbound Resolver endpoint. If you
1078          * want to remove more than one IP address, submit one
1079          * <code>DisassociateResolverEndpointIpAddress</code> request for each IP
1080          * address.</p> <p>To add an IP address to an endpoint, see <a
1081          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_AssociateResolverEndpointIpAddress.html">AssociateResolverEndpointIpAddress</a>.
1082          * </p><p><h3>See Also:</h3>   <a
1083          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DisassociateResolverEndpointIpAddress">AWS
1084          * API Reference</a></p>
1085          *
1086          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1087          */
1088         virtual void DisassociateResolverEndpointIpAddressAsync(const Model::DisassociateResolverEndpointIpAddressRequest& request, const DisassociateResolverEndpointIpAddressResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1089 
1090         /**
1091          * <p>Disassociates a VPC from a query logging configuration.</p>  <p>Before
1092          * you can delete a query logging configuration, you must first disassociate all
1093          * VPCs from the configuration. If you used Resource Access Manager (RAM) to share
1094          * a query logging configuration with other accounts, VPCs can be disassociated
1095          * from the configuration in the following ways:</p> <ul> <li> <p>The accounts that
1096          * you shared the configuration with can disassociate VPCs from the
1097          * configuration.</p> </li> <li> <p>You can stop sharing the configuration.</p>
1098          * </li> </ul> <p><h3>See Also:</h3>   <a
1099          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DisassociateResolverQueryLogConfig">AWS
1100          * API Reference</a></p>
1101          */
1102         virtual Model::DisassociateResolverQueryLogConfigOutcome DisassociateResolverQueryLogConfig(const Model::DisassociateResolverQueryLogConfigRequest& request) const;
1103 
1104         /**
1105          * <p>Disassociates a VPC from a query logging configuration.</p>  <p>Before
1106          * you can delete a query logging configuration, you must first disassociate all
1107          * VPCs from the configuration. If you used Resource Access Manager (RAM) to share
1108          * a query logging configuration with other accounts, VPCs can be disassociated
1109          * from the configuration in the following ways:</p> <ul> <li> <p>The accounts that
1110          * you shared the configuration with can disassociate VPCs from the
1111          * configuration.</p> </li> <li> <p>You can stop sharing the configuration.</p>
1112          * </li> </ul> <p><h3>See Also:</h3>   <a
1113          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DisassociateResolverQueryLogConfig">AWS
1114          * API Reference</a></p>
1115          *
1116          * returns a future to the operation so that it can be executed in parallel to other requests.
1117          */
1118         virtual Model::DisassociateResolverQueryLogConfigOutcomeCallable DisassociateResolverQueryLogConfigCallable(const Model::DisassociateResolverQueryLogConfigRequest& request) const;
1119 
1120         /**
1121          * <p>Disassociates a VPC from a query logging configuration.</p>  <p>Before
1122          * you can delete a query logging configuration, you must first disassociate all
1123          * VPCs from the configuration. If you used Resource Access Manager (RAM) to share
1124          * a query logging configuration with other accounts, VPCs can be disassociated
1125          * from the configuration in the following ways:</p> <ul> <li> <p>The accounts that
1126          * you shared the configuration with can disassociate VPCs from the
1127          * configuration.</p> </li> <li> <p>You can stop sharing the configuration.</p>
1128          * </li> </ul> <p><h3>See Also:</h3>   <a
1129          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DisassociateResolverQueryLogConfig">AWS
1130          * API Reference</a></p>
1131          *
1132          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1133          */
1134         virtual void DisassociateResolverQueryLogConfigAsync(const Model::DisassociateResolverQueryLogConfigRequest& request, const DisassociateResolverQueryLogConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1135 
1136         /**
1137          * <p>Removes the association between a specified Resolver rule and a specified
1138          * VPC.</p>  <p>If you disassociate a Resolver rule from a VPC, Resolver
1139          * stops forwarding DNS queries for the domain name that you specified in the
1140          * Resolver rule. </p> <p><h3>See Also:</h3>   <a
1141          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DisassociateResolverRule">AWS
1142          * API Reference</a></p>
1143          */
1144         virtual Model::DisassociateResolverRuleOutcome DisassociateResolverRule(const Model::DisassociateResolverRuleRequest& request) const;
1145 
1146         /**
1147          * <p>Removes the association between a specified Resolver rule and a specified
1148          * VPC.</p>  <p>If you disassociate a Resolver rule from a VPC, Resolver
1149          * stops forwarding DNS queries for the domain name that you specified in the
1150          * Resolver rule. </p> <p><h3>See Also:</h3>   <a
1151          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DisassociateResolverRule">AWS
1152          * API Reference</a></p>
1153          *
1154          * returns a future to the operation so that it can be executed in parallel to other requests.
1155          */
1156         virtual Model::DisassociateResolverRuleOutcomeCallable DisassociateResolverRuleCallable(const Model::DisassociateResolverRuleRequest& request) const;
1157 
1158         /**
1159          * <p>Removes the association between a specified Resolver rule and a specified
1160          * VPC.</p>  <p>If you disassociate a Resolver rule from a VPC, Resolver
1161          * stops forwarding DNS queries for the domain name that you specified in the
1162          * Resolver rule. </p> <p><h3>See Also:</h3>   <a
1163          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DisassociateResolverRule">AWS
1164          * API Reference</a></p>
1165          *
1166          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1167          */
1168         virtual void DisassociateResolverRuleAsync(const Model::DisassociateResolverRuleRequest& request, const DisassociateResolverRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1169 
1170         /**
1171          * <p>Retrieves the configuration of the firewall behavior provided by DNS Firewall
1172          * for a single VPC from Amazon Virtual Private Cloud (Amazon VPC). </p><p><h3>See
1173          * Also:</h3>   <a
1174          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallConfig">AWS
1175          * API Reference</a></p>
1176          */
1177         virtual Model::GetFirewallConfigOutcome GetFirewallConfig(const Model::GetFirewallConfigRequest& request) const;
1178 
1179         /**
1180          * <p>Retrieves the configuration of the firewall behavior provided by DNS Firewall
1181          * for a single VPC from Amazon Virtual Private Cloud (Amazon VPC). </p><p><h3>See
1182          * Also:</h3>   <a
1183          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallConfig">AWS
1184          * API Reference</a></p>
1185          *
1186          * returns a future to the operation so that it can be executed in parallel to other requests.
1187          */
1188         virtual Model::GetFirewallConfigOutcomeCallable GetFirewallConfigCallable(const Model::GetFirewallConfigRequest& request) const;
1189 
1190         /**
1191          * <p>Retrieves the configuration of the firewall behavior provided by DNS Firewall
1192          * for a single VPC from Amazon Virtual Private Cloud (Amazon VPC). </p><p><h3>See
1193          * Also:</h3>   <a
1194          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallConfig">AWS
1195          * API Reference</a></p>
1196          *
1197          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1198          */
1199         virtual void GetFirewallConfigAsync(const Model::GetFirewallConfigRequest& request, const GetFirewallConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1200 
1201         /**
1202          * <p>Retrieves the specified firewall domain list.</p><p><h3>See Also:</h3>   <a
1203          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallDomainList">AWS
1204          * API Reference</a></p>
1205          */
1206         virtual Model::GetFirewallDomainListOutcome GetFirewallDomainList(const Model::GetFirewallDomainListRequest& request) const;
1207 
1208         /**
1209          * <p>Retrieves the specified firewall domain list.</p><p><h3>See Also:</h3>   <a
1210          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallDomainList">AWS
1211          * API Reference</a></p>
1212          *
1213          * returns a future to the operation so that it can be executed in parallel to other requests.
1214          */
1215         virtual Model::GetFirewallDomainListOutcomeCallable GetFirewallDomainListCallable(const Model::GetFirewallDomainListRequest& request) const;
1216 
1217         /**
1218          * <p>Retrieves the specified firewall domain list.</p><p><h3>See Also:</h3>   <a
1219          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallDomainList">AWS
1220          * API Reference</a></p>
1221          *
1222          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1223          */
1224         virtual void GetFirewallDomainListAsync(const Model::GetFirewallDomainListRequest& request, const GetFirewallDomainListResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1225 
1226         /**
1227          * <p>Retrieves the specified firewall rule group. </p><p><h3>See Also:</h3>   <a
1228          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallRuleGroup">AWS
1229          * API Reference</a></p>
1230          */
1231         virtual Model::GetFirewallRuleGroupOutcome GetFirewallRuleGroup(const Model::GetFirewallRuleGroupRequest& request) const;
1232 
1233         /**
1234          * <p>Retrieves the specified firewall rule group. </p><p><h3>See Also:</h3>   <a
1235          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallRuleGroup">AWS
1236          * API Reference</a></p>
1237          *
1238          * returns a future to the operation so that it can be executed in parallel to other requests.
1239          */
1240         virtual Model::GetFirewallRuleGroupOutcomeCallable GetFirewallRuleGroupCallable(const Model::GetFirewallRuleGroupRequest& request) const;
1241 
1242         /**
1243          * <p>Retrieves the specified firewall rule group. </p><p><h3>See Also:</h3>   <a
1244          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallRuleGroup">AWS
1245          * API Reference</a></p>
1246          *
1247          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1248          */
1249         virtual void GetFirewallRuleGroupAsync(const Model::GetFirewallRuleGroupRequest& request, const GetFirewallRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1250 
1251         /**
1252          * <p>Retrieves a firewall rule group association, which enables DNS filtering for
1253          * a VPC with one rule group. A VPC can have more than one firewall rule group
1254          * association, and a rule group can be associated with more than one
1255          * VPC.</p><p><h3>See Also:</h3>   <a
1256          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallRuleGroupAssociation">AWS
1257          * API Reference</a></p>
1258          */
1259         virtual Model::GetFirewallRuleGroupAssociationOutcome GetFirewallRuleGroupAssociation(const Model::GetFirewallRuleGroupAssociationRequest& request) const;
1260 
1261         /**
1262          * <p>Retrieves a firewall rule group association, which enables DNS filtering for
1263          * a VPC with one rule group. A VPC can have more than one firewall rule group
1264          * association, and a rule group can be associated with more than one
1265          * VPC.</p><p><h3>See Also:</h3>   <a
1266          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallRuleGroupAssociation">AWS
1267          * API Reference</a></p>
1268          *
1269          * returns a future to the operation so that it can be executed in parallel to other requests.
1270          */
1271         virtual Model::GetFirewallRuleGroupAssociationOutcomeCallable GetFirewallRuleGroupAssociationCallable(const Model::GetFirewallRuleGroupAssociationRequest& request) const;
1272 
1273         /**
1274          * <p>Retrieves a firewall rule group association, which enables DNS filtering for
1275          * a VPC with one rule group. A VPC can have more than one firewall rule group
1276          * association, and a rule group can be associated with more than one
1277          * VPC.</p><p><h3>See Also:</h3>   <a
1278          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallRuleGroupAssociation">AWS
1279          * API Reference</a></p>
1280          *
1281          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1282          */
1283         virtual void GetFirewallRuleGroupAssociationAsync(const Model::GetFirewallRuleGroupAssociationRequest& request, const GetFirewallRuleGroupAssociationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1284 
1285         /**
1286          * <p>Returns the Identity and Access Management (Amazon Web Services IAM) policy
1287          * for sharing the specified rule group. You can use the policy to share the rule
1288          * group using Resource Access Manager (RAM). </p><p><h3>See Also:</h3>   <a
1289          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallRuleGroupPolicy">AWS
1290          * API Reference</a></p>
1291          */
1292         virtual Model::GetFirewallRuleGroupPolicyOutcome GetFirewallRuleGroupPolicy(const Model::GetFirewallRuleGroupPolicyRequest& request) const;
1293 
1294         /**
1295          * <p>Returns the Identity and Access Management (Amazon Web Services IAM) policy
1296          * for sharing the specified rule group. You can use the policy to share the rule
1297          * group using Resource Access Manager (RAM). </p><p><h3>See Also:</h3>   <a
1298          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallRuleGroupPolicy">AWS
1299          * API Reference</a></p>
1300          *
1301          * returns a future to the operation so that it can be executed in parallel to other requests.
1302          */
1303         virtual Model::GetFirewallRuleGroupPolicyOutcomeCallable GetFirewallRuleGroupPolicyCallable(const Model::GetFirewallRuleGroupPolicyRequest& request) const;
1304 
1305         /**
1306          * <p>Returns the Identity and Access Management (Amazon Web Services IAM) policy
1307          * for sharing the specified rule group. You can use the policy to share the rule
1308          * group using Resource Access Manager (RAM). </p><p><h3>See Also:</h3>   <a
1309          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetFirewallRuleGroupPolicy">AWS
1310          * API Reference</a></p>
1311          *
1312          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1313          */
1314         virtual void GetFirewallRuleGroupPolicyAsync(const Model::GetFirewallRuleGroupPolicyRequest& request, const GetFirewallRuleGroupPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1315 
1316         /**
1317          * <p>Gets DNSSEC validation information for a specified resource.</p><p><h3>See
1318          * Also:</h3>   <a
1319          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverDnssecConfig">AWS
1320          * API Reference</a></p>
1321          */
1322         virtual Model::GetResolverDnssecConfigOutcome GetResolverDnssecConfig(const Model::GetResolverDnssecConfigRequest& request) const;
1323 
1324         /**
1325          * <p>Gets DNSSEC validation information for a specified resource.</p><p><h3>See
1326          * Also:</h3>   <a
1327          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverDnssecConfig">AWS
1328          * API Reference</a></p>
1329          *
1330          * returns a future to the operation so that it can be executed in parallel to other requests.
1331          */
1332         virtual Model::GetResolverDnssecConfigOutcomeCallable GetResolverDnssecConfigCallable(const Model::GetResolverDnssecConfigRequest& request) const;
1333 
1334         /**
1335          * <p>Gets DNSSEC validation information for a specified resource.</p><p><h3>See
1336          * Also:</h3>   <a
1337          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverDnssecConfig">AWS
1338          * API Reference</a></p>
1339          *
1340          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1341          */
1342         virtual void GetResolverDnssecConfigAsync(const Model::GetResolverDnssecConfigRequest& request, const GetResolverDnssecConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1343 
1344         /**
1345          * <p>Gets information about a specified Resolver endpoint, such as whether it's an
1346          * inbound or an outbound Resolver endpoint, and the current status of the
1347          * endpoint.</p><p><h3>See Also:</h3>   <a
1348          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverEndpoint">AWS
1349          * API Reference</a></p>
1350          */
1351         virtual Model::GetResolverEndpointOutcome GetResolverEndpoint(const Model::GetResolverEndpointRequest& request) const;
1352 
1353         /**
1354          * <p>Gets information about a specified Resolver endpoint, such as whether it's an
1355          * inbound or an outbound Resolver endpoint, and the current status of the
1356          * endpoint.</p><p><h3>See Also:</h3>   <a
1357          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverEndpoint">AWS
1358          * API Reference</a></p>
1359          *
1360          * returns a future to the operation so that it can be executed in parallel to other requests.
1361          */
1362         virtual Model::GetResolverEndpointOutcomeCallable GetResolverEndpointCallable(const Model::GetResolverEndpointRequest& request) const;
1363 
1364         /**
1365          * <p>Gets information about a specified Resolver endpoint, such as whether it's an
1366          * inbound or an outbound Resolver endpoint, and the current status of the
1367          * endpoint.</p><p><h3>See Also:</h3>   <a
1368          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverEndpoint">AWS
1369          * API Reference</a></p>
1370          *
1371          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1372          */
1373         virtual void GetResolverEndpointAsync(const Model::GetResolverEndpointRequest& request, const GetResolverEndpointResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1374 
1375         /**
1376          * <p>Gets information about a specified Resolver query logging configuration, such
1377          * as the number of VPCs that the configuration is logging queries for and the
1378          * location that logs are sent to. </p><p><h3>See Also:</h3>   <a
1379          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverQueryLogConfig">AWS
1380          * API Reference</a></p>
1381          */
1382         virtual Model::GetResolverQueryLogConfigOutcome GetResolverQueryLogConfig(const Model::GetResolverQueryLogConfigRequest& request) const;
1383 
1384         /**
1385          * <p>Gets information about a specified Resolver query logging configuration, such
1386          * as the number of VPCs that the configuration is logging queries for and the
1387          * location that logs are sent to. </p><p><h3>See Also:</h3>   <a
1388          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverQueryLogConfig">AWS
1389          * API Reference</a></p>
1390          *
1391          * returns a future to the operation so that it can be executed in parallel to other requests.
1392          */
1393         virtual Model::GetResolverQueryLogConfigOutcomeCallable GetResolverQueryLogConfigCallable(const Model::GetResolverQueryLogConfigRequest& request) const;
1394 
1395         /**
1396          * <p>Gets information about a specified Resolver query logging configuration, such
1397          * as the number of VPCs that the configuration is logging queries for and the
1398          * location that logs are sent to. </p><p><h3>See Also:</h3>   <a
1399          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverQueryLogConfig">AWS
1400          * API Reference</a></p>
1401          *
1402          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1403          */
1404         virtual void GetResolverQueryLogConfigAsync(const Model::GetResolverQueryLogConfigRequest& request, const GetResolverQueryLogConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1405 
1406         /**
1407          * <p>Gets information about a specified association between a Resolver query
1408          * logging configuration and an Amazon VPC. When you associate a VPC with a query
1409          * logging configuration, Resolver logs DNS queries that originate in that
1410          * VPC.</p><p><h3>See Also:</h3>   <a
1411          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverQueryLogConfigAssociation">AWS
1412          * API Reference</a></p>
1413          */
1414         virtual Model::GetResolverQueryLogConfigAssociationOutcome GetResolverQueryLogConfigAssociation(const Model::GetResolverQueryLogConfigAssociationRequest& request) const;
1415 
1416         /**
1417          * <p>Gets information about a specified association between a Resolver query
1418          * logging configuration and an Amazon VPC. When you associate a VPC with a query
1419          * logging configuration, Resolver logs DNS queries that originate in that
1420          * VPC.</p><p><h3>See Also:</h3>   <a
1421          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverQueryLogConfigAssociation">AWS
1422          * API Reference</a></p>
1423          *
1424          * returns a future to the operation so that it can be executed in parallel to other requests.
1425          */
1426         virtual Model::GetResolverQueryLogConfigAssociationOutcomeCallable GetResolverQueryLogConfigAssociationCallable(const Model::GetResolverQueryLogConfigAssociationRequest& request) const;
1427 
1428         /**
1429          * <p>Gets information about a specified association between a Resolver query
1430          * logging configuration and an Amazon VPC. When you associate a VPC with a query
1431          * logging configuration, Resolver logs DNS queries that originate in that
1432          * VPC.</p><p><h3>See Also:</h3>   <a
1433          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverQueryLogConfigAssociation">AWS
1434          * API Reference</a></p>
1435          *
1436          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1437          */
1438         virtual void GetResolverQueryLogConfigAssociationAsync(const Model::GetResolverQueryLogConfigAssociationRequest& request, const GetResolverQueryLogConfigAssociationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1439 
1440         /**
1441          * <p>Gets information about a query logging policy. A query logging policy
1442          * specifies the Resolver query logging operations and resources that you want to
1443          * allow another Amazon Web Services account to be able to use.</p><p><h3>See
1444          * Also:</h3>   <a
1445          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverQueryLogConfigPolicy">AWS
1446          * API Reference</a></p>
1447          */
1448         virtual Model::GetResolverQueryLogConfigPolicyOutcome GetResolverQueryLogConfigPolicy(const Model::GetResolverQueryLogConfigPolicyRequest& request) const;
1449 
1450         /**
1451          * <p>Gets information about a query logging policy. A query logging policy
1452          * specifies the Resolver query logging operations and resources that you want to
1453          * allow another Amazon Web Services account to be able to use.</p><p><h3>See
1454          * Also:</h3>   <a
1455          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverQueryLogConfigPolicy">AWS
1456          * API Reference</a></p>
1457          *
1458          * returns a future to the operation so that it can be executed in parallel to other requests.
1459          */
1460         virtual Model::GetResolverQueryLogConfigPolicyOutcomeCallable GetResolverQueryLogConfigPolicyCallable(const Model::GetResolverQueryLogConfigPolicyRequest& request) const;
1461 
1462         /**
1463          * <p>Gets information about a query logging policy. A query logging policy
1464          * specifies the Resolver query logging operations and resources that you want to
1465          * allow another Amazon Web Services account to be able to use.</p><p><h3>See
1466          * Also:</h3>   <a
1467          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverQueryLogConfigPolicy">AWS
1468          * API Reference</a></p>
1469          *
1470          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1471          */
1472         virtual void GetResolverQueryLogConfigPolicyAsync(const Model::GetResolverQueryLogConfigPolicyRequest& request, const GetResolverQueryLogConfigPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1473 
1474         /**
1475          * <p>Gets information about a specified Resolver rule, such as the domain name
1476          * that the rule forwards DNS queries for and the ID of the outbound Resolver
1477          * endpoint that the rule is associated with.</p><p><h3>See Also:</h3>   <a
1478          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverRule">AWS
1479          * API Reference</a></p>
1480          */
1481         virtual Model::GetResolverRuleOutcome GetResolverRule(const Model::GetResolverRuleRequest& request) const;
1482 
1483         /**
1484          * <p>Gets information about a specified Resolver rule, such as the domain name
1485          * that the rule forwards DNS queries for and the ID of the outbound Resolver
1486          * endpoint that the rule is associated with.</p><p><h3>See Also:</h3>   <a
1487          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverRule">AWS
1488          * API Reference</a></p>
1489          *
1490          * returns a future to the operation so that it can be executed in parallel to other requests.
1491          */
1492         virtual Model::GetResolverRuleOutcomeCallable GetResolverRuleCallable(const Model::GetResolverRuleRequest& request) const;
1493 
1494         /**
1495          * <p>Gets information about a specified Resolver rule, such as the domain name
1496          * that the rule forwards DNS queries for and the ID of the outbound Resolver
1497          * endpoint that the rule is associated with.</p><p><h3>See Also:</h3>   <a
1498          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverRule">AWS
1499          * API Reference</a></p>
1500          *
1501          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1502          */
1503         virtual void GetResolverRuleAsync(const Model::GetResolverRuleRequest& request, const GetResolverRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1504 
1505         /**
1506          * <p>Gets information about an association between a specified Resolver rule and a
1507          * VPC. You associate a Resolver rule and a VPC using <a
1508          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_AssociateResolverRule.html">AssociateResolverRule</a>.
1509          * </p><p><h3>See Also:</h3>   <a
1510          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverRuleAssociation">AWS
1511          * API Reference</a></p>
1512          */
1513         virtual Model::GetResolverRuleAssociationOutcome GetResolverRuleAssociation(const Model::GetResolverRuleAssociationRequest& request) const;
1514 
1515         /**
1516          * <p>Gets information about an association between a specified Resolver rule and a
1517          * VPC. You associate a Resolver rule and a VPC using <a
1518          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_AssociateResolverRule.html">AssociateResolverRule</a>.
1519          * </p><p><h3>See Also:</h3>   <a
1520          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverRuleAssociation">AWS
1521          * API Reference</a></p>
1522          *
1523          * returns a future to the operation so that it can be executed in parallel to other requests.
1524          */
1525         virtual Model::GetResolverRuleAssociationOutcomeCallable GetResolverRuleAssociationCallable(const Model::GetResolverRuleAssociationRequest& request) const;
1526 
1527         /**
1528          * <p>Gets information about an association between a specified Resolver rule and a
1529          * VPC. You associate a Resolver rule and a VPC using <a
1530          * href="https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_AssociateResolverRule.html">AssociateResolverRule</a>.
1531          * </p><p><h3>See Also:</h3>   <a
1532          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverRuleAssociation">AWS
1533          * API Reference</a></p>
1534          *
1535          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1536          */
1537         virtual void GetResolverRuleAssociationAsync(const Model::GetResolverRuleAssociationRequest& request, const GetResolverRuleAssociationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1538 
1539         /**
1540          * <p>Gets information about the Resolver rule policy for a specified rule. A
1541          * Resolver rule policy includes the rule that you want to share with another
1542          * account, the account that you want to share the rule with, and the Resolver
1543          * operations that you want to allow the account to use. </p><p><h3>See Also:</h3>
1544          * <a
1545          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverRulePolicy">AWS
1546          * API Reference</a></p>
1547          */
1548         virtual Model::GetResolverRulePolicyOutcome GetResolverRulePolicy(const Model::GetResolverRulePolicyRequest& request) const;
1549 
1550         /**
1551          * <p>Gets information about the Resolver rule policy for a specified rule. A
1552          * Resolver rule policy includes the rule that you want to share with another
1553          * account, the account that you want to share the rule with, and the Resolver
1554          * operations that you want to allow the account to use. </p><p><h3>See Also:</h3>
1555          * <a
1556          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverRulePolicy">AWS
1557          * API Reference</a></p>
1558          *
1559          * returns a future to the operation so that it can be executed in parallel to other requests.
1560          */
1561         virtual Model::GetResolverRulePolicyOutcomeCallable GetResolverRulePolicyCallable(const Model::GetResolverRulePolicyRequest& request) const;
1562 
1563         /**
1564          * <p>Gets information about the Resolver rule policy for a specified rule. A
1565          * Resolver rule policy includes the rule that you want to share with another
1566          * account, the account that you want to share the rule with, and the Resolver
1567          * operations that you want to allow the account to use. </p><p><h3>See Also:</h3>
1568          * <a
1569          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverRulePolicy">AWS
1570          * API Reference</a></p>
1571          *
1572          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1573          */
1574         virtual void GetResolverRulePolicyAsync(const Model::GetResolverRulePolicyRequest& request, const GetResolverRulePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1575 
1576         /**
1577          * <p>Imports domain names from a file into a domain list, for use in a DNS
1578          * firewall rule group. </p> <p>Each domain specification in your domain list must
1579          * satisfy the following requirements: </p> <ul> <li> <p>It can optionally start
1580          * with <code>*</code> (asterisk).</p> </li> <li> <p>With the exception of the
1581          * optional starting asterisk, it must only contain the following characters:
1582          * <code>A-Z</code>, <code>a-z</code>, <code>0-9</code>, <code>-</code>
1583          * (hyphen).</p> </li> <li> <p>It must be from 1-255 characters in length. </p>
1584          * </li> </ul><p><h3>See Also:</h3>   <a
1585          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ImportFirewallDomains">AWS
1586          * API Reference</a></p>
1587          */
1588         virtual Model::ImportFirewallDomainsOutcome ImportFirewallDomains(const Model::ImportFirewallDomainsRequest& request) const;
1589 
1590         /**
1591          * <p>Imports domain names from a file into a domain list, for use in a DNS
1592          * firewall rule group. </p> <p>Each domain specification in your domain list must
1593          * satisfy the following requirements: </p> <ul> <li> <p>It can optionally start
1594          * with <code>*</code> (asterisk).</p> </li> <li> <p>With the exception of the
1595          * optional starting asterisk, it must only contain the following characters:
1596          * <code>A-Z</code>, <code>a-z</code>, <code>0-9</code>, <code>-</code>
1597          * (hyphen).</p> </li> <li> <p>It must be from 1-255 characters in length. </p>
1598          * </li> </ul><p><h3>See Also:</h3>   <a
1599          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ImportFirewallDomains">AWS
1600          * API Reference</a></p>
1601          *
1602          * returns a future to the operation so that it can be executed in parallel to other requests.
1603          */
1604         virtual Model::ImportFirewallDomainsOutcomeCallable ImportFirewallDomainsCallable(const Model::ImportFirewallDomainsRequest& request) const;
1605 
1606         /**
1607          * <p>Imports domain names from a file into a domain list, for use in a DNS
1608          * firewall rule group. </p> <p>Each domain specification in your domain list must
1609          * satisfy the following requirements: </p> <ul> <li> <p>It can optionally start
1610          * with <code>*</code> (asterisk).</p> </li> <li> <p>With the exception of the
1611          * optional starting asterisk, it must only contain the following characters:
1612          * <code>A-Z</code>, <code>a-z</code>, <code>0-9</code>, <code>-</code>
1613          * (hyphen).</p> </li> <li> <p>It must be from 1-255 characters in length. </p>
1614          * </li> </ul><p><h3>See Also:</h3>   <a
1615          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ImportFirewallDomains">AWS
1616          * API Reference</a></p>
1617          *
1618          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1619          */
1620         virtual void ImportFirewallDomainsAsync(const Model::ImportFirewallDomainsRequest& request, const ImportFirewallDomainsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1621 
1622         /**
1623          * <p>Retrieves the firewall configurations that you have defined. DNS Firewall
1624          * uses the configurations to manage firewall behavior for your VPCs. </p> <p>A
1625          * single call might return only a partial list of the configurations. For
1626          * information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>   <a
1627          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallConfigs">AWS
1628          * API Reference</a></p>
1629          */
1630         virtual Model::ListFirewallConfigsOutcome ListFirewallConfigs(const Model::ListFirewallConfigsRequest& request) const;
1631 
1632         /**
1633          * <p>Retrieves the firewall configurations that you have defined. DNS Firewall
1634          * uses the configurations to manage firewall behavior for your VPCs. </p> <p>A
1635          * single call might return only a partial list of the configurations. For
1636          * information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>   <a
1637          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallConfigs">AWS
1638          * API Reference</a></p>
1639          *
1640          * returns a future to the operation so that it can be executed in parallel to other requests.
1641          */
1642         virtual Model::ListFirewallConfigsOutcomeCallable ListFirewallConfigsCallable(const Model::ListFirewallConfigsRequest& request) const;
1643 
1644         /**
1645          * <p>Retrieves the firewall configurations that you have defined. DNS Firewall
1646          * uses the configurations to manage firewall behavior for your VPCs. </p> <p>A
1647          * single call might return only a partial list of the configurations. For
1648          * information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>   <a
1649          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallConfigs">AWS
1650          * API Reference</a></p>
1651          *
1652          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1653          */
1654         virtual void ListFirewallConfigsAsync(const Model::ListFirewallConfigsRequest& request, const ListFirewallConfigsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1655 
1656         /**
1657          * <p>Retrieves the firewall domain lists that you have defined. For each firewall
1658          * domain list, you can retrieve the domains that are defined for a list by calling
1659          * <a>ListFirewallDomains</a>. </p> <p>A single call to this list operation might
1660          * return only a partial list of the domain lists. For information, see
1661          * <code>MaxResults</code>. </p><p><h3>See Also:</h3>   <a
1662          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallDomainLists">AWS
1663          * API Reference</a></p>
1664          */
1665         virtual Model::ListFirewallDomainListsOutcome ListFirewallDomainLists(const Model::ListFirewallDomainListsRequest& request) const;
1666 
1667         /**
1668          * <p>Retrieves the firewall domain lists that you have defined. For each firewall
1669          * domain list, you can retrieve the domains that are defined for a list by calling
1670          * <a>ListFirewallDomains</a>. </p> <p>A single call to this list operation might
1671          * return only a partial list of the domain lists. For information, see
1672          * <code>MaxResults</code>. </p><p><h3>See Also:</h3>   <a
1673          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallDomainLists">AWS
1674          * API Reference</a></p>
1675          *
1676          * returns a future to the operation so that it can be executed in parallel to other requests.
1677          */
1678         virtual Model::ListFirewallDomainListsOutcomeCallable ListFirewallDomainListsCallable(const Model::ListFirewallDomainListsRequest& request) const;
1679 
1680         /**
1681          * <p>Retrieves the firewall domain lists that you have defined. For each firewall
1682          * domain list, you can retrieve the domains that are defined for a list by calling
1683          * <a>ListFirewallDomains</a>. </p> <p>A single call to this list operation might
1684          * return only a partial list of the domain lists. For information, see
1685          * <code>MaxResults</code>. </p><p><h3>See Also:</h3>   <a
1686          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallDomainLists">AWS
1687          * API Reference</a></p>
1688          *
1689          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1690          */
1691         virtual void ListFirewallDomainListsAsync(const Model::ListFirewallDomainListsRequest& request, const ListFirewallDomainListsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1692 
1693         /**
1694          * <p>Retrieves the domains that you have defined for the specified firewall domain
1695          * list. </p> <p>A single call might return only a partial list of the domains. For
1696          * information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>   <a
1697          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallDomains">AWS
1698          * API Reference</a></p>
1699          */
1700         virtual Model::ListFirewallDomainsOutcome ListFirewallDomains(const Model::ListFirewallDomainsRequest& request) const;
1701 
1702         /**
1703          * <p>Retrieves the domains that you have defined for the specified firewall domain
1704          * list. </p> <p>A single call might return only a partial list of the domains. For
1705          * information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>   <a
1706          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallDomains">AWS
1707          * API Reference</a></p>
1708          *
1709          * returns a future to the operation so that it can be executed in parallel to other requests.
1710          */
1711         virtual Model::ListFirewallDomainsOutcomeCallable ListFirewallDomainsCallable(const Model::ListFirewallDomainsRequest& request) const;
1712 
1713         /**
1714          * <p>Retrieves the domains that you have defined for the specified firewall domain
1715          * list. </p> <p>A single call might return only a partial list of the domains. For
1716          * information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>   <a
1717          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallDomains">AWS
1718          * API Reference</a></p>
1719          *
1720          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1721          */
1722         virtual void ListFirewallDomainsAsync(const Model::ListFirewallDomainsRequest& request, const ListFirewallDomainsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1723 
1724         /**
1725          * <p>Retrieves the firewall rule group associations that you have defined. Each
1726          * association enables DNS filtering for a VPC with one rule group. </p> <p>A
1727          * single call might return only a partial list of the associations. For
1728          * information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>   <a
1729          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallRuleGroupAssociations">AWS
1730          * API Reference</a></p>
1731          */
1732         virtual Model::ListFirewallRuleGroupAssociationsOutcome ListFirewallRuleGroupAssociations(const Model::ListFirewallRuleGroupAssociationsRequest& request) const;
1733 
1734         /**
1735          * <p>Retrieves the firewall rule group associations that you have defined. Each
1736          * association enables DNS filtering for a VPC with one rule group. </p> <p>A
1737          * single call might return only a partial list of the associations. For
1738          * information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>   <a
1739          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallRuleGroupAssociations">AWS
1740          * API Reference</a></p>
1741          *
1742          * returns a future to the operation so that it can be executed in parallel to other requests.
1743          */
1744         virtual Model::ListFirewallRuleGroupAssociationsOutcomeCallable ListFirewallRuleGroupAssociationsCallable(const Model::ListFirewallRuleGroupAssociationsRequest& request) const;
1745 
1746         /**
1747          * <p>Retrieves the firewall rule group associations that you have defined. Each
1748          * association enables DNS filtering for a VPC with one rule group. </p> <p>A
1749          * single call might return only a partial list of the associations. For
1750          * information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>   <a
1751          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallRuleGroupAssociations">AWS
1752          * API Reference</a></p>
1753          *
1754          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1755          */
1756         virtual void ListFirewallRuleGroupAssociationsAsync(const Model::ListFirewallRuleGroupAssociationsRequest& request, const ListFirewallRuleGroupAssociationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1757 
1758         /**
1759          * <p>Retrieves the minimal high-level information for the rule groups that you
1760          * have defined. </p> <p>A single call might return only a partial list of the rule
1761          * groups. For information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>
1762          * <a
1763          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallRuleGroups">AWS
1764          * API Reference</a></p>
1765          */
1766         virtual Model::ListFirewallRuleGroupsOutcome ListFirewallRuleGroups(const Model::ListFirewallRuleGroupsRequest& request) const;
1767 
1768         /**
1769          * <p>Retrieves the minimal high-level information for the rule groups that you
1770          * have defined. </p> <p>A single call might return only a partial list of the rule
1771          * groups. For information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>
1772          * <a
1773          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallRuleGroups">AWS
1774          * API Reference</a></p>
1775          *
1776          * returns a future to the operation so that it can be executed in parallel to other requests.
1777          */
1778         virtual Model::ListFirewallRuleGroupsOutcomeCallable ListFirewallRuleGroupsCallable(const Model::ListFirewallRuleGroupsRequest& request) const;
1779 
1780         /**
1781          * <p>Retrieves the minimal high-level information for the rule groups that you
1782          * have defined. </p> <p>A single call might return only a partial list of the rule
1783          * groups. For information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>
1784          * <a
1785          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallRuleGroups">AWS
1786          * API Reference</a></p>
1787          *
1788          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1789          */
1790         virtual void ListFirewallRuleGroupsAsync(const Model::ListFirewallRuleGroupsRequest& request, const ListFirewallRuleGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1791 
1792         /**
1793          * <p>Retrieves the firewall rules that you have defined for the specified firewall
1794          * rule group. DNS Firewall uses the rules in a rule group to filter DNS network
1795          * traffic for a VPC. </p> <p>A single call might return only a partial list of the
1796          * rules. For information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>
1797          * <a
1798          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallRules">AWS
1799          * API Reference</a></p>
1800          */
1801         virtual Model::ListFirewallRulesOutcome ListFirewallRules(const Model::ListFirewallRulesRequest& request) const;
1802 
1803         /**
1804          * <p>Retrieves the firewall rules that you have defined for the specified firewall
1805          * rule group. DNS Firewall uses the rules in a rule group to filter DNS network
1806          * traffic for a VPC. </p> <p>A single call might return only a partial list of the
1807          * rules. For information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>
1808          * <a
1809          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallRules">AWS
1810          * API Reference</a></p>
1811          *
1812          * returns a future to the operation so that it can be executed in parallel to other requests.
1813          */
1814         virtual Model::ListFirewallRulesOutcomeCallable ListFirewallRulesCallable(const Model::ListFirewallRulesRequest& request) const;
1815 
1816         /**
1817          * <p>Retrieves the firewall rules that you have defined for the specified firewall
1818          * rule group. DNS Firewall uses the rules in a rule group to filter DNS network
1819          * traffic for a VPC. </p> <p>A single call might return only a partial list of the
1820          * rules. For information, see <code>MaxResults</code>. </p><p><h3>See Also:</h3>
1821          * <a
1822          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallRules">AWS
1823          * API Reference</a></p>
1824          *
1825          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1826          */
1827         virtual void ListFirewallRulesAsync(const Model::ListFirewallRulesRequest& request, const ListFirewallRulesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1828 
1829         /**
1830          * <p>Lists the configurations for DNSSEC validation that are associated with the
1831          * current Amazon Web Services account.</p><p><h3>See Also:</h3>   <a
1832          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverDnssecConfigs">AWS
1833          * API Reference</a></p>
1834          */
1835         virtual Model::ListResolverDnssecConfigsOutcome ListResolverDnssecConfigs(const Model::ListResolverDnssecConfigsRequest& request) const;
1836 
1837         /**
1838          * <p>Lists the configurations for DNSSEC validation that are associated with the
1839          * current Amazon Web Services account.</p><p><h3>See Also:</h3>   <a
1840          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverDnssecConfigs">AWS
1841          * API Reference</a></p>
1842          *
1843          * returns a future to the operation so that it can be executed in parallel to other requests.
1844          */
1845         virtual Model::ListResolverDnssecConfigsOutcomeCallable ListResolverDnssecConfigsCallable(const Model::ListResolverDnssecConfigsRequest& request) const;
1846 
1847         /**
1848          * <p>Lists the configurations for DNSSEC validation that are associated with the
1849          * current Amazon Web Services account.</p><p><h3>See Also:</h3>   <a
1850          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverDnssecConfigs">AWS
1851          * API Reference</a></p>
1852          *
1853          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1854          */
1855         virtual void ListResolverDnssecConfigsAsync(const Model::ListResolverDnssecConfigsRequest& request, const ListResolverDnssecConfigsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1856 
1857         /**
1858          * <p>Gets the IP addresses for a specified Resolver endpoint.</p><p><h3>See
1859          * Also:</h3>   <a
1860          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverEndpointIpAddresses">AWS
1861          * API Reference</a></p>
1862          */
1863         virtual Model::ListResolverEndpointIpAddressesOutcome ListResolverEndpointIpAddresses(const Model::ListResolverEndpointIpAddressesRequest& request) const;
1864 
1865         /**
1866          * <p>Gets the IP addresses for a specified Resolver endpoint.</p><p><h3>See
1867          * Also:</h3>   <a
1868          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverEndpointIpAddresses">AWS
1869          * API Reference</a></p>
1870          *
1871          * returns a future to the operation so that it can be executed in parallel to other requests.
1872          */
1873         virtual Model::ListResolverEndpointIpAddressesOutcomeCallable ListResolverEndpointIpAddressesCallable(const Model::ListResolverEndpointIpAddressesRequest& request) const;
1874 
1875         /**
1876          * <p>Gets the IP addresses for a specified Resolver endpoint.</p><p><h3>See
1877          * Also:</h3>   <a
1878          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverEndpointIpAddresses">AWS
1879          * API Reference</a></p>
1880          *
1881          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1882          */
1883         virtual void ListResolverEndpointIpAddressesAsync(const Model::ListResolverEndpointIpAddressesRequest& request, const ListResolverEndpointIpAddressesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1884 
1885         /**
1886          * <p>Lists all the Resolver endpoints that were created using the current Amazon
1887          * Web Services account.</p><p><h3>See Also:</h3>   <a
1888          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverEndpoints">AWS
1889          * API Reference</a></p>
1890          */
1891         virtual Model::ListResolverEndpointsOutcome ListResolverEndpoints(const Model::ListResolverEndpointsRequest& request) const;
1892 
1893         /**
1894          * <p>Lists all the Resolver endpoints that were created using the current Amazon
1895          * Web Services account.</p><p><h3>See Also:</h3>   <a
1896          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverEndpoints">AWS
1897          * API Reference</a></p>
1898          *
1899          * returns a future to the operation so that it can be executed in parallel to other requests.
1900          */
1901         virtual Model::ListResolverEndpointsOutcomeCallable ListResolverEndpointsCallable(const Model::ListResolverEndpointsRequest& request) const;
1902 
1903         /**
1904          * <p>Lists all the Resolver endpoints that were created using the current Amazon
1905          * Web Services account.</p><p><h3>See Also:</h3>   <a
1906          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverEndpoints">AWS
1907          * API Reference</a></p>
1908          *
1909          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1910          */
1911         virtual void ListResolverEndpointsAsync(const Model::ListResolverEndpointsRequest& request, const ListResolverEndpointsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1912 
1913         /**
1914          * <p>Lists information about associations between Amazon VPCs and query logging
1915          * configurations.</p><p><h3>See Also:</h3>   <a
1916          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverQueryLogConfigAssociations">AWS
1917          * API Reference</a></p>
1918          */
1919         virtual Model::ListResolverQueryLogConfigAssociationsOutcome ListResolverQueryLogConfigAssociations(const Model::ListResolverQueryLogConfigAssociationsRequest& request) const;
1920 
1921         /**
1922          * <p>Lists information about associations between Amazon VPCs and query logging
1923          * configurations.</p><p><h3>See Also:</h3>   <a
1924          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverQueryLogConfigAssociations">AWS
1925          * API Reference</a></p>
1926          *
1927          * returns a future to the operation so that it can be executed in parallel to other requests.
1928          */
1929         virtual Model::ListResolverQueryLogConfigAssociationsOutcomeCallable ListResolverQueryLogConfigAssociationsCallable(const Model::ListResolverQueryLogConfigAssociationsRequest& request) const;
1930 
1931         /**
1932          * <p>Lists information about associations between Amazon VPCs and query logging
1933          * configurations.</p><p><h3>See Also:</h3>   <a
1934          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverQueryLogConfigAssociations">AWS
1935          * API Reference</a></p>
1936          *
1937          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1938          */
1939         virtual void ListResolverQueryLogConfigAssociationsAsync(const Model::ListResolverQueryLogConfigAssociationsRequest& request, const ListResolverQueryLogConfigAssociationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1940 
1941         /**
1942          * <p>Lists information about the specified query logging configurations. Each
1943          * configuration defines where you want Resolver to save DNS query logs and
1944          * specifies the VPCs that you want to log queries for.</p><p><h3>See Also:</h3>
1945          * <a
1946          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverQueryLogConfigs">AWS
1947          * API Reference</a></p>
1948          */
1949         virtual Model::ListResolverQueryLogConfigsOutcome ListResolverQueryLogConfigs(const Model::ListResolverQueryLogConfigsRequest& request) const;
1950 
1951         /**
1952          * <p>Lists information about the specified query logging configurations. Each
1953          * configuration defines where you want Resolver to save DNS query logs and
1954          * specifies the VPCs that you want to log queries for.</p><p><h3>See Also:</h3>
1955          * <a
1956          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverQueryLogConfigs">AWS
1957          * API Reference</a></p>
1958          *
1959          * returns a future to the operation so that it can be executed in parallel to other requests.
1960          */
1961         virtual Model::ListResolverQueryLogConfigsOutcomeCallable ListResolverQueryLogConfigsCallable(const Model::ListResolverQueryLogConfigsRequest& request) const;
1962 
1963         /**
1964          * <p>Lists information about the specified query logging configurations. Each
1965          * configuration defines where you want Resolver to save DNS query logs and
1966          * specifies the VPCs that you want to log queries for.</p><p><h3>See Also:</h3>
1967          * <a
1968          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverQueryLogConfigs">AWS
1969          * API Reference</a></p>
1970          *
1971          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1972          */
1973         virtual void ListResolverQueryLogConfigsAsync(const Model::ListResolverQueryLogConfigsRequest& request, const ListResolverQueryLogConfigsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1974 
1975         /**
1976          * <p>Lists the associations that were created between Resolver rules and VPCs
1977          * using the current Amazon Web Services account.</p><p><h3>See Also:</h3>   <a
1978          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverRuleAssociations">AWS
1979          * API Reference</a></p>
1980          */
1981         virtual Model::ListResolverRuleAssociationsOutcome ListResolverRuleAssociations(const Model::ListResolverRuleAssociationsRequest& request) const;
1982 
1983         /**
1984          * <p>Lists the associations that were created between Resolver rules and VPCs
1985          * using the current Amazon Web Services account.</p><p><h3>See Also:</h3>   <a
1986          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverRuleAssociations">AWS
1987          * API Reference</a></p>
1988          *
1989          * returns a future to the operation so that it can be executed in parallel to other requests.
1990          */
1991         virtual Model::ListResolverRuleAssociationsOutcomeCallable ListResolverRuleAssociationsCallable(const Model::ListResolverRuleAssociationsRequest& request) const;
1992 
1993         /**
1994          * <p>Lists the associations that were created between Resolver rules and VPCs
1995          * using the current Amazon Web Services account.</p><p><h3>See Also:</h3>   <a
1996          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverRuleAssociations">AWS
1997          * API Reference</a></p>
1998          *
1999          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2000          */
2001         virtual void ListResolverRuleAssociationsAsync(const Model::ListResolverRuleAssociationsRequest& request, const ListResolverRuleAssociationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2002 
2003         /**
2004          * <p>Lists the Resolver rules that were created using the current Amazon Web
2005          * Services account.</p><p><h3>See Also:</h3>   <a
2006          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverRules">AWS
2007          * API Reference</a></p>
2008          */
2009         virtual Model::ListResolverRulesOutcome ListResolverRules(const Model::ListResolverRulesRequest& request) const;
2010 
2011         /**
2012          * <p>Lists the Resolver rules that were created using the current Amazon Web
2013          * Services account.</p><p><h3>See Also:</h3>   <a
2014          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverRules">AWS
2015          * API Reference</a></p>
2016          *
2017          * returns a future to the operation so that it can be executed in parallel to other requests.
2018          */
2019         virtual Model::ListResolverRulesOutcomeCallable ListResolverRulesCallable(const Model::ListResolverRulesRequest& request) const;
2020 
2021         /**
2022          * <p>Lists the Resolver rules that were created using the current Amazon Web
2023          * Services account.</p><p><h3>See Also:</h3>   <a
2024          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverRules">AWS
2025          * API Reference</a></p>
2026          *
2027          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2028          */
2029         virtual void ListResolverRulesAsync(const Model::ListResolverRulesRequest& request, const ListResolverRulesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2030 
2031         /**
2032          * <p>Lists the tags that you associated with the specified resource.</p><p><h3>See
2033          * Also:</h3>   <a
2034          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListTagsForResource">AWS
2035          * API Reference</a></p>
2036          */
2037         virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const;
2038 
2039         /**
2040          * <p>Lists the tags that you associated with the specified resource.</p><p><h3>See
2041          * Also:</h3>   <a
2042          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListTagsForResource">AWS
2043          * API Reference</a></p>
2044          *
2045          * returns a future to the operation so that it can be executed in parallel to other requests.
2046          */
2047         virtual Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const Model::ListTagsForResourceRequest& request) const;
2048 
2049         /**
2050          * <p>Lists the tags that you associated with the specified resource.</p><p><h3>See
2051          * Also:</h3>   <a
2052          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListTagsForResource">AWS
2053          * API Reference</a></p>
2054          *
2055          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2056          */
2057         virtual void ListTagsForResourceAsync(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2058 
2059         /**
2060          * <p>Attaches an Identity and Access Management (Amazon Web Services IAM) policy
2061          * for sharing the rule group. You can use the policy to share the rule group using
2062          * Resource Access Manager (RAM). </p><p><h3>See Also:</h3>   <a
2063          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/PutFirewallRuleGroupPolicy">AWS
2064          * API Reference</a></p>
2065          */
2066         virtual Model::PutFirewallRuleGroupPolicyOutcome PutFirewallRuleGroupPolicy(const Model::PutFirewallRuleGroupPolicyRequest& request) const;
2067 
2068         /**
2069          * <p>Attaches an Identity and Access Management (Amazon Web Services IAM) policy
2070          * for sharing the rule group. You can use the policy to share the rule group using
2071          * Resource Access Manager (RAM). </p><p><h3>See Also:</h3>   <a
2072          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/PutFirewallRuleGroupPolicy">AWS
2073          * API Reference</a></p>
2074          *
2075          * returns a future to the operation so that it can be executed in parallel to other requests.
2076          */
2077         virtual Model::PutFirewallRuleGroupPolicyOutcomeCallable PutFirewallRuleGroupPolicyCallable(const Model::PutFirewallRuleGroupPolicyRequest& request) const;
2078 
2079         /**
2080          * <p>Attaches an Identity and Access Management (Amazon Web Services IAM) policy
2081          * for sharing the rule group. You can use the policy to share the rule group using
2082          * Resource Access Manager (RAM). </p><p><h3>See Also:</h3>   <a
2083          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/PutFirewallRuleGroupPolicy">AWS
2084          * API Reference</a></p>
2085          *
2086          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2087          */
2088         virtual void PutFirewallRuleGroupPolicyAsync(const Model::PutFirewallRuleGroupPolicyRequest& request, const PutFirewallRuleGroupPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2089 
2090         /**
2091          * <p>Specifies an Amazon Web Services account that you want to share a query
2092          * logging configuration with, the query logging configuration that you want to
2093          * share, and the operations that you want the account to be able to perform on the
2094          * configuration.</p><p><h3>See Also:</h3>   <a
2095          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/PutResolverQueryLogConfigPolicy">AWS
2096          * API Reference</a></p>
2097          */
2098         virtual Model::PutResolverQueryLogConfigPolicyOutcome PutResolverQueryLogConfigPolicy(const Model::PutResolverQueryLogConfigPolicyRequest& request) const;
2099 
2100         /**
2101          * <p>Specifies an Amazon Web Services account that you want to share a query
2102          * logging configuration with, the query logging configuration that you want to
2103          * share, and the operations that you want the account to be able to perform on the
2104          * configuration.</p><p><h3>See Also:</h3>   <a
2105          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/PutResolverQueryLogConfigPolicy">AWS
2106          * API Reference</a></p>
2107          *
2108          * returns a future to the operation so that it can be executed in parallel to other requests.
2109          */
2110         virtual Model::PutResolverQueryLogConfigPolicyOutcomeCallable PutResolverQueryLogConfigPolicyCallable(const Model::PutResolverQueryLogConfigPolicyRequest& request) const;
2111 
2112         /**
2113          * <p>Specifies an Amazon Web Services account that you want to share a query
2114          * logging configuration with, the query logging configuration that you want to
2115          * share, and the operations that you want the account to be able to perform on the
2116          * configuration.</p><p><h3>See Also:</h3>   <a
2117          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/PutResolverQueryLogConfigPolicy">AWS
2118          * API Reference</a></p>
2119          *
2120          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2121          */
2122         virtual void PutResolverQueryLogConfigPolicyAsync(const Model::PutResolverQueryLogConfigPolicyRequest& request, const PutResolverQueryLogConfigPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2123 
2124         /**
2125          * <p>Specifies an Amazon Web Services rule that you want to share with another
2126          * account, the account that you want to share the rule with, and the operations
2127          * that you want the account to be able to perform on the rule.</p><p><h3>See
2128          * Also:</h3>   <a
2129          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/PutResolverRulePolicy">AWS
2130          * API Reference</a></p>
2131          */
2132         virtual Model::PutResolverRulePolicyOutcome PutResolverRulePolicy(const Model::PutResolverRulePolicyRequest& request) const;
2133 
2134         /**
2135          * <p>Specifies an Amazon Web Services rule that you want to share with another
2136          * account, the account that you want to share the rule with, and the operations
2137          * that you want the account to be able to perform on the rule.</p><p><h3>See
2138          * Also:</h3>   <a
2139          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/PutResolverRulePolicy">AWS
2140          * API Reference</a></p>
2141          *
2142          * returns a future to the operation so that it can be executed in parallel to other requests.
2143          */
2144         virtual Model::PutResolverRulePolicyOutcomeCallable PutResolverRulePolicyCallable(const Model::PutResolverRulePolicyRequest& request) const;
2145 
2146         /**
2147          * <p>Specifies an Amazon Web Services rule that you want to share with another
2148          * account, the account that you want to share the rule with, and the operations
2149          * that you want the account to be able to perform on the rule.</p><p><h3>See
2150          * Also:</h3>   <a
2151          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/PutResolverRulePolicy">AWS
2152          * API Reference</a></p>
2153          *
2154          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2155          */
2156         virtual void PutResolverRulePolicyAsync(const Model::PutResolverRulePolicyRequest& request, const PutResolverRulePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2157 
2158         /**
2159          * <p>Adds one or more tags to a specified resource.</p><p><h3>See Also:</h3>   <a
2160          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/TagResource">AWS
2161          * API Reference</a></p>
2162          */
2163         virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const;
2164 
2165         /**
2166          * <p>Adds one or more tags to a specified resource.</p><p><h3>See Also:</h3>   <a
2167          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/TagResource">AWS
2168          * API Reference</a></p>
2169          *
2170          * returns a future to the operation so that it can be executed in parallel to other requests.
2171          */
2172         virtual Model::TagResourceOutcomeCallable TagResourceCallable(const Model::TagResourceRequest& request) const;
2173 
2174         /**
2175          * <p>Adds one or more tags to a specified resource.</p><p><h3>See Also:</h3>   <a
2176          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/TagResource">AWS
2177          * API Reference</a></p>
2178          *
2179          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2180          */
2181         virtual void TagResourceAsync(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2182 
2183         /**
2184          * <p>Removes one or more tags from a specified resource.</p><p><h3>See Also:</h3>
2185          * <a
2186          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UntagResource">AWS
2187          * API Reference</a></p>
2188          */
2189         virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const;
2190 
2191         /**
2192          * <p>Removes one or more tags from a specified resource.</p><p><h3>See Also:</h3>
2193          * <a
2194          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UntagResource">AWS
2195          * API Reference</a></p>
2196          *
2197          * returns a future to the operation so that it can be executed in parallel to other requests.
2198          */
2199         virtual Model::UntagResourceOutcomeCallable UntagResourceCallable(const Model::UntagResourceRequest& request) const;
2200 
2201         /**
2202          * <p>Removes one or more tags from a specified resource.</p><p><h3>See Also:</h3>
2203          * <a
2204          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UntagResource">AWS
2205          * API Reference</a></p>
2206          *
2207          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2208          */
2209         virtual void UntagResourceAsync(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2210 
2211         /**
2212          * <p>Updates the configuration of the firewall behavior provided by DNS Firewall
2213          * for a single VPC from Amazon Virtual Private Cloud (Amazon VPC). </p><p><h3>See
2214          * Also:</h3>   <a
2215          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateFirewallConfig">AWS
2216          * API Reference</a></p>
2217          */
2218         virtual Model::UpdateFirewallConfigOutcome UpdateFirewallConfig(const Model::UpdateFirewallConfigRequest& request) const;
2219 
2220         /**
2221          * <p>Updates the configuration of the firewall behavior provided by DNS Firewall
2222          * for a single VPC from Amazon Virtual Private Cloud (Amazon VPC). </p><p><h3>See
2223          * Also:</h3>   <a
2224          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateFirewallConfig">AWS
2225          * API Reference</a></p>
2226          *
2227          * returns a future to the operation so that it can be executed in parallel to other requests.
2228          */
2229         virtual Model::UpdateFirewallConfigOutcomeCallable UpdateFirewallConfigCallable(const Model::UpdateFirewallConfigRequest& request) const;
2230 
2231         /**
2232          * <p>Updates the configuration of the firewall behavior provided by DNS Firewall
2233          * for a single VPC from Amazon Virtual Private Cloud (Amazon VPC). </p><p><h3>See
2234          * Also:</h3>   <a
2235          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateFirewallConfig">AWS
2236          * API Reference</a></p>
2237          *
2238          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2239          */
2240         virtual void UpdateFirewallConfigAsync(const Model::UpdateFirewallConfigRequest& request, const UpdateFirewallConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2241 
2242         /**
2243          * <p>Updates the firewall domain list from an array of domain specifications.
2244          * </p><p><h3>See Also:</h3>   <a
2245          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateFirewallDomains">AWS
2246          * API Reference</a></p>
2247          */
2248         virtual Model::UpdateFirewallDomainsOutcome UpdateFirewallDomains(const Model::UpdateFirewallDomainsRequest& request) const;
2249 
2250         /**
2251          * <p>Updates the firewall domain list from an array of domain specifications.
2252          * </p><p><h3>See Also:</h3>   <a
2253          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateFirewallDomains">AWS
2254          * API Reference</a></p>
2255          *
2256          * returns a future to the operation so that it can be executed in parallel to other requests.
2257          */
2258         virtual Model::UpdateFirewallDomainsOutcomeCallable UpdateFirewallDomainsCallable(const Model::UpdateFirewallDomainsRequest& request) const;
2259 
2260         /**
2261          * <p>Updates the firewall domain list from an array of domain specifications.
2262          * </p><p><h3>See Also:</h3>   <a
2263          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateFirewallDomains">AWS
2264          * API Reference</a></p>
2265          *
2266          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2267          */
2268         virtual void UpdateFirewallDomainsAsync(const Model::UpdateFirewallDomainsRequest& request, const UpdateFirewallDomainsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2269 
2270         /**
2271          * <p>Updates the specified firewall rule. </p><p><h3>See Also:</h3>   <a
2272          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateFirewallRule">AWS
2273          * API Reference</a></p>
2274          */
2275         virtual Model::UpdateFirewallRuleOutcome UpdateFirewallRule(const Model::UpdateFirewallRuleRequest& request) const;
2276 
2277         /**
2278          * <p>Updates the specified firewall rule. </p><p><h3>See Also:</h3>   <a
2279          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateFirewallRule">AWS
2280          * API Reference</a></p>
2281          *
2282          * returns a future to the operation so that it can be executed in parallel to other requests.
2283          */
2284         virtual Model::UpdateFirewallRuleOutcomeCallable UpdateFirewallRuleCallable(const Model::UpdateFirewallRuleRequest& request) const;
2285 
2286         /**
2287          * <p>Updates the specified firewall rule. </p><p><h3>See Also:</h3>   <a
2288          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateFirewallRule">AWS
2289          * API Reference</a></p>
2290          *
2291          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2292          */
2293         virtual void UpdateFirewallRuleAsync(const Model::UpdateFirewallRuleRequest& request, const UpdateFirewallRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2294 
2295         /**
2296          * <p>Changes the association of a <a>FirewallRuleGroup</a> with a VPC. The
2297          * association enables DNS filtering for the VPC. </p><p><h3>See Also:</h3>   <a
2298          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateFirewallRuleGroupAssociation">AWS
2299          * API Reference</a></p>
2300          */
2301         virtual Model::UpdateFirewallRuleGroupAssociationOutcome UpdateFirewallRuleGroupAssociation(const Model::UpdateFirewallRuleGroupAssociationRequest& request) const;
2302 
2303         /**
2304          * <p>Changes the association of a <a>FirewallRuleGroup</a> with a VPC. The
2305          * association enables DNS filtering for the VPC. </p><p><h3>See Also:</h3>   <a
2306          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateFirewallRuleGroupAssociation">AWS
2307          * API Reference</a></p>
2308          *
2309          * returns a future to the operation so that it can be executed in parallel to other requests.
2310          */
2311         virtual Model::UpdateFirewallRuleGroupAssociationOutcomeCallable UpdateFirewallRuleGroupAssociationCallable(const Model::UpdateFirewallRuleGroupAssociationRequest& request) const;
2312 
2313         /**
2314          * <p>Changes the association of a <a>FirewallRuleGroup</a> with a VPC. The
2315          * association enables DNS filtering for the VPC. </p><p><h3>See Also:</h3>   <a
2316          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateFirewallRuleGroupAssociation">AWS
2317          * API Reference</a></p>
2318          *
2319          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2320          */
2321         virtual void UpdateFirewallRuleGroupAssociationAsync(const Model::UpdateFirewallRuleGroupAssociationRequest& request, const UpdateFirewallRuleGroupAssociationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2322 
2323         /**
2324          * <p>Updates an existing DNSSEC validation configuration. If there is no existing
2325          * DNSSEC validation configuration, one is created.</p><p><h3>See Also:</h3>   <a
2326          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateResolverDnssecConfig">AWS
2327          * API Reference</a></p>
2328          */
2329         virtual Model::UpdateResolverDnssecConfigOutcome UpdateResolverDnssecConfig(const Model::UpdateResolverDnssecConfigRequest& request) const;
2330 
2331         /**
2332          * <p>Updates an existing DNSSEC validation configuration. If there is no existing
2333          * DNSSEC validation configuration, one is created.</p><p><h3>See Also:</h3>   <a
2334          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateResolverDnssecConfig">AWS
2335          * API Reference</a></p>
2336          *
2337          * returns a future to the operation so that it can be executed in parallel to other requests.
2338          */
2339         virtual Model::UpdateResolverDnssecConfigOutcomeCallable UpdateResolverDnssecConfigCallable(const Model::UpdateResolverDnssecConfigRequest& request) const;
2340 
2341         /**
2342          * <p>Updates an existing DNSSEC validation configuration. If there is no existing
2343          * DNSSEC validation configuration, one is created.</p><p><h3>See Also:</h3>   <a
2344          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateResolverDnssecConfig">AWS
2345          * API Reference</a></p>
2346          *
2347          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2348          */
2349         virtual void UpdateResolverDnssecConfigAsync(const Model::UpdateResolverDnssecConfigRequest& request, const UpdateResolverDnssecConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2350 
2351         /**
2352          * <p>Updates the name of an inbound or an outbound Resolver endpoint.
2353          * </p><p><h3>See Also:</h3>   <a
2354          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateResolverEndpoint">AWS
2355          * API Reference</a></p>
2356          */
2357         virtual Model::UpdateResolverEndpointOutcome UpdateResolverEndpoint(const Model::UpdateResolverEndpointRequest& request) const;
2358 
2359         /**
2360          * <p>Updates the name of an inbound or an outbound Resolver endpoint.
2361          * </p><p><h3>See Also:</h3>   <a
2362          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateResolverEndpoint">AWS
2363          * API Reference</a></p>
2364          *
2365          * returns a future to the operation so that it can be executed in parallel to other requests.
2366          */
2367         virtual Model::UpdateResolverEndpointOutcomeCallable UpdateResolverEndpointCallable(const Model::UpdateResolverEndpointRequest& request) const;
2368 
2369         /**
2370          * <p>Updates the name of an inbound or an outbound Resolver endpoint.
2371          * </p><p><h3>See Also:</h3>   <a
2372          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateResolverEndpoint">AWS
2373          * API Reference</a></p>
2374          *
2375          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2376          */
2377         virtual void UpdateResolverEndpointAsync(const Model::UpdateResolverEndpointRequest& request, const UpdateResolverEndpointResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2378 
2379         /**
2380          * <p>Updates settings for a specified Resolver rule. <code>ResolverRuleId</code>
2381          * is required, and all other parameters are optional. If you don't specify a
2382          * parameter, it retains its current value.</p><p><h3>See Also:</h3>   <a
2383          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateResolverRule">AWS
2384          * API Reference</a></p>
2385          */
2386         virtual Model::UpdateResolverRuleOutcome UpdateResolverRule(const Model::UpdateResolverRuleRequest& request) const;
2387 
2388         /**
2389          * <p>Updates settings for a specified Resolver rule. <code>ResolverRuleId</code>
2390          * is required, and all other parameters are optional. If you don't specify a
2391          * parameter, it retains its current value.</p><p><h3>See Also:</h3>   <a
2392          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateResolverRule">AWS
2393          * API Reference</a></p>
2394          *
2395          * returns a future to the operation so that it can be executed in parallel to other requests.
2396          */
2397         virtual Model::UpdateResolverRuleOutcomeCallable UpdateResolverRuleCallable(const Model::UpdateResolverRuleRequest& request) const;
2398 
2399         /**
2400          * <p>Updates settings for a specified Resolver rule. <code>ResolverRuleId</code>
2401          * is required, and all other parameters are optional. If you don't specify a
2402          * parameter, it retains its current value.</p><p><h3>See Also:</h3>   <a
2403          * href="http://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateResolverRule">AWS
2404          * API Reference</a></p>
2405          *
2406          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2407          */
2408         virtual void UpdateResolverRuleAsync(const Model::UpdateResolverRuleRequest& request, const UpdateResolverRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2409 
2410 
2411       void OverrideEndpoint(const Aws::String& endpoint);
2412     private:
2413       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
2414         void AssociateFirewallRuleGroupAsyncHelper(const Model::AssociateFirewallRuleGroupRequest& request, const AssociateFirewallRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2415         void AssociateResolverEndpointIpAddressAsyncHelper(const Model::AssociateResolverEndpointIpAddressRequest& request, const AssociateResolverEndpointIpAddressResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2416         void AssociateResolverQueryLogConfigAsyncHelper(const Model::AssociateResolverQueryLogConfigRequest& request, const AssociateResolverQueryLogConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2417         void AssociateResolverRuleAsyncHelper(const Model::AssociateResolverRuleRequest& request, const AssociateResolverRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2418         void CreateFirewallDomainListAsyncHelper(const Model::CreateFirewallDomainListRequest& request, const CreateFirewallDomainListResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2419         void CreateFirewallRuleAsyncHelper(const Model::CreateFirewallRuleRequest& request, const CreateFirewallRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2420         void CreateFirewallRuleGroupAsyncHelper(const Model::CreateFirewallRuleGroupRequest& request, const CreateFirewallRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2421         void CreateResolverEndpointAsyncHelper(const Model::CreateResolverEndpointRequest& request, const CreateResolverEndpointResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2422         void CreateResolverQueryLogConfigAsyncHelper(const Model::CreateResolverQueryLogConfigRequest& request, const CreateResolverQueryLogConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2423         void CreateResolverRuleAsyncHelper(const Model::CreateResolverRuleRequest& request, const CreateResolverRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2424         void DeleteFirewallDomainListAsyncHelper(const Model::DeleteFirewallDomainListRequest& request, const DeleteFirewallDomainListResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2425         void DeleteFirewallRuleAsyncHelper(const Model::DeleteFirewallRuleRequest& request, const DeleteFirewallRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2426         void DeleteFirewallRuleGroupAsyncHelper(const Model::DeleteFirewallRuleGroupRequest& request, const DeleteFirewallRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2427         void DeleteResolverEndpointAsyncHelper(const Model::DeleteResolverEndpointRequest& request, const DeleteResolverEndpointResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2428         void DeleteResolverQueryLogConfigAsyncHelper(const Model::DeleteResolverQueryLogConfigRequest& request, const DeleteResolverQueryLogConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2429         void DeleteResolverRuleAsyncHelper(const Model::DeleteResolverRuleRequest& request, const DeleteResolverRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2430         void DisassociateFirewallRuleGroupAsyncHelper(const Model::DisassociateFirewallRuleGroupRequest& request, const DisassociateFirewallRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2431         void DisassociateResolverEndpointIpAddressAsyncHelper(const Model::DisassociateResolverEndpointIpAddressRequest& request, const DisassociateResolverEndpointIpAddressResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2432         void DisassociateResolverQueryLogConfigAsyncHelper(const Model::DisassociateResolverQueryLogConfigRequest& request, const DisassociateResolverQueryLogConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2433         void DisassociateResolverRuleAsyncHelper(const Model::DisassociateResolverRuleRequest& request, const DisassociateResolverRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2434         void GetFirewallConfigAsyncHelper(const Model::GetFirewallConfigRequest& request, const GetFirewallConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2435         void GetFirewallDomainListAsyncHelper(const Model::GetFirewallDomainListRequest& request, const GetFirewallDomainListResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2436         void GetFirewallRuleGroupAsyncHelper(const Model::GetFirewallRuleGroupRequest& request, const GetFirewallRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2437         void GetFirewallRuleGroupAssociationAsyncHelper(const Model::GetFirewallRuleGroupAssociationRequest& request, const GetFirewallRuleGroupAssociationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2438         void GetFirewallRuleGroupPolicyAsyncHelper(const Model::GetFirewallRuleGroupPolicyRequest& request, const GetFirewallRuleGroupPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2439         void GetResolverDnssecConfigAsyncHelper(const Model::GetResolverDnssecConfigRequest& request, const GetResolverDnssecConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2440         void GetResolverEndpointAsyncHelper(const Model::GetResolverEndpointRequest& request, const GetResolverEndpointResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2441         void GetResolverQueryLogConfigAsyncHelper(const Model::GetResolverQueryLogConfigRequest& request, const GetResolverQueryLogConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2442         void GetResolverQueryLogConfigAssociationAsyncHelper(const Model::GetResolverQueryLogConfigAssociationRequest& request, const GetResolverQueryLogConfigAssociationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2443         void GetResolverQueryLogConfigPolicyAsyncHelper(const Model::GetResolverQueryLogConfigPolicyRequest& request, const GetResolverQueryLogConfigPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2444         void GetResolverRuleAsyncHelper(const Model::GetResolverRuleRequest& request, const GetResolverRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2445         void GetResolverRuleAssociationAsyncHelper(const Model::GetResolverRuleAssociationRequest& request, const GetResolverRuleAssociationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2446         void GetResolverRulePolicyAsyncHelper(const Model::GetResolverRulePolicyRequest& request, const GetResolverRulePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2447         void ImportFirewallDomainsAsyncHelper(const Model::ImportFirewallDomainsRequest& request, const ImportFirewallDomainsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2448         void ListFirewallConfigsAsyncHelper(const Model::ListFirewallConfigsRequest& request, const ListFirewallConfigsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2449         void ListFirewallDomainListsAsyncHelper(const Model::ListFirewallDomainListsRequest& request, const ListFirewallDomainListsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2450         void ListFirewallDomainsAsyncHelper(const Model::ListFirewallDomainsRequest& request, const ListFirewallDomainsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2451         void ListFirewallRuleGroupAssociationsAsyncHelper(const Model::ListFirewallRuleGroupAssociationsRequest& request, const ListFirewallRuleGroupAssociationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2452         void ListFirewallRuleGroupsAsyncHelper(const Model::ListFirewallRuleGroupsRequest& request, const ListFirewallRuleGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2453         void ListFirewallRulesAsyncHelper(const Model::ListFirewallRulesRequest& request, const ListFirewallRulesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2454         void ListResolverDnssecConfigsAsyncHelper(const Model::ListResolverDnssecConfigsRequest& request, const ListResolverDnssecConfigsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2455         void ListResolverEndpointIpAddressesAsyncHelper(const Model::ListResolverEndpointIpAddressesRequest& request, const ListResolverEndpointIpAddressesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2456         void ListResolverEndpointsAsyncHelper(const Model::ListResolverEndpointsRequest& request, const ListResolverEndpointsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2457         void ListResolverQueryLogConfigAssociationsAsyncHelper(const Model::ListResolverQueryLogConfigAssociationsRequest& request, const ListResolverQueryLogConfigAssociationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2458         void ListResolverQueryLogConfigsAsyncHelper(const Model::ListResolverQueryLogConfigsRequest& request, const ListResolverQueryLogConfigsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2459         void ListResolverRuleAssociationsAsyncHelper(const Model::ListResolverRuleAssociationsRequest& request, const ListResolverRuleAssociationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2460         void ListResolverRulesAsyncHelper(const Model::ListResolverRulesRequest& request, const ListResolverRulesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2461         void ListTagsForResourceAsyncHelper(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2462         void PutFirewallRuleGroupPolicyAsyncHelper(const Model::PutFirewallRuleGroupPolicyRequest& request, const PutFirewallRuleGroupPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2463         void PutResolverQueryLogConfigPolicyAsyncHelper(const Model::PutResolverQueryLogConfigPolicyRequest& request, const PutResolverQueryLogConfigPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2464         void PutResolverRulePolicyAsyncHelper(const Model::PutResolverRulePolicyRequest& request, const PutResolverRulePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2465         void TagResourceAsyncHelper(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2466         void UntagResourceAsyncHelper(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2467         void UpdateFirewallConfigAsyncHelper(const Model::UpdateFirewallConfigRequest& request, const UpdateFirewallConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2468         void UpdateFirewallDomainsAsyncHelper(const Model::UpdateFirewallDomainsRequest& request, const UpdateFirewallDomainsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2469         void UpdateFirewallRuleAsyncHelper(const Model::UpdateFirewallRuleRequest& request, const UpdateFirewallRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2470         void UpdateFirewallRuleGroupAssociationAsyncHelper(const Model::UpdateFirewallRuleGroupAssociationRequest& request, const UpdateFirewallRuleGroupAssociationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2471         void UpdateResolverDnssecConfigAsyncHelper(const Model::UpdateResolverDnssecConfigRequest& request, const UpdateResolverDnssecConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2472         void UpdateResolverEndpointAsyncHelper(const Model::UpdateResolverEndpointRequest& request, const UpdateResolverEndpointResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2473         void UpdateResolverRuleAsyncHelper(const Model::UpdateResolverRuleRequest& request, const UpdateResolverRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2474 
2475       Aws::String m_uri;
2476       Aws::String m_configScheme;
2477       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
2478   };
2479 
2480 } // namespace Route53Resolver
2481 } // namespace Aws
2482