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/network-firewall/NetworkFirewall_EXPORTS.h>
8 #include <aws/network-firewall/NetworkFirewallErrors.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/network-firewall/model/AssociateFirewallPolicyResult.h>
15 #include <aws/network-firewall/model/AssociateSubnetsResult.h>
16 #include <aws/network-firewall/model/CreateFirewallResult.h>
17 #include <aws/network-firewall/model/CreateFirewallPolicyResult.h>
18 #include <aws/network-firewall/model/CreateRuleGroupResult.h>
19 #include <aws/network-firewall/model/DeleteFirewallResult.h>
20 #include <aws/network-firewall/model/DeleteFirewallPolicyResult.h>
21 #include <aws/network-firewall/model/DeleteResourcePolicyResult.h>
22 #include <aws/network-firewall/model/DeleteRuleGroupResult.h>
23 #include <aws/network-firewall/model/DescribeFirewallResult.h>
24 #include <aws/network-firewall/model/DescribeFirewallPolicyResult.h>
25 #include <aws/network-firewall/model/DescribeLoggingConfigurationResult.h>
26 #include <aws/network-firewall/model/DescribeResourcePolicyResult.h>
27 #include <aws/network-firewall/model/DescribeRuleGroupResult.h>
28 #include <aws/network-firewall/model/DisassociateSubnetsResult.h>
29 #include <aws/network-firewall/model/ListFirewallPoliciesResult.h>
30 #include <aws/network-firewall/model/ListFirewallsResult.h>
31 #include <aws/network-firewall/model/ListRuleGroupsResult.h>
32 #include <aws/network-firewall/model/ListTagsForResourceResult.h>
33 #include <aws/network-firewall/model/PutResourcePolicyResult.h>
34 #include <aws/network-firewall/model/TagResourceResult.h>
35 #include <aws/network-firewall/model/UntagResourceResult.h>
36 #include <aws/network-firewall/model/UpdateFirewallDeleteProtectionResult.h>
37 #include <aws/network-firewall/model/UpdateFirewallDescriptionResult.h>
38 #include <aws/network-firewall/model/UpdateFirewallPolicyResult.h>
39 #include <aws/network-firewall/model/UpdateFirewallPolicyChangeProtectionResult.h>
40 #include <aws/network-firewall/model/UpdateLoggingConfigurationResult.h>
41 #include <aws/network-firewall/model/UpdateRuleGroupResult.h>
42 #include <aws/network-firewall/model/UpdateSubnetChangeProtectionResult.h>
43 #include <aws/core/client/AsyncCallerContext.h>
44 #include <aws/core/http/HttpTypes.h>
45 #include <future>
46 #include <functional>
47 
48 namespace Aws
49 {
50 
51 namespace Http
52 {
53   class HttpClient;
54   class HttpClientFactory;
55 } // namespace Http
56 
57 namespace Utils
58 {
59   template< typename R, typename E> class Outcome;
60 namespace Threading
61 {
62   class Executor;
63 } // namespace Threading
64 } // namespace Utils
65 
66 namespace Auth
67 {
68   class AWSCredentials;
69   class AWSCredentialsProvider;
70 } // namespace Auth
71 
72 namespace Client
73 {
74   class RetryStrategy;
75 } // namespace Client
76 
77 namespace NetworkFirewall
78 {
79 
80 namespace Model
81 {
82         class AssociateFirewallPolicyRequest;
83         class AssociateSubnetsRequest;
84         class CreateFirewallRequest;
85         class CreateFirewallPolicyRequest;
86         class CreateRuleGroupRequest;
87         class DeleteFirewallRequest;
88         class DeleteFirewallPolicyRequest;
89         class DeleteResourcePolicyRequest;
90         class DeleteRuleGroupRequest;
91         class DescribeFirewallRequest;
92         class DescribeFirewallPolicyRequest;
93         class DescribeLoggingConfigurationRequest;
94         class DescribeResourcePolicyRequest;
95         class DescribeRuleGroupRequest;
96         class DisassociateSubnetsRequest;
97         class ListFirewallPoliciesRequest;
98         class ListFirewallsRequest;
99         class ListRuleGroupsRequest;
100         class ListTagsForResourceRequest;
101         class PutResourcePolicyRequest;
102         class TagResourceRequest;
103         class UntagResourceRequest;
104         class UpdateFirewallDeleteProtectionRequest;
105         class UpdateFirewallDescriptionRequest;
106         class UpdateFirewallPolicyRequest;
107         class UpdateFirewallPolicyChangeProtectionRequest;
108         class UpdateLoggingConfigurationRequest;
109         class UpdateRuleGroupRequest;
110         class UpdateSubnetChangeProtectionRequest;
111 
112         typedef Aws::Utils::Outcome<AssociateFirewallPolicyResult, NetworkFirewallError> AssociateFirewallPolicyOutcome;
113         typedef Aws::Utils::Outcome<AssociateSubnetsResult, NetworkFirewallError> AssociateSubnetsOutcome;
114         typedef Aws::Utils::Outcome<CreateFirewallResult, NetworkFirewallError> CreateFirewallOutcome;
115         typedef Aws::Utils::Outcome<CreateFirewallPolicyResult, NetworkFirewallError> CreateFirewallPolicyOutcome;
116         typedef Aws::Utils::Outcome<CreateRuleGroupResult, NetworkFirewallError> CreateRuleGroupOutcome;
117         typedef Aws::Utils::Outcome<DeleteFirewallResult, NetworkFirewallError> DeleteFirewallOutcome;
118         typedef Aws::Utils::Outcome<DeleteFirewallPolicyResult, NetworkFirewallError> DeleteFirewallPolicyOutcome;
119         typedef Aws::Utils::Outcome<DeleteResourcePolicyResult, NetworkFirewallError> DeleteResourcePolicyOutcome;
120         typedef Aws::Utils::Outcome<DeleteRuleGroupResult, NetworkFirewallError> DeleteRuleGroupOutcome;
121         typedef Aws::Utils::Outcome<DescribeFirewallResult, NetworkFirewallError> DescribeFirewallOutcome;
122         typedef Aws::Utils::Outcome<DescribeFirewallPolicyResult, NetworkFirewallError> DescribeFirewallPolicyOutcome;
123         typedef Aws::Utils::Outcome<DescribeLoggingConfigurationResult, NetworkFirewallError> DescribeLoggingConfigurationOutcome;
124         typedef Aws::Utils::Outcome<DescribeResourcePolicyResult, NetworkFirewallError> DescribeResourcePolicyOutcome;
125         typedef Aws::Utils::Outcome<DescribeRuleGroupResult, NetworkFirewallError> DescribeRuleGroupOutcome;
126         typedef Aws::Utils::Outcome<DisassociateSubnetsResult, NetworkFirewallError> DisassociateSubnetsOutcome;
127         typedef Aws::Utils::Outcome<ListFirewallPoliciesResult, NetworkFirewallError> ListFirewallPoliciesOutcome;
128         typedef Aws::Utils::Outcome<ListFirewallsResult, NetworkFirewallError> ListFirewallsOutcome;
129         typedef Aws::Utils::Outcome<ListRuleGroupsResult, NetworkFirewallError> ListRuleGroupsOutcome;
130         typedef Aws::Utils::Outcome<ListTagsForResourceResult, NetworkFirewallError> ListTagsForResourceOutcome;
131         typedef Aws::Utils::Outcome<PutResourcePolicyResult, NetworkFirewallError> PutResourcePolicyOutcome;
132         typedef Aws::Utils::Outcome<TagResourceResult, NetworkFirewallError> TagResourceOutcome;
133         typedef Aws::Utils::Outcome<UntagResourceResult, NetworkFirewallError> UntagResourceOutcome;
134         typedef Aws::Utils::Outcome<UpdateFirewallDeleteProtectionResult, NetworkFirewallError> UpdateFirewallDeleteProtectionOutcome;
135         typedef Aws::Utils::Outcome<UpdateFirewallDescriptionResult, NetworkFirewallError> UpdateFirewallDescriptionOutcome;
136         typedef Aws::Utils::Outcome<UpdateFirewallPolicyResult, NetworkFirewallError> UpdateFirewallPolicyOutcome;
137         typedef Aws::Utils::Outcome<UpdateFirewallPolicyChangeProtectionResult, NetworkFirewallError> UpdateFirewallPolicyChangeProtectionOutcome;
138         typedef Aws::Utils::Outcome<UpdateLoggingConfigurationResult, NetworkFirewallError> UpdateLoggingConfigurationOutcome;
139         typedef Aws::Utils::Outcome<UpdateRuleGroupResult, NetworkFirewallError> UpdateRuleGroupOutcome;
140         typedef Aws::Utils::Outcome<UpdateSubnetChangeProtectionResult, NetworkFirewallError> UpdateSubnetChangeProtectionOutcome;
141 
142         typedef std::future<AssociateFirewallPolicyOutcome> AssociateFirewallPolicyOutcomeCallable;
143         typedef std::future<AssociateSubnetsOutcome> AssociateSubnetsOutcomeCallable;
144         typedef std::future<CreateFirewallOutcome> CreateFirewallOutcomeCallable;
145         typedef std::future<CreateFirewallPolicyOutcome> CreateFirewallPolicyOutcomeCallable;
146         typedef std::future<CreateRuleGroupOutcome> CreateRuleGroupOutcomeCallable;
147         typedef std::future<DeleteFirewallOutcome> DeleteFirewallOutcomeCallable;
148         typedef std::future<DeleteFirewallPolicyOutcome> DeleteFirewallPolicyOutcomeCallable;
149         typedef std::future<DeleteResourcePolicyOutcome> DeleteResourcePolicyOutcomeCallable;
150         typedef std::future<DeleteRuleGroupOutcome> DeleteRuleGroupOutcomeCallable;
151         typedef std::future<DescribeFirewallOutcome> DescribeFirewallOutcomeCallable;
152         typedef std::future<DescribeFirewallPolicyOutcome> DescribeFirewallPolicyOutcomeCallable;
153         typedef std::future<DescribeLoggingConfigurationOutcome> DescribeLoggingConfigurationOutcomeCallable;
154         typedef std::future<DescribeResourcePolicyOutcome> DescribeResourcePolicyOutcomeCallable;
155         typedef std::future<DescribeRuleGroupOutcome> DescribeRuleGroupOutcomeCallable;
156         typedef std::future<DisassociateSubnetsOutcome> DisassociateSubnetsOutcomeCallable;
157         typedef std::future<ListFirewallPoliciesOutcome> ListFirewallPoliciesOutcomeCallable;
158         typedef std::future<ListFirewallsOutcome> ListFirewallsOutcomeCallable;
159         typedef std::future<ListRuleGroupsOutcome> ListRuleGroupsOutcomeCallable;
160         typedef std::future<ListTagsForResourceOutcome> ListTagsForResourceOutcomeCallable;
161         typedef std::future<PutResourcePolicyOutcome> PutResourcePolicyOutcomeCallable;
162         typedef std::future<TagResourceOutcome> TagResourceOutcomeCallable;
163         typedef std::future<UntagResourceOutcome> UntagResourceOutcomeCallable;
164         typedef std::future<UpdateFirewallDeleteProtectionOutcome> UpdateFirewallDeleteProtectionOutcomeCallable;
165         typedef std::future<UpdateFirewallDescriptionOutcome> UpdateFirewallDescriptionOutcomeCallable;
166         typedef std::future<UpdateFirewallPolicyOutcome> UpdateFirewallPolicyOutcomeCallable;
167         typedef std::future<UpdateFirewallPolicyChangeProtectionOutcome> UpdateFirewallPolicyChangeProtectionOutcomeCallable;
168         typedef std::future<UpdateLoggingConfigurationOutcome> UpdateLoggingConfigurationOutcomeCallable;
169         typedef std::future<UpdateRuleGroupOutcome> UpdateRuleGroupOutcomeCallable;
170         typedef std::future<UpdateSubnetChangeProtectionOutcome> UpdateSubnetChangeProtectionOutcomeCallable;
171 } // namespace Model
172 
173   class NetworkFirewallClient;
174 
175     typedef std::function<void(const NetworkFirewallClient*, const Model::AssociateFirewallPolicyRequest&, const Model::AssociateFirewallPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AssociateFirewallPolicyResponseReceivedHandler;
176     typedef std::function<void(const NetworkFirewallClient*, const Model::AssociateSubnetsRequest&, const Model::AssociateSubnetsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AssociateSubnetsResponseReceivedHandler;
177     typedef std::function<void(const NetworkFirewallClient*, const Model::CreateFirewallRequest&, const Model::CreateFirewallOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateFirewallResponseReceivedHandler;
178     typedef std::function<void(const NetworkFirewallClient*, const Model::CreateFirewallPolicyRequest&, const Model::CreateFirewallPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateFirewallPolicyResponseReceivedHandler;
179     typedef std::function<void(const NetworkFirewallClient*, const Model::CreateRuleGroupRequest&, const Model::CreateRuleGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateRuleGroupResponseReceivedHandler;
180     typedef std::function<void(const NetworkFirewallClient*, const Model::DeleteFirewallRequest&, const Model::DeleteFirewallOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteFirewallResponseReceivedHandler;
181     typedef std::function<void(const NetworkFirewallClient*, const Model::DeleteFirewallPolicyRequest&, const Model::DeleteFirewallPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteFirewallPolicyResponseReceivedHandler;
182     typedef std::function<void(const NetworkFirewallClient*, const Model::DeleteResourcePolicyRequest&, const Model::DeleteResourcePolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteResourcePolicyResponseReceivedHandler;
183     typedef std::function<void(const NetworkFirewallClient*, const Model::DeleteRuleGroupRequest&, const Model::DeleteRuleGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteRuleGroupResponseReceivedHandler;
184     typedef std::function<void(const NetworkFirewallClient*, const Model::DescribeFirewallRequest&, const Model::DescribeFirewallOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeFirewallResponseReceivedHandler;
185     typedef std::function<void(const NetworkFirewallClient*, const Model::DescribeFirewallPolicyRequest&, const Model::DescribeFirewallPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeFirewallPolicyResponseReceivedHandler;
186     typedef std::function<void(const NetworkFirewallClient*, const Model::DescribeLoggingConfigurationRequest&, const Model::DescribeLoggingConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeLoggingConfigurationResponseReceivedHandler;
187     typedef std::function<void(const NetworkFirewallClient*, const Model::DescribeResourcePolicyRequest&, const Model::DescribeResourcePolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeResourcePolicyResponseReceivedHandler;
188     typedef std::function<void(const NetworkFirewallClient*, const Model::DescribeRuleGroupRequest&, const Model::DescribeRuleGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeRuleGroupResponseReceivedHandler;
189     typedef std::function<void(const NetworkFirewallClient*, const Model::DisassociateSubnetsRequest&, const Model::DisassociateSubnetsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DisassociateSubnetsResponseReceivedHandler;
190     typedef std::function<void(const NetworkFirewallClient*, const Model::ListFirewallPoliciesRequest&, const Model::ListFirewallPoliciesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListFirewallPoliciesResponseReceivedHandler;
191     typedef std::function<void(const NetworkFirewallClient*, const Model::ListFirewallsRequest&, const Model::ListFirewallsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListFirewallsResponseReceivedHandler;
192     typedef std::function<void(const NetworkFirewallClient*, const Model::ListRuleGroupsRequest&, const Model::ListRuleGroupsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListRuleGroupsResponseReceivedHandler;
193     typedef std::function<void(const NetworkFirewallClient*, const Model::ListTagsForResourceRequest&, const Model::ListTagsForResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListTagsForResourceResponseReceivedHandler;
194     typedef std::function<void(const NetworkFirewallClient*, const Model::PutResourcePolicyRequest&, const Model::PutResourcePolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutResourcePolicyResponseReceivedHandler;
195     typedef std::function<void(const NetworkFirewallClient*, const Model::TagResourceRequest&, const Model::TagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > TagResourceResponseReceivedHandler;
196     typedef std::function<void(const NetworkFirewallClient*, const Model::UntagResourceRequest&, const Model::UntagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UntagResourceResponseReceivedHandler;
197     typedef std::function<void(const NetworkFirewallClient*, const Model::UpdateFirewallDeleteProtectionRequest&, const Model::UpdateFirewallDeleteProtectionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateFirewallDeleteProtectionResponseReceivedHandler;
198     typedef std::function<void(const NetworkFirewallClient*, const Model::UpdateFirewallDescriptionRequest&, const Model::UpdateFirewallDescriptionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateFirewallDescriptionResponseReceivedHandler;
199     typedef std::function<void(const NetworkFirewallClient*, const Model::UpdateFirewallPolicyRequest&, const Model::UpdateFirewallPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateFirewallPolicyResponseReceivedHandler;
200     typedef std::function<void(const NetworkFirewallClient*, const Model::UpdateFirewallPolicyChangeProtectionRequest&, const Model::UpdateFirewallPolicyChangeProtectionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateFirewallPolicyChangeProtectionResponseReceivedHandler;
201     typedef std::function<void(const NetworkFirewallClient*, const Model::UpdateLoggingConfigurationRequest&, const Model::UpdateLoggingConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateLoggingConfigurationResponseReceivedHandler;
202     typedef std::function<void(const NetworkFirewallClient*, const Model::UpdateRuleGroupRequest&, const Model::UpdateRuleGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateRuleGroupResponseReceivedHandler;
203     typedef std::function<void(const NetworkFirewallClient*, const Model::UpdateSubnetChangeProtectionRequest&, const Model::UpdateSubnetChangeProtectionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateSubnetChangeProtectionResponseReceivedHandler;
204 
205   /**
206    * <p>This is the API Reference for AWS Network Firewall. This guide is for
207    * developers who need detailed information about the Network Firewall API actions,
208    * data types, and errors. </p> <ul> <li> <p>The REST API requires you to handle
209    * connection details, such as calculating signatures, handling request retries,
210    * and error handling. For general information about using the AWS REST APIs, see
211    * <a href="https://docs.aws.amazon.com/general/latest/gr/aws-apis.html">AWS
212    * APIs</a>. </p> <p>To access Network Firewall using the REST API endpoint:
213    * <code>https://network-firewall.&lt;region&gt;.amazonaws.com </code> </p> </li>
214    * <li> <p>Alternatively, you can use one of the AWS SDKs to access an API that's
215    * tailored to the programming language or platform that you're using. For more
216    * information, see <a href="http://aws.amazon.com/tools/#SDKs">AWS SDKs</a>.</p>
217    * </li> <li> <p>For descriptions of Network Firewall features, including and
218    * step-by-step instructions on how to use them through the Network Firewall
219    * console, see the <a
220    * href="https://docs.aws.amazon.com/network-firewall/latest/developerguide/">Network
221    * Firewall Developer Guide</a>.</p> </li> </ul> <p>Network Firewall is a stateful,
222    * managed, network firewall and intrusion detection and prevention service for
223    * Amazon Virtual Private Cloud (Amazon VPC). With Network Firewall, you can filter
224    * traffic at the perimeter of your VPC. This includes filtering traffic going to
225    * and coming from an internet gateway, NAT gateway, or over VPN or AWS Direct
226    * Connect. Network Firewall uses rules that are compatible with Suricata, a free,
227    * open source intrusion detection system (IDS) engine. AWS Network Firewall
228    * supports Suricata version 5.0.2. For information about Suricata, see the <a
229    * href="https://suricata-ids.org/">Suricata website</a>.</p> <p>You can use
230    * Network Firewall to monitor and protect your VPC traffic in a number of ways.
231    * The following are just a few examples: </p> <ul> <li> <p>Allow domains or IP
232    * addresses for known AWS service endpoints, such as Amazon S3, and block all
233    * other forms of traffic.</p> </li> <li> <p>Use custom lists of known bad domains
234    * to limit the types of domain names that your applications can access.</p> </li>
235    * <li> <p>Perform deep packet inspection on traffic entering or leaving your
236    * VPC.</p> </li> <li> <p>Use stateful protocol detection to filter protocols like
237    * HTTPS, regardless of the port used.</p> </li> </ul> <p>To enable Network
238    * Firewall for your VPCs, you perform steps in both Amazon VPC and in Network
239    * Firewall. For information about using Amazon VPC, see <a
240    * href="https://docs.aws.amazon.com/vpc/latest/userguide/">Amazon VPC User
241    * Guide</a>.</p> <p>To start using Network Firewall, do the following: </p> <ol>
242    * <li> <p>(Optional) If you don't already have a VPC that you want to protect,
243    * create it in Amazon VPC. </p> </li> <li> <p>In Amazon VPC, in each Availability
244    * Zone where you want to have a firewall endpoint, create a subnet for the sole
245    * use of Network Firewall. </p> </li> <li> <p>In Network Firewall, create
246    * stateless and stateful rule groups, to define the components of the network
247    * traffic filtering behavior that you want your firewall to have. </p> </li> <li>
248    * <p>In Network Firewall, create a firewall policy that uses your rule groups and
249    * specifies additional default traffic filtering behavior. </p> </li> <li> <p>In
250    * Network Firewall, create a firewall and specify your new firewall policy and VPC
251    * subnets. Network Firewall creates a firewall endpoint in each subnet that you
252    * specify, with the behavior that's defined in the firewall policy.</p> </li> <li>
253    * <p>In Amazon VPC, use ingress routing enhancements to route traffic through the
254    * new firewall endpoints.</p> </li> </ol>
255    */
256   class AWS_NETWORKFIREWALL_API NetworkFirewallClient : public Aws::Client::AWSJsonClient
257   {
258     public:
259       typedef Aws::Client::AWSJsonClient BASECLASS;
260 
261        /**
262         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
263         * is not specified, it will be initialized to default values.
264         */
265         NetworkFirewallClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
266 
267        /**
268         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
269         * is not specified, it will be initialized to default values.
270         */
271         NetworkFirewallClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
272 
273        /**
274         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
275         * the default http client factory will be used
276         */
277         NetworkFirewallClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
278             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
279 
280         virtual ~NetworkFirewallClient();
281 
282 
283         /**
284          * <p>Associates a <a>FirewallPolicy</a> to a <a>Firewall</a>. </p> <p>A firewall
285          * policy defines how to monitor and manage your VPC network traffic, using a
286          * collection of inspection rule groups and other settings. Each firewall requires
287          * one firewall policy association, and you can use the same firewall policy for
288          * multiple firewalls. </p><p><h3>See Also:</h3>   <a
289          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/AssociateFirewallPolicy">AWS
290          * API Reference</a></p>
291          */
292         virtual Model::AssociateFirewallPolicyOutcome AssociateFirewallPolicy(const Model::AssociateFirewallPolicyRequest& request) const;
293 
294         /**
295          * <p>Associates a <a>FirewallPolicy</a> to a <a>Firewall</a>. </p> <p>A firewall
296          * policy defines how to monitor and manage your VPC network traffic, using a
297          * collection of inspection rule groups and other settings. Each firewall requires
298          * one firewall policy association, and you can use the same firewall policy for
299          * multiple firewalls. </p><p><h3>See Also:</h3>   <a
300          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/AssociateFirewallPolicy">AWS
301          * API Reference</a></p>
302          *
303          * returns a future to the operation so that it can be executed in parallel to other requests.
304          */
305         virtual Model::AssociateFirewallPolicyOutcomeCallable AssociateFirewallPolicyCallable(const Model::AssociateFirewallPolicyRequest& request) const;
306 
307         /**
308          * <p>Associates a <a>FirewallPolicy</a> to a <a>Firewall</a>. </p> <p>A firewall
309          * policy defines how to monitor and manage your VPC network traffic, using a
310          * collection of inspection rule groups and other settings. Each firewall requires
311          * one firewall policy association, and you can use the same firewall policy for
312          * multiple firewalls. </p><p><h3>See Also:</h3>   <a
313          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/AssociateFirewallPolicy">AWS
314          * API Reference</a></p>
315          *
316          * Queues the request into a thread executor and triggers associated callback when operation has finished.
317          */
318         virtual void AssociateFirewallPolicyAsync(const Model::AssociateFirewallPolicyRequest& request, const AssociateFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
319 
320         /**
321          * <p>Associates the specified subnets in the Amazon VPC to the firewall. You can
322          * specify one subnet for each of the Availability Zones that the VPC spans. </p>
323          * <p>This request creates an AWS Network Firewall firewall endpoint in each of the
324          * subnets. To enable the firewall's protections, you must also modify the VPC's
325          * route tables for each subnet's Availability Zone, to redirect the traffic that's
326          * coming into and going out of the zone through the firewall endpoint.
327          * </p><p><h3>See Also:</h3>   <a
328          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/AssociateSubnets">AWS
329          * API Reference</a></p>
330          */
331         virtual Model::AssociateSubnetsOutcome AssociateSubnets(const Model::AssociateSubnetsRequest& request) const;
332 
333         /**
334          * <p>Associates the specified subnets in the Amazon VPC to the firewall. You can
335          * specify one subnet for each of the Availability Zones that the VPC spans. </p>
336          * <p>This request creates an AWS Network Firewall firewall endpoint in each of the
337          * subnets. To enable the firewall's protections, you must also modify the VPC's
338          * route tables for each subnet's Availability Zone, to redirect the traffic that's
339          * coming into and going out of the zone through the firewall endpoint.
340          * </p><p><h3>See Also:</h3>   <a
341          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/AssociateSubnets">AWS
342          * API Reference</a></p>
343          *
344          * returns a future to the operation so that it can be executed in parallel to other requests.
345          */
346         virtual Model::AssociateSubnetsOutcomeCallable AssociateSubnetsCallable(const Model::AssociateSubnetsRequest& request) const;
347 
348         /**
349          * <p>Associates the specified subnets in the Amazon VPC to the firewall. You can
350          * specify one subnet for each of the Availability Zones that the VPC spans. </p>
351          * <p>This request creates an AWS Network Firewall firewall endpoint in each of the
352          * subnets. To enable the firewall's protections, you must also modify the VPC's
353          * route tables for each subnet's Availability Zone, to redirect the traffic that's
354          * coming into and going out of the zone through the firewall endpoint.
355          * </p><p><h3>See Also:</h3>   <a
356          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/AssociateSubnets">AWS
357          * API Reference</a></p>
358          *
359          * Queues the request into a thread executor and triggers associated callback when operation has finished.
360          */
361         virtual void AssociateSubnetsAsync(const Model::AssociateSubnetsRequest& request, const AssociateSubnetsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
362 
363         /**
364          * <p>Creates an AWS Network Firewall <a>Firewall</a> and accompanying
365          * <a>FirewallStatus</a> for a VPC. </p> <p>The firewall defines the configuration
366          * settings for an AWS Network Firewall firewall. The settings that you can define
367          * at creation include the firewall policy, the subnets in your VPC to use for the
368          * firewall endpoints, and any tags that are attached to the firewall AWS resource.
369          * </p> <p>After you create a firewall, you can provide additional settings, like
370          * the logging configuration. </p> <p>To update the settings for a firewall, you
371          * use the operations that apply to the settings themselves, for example
372          * <a>UpdateLoggingConfiguration</a>, <a>AssociateSubnets</a>, and
373          * <a>UpdateFirewallDeleteProtection</a>. </p> <p>To manage a firewall's tags, use
374          * the standard AWS resource tagging operations, <a>ListTagsForResource</a>,
375          * <a>TagResource</a>, and <a>UntagResource</a>.</p> <p>To retrieve information
376          * about firewalls, use <a>ListFirewalls</a> and
377          * <a>DescribeFirewall</a>.</p><p><h3>See Also:</h3>   <a
378          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateFirewall">AWS
379          * API Reference</a></p>
380          */
381         virtual Model::CreateFirewallOutcome CreateFirewall(const Model::CreateFirewallRequest& request) const;
382 
383         /**
384          * <p>Creates an AWS Network Firewall <a>Firewall</a> and accompanying
385          * <a>FirewallStatus</a> for a VPC. </p> <p>The firewall defines the configuration
386          * settings for an AWS Network Firewall firewall. The settings that you can define
387          * at creation include the firewall policy, the subnets in your VPC to use for the
388          * firewall endpoints, and any tags that are attached to the firewall AWS resource.
389          * </p> <p>After you create a firewall, you can provide additional settings, like
390          * the logging configuration. </p> <p>To update the settings for a firewall, you
391          * use the operations that apply to the settings themselves, for example
392          * <a>UpdateLoggingConfiguration</a>, <a>AssociateSubnets</a>, and
393          * <a>UpdateFirewallDeleteProtection</a>. </p> <p>To manage a firewall's tags, use
394          * the standard AWS resource tagging operations, <a>ListTagsForResource</a>,
395          * <a>TagResource</a>, and <a>UntagResource</a>.</p> <p>To retrieve information
396          * about firewalls, use <a>ListFirewalls</a> and
397          * <a>DescribeFirewall</a>.</p><p><h3>See Also:</h3>   <a
398          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateFirewall">AWS
399          * API Reference</a></p>
400          *
401          * returns a future to the operation so that it can be executed in parallel to other requests.
402          */
403         virtual Model::CreateFirewallOutcomeCallable CreateFirewallCallable(const Model::CreateFirewallRequest& request) const;
404 
405         /**
406          * <p>Creates an AWS Network Firewall <a>Firewall</a> and accompanying
407          * <a>FirewallStatus</a> for a VPC. </p> <p>The firewall defines the configuration
408          * settings for an AWS Network Firewall firewall. The settings that you can define
409          * at creation include the firewall policy, the subnets in your VPC to use for the
410          * firewall endpoints, and any tags that are attached to the firewall AWS resource.
411          * </p> <p>After you create a firewall, you can provide additional settings, like
412          * the logging configuration. </p> <p>To update the settings for a firewall, you
413          * use the operations that apply to the settings themselves, for example
414          * <a>UpdateLoggingConfiguration</a>, <a>AssociateSubnets</a>, and
415          * <a>UpdateFirewallDeleteProtection</a>. </p> <p>To manage a firewall's tags, use
416          * the standard AWS resource tagging operations, <a>ListTagsForResource</a>,
417          * <a>TagResource</a>, and <a>UntagResource</a>.</p> <p>To retrieve information
418          * about firewalls, use <a>ListFirewalls</a> and
419          * <a>DescribeFirewall</a>.</p><p><h3>See Also:</h3>   <a
420          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateFirewall">AWS
421          * API Reference</a></p>
422          *
423          * Queues the request into a thread executor and triggers associated callback when operation has finished.
424          */
425         virtual void CreateFirewallAsync(const Model::CreateFirewallRequest& request, const CreateFirewallResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
426 
427         /**
428          * <p>Creates the firewall policy for the firewall according to the specifications.
429          * </p> <p>An AWS Network Firewall firewall policy defines the behavior of a
430          * firewall, in a collection of stateless and stateful rule groups and other
431          * settings. You can use one firewall policy for multiple firewalls. </p><p><h3>See
432          * Also:</h3>   <a
433          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateFirewallPolicy">AWS
434          * API Reference</a></p>
435          */
436         virtual Model::CreateFirewallPolicyOutcome CreateFirewallPolicy(const Model::CreateFirewallPolicyRequest& request) const;
437 
438         /**
439          * <p>Creates the firewall policy for the firewall according to the specifications.
440          * </p> <p>An AWS Network Firewall firewall policy defines the behavior of a
441          * firewall, in a collection of stateless and stateful rule groups and other
442          * settings. You can use one firewall policy for multiple firewalls. </p><p><h3>See
443          * Also:</h3>   <a
444          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateFirewallPolicy">AWS
445          * API Reference</a></p>
446          *
447          * returns a future to the operation so that it can be executed in parallel to other requests.
448          */
449         virtual Model::CreateFirewallPolicyOutcomeCallable CreateFirewallPolicyCallable(const Model::CreateFirewallPolicyRequest& request) const;
450 
451         /**
452          * <p>Creates the firewall policy for the firewall according to the specifications.
453          * </p> <p>An AWS Network Firewall firewall policy defines the behavior of a
454          * firewall, in a collection of stateless and stateful rule groups and other
455          * settings. You can use one firewall policy for multiple firewalls. </p><p><h3>See
456          * Also:</h3>   <a
457          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateFirewallPolicy">AWS
458          * API Reference</a></p>
459          *
460          * Queues the request into a thread executor and triggers associated callback when operation has finished.
461          */
462         virtual void CreateFirewallPolicyAsync(const Model::CreateFirewallPolicyRequest& request, const CreateFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
463 
464         /**
465          * <p>Creates the specified stateless or stateful rule group, which includes the
466          * rules for network traffic inspection, a capacity setting, and tags. </p> <p>You
467          * provide your rule group specification in your request using either
468          * <code>RuleGroup</code> or <code>Rules</code>.</p><p><h3>See Also:</h3>   <a
469          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateRuleGroup">AWS
470          * API Reference</a></p>
471          */
472         virtual Model::CreateRuleGroupOutcome CreateRuleGroup(const Model::CreateRuleGroupRequest& request) const;
473 
474         /**
475          * <p>Creates the specified stateless or stateful rule group, which includes the
476          * rules for network traffic inspection, a capacity setting, and tags. </p> <p>You
477          * provide your rule group specification in your request using either
478          * <code>RuleGroup</code> or <code>Rules</code>.</p><p><h3>See Also:</h3>   <a
479          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateRuleGroup">AWS
480          * API Reference</a></p>
481          *
482          * returns a future to the operation so that it can be executed in parallel to other requests.
483          */
484         virtual Model::CreateRuleGroupOutcomeCallable CreateRuleGroupCallable(const Model::CreateRuleGroupRequest& request) const;
485 
486         /**
487          * <p>Creates the specified stateless or stateful rule group, which includes the
488          * rules for network traffic inspection, a capacity setting, and tags. </p> <p>You
489          * provide your rule group specification in your request using either
490          * <code>RuleGroup</code> or <code>Rules</code>.</p><p><h3>See Also:</h3>   <a
491          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateRuleGroup">AWS
492          * API Reference</a></p>
493          *
494          * Queues the request into a thread executor and triggers associated callback when operation has finished.
495          */
496         virtual void CreateRuleGroupAsync(const Model::CreateRuleGroupRequest& request, const CreateRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
497 
498         /**
499          * <p>Deletes the specified <a>Firewall</a> and its <a>FirewallStatus</a>. This
500          * operation requires the firewall's <code>DeleteProtection</code> flag to be
501          * <code>FALSE</code>. You can't revert this operation. </p> <p>You can check
502          * whether a firewall is in use by reviewing the route tables for the Availability
503          * Zones where you have firewall subnet mappings. Retrieve the subnet mappings by
504          * calling <a>DescribeFirewall</a>. You define and update the route tables through
505          * Amazon VPC. As needed, update the route tables for the zones to remove the
506          * firewall endpoints. When the route tables no longer use the firewall endpoints,
507          * you can remove the firewall safely.</p> <p>To delete a firewall, remove the
508          * delete protection if you need to using <a>UpdateFirewallDeleteProtection</a>,
509          * then delete the firewall by calling <a>DeleteFirewall</a>. </p><p><h3>See
510          * Also:</h3>   <a
511          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteFirewall">AWS
512          * API Reference</a></p>
513          */
514         virtual Model::DeleteFirewallOutcome DeleteFirewall(const Model::DeleteFirewallRequest& request) const;
515 
516         /**
517          * <p>Deletes the specified <a>Firewall</a> and its <a>FirewallStatus</a>. This
518          * operation requires the firewall's <code>DeleteProtection</code> flag to be
519          * <code>FALSE</code>. You can't revert this operation. </p> <p>You can check
520          * whether a firewall is in use by reviewing the route tables for the Availability
521          * Zones where you have firewall subnet mappings. Retrieve the subnet mappings by
522          * calling <a>DescribeFirewall</a>. You define and update the route tables through
523          * Amazon VPC. As needed, update the route tables for the zones to remove the
524          * firewall endpoints. When the route tables no longer use the firewall endpoints,
525          * you can remove the firewall safely.</p> <p>To delete a firewall, remove the
526          * delete protection if you need to using <a>UpdateFirewallDeleteProtection</a>,
527          * then delete the firewall by calling <a>DeleteFirewall</a>. </p><p><h3>See
528          * Also:</h3>   <a
529          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteFirewall">AWS
530          * API Reference</a></p>
531          *
532          * returns a future to the operation so that it can be executed in parallel to other requests.
533          */
534         virtual Model::DeleteFirewallOutcomeCallable DeleteFirewallCallable(const Model::DeleteFirewallRequest& request) const;
535 
536         /**
537          * <p>Deletes the specified <a>Firewall</a> and its <a>FirewallStatus</a>. This
538          * operation requires the firewall's <code>DeleteProtection</code> flag to be
539          * <code>FALSE</code>. You can't revert this operation. </p> <p>You can check
540          * whether a firewall is in use by reviewing the route tables for the Availability
541          * Zones where you have firewall subnet mappings. Retrieve the subnet mappings by
542          * calling <a>DescribeFirewall</a>. You define and update the route tables through
543          * Amazon VPC. As needed, update the route tables for the zones to remove the
544          * firewall endpoints. When the route tables no longer use the firewall endpoints,
545          * you can remove the firewall safely.</p> <p>To delete a firewall, remove the
546          * delete protection if you need to using <a>UpdateFirewallDeleteProtection</a>,
547          * then delete the firewall by calling <a>DeleteFirewall</a>. </p><p><h3>See
548          * Also:</h3>   <a
549          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteFirewall">AWS
550          * API Reference</a></p>
551          *
552          * Queues the request into a thread executor and triggers associated callback when operation has finished.
553          */
554         virtual void DeleteFirewallAsync(const Model::DeleteFirewallRequest& request, const DeleteFirewallResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
555 
556         /**
557          * <p>Deletes the specified <a>FirewallPolicy</a>. </p><p><h3>See Also:</h3>   <a
558          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteFirewallPolicy">AWS
559          * API Reference</a></p>
560          */
561         virtual Model::DeleteFirewallPolicyOutcome DeleteFirewallPolicy(const Model::DeleteFirewallPolicyRequest& request) const;
562 
563         /**
564          * <p>Deletes the specified <a>FirewallPolicy</a>. </p><p><h3>See Also:</h3>   <a
565          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteFirewallPolicy">AWS
566          * API Reference</a></p>
567          *
568          * returns a future to the operation so that it can be executed in parallel to other requests.
569          */
570         virtual Model::DeleteFirewallPolicyOutcomeCallable DeleteFirewallPolicyCallable(const Model::DeleteFirewallPolicyRequest& request) const;
571 
572         /**
573          * <p>Deletes the specified <a>FirewallPolicy</a>. </p><p><h3>See Also:</h3>   <a
574          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteFirewallPolicy">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 DeleteFirewallPolicyAsync(const Model::DeleteFirewallPolicyRequest& request, const DeleteFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
580 
581         /**
582          * <p>Deletes a resource policy that you created in a <a>PutResourcePolicy</a>
583          * request. </p><p><h3>See Also:</h3>   <a
584          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteResourcePolicy">AWS
585          * API Reference</a></p>
586          */
587         virtual Model::DeleteResourcePolicyOutcome DeleteResourcePolicy(const Model::DeleteResourcePolicyRequest& request) const;
588 
589         /**
590          * <p>Deletes a resource policy that you created in a <a>PutResourcePolicy</a>
591          * request. </p><p><h3>See Also:</h3>   <a
592          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteResourcePolicy">AWS
593          * API Reference</a></p>
594          *
595          * returns a future to the operation so that it can be executed in parallel to other requests.
596          */
597         virtual Model::DeleteResourcePolicyOutcomeCallable DeleteResourcePolicyCallable(const Model::DeleteResourcePolicyRequest& request) const;
598 
599         /**
600          * <p>Deletes a resource policy that you created in a <a>PutResourcePolicy</a>
601          * request. </p><p><h3>See Also:</h3>   <a
602          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteResourcePolicy">AWS
603          * API Reference</a></p>
604          *
605          * Queues the request into a thread executor and triggers associated callback when operation has finished.
606          */
607         virtual void DeleteResourcePolicyAsync(const Model::DeleteResourcePolicyRequest& request, const DeleteResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
608 
609         /**
610          * <p>Deletes the specified <a>RuleGroup</a>. </p><p><h3>See Also:</h3>   <a
611          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteRuleGroup">AWS
612          * API Reference</a></p>
613          */
614         virtual Model::DeleteRuleGroupOutcome DeleteRuleGroup(const Model::DeleteRuleGroupRequest& request) const;
615 
616         /**
617          * <p>Deletes the specified <a>RuleGroup</a>. </p><p><h3>See Also:</h3>   <a
618          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteRuleGroup">AWS
619          * API Reference</a></p>
620          *
621          * returns a future to the operation so that it can be executed in parallel to other requests.
622          */
623         virtual Model::DeleteRuleGroupOutcomeCallable DeleteRuleGroupCallable(const Model::DeleteRuleGroupRequest& request) const;
624 
625         /**
626          * <p>Deletes the specified <a>RuleGroup</a>. </p><p><h3>See Also:</h3>   <a
627          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteRuleGroup">AWS
628          * API Reference</a></p>
629          *
630          * Queues the request into a thread executor and triggers associated callback when operation has finished.
631          */
632         virtual void DeleteRuleGroupAsync(const Model::DeleteRuleGroupRequest& request, const DeleteRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
633 
634         /**
635          * <p>Returns the data objects for the specified firewall. </p><p><h3>See
636          * Also:</h3>   <a
637          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeFirewall">AWS
638          * API Reference</a></p>
639          */
640         virtual Model::DescribeFirewallOutcome DescribeFirewall(const Model::DescribeFirewallRequest& request) const;
641 
642         /**
643          * <p>Returns the data objects for the specified firewall. </p><p><h3>See
644          * Also:</h3>   <a
645          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeFirewall">AWS
646          * API Reference</a></p>
647          *
648          * returns a future to the operation so that it can be executed in parallel to other requests.
649          */
650         virtual Model::DescribeFirewallOutcomeCallable DescribeFirewallCallable(const Model::DescribeFirewallRequest& request) const;
651 
652         /**
653          * <p>Returns the data objects for the specified firewall. </p><p><h3>See
654          * Also:</h3>   <a
655          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeFirewall">AWS
656          * API Reference</a></p>
657          *
658          * Queues the request into a thread executor and triggers associated callback when operation has finished.
659          */
660         virtual void DescribeFirewallAsync(const Model::DescribeFirewallRequest& request, const DescribeFirewallResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
661 
662         /**
663          * <p>Returns the data objects for the specified firewall policy. </p><p><h3>See
664          * Also:</h3>   <a
665          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeFirewallPolicy">AWS
666          * API Reference</a></p>
667          */
668         virtual Model::DescribeFirewallPolicyOutcome DescribeFirewallPolicy(const Model::DescribeFirewallPolicyRequest& request) const;
669 
670         /**
671          * <p>Returns the data objects for the specified firewall policy. </p><p><h3>See
672          * Also:</h3>   <a
673          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeFirewallPolicy">AWS
674          * API Reference</a></p>
675          *
676          * returns a future to the operation so that it can be executed in parallel to other requests.
677          */
678         virtual Model::DescribeFirewallPolicyOutcomeCallable DescribeFirewallPolicyCallable(const Model::DescribeFirewallPolicyRequest& request) const;
679 
680         /**
681          * <p>Returns the data objects for the specified firewall policy. </p><p><h3>See
682          * Also:</h3>   <a
683          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeFirewallPolicy">AWS
684          * API Reference</a></p>
685          *
686          * Queues the request into a thread executor and triggers associated callback when operation has finished.
687          */
688         virtual void DescribeFirewallPolicyAsync(const Model::DescribeFirewallPolicyRequest& request, const DescribeFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
689 
690         /**
691          * <p>Returns the logging configuration for the specified firewall. </p><p><h3>See
692          * Also:</h3>   <a
693          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeLoggingConfiguration">AWS
694          * API Reference</a></p>
695          */
696         virtual Model::DescribeLoggingConfigurationOutcome DescribeLoggingConfiguration(const Model::DescribeLoggingConfigurationRequest& request) const;
697 
698         /**
699          * <p>Returns the logging configuration for the specified firewall. </p><p><h3>See
700          * Also:</h3>   <a
701          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeLoggingConfiguration">AWS
702          * API Reference</a></p>
703          *
704          * returns a future to the operation so that it can be executed in parallel to other requests.
705          */
706         virtual Model::DescribeLoggingConfigurationOutcomeCallable DescribeLoggingConfigurationCallable(const Model::DescribeLoggingConfigurationRequest& request) const;
707 
708         /**
709          * <p>Returns the logging configuration for the specified firewall. </p><p><h3>See
710          * Also:</h3>   <a
711          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeLoggingConfiguration">AWS
712          * API Reference</a></p>
713          *
714          * Queues the request into a thread executor and triggers associated callback when operation has finished.
715          */
716         virtual void DescribeLoggingConfigurationAsync(const Model::DescribeLoggingConfigurationRequest& request, const DescribeLoggingConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
717 
718         /**
719          * <p>Retrieves a resource policy that you created in a <a>PutResourcePolicy</a>
720          * request. </p><p><h3>See Also:</h3>   <a
721          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeResourcePolicy">AWS
722          * API Reference</a></p>
723          */
724         virtual Model::DescribeResourcePolicyOutcome DescribeResourcePolicy(const Model::DescribeResourcePolicyRequest& request) const;
725 
726         /**
727          * <p>Retrieves a resource policy that you created in a <a>PutResourcePolicy</a>
728          * request. </p><p><h3>See Also:</h3>   <a
729          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeResourcePolicy">AWS
730          * API Reference</a></p>
731          *
732          * returns a future to the operation so that it can be executed in parallel to other requests.
733          */
734         virtual Model::DescribeResourcePolicyOutcomeCallable DescribeResourcePolicyCallable(const Model::DescribeResourcePolicyRequest& request) const;
735 
736         /**
737          * <p>Retrieves a resource policy that you created in a <a>PutResourcePolicy</a>
738          * request. </p><p><h3>See Also:</h3>   <a
739          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeResourcePolicy">AWS
740          * API Reference</a></p>
741          *
742          * Queues the request into a thread executor and triggers associated callback when operation has finished.
743          */
744         virtual void DescribeResourcePolicyAsync(const Model::DescribeResourcePolicyRequest& request, const DescribeResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
745 
746         /**
747          * <p>Returns the data objects for the specified rule group. </p><p><h3>See
748          * Also:</h3>   <a
749          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeRuleGroup">AWS
750          * API Reference</a></p>
751          */
752         virtual Model::DescribeRuleGroupOutcome DescribeRuleGroup(const Model::DescribeRuleGroupRequest& request) const;
753 
754         /**
755          * <p>Returns the data objects for the specified rule group. </p><p><h3>See
756          * Also:</h3>   <a
757          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeRuleGroup">AWS
758          * API Reference</a></p>
759          *
760          * returns a future to the operation so that it can be executed in parallel to other requests.
761          */
762         virtual Model::DescribeRuleGroupOutcomeCallable DescribeRuleGroupCallable(const Model::DescribeRuleGroupRequest& request) const;
763 
764         /**
765          * <p>Returns the data objects for the specified rule group. </p><p><h3>See
766          * Also:</h3>   <a
767          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeRuleGroup">AWS
768          * API Reference</a></p>
769          *
770          * Queues the request into a thread executor and triggers associated callback when operation has finished.
771          */
772         virtual void DescribeRuleGroupAsync(const Model::DescribeRuleGroupRequest& request, const DescribeRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
773 
774         /**
775          * <p>Removes the specified subnet associations from the firewall. This removes the
776          * firewall endpoints from the subnets and removes any network filtering
777          * protections that the endpoints were providing. </p><p><h3>See Also:</h3>   <a
778          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DisassociateSubnets">AWS
779          * API Reference</a></p>
780          */
781         virtual Model::DisassociateSubnetsOutcome DisassociateSubnets(const Model::DisassociateSubnetsRequest& request) const;
782 
783         /**
784          * <p>Removes the specified subnet associations from the firewall. This removes the
785          * firewall endpoints from the subnets and removes any network filtering
786          * protections that the endpoints were providing. </p><p><h3>See Also:</h3>   <a
787          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DisassociateSubnets">AWS
788          * API Reference</a></p>
789          *
790          * returns a future to the operation so that it can be executed in parallel to other requests.
791          */
792         virtual Model::DisassociateSubnetsOutcomeCallable DisassociateSubnetsCallable(const Model::DisassociateSubnetsRequest& request) const;
793 
794         /**
795          * <p>Removes the specified subnet associations from the firewall. This removes the
796          * firewall endpoints from the subnets and removes any network filtering
797          * protections that the endpoints were providing. </p><p><h3>See Also:</h3>   <a
798          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DisassociateSubnets">AWS
799          * API Reference</a></p>
800          *
801          * Queues the request into a thread executor and triggers associated callback when operation has finished.
802          */
803         virtual void DisassociateSubnetsAsync(const Model::DisassociateSubnetsRequest& request, const DisassociateSubnetsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
804 
805         /**
806          * <p>Retrieves the metadata for the firewall policies that you have defined.
807          * Depending on your setting for max results and the number of firewall policies, a
808          * single call might not return the full list. </p><p><h3>See Also:</h3>   <a
809          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListFirewallPolicies">AWS
810          * API Reference</a></p>
811          */
812         virtual Model::ListFirewallPoliciesOutcome ListFirewallPolicies(const Model::ListFirewallPoliciesRequest& request) const;
813 
814         /**
815          * <p>Retrieves the metadata for the firewall policies that you have defined.
816          * Depending on your setting for max results and the number of firewall policies, a
817          * single call might not return the full list. </p><p><h3>See Also:</h3>   <a
818          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListFirewallPolicies">AWS
819          * API Reference</a></p>
820          *
821          * returns a future to the operation so that it can be executed in parallel to other requests.
822          */
823         virtual Model::ListFirewallPoliciesOutcomeCallable ListFirewallPoliciesCallable(const Model::ListFirewallPoliciesRequest& request) const;
824 
825         /**
826          * <p>Retrieves the metadata for the firewall policies that you have defined.
827          * Depending on your setting for max results and the number of firewall policies, a
828          * single call might not return the full list. </p><p><h3>See Also:</h3>   <a
829          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListFirewallPolicies">AWS
830          * API Reference</a></p>
831          *
832          * Queues the request into a thread executor and triggers associated callback when operation has finished.
833          */
834         virtual void ListFirewallPoliciesAsync(const Model::ListFirewallPoliciesRequest& request, const ListFirewallPoliciesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
835 
836         /**
837          * <p>Retrieves the metadata for the firewalls that you have defined. If you
838          * provide VPC identifiers in your request, this returns only the firewalls for
839          * those VPCs.</p> <p>Depending on your setting for max results and the number of
840          * firewalls, a single call might not return the full list. </p><p><h3>See
841          * Also:</h3>   <a
842          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListFirewalls">AWS
843          * API Reference</a></p>
844          */
845         virtual Model::ListFirewallsOutcome ListFirewalls(const Model::ListFirewallsRequest& request) const;
846 
847         /**
848          * <p>Retrieves the metadata for the firewalls that you have defined. If you
849          * provide VPC identifiers in your request, this returns only the firewalls for
850          * those VPCs.</p> <p>Depending on your setting for max results and the number of
851          * firewalls, a single call might not return the full list. </p><p><h3>See
852          * Also:</h3>   <a
853          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListFirewalls">AWS
854          * API Reference</a></p>
855          *
856          * returns a future to the operation so that it can be executed in parallel to other requests.
857          */
858         virtual Model::ListFirewallsOutcomeCallable ListFirewallsCallable(const Model::ListFirewallsRequest& request) const;
859 
860         /**
861          * <p>Retrieves the metadata for the firewalls that you have defined. If you
862          * provide VPC identifiers in your request, this returns only the firewalls for
863          * those VPCs.</p> <p>Depending on your setting for max results and the number of
864          * firewalls, a single call might not return the full list. </p><p><h3>See
865          * Also:</h3>   <a
866          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListFirewalls">AWS
867          * API Reference</a></p>
868          *
869          * Queues the request into a thread executor and triggers associated callback when operation has finished.
870          */
871         virtual void ListFirewallsAsync(const Model::ListFirewallsRequest& request, const ListFirewallsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
872 
873         /**
874          * <p>Retrieves the metadata for the rule groups that you have defined. Depending
875          * on your setting for max results and the number of rule groups, a single call
876          * might not return the full list. </p><p><h3>See Also:</h3>   <a
877          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListRuleGroups">AWS
878          * API Reference</a></p>
879          */
880         virtual Model::ListRuleGroupsOutcome ListRuleGroups(const Model::ListRuleGroupsRequest& request) const;
881 
882         /**
883          * <p>Retrieves the metadata for the rule groups that you have defined. Depending
884          * on your setting for max results and the number of rule groups, a single call
885          * might not return the full list. </p><p><h3>See Also:</h3>   <a
886          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListRuleGroups">AWS
887          * API Reference</a></p>
888          *
889          * returns a future to the operation so that it can be executed in parallel to other requests.
890          */
891         virtual Model::ListRuleGroupsOutcomeCallable ListRuleGroupsCallable(const Model::ListRuleGroupsRequest& request) const;
892 
893         /**
894          * <p>Retrieves the metadata for the rule groups that you have defined. Depending
895          * on your setting for max results and the number of rule groups, a single call
896          * might not return the full list. </p><p><h3>See Also:</h3>   <a
897          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListRuleGroups">AWS
898          * API Reference</a></p>
899          *
900          * Queues the request into a thread executor and triggers associated callback when operation has finished.
901          */
902         virtual void ListRuleGroupsAsync(const Model::ListRuleGroupsRequest& request, const ListRuleGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
903 
904         /**
905          * <p>Retrieves the tags associated with the specified resource. Tags are key:value
906          * pairs that you can use to categorize and manage your resources, for purposes
907          * like billing. For example, you might set the tag key to "customer" and the value
908          * to the customer name or ID. You can specify one or more tags to add to each AWS
909          * resource, up to 50 tags for a resource.</p> <p>You can tag the AWS resources
910          * that you manage through AWS Network Firewall: firewalls, firewall policies, and
911          * rule groups. </p><p><h3>See Also:</h3>   <a
912          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListTagsForResource">AWS
913          * API Reference</a></p>
914          */
915         virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const;
916 
917         /**
918          * <p>Retrieves the tags associated with the specified resource. Tags are key:value
919          * pairs that you can use to categorize and manage your resources, for purposes
920          * like billing. For example, you might set the tag key to "customer" and the value
921          * to the customer name or ID. You can specify one or more tags to add to each AWS
922          * resource, up to 50 tags for a resource.</p> <p>You can tag the AWS resources
923          * that you manage through AWS Network Firewall: firewalls, firewall policies, and
924          * rule groups. </p><p><h3>See Also:</h3>   <a
925          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListTagsForResource">AWS
926          * API Reference</a></p>
927          *
928          * returns a future to the operation so that it can be executed in parallel to other requests.
929          */
930         virtual Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const Model::ListTagsForResourceRequest& request) const;
931 
932         /**
933          * <p>Retrieves the tags associated with the specified resource. Tags are key:value
934          * pairs that you can use to categorize and manage your resources, for purposes
935          * like billing. For example, you might set the tag key to "customer" and the value
936          * to the customer name or ID. You can specify one or more tags to add to each AWS
937          * resource, up to 50 tags for a resource.</p> <p>You can tag the AWS resources
938          * that you manage through AWS Network Firewall: firewalls, firewall policies, and
939          * rule groups. </p><p><h3>See Also:</h3>   <a
940          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListTagsForResource">AWS
941          * API Reference</a></p>
942          *
943          * Queues the request into a thread executor and triggers associated callback when operation has finished.
944          */
945         virtual void ListTagsForResourceAsync(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
946 
947         /**
948          * <p>Creates or updates an AWS Identity and Access Management policy for your rule
949          * group or firewall policy. Use this to share rule groups and firewall policies
950          * between accounts. This operation works in conjunction with the AWS Resource
951          * Access Manager (RAM) service to manage resource sharing for Network Firewall.
952          * </p> <p>Use this operation to create or update a resource policy for your rule
953          * group or firewall policy. In the policy, you specify the accounts that you want
954          * to share the resource with and the operations that you want the accounts to be
955          * able to perform. </p> <p>When you add an account in the resource policy, you
956          * then run the following Resource Access Manager (RAM) operations to access and
957          * accept the shared rule group or firewall policy. </p> <ul> <li> <p> <a
958          * href="https://docs.aws.amazon.com/ram/latest/APIReference/API_GetResourceShareInvitations.html">GetResourceShareInvitations</a>
959          * - Returns the Amazon Resource Names (ARNs) of the resource share invitations.
960          * </p> </li> <li> <p> <a
961          * href="https://docs.aws.amazon.com/ram/latest/APIReference/API_AcceptResourceShareInvitation.html">AcceptResourceShareInvitation</a>
962          * - Accepts the share invitation for a specified resource share. </p> </li> </ul>
963          * <p>For additional information about resource sharing using RAM, see <a
964          * href="https://docs.aws.amazon.com/ram/latest/userguide/what-is.html">AWS
965          * Resource Access Manager User Guide</a>.</p><p><h3>See Also:</h3>   <a
966          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/PutResourcePolicy">AWS
967          * API Reference</a></p>
968          */
969         virtual Model::PutResourcePolicyOutcome PutResourcePolicy(const Model::PutResourcePolicyRequest& request) const;
970 
971         /**
972          * <p>Creates or updates an AWS Identity and Access Management policy for your rule
973          * group or firewall policy. Use this to share rule groups and firewall policies
974          * between accounts. This operation works in conjunction with the AWS Resource
975          * Access Manager (RAM) service to manage resource sharing for Network Firewall.
976          * </p> <p>Use this operation to create or update a resource policy for your rule
977          * group or firewall policy. In the policy, you specify the accounts that you want
978          * to share the resource with and the operations that you want the accounts to be
979          * able to perform. </p> <p>When you add an account in the resource policy, you
980          * then run the following Resource Access Manager (RAM) operations to access and
981          * accept the shared rule group or firewall policy. </p> <ul> <li> <p> <a
982          * href="https://docs.aws.amazon.com/ram/latest/APIReference/API_GetResourceShareInvitations.html">GetResourceShareInvitations</a>
983          * - Returns the Amazon Resource Names (ARNs) of the resource share invitations.
984          * </p> </li> <li> <p> <a
985          * href="https://docs.aws.amazon.com/ram/latest/APIReference/API_AcceptResourceShareInvitation.html">AcceptResourceShareInvitation</a>
986          * - Accepts the share invitation for a specified resource share. </p> </li> </ul>
987          * <p>For additional information about resource sharing using RAM, see <a
988          * href="https://docs.aws.amazon.com/ram/latest/userguide/what-is.html">AWS
989          * Resource Access Manager User Guide</a>.</p><p><h3>See Also:</h3>   <a
990          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/PutResourcePolicy">AWS
991          * API Reference</a></p>
992          *
993          * returns a future to the operation so that it can be executed in parallel to other requests.
994          */
995         virtual Model::PutResourcePolicyOutcomeCallable PutResourcePolicyCallable(const Model::PutResourcePolicyRequest& request) const;
996 
997         /**
998          * <p>Creates or updates an AWS Identity and Access Management policy for your rule
999          * group or firewall policy. Use this to share rule groups and firewall policies
1000          * between accounts. This operation works in conjunction with the AWS Resource
1001          * Access Manager (RAM) service to manage resource sharing for Network Firewall.
1002          * </p> <p>Use this operation to create or update a resource policy for your rule
1003          * group or firewall policy. In the policy, you specify the accounts that you want
1004          * to share the resource with and the operations that you want the accounts to be
1005          * able to perform. </p> <p>When you add an account in the resource policy, you
1006          * then run the following Resource Access Manager (RAM) operations to access and
1007          * accept the shared rule group or firewall policy. </p> <ul> <li> <p> <a
1008          * href="https://docs.aws.amazon.com/ram/latest/APIReference/API_GetResourceShareInvitations.html">GetResourceShareInvitations</a>
1009          * - Returns the Amazon Resource Names (ARNs) of the resource share invitations.
1010          * </p> </li> <li> <p> <a
1011          * href="https://docs.aws.amazon.com/ram/latest/APIReference/API_AcceptResourceShareInvitation.html">AcceptResourceShareInvitation</a>
1012          * - Accepts the share invitation for a specified resource share. </p> </li> </ul>
1013          * <p>For additional information about resource sharing using RAM, see <a
1014          * href="https://docs.aws.amazon.com/ram/latest/userguide/what-is.html">AWS
1015          * Resource Access Manager User Guide</a>.</p><p><h3>See Also:</h3>   <a
1016          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/PutResourcePolicy">AWS
1017          * API Reference</a></p>
1018          *
1019          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1020          */
1021         virtual void PutResourcePolicyAsync(const Model::PutResourcePolicyRequest& request, const PutResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1022 
1023         /**
1024          * <p>Adds the specified tags to the specified resource. Tags are key:value pairs
1025          * that you can use to categorize and manage your resources, for purposes like
1026          * billing. For example, you might set the tag key to "customer" and the value to
1027          * the customer name or ID. You can specify one or more tags to add to each AWS
1028          * resource, up to 50 tags for a resource.</p> <p>You can tag the AWS resources
1029          * that you manage through AWS Network Firewall: firewalls, firewall policies, and
1030          * rule groups. </p><p><h3>See Also:</h3>   <a
1031          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/TagResource">AWS
1032          * API Reference</a></p>
1033          */
1034         virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const;
1035 
1036         /**
1037          * <p>Adds the specified tags to the specified resource. Tags are key:value pairs
1038          * that you can use to categorize and manage your resources, for purposes like
1039          * billing. For example, you might set the tag key to "customer" and the value to
1040          * the customer name or ID. You can specify one or more tags to add to each AWS
1041          * resource, up to 50 tags for a resource.</p> <p>You can tag the AWS resources
1042          * that you manage through AWS Network Firewall: firewalls, firewall policies, and
1043          * rule groups. </p><p><h3>See Also:</h3>   <a
1044          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/TagResource">AWS
1045          * API Reference</a></p>
1046          *
1047          * returns a future to the operation so that it can be executed in parallel to other requests.
1048          */
1049         virtual Model::TagResourceOutcomeCallable TagResourceCallable(const Model::TagResourceRequest& request) const;
1050 
1051         /**
1052          * <p>Adds the specified tags to the specified resource. Tags are key:value pairs
1053          * that you can use to categorize and manage your resources, for purposes like
1054          * billing. For example, you might set the tag key to "customer" and the value to
1055          * the customer name or ID. You can specify one or more tags to add to each AWS
1056          * resource, up to 50 tags for a resource.</p> <p>You can tag the AWS resources
1057          * that you manage through AWS Network Firewall: firewalls, firewall policies, and
1058          * rule groups. </p><p><h3>See Also:</h3>   <a
1059          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/TagResource">AWS
1060          * API Reference</a></p>
1061          *
1062          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1063          */
1064         virtual void TagResourceAsync(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1065 
1066         /**
1067          * <p>Removes the tags with the specified keys from the specified resource. Tags
1068          * are key:value pairs that you can use to categorize and manage your resources,
1069          * for purposes like billing. For example, you might set the tag key to "customer"
1070          * and the value to the customer name or ID. You can specify one or more tags to
1071          * add to each AWS resource, up to 50 tags for a resource.</p> <p>You can manage
1072          * tags for the AWS resources that you manage through AWS Network Firewall:
1073          * firewalls, firewall policies, and rule groups. </p><p><h3>See Also:</h3>   <a
1074          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UntagResource">AWS
1075          * API Reference</a></p>
1076          */
1077         virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const;
1078 
1079         /**
1080          * <p>Removes the tags with the specified keys from the specified resource. Tags
1081          * are key:value pairs that you can use to categorize and manage your resources,
1082          * for purposes like billing. For example, you might set the tag key to "customer"
1083          * and the value to the customer name or ID. You can specify one or more tags to
1084          * add to each AWS resource, up to 50 tags for a resource.</p> <p>You can manage
1085          * tags for the AWS resources that you manage through AWS Network Firewall:
1086          * firewalls, firewall policies, and rule groups. </p><p><h3>See Also:</h3>   <a
1087          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UntagResource">AWS
1088          * API Reference</a></p>
1089          *
1090          * returns a future to the operation so that it can be executed in parallel to other requests.
1091          */
1092         virtual Model::UntagResourceOutcomeCallable UntagResourceCallable(const Model::UntagResourceRequest& request) const;
1093 
1094         /**
1095          * <p>Removes the tags with the specified keys from the specified resource. Tags
1096          * are key:value pairs that you can use to categorize and manage your resources,
1097          * for purposes like billing. For example, you might set the tag key to "customer"
1098          * and the value to the customer name or ID. You can specify one or more tags to
1099          * add to each AWS resource, up to 50 tags for a resource.</p> <p>You can manage
1100          * tags for the AWS resources that you manage through AWS Network Firewall:
1101          * firewalls, firewall policies, and rule groups. </p><p><h3>See Also:</h3>   <a
1102          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UntagResource">AWS
1103          * API Reference</a></p>
1104          *
1105          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1106          */
1107         virtual void UntagResourceAsync(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1108 
1109         /**
1110          * <p>Modifies the flag, <code>DeleteProtection</code>, which indicates whether it
1111          * is possible to delete the firewall. If the flag is set to <code>TRUE</code>, the
1112          * firewall is protected against deletion. This setting helps protect against
1113          * accidentally deleting a firewall that's in use. </p><p><h3>See Also:</h3>   <a
1114          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallDeleteProtection">AWS
1115          * API Reference</a></p>
1116          */
1117         virtual Model::UpdateFirewallDeleteProtectionOutcome UpdateFirewallDeleteProtection(const Model::UpdateFirewallDeleteProtectionRequest& request) const;
1118 
1119         /**
1120          * <p>Modifies the flag, <code>DeleteProtection</code>, which indicates whether it
1121          * is possible to delete the firewall. If the flag is set to <code>TRUE</code>, the
1122          * firewall is protected against deletion. This setting helps protect against
1123          * accidentally deleting a firewall that's in use. </p><p><h3>See Also:</h3>   <a
1124          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallDeleteProtection">AWS
1125          * API Reference</a></p>
1126          *
1127          * returns a future to the operation so that it can be executed in parallel to other requests.
1128          */
1129         virtual Model::UpdateFirewallDeleteProtectionOutcomeCallable UpdateFirewallDeleteProtectionCallable(const Model::UpdateFirewallDeleteProtectionRequest& request) const;
1130 
1131         /**
1132          * <p>Modifies the flag, <code>DeleteProtection</code>, which indicates whether it
1133          * is possible to delete the firewall. If the flag is set to <code>TRUE</code>, the
1134          * firewall is protected against deletion. This setting helps protect against
1135          * accidentally deleting a firewall that's in use. </p><p><h3>See Also:</h3>   <a
1136          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallDeleteProtection">AWS
1137          * API Reference</a></p>
1138          *
1139          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1140          */
1141         virtual void UpdateFirewallDeleteProtectionAsync(const Model::UpdateFirewallDeleteProtectionRequest& request, const UpdateFirewallDeleteProtectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1142 
1143         /**
1144          * <p>Modifies the description for the specified firewall. Use the description to
1145          * help you identify the firewall when you're working with it. </p><p><h3>See
1146          * Also:</h3>   <a
1147          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallDescription">AWS
1148          * API Reference</a></p>
1149          */
1150         virtual Model::UpdateFirewallDescriptionOutcome UpdateFirewallDescription(const Model::UpdateFirewallDescriptionRequest& request) const;
1151 
1152         /**
1153          * <p>Modifies the description for the specified firewall. Use the description to
1154          * help you identify the firewall when you're working with it. </p><p><h3>See
1155          * Also:</h3>   <a
1156          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallDescription">AWS
1157          * API Reference</a></p>
1158          *
1159          * returns a future to the operation so that it can be executed in parallel to other requests.
1160          */
1161         virtual Model::UpdateFirewallDescriptionOutcomeCallable UpdateFirewallDescriptionCallable(const Model::UpdateFirewallDescriptionRequest& request) const;
1162 
1163         /**
1164          * <p>Modifies the description for the specified firewall. Use the description to
1165          * help you identify the firewall when you're working with it. </p><p><h3>See
1166          * Also:</h3>   <a
1167          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallDescription">AWS
1168          * API Reference</a></p>
1169          *
1170          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1171          */
1172         virtual void UpdateFirewallDescriptionAsync(const Model::UpdateFirewallDescriptionRequest& request, const UpdateFirewallDescriptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1173 
1174         /**
1175          * <p>Updates the properties of the specified firewall policy.</p><p><h3>See
1176          * Also:</h3>   <a
1177          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallPolicy">AWS
1178          * API Reference</a></p>
1179          */
1180         virtual Model::UpdateFirewallPolicyOutcome UpdateFirewallPolicy(const Model::UpdateFirewallPolicyRequest& request) const;
1181 
1182         /**
1183          * <p>Updates the properties of the specified firewall policy.</p><p><h3>See
1184          * Also:</h3>   <a
1185          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallPolicy">AWS
1186          * API Reference</a></p>
1187          *
1188          * returns a future to the operation so that it can be executed in parallel to other requests.
1189          */
1190         virtual Model::UpdateFirewallPolicyOutcomeCallable UpdateFirewallPolicyCallable(const Model::UpdateFirewallPolicyRequest& request) const;
1191 
1192         /**
1193          * <p>Updates the properties of the specified firewall policy.</p><p><h3>See
1194          * Also:</h3>   <a
1195          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallPolicy">AWS
1196          * API Reference</a></p>
1197          *
1198          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1199          */
1200         virtual void UpdateFirewallPolicyAsync(const Model::UpdateFirewallPolicyRequest& request, const UpdateFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1201 
1202         /**
1203          * <p/><p><h3>See Also:</h3>   <a
1204          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallPolicyChangeProtection">AWS
1205          * API Reference</a></p>
1206          */
1207         virtual Model::UpdateFirewallPolicyChangeProtectionOutcome UpdateFirewallPolicyChangeProtection(const Model::UpdateFirewallPolicyChangeProtectionRequest& request) const;
1208 
1209         /**
1210          * <p/><p><h3>See Also:</h3>   <a
1211          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallPolicyChangeProtection">AWS
1212          * API Reference</a></p>
1213          *
1214          * returns a future to the operation so that it can be executed in parallel to other requests.
1215          */
1216         virtual Model::UpdateFirewallPolicyChangeProtectionOutcomeCallable UpdateFirewallPolicyChangeProtectionCallable(const Model::UpdateFirewallPolicyChangeProtectionRequest& request) const;
1217 
1218         /**
1219          * <p/><p><h3>See Also:</h3>   <a
1220          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallPolicyChangeProtection">AWS
1221          * API Reference</a></p>
1222          *
1223          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1224          */
1225         virtual void UpdateFirewallPolicyChangeProtectionAsync(const Model::UpdateFirewallPolicyChangeProtectionRequest& request, const UpdateFirewallPolicyChangeProtectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1226 
1227         /**
1228          * <p>Sets the logging configuration for the specified firewall. </p> <p>To change
1229          * the logging configuration, retrieve the <a>LoggingConfiguration</a> by calling
1230          * <a>DescribeLoggingConfiguration</a>, then change it and provide the modified
1231          * object to this update call. You must change the logging configuration one
1232          * <a>LogDestinationConfig</a> at a time inside the retrieved
1233          * <a>LoggingConfiguration</a> object. </p> <p>You can perform only one of the
1234          * following actions in any call to <code>UpdateLoggingConfiguration</code>: </p>
1235          * <ul> <li> <p>Create a new log destination object by adding a single
1236          * <code>LogDestinationConfig</code> array element to
1237          * <code>LogDestinationConfigs</code>.</p> </li> <li> <p>Delete a log destination
1238          * object by removing a single <code>LogDestinationConfig</code> array element from
1239          * <code>LogDestinationConfigs</code>.</p> </li> <li> <p>Change the
1240          * <code>LogDestination</code> setting in a single
1241          * <code>LogDestinationConfig</code> array element.</p> </li> </ul> <p>You can't
1242          * change the <code>LogDestinationType</code> or <code>LogType</code> in a
1243          * <code>LogDestinationConfig</code>. To change these settings, delete the existing
1244          * <code>LogDestinationConfig</code> object and create a new one, using two
1245          * separate calls to this update operation.</p><p><h3>See Also:</h3>   <a
1246          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateLoggingConfiguration">AWS
1247          * API Reference</a></p>
1248          */
1249         virtual Model::UpdateLoggingConfigurationOutcome UpdateLoggingConfiguration(const Model::UpdateLoggingConfigurationRequest& request) const;
1250 
1251         /**
1252          * <p>Sets the logging configuration for the specified firewall. </p> <p>To change
1253          * the logging configuration, retrieve the <a>LoggingConfiguration</a> by calling
1254          * <a>DescribeLoggingConfiguration</a>, then change it and provide the modified
1255          * object to this update call. You must change the logging configuration one
1256          * <a>LogDestinationConfig</a> at a time inside the retrieved
1257          * <a>LoggingConfiguration</a> object. </p> <p>You can perform only one of the
1258          * following actions in any call to <code>UpdateLoggingConfiguration</code>: </p>
1259          * <ul> <li> <p>Create a new log destination object by adding a single
1260          * <code>LogDestinationConfig</code> array element to
1261          * <code>LogDestinationConfigs</code>.</p> </li> <li> <p>Delete a log destination
1262          * object by removing a single <code>LogDestinationConfig</code> array element from
1263          * <code>LogDestinationConfigs</code>.</p> </li> <li> <p>Change the
1264          * <code>LogDestination</code> setting in a single
1265          * <code>LogDestinationConfig</code> array element.</p> </li> </ul> <p>You can't
1266          * change the <code>LogDestinationType</code> or <code>LogType</code> in a
1267          * <code>LogDestinationConfig</code>. To change these settings, delete the existing
1268          * <code>LogDestinationConfig</code> object and create a new one, using two
1269          * separate calls to this update operation.</p><p><h3>See Also:</h3>   <a
1270          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateLoggingConfiguration">AWS
1271          * API Reference</a></p>
1272          *
1273          * returns a future to the operation so that it can be executed in parallel to other requests.
1274          */
1275         virtual Model::UpdateLoggingConfigurationOutcomeCallable UpdateLoggingConfigurationCallable(const Model::UpdateLoggingConfigurationRequest& request) const;
1276 
1277         /**
1278          * <p>Sets the logging configuration for the specified firewall. </p> <p>To change
1279          * the logging configuration, retrieve the <a>LoggingConfiguration</a> by calling
1280          * <a>DescribeLoggingConfiguration</a>, then change it and provide the modified
1281          * object to this update call. You must change the logging configuration one
1282          * <a>LogDestinationConfig</a> at a time inside the retrieved
1283          * <a>LoggingConfiguration</a> object. </p> <p>You can perform only one of the
1284          * following actions in any call to <code>UpdateLoggingConfiguration</code>: </p>
1285          * <ul> <li> <p>Create a new log destination object by adding a single
1286          * <code>LogDestinationConfig</code> array element to
1287          * <code>LogDestinationConfigs</code>.</p> </li> <li> <p>Delete a log destination
1288          * object by removing a single <code>LogDestinationConfig</code> array element from
1289          * <code>LogDestinationConfigs</code>.</p> </li> <li> <p>Change the
1290          * <code>LogDestination</code> setting in a single
1291          * <code>LogDestinationConfig</code> array element.</p> </li> </ul> <p>You can't
1292          * change the <code>LogDestinationType</code> or <code>LogType</code> in a
1293          * <code>LogDestinationConfig</code>. To change these settings, delete the existing
1294          * <code>LogDestinationConfig</code> object and create a new one, using two
1295          * separate calls to this update operation.</p><p><h3>See Also:</h3>   <a
1296          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateLoggingConfiguration">AWS
1297          * API Reference</a></p>
1298          *
1299          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1300          */
1301         virtual void UpdateLoggingConfigurationAsync(const Model::UpdateLoggingConfigurationRequest& request, const UpdateLoggingConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1302 
1303         /**
1304          * <p>Updates the rule settings for the specified rule group. You use a rule group
1305          * by reference in one or more firewall policies. When you modify a rule group, you
1306          * modify all firewall policies that use the rule group. </p> <p>To update a rule
1307          * group, first call <a>DescribeRuleGroup</a> to retrieve the current
1308          * <a>RuleGroup</a> object, update the object as needed, and then provide the
1309          * updated object to this call. </p><p><h3>See Also:</h3>   <a
1310          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateRuleGroup">AWS
1311          * API Reference</a></p>
1312          */
1313         virtual Model::UpdateRuleGroupOutcome UpdateRuleGroup(const Model::UpdateRuleGroupRequest& request) const;
1314 
1315         /**
1316          * <p>Updates the rule settings for the specified rule group. You use a rule group
1317          * by reference in one or more firewall policies. When you modify a rule group, you
1318          * modify all firewall policies that use the rule group. </p> <p>To update a rule
1319          * group, first call <a>DescribeRuleGroup</a> to retrieve the current
1320          * <a>RuleGroup</a> object, update the object as needed, and then provide the
1321          * updated object to this call. </p><p><h3>See Also:</h3>   <a
1322          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateRuleGroup">AWS
1323          * API Reference</a></p>
1324          *
1325          * returns a future to the operation so that it can be executed in parallel to other requests.
1326          */
1327         virtual Model::UpdateRuleGroupOutcomeCallable UpdateRuleGroupCallable(const Model::UpdateRuleGroupRequest& request) const;
1328 
1329         /**
1330          * <p>Updates the rule settings for the specified rule group. You use a rule group
1331          * by reference in one or more firewall policies. When you modify a rule group, you
1332          * modify all firewall policies that use the rule group. </p> <p>To update a rule
1333          * group, first call <a>DescribeRuleGroup</a> to retrieve the current
1334          * <a>RuleGroup</a> object, update the object as needed, and then provide the
1335          * updated object to this call. </p><p><h3>See Also:</h3>   <a
1336          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateRuleGroup">AWS
1337          * API Reference</a></p>
1338          *
1339          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1340          */
1341         virtual void UpdateRuleGroupAsync(const Model::UpdateRuleGroupRequest& request, const UpdateRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1342 
1343         /**
1344          * <p/><p><h3>See Also:</h3>   <a
1345          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateSubnetChangeProtection">AWS
1346          * API Reference</a></p>
1347          */
1348         virtual Model::UpdateSubnetChangeProtectionOutcome UpdateSubnetChangeProtection(const Model::UpdateSubnetChangeProtectionRequest& request) const;
1349 
1350         /**
1351          * <p/><p><h3>See Also:</h3>   <a
1352          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateSubnetChangeProtection">AWS
1353          * API Reference</a></p>
1354          *
1355          * returns a future to the operation so that it can be executed in parallel to other requests.
1356          */
1357         virtual Model::UpdateSubnetChangeProtectionOutcomeCallable UpdateSubnetChangeProtectionCallable(const Model::UpdateSubnetChangeProtectionRequest& request) const;
1358 
1359         /**
1360          * <p/><p><h3>See Also:</h3>   <a
1361          * href="http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateSubnetChangeProtection">AWS
1362          * API Reference</a></p>
1363          *
1364          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1365          */
1366         virtual void UpdateSubnetChangeProtectionAsync(const Model::UpdateSubnetChangeProtectionRequest& request, const UpdateSubnetChangeProtectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1367 
1368 
1369       void OverrideEndpoint(const Aws::String& endpoint);
1370     private:
1371       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
1372         void AssociateFirewallPolicyAsyncHelper(const Model::AssociateFirewallPolicyRequest& request, const AssociateFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1373         void AssociateSubnetsAsyncHelper(const Model::AssociateSubnetsRequest& request, const AssociateSubnetsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1374         void CreateFirewallAsyncHelper(const Model::CreateFirewallRequest& request, const CreateFirewallResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1375         void CreateFirewallPolicyAsyncHelper(const Model::CreateFirewallPolicyRequest& request, const CreateFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1376         void CreateRuleGroupAsyncHelper(const Model::CreateRuleGroupRequest& request, const CreateRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1377         void DeleteFirewallAsyncHelper(const Model::DeleteFirewallRequest& request, const DeleteFirewallResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1378         void DeleteFirewallPolicyAsyncHelper(const Model::DeleteFirewallPolicyRequest& request, const DeleteFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1379         void DeleteResourcePolicyAsyncHelper(const Model::DeleteResourcePolicyRequest& request, const DeleteResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1380         void DeleteRuleGroupAsyncHelper(const Model::DeleteRuleGroupRequest& request, const DeleteRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1381         void DescribeFirewallAsyncHelper(const Model::DescribeFirewallRequest& request, const DescribeFirewallResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1382         void DescribeFirewallPolicyAsyncHelper(const Model::DescribeFirewallPolicyRequest& request, const DescribeFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1383         void DescribeLoggingConfigurationAsyncHelper(const Model::DescribeLoggingConfigurationRequest& request, const DescribeLoggingConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1384         void DescribeResourcePolicyAsyncHelper(const Model::DescribeResourcePolicyRequest& request, const DescribeResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1385         void DescribeRuleGroupAsyncHelper(const Model::DescribeRuleGroupRequest& request, const DescribeRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1386         void DisassociateSubnetsAsyncHelper(const Model::DisassociateSubnetsRequest& request, const DisassociateSubnetsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1387         void ListFirewallPoliciesAsyncHelper(const Model::ListFirewallPoliciesRequest& request, const ListFirewallPoliciesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1388         void ListFirewallsAsyncHelper(const Model::ListFirewallsRequest& request, const ListFirewallsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1389         void ListRuleGroupsAsyncHelper(const Model::ListRuleGroupsRequest& request, const ListRuleGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1390         void ListTagsForResourceAsyncHelper(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1391         void PutResourcePolicyAsyncHelper(const Model::PutResourcePolicyRequest& request, const PutResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1392         void TagResourceAsyncHelper(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1393         void UntagResourceAsyncHelper(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1394         void UpdateFirewallDeleteProtectionAsyncHelper(const Model::UpdateFirewallDeleteProtectionRequest& request, const UpdateFirewallDeleteProtectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1395         void UpdateFirewallDescriptionAsyncHelper(const Model::UpdateFirewallDescriptionRequest& request, const UpdateFirewallDescriptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1396         void UpdateFirewallPolicyAsyncHelper(const Model::UpdateFirewallPolicyRequest& request, const UpdateFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1397         void UpdateFirewallPolicyChangeProtectionAsyncHelper(const Model::UpdateFirewallPolicyChangeProtectionRequest& request, const UpdateFirewallPolicyChangeProtectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1398         void UpdateLoggingConfigurationAsyncHelper(const Model::UpdateLoggingConfigurationRequest& request, const UpdateLoggingConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1399         void UpdateRuleGroupAsyncHelper(const Model::UpdateRuleGroupRequest& request, const UpdateRuleGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1400         void UpdateSubnetChangeProtectionAsyncHelper(const Model::UpdateSubnetChangeProtectionRequest& request, const UpdateSubnetChangeProtectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1401 
1402       Aws::String m_uri;
1403       Aws::String m_configScheme;
1404       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
1405   };
1406 
1407 } // namespace NetworkFirewall
1408 } // namespace Aws
1409