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/es/ElasticsearchService_EXPORTS.h>
8 #include <aws/es/ElasticsearchServiceErrors.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/es/model/AcceptInboundCrossClusterSearchConnectionResult.h>
15 #include <aws/es/model/AssociatePackageResult.h>
16 #include <aws/es/model/CancelElasticsearchServiceSoftwareUpdateResult.h>
17 #include <aws/es/model/CreateElasticsearchDomainResult.h>
18 #include <aws/es/model/CreateOutboundCrossClusterSearchConnectionResult.h>
19 #include <aws/es/model/CreatePackageResult.h>
20 #include <aws/es/model/DeleteElasticsearchDomainResult.h>
21 #include <aws/es/model/DeleteInboundCrossClusterSearchConnectionResult.h>
22 #include <aws/es/model/DeleteOutboundCrossClusterSearchConnectionResult.h>
23 #include <aws/es/model/DeletePackageResult.h>
24 #include <aws/es/model/DescribeDomainAutoTunesResult.h>
25 #include <aws/es/model/DescribeElasticsearchDomainResult.h>
26 #include <aws/es/model/DescribeElasticsearchDomainConfigResult.h>
27 #include <aws/es/model/DescribeElasticsearchDomainsResult.h>
28 #include <aws/es/model/DescribeElasticsearchInstanceTypeLimitsResult.h>
29 #include <aws/es/model/DescribeInboundCrossClusterSearchConnectionsResult.h>
30 #include <aws/es/model/DescribeOutboundCrossClusterSearchConnectionsResult.h>
31 #include <aws/es/model/DescribePackagesResult.h>
32 #include <aws/es/model/DescribeReservedElasticsearchInstanceOfferingsResult.h>
33 #include <aws/es/model/DescribeReservedElasticsearchInstancesResult.h>
34 #include <aws/es/model/DissociatePackageResult.h>
35 #include <aws/es/model/GetCompatibleElasticsearchVersionsResult.h>
36 #include <aws/es/model/GetPackageVersionHistoryResult.h>
37 #include <aws/es/model/GetUpgradeHistoryResult.h>
38 #include <aws/es/model/GetUpgradeStatusResult.h>
39 #include <aws/es/model/ListDomainNamesResult.h>
40 #include <aws/es/model/ListDomainsForPackageResult.h>
41 #include <aws/es/model/ListElasticsearchInstanceTypesResult.h>
42 #include <aws/es/model/ListElasticsearchVersionsResult.h>
43 #include <aws/es/model/ListPackagesForDomainResult.h>
44 #include <aws/es/model/ListTagsResult.h>
45 #include <aws/es/model/PurchaseReservedElasticsearchInstanceOfferingResult.h>
46 #include <aws/es/model/RejectInboundCrossClusterSearchConnectionResult.h>
47 #include <aws/es/model/StartElasticsearchServiceSoftwareUpdateResult.h>
48 #include <aws/es/model/UpdateElasticsearchDomainConfigResult.h>
49 #include <aws/es/model/UpdatePackageResult.h>
50 #include <aws/es/model/UpgradeElasticsearchDomainResult.h>
51 #include <aws/core/NoResult.h>
52 #include <aws/core/client/AsyncCallerContext.h>
53 #include <aws/core/http/HttpTypes.h>
54 #include <future>
55 #include <functional>
56 
57 namespace Aws
58 {
59 
60 namespace Http
61 {
62   class HttpClient;
63   class HttpClientFactory;
64 } // namespace Http
65 
66 namespace Utils
67 {
68   template< typename R, typename E> class Outcome;
69 namespace Threading
70 {
71   class Executor;
72 } // namespace Threading
73 } // namespace Utils
74 
75 namespace Auth
76 {
77   class AWSCredentials;
78   class AWSCredentialsProvider;
79 } // namespace Auth
80 
81 namespace Client
82 {
83   class RetryStrategy;
84 } // namespace Client
85 
86 namespace ElasticsearchService
87 {
88 
89 namespace Model
90 {
91         class AcceptInboundCrossClusterSearchConnectionRequest;
92         class AddTagsRequest;
93         class AssociatePackageRequest;
94         class CancelElasticsearchServiceSoftwareUpdateRequest;
95         class CreateElasticsearchDomainRequest;
96         class CreateOutboundCrossClusterSearchConnectionRequest;
97         class CreatePackageRequest;
98         class DeleteElasticsearchDomainRequest;
99         class DeleteInboundCrossClusterSearchConnectionRequest;
100         class DeleteOutboundCrossClusterSearchConnectionRequest;
101         class DeletePackageRequest;
102         class DescribeDomainAutoTunesRequest;
103         class DescribeElasticsearchDomainRequest;
104         class DescribeElasticsearchDomainConfigRequest;
105         class DescribeElasticsearchDomainsRequest;
106         class DescribeElasticsearchInstanceTypeLimitsRequest;
107         class DescribeInboundCrossClusterSearchConnectionsRequest;
108         class DescribeOutboundCrossClusterSearchConnectionsRequest;
109         class DescribePackagesRequest;
110         class DescribeReservedElasticsearchInstanceOfferingsRequest;
111         class DescribeReservedElasticsearchInstancesRequest;
112         class DissociatePackageRequest;
113         class GetCompatibleElasticsearchVersionsRequest;
114         class GetPackageVersionHistoryRequest;
115         class GetUpgradeHistoryRequest;
116         class GetUpgradeStatusRequest;
117         class ListDomainNamesRequest;
118         class ListDomainsForPackageRequest;
119         class ListElasticsearchInstanceTypesRequest;
120         class ListElasticsearchVersionsRequest;
121         class ListPackagesForDomainRequest;
122         class ListTagsRequest;
123         class PurchaseReservedElasticsearchInstanceOfferingRequest;
124         class RejectInboundCrossClusterSearchConnectionRequest;
125         class RemoveTagsRequest;
126         class StartElasticsearchServiceSoftwareUpdateRequest;
127         class UpdateElasticsearchDomainConfigRequest;
128         class UpdatePackageRequest;
129         class UpgradeElasticsearchDomainRequest;
130 
131         typedef Aws::Utils::Outcome<AcceptInboundCrossClusterSearchConnectionResult, ElasticsearchServiceError> AcceptInboundCrossClusterSearchConnectionOutcome;
132         typedef Aws::Utils::Outcome<Aws::NoResult, ElasticsearchServiceError> AddTagsOutcome;
133         typedef Aws::Utils::Outcome<AssociatePackageResult, ElasticsearchServiceError> AssociatePackageOutcome;
134         typedef Aws::Utils::Outcome<CancelElasticsearchServiceSoftwareUpdateResult, ElasticsearchServiceError> CancelElasticsearchServiceSoftwareUpdateOutcome;
135         typedef Aws::Utils::Outcome<CreateElasticsearchDomainResult, ElasticsearchServiceError> CreateElasticsearchDomainOutcome;
136         typedef Aws::Utils::Outcome<CreateOutboundCrossClusterSearchConnectionResult, ElasticsearchServiceError> CreateOutboundCrossClusterSearchConnectionOutcome;
137         typedef Aws::Utils::Outcome<CreatePackageResult, ElasticsearchServiceError> CreatePackageOutcome;
138         typedef Aws::Utils::Outcome<DeleteElasticsearchDomainResult, ElasticsearchServiceError> DeleteElasticsearchDomainOutcome;
139         typedef Aws::Utils::Outcome<Aws::NoResult, ElasticsearchServiceError> DeleteElasticsearchServiceRoleOutcome;
140         typedef Aws::Utils::Outcome<DeleteInboundCrossClusterSearchConnectionResult, ElasticsearchServiceError> DeleteInboundCrossClusterSearchConnectionOutcome;
141         typedef Aws::Utils::Outcome<DeleteOutboundCrossClusterSearchConnectionResult, ElasticsearchServiceError> DeleteOutboundCrossClusterSearchConnectionOutcome;
142         typedef Aws::Utils::Outcome<DeletePackageResult, ElasticsearchServiceError> DeletePackageOutcome;
143         typedef Aws::Utils::Outcome<DescribeDomainAutoTunesResult, ElasticsearchServiceError> DescribeDomainAutoTunesOutcome;
144         typedef Aws::Utils::Outcome<DescribeElasticsearchDomainResult, ElasticsearchServiceError> DescribeElasticsearchDomainOutcome;
145         typedef Aws::Utils::Outcome<DescribeElasticsearchDomainConfigResult, ElasticsearchServiceError> DescribeElasticsearchDomainConfigOutcome;
146         typedef Aws::Utils::Outcome<DescribeElasticsearchDomainsResult, ElasticsearchServiceError> DescribeElasticsearchDomainsOutcome;
147         typedef Aws::Utils::Outcome<DescribeElasticsearchInstanceTypeLimitsResult, ElasticsearchServiceError> DescribeElasticsearchInstanceTypeLimitsOutcome;
148         typedef Aws::Utils::Outcome<DescribeInboundCrossClusterSearchConnectionsResult, ElasticsearchServiceError> DescribeInboundCrossClusterSearchConnectionsOutcome;
149         typedef Aws::Utils::Outcome<DescribeOutboundCrossClusterSearchConnectionsResult, ElasticsearchServiceError> DescribeOutboundCrossClusterSearchConnectionsOutcome;
150         typedef Aws::Utils::Outcome<DescribePackagesResult, ElasticsearchServiceError> DescribePackagesOutcome;
151         typedef Aws::Utils::Outcome<DescribeReservedElasticsearchInstanceOfferingsResult, ElasticsearchServiceError> DescribeReservedElasticsearchInstanceOfferingsOutcome;
152         typedef Aws::Utils::Outcome<DescribeReservedElasticsearchInstancesResult, ElasticsearchServiceError> DescribeReservedElasticsearchInstancesOutcome;
153         typedef Aws::Utils::Outcome<DissociatePackageResult, ElasticsearchServiceError> DissociatePackageOutcome;
154         typedef Aws::Utils::Outcome<GetCompatibleElasticsearchVersionsResult, ElasticsearchServiceError> GetCompatibleElasticsearchVersionsOutcome;
155         typedef Aws::Utils::Outcome<GetPackageVersionHistoryResult, ElasticsearchServiceError> GetPackageVersionHistoryOutcome;
156         typedef Aws::Utils::Outcome<GetUpgradeHistoryResult, ElasticsearchServiceError> GetUpgradeHistoryOutcome;
157         typedef Aws::Utils::Outcome<GetUpgradeStatusResult, ElasticsearchServiceError> GetUpgradeStatusOutcome;
158         typedef Aws::Utils::Outcome<ListDomainNamesResult, ElasticsearchServiceError> ListDomainNamesOutcome;
159         typedef Aws::Utils::Outcome<ListDomainsForPackageResult, ElasticsearchServiceError> ListDomainsForPackageOutcome;
160         typedef Aws::Utils::Outcome<ListElasticsearchInstanceTypesResult, ElasticsearchServiceError> ListElasticsearchInstanceTypesOutcome;
161         typedef Aws::Utils::Outcome<ListElasticsearchVersionsResult, ElasticsearchServiceError> ListElasticsearchVersionsOutcome;
162         typedef Aws::Utils::Outcome<ListPackagesForDomainResult, ElasticsearchServiceError> ListPackagesForDomainOutcome;
163         typedef Aws::Utils::Outcome<ListTagsResult, ElasticsearchServiceError> ListTagsOutcome;
164         typedef Aws::Utils::Outcome<PurchaseReservedElasticsearchInstanceOfferingResult, ElasticsearchServiceError> PurchaseReservedElasticsearchInstanceOfferingOutcome;
165         typedef Aws::Utils::Outcome<RejectInboundCrossClusterSearchConnectionResult, ElasticsearchServiceError> RejectInboundCrossClusterSearchConnectionOutcome;
166         typedef Aws::Utils::Outcome<Aws::NoResult, ElasticsearchServiceError> RemoveTagsOutcome;
167         typedef Aws::Utils::Outcome<StartElasticsearchServiceSoftwareUpdateResult, ElasticsearchServiceError> StartElasticsearchServiceSoftwareUpdateOutcome;
168         typedef Aws::Utils::Outcome<UpdateElasticsearchDomainConfigResult, ElasticsearchServiceError> UpdateElasticsearchDomainConfigOutcome;
169         typedef Aws::Utils::Outcome<UpdatePackageResult, ElasticsearchServiceError> UpdatePackageOutcome;
170         typedef Aws::Utils::Outcome<UpgradeElasticsearchDomainResult, ElasticsearchServiceError> UpgradeElasticsearchDomainOutcome;
171 
172         typedef std::future<AcceptInboundCrossClusterSearchConnectionOutcome> AcceptInboundCrossClusterSearchConnectionOutcomeCallable;
173         typedef std::future<AddTagsOutcome> AddTagsOutcomeCallable;
174         typedef std::future<AssociatePackageOutcome> AssociatePackageOutcomeCallable;
175         typedef std::future<CancelElasticsearchServiceSoftwareUpdateOutcome> CancelElasticsearchServiceSoftwareUpdateOutcomeCallable;
176         typedef std::future<CreateElasticsearchDomainOutcome> CreateElasticsearchDomainOutcomeCallable;
177         typedef std::future<CreateOutboundCrossClusterSearchConnectionOutcome> CreateOutboundCrossClusterSearchConnectionOutcomeCallable;
178         typedef std::future<CreatePackageOutcome> CreatePackageOutcomeCallable;
179         typedef std::future<DeleteElasticsearchDomainOutcome> DeleteElasticsearchDomainOutcomeCallable;
180         typedef std::future<DeleteElasticsearchServiceRoleOutcome> DeleteElasticsearchServiceRoleOutcomeCallable;
181         typedef std::future<DeleteInboundCrossClusterSearchConnectionOutcome> DeleteInboundCrossClusterSearchConnectionOutcomeCallable;
182         typedef std::future<DeleteOutboundCrossClusterSearchConnectionOutcome> DeleteOutboundCrossClusterSearchConnectionOutcomeCallable;
183         typedef std::future<DeletePackageOutcome> DeletePackageOutcomeCallable;
184         typedef std::future<DescribeDomainAutoTunesOutcome> DescribeDomainAutoTunesOutcomeCallable;
185         typedef std::future<DescribeElasticsearchDomainOutcome> DescribeElasticsearchDomainOutcomeCallable;
186         typedef std::future<DescribeElasticsearchDomainConfigOutcome> DescribeElasticsearchDomainConfigOutcomeCallable;
187         typedef std::future<DescribeElasticsearchDomainsOutcome> DescribeElasticsearchDomainsOutcomeCallable;
188         typedef std::future<DescribeElasticsearchInstanceTypeLimitsOutcome> DescribeElasticsearchInstanceTypeLimitsOutcomeCallable;
189         typedef std::future<DescribeInboundCrossClusterSearchConnectionsOutcome> DescribeInboundCrossClusterSearchConnectionsOutcomeCallable;
190         typedef std::future<DescribeOutboundCrossClusterSearchConnectionsOutcome> DescribeOutboundCrossClusterSearchConnectionsOutcomeCallable;
191         typedef std::future<DescribePackagesOutcome> DescribePackagesOutcomeCallable;
192         typedef std::future<DescribeReservedElasticsearchInstanceOfferingsOutcome> DescribeReservedElasticsearchInstanceOfferingsOutcomeCallable;
193         typedef std::future<DescribeReservedElasticsearchInstancesOutcome> DescribeReservedElasticsearchInstancesOutcomeCallable;
194         typedef std::future<DissociatePackageOutcome> DissociatePackageOutcomeCallable;
195         typedef std::future<GetCompatibleElasticsearchVersionsOutcome> GetCompatibleElasticsearchVersionsOutcomeCallable;
196         typedef std::future<GetPackageVersionHistoryOutcome> GetPackageVersionHistoryOutcomeCallable;
197         typedef std::future<GetUpgradeHistoryOutcome> GetUpgradeHistoryOutcomeCallable;
198         typedef std::future<GetUpgradeStatusOutcome> GetUpgradeStatusOutcomeCallable;
199         typedef std::future<ListDomainNamesOutcome> ListDomainNamesOutcomeCallable;
200         typedef std::future<ListDomainsForPackageOutcome> ListDomainsForPackageOutcomeCallable;
201         typedef std::future<ListElasticsearchInstanceTypesOutcome> ListElasticsearchInstanceTypesOutcomeCallable;
202         typedef std::future<ListElasticsearchVersionsOutcome> ListElasticsearchVersionsOutcomeCallable;
203         typedef std::future<ListPackagesForDomainOutcome> ListPackagesForDomainOutcomeCallable;
204         typedef std::future<ListTagsOutcome> ListTagsOutcomeCallable;
205         typedef std::future<PurchaseReservedElasticsearchInstanceOfferingOutcome> PurchaseReservedElasticsearchInstanceOfferingOutcomeCallable;
206         typedef std::future<RejectInboundCrossClusterSearchConnectionOutcome> RejectInboundCrossClusterSearchConnectionOutcomeCallable;
207         typedef std::future<RemoveTagsOutcome> RemoveTagsOutcomeCallable;
208         typedef std::future<StartElasticsearchServiceSoftwareUpdateOutcome> StartElasticsearchServiceSoftwareUpdateOutcomeCallable;
209         typedef std::future<UpdateElasticsearchDomainConfigOutcome> UpdateElasticsearchDomainConfigOutcomeCallable;
210         typedef std::future<UpdatePackageOutcome> UpdatePackageOutcomeCallable;
211         typedef std::future<UpgradeElasticsearchDomainOutcome> UpgradeElasticsearchDomainOutcomeCallable;
212 } // namespace Model
213 
214   class ElasticsearchServiceClient;
215 
216     typedef std::function<void(const ElasticsearchServiceClient*, const Model::AcceptInboundCrossClusterSearchConnectionRequest&, const Model::AcceptInboundCrossClusterSearchConnectionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AcceptInboundCrossClusterSearchConnectionResponseReceivedHandler;
217     typedef std::function<void(const ElasticsearchServiceClient*, const Model::AddTagsRequest&, const Model::AddTagsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AddTagsResponseReceivedHandler;
218     typedef std::function<void(const ElasticsearchServiceClient*, const Model::AssociatePackageRequest&, const Model::AssociatePackageOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AssociatePackageResponseReceivedHandler;
219     typedef std::function<void(const ElasticsearchServiceClient*, const Model::CancelElasticsearchServiceSoftwareUpdateRequest&, const Model::CancelElasticsearchServiceSoftwareUpdateOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CancelElasticsearchServiceSoftwareUpdateResponseReceivedHandler;
220     typedef std::function<void(const ElasticsearchServiceClient*, const Model::CreateElasticsearchDomainRequest&, const Model::CreateElasticsearchDomainOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateElasticsearchDomainResponseReceivedHandler;
221     typedef std::function<void(const ElasticsearchServiceClient*, const Model::CreateOutboundCrossClusterSearchConnectionRequest&, const Model::CreateOutboundCrossClusterSearchConnectionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateOutboundCrossClusterSearchConnectionResponseReceivedHandler;
222     typedef std::function<void(const ElasticsearchServiceClient*, const Model::CreatePackageRequest&, const Model::CreatePackageOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreatePackageResponseReceivedHandler;
223     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DeleteElasticsearchDomainRequest&, const Model::DeleteElasticsearchDomainOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteElasticsearchDomainResponseReceivedHandler;
224     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DeleteElasticsearchServiceRoleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteElasticsearchServiceRoleResponseReceivedHandler;
225     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DeleteInboundCrossClusterSearchConnectionRequest&, const Model::DeleteInboundCrossClusterSearchConnectionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteInboundCrossClusterSearchConnectionResponseReceivedHandler;
226     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DeleteOutboundCrossClusterSearchConnectionRequest&, const Model::DeleteOutboundCrossClusterSearchConnectionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteOutboundCrossClusterSearchConnectionResponseReceivedHandler;
227     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DeletePackageRequest&, const Model::DeletePackageOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeletePackageResponseReceivedHandler;
228     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DescribeDomainAutoTunesRequest&, const Model::DescribeDomainAutoTunesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeDomainAutoTunesResponseReceivedHandler;
229     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DescribeElasticsearchDomainRequest&, const Model::DescribeElasticsearchDomainOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeElasticsearchDomainResponseReceivedHandler;
230     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DescribeElasticsearchDomainConfigRequest&, const Model::DescribeElasticsearchDomainConfigOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeElasticsearchDomainConfigResponseReceivedHandler;
231     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DescribeElasticsearchDomainsRequest&, const Model::DescribeElasticsearchDomainsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeElasticsearchDomainsResponseReceivedHandler;
232     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DescribeElasticsearchInstanceTypeLimitsRequest&, const Model::DescribeElasticsearchInstanceTypeLimitsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeElasticsearchInstanceTypeLimitsResponseReceivedHandler;
233     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DescribeInboundCrossClusterSearchConnectionsRequest&, const Model::DescribeInboundCrossClusterSearchConnectionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeInboundCrossClusterSearchConnectionsResponseReceivedHandler;
234     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DescribeOutboundCrossClusterSearchConnectionsRequest&, const Model::DescribeOutboundCrossClusterSearchConnectionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeOutboundCrossClusterSearchConnectionsResponseReceivedHandler;
235     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DescribePackagesRequest&, const Model::DescribePackagesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribePackagesResponseReceivedHandler;
236     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DescribeReservedElasticsearchInstanceOfferingsRequest&, const Model::DescribeReservedElasticsearchInstanceOfferingsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeReservedElasticsearchInstanceOfferingsResponseReceivedHandler;
237     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DescribeReservedElasticsearchInstancesRequest&, const Model::DescribeReservedElasticsearchInstancesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeReservedElasticsearchInstancesResponseReceivedHandler;
238     typedef std::function<void(const ElasticsearchServiceClient*, const Model::DissociatePackageRequest&, const Model::DissociatePackageOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DissociatePackageResponseReceivedHandler;
239     typedef std::function<void(const ElasticsearchServiceClient*, const Model::GetCompatibleElasticsearchVersionsRequest&, const Model::GetCompatibleElasticsearchVersionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetCompatibleElasticsearchVersionsResponseReceivedHandler;
240     typedef std::function<void(const ElasticsearchServiceClient*, const Model::GetPackageVersionHistoryRequest&, const Model::GetPackageVersionHistoryOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetPackageVersionHistoryResponseReceivedHandler;
241     typedef std::function<void(const ElasticsearchServiceClient*, const Model::GetUpgradeHistoryRequest&, const Model::GetUpgradeHistoryOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetUpgradeHistoryResponseReceivedHandler;
242     typedef std::function<void(const ElasticsearchServiceClient*, const Model::GetUpgradeStatusRequest&, const Model::GetUpgradeStatusOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetUpgradeStatusResponseReceivedHandler;
243     typedef std::function<void(const ElasticsearchServiceClient*, const Model::ListDomainNamesRequest&, const Model::ListDomainNamesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListDomainNamesResponseReceivedHandler;
244     typedef std::function<void(const ElasticsearchServiceClient*, const Model::ListDomainsForPackageRequest&, const Model::ListDomainsForPackageOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListDomainsForPackageResponseReceivedHandler;
245     typedef std::function<void(const ElasticsearchServiceClient*, const Model::ListElasticsearchInstanceTypesRequest&, const Model::ListElasticsearchInstanceTypesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListElasticsearchInstanceTypesResponseReceivedHandler;
246     typedef std::function<void(const ElasticsearchServiceClient*, const Model::ListElasticsearchVersionsRequest&, const Model::ListElasticsearchVersionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListElasticsearchVersionsResponseReceivedHandler;
247     typedef std::function<void(const ElasticsearchServiceClient*, const Model::ListPackagesForDomainRequest&, const Model::ListPackagesForDomainOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListPackagesForDomainResponseReceivedHandler;
248     typedef std::function<void(const ElasticsearchServiceClient*, const Model::ListTagsRequest&, const Model::ListTagsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListTagsResponseReceivedHandler;
249     typedef std::function<void(const ElasticsearchServiceClient*, const Model::PurchaseReservedElasticsearchInstanceOfferingRequest&, const Model::PurchaseReservedElasticsearchInstanceOfferingOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PurchaseReservedElasticsearchInstanceOfferingResponseReceivedHandler;
250     typedef std::function<void(const ElasticsearchServiceClient*, const Model::RejectInboundCrossClusterSearchConnectionRequest&, const Model::RejectInboundCrossClusterSearchConnectionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RejectInboundCrossClusterSearchConnectionResponseReceivedHandler;
251     typedef std::function<void(const ElasticsearchServiceClient*, const Model::RemoveTagsRequest&, const Model::RemoveTagsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RemoveTagsResponseReceivedHandler;
252     typedef std::function<void(const ElasticsearchServiceClient*, const Model::StartElasticsearchServiceSoftwareUpdateRequest&, const Model::StartElasticsearchServiceSoftwareUpdateOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > StartElasticsearchServiceSoftwareUpdateResponseReceivedHandler;
253     typedef std::function<void(const ElasticsearchServiceClient*, const Model::UpdateElasticsearchDomainConfigRequest&, const Model::UpdateElasticsearchDomainConfigOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateElasticsearchDomainConfigResponseReceivedHandler;
254     typedef std::function<void(const ElasticsearchServiceClient*, const Model::UpdatePackageRequest&, const Model::UpdatePackageOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdatePackageResponseReceivedHandler;
255     typedef std::function<void(const ElasticsearchServiceClient*, const Model::UpgradeElasticsearchDomainRequest&, const Model::UpgradeElasticsearchDomainOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpgradeElasticsearchDomainResponseReceivedHandler;
256 
257   /**
258    * <fullname>Amazon Elasticsearch Configuration Service</fullname> <p>Use the
259    * Amazon Elasticsearch Configuration API to create, configure, and manage
260    * Elasticsearch domains.</p> <p>For sample code that uses the Configuration API,
261    * see the <a
262    * href="https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-configuration-samples.html">Amazon
263    * Elasticsearch Service Developer Guide</a>. The guide also contains <a
264    * href="https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-request-signing.html">sample
265    * code for sending signed HTTP requests to the Elasticsearch APIs</a>.</p> <p>The
266    * endpoint for configuration service requests is region-specific:
267    * es.<i>region</i>.amazonaws.com. For example, es.us-east-1.amazonaws.com. For a
268    * current list of supported regions and endpoints, see <a
269    * href="http://docs.aws.amazon.com/general/latest/gr/rande.html#elasticsearch-service-regions"
270    * target="_blank">Regions and Endpoints</a>.</p>
271    */
272   class AWS_ELASTICSEARCHSERVICE_API ElasticsearchServiceClient : public Aws::Client::AWSJsonClient
273   {
274     public:
275       typedef Aws::Client::AWSJsonClient BASECLASS;
276 
277        /**
278         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
279         * is not specified, it will be initialized to default values.
280         */
281         ElasticsearchServiceClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
282 
283        /**
284         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
285         * is not specified, it will be initialized to default values.
286         */
287         ElasticsearchServiceClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
288 
289        /**
290         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
291         * the default http client factory will be used
292         */
293         ElasticsearchServiceClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
294             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
295 
296         virtual ~ElasticsearchServiceClient();
297 
298 
299         /**
300          * <p>Allows the destination domain owner to accept an inbound cross-cluster search
301          * connection request.</p><p><h3>See Also:</h3>   <a
302          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/AcceptInboundCrossClusterSearchConnection">AWS
303          * API Reference</a></p>
304          */
305         virtual Model::AcceptInboundCrossClusterSearchConnectionOutcome AcceptInboundCrossClusterSearchConnection(const Model::AcceptInboundCrossClusterSearchConnectionRequest& request) const;
306 
307         /**
308          * <p>Allows the destination domain owner to accept an inbound cross-cluster search
309          * connection request.</p><p><h3>See Also:</h3>   <a
310          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/AcceptInboundCrossClusterSearchConnection">AWS
311          * API Reference</a></p>
312          *
313          * returns a future to the operation so that it can be executed in parallel to other requests.
314          */
315         virtual Model::AcceptInboundCrossClusterSearchConnectionOutcomeCallable AcceptInboundCrossClusterSearchConnectionCallable(const Model::AcceptInboundCrossClusterSearchConnectionRequest& request) const;
316 
317         /**
318          * <p>Allows the destination domain owner to accept an inbound cross-cluster search
319          * connection request.</p><p><h3>See Also:</h3>   <a
320          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/AcceptInboundCrossClusterSearchConnection">AWS
321          * API Reference</a></p>
322          *
323          * Queues the request into a thread executor and triggers associated callback when operation has finished.
324          */
325         virtual void AcceptInboundCrossClusterSearchConnectionAsync(const Model::AcceptInboundCrossClusterSearchConnectionRequest& request, const AcceptInboundCrossClusterSearchConnectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
326 
327         /**
328          * <p>Attaches tags to an existing Elasticsearch domain. Tags are a set of
329          * case-sensitive key value pairs. An Elasticsearch domain may have up to 10 tags.
330          * See <a
331          * href="http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html#es-managedomains-awsresorcetagging"
332          * target="_blank"> Tagging Amazon Elasticsearch Service Domains for more
333          * information.</a></p><p><h3>See Also:</h3>   <a
334          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/AddTags">AWS API
335          * Reference</a></p>
336          */
337         virtual Model::AddTagsOutcome AddTags(const Model::AddTagsRequest& request) const;
338 
339         /**
340          * <p>Attaches tags to an existing Elasticsearch domain. Tags are a set of
341          * case-sensitive key value pairs. An Elasticsearch domain may have up to 10 tags.
342          * See <a
343          * href="http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html#es-managedomains-awsresorcetagging"
344          * target="_blank"> Tagging Amazon Elasticsearch Service Domains for more
345          * information.</a></p><p><h3>See Also:</h3>   <a
346          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/AddTags">AWS API
347          * Reference</a></p>
348          *
349          * returns a future to the operation so that it can be executed in parallel to other requests.
350          */
351         virtual Model::AddTagsOutcomeCallable AddTagsCallable(const Model::AddTagsRequest& request) const;
352 
353         /**
354          * <p>Attaches tags to an existing Elasticsearch domain. Tags are a set of
355          * case-sensitive key value pairs. An Elasticsearch domain may have up to 10 tags.
356          * See <a
357          * href="http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html#es-managedomains-awsresorcetagging"
358          * target="_blank"> Tagging Amazon Elasticsearch Service Domains for more
359          * information.</a></p><p><h3>See Also:</h3>   <a
360          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/AddTags">AWS API
361          * Reference</a></p>
362          *
363          * Queues the request into a thread executor and triggers associated callback when operation has finished.
364          */
365         virtual void AddTagsAsync(const Model::AddTagsRequest& request, const AddTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
366 
367         /**
368          * <p>Associates a package with an Amazon ES domain.</p><p><h3>See Also:</h3>   <a
369          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/AssociatePackage">AWS
370          * API Reference</a></p>
371          */
372         virtual Model::AssociatePackageOutcome AssociatePackage(const Model::AssociatePackageRequest& request) const;
373 
374         /**
375          * <p>Associates a package with an Amazon ES domain.</p><p><h3>See Also:</h3>   <a
376          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/AssociatePackage">AWS
377          * API Reference</a></p>
378          *
379          * returns a future to the operation so that it can be executed in parallel to other requests.
380          */
381         virtual Model::AssociatePackageOutcomeCallable AssociatePackageCallable(const Model::AssociatePackageRequest& request) const;
382 
383         /**
384          * <p>Associates a package with an Amazon ES domain.</p><p><h3>See Also:</h3>   <a
385          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/AssociatePackage">AWS
386          * API Reference</a></p>
387          *
388          * Queues the request into a thread executor and triggers associated callback when operation has finished.
389          */
390         virtual void AssociatePackageAsync(const Model::AssociatePackageRequest& request, const AssociatePackageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
391 
392         /**
393          * <p>Cancels a scheduled service software update for an Amazon ES domain. You can
394          * only perform this operation before the <code>AutomatedUpdateDate</code> and when
395          * the <code>UpdateStatus</code> is in the <code>PENDING_UPDATE</code>
396          * state.</p><p><h3>See Also:</h3>   <a
397          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/CancelElasticsearchServiceSoftwareUpdate">AWS
398          * API Reference</a></p>
399          */
400         virtual Model::CancelElasticsearchServiceSoftwareUpdateOutcome CancelElasticsearchServiceSoftwareUpdate(const Model::CancelElasticsearchServiceSoftwareUpdateRequest& request) const;
401 
402         /**
403          * <p>Cancels a scheduled service software update for an Amazon ES domain. You can
404          * only perform this operation before the <code>AutomatedUpdateDate</code> and when
405          * the <code>UpdateStatus</code> is in the <code>PENDING_UPDATE</code>
406          * state.</p><p><h3>See Also:</h3>   <a
407          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/CancelElasticsearchServiceSoftwareUpdate">AWS
408          * API Reference</a></p>
409          *
410          * returns a future to the operation so that it can be executed in parallel to other requests.
411          */
412         virtual Model::CancelElasticsearchServiceSoftwareUpdateOutcomeCallable CancelElasticsearchServiceSoftwareUpdateCallable(const Model::CancelElasticsearchServiceSoftwareUpdateRequest& request) const;
413 
414         /**
415          * <p>Cancels a scheduled service software update for an Amazon ES domain. You can
416          * only perform this operation before the <code>AutomatedUpdateDate</code> and when
417          * the <code>UpdateStatus</code> is in the <code>PENDING_UPDATE</code>
418          * state.</p><p><h3>See Also:</h3>   <a
419          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/CancelElasticsearchServiceSoftwareUpdate">AWS
420          * API Reference</a></p>
421          *
422          * Queues the request into a thread executor and triggers associated callback when operation has finished.
423          */
424         virtual void CancelElasticsearchServiceSoftwareUpdateAsync(const Model::CancelElasticsearchServiceSoftwareUpdateRequest& request, const CancelElasticsearchServiceSoftwareUpdateResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
425 
426         /**
427          * <p>Creates a new Elasticsearch domain. For more information, see <a
428          * href="http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomains"
429          * target="_blank">Creating Elasticsearch Domains</a> in the <i>Amazon
430          * Elasticsearch Service Developer Guide</i>.</p><p><h3>See Also:</h3>   <a
431          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/CreateElasticsearchDomain">AWS
432          * API Reference</a></p>
433          */
434         virtual Model::CreateElasticsearchDomainOutcome CreateElasticsearchDomain(const Model::CreateElasticsearchDomainRequest& request) const;
435 
436         /**
437          * <p>Creates a new Elasticsearch domain. For more information, see <a
438          * href="http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomains"
439          * target="_blank">Creating Elasticsearch Domains</a> in the <i>Amazon
440          * Elasticsearch Service Developer Guide</i>.</p><p><h3>See Also:</h3>   <a
441          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/CreateElasticsearchDomain">AWS
442          * API Reference</a></p>
443          *
444          * returns a future to the operation so that it can be executed in parallel to other requests.
445          */
446         virtual Model::CreateElasticsearchDomainOutcomeCallable CreateElasticsearchDomainCallable(const Model::CreateElasticsearchDomainRequest& request) const;
447 
448         /**
449          * <p>Creates a new Elasticsearch domain. For more information, see <a
450          * href="http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomains"
451          * target="_blank">Creating Elasticsearch Domains</a> in the <i>Amazon
452          * Elasticsearch Service Developer Guide</i>.</p><p><h3>See Also:</h3>   <a
453          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/CreateElasticsearchDomain">AWS
454          * API Reference</a></p>
455          *
456          * Queues the request into a thread executor and triggers associated callback when operation has finished.
457          */
458         virtual void CreateElasticsearchDomainAsync(const Model::CreateElasticsearchDomainRequest& request, const CreateElasticsearchDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
459 
460         /**
461          * <p>Creates a new cross-cluster search connection from a source domain to a
462          * destination domain.</p><p><h3>See Also:</h3>   <a
463          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/CreateOutboundCrossClusterSearchConnection">AWS
464          * API Reference</a></p>
465          */
466         virtual Model::CreateOutboundCrossClusterSearchConnectionOutcome CreateOutboundCrossClusterSearchConnection(const Model::CreateOutboundCrossClusterSearchConnectionRequest& request) const;
467 
468         /**
469          * <p>Creates a new cross-cluster search connection from a source domain to a
470          * destination domain.</p><p><h3>See Also:</h3>   <a
471          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/CreateOutboundCrossClusterSearchConnection">AWS
472          * API Reference</a></p>
473          *
474          * returns a future to the operation so that it can be executed in parallel to other requests.
475          */
476         virtual Model::CreateOutboundCrossClusterSearchConnectionOutcomeCallable CreateOutboundCrossClusterSearchConnectionCallable(const Model::CreateOutboundCrossClusterSearchConnectionRequest& request) const;
477 
478         /**
479          * <p>Creates a new cross-cluster search connection from a source domain to a
480          * destination domain.</p><p><h3>See Also:</h3>   <a
481          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/CreateOutboundCrossClusterSearchConnection">AWS
482          * API Reference</a></p>
483          *
484          * Queues the request into a thread executor and triggers associated callback when operation has finished.
485          */
486         virtual void CreateOutboundCrossClusterSearchConnectionAsync(const Model::CreateOutboundCrossClusterSearchConnectionRequest& request, const CreateOutboundCrossClusterSearchConnectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
487 
488         /**
489          * <p>Create a package for use with Amazon ES domains.</p><p><h3>See Also:</h3>
490          * <a href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/CreatePackage">AWS
491          * API Reference</a></p>
492          */
493         virtual Model::CreatePackageOutcome CreatePackage(const Model::CreatePackageRequest& request) const;
494 
495         /**
496          * <p>Create a package for use with Amazon ES domains.</p><p><h3>See Also:</h3>
497          * <a href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/CreatePackage">AWS
498          * API Reference</a></p>
499          *
500          * returns a future to the operation so that it can be executed in parallel to other requests.
501          */
502         virtual Model::CreatePackageOutcomeCallable CreatePackageCallable(const Model::CreatePackageRequest& request) const;
503 
504         /**
505          * <p>Create a package for use with Amazon ES domains.</p><p><h3>See Also:</h3>
506          * <a href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/CreatePackage">AWS
507          * API Reference</a></p>
508          *
509          * Queues the request into a thread executor and triggers associated callback when operation has finished.
510          */
511         virtual void CreatePackageAsync(const Model::CreatePackageRequest& request, const CreatePackageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
512 
513         /**
514          * <p>Permanently deletes the specified Elasticsearch domain and all of its data.
515          * Once a domain is deleted, it cannot be recovered.</p><p><h3>See Also:</h3>   <a
516          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeleteElasticsearchDomain">AWS
517          * API Reference</a></p>
518          */
519         virtual Model::DeleteElasticsearchDomainOutcome DeleteElasticsearchDomain(const Model::DeleteElasticsearchDomainRequest& request) const;
520 
521         /**
522          * <p>Permanently deletes the specified Elasticsearch domain and all of its data.
523          * Once a domain is deleted, it cannot be recovered.</p><p><h3>See Also:</h3>   <a
524          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeleteElasticsearchDomain">AWS
525          * API Reference</a></p>
526          *
527          * returns a future to the operation so that it can be executed in parallel to other requests.
528          */
529         virtual Model::DeleteElasticsearchDomainOutcomeCallable DeleteElasticsearchDomainCallable(const Model::DeleteElasticsearchDomainRequest& request) const;
530 
531         /**
532          * <p>Permanently deletes the specified Elasticsearch domain and all of its data.
533          * Once a domain is deleted, it cannot be recovered.</p><p><h3>See Also:</h3>   <a
534          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeleteElasticsearchDomain">AWS
535          * API Reference</a></p>
536          *
537          * Queues the request into a thread executor and triggers associated callback when operation has finished.
538          */
539         virtual void DeleteElasticsearchDomainAsync(const Model::DeleteElasticsearchDomainRequest& request, const DeleteElasticsearchDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
540 
541         /**
542          * <p>Deletes the service-linked role that Elasticsearch Service uses to manage and
543          * maintain VPC domains. Role deletion will fail if any existing VPC domains use
544          * the role. You must delete any such Elasticsearch domains before deleting the
545          * role. See <a
546          * href="http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html#es-enabling-slr"
547          * target="_blank">Deleting Elasticsearch Service Role</a> in <i>VPC Endpoints for
548          * Amazon Elasticsearch Service Domains</i>.</p><p><h3>See Also:</h3>   <a
549          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeleteElasticsearchServiceRole">AWS
550          * API Reference</a></p>
551          */
552         virtual Model::DeleteElasticsearchServiceRoleOutcome DeleteElasticsearchServiceRole() const;
553 
554         /**
555          * <p>Deletes the service-linked role that Elasticsearch Service uses to manage and
556          * maintain VPC domains. Role deletion will fail if any existing VPC domains use
557          * the role. You must delete any such Elasticsearch domains before deleting the
558          * role. See <a
559          * href="http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html#es-enabling-slr"
560          * target="_blank">Deleting Elasticsearch Service Role</a> in <i>VPC Endpoints for
561          * Amazon Elasticsearch Service Domains</i>.</p><p><h3>See Also:</h3>   <a
562          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeleteElasticsearchServiceRole">AWS
563          * API Reference</a></p>
564          *
565          * returns a future to the operation so that it can be executed in parallel to other requests.
566          */
567         virtual Model::DeleteElasticsearchServiceRoleOutcomeCallable DeleteElasticsearchServiceRoleCallable() const;
568 
569         /**
570          * <p>Deletes the service-linked role that Elasticsearch Service uses to manage and
571          * maintain VPC domains. Role deletion will fail if any existing VPC domains use
572          * the role. You must delete any such Elasticsearch domains before deleting the
573          * role. See <a
574          * href="http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html#es-enabling-slr"
575          * target="_blank">Deleting Elasticsearch Service Role</a> in <i>VPC Endpoints for
576          * Amazon Elasticsearch Service Domains</i>.</p><p><h3>See Also:</h3>   <a
577          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeleteElasticsearchServiceRole">AWS
578          * API Reference</a></p>
579          *
580          * Queues the request into a thread executor and triggers associated callback when operation has finished.
581          */
582         virtual void DeleteElasticsearchServiceRoleAsync(const DeleteElasticsearchServiceRoleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
583         /**
584          * <p>Allows the destination domain owner to delete an existing inbound
585          * cross-cluster search connection.</p><p><h3>See Also:</h3>   <a
586          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeleteInboundCrossClusterSearchConnection">AWS
587          * API Reference</a></p>
588          */
589         virtual Model::DeleteInboundCrossClusterSearchConnectionOutcome DeleteInboundCrossClusterSearchConnection(const Model::DeleteInboundCrossClusterSearchConnectionRequest& request) const;
590 
591         /**
592          * <p>Allows the destination domain owner to delete an existing inbound
593          * cross-cluster search connection.</p><p><h3>See Also:</h3>   <a
594          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeleteInboundCrossClusterSearchConnection">AWS
595          * API Reference</a></p>
596          *
597          * returns a future to the operation so that it can be executed in parallel to other requests.
598          */
599         virtual Model::DeleteInboundCrossClusterSearchConnectionOutcomeCallable DeleteInboundCrossClusterSearchConnectionCallable(const Model::DeleteInboundCrossClusterSearchConnectionRequest& request) const;
600 
601         /**
602          * <p>Allows the destination domain owner to delete an existing inbound
603          * cross-cluster search connection.</p><p><h3>See Also:</h3>   <a
604          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeleteInboundCrossClusterSearchConnection">AWS
605          * API Reference</a></p>
606          *
607          * Queues the request into a thread executor and triggers associated callback when operation has finished.
608          */
609         virtual void DeleteInboundCrossClusterSearchConnectionAsync(const Model::DeleteInboundCrossClusterSearchConnectionRequest& request, const DeleteInboundCrossClusterSearchConnectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
610 
611         /**
612          * <p>Allows the source domain owner to delete an existing outbound cross-cluster
613          * search connection.</p><p><h3>See Also:</h3>   <a
614          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeleteOutboundCrossClusterSearchConnection">AWS
615          * API Reference</a></p>
616          */
617         virtual Model::DeleteOutboundCrossClusterSearchConnectionOutcome DeleteOutboundCrossClusterSearchConnection(const Model::DeleteOutboundCrossClusterSearchConnectionRequest& request) const;
618 
619         /**
620          * <p>Allows the source domain owner to delete an existing outbound cross-cluster
621          * search connection.</p><p><h3>See Also:</h3>   <a
622          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeleteOutboundCrossClusterSearchConnection">AWS
623          * API Reference</a></p>
624          *
625          * returns a future to the operation so that it can be executed in parallel to other requests.
626          */
627         virtual Model::DeleteOutboundCrossClusterSearchConnectionOutcomeCallable DeleteOutboundCrossClusterSearchConnectionCallable(const Model::DeleteOutboundCrossClusterSearchConnectionRequest& request) const;
628 
629         /**
630          * <p>Allows the source domain owner to delete an existing outbound cross-cluster
631          * search connection.</p><p><h3>See Also:</h3>   <a
632          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeleteOutboundCrossClusterSearchConnection">AWS
633          * API Reference</a></p>
634          *
635          * Queues the request into a thread executor and triggers associated callback when operation has finished.
636          */
637         virtual void DeleteOutboundCrossClusterSearchConnectionAsync(const Model::DeleteOutboundCrossClusterSearchConnectionRequest& request, const DeleteOutboundCrossClusterSearchConnectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
638 
639         /**
640          * <p>Delete the package.</p><p><h3>See Also:</h3>   <a
641          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeletePackage">AWS
642          * API Reference</a></p>
643          */
644         virtual Model::DeletePackageOutcome DeletePackage(const Model::DeletePackageRequest& request) const;
645 
646         /**
647          * <p>Delete the package.</p><p><h3>See Also:</h3>   <a
648          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeletePackage">AWS
649          * API Reference</a></p>
650          *
651          * returns a future to the operation so that it can be executed in parallel to other requests.
652          */
653         virtual Model::DeletePackageOutcomeCallable DeletePackageCallable(const Model::DeletePackageRequest& request) const;
654 
655         /**
656          * <p>Delete the package.</p><p><h3>See Also:</h3>   <a
657          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DeletePackage">AWS
658          * API Reference</a></p>
659          *
660          * Queues the request into a thread executor and triggers associated callback when operation has finished.
661          */
662         virtual void DeletePackageAsync(const Model::DeletePackageRequest& request, const DeletePackageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
663 
664         /**
665          * <p>Provides scheduled Auto-Tune action details for the Elasticsearch domain,
666          * such as Auto-Tune action type, description, severity, and scheduled
667          * date.</p><p><h3>See Also:</h3>   <a
668          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeDomainAutoTunes">AWS
669          * API Reference</a></p>
670          */
671         virtual Model::DescribeDomainAutoTunesOutcome DescribeDomainAutoTunes(const Model::DescribeDomainAutoTunesRequest& request) const;
672 
673         /**
674          * <p>Provides scheduled Auto-Tune action details for the Elasticsearch domain,
675          * such as Auto-Tune action type, description, severity, and scheduled
676          * date.</p><p><h3>See Also:</h3>   <a
677          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeDomainAutoTunes">AWS
678          * API Reference</a></p>
679          *
680          * returns a future to the operation so that it can be executed in parallel to other requests.
681          */
682         virtual Model::DescribeDomainAutoTunesOutcomeCallable DescribeDomainAutoTunesCallable(const Model::DescribeDomainAutoTunesRequest& request) const;
683 
684         /**
685          * <p>Provides scheduled Auto-Tune action details for the Elasticsearch domain,
686          * such as Auto-Tune action type, description, severity, and scheduled
687          * date.</p><p><h3>See Also:</h3>   <a
688          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeDomainAutoTunes">AWS
689          * API Reference</a></p>
690          *
691          * Queues the request into a thread executor and triggers associated callback when operation has finished.
692          */
693         virtual void DescribeDomainAutoTunesAsync(const Model::DescribeDomainAutoTunesRequest& request, const DescribeDomainAutoTunesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
694 
695         /**
696          * <p>Returns domain configuration information about the specified Elasticsearch
697          * domain, including the domain ID, domain endpoint, and domain ARN.</p><p><h3>See
698          * Also:</h3>   <a
699          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeElasticsearchDomain">AWS
700          * API Reference</a></p>
701          */
702         virtual Model::DescribeElasticsearchDomainOutcome DescribeElasticsearchDomain(const Model::DescribeElasticsearchDomainRequest& request) const;
703 
704         /**
705          * <p>Returns domain configuration information about the specified Elasticsearch
706          * domain, including the domain ID, domain endpoint, and domain ARN.</p><p><h3>See
707          * Also:</h3>   <a
708          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeElasticsearchDomain">AWS
709          * API Reference</a></p>
710          *
711          * returns a future to the operation so that it can be executed in parallel to other requests.
712          */
713         virtual Model::DescribeElasticsearchDomainOutcomeCallable DescribeElasticsearchDomainCallable(const Model::DescribeElasticsearchDomainRequest& request) const;
714 
715         /**
716          * <p>Returns domain configuration information about the specified Elasticsearch
717          * domain, including the domain ID, domain endpoint, and domain ARN.</p><p><h3>See
718          * Also:</h3>   <a
719          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeElasticsearchDomain">AWS
720          * API Reference</a></p>
721          *
722          * Queues the request into a thread executor and triggers associated callback when operation has finished.
723          */
724         virtual void DescribeElasticsearchDomainAsync(const Model::DescribeElasticsearchDomainRequest& request, const DescribeElasticsearchDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
725 
726         /**
727          * <p>Provides cluster configuration information about the specified Elasticsearch
728          * domain, such as the state, creation date, update version, and update date for
729          * cluster options.</p><p><h3>See Also:</h3>   <a
730          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeElasticsearchDomainConfig">AWS
731          * API Reference</a></p>
732          */
733         virtual Model::DescribeElasticsearchDomainConfigOutcome DescribeElasticsearchDomainConfig(const Model::DescribeElasticsearchDomainConfigRequest& request) const;
734 
735         /**
736          * <p>Provides cluster configuration information about the specified Elasticsearch
737          * domain, such as the state, creation date, update version, and update date for
738          * cluster options.</p><p><h3>See Also:</h3>   <a
739          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeElasticsearchDomainConfig">AWS
740          * API Reference</a></p>
741          *
742          * returns a future to the operation so that it can be executed in parallel to other requests.
743          */
744         virtual Model::DescribeElasticsearchDomainConfigOutcomeCallable DescribeElasticsearchDomainConfigCallable(const Model::DescribeElasticsearchDomainConfigRequest& request) const;
745 
746         /**
747          * <p>Provides cluster configuration information about the specified Elasticsearch
748          * domain, such as the state, creation date, update version, and update date for
749          * cluster options.</p><p><h3>See Also:</h3>   <a
750          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeElasticsearchDomainConfig">AWS
751          * API Reference</a></p>
752          *
753          * Queues the request into a thread executor and triggers associated callback when operation has finished.
754          */
755         virtual void DescribeElasticsearchDomainConfigAsync(const Model::DescribeElasticsearchDomainConfigRequest& request, const DescribeElasticsearchDomainConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
756 
757         /**
758          * <p>Returns domain configuration information about the specified Elasticsearch
759          * domains, including the domain ID, domain endpoint, and domain ARN.</p><p><h3>See
760          * Also:</h3>   <a
761          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeElasticsearchDomains">AWS
762          * API Reference</a></p>
763          */
764         virtual Model::DescribeElasticsearchDomainsOutcome DescribeElasticsearchDomains(const Model::DescribeElasticsearchDomainsRequest& request) const;
765 
766         /**
767          * <p>Returns domain configuration information about the specified Elasticsearch
768          * domains, including the domain ID, domain endpoint, and domain ARN.</p><p><h3>See
769          * Also:</h3>   <a
770          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeElasticsearchDomains">AWS
771          * API Reference</a></p>
772          *
773          * returns a future to the operation so that it can be executed in parallel to other requests.
774          */
775         virtual Model::DescribeElasticsearchDomainsOutcomeCallable DescribeElasticsearchDomainsCallable(const Model::DescribeElasticsearchDomainsRequest& request) const;
776 
777         /**
778          * <p>Returns domain configuration information about the specified Elasticsearch
779          * domains, including the domain ID, domain endpoint, and domain ARN.</p><p><h3>See
780          * Also:</h3>   <a
781          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeElasticsearchDomains">AWS
782          * API Reference</a></p>
783          *
784          * Queues the request into a thread executor and triggers associated callback when operation has finished.
785          */
786         virtual void DescribeElasticsearchDomainsAsync(const Model::DescribeElasticsearchDomainsRequest& request, const DescribeElasticsearchDomainsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
787 
788         /**
789          * <p> Describe Elasticsearch Limits for a given InstanceType and
790          * ElasticsearchVersion. When modifying existing Domain, specify the <code>
791          * <a>DomainName</a> </code> to know what Limits are supported for modifying.
792          * </p><p><h3>See Also:</h3>   <a
793          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeElasticsearchInstanceTypeLimits">AWS
794          * API Reference</a></p>
795          */
796         virtual Model::DescribeElasticsearchInstanceTypeLimitsOutcome DescribeElasticsearchInstanceTypeLimits(const Model::DescribeElasticsearchInstanceTypeLimitsRequest& request) const;
797 
798         /**
799          * <p> Describe Elasticsearch Limits for a given InstanceType and
800          * ElasticsearchVersion. When modifying existing Domain, specify the <code>
801          * <a>DomainName</a> </code> to know what Limits are supported for modifying.
802          * </p><p><h3>See Also:</h3>   <a
803          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeElasticsearchInstanceTypeLimits">AWS
804          * API Reference</a></p>
805          *
806          * returns a future to the operation so that it can be executed in parallel to other requests.
807          */
808         virtual Model::DescribeElasticsearchInstanceTypeLimitsOutcomeCallable DescribeElasticsearchInstanceTypeLimitsCallable(const Model::DescribeElasticsearchInstanceTypeLimitsRequest& request) const;
809 
810         /**
811          * <p> Describe Elasticsearch Limits for a given InstanceType and
812          * ElasticsearchVersion. When modifying existing Domain, specify the <code>
813          * <a>DomainName</a> </code> to know what Limits are supported for modifying.
814          * </p><p><h3>See Also:</h3>   <a
815          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeElasticsearchInstanceTypeLimits">AWS
816          * API Reference</a></p>
817          *
818          * Queues the request into a thread executor and triggers associated callback when operation has finished.
819          */
820         virtual void DescribeElasticsearchInstanceTypeLimitsAsync(const Model::DescribeElasticsearchInstanceTypeLimitsRequest& request, const DescribeElasticsearchInstanceTypeLimitsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
821 
822         /**
823          * <p>Lists all the inbound cross-cluster search connections for a destination
824          * domain.</p><p><h3>See Also:</h3>   <a
825          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeInboundCrossClusterSearchConnections">AWS
826          * API Reference</a></p>
827          */
828         virtual Model::DescribeInboundCrossClusterSearchConnectionsOutcome DescribeInboundCrossClusterSearchConnections(const Model::DescribeInboundCrossClusterSearchConnectionsRequest& request) const;
829 
830         /**
831          * <p>Lists all the inbound cross-cluster search connections for a destination
832          * domain.</p><p><h3>See Also:</h3>   <a
833          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeInboundCrossClusterSearchConnections">AWS
834          * API Reference</a></p>
835          *
836          * returns a future to the operation so that it can be executed in parallel to other requests.
837          */
838         virtual Model::DescribeInboundCrossClusterSearchConnectionsOutcomeCallable DescribeInboundCrossClusterSearchConnectionsCallable(const Model::DescribeInboundCrossClusterSearchConnectionsRequest& request) const;
839 
840         /**
841          * <p>Lists all the inbound cross-cluster search connections for a destination
842          * domain.</p><p><h3>See Also:</h3>   <a
843          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeInboundCrossClusterSearchConnections">AWS
844          * API Reference</a></p>
845          *
846          * Queues the request into a thread executor and triggers associated callback when operation has finished.
847          */
848         virtual void DescribeInboundCrossClusterSearchConnectionsAsync(const Model::DescribeInboundCrossClusterSearchConnectionsRequest& request, const DescribeInboundCrossClusterSearchConnectionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
849 
850         /**
851          * <p>Lists all the outbound cross-cluster search connections for a source
852          * domain.</p><p><h3>See Also:</h3>   <a
853          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeOutboundCrossClusterSearchConnections">AWS
854          * API Reference</a></p>
855          */
856         virtual Model::DescribeOutboundCrossClusterSearchConnectionsOutcome DescribeOutboundCrossClusterSearchConnections(const Model::DescribeOutboundCrossClusterSearchConnectionsRequest& request) const;
857 
858         /**
859          * <p>Lists all the outbound cross-cluster search connections for a source
860          * domain.</p><p><h3>See Also:</h3>   <a
861          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeOutboundCrossClusterSearchConnections">AWS
862          * API Reference</a></p>
863          *
864          * returns a future to the operation so that it can be executed in parallel to other requests.
865          */
866         virtual Model::DescribeOutboundCrossClusterSearchConnectionsOutcomeCallable DescribeOutboundCrossClusterSearchConnectionsCallable(const Model::DescribeOutboundCrossClusterSearchConnectionsRequest& request) const;
867 
868         /**
869          * <p>Lists all the outbound cross-cluster search connections for a source
870          * domain.</p><p><h3>See Also:</h3>   <a
871          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeOutboundCrossClusterSearchConnections">AWS
872          * API Reference</a></p>
873          *
874          * Queues the request into a thread executor and triggers associated callback when operation has finished.
875          */
876         virtual void DescribeOutboundCrossClusterSearchConnectionsAsync(const Model::DescribeOutboundCrossClusterSearchConnectionsRequest& request, const DescribeOutboundCrossClusterSearchConnectionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
877 
878         /**
879          * <p>Describes all packages available to Amazon ES. Includes options for
880          * filtering, limiting the number of results, and pagination.</p><p><h3>See
881          * Also:</h3>   <a
882          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribePackages">AWS
883          * API Reference</a></p>
884          */
885         virtual Model::DescribePackagesOutcome DescribePackages(const Model::DescribePackagesRequest& request) const;
886 
887         /**
888          * <p>Describes all packages available to Amazon ES. Includes options for
889          * filtering, limiting the number of results, and pagination.</p><p><h3>See
890          * Also:</h3>   <a
891          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribePackages">AWS
892          * API Reference</a></p>
893          *
894          * returns a future to the operation so that it can be executed in parallel to other requests.
895          */
896         virtual Model::DescribePackagesOutcomeCallable DescribePackagesCallable(const Model::DescribePackagesRequest& request) const;
897 
898         /**
899          * <p>Describes all packages available to Amazon ES. Includes options for
900          * filtering, limiting the number of results, and pagination.</p><p><h3>See
901          * Also:</h3>   <a
902          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribePackages">AWS
903          * API Reference</a></p>
904          *
905          * Queues the request into a thread executor and triggers associated callback when operation has finished.
906          */
907         virtual void DescribePackagesAsync(const Model::DescribePackagesRequest& request, const DescribePackagesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
908 
909         /**
910          * <p>Lists available reserved Elasticsearch instance offerings.</p><p><h3>See
911          * Also:</h3>   <a
912          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeReservedElasticsearchInstanceOfferings">AWS
913          * API Reference</a></p>
914          */
915         virtual Model::DescribeReservedElasticsearchInstanceOfferingsOutcome DescribeReservedElasticsearchInstanceOfferings(const Model::DescribeReservedElasticsearchInstanceOfferingsRequest& request) const;
916 
917         /**
918          * <p>Lists available reserved Elasticsearch instance offerings.</p><p><h3>See
919          * Also:</h3>   <a
920          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeReservedElasticsearchInstanceOfferings">AWS
921          * API Reference</a></p>
922          *
923          * returns a future to the operation so that it can be executed in parallel to other requests.
924          */
925         virtual Model::DescribeReservedElasticsearchInstanceOfferingsOutcomeCallable DescribeReservedElasticsearchInstanceOfferingsCallable(const Model::DescribeReservedElasticsearchInstanceOfferingsRequest& request) const;
926 
927         /**
928          * <p>Lists available reserved Elasticsearch instance offerings.</p><p><h3>See
929          * Also:</h3>   <a
930          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeReservedElasticsearchInstanceOfferings">AWS
931          * API Reference</a></p>
932          *
933          * Queues the request into a thread executor and triggers associated callback when operation has finished.
934          */
935         virtual void DescribeReservedElasticsearchInstanceOfferingsAsync(const Model::DescribeReservedElasticsearchInstanceOfferingsRequest& request, const DescribeReservedElasticsearchInstanceOfferingsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
936 
937         /**
938          * <p>Returns information about reserved Elasticsearch instances for this
939          * account.</p><p><h3>See Also:</h3>   <a
940          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeReservedElasticsearchInstances">AWS
941          * API Reference</a></p>
942          */
943         virtual Model::DescribeReservedElasticsearchInstancesOutcome DescribeReservedElasticsearchInstances(const Model::DescribeReservedElasticsearchInstancesRequest& request) const;
944 
945         /**
946          * <p>Returns information about reserved Elasticsearch instances for this
947          * account.</p><p><h3>See Also:</h3>   <a
948          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeReservedElasticsearchInstances">AWS
949          * API Reference</a></p>
950          *
951          * returns a future to the operation so that it can be executed in parallel to other requests.
952          */
953         virtual Model::DescribeReservedElasticsearchInstancesOutcomeCallable DescribeReservedElasticsearchInstancesCallable(const Model::DescribeReservedElasticsearchInstancesRequest& request) const;
954 
955         /**
956          * <p>Returns information about reserved Elasticsearch instances for this
957          * account.</p><p><h3>See Also:</h3>   <a
958          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DescribeReservedElasticsearchInstances">AWS
959          * API Reference</a></p>
960          *
961          * Queues the request into a thread executor and triggers associated callback when operation has finished.
962          */
963         virtual void DescribeReservedElasticsearchInstancesAsync(const Model::DescribeReservedElasticsearchInstancesRequest& request, const DescribeReservedElasticsearchInstancesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
964 
965         /**
966          * <p>Dissociates a package from the Amazon ES domain.</p><p><h3>See Also:</h3>
967          * <a
968          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DissociatePackage">AWS
969          * API Reference</a></p>
970          */
971         virtual Model::DissociatePackageOutcome DissociatePackage(const Model::DissociatePackageRequest& request) const;
972 
973         /**
974          * <p>Dissociates a package from the Amazon ES domain.</p><p><h3>See Also:</h3>
975          * <a
976          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DissociatePackage">AWS
977          * API Reference</a></p>
978          *
979          * returns a future to the operation so that it can be executed in parallel to other requests.
980          */
981         virtual Model::DissociatePackageOutcomeCallable DissociatePackageCallable(const Model::DissociatePackageRequest& request) const;
982 
983         /**
984          * <p>Dissociates a package from the Amazon ES domain.</p><p><h3>See Also:</h3>
985          * <a
986          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/DissociatePackage">AWS
987          * API Reference</a></p>
988          *
989          * Queues the request into a thread executor and triggers associated callback when operation has finished.
990          */
991         virtual void DissociatePackageAsync(const Model::DissociatePackageRequest& request, const DissociatePackageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
992 
993         /**
994          * <p> Returns a list of upgrade compatible Elastisearch versions. You can
995          * optionally pass a <code> <a>DomainName</a> </code> to get all upgrade compatible
996          * Elasticsearch versions for that specific domain. </p><p><h3>See Also:</h3>   <a
997          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/GetCompatibleElasticsearchVersions">AWS
998          * API Reference</a></p>
999          */
1000         virtual Model::GetCompatibleElasticsearchVersionsOutcome GetCompatibleElasticsearchVersions(const Model::GetCompatibleElasticsearchVersionsRequest& request) const;
1001 
1002         /**
1003          * <p> Returns a list of upgrade compatible Elastisearch versions. You can
1004          * optionally pass a <code> <a>DomainName</a> </code> to get all upgrade compatible
1005          * Elasticsearch versions for that specific domain. </p><p><h3>See Also:</h3>   <a
1006          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/GetCompatibleElasticsearchVersions">AWS
1007          * API Reference</a></p>
1008          *
1009          * returns a future to the operation so that it can be executed in parallel to other requests.
1010          */
1011         virtual Model::GetCompatibleElasticsearchVersionsOutcomeCallable GetCompatibleElasticsearchVersionsCallable(const Model::GetCompatibleElasticsearchVersionsRequest& request) const;
1012 
1013         /**
1014          * <p> Returns a list of upgrade compatible Elastisearch versions. You can
1015          * optionally pass a <code> <a>DomainName</a> </code> to get all upgrade compatible
1016          * Elasticsearch versions for that specific domain. </p><p><h3>See Also:</h3>   <a
1017          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/GetCompatibleElasticsearchVersions">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 GetCompatibleElasticsearchVersionsAsync(const Model::GetCompatibleElasticsearchVersionsRequest& request, const GetCompatibleElasticsearchVersionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1023 
1024         /**
1025          * <p>Returns a list of versions of the package, along with their creation time and
1026          * commit message.</p><p><h3>See Also:</h3>   <a
1027          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/GetPackageVersionHistory">AWS
1028          * API Reference</a></p>
1029          */
1030         virtual Model::GetPackageVersionHistoryOutcome GetPackageVersionHistory(const Model::GetPackageVersionHistoryRequest& request) const;
1031 
1032         /**
1033          * <p>Returns a list of versions of the package, along with their creation time and
1034          * commit message.</p><p><h3>See Also:</h3>   <a
1035          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/GetPackageVersionHistory">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::GetPackageVersionHistoryOutcomeCallable GetPackageVersionHistoryCallable(const Model::GetPackageVersionHistoryRequest& request) const;
1041 
1042         /**
1043          * <p>Returns a list of versions of the package, along with their creation time and
1044          * commit message.</p><p><h3>See Also:</h3>   <a
1045          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/GetPackageVersionHistory">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 GetPackageVersionHistoryAsync(const Model::GetPackageVersionHistoryRequest& request, const GetPackageVersionHistoryResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1051 
1052         /**
1053          * <p>Retrieves the complete history of the last 10 upgrades that were performed on
1054          * the domain.</p><p><h3>See Also:</h3>   <a
1055          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/GetUpgradeHistory">AWS
1056          * API Reference</a></p>
1057          */
1058         virtual Model::GetUpgradeHistoryOutcome GetUpgradeHistory(const Model::GetUpgradeHistoryRequest& request) const;
1059 
1060         /**
1061          * <p>Retrieves the complete history of the last 10 upgrades that were performed on
1062          * the domain.</p><p><h3>See Also:</h3>   <a
1063          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/GetUpgradeHistory">AWS
1064          * API Reference</a></p>
1065          *
1066          * returns a future to the operation so that it can be executed in parallel to other requests.
1067          */
1068         virtual Model::GetUpgradeHistoryOutcomeCallable GetUpgradeHistoryCallable(const Model::GetUpgradeHistoryRequest& request) const;
1069 
1070         /**
1071          * <p>Retrieves the complete history of the last 10 upgrades that were performed on
1072          * the domain.</p><p><h3>See Also:</h3>   <a
1073          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/GetUpgradeHistory">AWS
1074          * API Reference</a></p>
1075          *
1076          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1077          */
1078         virtual void GetUpgradeHistoryAsync(const Model::GetUpgradeHistoryRequest& request, const GetUpgradeHistoryResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1079 
1080         /**
1081          * <p>Retrieves the latest status of the last upgrade or upgrade eligibility check
1082          * that was performed on the domain.</p><p><h3>See Also:</h3>   <a
1083          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/GetUpgradeStatus">AWS
1084          * API Reference</a></p>
1085          */
1086         virtual Model::GetUpgradeStatusOutcome GetUpgradeStatus(const Model::GetUpgradeStatusRequest& request) const;
1087 
1088         /**
1089          * <p>Retrieves the latest status of the last upgrade or upgrade eligibility check
1090          * that was performed on the domain.</p><p><h3>See Also:</h3>   <a
1091          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/GetUpgradeStatus">AWS
1092          * API Reference</a></p>
1093          *
1094          * returns a future to the operation so that it can be executed in parallel to other requests.
1095          */
1096         virtual Model::GetUpgradeStatusOutcomeCallable GetUpgradeStatusCallable(const Model::GetUpgradeStatusRequest& request) const;
1097 
1098         /**
1099          * <p>Retrieves the latest status of the last upgrade or upgrade eligibility check
1100          * that was performed on the domain.</p><p><h3>See Also:</h3>   <a
1101          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/GetUpgradeStatus">AWS
1102          * API Reference</a></p>
1103          *
1104          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1105          */
1106         virtual void GetUpgradeStatusAsync(const Model::GetUpgradeStatusRequest& request, const GetUpgradeStatusResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1107 
1108         /**
1109          * <p>Returns the name of all Elasticsearch domains owned by the current user's
1110          * account. </p><p><h3>See Also:</h3>   <a
1111          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListDomainNames">AWS
1112          * API Reference</a></p>
1113          */
1114         virtual Model::ListDomainNamesOutcome ListDomainNames(const Model::ListDomainNamesRequest& request) const;
1115 
1116         /**
1117          * <p>Returns the name of all Elasticsearch domains owned by the current user's
1118          * account. </p><p><h3>See Also:</h3>   <a
1119          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListDomainNames">AWS
1120          * API Reference</a></p>
1121          *
1122          * returns a future to the operation so that it can be executed in parallel to other requests.
1123          */
1124         virtual Model::ListDomainNamesOutcomeCallable ListDomainNamesCallable(const Model::ListDomainNamesRequest& request) const;
1125 
1126         /**
1127          * <p>Returns the name of all Elasticsearch domains owned by the current user's
1128          * account. </p><p><h3>See Also:</h3>   <a
1129          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListDomainNames">AWS
1130          * API Reference</a></p>
1131          *
1132          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1133          */
1134         virtual void ListDomainNamesAsync(const Model::ListDomainNamesRequest& request, const ListDomainNamesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1135 
1136         /**
1137          * <p>Lists all Amazon ES domains associated with the package.</p><p><h3>See
1138          * Also:</h3>   <a
1139          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListDomainsForPackage">AWS
1140          * API Reference</a></p>
1141          */
1142         virtual Model::ListDomainsForPackageOutcome ListDomainsForPackage(const Model::ListDomainsForPackageRequest& request) const;
1143 
1144         /**
1145          * <p>Lists all Amazon ES domains associated with the package.</p><p><h3>See
1146          * Also:</h3>   <a
1147          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListDomainsForPackage">AWS
1148          * API Reference</a></p>
1149          *
1150          * returns a future to the operation so that it can be executed in parallel to other requests.
1151          */
1152         virtual Model::ListDomainsForPackageOutcomeCallable ListDomainsForPackageCallable(const Model::ListDomainsForPackageRequest& request) const;
1153 
1154         /**
1155          * <p>Lists all Amazon ES domains associated with the package.</p><p><h3>See
1156          * Also:</h3>   <a
1157          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListDomainsForPackage">AWS
1158          * API Reference</a></p>
1159          *
1160          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1161          */
1162         virtual void ListDomainsForPackageAsync(const Model::ListDomainsForPackageRequest& request, const ListDomainsForPackageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1163 
1164         /**
1165          * <p>List all Elasticsearch instance types that are supported for given
1166          * ElasticsearchVersion</p><p><h3>See Also:</h3>   <a
1167          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListElasticsearchInstanceTypes">AWS
1168          * API Reference</a></p>
1169          */
1170         virtual Model::ListElasticsearchInstanceTypesOutcome ListElasticsearchInstanceTypes(const Model::ListElasticsearchInstanceTypesRequest& request) const;
1171 
1172         /**
1173          * <p>List all Elasticsearch instance types that are supported for given
1174          * ElasticsearchVersion</p><p><h3>See Also:</h3>   <a
1175          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListElasticsearchInstanceTypes">AWS
1176          * API Reference</a></p>
1177          *
1178          * returns a future to the operation so that it can be executed in parallel to other requests.
1179          */
1180         virtual Model::ListElasticsearchInstanceTypesOutcomeCallable ListElasticsearchInstanceTypesCallable(const Model::ListElasticsearchInstanceTypesRequest& request) const;
1181 
1182         /**
1183          * <p>List all Elasticsearch instance types that are supported for given
1184          * ElasticsearchVersion</p><p><h3>See Also:</h3>   <a
1185          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListElasticsearchInstanceTypes">AWS
1186          * API Reference</a></p>
1187          *
1188          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1189          */
1190         virtual void ListElasticsearchInstanceTypesAsync(const Model::ListElasticsearchInstanceTypesRequest& request, const ListElasticsearchInstanceTypesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1191 
1192         /**
1193          * <p>List all supported Elasticsearch versions</p><p><h3>See Also:</h3>   <a
1194          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListElasticsearchVersions">AWS
1195          * API Reference</a></p>
1196          */
1197         virtual Model::ListElasticsearchVersionsOutcome ListElasticsearchVersions(const Model::ListElasticsearchVersionsRequest& request) const;
1198 
1199         /**
1200          * <p>List all supported Elasticsearch versions</p><p><h3>See Also:</h3>   <a
1201          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListElasticsearchVersions">AWS
1202          * API Reference</a></p>
1203          *
1204          * returns a future to the operation so that it can be executed in parallel to other requests.
1205          */
1206         virtual Model::ListElasticsearchVersionsOutcomeCallable ListElasticsearchVersionsCallable(const Model::ListElasticsearchVersionsRequest& request) const;
1207 
1208         /**
1209          * <p>List all supported Elasticsearch versions</p><p><h3>See Also:</h3>   <a
1210          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListElasticsearchVersions">AWS
1211          * API Reference</a></p>
1212          *
1213          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1214          */
1215         virtual void ListElasticsearchVersionsAsync(const Model::ListElasticsearchVersionsRequest& request, const ListElasticsearchVersionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1216 
1217         /**
1218          * <p>Lists all packages associated with the Amazon ES domain.</p><p><h3>See
1219          * Also:</h3>   <a
1220          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListPackagesForDomain">AWS
1221          * API Reference</a></p>
1222          */
1223         virtual Model::ListPackagesForDomainOutcome ListPackagesForDomain(const Model::ListPackagesForDomainRequest& request) const;
1224 
1225         /**
1226          * <p>Lists all packages associated with the Amazon ES domain.</p><p><h3>See
1227          * Also:</h3>   <a
1228          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListPackagesForDomain">AWS
1229          * API Reference</a></p>
1230          *
1231          * returns a future to the operation so that it can be executed in parallel to other requests.
1232          */
1233         virtual Model::ListPackagesForDomainOutcomeCallable ListPackagesForDomainCallable(const Model::ListPackagesForDomainRequest& request) const;
1234 
1235         /**
1236          * <p>Lists all packages associated with the Amazon ES domain.</p><p><h3>See
1237          * Also:</h3>   <a
1238          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListPackagesForDomain">AWS
1239          * API Reference</a></p>
1240          *
1241          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1242          */
1243         virtual void ListPackagesForDomainAsync(const Model::ListPackagesForDomainRequest& request, const ListPackagesForDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1244 
1245         /**
1246          * <p>Returns all tags for the given Elasticsearch domain.</p><p><h3>See Also:</h3>
1247          * <a href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListTags">AWS API
1248          * Reference</a></p>
1249          */
1250         virtual Model::ListTagsOutcome ListTags(const Model::ListTagsRequest& request) const;
1251 
1252         /**
1253          * <p>Returns all tags for the given Elasticsearch domain.</p><p><h3>See Also:</h3>
1254          * <a href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListTags">AWS API
1255          * Reference</a></p>
1256          *
1257          * returns a future to the operation so that it can be executed in parallel to other requests.
1258          */
1259         virtual Model::ListTagsOutcomeCallable ListTagsCallable(const Model::ListTagsRequest& request) const;
1260 
1261         /**
1262          * <p>Returns all tags for the given Elasticsearch domain.</p><p><h3>See Also:</h3>
1263          * <a href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/ListTags">AWS API
1264          * Reference</a></p>
1265          *
1266          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1267          */
1268         virtual void ListTagsAsync(const Model::ListTagsRequest& request, const ListTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1269 
1270         /**
1271          * <p>Allows you to purchase reserved Elasticsearch instances.</p><p><h3>See
1272          * Also:</h3>   <a
1273          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/PurchaseReservedElasticsearchInstanceOffering">AWS
1274          * API Reference</a></p>
1275          */
1276         virtual Model::PurchaseReservedElasticsearchInstanceOfferingOutcome PurchaseReservedElasticsearchInstanceOffering(const Model::PurchaseReservedElasticsearchInstanceOfferingRequest& request) const;
1277 
1278         /**
1279          * <p>Allows you to purchase reserved Elasticsearch instances.</p><p><h3>See
1280          * Also:</h3>   <a
1281          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/PurchaseReservedElasticsearchInstanceOffering">AWS
1282          * API Reference</a></p>
1283          *
1284          * returns a future to the operation so that it can be executed in parallel to other requests.
1285          */
1286         virtual Model::PurchaseReservedElasticsearchInstanceOfferingOutcomeCallable PurchaseReservedElasticsearchInstanceOfferingCallable(const Model::PurchaseReservedElasticsearchInstanceOfferingRequest& request) const;
1287 
1288         /**
1289          * <p>Allows you to purchase reserved Elasticsearch instances.</p><p><h3>See
1290          * Also:</h3>   <a
1291          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/PurchaseReservedElasticsearchInstanceOffering">AWS
1292          * API Reference</a></p>
1293          *
1294          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1295          */
1296         virtual void PurchaseReservedElasticsearchInstanceOfferingAsync(const Model::PurchaseReservedElasticsearchInstanceOfferingRequest& request, const PurchaseReservedElasticsearchInstanceOfferingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1297 
1298         /**
1299          * <p>Allows the destination domain owner to reject an inbound cross-cluster search
1300          * connection request.</p><p><h3>See Also:</h3>   <a
1301          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/RejectInboundCrossClusterSearchConnection">AWS
1302          * API Reference</a></p>
1303          */
1304         virtual Model::RejectInboundCrossClusterSearchConnectionOutcome RejectInboundCrossClusterSearchConnection(const Model::RejectInboundCrossClusterSearchConnectionRequest& request) const;
1305 
1306         /**
1307          * <p>Allows the destination domain owner to reject an inbound cross-cluster search
1308          * connection request.</p><p><h3>See Also:</h3>   <a
1309          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/RejectInboundCrossClusterSearchConnection">AWS
1310          * API Reference</a></p>
1311          *
1312          * returns a future to the operation so that it can be executed in parallel to other requests.
1313          */
1314         virtual Model::RejectInboundCrossClusterSearchConnectionOutcomeCallable RejectInboundCrossClusterSearchConnectionCallable(const Model::RejectInboundCrossClusterSearchConnectionRequest& request) const;
1315 
1316         /**
1317          * <p>Allows the destination domain owner to reject an inbound cross-cluster search
1318          * connection request.</p><p><h3>See Also:</h3>   <a
1319          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/RejectInboundCrossClusterSearchConnection">AWS
1320          * API Reference</a></p>
1321          *
1322          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1323          */
1324         virtual void RejectInboundCrossClusterSearchConnectionAsync(const Model::RejectInboundCrossClusterSearchConnectionRequest& request, const RejectInboundCrossClusterSearchConnectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1325 
1326         /**
1327          * <p>Removes the specified set of tags from the specified Elasticsearch
1328          * domain.</p><p><h3>See Also:</h3>   <a
1329          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/RemoveTags">AWS API
1330          * Reference</a></p>
1331          */
1332         virtual Model::RemoveTagsOutcome RemoveTags(const Model::RemoveTagsRequest& request) const;
1333 
1334         /**
1335          * <p>Removes the specified set of tags from the specified Elasticsearch
1336          * domain.</p><p><h3>See Also:</h3>   <a
1337          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/RemoveTags">AWS API
1338          * Reference</a></p>
1339          *
1340          * returns a future to the operation so that it can be executed in parallel to other requests.
1341          */
1342         virtual Model::RemoveTagsOutcomeCallable RemoveTagsCallable(const Model::RemoveTagsRequest& request) const;
1343 
1344         /**
1345          * <p>Removes the specified set of tags from the specified Elasticsearch
1346          * domain.</p><p><h3>See Also:</h3>   <a
1347          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/RemoveTags">AWS API
1348          * Reference</a></p>
1349          *
1350          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1351          */
1352         virtual void RemoveTagsAsync(const Model::RemoveTagsRequest& request, const RemoveTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1353 
1354         /**
1355          * <p>Schedules a service software update for an Amazon ES domain.</p><p><h3>See
1356          * Also:</h3>   <a
1357          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/StartElasticsearchServiceSoftwareUpdate">AWS
1358          * API Reference</a></p>
1359          */
1360         virtual Model::StartElasticsearchServiceSoftwareUpdateOutcome StartElasticsearchServiceSoftwareUpdate(const Model::StartElasticsearchServiceSoftwareUpdateRequest& request) const;
1361 
1362         /**
1363          * <p>Schedules a service software update for an Amazon ES domain.</p><p><h3>See
1364          * Also:</h3>   <a
1365          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/StartElasticsearchServiceSoftwareUpdate">AWS
1366          * API Reference</a></p>
1367          *
1368          * returns a future to the operation so that it can be executed in parallel to other requests.
1369          */
1370         virtual Model::StartElasticsearchServiceSoftwareUpdateOutcomeCallable StartElasticsearchServiceSoftwareUpdateCallable(const Model::StartElasticsearchServiceSoftwareUpdateRequest& request) const;
1371 
1372         /**
1373          * <p>Schedules a service software update for an Amazon ES domain.</p><p><h3>See
1374          * Also:</h3>   <a
1375          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/StartElasticsearchServiceSoftwareUpdate">AWS
1376          * API Reference</a></p>
1377          *
1378          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1379          */
1380         virtual void StartElasticsearchServiceSoftwareUpdateAsync(const Model::StartElasticsearchServiceSoftwareUpdateRequest& request, const StartElasticsearchServiceSoftwareUpdateResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1381 
1382         /**
1383          * <p>Modifies the cluster configuration of the specified Elasticsearch domain,
1384          * setting as setting the instance type and the number of instances. </p><p><h3>See
1385          * Also:</h3>   <a
1386          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/UpdateElasticsearchDomainConfig">AWS
1387          * API Reference</a></p>
1388          */
1389         virtual Model::UpdateElasticsearchDomainConfigOutcome UpdateElasticsearchDomainConfig(const Model::UpdateElasticsearchDomainConfigRequest& request) const;
1390 
1391         /**
1392          * <p>Modifies the cluster configuration of the specified Elasticsearch domain,
1393          * setting as setting the instance type and the number of instances. </p><p><h3>See
1394          * Also:</h3>   <a
1395          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/UpdateElasticsearchDomainConfig">AWS
1396          * API Reference</a></p>
1397          *
1398          * returns a future to the operation so that it can be executed in parallel to other requests.
1399          */
1400         virtual Model::UpdateElasticsearchDomainConfigOutcomeCallable UpdateElasticsearchDomainConfigCallable(const Model::UpdateElasticsearchDomainConfigRequest& request) const;
1401 
1402         /**
1403          * <p>Modifies the cluster configuration of the specified Elasticsearch domain,
1404          * setting as setting the instance type and the number of instances. </p><p><h3>See
1405          * Also:</h3>   <a
1406          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/UpdateElasticsearchDomainConfig">AWS
1407          * API Reference</a></p>
1408          *
1409          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1410          */
1411         virtual void UpdateElasticsearchDomainConfigAsync(const Model::UpdateElasticsearchDomainConfigRequest& request, const UpdateElasticsearchDomainConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1412 
1413         /**
1414          * <p>Updates a package for use with Amazon ES domains.</p><p><h3>See Also:</h3>
1415          * <a href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/UpdatePackage">AWS
1416          * API Reference</a></p>
1417          */
1418         virtual Model::UpdatePackageOutcome UpdatePackage(const Model::UpdatePackageRequest& request) const;
1419 
1420         /**
1421          * <p>Updates a package for use with Amazon ES domains.</p><p><h3>See Also:</h3>
1422          * <a href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/UpdatePackage">AWS
1423          * API Reference</a></p>
1424          *
1425          * returns a future to the operation so that it can be executed in parallel to other requests.
1426          */
1427         virtual Model::UpdatePackageOutcomeCallable UpdatePackageCallable(const Model::UpdatePackageRequest& request) const;
1428 
1429         /**
1430          * <p>Updates a package for use with Amazon ES domains.</p><p><h3>See Also:</h3>
1431          * <a href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/UpdatePackage">AWS
1432          * API Reference</a></p>
1433          *
1434          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1435          */
1436         virtual void UpdatePackageAsync(const Model::UpdatePackageRequest& request, const UpdatePackageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1437 
1438         /**
1439          * <p>Allows you to either upgrade your domain or perform an Upgrade eligibility
1440          * check to a compatible Elasticsearch version.</p><p><h3>See Also:</h3>   <a
1441          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/UpgradeElasticsearchDomain">AWS
1442          * API Reference</a></p>
1443          */
1444         virtual Model::UpgradeElasticsearchDomainOutcome UpgradeElasticsearchDomain(const Model::UpgradeElasticsearchDomainRequest& request) const;
1445 
1446         /**
1447          * <p>Allows you to either upgrade your domain or perform an Upgrade eligibility
1448          * check to a compatible Elasticsearch version.</p><p><h3>See Also:</h3>   <a
1449          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/UpgradeElasticsearchDomain">AWS
1450          * API Reference</a></p>
1451          *
1452          * returns a future to the operation so that it can be executed in parallel to other requests.
1453          */
1454         virtual Model::UpgradeElasticsearchDomainOutcomeCallable UpgradeElasticsearchDomainCallable(const Model::UpgradeElasticsearchDomainRequest& request) const;
1455 
1456         /**
1457          * <p>Allows you to either upgrade your domain or perform an Upgrade eligibility
1458          * check to a compatible Elasticsearch version.</p><p><h3>See Also:</h3>   <a
1459          * href="http://docs.aws.amazon.com/goto/WebAPI/es-2015-01-01/UpgradeElasticsearchDomain">AWS
1460          * API Reference</a></p>
1461          *
1462          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1463          */
1464         virtual void UpgradeElasticsearchDomainAsync(const Model::UpgradeElasticsearchDomainRequest& request, const UpgradeElasticsearchDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1465 
1466 
1467       void OverrideEndpoint(const Aws::String& endpoint);
1468     private:
1469       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
1470         void AcceptInboundCrossClusterSearchConnectionAsyncHelper(const Model::AcceptInboundCrossClusterSearchConnectionRequest& request, const AcceptInboundCrossClusterSearchConnectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1471         void AddTagsAsyncHelper(const Model::AddTagsRequest& request, const AddTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1472         void AssociatePackageAsyncHelper(const Model::AssociatePackageRequest& request, const AssociatePackageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1473         void CancelElasticsearchServiceSoftwareUpdateAsyncHelper(const Model::CancelElasticsearchServiceSoftwareUpdateRequest& request, const CancelElasticsearchServiceSoftwareUpdateResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1474         void CreateElasticsearchDomainAsyncHelper(const Model::CreateElasticsearchDomainRequest& request, const CreateElasticsearchDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1475         void CreateOutboundCrossClusterSearchConnectionAsyncHelper(const Model::CreateOutboundCrossClusterSearchConnectionRequest& request, const CreateOutboundCrossClusterSearchConnectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1476         void CreatePackageAsyncHelper(const Model::CreatePackageRequest& request, const CreatePackageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1477         void DeleteElasticsearchDomainAsyncHelper(const Model::DeleteElasticsearchDomainRequest& request, const DeleteElasticsearchDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1478         void DeleteElasticsearchServiceRoleAsyncHelper(const DeleteElasticsearchServiceRoleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1479         void DeleteInboundCrossClusterSearchConnectionAsyncHelper(const Model::DeleteInboundCrossClusterSearchConnectionRequest& request, const DeleteInboundCrossClusterSearchConnectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1480         void DeleteOutboundCrossClusterSearchConnectionAsyncHelper(const Model::DeleteOutboundCrossClusterSearchConnectionRequest& request, const DeleteOutboundCrossClusterSearchConnectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1481         void DeletePackageAsyncHelper(const Model::DeletePackageRequest& request, const DeletePackageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1482         void DescribeDomainAutoTunesAsyncHelper(const Model::DescribeDomainAutoTunesRequest& request, const DescribeDomainAutoTunesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1483         void DescribeElasticsearchDomainAsyncHelper(const Model::DescribeElasticsearchDomainRequest& request, const DescribeElasticsearchDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1484         void DescribeElasticsearchDomainConfigAsyncHelper(const Model::DescribeElasticsearchDomainConfigRequest& request, const DescribeElasticsearchDomainConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1485         void DescribeElasticsearchDomainsAsyncHelper(const Model::DescribeElasticsearchDomainsRequest& request, const DescribeElasticsearchDomainsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1486         void DescribeElasticsearchInstanceTypeLimitsAsyncHelper(const Model::DescribeElasticsearchInstanceTypeLimitsRequest& request, const DescribeElasticsearchInstanceTypeLimitsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1487         void DescribeInboundCrossClusterSearchConnectionsAsyncHelper(const Model::DescribeInboundCrossClusterSearchConnectionsRequest& request, const DescribeInboundCrossClusterSearchConnectionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1488         void DescribeOutboundCrossClusterSearchConnectionsAsyncHelper(const Model::DescribeOutboundCrossClusterSearchConnectionsRequest& request, const DescribeOutboundCrossClusterSearchConnectionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1489         void DescribePackagesAsyncHelper(const Model::DescribePackagesRequest& request, const DescribePackagesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1490         void DescribeReservedElasticsearchInstanceOfferingsAsyncHelper(const Model::DescribeReservedElasticsearchInstanceOfferingsRequest& request, const DescribeReservedElasticsearchInstanceOfferingsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1491         void DescribeReservedElasticsearchInstancesAsyncHelper(const Model::DescribeReservedElasticsearchInstancesRequest& request, const DescribeReservedElasticsearchInstancesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1492         void DissociatePackageAsyncHelper(const Model::DissociatePackageRequest& request, const DissociatePackageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1493         void GetCompatibleElasticsearchVersionsAsyncHelper(const Model::GetCompatibleElasticsearchVersionsRequest& request, const GetCompatibleElasticsearchVersionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1494         void GetPackageVersionHistoryAsyncHelper(const Model::GetPackageVersionHistoryRequest& request, const GetPackageVersionHistoryResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1495         void GetUpgradeHistoryAsyncHelper(const Model::GetUpgradeHistoryRequest& request, const GetUpgradeHistoryResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1496         void GetUpgradeStatusAsyncHelper(const Model::GetUpgradeStatusRequest& request, const GetUpgradeStatusResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1497         void ListDomainNamesAsyncHelper(const Model::ListDomainNamesRequest& request, const ListDomainNamesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1498         void ListDomainsForPackageAsyncHelper(const Model::ListDomainsForPackageRequest& request, const ListDomainsForPackageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1499         void ListElasticsearchInstanceTypesAsyncHelper(const Model::ListElasticsearchInstanceTypesRequest& request, const ListElasticsearchInstanceTypesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1500         void ListElasticsearchVersionsAsyncHelper(const Model::ListElasticsearchVersionsRequest& request, const ListElasticsearchVersionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1501         void ListPackagesForDomainAsyncHelper(const Model::ListPackagesForDomainRequest& request, const ListPackagesForDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1502         void ListTagsAsyncHelper(const Model::ListTagsRequest& request, const ListTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1503         void PurchaseReservedElasticsearchInstanceOfferingAsyncHelper(const Model::PurchaseReservedElasticsearchInstanceOfferingRequest& request, const PurchaseReservedElasticsearchInstanceOfferingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1504         void RejectInboundCrossClusterSearchConnectionAsyncHelper(const Model::RejectInboundCrossClusterSearchConnectionRequest& request, const RejectInboundCrossClusterSearchConnectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1505         void RemoveTagsAsyncHelper(const Model::RemoveTagsRequest& request, const RemoveTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1506         void StartElasticsearchServiceSoftwareUpdateAsyncHelper(const Model::StartElasticsearchServiceSoftwareUpdateRequest& request, const StartElasticsearchServiceSoftwareUpdateResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1507         void UpdateElasticsearchDomainConfigAsyncHelper(const Model::UpdateElasticsearchDomainConfigRequest& request, const UpdateElasticsearchDomainConfigResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1508         void UpdatePackageAsyncHelper(const Model::UpdatePackageRequest& request, const UpdatePackageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1509         void UpgradeElasticsearchDomainAsyncHelper(const Model::UpgradeElasticsearchDomainRequest& request, const UpgradeElasticsearchDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1510 
1511       Aws::String m_uri;
1512       Aws::String m_configScheme;
1513       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
1514   };
1515 
1516 } // namespace ElasticsearchService
1517 } // namespace Aws
1518