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/greengrassv2/GreengrassV2_EXPORTS.h>
8 #include <aws/greengrassv2/GreengrassV2Errors.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/greengrassv2/model/BatchAssociateClientDeviceWithCoreDeviceResult.h>
15 #include <aws/greengrassv2/model/BatchDisassociateClientDeviceFromCoreDeviceResult.h>
16 #include <aws/greengrassv2/model/CancelDeploymentResult.h>
17 #include <aws/greengrassv2/model/CreateComponentVersionResult.h>
18 #include <aws/greengrassv2/model/CreateDeploymentResult.h>
19 #include <aws/greengrassv2/model/DescribeComponentResult.h>
20 #include <aws/greengrassv2/model/GetComponentResult.h>
21 #include <aws/greengrassv2/model/GetComponentVersionArtifactResult.h>
22 #include <aws/greengrassv2/model/GetCoreDeviceResult.h>
23 #include <aws/greengrassv2/model/GetDeploymentResult.h>
24 #include <aws/greengrassv2/model/ListClientDevicesAssociatedWithCoreDeviceResult.h>
25 #include <aws/greengrassv2/model/ListComponentVersionsResult.h>
26 #include <aws/greengrassv2/model/ListComponentsResult.h>
27 #include <aws/greengrassv2/model/ListCoreDevicesResult.h>
28 #include <aws/greengrassv2/model/ListDeploymentsResult.h>
29 #include <aws/greengrassv2/model/ListEffectiveDeploymentsResult.h>
30 #include <aws/greengrassv2/model/ListInstalledComponentsResult.h>
31 #include <aws/greengrassv2/model/ListTagsForResourceResult.h>
32 #include <aws/greengrassv2/model/ResolveComponentCandidatesResult.h>
33 #include <aws/greengrassv2/model/TagResourceResult.h>
34 #include <aws/greengrassv2/model/UntagResourceResult.h>
35 #include <aws/core/NoResult.h>
36 #include <aws/core/client/AsyncCallerContext.h>
37 #include <aws/core/http/HttpTypes.h>
38 #include <future>
39 #include <functional>
40 
41 namespace Aws
42 {
43 
44 namespace Http
45 {
46   class HttpClient;
47   class HttpClientFactory;
48 } // namespace Http
49 
50 namespace Utils
51 {
52   template< typename R, typename E> class Outcome;
53 namespace Threading
54 {
55   class Executor;
56 } // namespace Threading
57 } // namespace Utils
58 
59 namespace Auth
60 {
61   class AWSCredentials;
62   class AWSCredentialsProvider;
63 } // namespace Auth
64 
65 namespace Client
66 {
67   class RetryStrategy;
68 } // namespace Client
69 
70 namespace GreengrassV2
71 {
72 
73 namespace Model
74 {
75         class BatchAssociateClientDeviceWithCoreDeviceRequest;
76         class BatchDisassociateClientDeviceFromCoreDeviceRequest;
77         class CancelDeploymentRequest;
78         class CreateComponentVersionRequest;
79         class CreateDeploymentRequest;
80         class DeleteComponentRequest;
81         class DeleteCoreDeviceRequest;
82         class DescribeComponentRequest;
83         class GetComponentRequest;
84         class GetComponentVersionArtifactRequest;
85         class GetCoreDeviceRequest;
86         class GetDeploymentRequest;
87         class ListClientDevicesAssociatedWithCoreDeviceRequest;
88         class ListComponentVersionsRequest;
89         class ListComponentsRequest;
90         class ListCoreDevicesRequest;
91         class ListDeploymentsRequest;
92         class ListEffectiveDeploymentsRequest;
93         class ListInstalledComponentsRequest;
94         class ListTagsForResourceRequest;
95         class ResolveComponentCandidatesRequest;
96         class TagResourceRequest;
97         class UntagResourceRequest;
98 
99         typedef Aws::Utils::Outcome<BatchAssociateClientDeviceWithCoreDeviceResult, GreengrassV2Error> BatchAssociateClientDeviceWithCoreDeviceOutcome;
100         typedef Aws::Utils::Outcome<BatchDisassociateClientDeviceFromCoreDeviceResult, GreengrassV2Error> BatchDisassociateClientDeviceFromCoreDeviceOutcome;
101         typedef Aws::Utils::Outcome<CancelDeploymentResult, GreengrassV2Error> CancelDeploymentOutcome;
102         typedef Aws::Utils::Outcome<CreateComponentVersionResult, GreengrassV2Error> CreateComponentVersionOutcome;
103         typedef Aws::Utils::Outcome<CreateDeploymentResult, GreengrassV2Error> CreateDeploymentOutcome;
104         typedef Aws::Utils::Outcome<Aws::NoResult, GreengrassV2Error> DeleteComponentOutcome;
105         typedef Aws::Utils::Outcome<Aws::NoResult, GreengrassV2Error> DeleteCoreDeviceOutcome;
106         typedef Aws::Utils::Outcome<DescribeComponentResult, GreengrassV2Error> DescribeComponentOutcome;
107         typedef Aws::Utils::Outcome<GetComponentResult, GreengrassV2Error> GetComponentOutcome;
108         typedef Aws::Utils::Outcome<GetComponentVersionArtifactResult, GreengrassV2Error> GetComponentVersionArtifactOutcome;
109         typedef Aws::Utils::Outcome<GetCoreDeviceResult, GreengrassV2Error> GetCoreDeviceOutcome;
110         typedef Aws::Utils::Outcome<GetDeploymentResult, GreengrassV2Error> GetDeploymentOutcome;
111         typedef Aws::Utils::Outcome<ListClientDevicesAssociatedWithCoreDeviceResult, GreengrassV2Error> ListClientDevicesAssociatedWithCoreDeviceOutcome;
112         typedef Aws::Utils::Outcome<ListComponentVersionsResult, GreengrassV2Error> ListComponentVersionsOutcome;
113         typedef Aws::Utils::Outcome<ListComponentsResult, GreengrassV2Error> ListComponentsOutcome;
114         typedef Aws::Utils::Outcome<ListCoreDevicesResult, GreengrassV2Error> ListCoreDevicesOutcome;
115         typedef Aws::Utils::Outcome<ListDeploymentsResult, GreengrassV2Error> ListDeploymentsOutcome;
116         typedef Aws::Utils::Outcome<ListEffectiveDeploymentsResult, GreengrassV2Error> ListEffectiveDeploymentsOutcome;
117         typedef Aws::Utils::Outcome<ListInstalledComponentsResult, GreengrassV2Error> ListInstalledComponentsOutcome;
118         typedef Aws::Utils::Outcome<ListTagsForResourceResult, GreengrassV2Error> ListTagsForResourceOutcome;
119         typedef Aws::Utils::Outcome<ResolveComponentCandidatesResult, GreengrassV2Error> ResolveComponentCandidatesOutcome;
120         typedef Aws::Utils::Outcome<TagResourceResult, GreengrassV2Error> TagResourceOutcome;
121         typedef Aws::Utils::Outcome<UntagResourceResult, GreengrassV2Error> UntagResourceOutcome;
122 
123         typedef std::future<BatchAssociateClientDeviceWithCoreDeviceOutcome> BatchAssociateClientDeviceWithCoreDeviceOutcomeCallable;
124         typedef std::future<BatchDisassociateClientDeviceFromCoreDeviceOutcome> BatchDisassociateClientDeviceFromCoreDeviceOutcomeCallable;
125         typedef std::future<CancelDeploymentOutcome> CancelDeploymentOutcomeCallable;
126         typedef std::future<CreateComponentVersionOutcome> CreateComponentVersionOutcomeCallable;
127         typedef std::future<CreateDeploymentOutcome> CreateDeploymentOutcomeCallable;
128         typedef std::future<DeleteComponentOutcome> DeleteComponentOutcomeCallable;
129         typedef std::future<DeleteCoreDeviceOutcome> DeleteCoreDeviceOutcomeCallable;
130         typedef std::future<DescribeComponentOutcome> DescribeComponentOutcomeCallable;
131         typedef std::future<GetComponentOutcome> GetComponentOutcomeCallable;
132         typedef std::future<GetComponentVersionArtifactOutcome> GetComponentVersionArtifactOutcomeCallable;
133         typedef std::future<GetCoreDeviceOutcome> GetCoreDeviceOutcomeCallable;
134         typedef std::future<GetDeploymentOutcome> GetDeploymentOutcomeCallable;
135         typedef std::future<ListClientDevicesAssociatedWithCoreDeviceOutcome> ListClientDevicesAssociatedWithCoreDeviceOutcomeCallable;
136         typedef std::future<ListComponentVersionsOutcome> ListComponentVersionsOutcomeCallable;
137         typedef std::future<ListComponentsOutcome> ListComponentsOutcomeCallable;
138         typedef std::future<ListCoreDevicesOutcome> ListCoreDevicesOutcomeCallable;
139         typedef std::future<ListDeploymentsOutcome> ListDeploymentsOutcomeCallable;
140         typedef std::future<ListEffectiveDeploymentsOutcome> ListEffectiveDeploymentsOutcomeCallable;
141         typedef std::future<ListInstalledComponentsOutcome> ListInstalledComponentsOutcomeCallable;
142         typedef std::future<ListTagsForResourceOutcome> ListTagsForResourceOutcomeCallable;
143         typedef std::future<ResolveComponentCandidatesOutcome> ResolveComponentCandidatesOutcomeCallable;
144         typedef std::future<TagResourceOutcome> TagResourceOutcomeCallable;
145         typedef std::future<UntagResourceOutcome> UntagResourceOutcomeCallable;
146 } // namespace Model
147 
148   class GreengrassV2Client;
149 
150     typedef std::function<void(const GreengrassV2Client*, const Model::BatchAssociateClientDeviceWithCoreDeviceRequest&, const Model::BatchAssociateClientDeviceWithCoreDeviceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > BatchAssociateClientDeviceWithCoreDeviceResponseReceivedHandler;
151     typedef std::function<void(const GreengrassV2Client*, const Model::BatchDisassociateClientDeviceFromCoreDeviceRequest&, const Model::BatchDisassociateClientDeviceFromCoreDeviceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > BatchDisassociateClientDeviceFromCoreDeviceResponseReceivedHandler;
152     typedef std::function<void(const GreengrassV2Client*, const Model::CancelDeploymentRequest&, const Model::CancelDeploymentOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CancelDeploymentResponseReceivedHandler;
153     typedef std::function<void(const GreengrassV2Client*, const Model::CreateComponentVersionRequest&, const Model::CreateComponentVersionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateComponentVersionResponseReceivedHandler;
154     typedef std::function<void(const GreengrassV2Client*, const Model::CreateDeploymentRequest&, const Model::CreateDeploymentOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateDeploymentResponseReceivedHandler;
155     typedef std::function<void(const GreengrassV2Client*, const Model::DeleteComponentRequest&, const Model::DeleteComponentOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteComponentResponseReceivedHandler;
156     typedef std::function<void(const GreengrassV2Client*, const Model::DeleteCoreDeviceRequest&, const Model::DeleteCoreDeviceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteCoreDeviceResponseReceivedHandler;
157     typedef std::function<void(const GreengrassV2Client*, const Model::DescribeComponentRequest&, const Model::DescribeComponentOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeComponentResponseReceivedHandler;
158     typedef std::function<void(const GreengrassV2Client*, const Model::GetComponentRequest&, const Model::GetComponentOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetComponentResponseReceivedHandler;
159     typedef std::function<void(const GreengrassV2Client*, const Model::GetComponentVersionArtifactRequest&, const Model::GetComponentVersionArtifactOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetComponentVersionArtifactResponseReceivedHandler;
160     typedef std::function<void(const GreengrassV2Client*, const Model::GetCoreDeviceRequest&, const Model::GetCoreDeviceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetCoreDeviceResponseReceivedHandler;
161     typedef std::function<void(const GreengrassV2Client*, const Model::GetDeploymentRequest&, const Model::GetDeploymentOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetDeploymentResponseReceivedHandler;
162     typedef std::function<void(const GreengrassV2Client*, const Model::ListClientDevicesAssociatedWithCoreDeviceRequest&, const Model::ListClientDevicesAssociatedWithCoreDeviceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListClientDevicesAssociatedWithCoreDeviceResponseReceivedHandler;
163     typedef std::function<void(const GreengrassV2Client*, const Model::ListComponentVersionsRequest&, const Model::ListComponentVersionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListComponentVersionsResponseReceivedHandler;
164     typedef std::function<void(const GreengrassV2Client*, const Model::ListComponentsRequest&, const Model::ListComponentsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListComponentsResponseReceivedHandler;
165     typedef std::function<void(const GreengrassV2Client*, const Model::ListCoreDevicesRequest&, const Model::ListCoreDevicesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListCoreDevicesResponseReceivedHandler;
166     typedef std::function<void(const GreengrassV2Client*, const Model::ListDeploymentsRequest&, const Model::ListDeploymentsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListDeploymentsResponseReceivedHandler;
167     typedef std::function<void(const GreengrassV2Client*, const Model::ListEffectiveDeploymentsRequest&, const Model::ListEffectiveDeploymentsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListEffectiveDeploymentsResponseReceivedHandler;
168     typedef std::function<void(const GreengrassV2Client*, const Model::ListInstalledComponentsRequest&, const Model::ListInstalledComponentsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListInstalledComponentsResponseReceivedHandler;
169     typedef std::function<void(const GreengrassV2Client*, const Model::ListTagsForResourceRequest&, const Model::ListTagsForResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListTagsForResourceResponseReceivedHandler;
170     typedef std::function<void(const GreengrassV2Client*, const Model::ResolveComponentCandidatesRequest&, const Model::ResolveComponentCandidatesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ResolveComponentCandidatesResponseReceivedHandler;
171     typedef std::function<void(const GreengrassV2Client*, const Model::TagResourceRequest&, const Model::TagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > TagResourceResponseReceivedHandler;
172     typedef std::function<void(const GreengrassV2Client*, const Model::UntagResourceRequest&, const Model::UntagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UntagResourceResponseReceivedHandler;
173 
174   /**
175    * <p>IoT Greengrass brings local compute, messaging, data management, sync, and ML
176    * inference capabilities to edge devices. This enables devices to collect and
177    * analyze data closer to the source of information, react autonomously to local
178    * events, and communicate securely with each other on local networks. Local
179    * devices can also communicate securely with Amazon Web Services IoT Core and
180    * export IoT data to the Amazon Web Services Cloud. IoT Greengrass developers can
181    * use Lambda functions and components to create and deploy applications to fleets
182    * of edge devices for local operation.</p> <p>IoT Greengrass Version 2 provides a
183    * new major version of the IoT Greengrass Core software, new APIs, and a new
184    * console. Use this API reference to learn how to use the IoT Greengrass V2 API
185    * operations to manage components, manage deployments, and core devices.</p>
186    * <p>For more information, see <a
187    * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html">What
188    * is IoT Greengrass?</a> in the <i>IoT Greengrass V2 Developer Guide</i>.</p>
189    */
190   class AWS_GREENGRASSV2_API GreengrassV2Client : public Aws::Client::AWSJsonClient
191   {
192     public:
193       typedef Aws::Client::AWSJsonClient BASECLASS;
194 
195        /**
196         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
197         * is not specified, it will be initialized to default values.
198         */
199         GreengrassV2Client(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
200 
201        /**
202         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
203         * is not specified, it will be initialized to default values.
204         */
205         GreengrassV2Client(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
206 
207        /**
208         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
209         * the default http client factory will be used
210         */
211         GreengrassV2Client(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
212             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
213 
214         virtual ~GreengrassV2Client();
215 
216 
217         /**
218          * <p>Associate a list of client devices with a core device. Use this API operation
219          * to specify which client devices can discover a core device through cloud
220          * discovery. With cloud discovery, client devices connect to IoT Greengrass to
221          * retrieve associated core devices' connectivity information and certificates. For
222          * more information, see <a
223          * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-cloud-discovery.html">Configure
224          * cloud discovery</a> in the <i>IoT Greengrass V2 Developer Guide</i>.</p>
225          * <p>Client devices are local IoT devices that connect to and communicate with an
226          * IoT Greengrass core device over MQTT. You can connect client devices to a core
227          * device to sync MQTT messages and data to Amazon Web Services IoT Core and
228          * interact with client devices in Greengrass components. For more information, see
229          * <a
230          * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/interact-with-local-iot-devices.html">Interact
231          * with local IoT devices</a> in the <i>IoT Greengrass V2 Developer Guide</i>.</p>
232          * <p><h3>See Also:</h3>   <a
233          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/BatchAssociateClientDeviceWithCoreDevice">AWS
234          * API Reference</a></p>
235          */
236         virtual Model::BatchAssociateClientDeviceWithCoreDeviceOutcome BatchAssociateClientDeviceWithCoreDevice(const Model::BatchAssociateClientDeviceWithCoreDeviceRequest& request) const;
237 
238         /**
239          * <p>Associate a list of client devices with a core device. Use this API operation
240          * to specify which client devices can discover a core device through cloud
241          * discovery. With cloud discovery, client devices connect to IoT Greengrass to
242          * retrieve associated core devices' connectivity information and certificates. For
243          * more information, see <a
244          * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-cloud-discovery.html">Configure
245          * cloud discovery</a> in the <i>IoT Greengrass V2 Developer Guide</i>.</p>
246          * <p>Client devices are local IoT devices that connect to and communicate with an
247          * IoT Greengrass core device over MQTT. You can connect client devices to a core
248          * device to sync MQTT messages and data to Amazon Web Services IoT Core and
249          * interact with client devices in Greengrass components. For more information, see
250          * <a
251          * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/interact-with-local-iot-devices.html">Interact
252          * with local IoT devices</a> in the <i>IoT Greengrass V2 Developer Guide</i>.</p>
253          * <p><h3>See Also:</h3>   <a
254          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/BatchAssociateClientDeviceWithCoreDevice">AWS
255          * API Reference</a></p>
256          *
257          * returns a future to the operation so that it can be executed in parallel to other requests.
258          */
259         virtual Model::BatchAssociateClientDeviceWithCoreDeviceOutcomeCallable BatchAssociateClientDeviceWithCoreDeviceCallable(const Model::BatchAssociateClientDeviceWithCoreDeviceRequest& request) const;
260 
261         /**
262          * <p>Associate a list of client devices with a core device. Use this API operation
263          * to specify which client devices can discover a core device through cloud
264          * discovery. With cloud discovery, client devices connect to IoT Greengrass to
265          * retrieve associated core devices' connectivity information and certificates. For
266          * more information, see <a
267          * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-cloud-discovery.html">Configure
268          * cloud discovery</a> in the <i>IoT Greengrass V2 Developer Guide</i>.</p>
269          * <p>Client devices are local IoT devices that connect to and communicate with an
270          * IoT Greengrass core device over MQTT. You can connect client devices to a core
271          * device to sync MQTT messages and data to Amazon Web Services IoT Core and
272          * interact with client devices in Greengrass components. For more information, see
273          * <a
274          * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/interact-with-local-iot-devices.html">Interact
275          * with local IoT devices</a> in the <i>IoT Greengrass V2 Developer Guide</i>.</p>
276          * <p><h3>See Also:</h3>   <a
277          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/BatchAssociateClientDeviceWithCoreDevice">AWS
278          * API Reference</a></p>
279          *
280          * Queues the request into a thread executor and triggers associated callback when operation has finished.
281          */
282         virtual void BatchAssociateClientDeviceWithCoreDeviceAsync(const Model::BatchAssociateClientDeviceWithCoreDeviceRequest& request, const BatchAssociateClientDeviceWithCoreDeviceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
283 
284         /**
285          * <p>Disassociate a list of client devices from a core device. After you
286          * disassociate a client device from a core device, the client device won't be able
287          * to use cloud discovery to retrieve the core device's connectivity information
288          * and certificates.</p><p><h3>See Also:</h3>   <a
289          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/BatchDisassociateClientDeviceFromCoreDevice">AWS
290          * API Reference</a></p>
291          */
292         virtual Model::BatchDisassociateClientDeviceFromCoreDeviceOutcome BatchDisassociateClientDeviceFromCoreDevice(const Model::BatchDisassociateClientDeviceFromCoreDeviceRequest& request) const;
293 
294         /**
295          * <p>Disassociate a list of client devices from a core device. After you
296          * disassociate a client device from a core device, the client device won't be able
297          * to use cloud discovery to retrieve the core device's connectivity information
298          * and certificates.</p><p><h3>See Also:</h3>   <a
299          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/BatchDisassociateClientDeviceFromCoreDevice">AWS
300          * API Reference</a></p>
301          *
302          * returns a future to the operation so that it can be executed in parallel to other requests.
303          */
304         virtual Model::BatchDisassociateClientDeviceFromCoreDeviceOutcomeCallable BatchDisassociateClientDeviceFromCoreDeviceCallable(const Model::BatchDisassociateClientDeviceFromCoreDeviceRequest& request) const;
305 
306         /**
307          * <p>Disassociate a list of client devices from a core device. After you
308          * disassociate a client device from a core device, the client device won't be able
309          * to use cloud discovery to retrieve the core device's connectivity information
310          * and certificates.</p><p><h3>See Also:</h3>   <a
311          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/BatchDisassociateClientDeviceFromCoreDevice">AWS
312          * API Reference</a></p>
313          *
314          * Queues the request into a thread executor and triggers associated callback when operation has finished.
315          */
316         virtual void BatchDisassociateClientDeviceFromCoreDeviceAsync(const Model::BatchDisassociateClientDeviceFromCoreDeviceRequest& request, const BatchDisassociateClientDeviceFromCoreDeviceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
317 
318         /**
319          * <p>Cancels a deployment. This operation cancels the deployment for devices that
320          * haven't yet received it. If a device already received the deployment, this
321          * operation doesn't change anything for that device.</p><p><h3>See Also:</h3>   <a
322          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CancelDeployment">AWS
323          * API Reference</a></p>
324          */
325         virtual Model::CancelDeploymentOutcome CancelDeployment(const Model::CancelDeploymentRequest& request) const;
326 
327         /**
328          * <p>Cancels a deployment. This operation cancels the deployment for devices that
329          * haven't yet received it. If a device already received the deployment, this
330          * operation doesn't change anything for that device.</p><p><h3>See Also:</h3>   <a
331          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CancelDeployment">AWS
332          * API Reference</a></p>
333          *
334          * returns a future to the operation so that it can be executed in parallel to other requests.
335          */
336         virtual Model::CancelDeploymentOutcomeCallable CancelDeploymentCallable(const Model::CancelDeploymentRequest& request) const;
337 
338         /**
339          * <p>Cancels a deployment. This operation cancels the deployment for devices that
340          * haven't yet received it. If a device already received the deployment, this
341          * operation doesn't change anything for that device.</p><p><h3>See Also:</h3>   <a
342          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CancelDeployment">AWS
343          * API Reference</a></p>
344          *
345          * Queues the request into a thread executor and triggers associated callback when operation has finished.
346          */
347         virtual void CancelDeploymentAsync(const Model::CancelDeploymentRequest& request, const CancelDeploymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
348 
349         /**
350          * <p>Creates a component. Components are software that run on Greengrass core
351          * devices. After you develop and test a component on your core device, you can use
352          * this operation to upload your component to IoT Greengrass. Then, you can deploy
353          * the component to other core devices.</p> <p>You can use this operation to do the
354          * following:</p> <ul> <li> <p> <b>Create components from recipes</b> </p>
355          * <p>Create a component from a recipe, which is a file that defines the
356          * component's metadata, parameters, dependencies, lifecycle, artifacts, and
357          * platform capability. For more information, see <a
358          * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/component-recipe-reference.html">IoT
359          * Greengrass component recipe reference</a> in the <i>IoT Greengrass V2 Developer
360          * Guide</i>.</p> <p>To create a component from a recipe, specify
361          * <code>inlineRecipe</code> when you call this operation.</p> </li> <li> <p>
362          * <b>Create components from Lambda functions</b> </p> <p>Create a component from
363          * an Lambda function that runs on IoT Greengrass. This creates a recipe and
364          * artifacts from the Lambda function's deployment package. You can use this
365          * operation to migrate Lambda functions from IoT Greengrass V1 to IoT Greengrass
366          * V2.</p> <p>This function only accepts Lambda functions that use the following
367          * runtimes:</p> <ul> <li> <p>Python 2.7 – <code>python2.7</code> </p> </li> <li>
368          * <p>Python 3.7 – <code>python3.7</code> </p> </li> <li> <p>Python 3.8 –
369          * <code>python3.8</code> </p> </li> <li> <p>Java 8 – <code>java8</code> </p> </li>
370          * <li> <p>Node.js 10 – <code>nodejs10.x</code> </p> </li> <li> <p>Node.js 12 –
371          * <code>nodejs12.x</code> </p> </li> </ul> <p>To create a component from a Lambda
372          * function, specify <code>lambdaFunction</code> when you call this operation.</p>
373          * </li> </ul><p><h3>See Also:</h3>   <a
374          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CreateComponentVersion">AWS
375          * API Reference</a></p>
376          */
377         virtual Model::CreateComponentVersionOutcome CreateComponentVersion(const Model::CreateComponentVersionRequest& request) const;
378 
379         /**
380          * <p>Creates a component. Components are software that run on Greengrass core
381          * devices. After you develop and test a component on your core device, you can use
382          * this operation to upload your component to IoT Greengrass. Then, you can deploy
383          * the component to other core devices.</p> <p>You can use this operation to do the
384          * following:</p> <ul> <li> <p> <b>Create components from recipes</b> </p>
385          * <p>Create a component from a recipe, which is a file that defines the
386          * component's metadata, parameters, dependencies, lifecycle, artifacts, and
387          * platform capability. For more information, see <a
388          * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/component-recipe-reference.html">IoT
389          * Greengrass component recipe reference</a> in the <i>IoT Greengrass V2 Developer
390          * Guide</i>.</p> <p>To create a component from a recipe, specify
391          * <code>inlineRecipe</code> when you call this operation.</p> </li> <li> <p>
392          * <b>Create components from Lambda functions</b> </p> <p>Create a component from
393          * an Lambda function that runs on IoT Greengrass. This creates a recipe and
394          * artifacts from the Lambda function's deployment package. You can use this
395          * operation to migrate Lambda functions from IoT Greengrass V1 to IoT Greengrass
396          * V2.</p> <p>This function only accepts Lambda functions that use the following
397          * runtimes:</p> <ul> <li> <p>Python 2.7 – <code>python2.7</code> </p> </li> <li>
398          * <p>Python 3.7 – <code>python3.7</code> </p> </li> <li> <p>Python 3.8 –
399          * <code>python3.8</code> </p> </li> <li> <p>Java 8 – <code>java8</code> </p> </li>
400          * <li> <p>Node.js 10 – <code>nodejs10.x</code> </p> </li> <li> <p>Node.js 12 –
401          * <code>nodejs12.x</code> </p> </li> </ul> <p>To create a component from a Lambda
402          * function, specify <code>lambdaFunction</code> when you call this operation.</p>
403          * </li> </ul><p><h3>See Also:</h3>   <a
404          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CreateComponentVersion">AWS
405          * API Reference</a></p>
406          *
407          * returns a future to the operation so that it can be executed in parallel to other requests.
408          */
409         virtual Model::CreateComponentVersionOutcomeCallable CreateComponentVersionCallable(const Model::CreateComponentVersionRequest& request) const;
410 
411         /**
412          * <p>Creates a component. Components are software that run on Greengrass core
413          * devices. After you develop and test a component on your core device, you can use
414          * this operation to upload your component to IoT Greengrass. Then, you can deploy
415          * the component to other core devices.</p> <p>You can use this operation to do the
416          * following:</p> <ul> <li> <p> <b>Create components from recipes</b> </p>
417          * <p>Create a component from a recipe, which is a file that defines the
418          * component's metadata, parameters, dependencies, lifecycle, artifacts, and
419          * platform capability. For more information, see <a
420          * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/component-recipe-reference.html">IoT
421          * Greengrass component recipe reference</a> in the <i>IoT Greengrass V2 Developer
422          * Guide</i>.</p> <p>To create a component from a recipe, specify
423          * <code>inlineRecipe</code> when you call this operation.</p> </li> <li> <p>
424          * <b>Create components from Lambda functions</b> </p> <p>Create a component from
425          * an Lambda function that runs on IoT Greengrass. This creates a recipe and
426          * artifacts from the Lambda function's deployment package. You can use this
427          * operation to migrate Lambda functions from IoT Greengrass V1 to IoT Greengrass
428          * V2.</p> <p>This function only accepts Lambda functions that use the following
429          * runtimes:</p> <ul> <li> <p>Python 2.7 – <code>python2.7</code> </p> </li> <li>
430          * <p>Python 3.7 – <code>python3.7</code> </p> </li> <li> <p>Python 3.8 –
431          * <code>python3.8</code> </p> </li> <li> <p>Java 8 – <code>java8</code> </p> </li>
432          * <li> <p>Node.js 10 – <code>nodejs10.x</code> </p> </li> <li> <p>Node.js 12 –
433          * <code>nodejs12.x</code> </p> </li> </ul> <p>To create a component from a Lambda
434          * function, specify <code>lambdaFunction</code> when you call this operation.</p>
435          * </li> </ul><p><h3>See Also:</h3>   <a
436          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CreateComponentVersion">AWS
437          * API Reference</a></p>
438          *
439          * Queues the request into a thread executor and triggers associated callback when operation has finished.
440          */
441         virtual void CreateComponentVersionAsync(const Model::CreateComponentVersionRequest& request, const CreateComponentVersionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
442 
443         /**
444          * <p>Creates a continuous deployment for a target, which is a Greengrass core
445          * device or group of core devices. When you add a new core device to a group of
446          * core devices that has a deployment, IoT Greengrass deploys that group's
447          * deployment to the new device.</p> <p>You can define one deployment for each
448          * target. When you create a new deployment for a target that has an existing
449          * deployment, you replace the previous deployment. IoT Greengrass applies the new
450          * deployment to the target devices.</p> <p>Every deployment has a revision number
451          * that indicates how many deployment revisions you define for a target. Use this
452          * operation to create a new revision of an existing deployment. This operation
453          * returns the revision number of the new deployment when you create it.</p> <p>For
454          * more information, see the <a
455          * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html">Create
456          * deployments</a> in the <i>IoT Greengrass V2 Developer Guide</i>.</p><p><h3>See
457          * Also:</h3>   <a
458          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CreateDeployment">AWS
459          * API Reference</a></p>
460          */
461         virtual Model::CreateDeploymentOutcome CreateDeployment(const Model::CreateDeploymentRequest& request) const;
462 
463         /**
464          * <p>Creates a continuous deployment for a target, which is a Greengrass core
465          * device or group of core devices. When you add a new core device to a group of
466          * core devices that has a deployment, IoT Greengrass deploys that group's
467          * deployment to the new device.</p> <p>You can define one deployment for each
468          * target. When you create a new deployment for a target that has an existing
469          * deployment, you replace the previous deployment. IoT Greengrass applies the new
470          * deployment to the target devices.</p> <p>Every deployment has a revision number
471          * that indicates how many deployment revisions you define for a target. Use this
472          * operation to create a new revision of an existing deployment. This operation
473          * returns the revision number of the new deployment when you create it.</p> <p>For
474          * more information, see the <a
475          * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html">Create
476          * deployments</a> in the <i>IoT Greengrass V2 Developer Guide</i>.</p><p><h3>See
477          * Also:</h3>   <a
478          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CreateDeployment">AWS
479          * API Reference</a></p>
480          *
481          * returns a future to the operation so that it can be executed in parallel to other requests.
482          */
483         virtual Model::CreateDeploymentOutcomeCallable CreateDeploymentCallable(const Model::CreateDeploymentRequest& request) const;
484 
485         /**
486          * <p>Creates a continuous deployment for a target, which is a Greengrass core
487          * device or group of core devices. When you add a new core device to a group of
488          * core devices that has a deployment, IoT Greengrass deploys that group's
489          * deployment to the new device.</p> <p>You can define one deployment for each
490          * target. When you create a new deployment for a target that has an existing
491          * deployment, you replace the previous deployment. IoT Greengrass applies the new
492          * deployment to the target devices.</p> <p>Every deployment has a revision number
493          * that indicates how many deployment revisions you define for a target. Use this
494          * operation to create a new revision of an existing deployment. This operation
495          * returns the revision number of the new deployment when you create it.</p> <p>For
496          * more information, see the <a
497          * href="https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html">Create
498          * deployments</a> in the <i>IoT Greengrass V2 Developer Guide</i>.</p><p><h3>See
499          * Also:</h3>   <a
500          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CreateDeployment">AWS
501          * API Reference</a></p>
502          *
503          * Queues the request into a thread executor and triggers associated callback when operation has finished.
504          */
505         virtual void CreateDeploymentAsync(const Model::CreateDeploymentRequest& request, const CreateDeploymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
506 
507         /**
508          * <p>Deletes a version of a component from IoT Greengrass.</p>  <p>This
509          * operation deletes the component's recipe and artifacts. As a result, deployments
510          * that refer to this component version will fail. If you have deployments that use
511          * this component version, you can remove the component from the deployment or
512          * update the deployment to use a valid version.</p> <p><h3>See Also:</h3>
513          * <a
514          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DeleteComponent">AWS
515          * API Reference</a></p>
516          */
517         virtual Model::DeleteComponentOutcome DeleteComponent(const Model::DeleteComponentRequest& request) const;
518 
519         /**
520          * <p>Deletes a version of a component from IoT Greengrass.</p>  <p>This
521          * operation deletes the component's recipe and artifacts. As a result, deployments
522          * that refer to this component version will fail. If you have deployments that use
523          * this component version, you can remove the component from the deployment or
524          * update the deployment to use a valid version.</p> <p><h3>See Also:</h3>
525          * <a
526          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DeleteComponent">AWS
527          * API Reference</a></p>
528          *
529          * returns a future to the operation so that it can be executed in parallel to other requests.
530          */
531         virtual Model::DeleteComponentOutcomeCallable DeleteComponentCallable(const Model::DeleteComponentRequest& request) const;
532 
533         /**
534          * <p>Deletes a version of a component from IoT Greengrass.</p>  <p>This
535          * operation deletes the component's recipe and artifacts. As a result, deployments
536          * that refer to this component version will fail. If you have deployments that use
537          * this component version, you can remove the component from the deployment or
538          * update the deployment to use a valid version.</p> <p><h3>See Also:</h3>
539          * <a
540          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DeleteComponent">AWS
541          * API Reference</a></p>
542          *
543          * Queues the request into a thread executor and triggers associated callback when operation has finished.
544          */
545         virtual void DeleteComponentAsync(const Model::DeleteComponentRequest& request, const DeleteComponentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
546 
547         /**
548          * <p>Deletes a Greengrass core device, which is an IoT thing. This operation
549          * removes the core device from the list of core devices. This operation doesn't
550          * delete the IoT thing. For more information about how to delete the IoT thing,
551          * see <a
552          * href="https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteThing.html">DeleteThing</a>
553          * in the <i>IoT API Reference</i>.</p><p><h3>See Also:</h3>   <a
554          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DeleteCoreDevice">AWS
555          * API Reference</a></p>
556          */
557         virtual Model::DeleteCoreDeviceOutcome DeleteCoreDevice(const Model::DeleteCoreDeviceRequest& request) const;
558 
559         /**
560          * <p>Deletes a Greengrass core device, which is an IoT thing. This operation
561          * removes the core device from the list of core devices. This operation doesn't
562          * delete the IoT thing. For more information about how to delete the IoT thing,
563          * see <a
564          * href="https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteThing.html">DeleteThing</a>
565          * in the <i>IoT API Reference</i>.</p><p><h3>See Also:</h3>   <a
566          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DeleteCoreDevice">AWS
567          * API Reference</a></p>
568          *
569          * returns a future to the operation so that it can be executed in parallel to other requests.
570          */
571         virtual Model::DeleteCoreDeviceOutcomeCallable DeleteCoreDeviceCallable(const Model::DeleteCoreDeviceRequest& request) const;
572 
573         /**
574          * <p>Deletes a Greengrass core device, which is an IoT thing. This operation
575          * removes the core device from the list of core devices. This operation doesn't
576          * delete the IoT thing. For more information about how to delete the IoT thing,
577          * see <a
578          * href="https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteThing.html">DeleteThing</a>
579          * in the <i>IoT API Reference</i>.</p><p><h3>See Also:</h3>   <a
580          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DeleteCoreDevice">AWS
581          * API Reference</a></p>
582          *
583          * Queues the request into a thread executor and triggers associated callback when operation has finished.
584          */
585         virtual void DeleteCoreDeviceAsync(const Model::DeleteCoreDeviceRequest& request, const DeleteCoreDeviceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
586 
587         /**
588          * <p>Retrieves metadata for a version of a component.</p><p><h3>See Also:</h3>
589          * <a
590          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DescribeComponent">AWS
591          * API Reference</a></p>
592          */
593         virtual Model::DescribeComponentOutcome DescribeComponent(const Model::DescribeComponentRequest& request) const;
594 
595         /**
596          * <p>Retrieves metadata for a version of a component.</p><p><h3>See Also:</h3>
597          * <a
598          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DescribeComponent">AWS
599          * API Reference</a></p>
600          *
601          * returns a future to the operation so that it can be executed in parallel to other requests.
602          */
603         virtual Model::DescribeComponentOutcomeCallable DescribeComponentCallable(const Model::DescribeComponentRequest& request) const;
604 
605         /**
606          * <p>Retrieves metadata for a version of a component.</p><p><h3>See Also:</h3>
607          * <a
608          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DescribeComponent">AWS
609          * API Reference</a></p>
610          *
611          * Queues the request into a thread executor and triggers associated callback when operation has finished.
612          */
613         virtual void DescribeComponentAsync(const Model::DescribeComponentRequest& request, const DescribeComponentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
614 
615         /**
616          * <p>Gets the recipe for a version of a component. Core devices can call this
617          * operation to identify the artifacts and requirements to install a
618          * component.</p><p><h3>See Also:</h3>   <a
619          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetComponent">AWS
620          * API Reference</a></p>
621          */
622         virtual Model::GetComponentOutcome GetComponent(const Model::GetComponentRequest& request) const;
623 
624         /**
625          * <p>Gets the recipe for a version of a component. Core devices can call this
626          * operation to identify the artifacts and requirements to install a
627          * component.</p><p><h3>See Also:</h3>   <a
628          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetComponent">AWS
629          * API Reference</a></p>
630          *
631          * returns a future to the operation so that it can be executed in parallel to other requests.
632          */
633         virtual Model::GetComponentOutcomeCallable GetComponentCallable(const Model::GetComponentRequest& request) const;
634 
635         /**
636          * <p>Gets the recipe for a version of a component. Core devices can call this
637          * operation to identify the artifacts and requirements to install a
638          * component.</p><p><h3>See Also:</h3>   <a
639          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetComponent">AWS
640          * API Reference</a></p>
641          *
642          * Queues the request into a thread executor and triggers associated callback when operation has finished.
643          */
644         virtual void GetComponentAsync(const Model::GetComponentRequest& request, const GetComponentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
645 
646         /**
647          * <p>Gets the pre-signed URL to download a public component artifact. Core devices
648          * call this operation to identify the URL that they can use to download an
649          * artifact to install.</p><p><h3>See Also:</h3>   <a
650          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetComponentVersionArtifact">AWS
651          * API Reference</a></p>
652          */
653         virtual Model::GetComponentVersionArtifactOutcome GetComponentVersionArtifact(const Model::GetComponentVersionArtifactRequest& request) const;
654 
655         /**
656          * <p>Gets the pre-signed URL to download a public component artifact. Core devices
657          * call this operation to identify the URL that they can use to download an
658          * artifact to install.</p><p><h3>See Also:</h3>   <a
659          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetComponentVersionArtifact">AWS
660          * API Reference</a></p>
661          *
662          * returns a future to the operation so that it can be executed in parallel to other requests.
663          */
664         virtual Model::GetComponentVersionArtifactOutcomeCallable GetComponentVersionArtifactCallable(const Model::GetComponentVersionArtifactRequest& request) const;
665 
666         /**
667          * <p>Gets the pre-signed URL to download a public component artifact. Core devices
668          * call this operation to identify the URL that they can use to download an
669          * artifact to install.</p><p><h3>See Also:</h3>   <a
670          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetComponentVersionArtifact">AWS
671          * API Reference</a></p>
672          *
673          * Queues the request into a thread executor and triggers associated callback when operation has finished.
674          */
675         virtual void GetComponentVersionArtifactAsync(const Model::GetComponentVersionArtifactRequest& request, const GetComponentVersionArtifactResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
676 
677         /**
678          * <p>Retrieves metadata for a Greengrass core device.</p><p><h3>See Also:</h3>
679          * <a
680          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetCoreDevice">AWS
681          * API Reference</a></p>
682          */
683         virtual Model::GetCoreDeviceOutcome GetCoreDevice(const Model::GetCoreDeviceRequest& request) const;
684 
685         /**
686          * <p>Retrieves metadata for a Greengrass core device.</p><p><h3>See Also:</h3>
687          * <a
688          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetCoreDevice">AWS
689          * API Reference</a></p>
690          *
691          * returns a future to the operation so that it can be executed in parallel to other requests.
692          */
693         virtual Model::GetCoreDeviceOutcomeCallable GetCoreDeviceCallable(const Model::GetCoreDeviceRequest& request) const;
694 
695         /**
696          * <p>Retrieves metadata for a Greengrass core device.</p><p><h3>See Also:</h3>
697          * <a
698          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetCoreDevice">AWS
699          * API Reference</a></p>
700          *
701          * Queues the request into a thread executor and triggers associated callback when operation has finished.
702          */
703         virtual void GetCoreDeviceAsync(const Model::GetCoreDeviceRequest& request, const GetCoreDeviceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
704 
705         /**
706          * <p>Gets a deployment. Deployments define the components that run on Greengrass
707          * core devices.</p><p><h3>See Also:</h3>   <a
708          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetDeployment">AWS
709          * API Reference</a></p>
710          */
711         virtual Model::GetDeploymentOutcome GetDeployment(const Model::GetDeploymentRequest& request) const;
712 
713         /**
714          * <p>Gets a deployment. Deployments define the components that run on Greengrass
715          * core devices.</p><p><h3>See Also:</h3>   <a
716          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetDeployment">AWS
717          * API Reference</a></p>
718          *
719          * returns a future to the operation so that it can be executed in parallel to other requests.
720          */
721         virtual Model::GetDeploymentOutcomeCallable GetDeploymentCallable(const Model::GetDeploymentRequest& request) const;
722 
723         /**
724          * <p>Gets a deployment. Deployments define the components that run on Greengrass
725          * core devices.</p><p><h3>See Also:</h3>   <a
726          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetDeployment">AWS
727          * API Reference</a></p>
728          *
729          * Queues the request into a thread executor and triggers associated callback when operation has finished.
730          */
731         virtual void GetDeploymentAsync(const Model::GetDeploymentRequest& request, const GetDeploymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
732 
733         /**
734          * <p>Retrieves a paginated list of client devices that are associated with a core
735          * device.</p><p><h3>See Also:</h3>   <a
736          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListClientDevicesAssociatedWithCoreDevice">AWS
737          * API Reference</a></p>
738          */
739         virtual Model::ListClientDevicesAssociatedWithCoreDeviceOutcome ListClientDevicesAssociatedWithCoreDevice(const Model::ListClientDevicesAssociatedWithCoreDeviceRequest& request) const;
740 
741         /**
742          * <p>Retrieves a paginated list of client devices that are associated with a core
743          * device.</p><p><h3>See Also:</h3>   <a
744          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListClientDevicesAssociatedWithCoreDevice">AWS
745          * API Reference</a></p>
746          *
747          * returns a future to the operation so that it can be executed in parallel to other requests.
748          */
749         virtual Model::ListClientDevicesAssociatedWithCoreDeviceOutcomeCallable ListClientDevicesAssociatedWithCoreDeviceCallable(const Model::ListClientDevicesAssociatedWithCoreDeviceRequest& request) const;
750 
751         /**
752          * <p>Retrieves a paginated list of client devices that are associated with a core
753          * device.</p><p><h3>See Also:</h3>   <a
754          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListClientDevicesAssociatedWithCoreDevice">AWS
755          * API Reference</a></p>
756          *
757          * Queues the request into a thread executor and triggers associated callback when operation has finished.
758          */
759         virtual void ListClientDevicesAssociatedWithCoreDeviceAsync(const Model::ListClientDevicesAssociatedWithCoreDeviceRequest& request, const ListClientDevicesAssociatedWithCoreDeviceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
760 
761         /**
762          * <p>Retrieves a paginated list of all versions for a component. Greater versions
763          * are listed first.</p><p><h3>See Also:</h3>   <a
764          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListComponentVersions">AWS
765          * API Reference</a></p>
766          */
767         virtual Model::ListComponentVersionsOutcome ListComponentVersions(const Model::ListComponentVersionsRequest& request) const;
768 
769         /**
770          * <p>Retrieves a paginated list of all versions for a component. Greater versions
771          * are listed first.</p><p><h3>See Also:</h3>   <a
772          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListComponentVersions">AWS
773          * API Reference</a></p>
774          *
775          * returns a future to the operation so that it can be executed in parallel to other requests.
776          */
777         virtual Model::ListComponentVersionsOutcomeCallable ListComponentVersionsCallable(const Model::ListComponentVersionsRequest& request) const;
778 
779         /**
780          * <p>Retrieves a paginated list of all versions for a component. Greater versions
781          * are listed first.</p><p><h3>See Also:</h3>   <a
782          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListComponentVersions">AWS
783          * API Reference</a></p>
784          *
785          * Queues the request into a thread executor and triggers associated callback when operation has finished.
786          */
787         virtual void ListComponentVersionsAsync(const Model::ListComponentVersionsRequest& request, const ListComponentVersionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
788 
789         /**
790          * <p>Retrieves a paginated list of component summaries. This list includes
791          * components that you have permission to view.</p><p><h3>See Also:</h3>   <a
792          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListComponents">AWS
793          * API Reference</a></p>
794          */
795         virtual Model::ListComponentsOutcome ListComponents(const Model::ListComponentsRequest& request) const;
796 
797         /**
798          * <p>Retrieves a paginated list of component summaries. This list includes
799          * components that you have permission to view.</p><p><h3>See Also:</h3>   <a
800          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListComponents">AWS
801          * API Reference</a></p>
802          *
803          * returns a future to the operation so that it can be executed in parallel to other requests.
804          */
805         virtual Model::ListComponentsOutcomeCallable ListComponentsCallable(const Model::ListComponentsRequest& request) const;
806 
807         /**
808          * <p>Retrieves a paginated list of component summaries. This list includes
809          * components that you have permission to view.</p><p><h3>See Also:</h3>   <a
810          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListComponents">AWS
811          * API Reference</a></p>
812          *
813          * Queues the request into a thread executor and triggers associated callback when operation has finished.
814          */
815         virtual void ListComponentsAsync(const Model::ListComponentsRequest& request, const ListComponentsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
816 
817         /**
818          * <p>Retrieves a paginated list of Greengrass core devices.</p><p><h3>See
819          * Also:</h3>   <a
820          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListCoreDevices">AWS
821          * API Reference</a></p>
822          */
823         virtual Model::ListCoreDevicesOutcome ListCoreDevices(const Model::ListCoreDevicesRequest& request) const;
824 
825         /**
826          * <p>Retrieves a paginated list of Greengrass core devices.</p><p><h3>See
827          * Also:</h3>   <a
828          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListCoreDevices">AWS
829          * API Reference</a></p>
830          *
831          * returns a future to the operation so that it can be executed in parallel to other requests.
832          */
833         virtual Model::ListCoreDevicesOutcomeCallable ListCoreDevicesCallable(const Model::ListCoreDevicesRequest& request) const;
834 
835         /**
836          * <p>Retrieves a paginated list of Greengrass core devices.</p><p><h3>See
837          * Also:</h3>   <a
838          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListCoreDevices">AWS
839          * API Reference</a></p>
840          *
841          * Queues the request into a thread executor and triggers associated callback when operation has finished.
842          */
843         virtual void ListCoreDevicesAsync(const Model::ListCoreDevicesRequest& request, const ListCoreDevicesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
844 
845         /**
846          * <p>Retrieves a paginated list of deployments.</p><p><h3>See Also:</h3>   <a
847          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListDeployments">AWS
848          * API Reference</a></p>
849          */
850         virtual Model::ListDeploymentsOutcome ListDeployments(const Model::ListDeploymentsRequest& request) const;
851 
852         /**
853          * <p>Retrieves a paginated list of deployments.</p><p><h3>See Also:</h3>   <a
854          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListDeployments">AWS
855          * API Reference</a></p>
856          *
857          * returns a future to the operation so that it can be executed in parallel to other requests.
858          */
859         virtual Model::ListDeploymentsOutcomeCallable ListDeploymentsCallable(const Model::ListDeploymentsRequest& request) const;
860 
861         /**
862          * <p>Retrieves a paginated list of deployments.</p><p><h3>See Also:</h3>   <a
863          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListDeployments">AWS
864          * API Reference</a></p>
865          *
866          * Queues the request into a thread executor and triggers associated callback when operation has finished.
867          */
868         virtual void ListDeploymentsAsync(const Model::ListDeploymentsRequest& request, const ListDeploymentsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
869 
870         /**
871          * <p>Retrieves a paginated list of deployment jobs that IoT Greengrass sends to
872          * Greengrass core devices.</p><p><h3>See Also:</h3>   <a
873          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListEffectiveDeployments">AWS
874          * API Reference</a></p>
875          */
876         virtual Model::ListEffectiveDeploymentsOutcome ListEffectiveDeployments(const Model::ListEffectiveDeploymentsRequest& request) const;
877 
878         /**
879          * <p>Retrieves a paginated list of deployment jobs that IoT Greengrass sends to
880          * Greengrass core devices.</p><p><h3>See Also:</h3>   <a
881          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListEffectiveDeployments">AWS
882          * API Reference</a></p>
883          *
884          * returns a future to the operation so that it can be executed in parallel to other requests.
885          */
886         virtual Model::ListEffectiveDeploymentsOutcomeCallable ListEffectiveDeploymentsCallable(const Model::ListEffectiveDeploymentsRequest& request) const;
887 
888         /**
889          * <p>Retrieves a paginated list of deployment jobs that IoT Greengrass sends to
890          * Greengrass core devices.</p><p><h3>See Also:</h3>   <a
891          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListEffectiveDeployments">AWS
892          * API Reference</a></p>
893          *
894          * Queues the request into a thread executor and triggers associated callback when operation has finished.
895          */
896         virtual void ListEffectiveDeploymentsAsync(const Model::ListEffectiveDeploymentsRequest& request, const ListEffectiveDeploymentsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
897 
898         /**
899          * <p>Retrieves a paginated list of the components that a Greengrass core device
900          * runs.</p><p><h3>See Also:</h3>   <a
901          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListInstalledComponents">AWS
902          * API Reference</a></p>
903          */
904         virtual Model::ListInstalledComponentsOutcome ListInstalledComponents(const Model::ListInstalledComponentsRequest& request) const;
905 
906         /**
907          * <p>Retrieves a paginated list of the components that a Greengrass core device
908          * runs.</p><p><h3>See Also:</h3>   <a
909          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListInstalledComponents">AWS
910          * API Reference</a></p>
911          *
912          * returns a future to the operation so that it can be executed in parallel to other requests.
913          */
914         virtual Model::ListInstalledComponentsOutcomeCallable ListInstalledComponentsCallable(const Model::ListInstalledComponentsRequest& request) const;
915 
916         /**
917          * <p>Retrieves a paginated list of the components that a Greengrass core device
918          * runs.</p><p><h3>See Also:</h3>   <a
919          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListInstalledComponents">AWS
920          * API Reference</a></p>
921          *
922          * Queues the request into a thread executor and triggers associated callback when operation has finished.
923          */
924         virtual void ListInstalledComponentsAsync(const Model::ListInstalledComponentsRequest& request, const ListInstalledComponentsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
925 
926         /**
927          * <p>Retrieves the list of tags for an IoT Greengrass resource.</p><p><h3>See
928          * Also:</h3>   <a
929          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListTagsForResource">AWS
930          * API Reference</a></p>
931          */
932         virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const;
933 
934         /**
935          * <p>Retrieves the list of tags for an IoT Greengrass resource.</p><p><h3>See
936          * Also:</h3>   <a
937          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListTagsForResource">AWS
938          * API Reference</a></p>
939          *
940          * returns a future to the operation so that it can be executed in parallel to other requests.
941          */
942         virtual Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const Model::ListTagsForResourceRequest& request) const;
943 
944         /**
945          * <p>Retrieves the list of tags for an IoT Greengrass resource.</p><p><h3>See
946          * Also:</h3>   <a
947          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListTagsForResource">AWS
948          * API Reference</a></p>
949          *
950          * Queues the request into a thread executor and triggers associated callback when operation has finished.
951          */
952         virtual void ListTagsForResourceAsync(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
953 
954         /**
955          * <p>Retrieves a list of components that meet the component, version, and platform
956          * requirements of a deployment. Greengrass core devices call this operation when
957          * they receive a deployment to identify the components to install.</p> <p>This
958          * operation identifies components that meet all dependency requirements for a
959          * deployment. If the requirements conflict, then this operation returns an error
960          * and the deployment fails. For example, this occurs if component <code>A</code>
961          * requires version <code>&gt;2.0.0</code> and component <code>B</code> requires
962          * version <code>&lt;2.0.0</code> of a component dependency.</p> <p>When you
963          * specify the component candidates to resolve, IoT Greengrass compares each
964          * component's digest from the core device with the component's digest in the
965          * Amazon Web Services Cloud. If the digests don't match, then IoT Greengrass
966          * specifies to use the version from the Amazon Web Services Cloud.</p>
967          * <p>To use this operation, you must use the data plane API endpoint and
968          * authenticate with an IoT device certificate. For more information, see <a
969          * href="https://docs.aws.amazon.com/general/latest/gr/greengrass.html">IoT
970          * Greengrass endpoints and quotas</a>.</p> <p><h3>See Also:</h3>   <a
971          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ResolveComponentCandidates">AWS
972          * API Reference</a></p>
973          */
974         virtual Model::ResolveComponentCandidatesOutcome ResolveComponentCandidates(const Model::ResolveComponentCandidatesRequest& request) const;
975 
976         /**
977          * <p>Retrieves a list of components that meet the component, version, and platform
978          * requirements of a deployment. Greengrass core devices call this operation when
979          * they receive a deployment to identify the components to install.</p> <p>This
980          * operation identifies components that meet all dependency requirements for a
981          * deployment. If the requirements conflict, then this operation returns an error
982          * and the deployment fails. For example, this occurs if component <code>A</code>
983          * requires version <code>&gt;2.0.0</code> and component <code>B</code> requires
984          * version <code>&lt;2.0.0</code> of a component dependency.</p> <p>When you
985          * specify the component candidates to resolve, IoT Greengrass compares each
986          * component's digest from the core device with the component's digest in the
987          * Amazon Web Services Cloud. If the digests don't match, then IoT Greengrass
988          * specifies to use the version from the Amazon Web Services Cloud.</p>
989          * <p>To use this operation, you must use the data plane API endpoint and
990          * authenticate with an IoT device certificate. For more information, see <a
991          * href="https://docs.aws.amazon.com/general/latest/gr/greengrass.html">IoT
992          * Greengrass endpoints and quotas</a>.</p> <p><h3>See Also:</h3>   <a
993          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ResolveComponentCandidates">AWS
994          * API Reference</a></p>
995          *
996          * returns a future to the operation so that it can be executed in parallel to other requests.
997          */
998         virtual Model::ResolveComponentCandidatesOutcomeCallable ResolveComponentCandidatesCallable(const Model::ResolveComponentCandidatesRequest& request) const;
999 
1000         /**
1001          * <p>Retrieves a list of components that meet the component, version, and platform
1002          * requirements of a deployment. Greengrass core devices call this operation when
1003          * they receive a deployment to identify the components to install.</p> <p>This
1004          * operation identifies components that meet all dependency requirements for a
1005          * deployment. If the requirements conflict, then this operation returns an error
1006          * and the deployment fails. For example, this occurs if component <code>A</code>
1007          * requires version <code>&gt;2.0.0</code> and component <code>B</code> requires
1008          * version <code>&lt;2.0.0</code> of a component dependency.</p> <p>When you
1009          * specify the component candidates to resolve, IoT Greengrass compares each
1010          * component's digest from the core device with the component's digest in the
1011          * Amazon Web Services Cloud. If the digests don't match, then IoT Greengrass
1012          * specifies to use the version from the Amazon Web Services Cloud.</p>
1013          * <p>To use this operation, you must use the data plane API endpoint and
1014          * authenticate with an IoT device certificate. For more information, see <a
1015          * href="https://docs.aws.amazon.com/general/latest/gr/greengrass.html">IoT
1016          * Greengrass endpoints and quotas</a>.</p> <p><h3>See Also:</h3>   <a
1017          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ResolveComponentCandidates">AWS
1018          * API Reference</a></p>
1019          *
1020          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1021          */
1022         virtual void ResolveComponentCandidatesAsync(const Model::ResolveComponentCandidatesRequest& request, const ResolveComponentCandidatesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1023 
1024         /**
1025          * <p>Adds tags to an IoT Greengrass resource. If a tag already exists for the
1026          * resource, this operation updates the tag's value.</p><p><h3>See Also:</h3>   <a
1027          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/TagResource">AWS
1028          * API Reference</a></p>
1029          */
1030         virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const;
1031 
1032         /**
1033          * <p>Adds tags to an IoT Greengrass resource. If a tag already exists for the
1034          * resource, this operation updates the tag's value.</p><p><h3>See Also:</h3>   <a
1035          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/TagResource">AWS
1036          * API Reference</a></p>
1037          *
1038          * returns a future to the operation so that it can be executed in parallel to other requests.
1039          */
1040         virtual Model::TagResourceOutcomeCallable TagResourceCallable(const Model::TagResourceRequest& request) const;
1041 
1042         /**
1043          * <p>Adds tags to an IoT Greengrass resource. If a tag already exists for the
1044          * resource, this operation updates the tag's value.</p><p><h3>See Also:</h3>   <a
1045          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/TagResource">AWS
1046          * API Reference</a></p>
1047          *
1048          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1049          */
1050         virtual void TagResourceAsync(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1051 
1052         /**
1053          * <p>Removes a tag from an IoT Greengrass resource.</p><p><h3>See Also:</h3>   <a
1054          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/UntagResource">AWS
1055          * API Reference</a></p>
1056          */
1057         virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const;
1058 
1059         /**
1060          * <p>Removes a tag from an IoT Greengrass resource.</p><p><h3>See Also:</h3>   <a
1061          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/UntagResource">AWS
1062          * API Reference</a></p>
1063          *
1064          * returns a future to the operation so that it can be executed in parallel to other requests.
1065          */
1066         virtual Model::UntagResourceOutcomeCallable UntagResourceCallable(const Model::UntagResourceRequest& request) const;
1067 
1068         /**
1069          * <p>Removes a tag from an IoT Greengrass resource.</p><p><h3>See Also:</h3>   <a
1070          * href="http://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/UntagResource">AWS
1071          * API Reference</a></p>
1072          *
1073          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1074          */
1075         virtual void UntagResourceAsync(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1076 
1077 
1078       void OverrideEndpoint(const Aws::String& endpoint);
1079     private:
1080       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
1081         void BatchAssociateClientDeviceWithCoreDeviceAsyncHelper(const Model::BatchAssociateClientDeviceWithCoreDeviceRequest& request, const BatchAssociateClientDeviceWithCoreDeviceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1082         void BatchDisassociateClientDeviceFromCoreDeviceAsyncHelper(const Model::BatchDisassociateClientDeviceFromCoreDeviceRequest& request, const BatchDisassociateClientDeviceFromCoreDeviceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1083         void CancelDeploymentAsyncHelper(const Model::CancelDeploymentRequest& request, const CancelDeploymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1084         void CreateComponentVersionAsyncHelper(const Model::CreateComponentVersionRequest& request, const CreateComponentVersionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1085         void CreateDeploymentAsyncHelper(const Model::CreateDeploymentRequest& request, const CreateDeploymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1086         void DeleteComponentAsyncHelper(const Model::DeleteComponentRequest& request, const DeleteComponentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1087         void DeleteCoreDeviceAsyncHelper(const Model::DeleteCoreDeviceRequest& request, const DeleteCoreDeviceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1088         void DescribeComponentAsyncHelper(const Model::DescribeComponentRequest& request, const DescribeComponentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1089         void GetComponentAsyncHelper(const Model::GetComponentRequest& request, const GetComponentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1090         void GetComponentVersionArtifactAsyncHelper(const Model::GetComponentVersionArtifactRequest& request, const GetComponentVersionArtifactResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1091         void GetCoreDeviceAsyncHelper(const Model::GetCoreDeviceRequest& request, const GetCoreDeviceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1092         void GetDeploymentAsyncHelper(const Model::GetDeploymentRequest& request, const GetDeploymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1093         void ListClientDevicesAssociatedWithCoreDeviceAsyncHelper(const Model::ListClientDevicesAssociatedWithCoreDeviceRequest& request, const ListClientDevicesAssociatedWithCoreDeviceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1094         void ListComponentVersionsAsyncHelper(const Model::ListComponentVersionsRequest& request, const ListComponentVersionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1095         void ListComponentsAsyncHelper(const Model::ListComponentsRequest& request, const ListComponentsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1096         void ListCoreDevicesAsyncHelper(const Model::ListCoreDevicesRequest& request, const ListCoreDevicesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1097         void ListDeploymentsAsyncHelper(const Model::ListDeploymentsRequest& request, const ListDeploymentsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1098         void ListEffectiveDeploymentsAsyncHelper(const Model::ListEffectiveDeploymentsRequest& request, const ListEffectiveDeploymentsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1099         void ListInstalledComponentsAsyncHelper(const Model::ListInstalledComponentsRequest& request, const ListInstalledComponentsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1100         void ListTagsForResourceAsyncHelper(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1101         void ResolveComponentCandidatesAsyncHelper(const Model::ResolveComponentCandidatesRequest& request, const ResolveComponentCandidatesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1102         void TagResourceAsyncHelper(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1103         void UntagResourceAsyncHelper(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1104 
1105       Aws::String m_uri;
1106       Aws::String m_configScheme;
1107       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
1108   };
1109 
1110 } // namespace GreengrassV2
1111 } // namespace Aws
1112