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/workspaces/WorkSpaces_EXPORTS.h>
8 #include <aws/workspaces/WorkSpacesErrors.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/workspaces/model/AssociateConnectionAliasResult.h>
15 #include <aws/workspaces/model/AssociateIpGroupsResult.h>
16 #include <aws/workspaces/model/AuthorizeIpRulesResult.h>
17 #include <aws/workspaces/model/CopyWorkspaceImageResult.h>
18 #include <aws/workspaces/model/CreateConnectionAliasResult.h>
19 #include <aws/workspaces/model/CreateIpGroupResult.h>
20 #include <aws/workspaces/model/CreateTagsResult.h>
21 #include <aws/workspaces/model/CreateUpdatedWorkspaceImageResult.h>
22 #include <aws/workspaces/model/CreateWorkspaceBundleResult.h>
23 #include <aws/workspaces/model/CreateWorkspacesResult.h>
24 #include <aws/workspaces/model/DeleteConnectionAliasResult.h>
25 #include <aws/workspaces/model/DeleteIpGroupResult.h>
26 #include <aws/workspaces/model/DeleteTagsResult.h>
27 #include <aws/workspaces/model/DeleteWorkspaceBundleResult.h>
28 #include <aws/workspaces/model/DeleteWorkspaceImageResult.h>
29 #include <aws/workspaces/model/DeregisterWorkspaceDirectoryResult.h>
30 #include <aws/workspaces/model/DescribeAccountResult.h>
31 #include <aws/workspaces/model/DescribeAccountModificationsResult.h>
32 #include <aws/workspaces/model/DescribeClientPropertiesResult.h>
33 #include <aws/workspaces/model/DescribeConnectionAliasPermissionsResult.h>
34 #include <aws/workspaces/model/DescribeConnectionAliasesResult.h>
35 #include <aws/workspaces/model/DescribeIpGroupsResult.h>
36 #include <aws/workspaces/model/DescribeTagsResult.h>
37 #include <aws/workspaces/model/DescribeWorkspaceBundlesResult.h>
38 #include <aws/workspaces/model/DescribeWorkspaceDirectoriesResult.h>
39 #include <aws/workspaces/model/DescribeWorkspaceImagePermissionsResult.h>
40 #include <aws/workspaces/model/DescribeWorkspaceImagesResult.h>
41 #include <aws/workspaces/model/DescribeWorkspaceSnapshotsResult.h>
42 #include <aws/workspaces/model/DescribeWorkspacesResult.h>
43 #include <aws/workspaces/model/DescribeWorkspacesConnectionStatusResult.h>
44 #include <aws/workspaces/model/DisassociateConnectionAliasResult.h>
45 #include <aws/workspaces/model/DisassociateIpGroupsResult.h>
46 #include <aws/workspaces/model/ImportWorkspaceImageResult.h>
47 #include <aws/workspaces/model/ListAvailableManagementCidrRangesResult.h>
48 #include <aws/workspaces/model/MigrateWorkspaceResult.h>
49 #include <aws/workspaces/model/ModifyAccountResult.h>
50 #include <aws/workspaces/model/ModifyClientPropertiesResult.h>
51 #include <aws/workspaces/model/ModifySelfservicePermissionsResult.h>
52 #include <aws/workspaces/model/ModifyWorkspaceAccessPropertiesResult.h>
53 #include <aws/workspaces/model/ModifyWorkspaceCreationPropertiesResult.h>
54 #include <aws/workspaces/model/ModifyWorkspacePropertiesResult.h>
55 #include <aws/workspaces/model/ModifyWorkspaceStateResult.h>
56 #include <aws/workspaces/model/RebootWorkspacesResult.h>
57 #include <aws/workspaces/model/RebuildWorkspacesResult.h>
58 #include <aws/workspaces/model/RegisterWorkspaceDirectoryResult.h>
59 #include <aws/workspaces/model/RestoreWorkspaceResult.h>
60 #include <aws/workspaces/model/RevokeIpRulesResult.h>
61 #include <aws/workspaces/model/StartWorkspacesResult.h>
62 #include <aws/workspaces/model/StopWorkspacesResult.h>
63 #include <aws/workspaces/model/TerminateWorkspacesResult.h>
64 #include <aws/workspaces/model/UpdateConnectionAliasPermissionResult.h>
65 #include <aws/workspaces/model/UpdateRulesOfIpGroupResult.h>
66 #include <aws/workspaces/model/UpdateWorkspaceBundleResult.h>
67 #include <aws/workspaces/model/UpdateWorkspaceImagePermissionResult.h>
68 #include <aws/core/client/AsyncCallerContext.h>
69 #include <aws/core/http/HttpTypes.h>
70 #include <future>
71 #include <functional>
72 
73 namespace Aws
74 {
75 
76 namespace Http
77 {
78   class HttpClient;
79   class HttpClientFactory;
80 } // namespace Http
81 
82 namespace Utils
83 {
84   template< typename R, typename E> class Outcome;
85 namespace Threading
86 {
87   class Executor;
88 } // namespace Threading
89 } // namespace Utils
90 
91 namespace Auth
92 {
93   class AWSCredentials;
94   class AWSCredentialsProvider;
95 } // namespace Auth
96 
97 namespace Client
98 {
99   class RetryStrategy;
100 } // namespace Client
101 
102 namespace WorkSpaces
103 {
104 
105 namespace Model
106 {
107         class AssociateConnectionAliasRequest;
108         class AssociateIpGroupsRequest;
109         class AuthorizeIpRulesRequest;
110         class CopyWorkspaceImageRequest;
111         class CreateConnectionAliasRequest;
112         class CreateIpGroupRequest;
113         class CreateTagsRequest;
114         class CreateUpdatedWorkspaceImageRequest;
115         class CreateWorkspaceBundleRequest;
116         class CreateWorkspacesRequest;
117         class DeleteConnectionAliasRequest;
118         class DeleteIpGroupRequest;
119         class DeleteTagsRequest;
120         class DeleteWorkspaceBundleRequest;
121         class DeleteWorkspaceImageRequest;
122         class DeregisterWorkspaceDirectoryRequest;
123         class DescribeAccountRequest;
124         class DescribeAccountModificationsRequest;
125         class DescribeClientPropertiesRequest;
126         class DescribeConnectionAliasPermissionsRequest;
127         class DescribeConnectionAliasesRequest;
128         class DescribeIpGroupsRequest;
129         class DescribeTagsRequest;
130         class DescribeWorkspaceBundlesRequest;
131         class DescribeWorkspaceDirectoriesRequest;
132         class DescribeWorkspaceImagePermissionsRequest;
133         class DescribeWorkspaceImagesRequest;
134         class DescribeWorkspaceSnapshotsRequest;
135         class DescribeWorkspacesRequest;
136         class DescribeWorkspacesConnectionStatusRequest;
137         class DisassociateConnectionAliasRequest;
138         class DisassociateIpGroupsRequest;
139         class ImportWorkspaceImageRequest;
140         class ListAvailableManagementCidrRangesRequest;
141         class MigrateWorkspaceRequest;
142         class ModifyAccountRequest;
143         class ModifyClientPropertiesRequest;
144         class ModifySelfservicePermissionsRequest;
145         class ModifyWorkspaceAccessPropertiesRequest;
146         class ModifyWorkspaceCreationPropertiesRequest;
147         class ModifyWorkspacePropertiesRequest;
148         class ModifyWorkspaceStateRequest;
149         class RebootWorkspacesRequest;
150         class RebuildWorkspacesRequest;
151         class RegisterWorkspaceDirectoryRequest;
152         class RestoreWorkspaceRequest;
153         class RevokeIpRulesRequest;
154         class StartWorkspacesRequest;
155         class StopWorkspacesRequest;
156         class TerminateWorkspacesRequest;
157         class UpdateConnectionAliasPermissionRequest;
158         class UpdateRulesOfIpGroupRequest;
159         class UpdateWorkspaceBundleRequest;
160         class UpdateWorkspaceImagePermissionRequest;
161 
162         typedef Aws::Utils::Outcome<AssociateConnectionAliasResult, WorkSpacesError> AssociateConnectionAliasOutcome;
163         typedef Aws::Utils::Outcome<AssociateIpGroupsResult, WorkSpacesError> AssociateIpGroupsOutcome;
164         typedef Aws::Utils::Outcome<AuthorizeIpRulesResult, WorkSpacesError> AuthorizeIpRulesOutcome;
165         typedef Aws::Utils::Outcome<CopyWorkspaceImageResult, WorkSpacesError> CopyWorkspaceImageOutcome;
166         typedef Aws::Utils::Outcome<CreateConnectionAliasResult, WorkSpacesError> CreateConnectionAliasOutcome;
167         typedef Aws::Utils::Outcome<CreateIpGroupResult, WorkSpacesError> CreateIpGroupOutcome;
168         typedef Aws::Utils::Outcome<CreateTagsResult, WorkSpacesError> CreateTagsOutcome;
169         typedef Aws::Utils::Outcome<CreateUpdatedWorkspaceImageResult, WorkSpacesError> CreateUpdatedWorkspaceImageOutcome;
170         typedef Aws::Utils::Outcome<CreateWorkspaceBundleResult, WorkSpacesError> CreateWorkspaceBundleOutcome;
171         typedef Aws::Utils::Outcome<CreateWorkspacesResult, WorkSpacesError> CreateWorkspacesOutcome;
172         typedef Aws::Utils::Outcome<DeleteConnectionAliasResult, WorkSpacesError> DeleteConnectionAliasOutcome;
173         typedef Aws::Utils::Outcome<DeleteIpGroupResult, WorkSpacesError> DeleteIpGroupOutcome;
174         typedef Aws::Utils::Outcome<DeleteTagsResult, WorkSpacesError> DeleteTagsOutcome;
175         typedef Aws::Utils::Outcome<DeleteWorkspaceBundleResult, WorkSpacesError> DeleteWorkspaceBundleOutcome;
176         typedef Aws::Utils::Outcome<DeleteWorkspaceImageResult, WorkSpacesError> DeleteWorkspaceImageOutcome;
177         typedef Aws::Utils::Outcome<DeregisterWorkspaceDirectoryResult, WorkSpacesError> DeregisterWorkspaceDirectoryOutcome;
178         typedef Aws::Utils::Outcome<DescribeAccountResult, WorkSpacesError> DescribeAccountOutcome;
179         typedef Aws::Utils::Outcome<DescribeAccountModificationsResult, WorkSpacesError> DescribeAccountModificationsOutcome;
180         typedef Aws::Utils::Outcome<DescribeClientPropertiesResult, WorkSpacesError> DescribeClientPropertiesOutcome;
181         typedef Aws::Utils::Outcome<DescribeConnectionAliasPermissionsResult, WorkSpacesError> DescribeConnectionAliasPermissionsOutcome;
182         typedef Aws::Utils::Outcome<DescribeConnectionAliasesResult, WorkSpacesError> DescribeConnectionAliasesOutcome;
183         typedef Aws::Utils::Outcome<DescribeIpGroupsResult, WorkSpacesError> DescribeIpGroupsOutcome;
184         typedef Aws::Utils::Outcome<DescribeTagsResult, WorkSpacesError> DescribeTagsOutcome;
185         typedef Aws::Utils::Outcome<DescribeWorkspaceBundlesResult, WorkSpacesError> DescribeWorkspaceBundlesOutcome;
186         typedef Aws::Utils::Outcome<DescribeWorkspaceDirectoriesResult, WorkSpacesError> DescribeWorkspaceDirectoriesOutcome;
187         typedef Aws::Utils::Outcome<DescribeWorkspaceImagePermissionsResult, WorkSpacesError> DescribeWorkspaceImagePermissionsOutcome;
188         typedef Aws::Utils::Outcome<DescribeWorkspaceImagesResult, WorkSpacesError> DescribeWorkspaceImagesOutcome;
189         typedef Aws::Utils::Outcome<DescribeWorkspaceSnapshotsResult, WorkSpacesError> DescribeWorkspaceSnapshotsOutcome;
190         typedef Aws::Utils::Outcome<DescribeWorkspacesResult, WorkSpacesError> DescribeWorkspacesOutcome;
191         typedef Aws::Utils::Outcome<DescribeWorkspacesConnectionStatusResult, WorkSpacesError> DescribeWorkspacesConnectionStatusOutcome;
192         typedef Aws::Utils::Outcome<DisassociateConnectionAliasResult, WorkSpacesError> DisassociateConnectionAliasOutcome;
193         typedef Aws::Utils::Outcome<DisassociateIpGroupsResult, WorkSpacesError> DisassociateIpGroupsOutcome;
194         typedef Aws::Utils::Outcome<ImportWorkspaceImageResult, WorkSpacesError> ImportWorkspaceImageOutcome;
195         typedef Aws::Utils::Outcome<ListAvailableManagementCidrRangesResult, WorkSpacesError> ListAvailableManagementCidrRangesOutcome;
196         typedef Aws::Utils::Outcome<MigrateWorkspaceResult, WorkSpacesError> MigrateWorkspaceOutcome;
197         typedef Aws::Utils::Outcome<ModifyAccountResult, WorkSpacesError> ModifyAccountOutcome;
198         typedef Aws::Utils::Outcome<ModifyClientPropertiesResult, WorkSpacesError> ModifyClientPropertiesOutcome;
199         typedef Aws::Utils::Outcome<ModifySelfservicePermissionsResult, WorkSpacesError> ModifySelfservicePermissionsOutcome;
200         typedef Aws::Utils::Outcome<ModifyWorkspaceAccessPropertiesResult, WorkSpacesError> ModifyWorkspaceAccessPropertiesOutcome;
201         typedef Aws::Utils::Outcome<ModifyWorkspaceCreationPropertiesResult, WorkSpacesError> ModifyWorkspaceCreationPropertiesOutcome;
202         typedef Aws::Utils::Outcome<ModifyWorkspacePropertiesResult, WorkSpacesError> ModifyWorkspacePropertiesOutcome;
203         typedef Aws::Utils::Outcome<ModifyWorkspaceStateResult, WorkSpacesError> ModifyWorkspaceStateOutcome;
204         typedef Aws::Utils::Outcome<RebootWorkspacesResult, WorkSpacesError> RebootWorkspacesOutcome;
205         typedef Aws::Utils::Outcome<RebuildWorkspacesResult, WorkSpacesError> RebuildWorkspacesOutcome;
206         typedef Aws::Utils::Outcome<RegisterWorkspaceDirectoryResult, WorkSpacesError> RegisterWorkspaceDirectoryOutcome;
207         typedef Aws::Utils::Outcome<RestoreWorkspaceResult, WorkSpacesError> RestoreWorkspaceOutcome;
208         typedef Aws::Utils::Outcome<RevokeIpRulesResult, WorkSpacesError> RevokeIpRulesOutcome;
209         typedef Aws::Utils::Outcome<StartWorkspacesResult, WorkSpacesError> StartWorkspacesOutcome;
210         typedef Aws::Utils::Outcome<StopWorkspacesResult, WorkSpacesError> StopWorkspacesOutcome;
211         typedef Aws::Utils::Outcome<TerminateWorkspacesResult, WorkSpacesError> TerminateWorkspacesOutcome;
212         typedef Aws::Utils::Outcome<UpdateConnectionAliasPermissionResult, WorkSpacesError> UpdateConnectionAliasPermissionOutcome;
213         typedef Aws::Utils::Outcome<UpdateRulesOfIpGroupResult, WorkSpacesError> UpdateRulesOfIpGroupOutcome;
214         typedef Aws::Utils::Outcome<UpdateWorkspaceBundleResult, WorkSpacesError> UpdateWorkspaceBundleOutcome;
215         typedef Aws::Utils::Outcome<UpdateWorkspaceImagePermissionResult, WorkSpacesError> UpdateWorkspaceImagePermissionOutcome;
216 
217         typedef std::future<AssociateConnectionAliasOutcome> AssociateConnectionAliasOutcomeCallable;
218         typedef std::future<AssociateIpGroupsOutcome> AssociateIpGroupsOutcomeCallable;
219         typedef std::future<AuthorizeIpRulesOutcome> AuthorizeIpRulesOutcomeCallable;
220         typedef std::future<CopyWorkspaceImageOutcome> CopyWorkspaceImageOutcomeCallable;
221         typedef std::future<CreateConnectionAliasOutcome> CreateConnectionAliasOutcomeCallable;
222         typedef std::future<CreateIpGroupOutcome> CreateIpGroupOutcomeCallable;
223         typedef std::future<CreateTagsOutcome> CreateTagsOutcomeCallable;
224         typedef std::future<CreateUpdatedWorkspaceImageOutcome> CreateUpdatedWorkspaceImageOutcomeCallable;
225         typedef std::future<CreateWorkspaceBundleOutcome> CreateWorkspaceBundleOutcomeCallable;
226         typedef std::future<CreateWorkspacesOutcome> CreateWorkspacesOutcomeCallable;
227         typedef std::future<DeleteConnectionAliasOutcome> DeleteConnectionAliasOutcomeCallable;
228         typedef std::future<DeleteIpGroupOutcome> DeleteIpGroupOutcomeCallable;
229         typedef std::future<DeleteTagsOutcome> DeleteTagsOutcomeCallable;
230         typedef std::future<DeleteWorkspaceBundleOutcome> DeleteWorkspaceBundleOutcomeCallable;
231         typedef std::future<DeleteWorkspaceImageOutcome> DeleteWorkspaceImageOutcomeCallable;
232         typedef std::future<DeregisterWorkspaceDirectoryOutcome> DeregisterWorkspaceDirectoryOutcomeCallable;
233         typedef std::future<DescribeAccountOutcome> DescribeAccountOutcomeCallable;
234         typedef std::future<DescribeAccountModificationsOutcome> DescribeAccountModificationsOutcomeCallable;
235         typedef std::future<DescribeClientPropertiesOutcome> DescribeClientPropertiesOutcomeCallable;
236         typedef std::future<DescribeConnectionAliasPermissionsOutcome> DescribeConnectionAliasPermissionsOutcomeCallable;
237         typedef std::future<DescribeConnectionAliasesOutcome> DescribeConnectionAliasesOutcomeCallable;
238         typedef std::future<DescribeIpGroupsOutcome> DescribeIpGroupsOutcomeCallable;
239         typedef std::future<DescribeTagsOutcome> DescribeTagsOutcomeCallable;
240         typedef std::future<DescribeWorkspaceBundlesOutcome> DescribeWorkspaceBundlesOutcomeCallable;
241         typedef std::future<DescribeWorkspaceDirectoriesOutcome> DescribeWorkspaceDirectoriesOutcomeCallable;
242         typedef std::future<DescribeWorkspaceImagePermissionsOutcome> DescribeWorkspaceImagePermissionsOutcomeCallable;
243         typedef std::future<DescribeWorkspaceImagesOutcome> DescribeWorkspaceImagesOutcomeCallable;
244         typedef std::future<DescribeWorkspaceSnapshotsOutcome> DescribeWorkspaceSnapshotsOutcomeCallable;
245         typedef std::future<DescribeWorkspacesOutcome> DescribeWorkspacesOutcomeCallable;
246         typedef std::future<DescribeWorkspacesConnectionStatusOutcome> DescribeWorkspacesConnectionStatusOutcomeCallable;
247         typedef std::future<DisassociateConnectionAliasOutcome> DisassociateConnectionAliasOutcomeCallable;
248         typedef std::future<DisassociateIpGroupsOutcome> DisassociateIpGroupsOutcomeCallable;
249         typedef std::future<ImportWorkspaceImageOutcome> ImportWorkspaceImageOutcomeCallable;
250         typedef std::future<ListAvailableManagementCidrRangesOutcome> ListAvailableManagementCidrRangesOutcomeCallable;
251         typedef std::future<MigrateWorkspaceOutcome> MigrateWorkspaceOutcomeCallable;
252         typedef std::future<ModifyAccountOutcome> ModifyAccountOutcomeCallable;
253         typedef std::future<ModifyClientPropertiesOutcome> ModifyClientPropertiesOutcomeCallable;
254         typedef std::future<ModifySelfservicePermissionsOutcome> ModifySelfservicePermissionsOutcomeCallable;
255         typedef std::future<ModifyWorkspaceAccessPropertiesOutcome> ModifyWorkspaceAccessPropertiesOutcomeCallable;
256         typedef std::future<ModifyWorkspaceCreationPropertiesOutcome> ModifyWorkspaceCreationPropertiesOutcomeCallable;
257         typedef std::future<ModifyWorkspacePropertiesOutcome> ModifyWorkspacePropertiesOutcomeCallable;
258         typedef std::future<ModifyWorkspaceStateOutcome> ModifyWorkspaceStateOutcomeCallable;
259         typedef std::future<RebootWorkspacesOutcome> RebootWorkspacesOutcomeCallable;
260         typedef std::future<RebuildWorkspacesOutcome> RebuildWorkspacesOutcomeCallable;
261         typedef std::future<RegisterWorkspaceDirectoryOutcome> RegisterWorkspaceDirectoryOutcomeCallable;
262         typedef std::future<RestoreWorkspaceOutcome> RestoreWorkspaceOutcomeCallable;
263         typedef std::future<RevokeIpRulesOutcome> RevokeIpRulesOutcomeCallable;
264         typedef std::future<StartWorkspacesOutcome> StartWorkspacesOutcomeCallable;
265         typedef std::future<StopWorkspacesOutcome> StopWorkspacesOutcomeCallable;
266         typedef std::future<TerminateWorkspacesOutcome> TerminateWorkspacesOutcomeCallable;
267         typedef std::future<UpdateConnectionAliasPermissionOutcome> UpdateConnectionAliasPermissionOutcomeCallable;
268         typedef std::future<UpdateRulesOfIpGroupOutcome> UpdateRulesOfIpGroupOutcomeCallable;
269         typedef std::future<UpdateWorkspaceBundleOutcome> UpdateWorkspaceBundleOutcomeCallable;
270         typedef std::future<UpdateWorkspaceImagePermissionOutcome> UpdateWorkspaceImagePermissionOutcomeCallable;
271 } // namespace Model
272 
273   class WorkSpacesClient;
274 
275     typedef std::function<void(const WorkSpacesClient*, const Model::AssociateConnectionAliasRequest&, const Model::AssociateConnectionAliasOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AssociateConnectionAliasResponseReceivedHandler;
276     typedef std::function<void(const WorkSpacesClient*, const Model::AssociateIpGroupsRequest&, const Model::AssociateIpGroupsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AssociateIpGroupsResponseReceivedHandler;
277     typedef std::function<void(const WorkSpacesClient*, const Model::AuthorizeIpRulesRequest&, const Model::AuthorizeIpRulesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AuthorizeIpRulesResponseReceivedHandler;
278     typedef std::function<void(const WorkSpacesClient*, const Model::CopyWorkspaceImageRequest&, const Model::CopyWorkspaceImageOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CopyWorkspaceImageResponseReceivedHandler;
279     typedef std::function<void(const WorkSpacesClient*, const Model::CreateConnectionAliasRequest&, const Model::CreateConnectionAliasOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateConnectionAliasResponseReceivedHandler;
280     typedef std::function<void(const WorkSpacesClient*, const Model::CreateIpGroupRequest&, const Model::CreateIpGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateIpGroupResponseReceivedHandler;
281     typedef std::function<void(const WorkSpacesClient*, const Model::CreateTagsRequest&, const Model::CreateTagsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateTagsResponseReceivedHandler;
282     typedef std::function<void(const WorkSpacesClient*, const Model::CreateUpdatedWorkspaceImageRequest&, const Model::CreateUpdatedWorkspaceImageOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateUpdatedWorkspaceImageResponseReceivedHandler;
283     typedef std::function<void(const WorkSpacesClient*, const Model::CreateWorkspaceBundleRequest&, const Model::CreateWorkspaceBundleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateWorkspaceBundleResponseReceivedHandler;
284     typedef std::function<void(const WorkSpacesClient*, const Model::CreateWorkspacesRequest&, const Model::CreateWorkspacesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateWorkspacesResponseReceivedHandler;
285     typedef std::function<void(const WorkSpacesClient*, const Model::DeleteConnectionAliasRequest&, const Model::DeleteConnectionAliasOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteConnectionAliasResponseReceivedHandler;
286     typedef std::function<void(const WorkSpacesClient*, const Model::DeleteIpGroupRequest&, const Model::DeleteIpGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteIpGroupResponseReceivedHandler;
287     typedef std::function<void(const WorkSpacesClient*, const Model::DeleteTagsRequest&, const Model::DeleteTagsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteTagsResponseReceivedHandler;
288     typedef std::function<void(const WorkSpacesClient*, const Model::DeleteWorkspaceBundleRequest&, const Model::DeleteWorkspaceBundleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteWorkspaceBundleResponseReceivedHandler;
289     typedef std::function<void(const WorkSpacesClient*, const Model::DeleteWorkspaceImageRequest&, const Model::DeleteWorkspaceImageOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteWorkspaceImageResponseReceivedHandler;
290     typedef std::function<void(const WorkSpacesClient*, const Model::DeregisterWorkspaceDirectoryRequest&, const Model::DeregisterWorkspaceDirectoryOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeregisterWorkspaceDirectoryResponseReceivedHandler;
291     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeAccountRequest&, const Model::DescribeAccountOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeAccountResponseReceivedHandler;
292     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeAccountModificationsRequest&, const Model::DescribeAccountModificationsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeAccountModificationsResponseReceivedHandler;
293     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeClientPropertiesRequest&, const Model::DescribeClientPropertiesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeClientPropertiesResponseReceivedHandler;
294     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeConnectionAliasPermissionsRequest&, const Model::DescribeConnectionAliasPermissionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeConnectionAliasPermissionsResponseReceivedHandler;
295     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeConnectionAliasesRequest&, const Model::DescribeConnectionAliasesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeConnectionAliasesResponseReceivedHandler;
296     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeIpGroupsRequest&, const Model::DescribeIpGroupsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeIpGroupsResponseReceivedHandler;
297     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeTagsRequest&, const Model::DescribeTagsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeTagsResponseReceivedHandler;
298     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeWorkspaceBundlesRequest&, const Model::DescribeWorkspaceBundlesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeWorkspaceBundlesResponseReceivedHandler;
299     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeWorkspaceDirectoriesRequest&, const Model::DescribeWorkspaceDirectoriesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeWorkspaceDirectoriesResponseReceivedHandler;
300     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeWorkspaceImagePermissionsRequest&, const Model::DescribeWorkspaceImagePermissionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeWorkspaceImagePermissionsResponseReceivedHandler;
301     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeWorkspaceImagesRequest&, const Model::DescribeWorkspaceImagesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeWorkspaceImagesResponseReceivedHandler;
302     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeWorkspaceSnapshotsRequest&, const Model::DescribeWorkspaceSnapshotsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeWorkspaceSnapshotsResponseReceivedHandler;
303     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeWorkspacesRequest&, const Model::DescribeWorkspacesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeWorkspacesResponseReceivedHandler;
304     typedef std::function<void(const WorkSpacesClient*, const Model::DescribeWorkspacesConnectionStatusRequest&, const Model::DescribeWorkspacesConnectionStatusOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeWorkspacesConnectionStatusResponseReceivedHandler;
305     typedef std::function<void(const WorkSpacesClient*, const Model::DisassociateConnectionAliasRequest&, const Model::DisassociateConnectionAliasOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DisassociateConnectionAliasResponseReceivedHandler;
306     typedef std::function<void(const WorkSpacesClient*, const Model::DisassociateIpGroupsRequest&, const Model::DisassociateIpGroupsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DisassociateIpGroupsResponseReceivedHandler;
307     typedef std::function<void(const WorkSpacesClient*, const Model::ImportWorkspaceImageRequest&, const Model::ImportWorkspaceImageOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ImportWorkspaceImageResponseReceivedHandler;
308     typedef std::function<void(const WorkSpacesClient*, const Model::ListAvailableManagementCidrRangesRequest&, const Model::ListAvailableManagementCidrRangesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListAvailableManagementCidrRangesResponseReceivedHandler;
309     typedef std::function<void(const WorkSpacesClient*, const Model::MigrateWorkspaceRequest&, const Model::MigrateWorkspaceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > MigrateWorkspaceResponseReceivedHandler;
310     typedef std::function<void(const WorkSpacesClient*, const Model::ModifyAccountRequest&, const Model::ModifyAccountOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ModifyAccountResponseReceivedHandler;
311     typedef std::function<void(const WorkSpacesClient*, const Model::ModifyClientPropertiesRequest&, const Model::ModifyClientPropertiesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ModifyClientPropertiesResponseReceivedHandler;
312     typedef std::function<void(const WorkSpacesClient*, const Model::ModifySelfservicePermissionsRequest&, const Model::ModifySelfservicePermissionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ModifySelfservicePermissionsResponseReceivedHandler;
313     typedef std::function<void(const WorkSpacesClient*, const Model::ModifyWorkspaceAccessPropertiesRequest&, const Model::ModifyWorkspaceAccessPropertiesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ModifyWorkspaceAccessPropertiesResponseReceivedHandler;
314     typedef std::function<void(const WorkSpacesClient*, const Model::ModifyWorkspaceCreationPropertiesRequest&, const Model::ModifyWorkspaceCreationPropertiesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ModifyWorkspaceCreationPropertiesResponseReceivedHandler;
315     typedef std::function<void(const WorkSpacesClient*, const Model::ModifyWorkspacePropertiesRequest&, const Model::ModifyWorkspacePropertiesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ModifyWorkspacePropertiesResponseReceivedHandler;
316     typedef std::function<void(const WorkSpacesClient*, const Model::ModifyWorkspaceStateRequest&, const Model::ModifyWorkspaceStateOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ModifyWorkspaceStateResponseReceivedHandler;
317     typedef std::function<void(const WorkSpacesClient*, const Model::RebootWorkspacesRequest&, const Model::RebootWorkspacesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RebootWorkspacesResponseReceivedHandler;
318     typedef std::function<void(const WorkSpacesClient*, const Model::RebuildWorkspacesRequest&, const Model::RebuildWorkspacesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RebuildWorkspacesResponseReceivedHandler;
319     typedef std::function<void(const WorkSpacesClient*, const Model::RegisterWorkspaceDirectoryRequest&, const Model::RegisterWorkspaceDirectoryOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RegisterWorkspaceDirectoryResponseReceivedHandler;
320     typedef std::function<void(const WorkSpacesClient*, const Model::RestoreWorkspaceRequest&, const Model::RestoreWorkspaceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RestoreWorkspaceResponseReceivedHandler;
321     typedef std::function<void(const WorkSpacesClient*, const Model::RevokeIpRulesRequest&, const Model::RevokeIpRulesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RevokeIpRulesResponseReceivedHandler;
322     typedef std::function<void(const WorkSpacesClient*, const Model::StartWorkspacesRequest&, const Model::StartWorkspacesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > StartWorkspacesResponseReceivedHandler;
323     typedef std::function<void(const WorkSpacesClient*, const Model::StopWorkspacesRequest&, const Model::StopWorkspacesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > StopWorkspacesResponseReceivedHandler;
324     typedef std::function<void(const WorkSpacesClient*, const Model::TerminateWorkspacesRequest&, const Model::TerminateWorkspacesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > TerminateWorkspacesResponseReceivedHandler;
325     typedef std::function<void(const WorkSpacesClient*, const Model::UpdateConnectionAliasPermissionRequest&, const Model::UpdateConnectionAliasPermissionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateConnectionAliasPermissionResponseReceivedHandler;
326     typedef std::function<void(const WorkSpacesClient*, const Model::UpdateRulesOfIpGroupRequest&, const Model::UpdateRulesOfIpGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateRulesOfIpGroupResponseReceivedHandler;
327     typedef std::function<void(const WorkSpacesClient*, const Model::UpdateWorkspaceBundleRequest&, const Model::UpdateWorkspaceBundleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateWorkspaceBundleResponseReceivedHandler;
328     typedef std::function<void(const WorkSpacesClient*, const Model::UpdateWorkspaceImagePermissionRequest&, const Model::UpdateWorkspaceImagePermissionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateWorkspaceImagePermissionResponseReceivedHandler;
329 
330   /**
331    * <fullname>Amazon WorkSpaces Service</fullname> <p>Amazon WorkSpaces enables you
332    * to provision virtual, cloud-based Microsoft Windows and Amazon Linux desktops
333    * for your users.</p>
334    */
335   class AWS_WORKSPACES_API WorkSpacesClient : public Aws::Client::AWSJsonClient
336   {
337     public:
338       typedef Aws::Client::AWSJsonClient BASECLASS;
339 
340        /**
341         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
342         * is not specified, it will be initialized to default values.
343         */
344         WorkSpacesClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
345 
346        /**
347         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
348         * is not specified, it will be initialized to default values.
349         */
350         WorkSpacesClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
351 
352        /**
353         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
354         * the default http client factory will be used
355         */
356         WorkSpacesClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
357             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
358 
359         virtual ~WorkSpacesClient();
360 
361 
362         /**
363          * <p>Associates the specified connection alias with the specified directory to
364          * enable cross-Region redirection. For more information, see <a
365          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
366          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p>  <p>Before
367          * performing this operation, call <a
368          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeConnectionAliases.html">
369          * DescribeConnectionAliases</a> to make sure that the current state of the
370          * connection alias is <code>CREATED</code>.</p> <p><h3>See Also:</h3>   <a
371          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociateConnectionAlias">AWS
372          * API Reference</a></p>
373          */
374         virtual Model::AssociateConnectionAliasOutcome AssociateConnectionAlias(const Model::AssociateConnectionAliasRequest& request) const;
375 
376         /**
377          * <p>Associates the specified connection alias with the specified directory to
378          * enable cross-Region redirection. For more information, see <a
379          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
380          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p>  <p>Before
381          * performing this operation, call <a
382          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeConnectionAliases.html">
383          * DescribeConnectionAliases</a> to make sure that the current state of the
384          * connection alias is <code>CREATED</code>.</p> <p><h3>See Also:</h3>   <a
385          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociateConnectionAlias">AWS
386          * API Reference</a></p>
387          *
388          * returns a future to the operation so that it can be executed in parallel to other requests.
389          */
390         virtual Model::AssociateConnectionAliasOutcomeCallable AssociateConnectionAliasCallable(const Model::AssociateConnectionAliasRequest& request) const;
391 
392         /**
393          * <p>Associates the specified connection alias with the specified directory to
394          * enable cross-Region redirection. For more information, see <a
395          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
396          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p>  <p>Before
397          * performing this operation, call <a
398          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeConnectionAliases.html">
399          * DescribeConnectionAliases</a> to make sure that the current state of the
400          * connection alias is <code>CREATED</code>.</p> <p><h3>See Also:</h3>   <a
401          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociateConnectionAlias">AWS
402          * API Reference</a></p>
403          *
404          * Queues the request into a thread executor and triggers associated callback when operation has finished.
405          */
406         virtual void AssociateConnectionAliasAsync(const Model::AssociateConnectionAliasRequest& request, const AssociateConnectionAliasResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
407 
408         /**
409          * <p>Associates the specified IP access control group with the specified
410          * directory.</p><p><h3>See Also:</h3>   <a
411          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociateIpGroups">AWS
412          * API Reference</a></p>
413          */
414         virtual Model::AssociateIpGroupsOutcome AssociateIpGroups(const Model::AssociateIpGroupsRequest& request) const;
415 
416         /**
417          * <p>Associates the specified IP access control group with the specified
418          * directory.</p><p><h3>See Also:</h3>   <a
419          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociateIpGroups">AWS
420          * API Reference</a></p>
421          *
422          * returns a future to the operation so that it can be executed in parallel to other requests.
423          */
424         virtual Model::AssociateIpGroupsOutcomeCallable AssociateIpGroupsCallable(const Model::AssociateIpGroupsRequest& request) const;
425 
426         /**
427          * <p>Associates the specified IP access control group with the specified
428          * directory.</p><p><h3>See Also:</h3>   <a
429          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AssociateIpGroups">AWS
430          * API Reference</a></p>
431          *
432          * Queues the request into a thread executor and triggers associated callback when operation has finished.
433          */
434         virtual void AssociateIpGroupsAsync(const Model::AssociateIpGroupsRequest& request, const AssociateIpGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
435 
436         /**
437          * <p>Adds one or more rules to the specified IP access control group.</p> <p>This
438          * action gives users permission to access their WorkSpaces from the CIDR address
439          * ranges specified in the rules.</p><p><h3>See Also:</h3>   <a
440          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AuthorizeIpRules">AWS
441          * API Reference</a></p>
442          */
443         virtual Model::AuthorizeIpRulesOutcome AuthorizeIpRules(const Model::AuthorizeIpRulesRequest& request) const;
444 
445         /**
446          * <p>Adds one or more rules to the specified IP access control group.</p> <p>This
447          * action gives users permission to access their WorkSpaces from the CIDR address
448          * ranges specified in the rules.</p><p><h3>See Also:</h3>   <a
449          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AuthorizeIpRules">AWS
450          * API Reference</a></p>
451          *
452          * returns a future to the operation so that it can be executed in parallel to other requests.
453          */
454         virtual Model::AuthorizeIpRulesOutcomeCallable AuthorizeIpRulesCallable(const Model::AuthorizeIpRulesRequest& request) const;
455 
456         /**
457          * <p>Adds one or more rules to the specified IP access control group.</p> <p>This
458          * action gives users permission to access their WorkSpaces from the CIDR address
459          * ranges specified in the rules.</p><p><h3>See Also:</h3>   <a
460          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AuthorizeIpRules">AWS
461          * API Reference</a></p>
462          *
463          * Queues the request into a thread executor and triggers associated callback when operation has finished.
464          */
465         virtual void AuthorizeIpRulesAsync(const Model::AuthorizeIpRulesRequest& request, const AuthorizeIpRulesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
466 
467         /**
468          * <p>Copies the specified image from the specified Region to the current Region.
469          * For more information about copying images, see <a
470          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/copy-custom-image.html">
471          * Copy a Custom WorkSpaces Image</a>.</p> <p>In the China (Ningxia) Region, you
472          * can copy images only within the same Region.</p> <p>In Amazon Web Services
473          * GovCloud (US), to copy images to and from other Regions, contact Amazon Web
474          * Services Support.</p>  <p>Before copying a shared image, be sure to
475          * verify that it has been shared from the correct Amazon Web Services account. To
476          * determine if an image has been shared and to see the ID of the Amazon Web
477          * Services account that owns an image, use the <a
478          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaceImages.html">DescribeWorkSpaceImages</a>
479          * and <a
480          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaceImagePermissions.html">DescribeWorkspaceImagePermissions</a>
481          * API operations. </p> <p><h3>See Also:</h3>   <a
482          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CopyWorkspaceImage">AWS
483          * API Reference</a></p>
484          */
485         virtual Model::CopyWorkspaceImageOutcome CopyWorkspaceImage(const Model::CopyWorkspaceImageRequest& request) const;
486 
487         /**
488          * <p>Copies the specified image from the specified Region to the current Region.
489          * For more information about copying images, see <a
490          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/copy-custom-image.html">
491          * Copy a Custom WorkSpaces Image</a>.</p> <p>In the China (Ningxia) Region, you
492          * can copy images only within the same Region.</p> <p>In Amazon Web Services
493          * GovCloud (US), to copy images to and from other Regions, contact Amazon Web
494          * Services Support.</p>  <p>Before copying a shared image, be sure to
495          * verify that it has been shared from the correct Amazon Web Services account. To
496          * determine if an image has been shared and to see the ID of the Amazon Web
497          * Services account that owns an image, use the <a
498          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaceImages.html">DescribeWorkSpaceImages</a>
499          * and <a
500          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaceImagePermissions.html">DescribeWorkspaceImagePermissions</a>
501          * API operations. </p> <p><h3>See Also:</h3>   <a
502          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CopyWorkspaceImage">AWS
503          * API Reference</a></p>
504          *
505          * returns a future to the operation so that it can be executed in parallel to other requests.
506          */
507         virtual Model::CopyWorkspaceImageOutcomeCallable CopyWorkspaceImageCallable(const Model::CopyWorkspaceImageRequest& request) const;
508 
509         /**
510          * <p>Copies the specified image from the specified Region to the current Region.
511          * For more information about copying images, see <a
512          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/copy-custom-image.html">
513          * Copy a Custom WorkSpaces Image</a>.</p> <p>In the China (Ningxia) Region, you
514          * can copy images only within the same Region.</p> <p>In Amazon Web Services
515          * GovCloud (US), to copy images to and from other Regions, contact Amazon Web
516          * Services Support.</p>  <p>Before copying a shared image, be sure to
517          * verify that it has been shared from the correct Amazon Web Services account. To
518          * determine if an image has been shared and to see the ID of the Amazon Web
519          * Services account that owns an image, use the <a
520          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaceImages.html">DescribeWorkSpaceImages</a>
521          * and <a
522          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaceImagePermissions.html">DescribeWorkspaceImagePermissions</a>
523          * API operations. </p> <p><h3>See Also:</h3>   <a
524          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CopyWorkspaceImage">AWS
525          * API Reference</a></p>
526          *
527          * Queues the request into a thread executor and triggers associated callback when operation has finished.
528          */
529         virtual void CopyWorkspaceImageAsync(const Model::CopyWorkspaceImageRequest& request, const CopyWorkspaceImageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
530 
531         /**
532          * <p>Creates the specified connection alias for use with cross-Region redirection.
533          * For more information, see <a
534          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
535          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p><p><h3>See Also:</h3>
536          * <a
537          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateConnectionAlias">AWS
538          * API Reference</a></p>
539          */
540         virtual Model::CreateConnectionAliasOutcome CreateConnectionAlias(const Model::CreateConnectionAliasRequest& request) const;
541 
542         /**
543          * <p>Creates the specified connection alias for use with cross-Region redirection.
544          * For more information, see <a
545          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
546          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p><p><h3>See Also:</h3>
547          * <a
548          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateConnectionAlias">AWS
549          * API Reference</a></p>
550          *
551          * returns a future to the operation so that it can be executed in parallel to other requests.
552          */
553         virtual Model::CreateConnectionAliasOutcomeCallable CreateConnectionAliasCallable(const Model::CreateConnectionAliasRequest& request) const;
554 
555         /**
556          * <p>Creates the specified connection alias for use with cross-Region redirection.
557          * For more information, see <a
558          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
559          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p><p><h3>See Also:</h3>
560          * <a
561          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateConnectionAlias">AWS
562          * API Reference</a></p>
563          *
564          * Queues the request into a thread executor and triggers associated callback when operation has finished.
565          */
566         virtual void CreateConnectionAliasAsync(const Model::CreateConnectionAliasRequest& request, const CreateConnectionAliasResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
567 
568         /**
569          * <p>Creates an IP access control group.</p> <p>An IP access control group
570          * provides you with the ability to control the IP addresses from which users are
571          * allowed to access their WorkSpaces. To specify the CIDR address ranges, add
572          * rules to your IP access control group and then associate the group with your
573          * directory. You can add rules when you create the group or at any time using
574          * <a>AuthorizeIpRules</a>.</p> <p>There is a default IP access control group
575          * associated with your directory. If you don't associate an IP access control
576          * group with your directory, the default group is used. The default group includes
577          * a default rule that allows users to access their WorkSpaces from anywhere. You
578          * cannot modify the default IP access control group for your
579          * directory.</p><p><h3>See Also:</h3>   <a
580          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateIpGroup">AWS
581          * API Reference</a></p>
582          */
583         virtual Model::CreateIpGroupOutcome CreateIpGroup(const Model::CreateIpGroupRequest& request) const;
584 
585         /**
586          * <p>Creates an IP access control group.</p> <p>An IP access control group
587          * provides you with the ability to control the IP addresses from which users are
588          * allowed to access their WorkSpaces. To specify the CIDR address ranges, add
589          * rules to your IP access control group and then associate the group with your
590          * directory. You can add rules when you create the group or at any time using
591          * <a>AuthorizeIpRules</a>.</p> <p>There is a default IP access control group
592          * associated with your directory. If you don't associate an IP access control
593          * group with your directory, the default group is used. The default group includes
594          * a default rule that allows users to access their WorkSpaces from anywhere. You
595          * cannot modify the default IP access control group for your
596          * directory.</p><p><h3>See Also:</h3>   <a
597          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateIpGroup">AWS
598          * API Reference</a></p>
599          *
600          * returns a future to the operation so that it can be executed in parallel to other requests.
601          */
602         virtual Model::CreateIpGroupOutcomeCallable CreateIpGroupCallable(const Model::CreateIpGroupRequest& request) const;
603 
604         /**
605          * <p>Creates an IP access control group.</p> <p>An IP access control group
606          * provides you with the ability to control the IP addresses from which users are
607          * allowed to access their WorkSpaces. To specify the CIDR address ranges, add
608          * rules to your IP access control group and then associate the group with your
609          * directory. You can add rules when you create the group or at any time using
610          * <a>AuthorizeIpRules</a>.</p> <p>There is a default IP access control group
611          * associated with your directory. If you don't associate an IP access control
612          * group with your directory, the default group is used. The default group includes
613          * a default rule that allows users to access their WorkSpaces from anywhere. You
614          * cannot modify the default IP access control group for your
615          * directory.</p><p><h3>See Also:</h3>   <a
616          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateIpGroup">AWS
617          * API Reference</a></p>
618          *
619          * Queues the request into a thread executor and triggers associated callback when operation has finished.
620          */
621         virtual void CreateIpGroupAsync(const Model::CreateIpGroupRequest& request, const CreateIpGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
622 
623         /**
624          * <p>Creates the specified tags for the specified WorkSpaces
625          * resource.</p><p><h3>See Also:</h3>   <a
626          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateTags">AWS
627          * API Reference</a></p>
628          */
629         virtual Model::CreateTagsOutcome CreateTags(const Model::CreateTagsRequest& request) const;
630 
631         /**
632          * <p>Creates the specified tags for the specified WorkSpaces
633          * resource.</p><p><h3>See Also:</h3>   <a
634          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateTags">AWS
635          * API Reference</a></p>
636          *
637          * returns a future to the operation so that it can be executed in parallel to other requests.
638          */
639         virtual Model::CreateTagsOutcomeCallable CreateTagsCallable(const Model::CreateTagsRequest& request) const;
640 
641         /**
642          * <p>Creates the specified tags for the specified WorkSpaces
643          * resource.</p><p><h3>See Also:</h3>   <a
644          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateTags">AWS
645          * API Reference</a></p>
646          *
647          * Queues the request into a thread executor and triggers associated callback when operation has finished.
648          */
649         virtual void CreateTagsAsync(const Model::CreateTagsRequest& request, const CreateTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
650 
651         /**
652          * <p>Creates a new updated WorkSpace image based on the specified source image.
653          * The new updated WorkSpace image has the latest drivers and other updates
654          * required by the Amazon WorkSpaces components.</p> <p>To determine which
655          * WorkSpace images need to be updated with the latest Amazon WorkSpaces
656          * requirements, use <a
657          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaceImages.html">
658          * DescribeWorkspaceImages</a>.</p>  <ul> <li> <p>Only Windows 10 WorkSpace
659          * images can be programmatically updated at this time.</p> </li> <li> <p>Microsoft
660          * Windows updates and other application updates are not included in the update
661          * process.</p> </li> <li> <p>The source WorkSpace image is not deleted. You can
662          * delete the source image after you've verified your new updated image and created
663          * a new bundle. </p> </li> </ul> <p><h3>See Also:</h3>   <a
664          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateUpdatedWorkspaceImage">AWS
665          * API Reference</a></p>
666          */
667         virtual Model::CreateUpdatedWorkspaceImageOutcome CreateUpdatedWorkspaceImage(const Model::CreateUpdatedWorkspaceImageRequest& request) const;
668 
669         /**
670          * <p>Creates a new updated WorkSpace image based on the specified source image.
671          * The new updated WorkSpace image has the latest drivers and other updates
672          * required by the Amazon WorkSpaces components.</p> <p>To determine which
673          * WorkSpace images need to be updated with the latest Amazon WorkSpaces
674          * requirements, use <a
675          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaceImages.html">
676          * DescribeWorkspaceImages</a>.</p>  <ul> <li> <p>Only Windows 10 WorkSpace
677          * images can be programmatically updated at this time.</p> </li> <li> <p>Microsoft
678          * Windows updates and other application updates are not included in the update
679          * process.</p> </li> <li> <p>The source WorkSpace image is not deleted. You can
680          * delete the source image after you've verified your new updated image and created
681          * a new bundle. </p> </li> </ul> <p><h3>See Also:</h3>   <a
682          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateUpdatedWorkspaceImage">AWS
683          * API Reference</a></p>
684          *
685          * returns a future to the operation so that it can be executed in parallel to other requests.
686          */
687         virtual Model::CreateUpdatedWorkspaceImageOutcomeCallable CreateUpdatedWorkspaceImageCallable(const Model::CreateUpdatedWorkspaceImageRequest& request) const;
688 
689         /**
690          * <p>Creates a new updated WorkSpace image based on the specified source image.
691          * The new updated WorkSpace image has the latest drivers and other updates
692          * required by the Amazon WorkSpaces components.</p> <p>To determine which
693          * WorkSpace images need to be updated with the latest Amazon WorkSpaces
694          * requirements, use <a
695          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaceImages.html">
696          * DescribeWorkspaceImages</a>.</p>  <ul> <li> <p>Only Windows 10 WorkSpace
697          * images can be programmatically updated at this time.</p> </li> <li> <p>Microsoft
698          * Windows updates and other application updates are not included in the update
699          * process.</p> </li> <li> <p>The source WorkSpace image is not deleted. You can
700          * delete the source image after you've verified your new updated image and created
701          * a new bundle. </p> </li> </ul> <p><h3>See Also:</h3>   <a
702          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateUpdatedWorkspaceImage">AWS
703          * API Reference</a></p>
704          *
705          * Queues the request into a thread executor and triggers associated callback when operation has finished.
706          */
707         virtual void CreateUpdatedWorkspaceImageAsync(const Model::CreateUpdatedWorkspaceImageRequest& request, const CreateUpdatedWorkspaceImageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
708 
709         /**
710          * <p>Creates the specified WorkSpace bundle. For more information about creating
711          * WorkSpace bundles, see <a
712          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/create-custom-bundle.html">
713          * Create a Custom WorkSpaces Image and Bundle</a>.</p><p><h3>See Also:</h3>   <a
714          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspaceBundle">AWS
715          * API Reference</a></p>
716          */
717         virtual Model::CreateWorkspaceBundleOutcome CreateWorkspaceBundle(const Model::CreateWorkspaceBundleRequest& request) const;
718 
719         /**
720          * <p>Creates the specified WorkSpace bundle. For more information about creating
721          * WorkSpace bundles, see <a
722          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/create-custom-bundle.html">
723          * Create a Custom WorkSpaces Image and Bundle</a>.</p><p><h3>See Also:</h3>   <a
724          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspaceBundle">AWS
725          * API Reference</a></p>
726          *
727          * returns a future to the operation so that it can be executed in parallel to other requests.
728          */
729         virtual Model::CreateWorkspaceBundleOutcomeCallable CreateWorkspaceBundleCallable(const Model::CreateWorkspaceBundleRequest& request) const;
730 
731         /**
732          * <p>Creates the specified WorkSpace bundle. For more information about creating
733          * WorkSpace bundles, see <a
734          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/create-custom-bundle.html">
735          * Create a Custom WorkSpaces Image and Bundle</a>.</p><p><h3>See Also:</h3>   <a
736          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspaceBundle">AWS
737          * API Reference</a></p>
738          *
739          * Queues the request into a thread executor and triggers associated callback when operation has finished.
740          */
741         virtual void CreateWorkspaceBundleAsync(const Model::CreateWorkspaceBundleRequest& request, const CreateWorkspaceBundleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
742 
743         /**
744          * <p>Creates one or more WorkSpaces.</p> <p>This operation is asynchronous and
745          * returns before the WorkSpaces are created.</p><p><h3>See Also:</h3>   <a
746          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspaces">AWS
747          * API Reference</a></p>
748          */
749         virtual Model::CreateWorkspacesOutcome CreateWorkspaces(const Model::CreateWorkspacesRequest& request) const;
750 
751         /**
752          * <p>Creates one or more WorkSpaces.</p> <p>This operation is asynchronous and
753          * returns before the WorkSpaces are created.</p><p><h3>See Also:</h3>   <a
754          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspaces">AWS
755          * API Reference</a></p>
756          *
757          * returns a future to the operation so that it can be executed in parallel to other requests.
758          */
759         virtual Model::CreateWorkspacesOutcomeCallable CreateWorkspacesCallable(const Model::CreateWorkspacesRequest& request) const;
760 
761         /**
762          * <p>Creates one or more WorkSpaces.</p> <p>This operation is asynchronous and
763          * returns before the WorkSpaces are created.</p><p><h3>See Also:</h3>   <a
764          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateWorkspaces">AWS
765          * API Reference</a></p>
766          *
767          * Queues the request into a thread executor and triggers associated callback when operation has finished.
768          */
769         virtual void CreateWorkspacesAsync(const Model::CreateWorkspacesRequest& request, const CreateWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
770 
771         /**
772          * <p>Deletes the specified connection alias. For more information, see <a
773          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
774          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p>  <p> <b>If
775          * you will no longer be using a fully qualified domain name (FQDN) as the
776          * registration code for your WorkSpaces users, you must take certain precautions
777          * to prevent potential security issues.</b> For more information, see <a
778          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html#cross-region-redirection-security-considerations">
779          * Security Considerations if You Stop Using Cross-Region Redirection</a>.</p>
780          *   <p>To delete a connection alias that has been shared, the
781          * shared account must first disassociate the connection alias from any directories
782          * it has been associated with. Then you must unshare the connection alias from the
783          * account it has been shared with. You can delete a connection alias only after it
784          * is no longer shared with any accounts or associated with any directories.</p>
785          * <p><h3>See Also:</h3>   <a
786          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteConnectionAlias">AWS
787          * API Reference</a></p>
788          */
789         virtual Model::DeleteConnectionAliasOutcome DeleteConnectionAlias(const Model::DeleteConnectionAliasRequest& request) const;
790 
791         /**
792          * <p>Deletes the specified connection alias. For more information, see <a
793          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
794          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p>  <p> <b>If
795          * you will no longer be using a fully qualified domain name (FQDN) as the
796          * registration code for your WorkSpaces users, you must take certain precautions
797          * to prevent potential security issues.</b> For more information, see <a
798          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html#cross-region-redirection-security-considerations">
799          * Security Considerations if You Stop Using Cross-Region Redirection</a>.</p>
800          *   <p>To delete a connection alias that has been shared, the
801          * shared account must first disassociate the connection alias from any directories
802          * it has been associated with. Then you must unshare the connection alias from the
803          * account it has been shared with. You can delete a connection alias only after it
804          * is no longer shared with any accounts or associated with any directories.</p>
805          * <p><h3>See Also:</h3>   <a
806          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteConnectionAlias">AWS
807          * API Reference</a></p>
808          *
809          * returns a future to the operation so that it can be executed in parallel to other requests.
810          */
811         virtual Model::DeleteConnectionAliasOutcomeCallable DeleteConnectionAliasCallable(const Model::DeleteConnectionAliasRequest& request) const;
812 
813         /**
814          * <p>Deletes the specified connection alias. For more information, see <a
815          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
816          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p>  <p> <b>If
817          * you will no longer be using a fully qualified domain name (FQDN) as the
818          * registration code for your WorkSpaces users, you must take certain precautions
819          * to prevent potential security issues.</b> For more information, see <a
820          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html#cross-region-redirection-security-considerations">
821          * Security Considerations if You Stop Using Cross-Region Redirection</a>.</p>
822          *   <p>To delete a connection alias that has been shared, the
823          * shared account must first disassociate the connection alias from any directories
824          * it has been associated with. Then you must unshare the connection alias from the
825          * account it has been shared with. You can delete a connection alias only after it
826          * is no longer shared with any accounts or associated with any directories.</p>
827          * <p><h3>See Also:</h3>   <a
828          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteConnectionAlias">AWS
829          * API Reference</a></p>
830          *
831          * Queues the request into a thread executor and triggers associated callback when operation has finished.
832          */
833         virtual void DeleteConnectionAliasAsync(const Model::DeleteConnectionAliasRequest& request, const DeleteConnectionAliasResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
834 
835         /**
836          * <p>Deletes the specified IP access control group.</p> <p>You cannot delete an IP
837          * access control group that is associated with a directory.</p><p><h3>See
838          * Also:</h3>   <a
839          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteIpGroup">AWS
840          * API Reference</a></p>
841          */
842         virtual Model::DeleteIpGroupOutcome DeleteIpGroup(const Model::DeleteIpGroupRequest& request) const;
843 
844         /**
845          * <p>Deletes the specified IP access control group.</p> <p>You cannot delete an IP
846          * access control group that is associated with a directory.</p><p><h3>See
847          * Also:</h3>   <a
848          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteIpGroup">AWS
849          * API Reference</a></p>
850          *
851          * returns a future to the operation so that it can be executed in parallel to other requests.
852          */
853         virtual Model::DeleteIpGroupOutcomeCallable DeleteIpGroupCallable(const Model::DeleteIpGroupRequest& request) const;
854 
855         /**
856          * <p>Deletes the specified IP access control group.</p> <p>You cannot delete an IP
857          * access control group that is associated with a directory.</p><p><h3>See
858          * Also:</h3>   <a
859          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteIpGroup">AWS
860          * API Reference</a></p>
861          *
862          * Queues the request into a thread executor and triggers associated callback when operation has finished.
863          */
864         virtual void DeleteIpGroupAsync(const Model::DeleteIpGroupRequest& request, const DeleteIpGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
865 
866         /**
867          * <p>Deletes the specified tags from the specified WorkSpaces
868          * resource.</p><p><h3>See Also:</h3>   <a
869          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteTags">AWS
870          * API Reference</a></p>
871          */
872         virtual Model::DeleteTagsOutcome DeleteTags(const Model::DeleteTagsRequest& request) const;
873 
874         /**
875          * <p>Deletes the specified tags from the specified WorkSpaces
876          * resource.</p><p><h3>See Also:</h3>   <a
877          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteTags">AWS
878          * API Reference</a></p>
879          *
880          * returns a future to the operation so that it can be executed in parallel to other requests.
881          */
882         virtual Model::DeleteTagsOutcomeCallable DeleteTagsCallable(const Model::DeleteTagsRequest& request) const;
883 
884         /**
885          * <p>Deletes the specified tags from the specified WorkSpaces
886          * resource.</p><p><h3>See Also:</h3>   <a
887          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteTags">AWS
888          * API Reference</a></p>
889          *
890          * Queues the request into a thread executor and triggers associated callback when operation has finished.
891          */
892         virtual void DeleteTagsAsync(const Model::DeleteTagsRequest& request, const DeleteTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
893 
894         /**
895          * <p>Deletes the specified WorkSpace bundle. For more information about deleting
896          * WorkSpace bundles, see <a
897          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/delete_bundle.html">
898          * Delete a Custom WorkSpaces Bundle or Image</a>.</p><p><h3>See Also:</h3>   <a
899          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteWorkspaceBundle">AWS
900          * API Reference</a></p>
901          */
902         virtual Model::DeleteWorkspaceBundleOutcome DeleteWorkspaceBundle(const Model::DeleteWorkspaceBundleRequest& request) const;
903 
904         /**
905          * <p>Deletes the specified WorkSpace bundle. For more information about deleting
906          * WorkSpace bundles, see <a
907          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/delete_bundle.html">
908          * Delete a Custom WorkSpaces Bundle or Image</a>.</p><p><h3>See Also:</h3>   <a
909          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteWorkspaceBundle">AWS
910          * API Reference</a></p>
911          *
912          * returns a future to the operation so that it can be executed in parallel to other requests.
913          */
914         virtual Model::DeleteWorkspaceBundleOutcomeCallable DeleteWorkspaceBundleCallable(const Model::DeleteWorkspaceBundleRequest& request) const;
915 
916         /**
917          * <p>Deletes the specified WorkSpace bundle. For more information about deleting
918          * WorkSpace bundles, see <a
919          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/delete_bundle.html">
920          * Delete a Custom WorkSpaces Bundle or Image</a>.</p><p><h3>See Also:</h3>   <a
921          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteWorkspaceBundle">AWS
922          * API Reference</a></p>
923          *
924          * Queues the request into a thread executor and triggers associated callback when operation has finished.
925          */
926         virtual void DeleteWorkspaceBundleAsync(const Model::DeleteWorkspaceBundleRequest& request, const DeleteWorkspaceBundleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
927 
928         /**
929          * <p>Deletes the specified image from your account. To delete an image, you must
930          * first delete any bundles that are associated with the image and unshare the
931          * image if it is shared with other accounts. </p><p><h3>See Also:</h3>   <a
932          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteWorkspaceImage">AWS
933          * API Reference</a></p>
934          */
935         virtual Model::DeleteWorkspaceImageOutcome DeleteWorkspaceImage(const Model::DeleteWorkspaceImageRequest& request) const;
936 
937         /**
938          * <p>Deletes the specified image from your account. To delete an image, you must
939          * first delete any bundles that are associated with the image and unshare the
940          * image if it is shared with other accounts. </p><p><h3>See Also:</h3>   <a
941          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteWorkspaceImage">AWS
942          * API Reference</a></p>
943          *
944          * returns a future to the operation so that it can be executed in parallel to other requests.
945          */
946         virtual Model::DeleteWorkspaceImageOutcomeCallable DeleteWorkspaceImageCallable(const Model::DeleteWorkspaceImageRequest& request) const;
947 
948         /**
949          * <p>Deletes the specified image from your account. To delete an image, you must
950          * first delete any bundles that are associated with the image and unshare the
951          * image if it is shared with other accounts. </p><p><h3>See Also:</h3>   <a
952          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteWorkspaceImage">AWS
953          * API Reference</a></p>
954          *
955          * Queues the request into a thread executor and triggers associated callback when operation has finished.
956          */
957         virtual void DeleteWorkspaceImageAsync(const Model::DeleteWorkspaceImageRequest& request, const DeleteWorkspaceImageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
958 
959         /**
960          * <p>Deregisters the specified directory. This operation is asynchronous and
961          * returns before the WorkSpace directory is deregistered. If any WorkSpaces are
962          * registered to this directory, you must remove them before you can deregister the
963          * directory.</p>  <p>Simple AD and AD Connector are made available to you
964          * free of charge to use with WorkSpaces. If there are no WorkSpaces being used
965          * with your Simple AD or AD Connector directory for 30 consecutive days, this
966          * directory will be automatically deregistered for use with Amazon WorkSpaces, and
967          * you will be charged for this directory as per the <a
968          * href="http://aws.amazon.com/directoryservice/pricing/">Directory Service pricing
969          * terms</a>.</p> <p>To delete empty directories, see <a
970          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/delete-workspaces-directory.html">
971          * Delete the Directory for Your WorkSpaces</a>. If you delete your Simple AD or AD
972          * Connector directory, you can always create a new one when you want to start
973          * using WorkSpaces again.</p> <p><h3>See Also:</h3>   <a
974          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeregisterWorkspaceDirectory">AWS
975          * API Reference</a></p>
976          */
977         virtual Model::DeregisterWorkspaceDirectoryOutcome DeregisterWorkspaceDirectory(const Model::DeregisterWorkspaceDirectoryRequest& request) const;
978 
979         /**
980          * <p>Deregisters the specified directory. This operation is asynchronous and
981          * returns before the WorkSpace directory is deregistered. If any WorkSpaces are
982          * registered to this directory, you must remove them before you can deregister the
983          * directory.</p>  <p>Simple AD and AD Connector are made available to you
984          * free of charge to use with WorkSpaces. If there are no WorkSpaces being used
985          * with your Simple AD or AD Connector directory for 30 consecutive days, this
986          * directory will be automatically deregistered for use with Amazon WorkSpaces, and
987          * you will be charged for this directory as per the <a
988          * href="http://aws.amazon.com/directoryservice/pricing/">Directory Service pricing
989          * terms</a>.</p> <p>To delete empty directories, see <a
990          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/delete-workspaces-directory.html">
991          * Delete the Directory for Your WorkSpaces</a>. If you delete your Simple AD or AD
992          * Connector directory, you can always create a new one when you want to start
993          * using WorkSpaces again.</p> <p><h3>See Also:</h3>   <a
994          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeregisterWorkspaceDirectory">AWS
995          * API Reference</a></p>
996          *
997          * returns a future to the operation so that it can be executed in parallel to other requests.
998          */
999         virtual Model::DeregisterWorkspaceDirectoryOutcomeCallable DeregisterWorkspaceDirectoryCallable(const Model::DeregisterWorkspaceDirectoryRequest& request) const;
1000 
1001         /**
1002          * <p>Deregisters the specified directory. This operation is asynchronous and
1003          * returns before the WorkSpace directory is deregistered. If any WorkSpaces are
1004          * registered to this directory, you must remove them before you can deregister the
1005          * directory.</p>  <p>Simple AD and AD Connector are made available to you
1006          * free of charge to use with WorkSpaces. If there are no WorkSpaces being used
1007          * with your Simple AD or AD Connector directory for 30 consecutive days, this
1008          * directory will be automatically deregistered for use with Amazon WorkSpaces, and
1009          * you will be charged for this directory as per the <a
1010          * href="http://aws.amazon.com/directoryservice/pricing/">Directory Service pricing
1011          * terms</a>.</p> <p>To delete empty directories, see <a
1012          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/delete-workspaces-directory.html">
1013          * Delete the Directory for Your WorkSpaces</a>. If you delete your Simple AD or AD
1014          * Connector directory, you can always create a new one when you want to start
1015          * using WorkSpaces again.</p> <p><h3>See Also:</h3>   <a
1016          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeregisterWorkspaceDirectory">AWS
1017          * API Reference</a></p>
1018          *
1019          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1020          */
1021         virtual void DeregisterWorkspaceDirectoryAsync(const Model::DeregisterWorkspaceDirectoryRequest& request, const DeregisterWorkspaceDirectoryResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1022 
1023         /**
1024          * <p>Retrieves a list that describes the configuration of Bring Your Own License
1025          * (BYOL) for the specified account.</p><p><h3>See Also:</h3>   <a
1026          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeAccount">AWS
1027          * API Reference</a></p>
1028          */
1029         virtual Model::DescribeAccountOutcome DescribeAccount(const Model::DescribeAccountRequest& request) const;
1030 
1031         /**
1032          * <p>Retrieves a list that describes the configuration of Bring Your Own License
1033          * (BYOL) for the specified account.</p><p><h3>See Also:</h3>   <a
1034          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeAccount">AWS
1035          * API Reference</a></p>
1036          *
1037          * returns a future to the operation so that it can be executed in parallel to other requests.
1038          */
1039         virtual Model::DescribeAccountOutcomeCallable DescribeAccountCallable(const Model::DescribeAccountRequest& request) const;
1040 
1041         /**
1042          * <p>Retrieves a list that describes the configuration of Bring Your Own License
1043          * (BYOL) for the specified account.</p><p><h3>See Also:</h3>   <a
1044          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeAccount">AWS
1045          * API Reference</a></p>
1046          *
1047          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1048          */
1049         virtual void DescribeAccountAsync(const Model::DescribeAccountRequest& request, const DescribeAccountResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1050 
1051         /**
1052          * <p>Retrieves a list that describes modifications to the configuration of Bring
1053          * Your Own License (BYOL) for the specified account.</p><p><h3>See Also:</h3>   <a
1054          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeAccountModifications">AWS
1055          * API Reference</a></p>
1056          */
1057         virtual Model::DescribeAccountModificationsOutcome DescribeAccountModifications(const Model::DescribeAccountModificationsRequest& request) const;
1058 
1059         /**
1060          * <p>Retrieves a list that describes modifications to the configuration of Bring
1061          * Your Own License (BYOL) for the specified account.</p><p><h3>See Also:</h3>   <a
1062          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeAccountModifications">AWS
1063          * API Reference</a></p>
1064          *
1065          * returns a future to the operation so that it can be executed in parallel to other requests.
1066          */
1067         virtual Model::DescribeAccountModificationsOutcomeCallable DescribeAccountModificationsCallable(const Model::DescribeAccountModificationsRequest& request) const;
1068 
1069         /**
1070          * <p>Retrieves a list that describes modifications to the configuration of Bring
1071          * Your Own License (BYOL) for the specified account.</p><p><h3>See Also:</h3>   <a
1072          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeAccountModifications">AWS
1073          * API Reference</a></p>
1074          *
1075          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1076          */
1077         virtual void DescribeAccountModificationsAsync(const Model::DescribeAccountModificationsRequest& request, const DescribeAccountModificationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1078 
1079         /**
1080          * <p>Retrieves a list that describes one or more specified Amazon WorkSpaces
1081          * clients.</p><p><h3>See Also:</h3>   <a
1082          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeClientProperties">AWS
1083          * API Reference</a></p>
1084          */
1085         virtual Model::DescribeClientPropertiesOutcome DescribeClientProperties(const Model::DescribeClientPropertiesRequest& request) const;
1086 
1087         /**
1088          * <p>Retrieves a list that describes one or more specified Amazon WorkSpaces
1089          * clients.</p><p><h3>See Also:</h3>   <a
1090          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeClientProperties">AWS
1091          * API Reference</a></p>
1092          *
1093          * returns a future to the operation so that it can be executed in parallel to other requests.
1094          */
1095         virtual Model::DescribeClientPropertiesOutcomeCallable DescribeClientPropertiesCallable(const Model::DescribeClientPropertiesRequest& request) const;
1096 
1097         /**
1098          * <p>Retrieves a list that describes one or more specified Amazon WorkSpaces
1099          * clients.</p><p><h3>See Also:</h3>   <a
1100          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeClientProperties">AWS
1101          * API Reference</a></p>
1102          *
1103          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1104          */
1105         virtual void DescribeClientPropertiesAsync(const Model::DescribeClientPropertiesRequest& request, const DescribeClientPropertiesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1106 
1107         /**
1108          * <p>Describes the permissions that the owner of a connection alias has granted to
1109          * another Amazon Web Services account for the specified connection alias. For more
1110          * information, see <a
1111          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
1112          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p><p><h3>See Also:</h3>
1113          * <a
1114          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeConnectionAliasPermissions">AWS
1115          * API Reference</a></p>
1116          */
1117         virtual Model::DescribeConnectionAliasPermissionsOutcome DescribeConnectionAliasPermissions(const Model::DescribeConnectionAliasPermissionsRequest& request) const;
1118 
1119         /**
1120          * <p>Describes the permissions that the owner of a connection alias has granted to
1121          * another Amazon Web Services account for the specified connection alias. For more
1122          * information, see <a
1123          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
1124          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p><p><h3>See Also:</h3>
1125          * <a
1126          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeConnectionAliasPermissions">AWS
1127          * API Reference</a></p>
1128          *
1129          * returns a future to the operation so that it can be executed in parallel to other requests.
1130          */
1131         virtual Model::DescribeConnectionAliasPermissionsOutcomeCallable DescribeConnectionAliasPermissionsCallable(const Model::DescribeConnectionAliasPermissionsRequest& request) const;
1132 
1133         /**
1134          * <p>Describes the permissions that the owner of a connection alias has granted to
1135          * another Amazon Web Services account for the specified connection alias. For more
1136          * information, see <a
1137          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
1138          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p><p><h3>See Also:</h3>
1139          * <a
1140          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeConnectionAliasPermissions">AWS
1141          * API Reference</a></p>
1142          *
1143          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1144          */
1145         virtual void DescribeConnectionAliasPermissionsAsync(const Model::DescribeConnectionAliasPermissionsRequest& request, const DescribeConnectionAliasPermissionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1146 
1147         /**
1148          * <p>Retrieves a list that describes the connection aliases used for cross-Region
1149          * redirection. For more information, see <a
1150          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
1151          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p><p><h3>See Also:</h3>
1152          * <a
1153          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeConnectionAliases">AWS
1154          * API Reference</a></p>
1155          */
1156         virtual Model::DescribeConnectionAliasesOutcome DescribeConnectionAliases(const Model::DescribeConnectionAliasesRequest& request) const;
1157 
1158         /**
1159          * <p>Retrieves a list that describes the connection aliases used for cross-Region
1160          * redirection. For more information, see <a
1161          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
1162          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p><p><h3>See Also:</h3>
1163          * <a
1164          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeConnectionAliases">AWS
1165          * API Reference</a></p>
1166          *
1167          * returns a future to the operation so that it can be executed in parallel to other requests.
1168          */
1169         virtual Model::DescribeConnectionAliasesOutcomeCallable DescribeConnectionAliasesCallable(const Model::DescribeConnectionAliasesRequest& request) const;
1170 
1171         /**
1172          * <p>Retrieves a list that describes the connection aliases used for cross-Region
1173          * redirection. For more information, see <a
1174          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
1175          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p><p><h3>See Also:</h3>
1176          * <a
1177          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeConnectionAliases">AWS
1178          * API Reference</a></p>
1179          *
1180          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1181          */
1182         virtual void DescribeConnectionAliasesAsync(const Model::DescribeConnectionAliasesRequest& request, const DescribeConnectionAliasesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1183 
1184         /**
1185          * <p>Describes one or more of your IP access control groups.</p><p><h3>See
1186          * Also:</h3>   <a
1187          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeIpGroups">AWS
1188          * API Reference</a></p>
1189          */
1190         virtual Model::DescribeIpGroupsOutcome DescribeIpGroups(const Model::DescribeIpGroupsRequest& request) const;
1191 
1192         /**
1193          * <p>Describes one or more of your IP access control groups.</p><p><h3>See
1194          * Also:</h3>   <a
1195          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeIpGroups">AWS
1196          * API Reference</a></p>
1197          *
1198          * returns a future to the operation so that it can be executed in parallel to other requests.
1199          */
1200         virtual Model::DescribeIpGroupsOutcomeCallable DescribeIpGroupsCallable(const Model::DescribeIpGroupsRequest& request) const;
1201 
1202         /**
1203          * <p>Describes one or more of your IP access control groups.</p><p><h3>See
1204          * Also:</h3>   <a
1205          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeIpGroups">AWS
1206          * API Reference</a></p>
1207          *
1208          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1209          */
1210         virtual void DescribeIpGroupsAsync(const Model::DescribeIpGroupsRequest& request, const DescribeIpGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1211 
1212         /**
1213          * <p>Describes the specified tags for the specified WorkSpaces
1214          * resource.</p><p><h3>See Also:</h3>   <a
1215          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeTags">AWS
1216          * API Reference</a></p>
1217          */
1218         virtual Model::DescribeTagsOutcome DescribeTags(const Model::DescribeTagsRequest& request) const;
1219 
1220         /**
1221          * <p>Describes the specified tags for the specified WorkSpaces
1222          * resource.</p><p><h3>See Also:</h3>   <a
1223          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeTags">AWS
1224          * API Reference</a></p>
1225          *
1226          * returns a future to the operation so that it can be executed in parallel to other requests.
1227          */
1228         virtual Model::DescribeTagsOutcomeCallable DescribeTagsCallable(const Model::DescribeTagsRequest& request) const;
1229 
1230         /**
1231          * <p>Describes the specified tags for the specified WorkSpaces
1232          * resource.</p><p><h3>See Also:</h3>   <a
1233          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeTags">AWS
1234          * API Reference</a></p>
1235          *
1236          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1237          */
1238         virtual void DescribeTagsAsync(const Model::DescribeTagsRequest& request, const DescribeTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1239 
1240         /**
1241          * <p>Retrieves a list that describes the available WorkSpace bundles.</p> <p>You
1242          * can filter the results using either bundle ID or owner, but not
1243          * both.</p><p><h3>See Also:</h3>   <a
1244          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceBundles">AWS
1245          * API Reference</a></p>
1246          */
1247         virtual Model::DescribeWorkspaceBundlesOutcome DescribeWorkspaceBundles(const Model::DescribeWorkspaceBundlesRequest& request) const;
1248 
1249         /**
1250          * <p>Retrieves a list that describes the available WorkSpace bundles.</p> <p>You
1251          * can filter the results using either bundle ID or owner, but not
1252          * both.</p><p><h3>See Also:</h3>   <a
1253          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceBundles">AWS
1254          * API Reference</a></p>
1255          *
1256          * returns a future to the operation so that it can be executed in parallel to other requests.
1257          */
1258         virtual Model::DescribeWorkspaceBundlesOutcomeCallable DescribeWorkspaceBundlesCallable(const Model::DescribeWorkspaceBundlesRequest& request) const;
1259 
1260         /**
1261          * <p>Retrieves a list that describes the available WorkSpace bundles.</p> <p>You
1262          * can filter the results using either bundle ID or owner, but not
1263          * both.</p><p><h3>See Also:</h3>   <a
1264          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceBundles">AWS
1265          * API Reference</a></p>
1266          *
1267          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1268          */
1269         virtual void DescribeWorkspaceBundlesAsync(const Model::DescribeWorkspaceBundlesRequest& request, const DescribeWorkspaceBundlesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1270 
1271         /**
1272          * <p>Describes the available directories that are registered with Amazon
1273          * WorkSpaces.</p><p><h3>See Also:</h3>   <a
1274          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceDirectories">AWS
1275          * API Reference</a></p>
1276          */
1277         virtual Model::DescribeWorkspaceDirectoriesOutcome DescribeWorkspaceDirectories(const Model::DescribeWorkspaceDirectoriesRequest& request) const;
1278 
1279         /**
1280          * <p>Describes the available directories that are registered with Amazon
1281          * WorkSpaces.</p><p><h3>See Also:</h3>   <a
1282          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceDirectories">AWS
1283          * API Reference</a></p>
1284          *
1285          * returns a future to the operation so that it can be executed in parallel to other requests.
1286          */
1287         virtual Model::DescribeWorkspaceDirectoriesOutcomeCallable DescribeWorkspaceDirectoriesCallable(const Model::DescribeWorkspaceDirectoriesRequest& request) const;
1288 
1289         /**
1290          * <p>Describes the available directories that are registered with Amazon
1291          * WorkSpaces.</p><p><h3>See Also:</h3>   <a
1292          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceDirectories">AWS
1293          * API Reference</a></p>
1294          *
1295          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1296          */
1297         virtual void DescribeWorkspaceDirectoriesAsync(const Model::DescribeWorkspaceDirectoriesRequest& request, const DescribeWorkspaceDirectoriesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1298 
1299         /**
1300          * <p>Describes the permissions that the owner of an image has granted to other
1301          * Amazon Web Services accounts for an image.</p><p><h3>See Also:</h3>   <a
1302          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceImagePermissions">AWS
1303          * API Reference</a></p>
1304          */
1305         virtual Model::DescribeWorkspaceImagePermissionsOutcome DescribeWorkspaceImagePermissions(const Model::DescribeWorkspaceImagePermissionsRequest& request) const;
1306 
1307         /**
1308          * <p>Describes the permissions that the owner of an image has granted to other
1309          * Amazon Web Services accounts for an image.</p><p><h3>See Also:</h3>   <a
1310          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceImagePermissions">AWS
1311          * API Reference</a></p>
1312          *
1313          * returns a future to the operation so that it can be executed in parallel to other requests.
1314          */
1315         virtual Model::DescribeWorkspaceImagePermissionsOutcomeCallable DescribeWorkspaceImagePermissionsCallable(const Model::DescribeWorkspaceImagePermissionsRequest& request) const;
1316 
1317         /**
1318          * <p>Describes the permissions that the owner of an image has granted to other
1319          * Amazon Web Services accounts for an image.</p><p><h3>See Also:</h3>   <a
1320          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceImagePermissions">AWS
1321          * API Reference</a></p>
1322          *
1323          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1324          */
1325         virtual void DescribeWorkspaceImagePermissionsAsync(const Model::DescribeWorkspaceImagePermissionsRequest& request, const DescribeWorkspaceImagePermissionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1326 
1327         /**
1328          * <p>Retrieves a list that describes one or more specified images, if the image
1329          * identifiers are provided. Otherwise, all images in the account are described.
1330          * </p><p><h3>See Also:</h3>   <a
1331          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceImages">AWS
1332          * API Reference</a></p>
1333          */
1334         virtual Model::DescribeWorkspaceImagesOutcome DescribeWorkspaceImages(const Model::DescribeWorkspaceImagesRequest& request) const;
1335 
1336         /**
1337          * <p>Retrieves a list that describes one or more specified images, if the image
1338          * identifiers are provided. Otherwise, all images in the account are described.
1339          * </p><p><h3>See Also:</h3>   <a
1340          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceImages">AWS
1341          * API Reference</a></p>
1342          *
1343          * returns a future to the operation so that it can be executed in parallel to other requests.
1344          */
1345         virtual Model::DescribeWorkspaceImagesOutcomeCallable DescribeWorkspaceImagesCallable(const Model::DescribeWorkspaceImagesRequest& request) const;
1346 
1347         /**
1348          * <p>Retrieves a list that describes one or more specified images, if the image
1349          * identifiers are provided. Otherwise, all images in the account are described.
1350          * </p><p><h3>See Also:</h3>   <a
1351          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceImages">AWS
1352          * API Reference</a></p>
1353          *
1354          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1355          */
1356         virtual void DescribeWorkspaceImagesAsync(const Model::DescribeWorkspaceImagesRequest& request, const DescribeWorkspaceImagesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1357 
1358         /**
1359          * <p>Describes the snapshots for the specified WorkSpace.</p><p><h3>See Also:</h3>
1360          * <a
1361          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceSnapshots">AWS
1362          * API Reference</a></p>
1363          */
1364         virtual Model::DescribeWorkspaceSnapshotsOutcome DescribeWorkspaceSnapshots(const Model::DescribeWorkspaceSnapshotsRequest& request) const;
1365 
1366         /**
1367          * <p>Describes the snapshots for the specified WorkSpace.</p><p><h3>See Also:</h3>
1368          * <a
1369          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceSnapshots">AWS
1370          * API Reference</a></p>
1371          *
1372          * returns a future to the operation so that it can be executed in parallel to other requests.
1373          */
1374         virtual Model::DescribeWorkspaceSnapshotsOutcomeCallable DescribeWorkspaceSnapshotsCallable(const Model::DescribeWorkspaceSnapshotsRequest& request) const;
1375 
1376         /**
1377          * <p>Describes the snapshots for the specified WorkSpace.</p><p><h3>See Also:</h3>
1378          * <a
1379          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaceSnapshots">AWS
1380          * API Reference</a></p>
1381          *
1382          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1383          */
1384         virtual void DescribeWorkspaceSnapshotsAsync(const Model::DescribeWorkspaceSnapshotsRequest& request, const DescribeWorkspaceSnapshotsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1385 
1386         /**
1387          * <p>Describes the specified WorkSpaces.</p> <p>You can filter the results by
1388          * using the bundle identifier, directory identifier, or owner, but you can specify
1389          * only one filter at a time.</p><p><h3>See Also:</h3>   <a
1390          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaces">AWS
1391          * API Reference</a></p>
1392          */
1393         virtual Model::DescribeWorkspacesOutcome DescribeWorkspaces(const Model::DescribeWorkspacesRequest& request) const;
1394 
1395         /**
1396          * <p>Describes the specified WorkSpaces.</p> <p>You can filter the results by
1397          * using the bundle identifier, directory identifier, or owner, but you can specify
1398          * only one filter at a time.</p><p><h3>See Also:</h3>   <a
1399          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaces">AWS
1400          * API Reference</a></p>
1401          *
1402          * returns a future to the operation so that it can be executed in parallel to other requests.
1403          */
1404         virtual Model::DescribeWorkspacesOutcomeCallable DescribeWorkspacesCallable(const Model::DescribeWorkspacesRequest& request) const;
1405 
1406         /**
1407          * <p>Describes the specified WorkSpaces.</p> <p>You can filter the results by
1408          * using the bundle identifier, directory identifier, or owner, but you can specify
1409          * only one filter at a time.</p><p><h3>See Also:</h3>   <a
1410          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspaces">AWS
1411          * API Reference</a></p>
1412          *
1413          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1414          */
1415         virtual void DescribeWorkspacesAsync(const Model::DescribeWorkspacesRequest& request, const DescribeWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1416 
1417         /**
1418          * <p>Describes the connection status of the specified WorkSpaces.</p><p><h3>See
1419          * Also:</h3>   <a
1420          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspacesConnectionStatus">AWS
1421          * API Reference</a></p>
1422          */
1423         virtual Model::DescribeWorkspacesConnectionStatusOutcome DescribeWorkspacesConnectionStatus(const Model::DescribeWorkspacesConnectionStatusRequest& request) const;
1424 
1425         /**
1426          * <p>Describes the connection status of the specified WorkSpaces.</p><p><h3>See
1427          * Also:</h3>   <a
1428          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspacesConnectionStatus">AWS
1429          * API Reference</a></p>
1430          *
1431          * returns a future to the operation so that it can be executed in parallel to other requests.
1432          */
1433         virtual Model::DescribeWorkspacesConnectionStatusOutcomeCallable DescribeWorkspacesConnectionStatusCallable(const Model::DescribeWorkspacesConnectionStatusRequest& request) const;
1434 
1435         /**
1436          * <p>Describes the connection status of the specified WorkSpaces.</p><p><h3>See
1437          * Also:</h3>   <a
1438          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeWorkspacesConnectionStatus">AWS
1439          * API Reference</a></p>
1440          *
1441          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1442          */
1443         virtual void DescribeWorkspacesConnectionStatusAsync(const Model::DescribeWorkspacesConnectionStatusRequest& request, const DescribeWorkspacesConnectionStatusResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1444 
1445         /**
1446          * <p>Disassociates a connection alias from a directory. Disassociating a
1447          * connection alias disables cross-Region redirection between two directories in
1448          * different Regions. For more information, see <a
1449          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
1450          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p>  <p>Before
1451          * performing this operation, call <a
1452          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeConnectionAliases.html">
1453          * DescribeConnectionAliases</a> to make sure that the current state of the
1454          * connection alias is <code>CREATED</code>.</p> <p><h3>See Also:</h3>   <a
1455          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DisassociateConnectionAlias">AWS
1456          * API Reference</a></p>
1457          */
1458         virtual Model::DisassociateConnectionAliasOutcome DisassociateConnectionAlias(const Model::DisassociateConnectionAliasRequest& request) const;
1459 
1460         /**
1461          * <p>Disassociates a connection alias from a directory. Disassociating a
1462          * connection alias disables cross-Region redirection between two directories in
1463          * different Regions. For more information, see <a
1464          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
1465          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p>  <p>Before
1466          * performing this operation, call <a
1467          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeConnectionAliases.html">
1468          * DescribeConnectionAliases</a> to make sure that the current state of the
1469          * connection alias is <code>CREATED</code>.</p> <p><h3>See Also:</h3>   <a
1470          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DisassociateConnectionAlias">AWS
1471          * API Reference</a></p>
1472          *
1473          * returns a future to the operation so that it can be executed in parallel to other requests.
1474          */
1475         virtual Model::DisassociateConnectionAliasOutcomeCallable DisassociateConnectionAliasCallable(const Model::DisassociateConnectionAliasRequest& request) const;
1476 
1477         /**
1478          * <p>Disassociates a connection alias from a directory. Disassociating a
1479          * connection alias disables cross-Region redirection between two directories in
1480          * different Regions. For more information, see <a
1481          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
1482          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p>  <p>Before
1483          * performing this operation, call <a
1484          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeConnectionAliases.html">
1485          * DescribeConnectionAliases</a> to make sure that the current state of the
1486          * connection alias is <code>CREATED</code>.</p> <p><h3>See Also:</h3>   <a
1487          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DisassociateConnectionAlias">AWS
1488          * API Reference</a></p>
1489          *
1490          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1491          */
1492         virtual void DisassociateConnectionAliasAsync(const Model::DisassociateConnectionAliasRequest& request, const DisassociateConnectionAliasResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1493 
1494         /**
1495          * <p>Disassociates the specified IP access control group from the specified
1496          * directory.</p><p><h3>See Also:</h3>   <a
1497          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DisassociateIpGroups">AWS
1498          * API Reference</a></p>
1499          */
1500         virtual Model::DisassociateIpGroupsOutcome DisassociateIpGroups(const Model::DisassociateIpGroupsRequest& request) const;
1501 
1502         /**
1503          * <p>Disassociates the specified IP access control group from the specified
1504          * directory.</p><p><h3>See Also:</h3>   <a
1505          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DisassociateIpGroups">AWS
1506          * API Reference</a></p>
1507          *
1508          * returns a future to the operation so that it can be executed in parallel to other requests.
1509          */
1510         virtual Model::DisassociateIpGroupsOutcomeCallable DisassociateIpGroupsCallable(const Model::DisassociateIpGroupsRequest& request) const;
1511 
1512         /**
1513          * <p>Disassociates the specified IP access control group from the specified
1514          * directory.</p><p><h3>See Also:</h3>   <a
1515          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DisassociateIpGroups">AWS
1516          * API Reference</a></p>
1517          *
1518          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1519          */
1520         virtual void DisassociateIpGroupsAsync(const Model::DisassociateIpGroupsRequest& request, const DisassociateIpGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1521 
1522         /**
1523          * <p>Imports the specified Windows 10 Bring Your Own License (BYOL) image into
1524          * Amazon WorkSpaces. The image must be an already licensed Amazon EC2 image that
1525          * is in your Amazon Web Services account, and you must own the image. For more
1526          * information about creating BYOL images, see <a
1527          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/byol-windows-images.html">
1528          * Bring Your Own Windows Desktop Licenses</a>.</p><p><h3>See Also:</h3>   <a
1529          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ImportWorkspaceImage">AWS
1530          * API Reference</a></p>
1531          */
1532         virtual Model::ImportWorkspaceImageOutcome ImportWorkspaceImage(const Model::ImportWorkspaceImageRequest& request) const;
1533 
1534         /**
1535          * <p>Imports the specified Windows 10 Bring Your Own License (BYOL) image into
1536          * Amazon WorkSpaces. The image must be an already licensed Amazon EC2 image that
1537          * is in your Amazon Web Services account, and you must own the image. For more
1538          * information about creating BYOL images, see <a
1539          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/byol-windows-images.html">
1540          * Bring Your Own Windows Desktop Licenses</a>.</p><p><h3>See Also:</h3>   <a
1541          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ImportWorkspaceImage">AWS
1542          * API Reference</a></p>
1543          *
1544          * returns a future to the operation so that it can be executed in parallel to other requests.
1545          */
1546         virtual Model::ImportWorkspaceImageOutcomeCallable ImportWorkspaceImageCallable(const Model::ImportWorkspaceImageRequest& request) const;
1547 
1548         /**
1549          * <p>Imports the specified Windows 10 Bring Your Own License (BYOL) image into
1550          * Amazon WorkSpaces. The image must be an already licensed Amazon EC2 image that
1551          * is in your Amazon Web Services account, and you must own the image. For more
1552          * information about creating BYOL images, see <a
1553          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/byol-windows-images.html">
1554          * Bring Your Own Windows Desktop Licenses</a>.</p><p><h3>See Also:</h3>   <a
1555          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ImportWorkspaceImage">AWS
1556          * API Reference</a></p>
1557          *
1558          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1559          */
1560         virtual void ImportWorkspaceImageAsync(const Model::ImportWorkspaceImageRequest& request, const ImportWorkspaceImageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1561 
1562         /**
1563          * <p>Retrieves a list of IP address ranges, specified as IPv4 CIDR blocks, that
1564          * you can use for the network management interface when you enable Bring Your Own
1565          * License (BYOL). </p> <p>This operation can be run only by Amazon Web Services
1566          * accounts that are enabled for BYOL. If your account isn't enabled for BYOL,
1567          * you'll receive an <code>AccessDeniedException</code> error.</p> <p>The
1568          * management network interface is connected to a secure Amazon WorkSpaces
1569          * management network. It is used for interactive streaming of the WorkSpace
1570          * desktop to Amazon WorkSpaces clients, and to allow Amazon WorkSpaces to manage
1571          * the WorkSpace.</p><p><h3>See Also:</h3>   <a
1572          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ListAvailableManagementCidrRanges">AWS
1573          * API Reference</a></p>
1574          */
1575         virtual Model::ListAvailableManagementCidrRangesOutcome ListAvailableManagementCidrRanges(const Model::ListAvailableManagementCidrRangesRequest& request) const;
1576 
1577         /**
1578          * <p>Retrieves a list of IP address ranges, specified as IPv4 CIDR blocks, that
1579          * you can use for the network management interface when you enable Bring Your Own
1580          * License (BYOL). </p> <p>This operation can be run only by Amazon Web Services
1581          * accounts that are enabled for BYOL. If your account isn't enabled for BYOL,
1582          * you'll receive an <code>AccessDeniedException</code> error.</p> <p>The
1583          * management network interface is connected to a secure Amazon WorkSpaces
1584          * management network. It is used for interactive streaming of the WorkSpace
1585          * desktop to Amazon WorkSpaces clients, and to allow Amazon WorkSpaces to manage
1586          * the WorkSpace.</p><p><h3>See Also:</h3>   <a
1587          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ListAvailableManagementCidrRanges">AWS
1588          * API Reference</a></p>
1589          *
1590          * returns a future to the operation so that it can be executed in parallel to other requests.
1591          */
1592         virtual Model::ListAvailableManagementCidrRangesOutcomeCallable ListAvailableManagementCidrRangesCallable(const Model::ListAvailableManagementCidrRangesRequest& request) const;
1593 
1594         /**
1595          * <p>Retrieves a list of IP address ranges, specified as IPv4 CIDR blocks, that
1596          * you can use for the network management interface when you enable Bring Your Own
1597          * License (BYOL). </p> <p>This operation can be run only by Amazon Web Services
1598          * accounts that are enabled for BYOL. If your account isn't enabled for BYOL,
1599          * you'll receive an <code>AccessDeniedException</code> error.</p> <p>The
1600          * management network interface is connected to a secure Amazon WorkSpaces
1601          * management network. It is used for interactive streaming of the WorkSpace
1602          * desktop to Amazon WorkSpaces clients, and to allow Amazon WorkSpaces to manage
1603          * the WorkSpace.</p><p><h3>See Also:</h3>   <a
1604          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ListAvailableManagementCidrRanges">AWS
1605          * API Reference</a></p>
1606          *
1607          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1608          */
1609         virtual void ListAvailableManagementCidrRangesAsync(const Model::ListAvailableManagementCidrRangesRequest& request, const ListAvailableManagementCidrRangesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1610 
1611         /**
1612          * <p>Migrates a WorkSpace from one operating system or bundle type to another,
1613          * while retaining the data on the user volume.</p> <p>The migration process
1614          * recreates the WorkSpace by using a new root volume from the target bundle image
1615          * and the user volume from the last available snapshot of the original WorkSpace.
1616          * During migration, the original <code>D:\Users\%USERNAME%</code> user profile
1617          * folder is renamed to <code>D:\Users\%USERNAME%MMddyyTHHmmss%.NotMigrated</code>.
1618          * A new <code>D:\Users\%USERNAME%\</code> folder is generated by the new OS.
1619          * Certain files in the old user profile are moved to the new user profile.</p>
1620          * <p>For available migration scenarios, details about what happens during
1621          * migration, and best practices, see <a
1622          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/migrate-workspaces.html">Migrate
1623          * a WorkSpace</a>.</p><p><h3>See Also:</h3>   <a
1624          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/MigrateWorkspace">AWS
1625          * API Reference</a></p>
1626          */
1627         virtual Model::MigrateWorkspaceOutcome MigrateWorkspace(const Model::MigrateWorkspaceRequest& request) const;
1628 
1629         /**
1630          * <p>Migrates a WorkSpace from one operating system or bundle type to another,
1631          * while retaining the data on the user volume.</p> <p>The migration process
1632          * recreates the WorkSpace by using a new root volume from the target bundle image
1633          * and the user volume from the last available snapshot of the original WorkSpace.
1634          * During migration, the original <code>D:\Users\%USERNAME%</code> user profile
1635          * folder is renamed to <code>D:\Users\%USERNAME%MMddyyTHHmmss%.NotMigrated</code>.
1636          * A new <code>D:\Users\%USERNAME%\</code> folder is generated by the new OS.
1637          * Certain files in the old user profile are moved to the new user profile.</p>
1638          * <p>For available migration scenarios, details about what happens during
1639          * migration, and best practices, see <a
1640          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/migrate-workspaces.html">Migrate
1641          * a WorkSpace</a>.</p><p><h3>See Also:</h3>   <a
1642          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/MigrateWorkspace">AWS
1643          * API Reference</a></p>
1644          *
1645          * returns a future to the operation so that it can be executed in parallel to other requests.
1646          */
1647         virtual Model::MigrateWorkspaceOutcomeCallable MigrateWorkspaceCallable(const Model::MigrateWorkspaceRequest& request) const;
1648 
1649         /**
1650          * <p>Migrates a WorkSpace from one operating system or bundle type to another,
1651          * while retaining the data on the user volume.</p> <p>The migration process
1652          * recreates the WorkSpace by using a new root volume from the target bundle image
1653          * and the user volume from the last available snapshot of the original WorkSpace.
1654          * During migration, the original <code>D:\Users\%USERNAME%</code> user profile
1655          * folder is renamed to <code>D:\Users\%USERNAME%MMddyyTHHmmss%.NotMigrated</code>.
1656          * A new <code>D:\Users\%USERNAME%\</code> folder is generated by the new OS.
1657          * Certain files in the old user profile are moved to the new user profile.</p>
1658          * <p>For available migration scenarios, details about what happens during
1659          * migration, and best practices, see <a
1660          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/migrate-workspaces.html">Migrate
1661          * a WorkSpace</a>.</p><p><h3>See Also:</h3>   <a
1662          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/MigrateWorkspace">AWS
1663          * API Reference</a></p>
1664          *
1665          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1666          */
1667         virtual void MigrateWorkspaceAsync(const Model::MigrateWorkspaceRequest& request, const MigrateWorkspaceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1668 
1669         /**
1670          * <p>Modifies the configuration of Bring Your Own License (BYOL) for the specified
1671          * account.</p><p><h3>See Also:</h3>   <a
1672          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyAccount">AWS
1673          * API Reference</a></p>
1674          */
1675         virtual Model::ModifyAccountOutcome ModifyAccount(const Model::ModifyAccountRequest& request) const;
1676 
1677         /**
1678          * <p>Modifies the configuration of Bring Your Own License (BYOL) for the specified
1679          * account.</p><p><h3>See Also:</h3>   <a
1680          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyAccount">AWS
1681          * API Reference</a></p>
1682          *
1683          * returns a future to the operation so that it can be executed in parallel to other requests.
1684          */
1685         virtual Model::ModifyAccountOutcomeCallable ModifyAccountCallable(const Model::ModifyAccountRequest& request) const;
1686 
1687         /**
1688          * <p>Modifies the configuration of Bring Your Own License (BYOL) for the specified
1689          * account.</p><p><h3>See Also:</h3>   <a
1690          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyAccount">AWS
1691          * API Reference</a></p>
1692          *
1693          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1694          */
1695         virtual void ModifyAccountAsync(const Model::ModifyAccountRequest& request, const ModifyAccountResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1696 
1697         /**
1698          * <p>Modifies the properties of the specified Amazon WorkSpaces
1699          * clients.</p><p><h3>See Also:</h3>   <a
1700          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyClientProperties">AWS
1701          * API Reference</a></p>
1702          */
1703         virtual Model::ModifyClientPropertiesOutcome ModifyClientProperties(const Model::ModifyClientPropertiesRequest& request) const;
1704 
1705         /**
1706          * <p>Modifies the properties of the specified Amazon WorkSpaces
1707          * clients.</p><p><h3>See Also:</h3>   <a
1708          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyClientProperties">AWS
1709          * API Reference</a></p>
1710          *
1711          * returns a future to the operation so that it can be executed in parallel to other requests.
1712          */
1713         virtual Model::ModifyClientPropertiesOutcomeCallable ModifyClientPropertiesCallable(const Model::ModifyClientPropertiesRequest& request) const;
1714 
1715         /**
1716          * <p>Modifies the properties of the specified Amazon WorkSpaces
1717          * clients.</p><p><h3>See Also:</h3>   <a
1718          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyClientProperties">AWS
1719          * API Reference</a></p>
1720          *
1721          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1722          */
1723         virtual void ModifyClientPropertiesAsync(const Model::ModifyClientPropertiesRequest& request, const ModifyClientPropertiesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1724 
1725         /**
1726          * <p>Modifies the self-service WorkSpace management capabilities for your users.
1727          * For more information, see <a
1728          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/enable-user-self-service-workspace-management.html">Enable
1729          * Self-Service WorkSpace Management Capabilities for Your Users</a>.</p><p><h3>See
1730          * Also:</h3>   <a
1731          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifySelfservicePermissions">AWS
1732          * API Reference</a></p>
1733          */
1734         virtual Model::ModifySelfservicePermissionsOutcome ModifySelfservicePermissions(const Model::ModifySelfservicePermissionsRequest& request) const;
1735 
1736         /**
1737          * <p>Modifies the self-service WorkSpace management capabilities for your users.
1738          * For more information, see <a
1739          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/enable-user-self-service-workspace-management.html">Enable
1740          * Self-Service WorkSpace Management Capabilities for Your Users</a>.</p><p><h3>See
1741          * Also:</h3>   <a
1742          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifySelfservicePermissions">AWS
1743          * API Reference</a></p>
1744          *
1745          * returns a future to the operation so that it can be executed in parallel to other requests.
1746          */
1747         virtual Model::ModifySelfservicePermissionsOutcomeCallable ModifySelfservicePermissionsCallable(const Model::ModifySelfservicePermissionsRequest& request) const;
1748 
1749         /**
1750          * <p>Modifies the self-service WorkSpace management capabilities for your users.
1751          * For more information, see <a
1752          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/enable-user-self-service-workspace-management.html">Enable
1753          * Self-Service WorkSpace Management Capabilities for Your Users</a>.</p><p><h3>See
1754          * Also:</h3>   <a
1755          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifySelfservicePermissions">AWS
1756          * API Reference</a></p>
1757          *
1758          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1759          */
1760         virtual void ModifySelfservicePermissionsAsync(const Model::ModifySelfservicePermissionsRequest& request, const ModifySelfservicePermissionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1761 
1762         /**
1763          * <p>Specifies which devices and operating systems users can use to access their
1764          * WorkSpaces. For more information, see <a
1765          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/update-directory-details.html#control-device-access">
1766          * Control Device Access</a>.</p><p><h3>See Also:</h3>   <a
1767          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceAccessProperties">AWS
1768          * API Reference</a></p>
1769          */
1770         virtual Model::ModifyWorkspaceAccessPropertiesOutcome ModifyWorkspaceAccessProperties(const Model::ModifyWorkspaceAccessPropertiesRequest& request) const;
1771 
1772         /**
1773          * <p>Specifies which devices and operating systems users can use to access their
1774          * WorkSpaces. For more information, see <a
1775          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/update-directory-details.html#control-device-access">
1776          * Control Device Access</a>.</p><p><h3>See Also:</h3>   <a
1777          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceAccessProperties">AWS
1778          * API Reference</a></p>
1779          *
1780          * returns a future to the operation so that it can be executed in parallel to other requests.
1781          */
1782         virtual Model::ModifyWorkspaceAccessPropertiesOutcomeCallable ModifyWorkspaceAccessPropertiesCallable(const Model::ModifyWorkspaceAccessPropertiesRequest& request) const;
1783 
1784         /**
1785          * <p>Specifies which devices and operating systems users can use to access their
1786          * WorkSpaces. For more information, see <a
1787          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/update-directory-details.html#control-device-access">
1788          * Control Device Access</a>.</p><p><h3>See Also:</h3>   <a
1789          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceAccessProperties">AWS
1790          * API Reference</a></p>
1791          *
1792          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1793          */
1794         virtual void ModifyWorkspaceAccessPropertiesAsync(const Model::ModifyWorkspaceAccessPropertiesRequest& request, const ModifyWorkspaceAccessPropertiesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1795 
1796         /**
1797          * <p>Modify the default properties used to create WorkSpaces.</p><p><h3>See
1798          * Also:</h3>   <a
1799          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceCreationProperties">AWS
1800          * API Reference</a></p>
1801          */
1802         virtual Model::ModifyWorkspaceCreationPropertiesOutcome ModifyWorkspaceCreationProperties(const Model::ModifyWorkspaceCreationPropertiesRequest& request) const;
1803 
1804         /**
1805          * <p>Modify the default properties used to create WorkSpaces.</p><p><h3>See
1806          * Also:</h3>   <a
1807          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceCreationProperties">AWS
1808          * API Reference</a></p>
1809          *
1810          * returns a future to the operation so that it can be executed in parallel to other requests.
1811          */
1812         virtual Model::ModifyWorkspaceCreationPropertiesOutcomeCallable ModifyWorkspaceCreationPropertiesCallable(const Model::ModifyWorkspaceCreationPropertiesRequest& request) const;
1813 
1814         /**
1815          * <p>Modify the default properties used to create WorkSpaces.</p><p><h3>See
1816          * Also:</h3>   <a
1817          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceCreationProperties">AWS
1818          * API Reference</a></p>
1819          *
1820          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1821          */
1822         virtual void ModifyWorkspaceCreationPropertiesAsync(const Model::ModifyWorkspaceCreationPropertiesRequest& request, const ModifyWorkspaceCreationPropertiesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1823 
1824         /**
1825          * <p>Modifies the specified WorkSpace properties. For important information about
1826          * how to modify the size of the root and user volumes, see <a
1827          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/modify-workspaces.html">
1828          * Modify a WorkSpace</a>. </p><p><h3>See Also:</h3>   <a
1829          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceProperties">AWS
1830          * API Reference</a></p>
1831          */
1832         virtual Model::ModifyWorkspacePropertiesOutcome ModifyWorkspaceProperties(const Model::ModifyWorkspacePropertiesRequest& request) const;
1833 
1834         /**
1835          * <p>Modifies the specified WorkSpace properties. For important information about
1836          * how to modify the size of the root and user volumes, see <a
1837          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/modify-workspaces.html">
1838          * Modify a WorkSpace</a>. </p><p><h3>See Also:</h3>   <a
1839          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceProperties">AWS
1840          * API Reference</a></p>
1841          *
1842          * returns a future to the operation so that it can be executed in parallel to other requests.
1843          */
1844         virtual Model::ModifyWorkspacePropertiesOutcomeCallable ModifyWorkspacePropertiesCallable(const Model::ModifyWorkspacePropertiesRequest& request) const;
1845 
1846         /**
1847          * <p>Modifies the specified WorkSpace properties. For important information about
1848          * how to modify the size of the root and user volumes, see <a
1849          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/modify-workspaces.html">
1850          * Modify a WorkSpace</a>. </p><p><h3>See Also:</h3>   <a
1851          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceProperties">AWS
1852          * API Reference</a></p>
1853          *
1854          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1855          */
1856         virtual void ModifyWorkspacePropertiesAsync(const Model::ModifyWorkspacePropertiesRequest& request, const ModifyWorkspacePropertiesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1857 
1858         /**
1859          * <p>Sets the state of the specified WorkSpace.</p> <p>To maintain a WorkSpace
1860          * without being interrupted, set the WorkSpace state to
1861          * <code>ADMIN_MAINTENANCE</code>. WorkSpaces in this state do not respond to
1862          * requests to reboot, stop, start, rebuild, or restore. An AutoStop WorkSpace in
1863          * this state is not stopped. Users cannot log into a WorkSpace in the
1864          * <code>ADMIN_MAINTENANCE</code> state.</p><p><h3>See Also:</h3>   <a
1865          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceState">AWS
1866          * API Reference</a></p>
1867          */
1868         virtual Model::ModifyWorkspaceStateOutcome ModifyWorkspaceState(const Model::ModifyWorkspaceStateRequest& request) const;
1869 
1870         /**
1871          * <p>Sets the state of the specified WorkSpace.</p> <p>To maintain a WorkSpace
1872          * without being interrupted, set the WorkSpace state to
1873          * <code>ADMIN_MAINTENANCE</code>. WorkSpaces in this state do not respond to
1874          * requests to reboot, stop, start, rebuild, or restore. An AutoStop WorkSpace in
1875          * this state is not stopped. Users cannot log into a WorkSpace in the
1876          * <code>ADMIN_MAINTENANCE</code> state.</p><p><h3>See Also:</h3>   <a
1877          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceState">AWS
1878          * API Reference</a></p>
1879          *
1880          * returns a future to the operation so that it can be executed in parallel to other requests.
1881          */
1882         virtual Model::ModifyWorkspaceStateOutcomeCallable ModifyWorkspaceStateCallable(const Model::ModifyWorkspaceStateRequest& request) const;
1883 
1884         /**
1885          * <p>Sets the state of the specified WorkSpace.</p> <p>To maintain a WorkSpace
1886          * without being interrupted, set the WorkSpace state to
1887          * <code>ADMIN_MAINTENANCE</code>. WorkSpaces in this state do not respond to
1888          * requests to reboot, stop, start, rebuild, or restore. An AutoStop WorkSpace in
1889          * this state is not stopped. Users cannot log into a WorkSpace in the
1890          * <code>ADMIN_MAINTENANCE</code> state.</p><p><h3>See Also:</h3>   <a
1891          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ModifyWorkspaceState">AWS
1892          * API Reference</a></p>
1893          *
1894          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1895          */
1896         virtual void ModifyWorkspaceStateAsync(const Model::ModifyWorkspaceStateRequest& request, const ModifyWorkspaceStateResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1897 
1898         /**
1899          * <p>Reboots the specified WorkSpaces.</p> <p>You cannot reboot a WorkSpace unless
1900          * its state is <code>AVAILABLE</code> or <code>UNHEALTHY</code>.</p> <p>This
1901          * operation is asynchronous and returns before the WorkSpaces have
1902          * rebooted.</p><p><h3>See Also:</h3>   <a
1903          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RebootWorkspaces">AWS
1904          * API Reference</a></p>
1905          */
1906         virtual Model::RebootWorkspacesOutcome RebootWorkspaces(const Model::RebootWorkspacesRequest& request) const;
1907 
1908         /**
1909          * <p>Reboots the specified WorkSpaces.</p> <p>You cannot reboot a WorkSpace unless
1910          * its state is <code>AVAILABLE</code> or <code>UNHEALTHY</code>.</p> <p>This
1911          * operation is asynchronous and returns before the WorkSpaces have
1912          * rebooted.</p><p><h3>See Also:</h3>   <a
1913          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RebootWorkspaces">AWS
1914          * API Reference</a></p>
1915          *
1916          * returns a future to the operation so that it can be executed in parallel to other requests.
1917          */
1918         virtual Model::RebootWorkspacesOutcomeCallable RebootWorkspacesCallable(const Model::RebootWorkspacesRequest& request) const;
1919 
1920         /**
1921          * <p>Reboots the specified WorkSpaces.</p> <p>You cannot reboot a WorkSpace unless
1922          * its state is <code>AVAILABLE</code> or <code>UNHEALTHY</code>.</p> <p>This
1923          * operation is asynchronous and returns before the WorkSpaces have
1924          * rebooted.</p><p><h3>See Also:</h3>   <a
1925          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RebootWorkspaces">AWS
1926          * API Reference</a></p>
1927          *
1928          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1929          */
1930         virtual void RebootWorkspacesAsync(const Model::RebootWorkspacesRequest& request, const RebootWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1931 
1932         /**
1933          * <p>Rebuilds the specified WorkSpace.</p> <p>You cannot rebuild a WorkSpace
1934          * unless its state is <code>AVAILABLE</code>, <code>ERROR</code>,
1935          * <code>UNHEALTHY</code>, <code>STOPPED</code>, or <code>REBOOTING</code>.</p>
1936          * <p>Rebuilding a WorkSpace is a potentially destructive action that can result in
1937          * the loss of data. For more information, see <a
1938          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/reset-workspace.html">Rebuild
1939          * a WorkSpace</a>.</p> <p>This operation is asynchronous and returns before the
1940          * WorkSpaces have been completely rebuilt.</p><p><h3>See Also:</h3>   <a
1941          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RebuildWorkspaces">AWS
1942          * API Reference</a></p>
1943          */
1944         virtual Model::RebuildWorkspacesOutcome RebuildWorkspaces(const Model::RebuildWorkspacesRequest& request) const;
1945 
1946         /**
1947          * <p>Rebuilds the specified WorkSpace.</p> <p>You cannot rebuild a WorkSpace
1948          * unless its state is <code>AVAILABLE</code>, <code>ERROR</code>,
1949          * <code>UNHEALTHY</code>, <code>STOPPED</code>, or <code>REBOOTING</code>.</p>
1950          * <p>Rebuilding a WorkSpace is a potentially destructive action that can result in
1951          * the loss of data. For more information, see <a
1952          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/reset-workspace.html">Rebuild
1953          * a WorkSpace</a>.</p> <p>This operation is asynchronous and returns before the
1954          * WorkSpaces have been completely rebuilt.</p><p><h3>See Also:</h3>   <a
1955          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RebuildWorkspaces">AWS
1956          * API Reference</a></p>
1957          *
1958          * returns a future to the operation so that it can be executed in parallel to other requests.
1959          */
1960         virtual Model::RebuildWorkspacesOutcomeCallable RebuildWorkspacesCallable(const Model::RebuildWorkspacesRequest& request) const;
1961 
1962         /**
1963          * <p>Rebuilds the specified WorkSpace.</p> <p>You cannot rebuild a WorkSpace
1964          * unless its state is <code>AVAILABLE</code>, <code>ERROR</code>,
1965          * <code>UNHEALTHY</code>, <code>STOPPED</code>, or <code>REBOOTING</code>.</p>
1966          * <p>Rebuilding a WorkSpace is a potentially destructive action that can result in
1967          * the loss of data. For more information, see <a
1968          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/reset-workspace.html">Rebuild
1969          * a WorkSpace</a>.</p> <p>This operation is asynchronous and returns before the
1970          * WorkSpaces have been completely rebuilt.</p><p><h3>See Also:</h3>   <a
1971          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RebuildWorkspaces">AWS
1972          * API Reference</a></p>
1973          *
1974          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1975          */
1976         virtual void RebuildWorkspacesAsync(const Model::RebuildWorkspacesRequest& request, const RebuildWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1977 
1978         /**
1979          * <p>Registers the specified directory. This operation is asynchronous and returns
1980          * before the WorkSpace directory is registered. If this is the first time you are
1981          * registering a directory, you will need to create the workspaces_DefaultRole role
1982          * before you can register a directory. For more information, see <a
1983          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/workspaces-access-control.html#create-default-role">
1984          * Creating the workspaces_DefaultRole Role</a>.</p><p><h3>See Also:</h3>   <a
1985          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RegisterWorkspaceDirectory">AWS
1986          * API Reference</a></p>
1987          */
1988         virtual Model::RegisterWorkspaceDirectoryOutcome RegisterWorkspaceDirectory(const Model::RegisterWorkspaceDirectoryRequest& request) const;
1989 
1990         /**
1991          * <p>Registers the specified directory. This operation is asynchronous and returns
1992          * before the WorkSpace directory is registered. If this is the first time you are
1993          * registering a directory, you will need to create the workspaces_DefaultRole role
1994          * before you can register a directory. For more information, see <a
1995          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/workspaces-access-control.html#create-default-role">
1996          * Creating the workspaces_DefaultRole Role</a>.</p><p><h3>See Also:</h3>   <a
1997          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RegisterWorkspaceDirectory">AWS
1998          * API Reference</a></p>
1999          *
2000          * returns a future to the operation so that it can be executed in parallel to other requests.
2001          */
2002         virtual Model::RegisterWorkspaceDirectoryOutcomeCallable RegisterWorkspaceDirectoryCallable(const Model::RegisterWorkspaceDirectoryRequest& request) const;
2003 
2004         /**
2005          * <p>Registers the specified directory. This operation is asynchronous and returns
2006          * before the WorkSpace directory is registered. If this is the first time you are
2007          * registering a directory, you will need to create the workspaces_DefaultRole role
2008          * before you can register a directory. For more information, see <a
2009          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/workspaces-access-control.html#create-default-role">
2010          * Creating the workspaces_DefaultRole Role</a>.</p><p><h3>See Also:</h3>   <a
2011          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RegisterWorkspaceDirectory">AWS
2012          * API Reference</a></p>
2013          *
2014          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2015          */
2016         virtual void RegisterWorkspaceDirectoryAsync(const Model::RegisterWorkspaceDirectoryRequest& request, const RegisterWorkspaceDirectoryResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2017 
2018         /**
2019          * <p>Restores the specified WorkSpace to its last known healthy state.</p> <p>You
2020          * cannot restore a WorkSpace unless its state is <code> AVAILABLE</code>,
2021          * <code>ERROR</code>, <code>UNHEALTHY</code>, or <code>STOPPED</code>.</p>
2022          * <p>Restoring a WorkSpace is a potentially destructive action that can result in
2023          * the loss of data. For more information, see <a
2024          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/restore-workspace.html">Restore
2025          * a WorkSpace</a>.</p> <p>This operation is asynchronous and returns before the
2026          * WorkSpace is completely restored.</p><p><h3>See Also:</h3>   <a
2027          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RestoreWorkspace">AWS
2028          * API Reference</a></p>
2029          */
2030         virtual Model::RestoreWorkspaceOutcome RestoreWorkspace(const Model::RestoreWorkspaceRequest& request) const;
2031 
2032         /**
2033          * <p>Restores the specified WorkSpace to its last known healthy state.</p> <p>You
2034          * cannot restore a WorkSpace unless its state is <code> AVAILABLE</code>,
2035          * <code>ERROR</code>, <code>UNHEALTHY</code>, or <code>STOPPED</code>.</p>
2036          * <p>Restoring a WorkSpace is a potentially destructive action that can result in
2037          * the loss of data. For more information, see <a
2038          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/restore-workspace.html">Restore
2039          * a WorkSpace</a>.</p> <p>This operation is asynchronous and returns before the
2040          * WorkSpace is completely restored.</p><p><h3>See Also:</h3>   <a
2041          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RestoreWorkspace">AWS
2042          * API Reference</a></p>
2043          *
2044          * returns a future to the operation so that it can be executed in parallel to other requests.
2045          */
2046         virtual Model::RestoreWorkspaceOutcomeCallable RestoreWorkspaceCallable(const Model::RestoreWorkspaceRequest& request) const;
2047 
2048         /**
2049          * <p>Restores the specified WorkSpace to its last known healthy state.</p> <p>You
2050          * cannot restore a WorkSpace unless its state is <code> AVAILABLE</code>,
2051          * <code>ERROR</code>, <code>UNHEALTHY</code>, or <code>STOPPED</code>.</p>
2052          * <p>Restoring a WorkSpace is a potentially destructive action that can result in
2053          * the loss of data. For more information, see <a
2054          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/restore-workspace.html">Restore
2055          * a WorkSpace</a>.</p> <p>This operation is asynchronous and returns before the
2056          * WorkSpace is completely restored.</p><p><h3>See Also:</h3>   <a
2057          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RestoreWorkspace">AWS
2058          * API Reference</a></p>
2059          *
2060          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2061          */
2062         virtual void RestoreWorkspaceAsync(const Model::RestoreWorkspaceRequest& request, const RestoreWorkspaceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2063 
2064         /**
2065          * <p>Removes one or more rules from the specified IP access control
2066          * group.</p><p><h3>See Also:</h3>   <a
2067          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RevokeIpRules">AWS
2068          * API Reference</a></p>
2069          */
2070         virtual Model::RevokeIpRulesOutcome RevokeIpRules(const Model::RevokeIpRulesRequest& request) const;
2071 
2072         /**
2073          * <p>Removes one or more rules from the specified IP access control
2074          * group.</p><p><h3>See Also:</h3>   <a
2075          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RevokeIpRules">AWS
2076          * API Reference</a></p>
2077          *
2078          * returns a future to the operation so that it can be executed in parallel to other requests.
2079          */
2080         virtual Model::RevokeIpRulesOutcomeCallable RevokeIpRulesCallable(const Model::RevokeIpRulesRequest& request) const;
2081 
2082         /**
2083          * <p>Removes one or more rules from the specified IP access control
2084          * group.</p><p><h3>See Also:</h3>   <a
2085          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RevokeIpRules">AWS
2086          * API Reference</a></p>
2087          *
2088          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2089          */
2090         virtual void RevokeIpRulesAsync(const Model::RevokeIpRulesRequest& request, const RevokeIpRulesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2091 
2092         /**
2093          * <p>Starts the specified WorkSpaces.</p> <p>You cannot start a WorkSpace unless
2094          * it has a running mode of <code>AutoStop</code> and a state of
2095          * <code>STOPPED</code>.</p><p><h3>See Also:</h3>   <a
2096          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StartWorkspaces">AWS
2097          * API Reference</a></p>
2098          */
2099         virtual Model::StartWorkspacesOutcome StartWorkspaces(const Model::StartWorkspacesRequest& request) const;
2100 
2101         /**
2102          * <p>Starts the specified WorkSpaces.</p> <p>You cannot start a WorkSpace unless
2103          * it has a running mode of <code>AutoStop</code> and a state of
2104          * <code>STOPPED</code>.</p><p><h3>See Also:</h3>   <a
2105          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StartWorkspaces">AWS
2106          * API Reference</a></p>
2107          *
2108          * returns a future to the operation so that it can be executed in parallel to other requests.
2109          */
2110         virtual Model::StartWorkspacesOutcomeCallable StartWorkspacesCallable(const Model::StartWorkspacesRequest& request) const;
2111 
2112         /**
2113          * <p>Starts the specified WorkSpaces.</p> <p>You cannot start a WorkSpace unless
2114          * it has a running mode of <code>AutoStop</code> and a state of
2115          * <code>STOPPED</code>.</p><p><h3>See Also:</h3>   <a
2116          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StartWorkspaces">AWS
2117          * API Reference</a></p>
2118          *
2119          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2120          */
2121         virtual void StartWorkspacesAsync(const Model::StartWorkspacesRequest& request, const StartWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2122 
2123         /**
2124          * <p> Stops the specified WorkSpaces.</p> <p>You cannot stop a WorkSpace unless it
2125          * has a running mode of <code>AutoStop</code> and a state of
2126          * <code>AVAILABLE</code>, <code>IMPAIRED</code>, <code>UNHEALTHY</code>, or
2127          * <code>ERROR</code>.</p><p><h3>See Also:</h3>   <a
2128          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StopWorkspaces">AWS
2129          * API Reference</a></p>
2130          */
2131         virtual Model::StopWorkspacesOutcome StopWorkspaces(const Model::StopWorkspacesRequest& request) const;
2132 
2133         /**
2134          * <p> Stops the specified WorkSpaces.</p> <p>You cannot stop a WorkSpace unless it
2135          * has a running mode of <code>AutoStop</code> and a state of
2136          * <code>AVAILABLE</code>, <code>IMPAIRED</code>, <code>UNHEALTHY</code>, or
2137          * <code>ERROR</code>.</p><p><h3>See Also:</h3>   <a
2138          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StopWorkspaces">AWS
2139          * API Reference</a></p>
2140          *
2141          * returns a future to the operation so that it can be executed in parallel to other requests.
2142          */
2143         virtual Model::StopWorkspacesOutcomeCallable StopWorkspacesCallable(const Model::StopWorkspacesRequest& request) const;
2144 
2145         /**
2146          * <p> Stops the specified WorkSpaces.</p> <p>You cannot stop a WorkSpace unless it
2147          * has a running mode of <code>AutoStop</code> and a state of
2148          * <code>AVAILABLE</code>, <code>IMPAIRED</code>, <code>UNHEALTHY</code>, or
2149          * <code>ERROR</code>.</p><p><h3>See Also:</h3>   <a
2150          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/StopWorkspaces">AWS
2151          * API Reference</a></p>
2152          *
2153          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2154          */
2155         virtual void StopWorkspacesAsync(const Model::StopWorkspacesRequest& request, const StopWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2156 
2157         /**
2158          * <p>Terminates the specified WorkSpaces.</p>  <p>Terminating a
2159          * WorkSpace is a permanent action and cannot be undone. The user's data is
2160          * destroyed. If you need to archive any user data, contact Amazon Web Services
2161          * Support before terminating the WorkSpace.</p>  <p>You can terminate
2162          * a WorkSpace that is in any state except <code>SUSPENDED</code>.</p> <p>This
2163          * operation is asynchronous and returns before the WorkSpaces have been completely
2164          * terminated. After a WorkSpace is terminated, the <code>TERMINATED</code> state
2165          * is returned only briefly before the WorkSpace directory metadata is cleaned up,
2166          * so this state is rarely returned. To confirm that a WorkSpace is terminated,
2167          * check for the WorkSpace ID by using <a
2168          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaces.html">
2169          * DescribeWorkSpaces</a>. If the WorkSpace ID isn't returned, then the WorkSpace
2170          * has been successfully terminated.</p>  <p>Simple AD and AD Connector are
2171          * made available to you free of charge to use with WorkSpaces. If there are no
2172          * WorkSpaces being used with your Simple AD or AD Connector directory for 30
2173          * consecutive days, this directory will be automatically deregistered for use with
2174          * Amazon WorkSpaces, and you will be charged for this directory as per the <a
2175          * href="http://aws.amazon.com/directoryservice/pricing/">Directory Service pricing
2176          * terms</a>.</p> <p>To delete empty directories, see <a
2177          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/delete-workspaces-directory.html">
2178          * Delete the Directory for Your WorkSpaces</a>. If you delete your Simple AD or AD
2179          * Connector directory, you can always create a new one when you want to start
2180          * using WorkSpaces again.</p> <p><h3>See Also:</h3>   <a
2181          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/TerminateWorkspaces">AWS
2182          * API Reference</a></p>
2183          */
2184         virtual Model::TerminateWorkspacesOutcome TerminateWorkspaces(const Model::TerminateWorkspacesRequest& request) const;
2185 
2186         /**
2187          * <p>Terminates the specified WorkSpaces.</p>  <p>Terminating a
2188          * WorkSpace is a permanent action and cannot be undone. The user's data is
2189          * destroyed. If you need to archive any user data, contact Amazon Web Services
2190          * Support before terminating the WorkSpace.</p>  <p>You can terminate
2191          * a WorkSpace that is in any state except <code>SUSPENDED</code>.</p> <p>This
2192          * operation is asynchronous and returns before the WorkSpaces have been completely
2193          * terminated. After a WorkSpace is terminated, the <code>TERMINATED</code> state
2194          * is returned only briefly before the WorkSpace directory metadata is cleaned up,
2195          * so this state is rarely returned. To confirm that a WorkSpace is terminated,
2196          * check for the WorkSpace ID by using <a
2197          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaces.html">
2198          * DescribeWorkSpaces</a>. If the WorkSpace ID isn't returned, then the WorkSpace
2199          * has been successfully terminated.</p>  <p>Simple AD and AD Connector are
2200          * made available to you free of charge to use with WorkSpaces. If there are no
2201          * WorkSpaces being used with your Simple AD or AD Connector directory for 30
2202          * consecutive days, this directory will be automatically deregistered for use with
2203          * Amazon WorkSpaces, and you will be charged for this directory as per the <a
2204          * href="http://aws.amazon.com/directoryservice/pricing/">Directory Service pricing
2205          * terms</a>.</p> <p>To delete empty directories, see <a
2206          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/delete-workspaces-directory.html">
2207          * Delete the Directory for Your WorkSpaces</a>. If you delete your Simple AD or AD
2208          * Connector directory, you can always create a new one when you want to start
2209          * using WorkSpaces again.</p> <p><h3>See Also:</h3>   <a
2210          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/TerminateWorkspaces">AWS
2211          * API Reference</a></p>
2212          *
2213          * returns a future to the operation so that it can be executed in parallel to other requests.
2214          */
2215         virtual Model::TerminateWorkspacesOutcomeCallable TerminateWorkspacesCallable(const Model::TerminateWorkspacesRequest& request) const;
2216 
2217         /**
2218          * <p>Terminates the specified WorkSpaces.</p>  <p>Terminating a
2219          * WorkSpace is a permanent action and cannot be undone. The user's data is
2220          * destroyed. If you need to archive any user data, contact Amazon Web Services
2221          * Support before terminating the WorkSpace.</p>  <p>You can terminate
2222          * a WorkSpace that is in any state except <code>SUSPENDED</code>.</p> <p>This
2223          * operation is asynchronous and returns before the WorkSpaces have been completely
2224          * terminated. After a WorkSpace is terminated, the <code>TERMINATED</code> state
2225          * is returned only briefly before the WorkSpace directory metadata is cleaned up,
2226          * so this state is rarely returned. To confirm that a WorkSpace is terminated,
2227          * check for the WorkSpace ID by using <a
2228          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeWorkspaces.html">
2229          * DescribeWorkSpaces</a>. If the WorkSpace ID isn't returned, then the WorkSpace
2230          * has been successfully terminated.</p>  <p>Simple AD and AD Connector are
2231          * made available to you free of charge to use with WorkSpaces. If there are no
2232          * WorkSpaces being used with your Simple AD or AD Connector directory for 30
2233          * consecutive days, this directory will be automatically deregistered for use with
2234          * Amazon WorkSpaces, and you will be charged for this directory as per the <a
2235          * href="http://aws.amazon.com/directoryservice/pricing/">Directory Service pricing
2236          * terms</a>.</p> <p>To delete empty directories, see <a
2237          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/delete-workspaces-directory.html">
2238          * Delete the Directory for Your WorkSpaces</a>. If you delete your Simple AD or AD
2239          * Connector directory, you can always create a new one when you want to start
2240          * using WorkSpaces again.</p> <p><h3>See Also:</h3>   <a
2241          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/TerminateWorkspaces">AWS
2242          * API Reference</a></p>
2243          *
2244          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2245          */
2246         virtual void TerminateWorkspacesAsync(const Model::TerminateWorkspacesRequest& request, const TerminateWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2247 
2248         /**
2249          * <p>Shares or unshares a connection alias with one account by specifying whether
2250          * that account has permission to associate the connection alias with a directory.
2251          * If the association permission is granted, the connection alias is shared with
2252          * that account. If the association permission is revoked, the connection alias is
2253          * unshared with the account. For more information, see <a
2254          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
2255          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p>  <ul> <li>
2256          * <p>Before performing this operation, call <a
2257          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeConnectionAliases.html">
2258          * DescribeConnectionAliases</a> to make sure that the current state of the
2259          * connection alias is <code>CREATED</code>.</p> </li> <li> <p>To delete a
2260          * connection alias that has been shared, the shared account must first
2261          * disassociate the connection alias from any directories it has been associated
2262          * with. Then you must unshare the connection alias from the account it has been
2263          * shared with. You can delete a connection alias only after it is no longer shared
2264          * with any accounts or associated with any directories.</p> </li> </ul>
2265          * <p><h3>See Also:</h3>   <a
2266          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateConnectionAliasPermission">AWS
2267          * API Reference</a></p>
2268          */
2269         virtual Model::UpdateConnectionAliasPermissionOutcome UpdateConnectionAliasPermission(const Model::UpdateConnectionAliasPermissionRequest& request) const;
2270 
2271         /**
2272          * <p>Shares or unshares a connection alias with one account by specifying whether
2273          * that account has permission to associate the connection alias with a directory.
2274          * If the association permission is granted, the connection alias is shared with
2275          * that account. If the association permission is revoked, the connection alias is
2276          * unshared with the account. For more information, see <a
2277          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
2278          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p>  <ul> <li>
2279          * <p>Before performing this operation, call <a
2280          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeConnectionAliases.html">
2281          * DescribeConnectionAliases</a> to make sure that the current state of the
2282          * connection alias is <code>CREATED</code>.</p> </li> <li> <p>To delete a
2283          * connection alias that has been shared, the shared account must first
2284          * disassociate the connection alias from any directories it has been associated
2285          * with. Then you must unshare the connection alias from the account it has been
2286          * shared with. You can delete a connection alias only after it is no longer shared
2287          * with any accounts or associated with any directories.</p> </li> </ul>
2288          * <p><h3>See Also:</h3>   <a
2289          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateConnectionAliasPermission">AWS
2290          * API Reference</a></p>
2291          *
2292          * returns a future to the operation so that it can be executed in parallel to other requests.
2293          */
2294         virtual Model::UpdateConnectionAliasPermissionOutcomeCallable UpdateConnectionAliasPermissionCallable(const Model::UpdateConnectionAliasPermissionRequest& request) const;
2295 
2296         /**
2297          * <p>Shares or unshares a connection alias with one account by specifying whether
2298          * that account has permission to associate the connection alias with a directory.
2299          * If the association permission is granted, the connection alias is shared with
2300          * that account. If the association permission is revoked, the connection alias is
2301          * unshared with the account. For more information, see <a
2302          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/cross-region-redirection.html">
2303          * Cross-Region Redirection for Amazon WorkSpaces</a>.</p>  <ul> <li>
2304          * <p>Before performing this operation, call <a
2305          * href="https://docs.aws.amazon.com/workspaces/latest/api/API_DescribeConnectionAliases.html">
2306          * DescribeConnectionAliases</a> to make sure that the current state of the
2307          * connection alias is <code>CREATED</code>.</p> </li> <li> <p>To delete a
2308          * connection alias that has been shared, the shared account must first
2309          * disassociate the connection alias from any directories it has been associated
2310          * with. Then you must unshare the connection alias from the account it has been
2311          * shared with. You can delete a connection alias only after it is no longer shared
2312          * with any accounts or associated with any directories.</p> </li> </ul>
2313          * <p><h3>See Also:</h3>   <a
2314          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateConnectionAliasPermission">AWS
2315          * API Reference</a></p>
2316          *
2317          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2318          */
2319         virtual void UpdateConnectionAliasPermissionAsync(const Model::UpdateConnectionAliasPermissionRequest& request, const UpdateConnectionAliasPermissionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2320 
2321         /**
2322          * <p>Replaces the current rules of the specified IP access control group with the
2323          * specified rules.</p><p><h3>See Also:</h3>   <a
2324          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateRulesOfIpGroup">AWS
2325          * API Reference</a></p>
2326          */
2327         virtual Model::UpdateRulesOfIpGroupOutcome UpdateRulesOfIpGroup(const Model::UpdateRulesOfIpGroupRequest& request) const;
2328 
2329         /**
2330          * <p>Replaces the current rules of the specified IP access control group with the
2331          * specified rules.</p><p><h3>See Also:</h3>   <a
2332          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateRulesOfIpGroup">AWS
2333          * API Reference</a></p>
2334          *
2335          * returns a future to the operation so that it can be executed in parallel to other requests.
2336          */
2337         virtual Model::UpdateRulesOfIpGroupOutcomeCallable UpdateRulesOfIpGroupCallable(const Model::UpdateRulesOfIpGroupRequest& request) const;
2338 
2339         /**
2340          * <p>Replaces the current rules of the specified IP access control group with the
2341          * specified rules.</p><p><h3>See Also:</h3>   <a
2342          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateRulesOfIpGroup">AWS
2343          * API Reference</a></p>
2344          *
2345          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2346          */
2347         virtual void UpdateRulesOfIpGroupAsync(const Model::UpdateRulesOfIpGroupRequest& request, const UpdateRulesOfIpGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2348 
2349         /**
2350          * <p>Updates a WorkSpace bundle with a new image. For more information about
2351          * updating WorkSpace bundles, see <a
2352          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/update-custom-bundle.html">
2353          * Update a Custom WorkSpaces Bundle</a>.</p>  <p>Existing WorkSpaces
2354          * aren't automatically updated when you update the bundle that they're based on.
2355          * To update existing WorkSpaces that are based on a bundle that you've updated,
2356          * you must either rebuild the WorkSpaces or delete and recreate them.</p>
2357          * <p><h3>See Also:</h3>   <a
2358          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateWorkspaceBundle">AWS
2359          * API Reference</a></p>
2360          */
2361         virtual Model::UpdateWorkspaceBundleOutcome UpdateWorkspaceBundle(const Model::UpdateWorkspaceBundleRequest& request) const;
2362 
2363         /**
2364          * <p>Updates a WorkSpace bundle with a new image. For more information about
2365          * updating WorkSpace bundles, see <a
2366          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/update-custom-bundle.html">
2367          * Update a Custom WorkSpaces Bundle</a>.</p>  <p>Existing WorkSpaces
2368          * aren't automatically updated when you update the bundle that they're based on.
2369          * To update existing WorkSpaces that are based on a bundle that you've updated,
2370          * you must either rebuild the WorkSpaces or delete and recreate them.</p>
2371          * <p><h3>See Also:</h3>   <a
2372          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateWorkspaceBundle">AWS
2373          * API Reference</a></p>
2374          *
2375          * returns a future to the operation so that it can be executed in parallel to other requests.
2376          */
2377         virtual Model::UpdateWorkspaceBundleOutcomeCallable UpdateWorkspaceBundleCallable(const Model::UpdateWorkspaceBundleRequest& request) const;
2378 
2379         /**
2380          * <p>Updates a WorkSpace bundle with a new image. For more information about
2381          * updating WorkSpace bundles, see <a
2382          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/update-custom-bundle.html">
2383          * Update a Custom WorkSpaces Bundle</a>.</p>  <p>Existing WorkSpaces
2384          * aren't automatically updated when you update the bundle that they're based on.
2385          * To update existing WorkSpaces that are based on a bundle that you've updated,
2386          * you must either rebuild the WorkSpaces or delete and recreate them.</p>
2387          * <p><h3>See Also:</h3>   <a
2388          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateWorkspaceBundle">AWS
2389          * API Reference</a></p>
2390          *
2391          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2392          */
2393         virtual void UpdateWorkspaceBundleAsync(const Model::UpdateWorkspaceBundleRequest& request, const UpdateWorkspaceBundleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2394 
2395         /**
2396          * <p>Shares or unshares an image with one account in the same Amazon Web Services
2397          * Region by specifying whether that account has permission to copy the image. If
2398          * the copy image permission is granted, the image is shared with that account. If
2399          * the copy image permission is revoked, the image is unshared with the
2400          * account.</p> <p>After an image has been shared, the recipient account can copy
2401          * the image to other Regions as needed.</p> <p>In the China (Ningxia) Region, you
2402          * can copy images only within the same Region.</p> <p>In Amazon Web Services
2403          * GovCloud (US), to copy images to and from other Regions, contact Amazon Web
2404          * Services Support.</p> <p>For more information about sharing images, see <a
2405          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/share-custom-image.html">
2406          * Share or Unshare a Custom WorkSpaces Image</a>.</p>  <ul> <li> <p>To
2407          * delete an image that has been shared, you must unshare the image before you
2408          * delete it.</p> </li> <li> <p>Sharing Bring Your Own License (BYOL) images across
2409          * Amazon Web Services accounts isn't supported at this time in Amazon Web Services
2410          * GovCloud (US). To share BYOL images across accounts in Amazon Web Services
2411          * GovCloud (US), contact Amazon Web Services Support.</p> </li> </ul>
2412          * <p><h3>See Also:</h3>   <a
2413          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateWorkspaceImagePermission">AWS
2414          * API Reference</a></p>
2415          */
2416         virtual Model::UpdateWorkspaceImagePermissionOutcome UpdateWorkspaceImagePermission(const Model::UpdateWorkspaceImagePermissionRequest& request) const;
2417 
2418         /**
2419          * <p>Shares or unshares an image with one account in the same Amazon Web Services
2420          * Region by specifying whether that account has permission to copy the image. If
2421          * the copy image permission is granted, the image is shared with that account. If
2422          * the copy image permission is revoked, the image is unshared with the
2423          * account.</p> <p>After an image has been shared, the recipient account can copy
2424          * the image to other Regions as needed.</p> <p>In the China (Ningxia) Region, you
2425          * can copy images only within the same Region.</p> <p>In Amazon Web Services
2426          * GovCloud (US), to copy images to and from other Regions, contact Amazon Web
2427          * Services Support.</p> <p>For more information about sharing images, see <a
2428          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/share-custom-image.html">
2429          * Share or Unshare a Custom WorkSpaces Image</a>.</p>  <ul> <li> <p>To
2430          * delete an image that has been shared, you must unshare the image before you
2431          * delete it.</p> </li> <li> <p>Sharing Bring Your Own License (BYOL) images across
2432          * Amazon Web Services accounts isn't supported at this time in Amazon Web Services
2433          * GovCloud (US). To share BYOL images across accounts in Amazon Web Services
2434          * GovCloud (US), contact Amazon Web Services Support.</p> </li> </ul>
2435          * <p><h3>See Also:</h3>   <a
2436          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateWorkspaceImagePermission">AWS
2437          * API Reference</a></p>
2438          *
2439          * returns a future to the operation so that it can be executed in parallel to other requests.
2440          */
2441         virtual Model::UpdateWorkspaceImagePermissionOutcomeCallable UpdateWorkspaceImagePermissionCallable(const Model::UpdateWorkspaceImagePermissionRequest& request) const;
2442 
2443         /**
2444          * <p>Shares or unshares an image with one account in the same Amazon Web Services
2445          * Region by specifying whether that account has permission to copy the image. If
2446          * the copy image permission is granted, the image is shared with that account. If
2447          * the copy image permission is revoked, the image is unshared with the
2448          * account.</p> <p>After an image has been shared, the recipient account can copy
2449          * the image to other Regions as needed.</p> <p>In the China (Ningxia) Region, you
2450          * can copy images only within the same Region.</p> <p>In Amazon Web Services
2451          * GovCloud (US), to copy images to and from other Regions, contact Amazon Web
2452          * Services Support.</p> <p>For more information about sharing images, see <a
2453          * href="https://docs.aws.amazon.com/workspaces/latest/adminguide/share-custom-image.html">
2454          * Share or Unshare a Custom WorkSpaces Image</a>.</p>  <ul> <li> <p>To
2455          * delete an image that has been shared, you must unshare the image before you
2456          * delete it.</p> </li> <li> <p>Sharing Bring Your Own License (BYOL) images across
2457          * Amazon Web Services accounts isn't supported at this time in Amazon Web Services
2458          * GovCloud (US). To share BYOL images across accounts in Amazon Web Services
2459          * GovCloud (US), contact Amazon Web Services Support.</p> </li> </ul>
2460          * <p><h3>See Also:</h3>   <a
2461          * href="http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/UpdateWorkspaceImagePermission">AWS
2462          * API Reference</a></p>
2463          *
2464          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2465          */
2466         virtual void UpdateWorkspaceImagePermissionAsync(const Model::UpdateWorkspaceImagePermissionRequest& request, const UpdateWorkspaceImagePermissionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2467 
2468 
2469       void OverrideEndpoint(const Aws::String& endpoint);
2470     private:
2471       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
2472         void AssociateConnectionAliasAsyncHelper(const Model::AssociateConnectionAliasRequest& request, const AssociateConnectionAliasResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2473         void AssociateIpGroupsAsyncHelper(const Model::AssociateIpGroupsRequest& request, const AssociateIpGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2474         void AuthorizeIpRulesAsyncHelper(const Model::AuthorizeIpRulesRequest& request, const AuthorizeIpRulesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2475         void CopyWorkspaceImageAsyncHelper(const Model::CopyWorkspaceImageRequest& request, const CopyWorkspaceImageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2476         void CreateConnectionAliasAsyncHelper(const Model::CreateConnectionAliasRequest& request, const CreateConnectionAliasResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2477         void CreateIpGroupAsyncHelper(const Model::CreateIpGroupRequest& request, const CreateIpGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2478         void CreateTagsAsyncHelper(const Model::CreateTagsRequest& request, const CreateTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2479         void CreateUpdatedWorkspaceImageAsyncHelper(const Model::CreateUpdatedWorkspaceImageRequest& request, const CreateUpdatedWorkspaceImageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2480         void CreateWorkspaceBundleAsyncHelper(const Model::CreateWorkspaceBundleRequest& request, const CreateWorkspaceBundleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2481         void CreateWorkspacesAsyncHelper(const Model::CreateWorkspacesRequest& request, const CreateWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2482         void DeleteConnectionAliasAsyncHelper(const Model::DeleteConnectionAliasRequest& request, const DeleteConnectionAliasResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2483         void DeleteIpGroupAsyncHelper(const Model::DeleteIpGroupRequest& request, const DeleteIpGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2484         void DeleteTagsAsyncHelper(const Model::DeleteTagsRequest& request, const DeleteTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2485         void DeleteWorkspaceBundleAsyncHelper(const Model::DeleteWorkspaceBundleRequest& request, const DeleteWorkspaceBundleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2486         void DeleteWorkspaceImageAsyncHelper(const Model::DeleteWorkspaceImageRequest& request, const DeleteWorkspaceImageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2487         void DeregisterWorkspaceDirectoryAsyncHelper(const Model::DeregisterWorkspaceDirectoryRequest& request, const DeregisterWorkspaceDirectoryResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2488         void DescribeAccountAsyncHelper(const Model::DescribeAccountRequest& request, const DescribeAccountResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2489         void DescribeAccountModificationsAsyncHelper(const Model::DescribeAccountModificationsRequest& request, const DescribeAccountModificationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2490         void DescribeClientPropertiesAsyncHelper(const Model::DescribeClientPropertiesRequest& request, const DescribeClientPropertiesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2491         void DescribeConnectionAliasPermissionsAsyncHelper(const Model::DescribeConnectionAliasPermissionsRequest& request, const DescribeConnectionAliasPermissionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2492         void DescribeConnectionAliasesAsyncHelper(const Model::DescribeConnectionAliasesRequest& request, const DescribeConnectionAliasesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2493         void DescribeIpGroupsAsyncHelper(const Model::DescribeIpGroupsRequest& request, const DescribeIpGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2494         void DescribeTagsAsyncHelper(const Model::DescribeTagsRequest& request, const DescribeTagsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2495         void DescribeWorkspaceBundlesAsyncHelper(const Model::DescribeWorkspaceBundlesRequest& request, const DescribeWorkspaceBundlesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2496         void DescribeWorkspaceDirectoriesAsyncHelper(const Model::DescribeWorkspaceDirectoriesRequest& request, const DescribeWorkspaceDirectoriesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2497         void DescribeWorkspaceImagePermissionsAsyncHelper(const Model::DescribeWorkspaceImagePermissionsRequest& request, const DescribeWorkspaceImagePermissionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2498         void DescribeWorkspaceImagesAsyncHelper(const Model::DescribeWorkspaceImagesRequest& request, const DescribeWorkspaceImagesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2499         void DescribeWorkspaceSnapshotsAsyncHelper(const Model::DescribeWorkspaceSnapshotsRequest& request, const DescribeWorkspaceSnapshotsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2500         void DescribeWorkspacesAsyncHelper(const Model::DescribeWorkspacesRequest& request, const DescribeWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2501         void DescribeWorkspacesConnectionStatusAsyncHelper(const Model::DescribeWorkspacesConnectionStatusRequest& request, const DescribeWorkspacesConnectionStatusResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2502         void DisassociateConnectionAliasAsyncHelper(const Model::DisassociateConnectionAliasRequest& request, const DisassociateConnectionAliasResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2503         void DisassociateIpGroupsAsyncHelper(const Model::DisassociateIpGroupsRequest& request, const DisassociateIpGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2504         void ImportWorkspaceImageAsyncHelper(const Model::ImportWorkspaceImageRequest& request, const ImportWorkspaceImageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2505         void ListAvailableManagementCidrRangesAsyncHelper(const Model::ListAvailableManagementCidrRangesRequest& request, const ListAvailableManagementCidrRangesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2506         void MigrateWorkspaceAsyncHelper(const Model::MigrateWorkspaceRequest& request, const MigrateWorkspaceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2507         void ModifyAccountAsyncHelper(const Model::ModifyAccountRequest& request, const ModifyAccountResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2508         void ModifyClientPropertiesAsyncHelper(const Model::ModifyClientPropertiesRequest& request, const ModifyClientPropertiesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2509         void ModifySelfservicePermissionsAsyncHelper(const Model::ModifySelfservicePermissionsRequest& request, const ModifySelfservicePermissionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2510         void ModifyWorkspaceAccessPropertiesAsyncHelper(const Model::ModifyWorkspaceAccessPropertiesRequest& request, const ModifyWorkspaceAccessPropertiesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2511         void ModifyWorkspaceCreationPropertiesAsyncHelper(const Model::ModifyWorkspaceCreationPropertiesRequest& request, const ModifyWorkspaceCreationPropertiesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2512         void ModifyWorkspacePropertiesAsyncHelper(const Model::ModifyWorkspacePropertiesRequest& request, const ModifyWorkspacePropertiesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2513         void ModifyWorkspaceStateAsyncHelper(const Model::ModifyWorkspaceStateRequest& request, const ModifyWorkspaceStateResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2514         void RebootWorkspacesAsyncHelper(const Model::RebootWorkspacesRequest& request, const RebootWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2515         void RebuildWorkspacesAsyncHelper(const Model::RebuildWorkspacesRequest& request, const RebuildWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2516         void RegisterWorkspaceDirectoryAsyncHelper(const Model::RegisterWorkspaceDirectoryRequest& request, const RegisterWorkspaceDirectoryResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2517         void RestoreWorkspaceAsyncHelper(const Model::RestoreWorkspaceRequest& request, const RestoreWorkspaceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2518         void RevokeIpRulesAsyncHelper(const Model::RevokeIpRulesRequest& request, const RevokeIpRulesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2519         void StartWorkspacesAsyncHelper(const Model::StartWorkspacesRequest& request, const StartWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2520         void StopWorkspacesAsyncHelper(const Model::StopWorkspacesRequest& request, const StopWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2521         void TerminateWorkspacesAsyncHelper(const Model::TerminateWorkspacesRequest& request, const TerminateWorkspacesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2522         void UpdateConnectionAliasPermissionAsyncHelper(const Model::UpdateConnectionAliasPermissionRequest& request, const UpdateConnectionAliasPermissionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2523         void UpdateRulesOfIpGroupAsyncHelper(const Model::UpdateRulesOfIpGroupRequest& request, const UpdateRulesOfIpGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2524         void UpdateWorkspaceBundleAsyncHelper(const Model::UpdateWorkspaceBundleRequest& request, const UpdateWorkspaceBundleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2525         void UpdateWorkspaceImagePermissionAsyncHelper(const Model::UpdateWorkspaceImagePermissionRequest& request, const UpdateWorkspaceImagePermissionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2526 
2527       Aws::String m_uri;
2528       Aws::String m_configScheme;
2529       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
2530   };
2531 
2532 } // namespace WorkSpaces
2533 } // namespace Aws
2534