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/workmail/WorkMail_EXPORTS.h>
8 #include <aws/workmail/WorkMailErrors.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/workmail/model/AssociateDelegateToResourceResult.h>
15 #include <aws/workmail/model/AssociateMemberToGroupResult.h>
16 #include <aws/workmail/model/CancelMailboxExportJobResult.h>
17 #include <aws/workmail/model/CreateAliasResult.h>
18 #include <aws/workmail/model/CreateGroupResult.h>
19 #include <aws/workmail/model/CreateMobileDeviceAccessRuleResult.h>
20 #include <aws/workmail/model/CreateOrganizationResult.h>
21 #include <aws/workmail/model/CreateResourceResult.h>
22 #include <aws/workmail/model/CreateUserResult.h>
23 #include <aws/workmail/model/DeleteAccessControlRuleResult.h>
24 #include <aws/workmail/model/DeleteAliasResult.h>
25 #include <aws/workmail/model/DeleteGroupResult.h>
26 #include <aws/workmail/model/DeleteMailboxPermissionsResult.h>
27 #include <aws/workmail/model/DeleteMobileDeviceAccessOverrideResult.h>
28 #include <aws/workmail/model/DeleteMobileDeviceAccessRuleResult.h>
29 #include <aws/workmail/model/DeleteOrganizationResult.h>
30 #include <aws/workmail/model/DeleteResourceResult.h>
31 #include <aws/workmail/model/DeleteRetentionPolicyResult.h>
32 #include <aws/workmail/model/DeleteUserResult.h>
33 #include <aws/workmail/model/DeregisterFromWorkMailResult.h>
34 #include <aws/workmail/model/DeregisterMailDomainResult.h>
35 #include <aws/workmail/model/DescribeGroupResult.h>
36 #include <aws/workmail/model/DescribeInboundDmarcSettingsResult.h>
37 #include <aws/workmail/model/DescribeMailboxExportJobResult.h>
38 #include <aws/workmail/model/DescribeOrganizationResult.h>
39 #include <aws/workmail/model/DescribeResourceResult.h>
40 #include <aws/workmail/model/DescribeUserResult.h>
41 #include <aws/workmail/model/DisassociateDelegateFromResourceResult.h>
42 #include <aws/workmail/model/DisassociateMemberFromGroupResult.h>
43 #include <aws/workmail/model/GetAccessControlEffectResult.h>
44 #include <aws/workmail/model/GetDefaultRetentionPolicyResult.h>
45 #include <aws/workmail/model/GetMailDomainResult.h>
46 #include <aws/workmail/model/GetMailboxDetailsResult.h>
47 #include <aws/workmail/model/GetMobileDeviceAccessEffectResult.h>
48 #include <aws/workmail/model/GetMobileDeviceAccessOverrideResult.h>
49 #include <aws/workmail/model/ListAccessControlRulesResult.h>
50 #include <aws/workmail/model/ListAliasesResult.h>
51 #include <aws/workmail/model/ListGroupMembersResult.h>
52 #include <aws/workmail/model/ListGroupsResult.h>
53 #include <aws/workmail/model/ListMailDomainsResult.h>
54 #include <aws/workmail/model/ListMailboxExportJobsResult.h>
55 #include <aws/workmail/model/ListMailboxPermissionsResult.h>
56 #include <aws/workmail/model/ListMobileDeviceAccessOverridesResult.h>
57 #include <aws/workmail/model/ListMobileDeviceAccessRulesResult.h>
58 #include <aws/workmail/model/ListOrganizationsResult.h>
59 #include <aws/workmail/model/ListResourceDelegatesResult.h>
60 #include <aws/workmail/model/ListResourcesResult.h>
61 #include <aws/workmail/model/ListTagsForResourceResult.h>
62 #include <aws/workmail/model/ListUsersResult.h>
63 #include <aws/workmail/model/PutAccessControlRuleResult.h>
64 #include <aws/workmail/model/PutInboundDmarcSettingsResult.h>
65 #include <aws/workmail/model/PutMailboxPermissionsResult.h>
66 #include <aws/workmail/model/PutMobileDeviceAccessOverrideResult.h>
67 #include <aws/workmail/model/PutRetentionPolicyResult.h>
68 #include <aws/workmail/model/RegisterMailDomainResult.h>
69 #include <aws/workmail/model/RegisterToWorkMailResult.h>
70 #include <aws/workmail/model/ResetPasswordResult.h>
71 #include <aws/workmail/model/StartMailboxExportJobResult.h>
72 #include <aws/workmail/model/TagResourceResult.h>
73 #include <aws/workmail/model/UntagResourceResult.h>
74 #include <aws/workmail/model/UpdateDefaultMailDomainResult.h>
75 #include <aws/workmail/model/UpdateMailboxQuotaResult.h>
76 #include <aws/workmail/model/UpdateMobileDeviceAccessRuleResult.h>
77 #include <aws/workmail/model/UpdatePrimaryEmailAddressResult.h>
78 #include <aws/workmail/model/UpdateResourceResult.h>
79 #include <aws/core/client/AsyncCallerContext.h>
80 #include <aws/core/http/HttpTypes.h>
81 #include <future>
82 #include <functional>
83 
84 namespace Aws
85 {
86 
87 namespace Http
88 {
89   class HttpClient;
90   class HttpClientFactory;
91 } // namespace Http
92 
93 namespace Utils
94 {
95   template< typename R, typename E> class Outcome;
96 namespace Threading
97 {
98   class Executor;
99 } // namespace Threading
100 } // namespace Utils
101 
102 namespace Auth
103 {
104   class AWSCredentials;
105   class AWSCredentialsProvider;
106 } // namespace Auth
107 
108 namespace Client
109 {
110   class RetryStrategy;
111 } // namespace Client
112 
113 namespace WorkMail
114 {
115 
116 namespace Model
117 {
118         class AssociateDelegateToResourceRequest;
119         class AssociateMemberToGroupRequest;
120         class CancelMailboxExportJobRequest;
121         class CreateAliasRequest;
122         class CreateGroupRequest;
123         class CreateMobileDeviceAccessRuleRequest;
124         class CreateOrganizationRequest;
125         class CreateResourceRequest;
126         class CreateUserRequest;
127         class DeleteAccessControlRuleRequest;
128         class DeleteAliasRequest;
129         class DeleteGroupRequest;
130         class DeleteMailboxPermissionsRequest;
131         class DeleteMobileDeviceAccessOverrideRequest;
132         class DeleteMobileDeviceAccessRuleRequest;
133         class DeleteOrganizationRequest;
134         class DeleteResourceRequest;
135         class DeleteRetentionPolicyRequest;
136         class DeleteUserRequest;
137         class DeregisterFromWorkMailRequest;
138         class DeregisterMailDomainRequest;
139         class DescribeGroupRequest;
140         class DescribeInboundDmarcSettingsRequest;
141         class DescribeMailboxExportJobRequest;
142         class DescribeOrganizationRequest;
143         class DescribeResourceRequest;
144         class DescribeUserRequest;
145         class DisassociateDelegateFromResourceRequest;
146         class DisassociateMemberFromGroupRequest;
147         class GetAccessControlEffectRequest;
148         class GetDefaultRetentionPolicyRequest;
149         class GetMailDomainRequest;
150         class GetMailboxDetailsRequest;
151         class GetMobileDeviceAccessEffectRequest;
152         class GetMobileDeviceAccessOverrideRequest;
153         class ListAccessControlRulesRequest;
154         class ListAliasesRequest;
155         class ListGroupMembersRequest;
156         class ListGroupsRequest;
157         class ListMailDomainsRequest;
158         class ListMailboxExportJobsRequest;
159         class ListMailboxPermissionsRequest;
160         class ListMobileDeviceAccessOverridesRequest;
161         class ListMobileDeviceAccessRulesRequest;
162         class ListOrganizationsRequest;
163         class ListResourceDelegatesRequest;
164         class ListResourcesRequest;
165         class ListTagsForResourceRequest;
166         class ListUsersRequest;
167         class PutAccessControlRuleRequest;
168         class PutInboundDmarcSettingsRequest;
169         class PutMailboxPermissionsRequest;
170         class PutMobileDeviceAccessOverrideRequest;
171         class PutRetentionPolicyRequest;
172         class RegisterMailDomainRequest;
173         class RegisterToWorkMailRequest;
174         class ResetPasswordRequest;
175         class StartMailboxExportJobRequest;
176         class TagResourceRequest;
177         class UntagResourceRequest;
178         class UpdateDefaultMailDomainRequest;
179         class UpdateMailboxQuotaRequest;
180         class UpdateMobileDeviceAccessRuleRequest;
181         class UpdatePrimaryEmailAddressRequest;
182         class UpdateResourceRequest;
183 
184         typedef Aws::Utils::Outcome<AssociateDelegateToResourceResult, WorkMailError> AssociateDelegateToResourceOutcome;
185         typedef Aws::Utils::Outcome<AssociateMemberToGroupResult, WorkMailError> AssociateMemberToGroupOutcome;
186         typedef Aws::Utils::Outcome<CancelMailboxExportJobResult, WorkMailError> CancelMailboxExportJobOutcome;
187         typedef Aws::Utils::Outcome<CreateAliasResult, WorkMailError> CreateAliasOutcome;
188         typedef Aws::Utils::Outcome<CreateGroupResult, WorkMailError> CreateGroupOutcome;
189         typedef Aws::Utils::Outcome<CreateMobileDeviceAccessRuleResult, WorkMailError> CreateMobileDeviceAccessRuleOutcome;
190         typedef Aws::Utils::Outcome<CreateOrganizationResult, WorkMailError> CreateOrganizationOutcome;
191         typedef Aws::Utils::Outcome<CreateResourceResult, WorkMailError> CreateResourceOutcome;
192         typedef Aws::Utils::Outcome<CreateUserResult, WorkMailError> CreateUserOutcome;
193         typedef Aws::Utils::Outcome<DeleteAccessControlRuleResult, WorkMailError> DeleteAccessControlRuleOutcome;
194         typedef Aws::Utils::Outcome<DeleteAliasResult, WorkMailError> DeleteAliasOutcome;
195         typedef Aws::Utils::Outcome<DeleteGroupResult, WorkMailError> DeleteGroupOutcome;
196         typedef Aws::Utils::Outcome<DeleteMailboxPermissionsResult, WorkMailError> DeleteMailboxPermissionsOutcome;
197         typedef Aws::Utils::Outcome<DeleteMobileDeviceAccessOverrideResult, WorkMailError> DeleteMobileDeviceAccessOverrideOutcome;
198         typedef Aws::Utils::Outcome<DeleteMobileDeviceAccessRuleResult, WorkMailError> DeleteMobileDeviceAccessRuleOutcome;
199         typedef Aws::Utils::Outcome<DeleteOrganizationResult, WorkMailError> DeleteOrganizationOutcome;
200         typedef Aws::Utils::Outcome<DeleteResourceResult, WorkMailError> DeleteResourceOutcome;
201         typedef Aws::Utils::Outcome<DeleteRetentionPolicyResult, WorkMailError> DeleteRetentionPolicyOutcome;
202         typedef Aws::Utils::Outcome<DeleteUserResult, WorkMailError> DeleteUserOutcome;
203         typedef Aws::Utils::Outcome<DeregisterFromWorkMailResult, WorkMailError> DeregisterFromWorkMailOutcome;
204         typedef Aws::Utils::Outcome<DeregisterMailDomainResult, WorkMailError> DeregisterMailDomainOutcome;
205         typedef Aws::Utils::Outcome<DescribeGroupResult, WorkMailError> DescribeGroupOutcome;
206         typedef Aws::Utils::Outcome<DescribeInboundDmarcSettingsResult, WorkMailError> DescribeInboundDmarcSettingsOutcome;
207         typedef Aws::Utils::Outcome<DescribeMailboxExportJobResult, WorkMailError> DescribeMailboxExportJobOutcome;
208         typedef Aws::Utils::Outcome<DescribeOrganizationResult, WorkMailError> DescribeOrganizationOutcome;
209         typedef Aws::Utils::Outcome<DescribeResourceResult, WorkMailError> DescribeResourceOutcome;
210         typedef Aws::Utils::Outcome<DescribeUserResult, WorkMailError> DescribeUserOutcome;
211         typedef Aws::Utils::Outcome<DisassociateDelegateFromResourceResult, WorkMailError> DisassociateDelegateFromResourceOutcome;
212         typedef Aws::Utils::Outcome<DisassociateMemberFromGroupResult, WorkMailError> DisassociateMemberFromGroupOutcome;
213         typedef Aws::Utils::Outcome<GetAccessControlEffectResult, WorkMailError> GetAccessControlEffectOutcome;
214         typedef Aws::Utils::Outcome<GetDefaultRetentionPolicyResult, WorkMailError> GetDefaultRetentionPolicyOutcome;
215         typedef Aws::Utils::Outcome<GetMailDomainResult, WorkMailError> GetMailDomainOutcome;
216         typedef Aws::Utils::Outcome<GetMailboxDetailsResult, WorkMailError> GetMailboxDetailsOutcome;
217         typedef Aws::Utils::Outcome<GetMobileDeviceAccessEffectResult, WorkMailError> GetMobileDeviceAccessEffectOutcome;
218         typedef Aws::Utils::Outcome<GetMobileDeviceAccessOverrideResult, WorkMailError> GetMobileDeviceAccessOverrideOutcome;
219         typedef Aws::Utils::Outcome<ListAccessControlRulesResult, WorkMailError> ListAccessControlRulesOutcome;
220         typedef Aws::Utils::Outcome<ListAliasesResult, WorkMailError> ListAliasesOutcome;
221         typedef Aws::Utils::Outcome<ListGroupMembersResult, WorkMailError> ListGroupMembersOutcome;
222         typedef Aws::Utils::Outcome<ListGroupsResult, WorkMailError> ListGroupsOutcome;
223         typedef Aws::Utils::Outcome<ListMailDomainsResult, WorkMailError> ListMailDomainsOutcome;
224         typedef Aws::Utils::Outcome<ListMailboxExportJobsResult, WorkMailError> ListMailboxExportJobsOutcome;
225         typedef Aws::Utils::Outcome<ListMailboxPermissionsResult, WorkMailError> ListMailboxPermissionsOutcome;
226         typedef Aws::Utils::Outcome<ListMobileDeviceAccessOverridesResult, WorkMailError> ListMobileDeviceAccessOverridesOutcome;
227         typedef Aws::Utils::Outcome<ListMobileDeviceAccessRulesResult, WorkMailError> ListMobileDeviceAccessRulesOutcome;
228         typedef Aws::Utils::Outcome<ListOrganizationsResult, WorkMailError> ListOrganizationsOutcome;
229         typedef Aws::Utils::Outcome<ListResourceDelegatesResult, WorkMailError> ListResourceDelegatesOutcome;
230         typedef Aws::Utils::Outcome<ListResourcesResult, WorkMailError> ListResourcesOutcome;
231         typedef Aws::Utils::Outcome<ListTagsForResourceResult, WorkMailError> ListTagsForResourceOutcome;
232         typedef Aws::Utils::Outcome<ListUsersResult, WorkMailError> ListUsersOutcome;
233         typedef Aws::Utils::Outcome<PutAccessControlRuleResult, WorkMailError> PutAccessControlRuleOutcome;
234         typedef Aws::Utils::Outcome<PutInboundDmarcSettingsResult, WorkMailError> PutInboundDmarcSettingsOutcome;
235         typedef Aws::Utils::Outcome<PutMailboxPermissionsResult, WorkMailError> PutMailboxPermissionsOutcome;
236         typedef Aws::Utils::Outcome<PutMobileDeviceAccessOverrideResult, WorkMailError> PutMobileDeviceAccessOverrideOutcome;
237         typedef Aws::Utils::Outcome<PutRetentionPolicyResult, WorkMailError> PutRetentionPolicyOutcome;
238         typedef Aws::Utils::Outcome<RegisterMailDomainResult, WorkMailError> RegisterMailDomainOutcome;
239         typedef Aws::Utils::Outcome<RegisterToWorkMailResult, WorkMailError> RegisterToWorkMailOutcome;
240         typedef Aws::Utils::Outcome<ResetPasswordResult, WorkMailError> ResetPasswordOutcome;
241         typedef Aws::Utils::Outcome<StartMailboxExportJobResult, WorkMailError> StartMailboxExportJobOutcome;
242         typedef Aws::Utils::Outcome<TagResourceResult, WorkMailError> TagResourceOutcome;
243         typedef Aws::Utils::Outcome<UntagResourceResult, WorkMailError> UntagResourceOutcome;
244         typedef Aws::Utils::Outcome<UpdateDefaultMailDomainResult, WorkMailError> UpdateDefaultMailDomainOutcome;
245         typedef Aws::Utils::Outcome<UpdateMailboxQuotaResult, WorkMailError> UpdateMailboxQuotaOutcome;
246         typedef Aws::Utils::Outcome<UpdateMobileDeviceAccessRuleResult, WorkMailError> UpdateMobileDeviceAccessRuleOutcome;
247         typedef Aws::Utils::Outcome<UpdatePrimaryEmailAddressResult, WorkMailError> UpdatePrimaryEmailAddressOutcome;
248         typedef Aws::Utils::Outcome<UpdateResourceResult, WorkMailError> UpdateResourceOutcome;
249 
250         typedef std::future<AssociateDelegateToResourceOutcome> AssociateDelegateToResourceOutcomeCallable;
251         typedef std::future<AssociateMemberToGroupOutcome> AssociateMemberToGroupOutcomeCallable;
252         typedef std::future<CancelMailboxExportJobOutcome> CancelMailboxExportJobOutcomeCallable;
253         typedef std::future<CreateAliasOutcome> CreateAliasOutcomeCallable;
254         typedef std::future<CreateGroupOutcome> CreateGroupOutcomeCallable;
255         typedef std::future<CreateMobileDeviceAccessRuleOutcome> CreateMobileDeviceAccessRuleOutcomeCallable;
256         typedef std::future<CreateOrganizationOutcome> CreateOrganizationOutcomeCallable;
257         typedef std::future<CreateResourceOutcome> CreateResourceOutcomeCallable;
258         typedef std::future<CreateUserOutcome> CreateUserOutcomeCallable;
259         typedef std::future<DeleteAccessControlRuleOutcome> DeleteAccessControlRuleOutcomeCallable;
260         typedef std::future<DeleteAliasOutcome> DeleteAliasOutcomeCallable;
261         typedef std::future<DeleteGroupOutcome> DeleteGroupOutcomeCallable;
262         typedef std::future<DeleteMailboxPermissionsOutcome> DeleteMailboxPermissionsOutcomeCallable;
263         typedef std::future<DeleteMobileDeviceAccessOverrideOutcome> DeleteMobileDeviceAccessOverrideOutcomeCallable;
264         typedef std::future<DeleteMobileDeviceAccessRuleOutcome> DeleteMobileDeviceAccessRuleOutcomeCallable;
265         typedef std::future<DeleteOrganizationOutcome> DeleteOrganizationOutcomeCallable;
266         typedef std::future<DeleteResourceOutcome> DeleteResourceOutcomeCallable;
267         typedef std::future<DeleteRetentionPolicyOutcome> DeleteRetentionPolicyOutcomeCallable;
268         typedef std::future<DeleteUserOutcome> DeleteUserOutcomeCallable;
269         typedef std::future<DeregisterFromWorkMailOutcome> DeregisterFromWorkMailOutcomeCallable;
270         typedef std::future<DeregisterMailDomainOutcome> DeregisterMailDomainOutcomeCallable;
271         typedef std::future<DescribeGroupOutcome> DescribeGroupOutcomeCallable;
272         typedef std::future<DescribeInboundDmarcSettingsOutcome> DescribeInboundDmarcSettingsOutcomeCallable;
273         typedef std::future<DescribeMailboxExportJobOutcome> DescribeMailboxExportJobOutcomeCallable;
274         typedef std::future<DescribeOrganizationOutcome> DescribeOrganizationOutcomeCallable;
275         typedef std::future<DescribeResourceOutcome> DescribeResourceOutcomeCallable;
276         typedef std::future<DescribeUserOutcome> DescribeUserOutcomeCallable;
277         typedef std::future<DisassociateDelegateFromResourceOutcome> DisassociateDelegateFromResourceOutcomeCallable;
278         typedef std::future<DisassociateMemberFromGroupOutcome> DisassociateMemberFromGroupOutcomeCallable;
279         typedef std::future<GetAccessControlEffectOutcome> GetAccessControlEffectOutcomeCallable;
280         typedef std::future<GetDefaultRetentionPolicyOutcome> GetDefaultRetentionPolicyOutcomeCallable;
281         typedef std::future<GetMailDomainOutcome> GetMailDomainOutcomeCallable;
282         typedef std::future<GetMailboxDetailsOutcome> GetMailboxDetailsOutcomeCallable;
283         typedef std::future<GetMobileDeviceAccessEffectOutcome> GetMobileDeviceAccessEffectOutcomeCallable;
284         typedef std::future<GetMobileDeviceAccessOverrideOutcome> GetMobileDeviceAccessOverrideOutcomeCallable;
285         typedef std::future<ListAccessControlRulesOutcome> ListAccessControlRulesOutcomeCallable;
286         typedef std::future<ListAliasesOutcome> ListAliasesOutcomeCallable;
287         typedef std::future<ListGroupMembersOutcome> ListGroupMembersOutcomeCallable;
288         typedef std::future<ListGroupsOutcome> ListGroupsOutcomeCallable;
289         typedef std::future<ListMailDomainsOutcome> ListMailDomainsOutcomeCallable;
290         typedef std::future<ListMailboxExportJobsOutcome> ListMailboxExportJobsOutcomeCallable;
291         typedef std::future<ListMailboxPermissionsOutcome> ListMailboxPermissionsOutcomeCallable;
292         typedef std::future<ListMobileDeviceAccessOverridesOutcome> ListMobileDeviceAccessOverridesOutcomeCallable;
293         typedef std::future<ListMobileDeviceAccessRulesOutcome> ListMobileDeviceAccessRulesOutcomeCallable;
294         typedef std::future<ListOrganizationsOutcome> ListOrganizationsOutcomeCallable;
295         typedef std::future<ListResourceDelegatesOutcome> ListResourceDelegatesOutcomeCallable;
296         typedef std::future<ListResourcesOutcome> ListResourcesOutcomeCallable;
297         typedef std::future<ListTagsForResourceOutcome> ListTagsForResourceOutcomeCallable;
298         typedef std::future<ListUsersOutcome> ListUsersOutcomeCallable;
299         typedef std::future<PutAccessControlRuleOutcome> PutAccessControlRuleOutcomeCallable;
300         typedef std::future<PutInboundDmarcSettingsOutcome> PutInboundDmarcSettingsOutcomeCallable;
301         typedef std::future<PutMailboxPermissionsOutcome> PutMailboxPermissionsOutcomeCallable;
302         typedef std::future<PutMobileDeviceAccessOverrideOutcome> PutMobileDeviceAccessOverrideOutcomeCallable;
303         typedef std::future<PutRetentionPolicyOutcome> PutRetentionPolicyOutcomeCallable;
304         typedef std::future<RegisterMailDomainOutcome> RegisterMailDomainOutcomeCallable;
305         typedef std::future<RegisterToWorkMailOutcome> RegisterToWorkMailOutcomeCallable;
306         typedef std::future<ResetPasswordOutcome> ResetPasswordOutcomeCallable;
307         typedef std::future<StartMailboxExportJobOutcome> StartMailboxExportJobOutcomeCallable;
308         typedef std::future<TagResourceOutcome> TagResourceOutcomeCallable;
309         typedef std::future<UntagResourceOutcome> UntagResourceOutcomeCallable;
310         typedef std::future<UpdateDefaultMailDomainOutcome> UpdateDefaultMailDomainOutcomeCallable;
311         typedef std::future<UpdateMailboxQuotaOutcome> UpdateMailboxQuotaOutcomeCallable;
312         typedef std::future<UpdateMobileDeviceAccessRuleOutcome> UpdateMobileDeviceAccessRuleOutcomeCallable;
313         typedef std::future<UpdatePrimaryEmailAddressOutcome> UpdatePrimaryEmailAddressOutcomeCallable;
314         typedef std::future<UpdateResourceOutcome> UpdateResourceOutcomeCallable;
315 } // namespace Model
316 
317   class WorkMailClient;
318 
319     typedef std::function<void(const WorkMailClient*, const Model::AssociateDelegateToResourceRequest&, const Model::AssociateDelegateToResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AssociateDelegateToResourceResponseReceivedHandler;
320     typedef std::function<void(const WorkMailClient*, const Model::AssociateMemberToGroupRequest&, const Model::AssociateMemberToGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > AssociateMemberToGroupResponseReceivedHandler;
321     typedef std::function<void(const WorkMailClient*, const Model::CancelMailboxExportJobRequest&, const Model::CancelMailboxExportJobOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CancelMailboxExportJobResponseReceivedHandler;
322     typedef std::function<void(const WorkMailClient*, const Model::CreateAliasRequest&, const Model::CreateAliasOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateAliasResponseReceivedHandler;
323     typedef std::function<void(const WorkMailClient*, const Model::CreateGroupRequest&, const Model::CreateGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateGroupResponseReceivedHandler;
324     typedef std::function<void(const WorkMailClient*, const Model::CreateMobileDeviceAccessRuleRequest&, const Model::CreateMobileDeviceAccessRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateMobileDeviceAccessRuleResponseReceivedHandler;
325     typedef std::function<void(const WorkMailClient*, const Model::CreateOrganizationRequest&, const Model::CreateOrganizationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateOrganizationResponseReceivedHandler;
326     typedef std::function<void(const WorkMailClient*, const Model::CreateResourceRequest&, const Model::CreateResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateResourceResponseReceivedHandler;
327     typedef std::function<void(const WorkMailClient*, const Model::CreateUserRequest&, const Model::CreateUserOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateUserResponseReceivedHandler;
328     typedef std::function<void(const WorkMailClient*, const Model::DeleteAccessControlRuleRequest&, const Model::DeleteAccessControlRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteAccessControlRuleResponseReceivedHandler;
329     typedef std::function<void(const WorkMailClient*, const Model::DeleteAliasRequest&, const Model::DeleteAliasOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteAliasResponseReceivedHandler;
330     typedef std::function<void(const WorkMailClient*, const Model::DeleteGroupRequest&, const Model::DeleteGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteGroupResponseReceivedHandler;
331     typedef std::function<void(const WorkMailClient*, const Model::DeleteMailboxPermissionsRequest&, const Model::DeleteMailboxPermissionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteMailboxPermissionsResponseReceivedHandler;
332     typedef std::function<void(const WorkMailClient*, const Model::DeleteMobileDeviceAccessOverrideRequest&, const Model::DeleteMobileDeviceAccessOverrideOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteMobileDeviceAccessOverrideResponseReceivedHandler;
333     typedef std::function<void(const WorkMailClient*, const Model::DeleteMobileDeviceAccessRuleRequest&, const Model::DeleteMobileDeviceAccessRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteMobileDeviceAccessRuleResponseReceivedHandler;
334     typedef std::function<void(const WorkMailClient*, const Model::DeleteOrganizationRequest&, const Model::DeleteOrganizationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteOrganizationResponseReceivedHandler;
335     typedef std::function<void(const WorkMailClient*, const Model::DeleteResourceRequest&, const Model::DeleteResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteResourceResponseReceivedHandler;
336     typedef std::function<void(const WorkMailClient*, const Model::DeleteRetentionPolicyRequest&, const Model::DeleteRetentionPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteRetentionPolicyResponseReceivedHandler;
337     typedef std::function<void(const WorkMailClient*, const Model::DeleteUserRequest&, const Model::DeleteUserOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteUserResponseReceivedHandler;
338     typedef std::function<void(const WorkMailClient*, const Model::DeregisterFromWorkMailRequest&, const Model::DeregisterFromWorkMailOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeregisterFromWorkMailResponseReceivedHandler;
339     typedef std::function<void(const WorkMailClient*, const Model::DeregisterMailDomainRequest&, const Model::DeregisterMailDomainOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeregisterMailDomainResponseReceivedHandler;
340     typedef std::function<void(const WorkMailClient*, const Model::DescribeGroupRequest&, const Model::DescribeGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeGroupResponseReceivedHandler;
341     typedef std::function<void(const WorkMailClient*, const Model::DescribeInboundDmarcSettingsRequest&, const Model::DescribeInboundDmarcSettingsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeInboundDmarcSettingsResponseReceivedHandler;
342     typedef std::function<void(const WorkMailClient*, const Model::DescribeMailboxExportJobRequest&, const Model::DescribeMailboxExportJobOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeMailboxExportJobResponseReceivedHandler;
343     typedef std::function<void(const WorkMailClient*, const Model::DescribeOrganizationRequest&, const Model::DescribeOrganizationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeOrganizationResponseReceivedHandler;
344     typedef std::function<void(const WorkMailClient*, const Model::DescribeResourceRequest&, const Model::DescribeResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeResourceResponseReceivedHandler;
345     typedef std::function<void(const WorkMailClient*, const Model::DescribeUserRequest&, const Model::DescribeUserOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DescribeUserResponseReceivedHandler;
346     typedef std::function<void(const WorkMailClient*, const Model::DisassociateDelegateFromResourceRequest&, const Model::DisassociateDelegateFromResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DisassociateDelegateFromResourceResponseReceivedHandler;
347     typedef std::function<void(const WorkMailClient*, const Model::DisassociateMemberFromGroupRequest&, const Model::DisassociateMemberFromGroupOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DisassociateMemberFromGroupResponseReceivedHandler;
348     typedef std::function<void(const WorkMailClient*, const Model::GetAccessControlEffectRequest&, const Model::GetAccessControlEffectOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetAccessControlEffectResponseReceivedHandler;
349     typedef std::function<void(const WorkMailClient*, const Model::GetDefaultRetentionPolicyRequest&, const Model::GetDefaultRetentionPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetDefaultRetentionPolicyResponseReceivedHandler;
350     typedef std::function<void(const WorkMailClient*, const Model::GetMailDomainRequest&, const Model::GetMailDomainOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetMailDomainResponseReceivedHandler;
351     typedef std::function<void(const WorkMailClient*, const Model::GetMailboxDetailsRequest&, const Model::GetMailboxDetailsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetMailboxDetailsResponseReceivedHandler;
352     typedef std::function<void(const WorkMailClient*, const Model::GetMobileDeviceAccessEffectRequest&, const Model::GetMobileDeviceAccessEffectOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetMobileDeviceAccessEffectResponseReceivedHandler;
353     typedef std::function<void(const WorkMailClient*, const Model::GetMobileDeviceAccessOverrideRequest&, const Model::GetMobileDeviceAccessOverrideOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetMobileDeviceAccessOverrideResponseReceivedHandler;
354     typedef std::function<void(const WorkMailClient*, const Model::ListAccessControlRulesRequest&, const Model::ListAccessControlRulesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListAccessControlRulesResponseReceivedHandler;
355     typedef std::function<void(const WorkMailClient*, const Model::ListAliasesRequest&, const Model::ListAliasesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListAliasesResponseReceivedHandler;
356     typedef std::function<void(const WorkMailClient*, const Model::ListGroupMembersRequest&, const Model::ListGroupMembersOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListGroupMembersResponseReceivedHandler;
357     typedef std::function<void(const WorkMailClient*, const Model::ListGroupsRequest&, const Model::ListGroupsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListGroupsResponseReceivedHandler;
358     typedef std::function<void(const WorkMailClient*, const Model::ListMailDomainsRequest&, const Model::ListMailDomainsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListMailDomainsResponseReceivedHandler;
359     typedef std::function<void(const WorkMailClient*, const Model::ListMailboxExportJobsRequest&, const Model::ListMailboxExportJobsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListMailboxExportJobsResponseReceivedHandler;
360     typedef std::function<void(const WorkMailClient*, const Model::ListMailboxPermissionsRequest&, const Model::ListMailboxPermissionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListMailboxPermissionsResponseReceivedHandler;
361     typedef std::function<void(const WorkMailClient*, const Model::ListMobileDeviceAccessOverridesRequest&, const Model::ListMobileDeviceAccessOverridesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListMobileDeviceAccessOverridesResponseReceivedHandler;
362     typedef std::function<void(const WorkMailClient*, const Model::ListMobileDeviceAccessRulesRequest&, const Model::ListMobileDeviceAccessRulesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListMobileDeviceAccessRulesResponseReceivedHandler;
363     typedef std::function<void(const WorkMailClient*, const Model::ListOrganizationsRequest&, const Model::ListOrganizationsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListOrganizationsResponseReceivedHandler;
364     typedef std::function<void(const WorkMailClient*, const Model::ListResourceDelegatesRequest&, const Model::ListResourceDelegatesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListResourceDelegatesResponseReceivedHandler;
365     typedef std::function<void(const WorkMailClient*, const Model::ListResourcesRequest&, const Model::ListResourcesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListResourcesResponseReceivedHandler;
366     typedef std::function<void(const WorkMailClient*, const Model::ListTagsForResourceRequest&, const Model::ListTagsForResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListTagsForResourceResponseReceivedHandler;
367     typedef std::function<void(const WorkMailClient*, const Model::ListUsersRequest&, const Model::ListUsersOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListUsersResponseReceivedHandler;
368     typedef std::function<void(const WorkMailClient*, const Model::PutAccessControlRuleRequest&, const Model::PutAccessControlRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutAccessControlRuleResponseReceivedHandler;
369     typedef std::function<void(const WorkMailClient*, const Model::PutInboundDmarcSettingsRequest&, const Model::PutInboundDmarcSettingsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutInboundDmarcSettingsResponseReceivedHandler;
370     typedef std::function<void(const WorkMailClient*, const Model::PutMailboxPermissionsRequest&, const Model::PutMailboxPermissionsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutMailboxPermissionsResponseReceivedHandler;
371     typedef std::function<void(const WorkMailClient*, const Model::PutMobileDeviceAccessOverrideRequest&, const Model::PutMobileDeviceAccessOverrideOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutMobileDeviceAccessOverrideResponseReceivedHandler;
372     typedef std::function<void(const WorkMailClient*, const Model::PutRetentionPolicyRequest&, const Model::PutRetentionPolicyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutRetentionPolicyResponseReceivedHandler;
373     typedef std::function<void(const WorkMailClient*, const Model::RegisterMailDomainRequest&, const Model::RegisterMailDomainOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RegisterMailDomainResponseReceivedHandler;
374     typedef std::function<void(const WorkMailClient*, const Model::RegisterToWorkMailRequest&, const Model::RegisterToWorkMailOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RegisterToWorkMailResponseReceivedHandler;
375     typedef std::function<void(const WorkMailClient*, const Model::ResetPasswordRequest&, const Model::ResetPasswordOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ResetPasswordResponseReceivedHandler;
376     typedef std::function<void(const WorkMailClient*, const Model::StartMailboxExportJobRequest&, const Model::StartMailboxExportJobOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > StartMailboxExportJobResponseReceivedHandler;
377     typedef std::function<void(const WorkMailClient*, const Model::TagResourceRequest&, const Model::TagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > TagResourceResponseReceivedHandler;
378     typedef std::function<void(const WorkMailClient*, const Model::UntagResourceRequest&, const Model::UntagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UntagResourceResponseReceivedHandler;
379     typedef std::function<void(const WorkMailClient*, const Model::UpdateDefaultMailDomainRequest&, const Model::UpdateDefaultMailDomainOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateDefaultMailDomainResponseReceivedHandler;
380     typedef std::function<void(const WorkMailClient*, const Model::UpdateMailboxQuotaRequest&, const Model::UpdateMailboxQuotaOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateMailboxQuotaResponseReceivedHandler;
381     typedef std::function<void(const WorkMailClient*, const Model::UpdateMobileDeviceAccessRuleRequest&, const Model::UpdateMobileDeviceAccessRuleOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateMobileDeviceAccessRuleResponseReceivedHandler;
382     typedef std::function<void(const WorkMailClient*, const Model::UpdatePrimaryEmailAddressRequest&, const Model::UpdatePrimaryEmailAddressOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdatePrimaryEmailAddressResponseReceivedHandler;
383     typedef std::function<void(const WorkMailClient*, const Model::UpdateResourceRequest&, const Model::UpdateResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateResourceResponseReceivedHandler;
384 
385   /**
386    * <p>Amazon WorkMail is a secure, managed business email and calendaring service
387    * with support for existing desktop and mobile email clients. You can access your
388    * email, contacts, and calendars using Microsoft Outlook, your browser, or other
389    * native iOS and Android email applications. You can integrate WorkMail with your
390    * existing corporate directory and control both the keys that encrypt your data
391    * and the location in which your data is stored.</p> <p>The WorkMail API is
392    * designed for the following scenarios:</p> <ul> <li> <p>Listing and describing
393    * organizations</p> </li> </ul> <ul> <li> <p>Managing users</p> </li> </ul> <ul>
394    * <li> <p>Managing groups</p> </li> </ul> <ul> <li> <p>Managing resources</p>
395    * </li> </ul> <p>All WorkMail API operations are Amazon-authenticated and
396    * certificate-signed. They not only require the use of the AWS SDK, but also allow
397    * for the exclusive use of AWS Identity and Access Management users and roles to
398    * help facilitate access, trust, and permission policies. By creating a role and
399    * allowing an IAM user to access the WorkMail site, the IAM user gains full
400    * administrative visibility into the entire WorkMail organization (or as set in
401    * the IAM policy). This includes, but is not limited to, the ability to create,
402    * update, and delete users, groups, and resources. This allows developers to
403    * perform the scenarios listed above, as well as give users the ability to grant
404    * access on a selective basis using the IAM model.</p>
405    */
406   class AWS_WORKMAIL_API WorkMailClient : public Aws::Client::AWSJsonClient
407   {
408     public:
409       typedef Aws::Client::AWSJsonClient BASECLASS;
410 
411        /**
412         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
413         * is not specified, it will be initialized to default values.
414         */
415         WorkMailClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
416 
417        /**
418         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
419         * is not specified, it will be initialized to default values.
420         */
421         WorkMailClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
422 
423        /**
424         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
425         * the default http client factory will be used
426         */
427         WorkMailClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
428             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
429 
430         virtual ~WorkMailClient();
431 
432 
433         /**
434          * <p>Adds a member (user or group) to the resource's set of
435          * delegates.</p><p><h3>See Also:</h3>   <a
436          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/AssociateDelegateToResource">AWS
437          * API Reference</a></p>
438          */
439         virtual Model::AssociateDelegateToResourceOutcome AssociateDelegateToResource(const Model::AssociateDelegateToResourceRequest& request) const;
440 
441         /**
442          * <p>Adds a member (user or group) to the resource's set of
443          * delegates.</p><p><h3>See Also:</h3>   <a
444          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/AssociateDelegateToResource">AWS
445          * API Reference</a></p>
446          *
447          * returns a future to the operation so that it can be executed in parallel to other requests.
448          */
449         virtual Model::AssociateDelegateToResourceOutcomeCallable AssociateDelegateToResourceCallable(const Model::AssociateDelegateToResourceRequest& request) const;
450 
451         /**
452          * <p>Adds a member (user or group) to the resource's set of
453          * delegates.</p><p><h3>See Also:</h3>   <a
454          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/AssociateDelegateToResource">AWS
455          * API Reference</a></p>
456          *
457          * Queues the request into a thread executor and triggers associated callback when operation has finished.
458          */
459         virtual void AssociateDelegateToResourceAsync(const Model::AssociateDelegateToResourceRequest& request, const AssociateDelegateToResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
460 
461         /**
462          * <p>Adds a member (user or group) to the group's set.</p><p><h3>See Also:</h3>
463          * <a
464          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/AssociateMemberToGroup">AWS
465          * API Reference</a></p>
466          */
467         virtual Model::AssociateMemberToGroupOutcome AssociateMemberToGroup(const Model::AssociateMemberToGroupRequest& request) const;
468 
469         /**
470          * <p>Adds a member (user or group) to the group's set.</p><p><h3>See Also:</h3>
471          * <a
472          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/AssociateMemberToGroup">AWS
473          * API Reference</a></p>
474          *
475          * returns a future to the operation so that it can be executed in parallel to other requests.
476          */
477         virtual Model::AssociateMemberToGroupOutcomeCallable AssociateMemberToGroupCallable(const Model::AssociateMemberToGroupRequest& request) const;
478 
479         /**
480          * <p>Adds a member (user or group) to the group's set.</p><p><h3>See Also:</h3>
481          * <a
482          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/AssociateMemberToGroup">AWS
483          * API Reference</a></p>
484          *
485          * Queues the request into a thread executor and triggers associated callback when operation has finished.
486          */
487         virtual void AssociateMemberToGroupAsync(const Model::AssociateMemberToGroupRequest& request, const AssociateMemberToGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
488 
489         /**
490          * <p>Cancels a mailbox export job.</p>  <p>If the mailbox export job is near
491          * completion, it might not be possible to cancel it.</p> <p><h3>See
492          * Also:</h3>   <a
493          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CancelMailboxExportJob">AWS
494          * API Reference</a></p>
495          */
496         virtual Model::CancelMailboxExportJobOutcome CancelMailboxExportJob(const Model::CancelMailboxExportJobRequest& request) const;
497 
498         /**
499          * <p>Cancels a mailbox export job.</p>  <p>If the mailbox export job is near
500          * completion, it might not be possible to cancel it.</p> <p><h3>See
501          * Also:</h3>   <a
502          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CancelMailboxExportJob">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::CancelMailboxExportJobOutcomeCallable CancelMailboxExportJobCallable(const Model::CancelMailboxExportJobRequest& request) const;
508 
509         /**
510          * <p>Cancels a mailbox export job.</p>  <p>If the mailbox export job is near
511          * completion, it might not be possible to cancel it.</p> <p><h3>See
512          * Also:</h3>   <a
513          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CancelMailboxExportJob">AWS
514          * API Reference</a></p>
515          *
516          * Queues the request into a thread executor and triggers associated callback when operation has finished.
517          */
518         virtual void CancelMailboxExportJobAsync(const Model::CancelMailboxExportJobRequest& request, const CancelMailboxExportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
519 
520         /**
521          * <p>Adds an alias to the set of a given member (user or group) of Amazon
522          * WorkMail.</p><p><h3>See Also:</h3>   <a
523          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateAlias">AWS
524          * API Reference</a></p>
525          */
526         virtual Model::CreateAliasOutcome CreateAlias(const Model::CreateAliasRequest& request) const;
527 
528         /**
529          * <p>Adds an alias to the set of a given member (user or group) of Amazon
530          * WorkMail.</p><p><h3>See Also:</h3>   <a
531          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateAlias">AWS
532          * API Reference</a></p>
533          *
534          * returns a future to the operation so that it can be executed in parallel to other requests.
535          */
536         virtual Model::CreateAliasOutcomeCallable CreateAliasCallable(const Model::CreateAliasRequest& request) const;
537 
538         /**
539          * <p>Adds an alias to the set of a given member (user or group) of Amazon
540          * WorkMail.</p><p><h3>See Also:</h3>   <a
541          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateAlias">AWS
542          * API Reference</a></p>
543          *
544          * Queues the request into a thread executor and triggers associated callback when operation has finished.
545          */
546         virtual void CreateAliasAsync(const Model::CreateAliasRequest& request, const CreateAliasResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
547 
548         /**
549          * <p>Creates a group that can be used in Amazon WorkMail by calling the
550          * <a>RegisterToWorkMail</a> operation.</p><p><h3>See Also:</h3>   <a
551          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateGroup">AWS
552          * API Reference</a></p>
553          */
554         virtual Model::CreateGroupOutcome CreateGroup(const Model::CreateGroupRequest& request) const;
555 
556         /**
557          * <p>Creates a group that can be used in Amazon WorkMail by calling the
558          * <a>RegisterToWorkMail</a> operation.</p><p><h3>See Also:</h3>   <a
559          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateGroup">AWS
560          * API Reference</a></p>
561          *
562          * returns a future to the operation so that it can be executed in parallel to other requests.
563          */
564         virtual Model::CreateGroupOutcomeCallable CreateGroupCallable(const Model::CreateGroupRequest& request) const;
565 
566         /**
567          * <p>Creates a group that can be used in Amazon WorkMail by calling the
568          * <a>RegisterToWorkMail</a> operation.</p><p><h3>See Also:</h3>   <a
569          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateGroup">AWS
570          * API Reference</a></p>
571          *
572          * Queues the request into a thread executor and triggers associated callback when operation has finished.
573          */
574         virtual void CreateGroupAsync(const Model::CreateGroupRequest& request, const CreateGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
575 
576         /**
577          * <p>Creates a new mobile device access rule for the specified Amazon WorkMail
578          * organization.</p><p><h3>See Also:</h3>   <a
579          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateMobileDeviceAccessRule">AWS
580          * API Reference</a></p>
581          */
582         virtual Model::CreateMobileDeviceAccessRuleOutcome CreateMobileDeviceAccessRule(const Model::CreateMobileDeviceAccessRuleRequest& request) const;
583 
584         /**
585          * <p>Creates a new mobile device access rule for the specified Amazon WorkMail
586          * organization.</p><p><h3>See Also:</h3>   <a
587          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateMobileDeviceAccessRule">AWS
588          * API Reference</a></p>
589          *
590          * returns a future to the operation so that it can be executed in parallel to other requests.
591          */
592         virtual Model::CreateMobileDeviceAccessRuleOutcomeCallable CreateMobileDeviceAccessRuleCallable(const Model::CreateMobileDeviceAccessRuleRequest& request) const;
593 
594         /**
595          * <p>Creates a new mobile device access rule for the specified Amazon WorkMail
596          * organization.</p><p><h3>See Also:</h3>   <a
597          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateMobileDeviceAccessRule">AWS
598          * API Reference</a></p>
599          *
600          * Queues the request into a thread executor and triggers associated callback when operation has finished.
601          */
602         virtual void CreateMobileDeviceAccessRuleAsync(const Model::CreateMobileDeviceAccessRuleRequest& request, const CreateMobileDeviceAccessRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
603 
604         /**
605          * <p>Creates a new Amazon WorkMail organization. Optionally, you can choose to
606          * associate an existing AWS Directory Service directory with your organization. If
607          * an AWS Directory Service directory ID is specified, the organization alias must
608          * match the directory alias. If you choose not to associate an existing directory
609          * with your organization, then we create a new Amazon WorkMail directory for you.
610          * For more information, see <a
611          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/add_new_organization.html">Adding
612          * an organization</a> in the <i>Amazon WorkMail Administrator Guide</i>.</p>
613          * <p>You can associate multiple email domains with an organization, then set your
614          * default email domain from the Amazon WorkMail console. You can also associate a
615          * domain that is managed in an Amazon Route 53 public hosted zone. For more
616          * information, see <a
617          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/add_domain.html">Adding
618          * a domain</a> and <a
619          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/default_domain.html">Choosing
620          * the default domain</a> in the <i>Amazon WorkMail Administrator Guide</i>.</p>
621          * <p>Optionally, you can use a customer managed master key from AWS Key Management
622          * Service (AWS KMS) to encrypt email for your organization. If you don't associate
623          * an AWS KMS key, Amazon WorkMail creates a default AWS managed master key for
624          * you.</p><p><h3>See Also:</h3>   <a
625          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateOrganization">AWS
626          * API Reference</a></p>
627          */
628         virtual Model::CreateOrganizationOutcome CreateOrganization(const Model::CreateOrganizationRequest& request) const;
629 
630         /**
631          * <p>Creates a new Amazon WorkMail organization. Optionally, you can choose to
632          * associate an existing AWS Directory Service directory with your organization. If
633          * an AWS Directory Service directory ID is specified, the organization alias must
634          * match the directory alias. If you choose not to associate an existing directory
635          * with your organization, then we create a new Amazon WorkMail directory for you.
636          * For more information, see <a
637          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/add_new_organization.html">Adding
638          * an organization</a> in the <i>Amazon WorkMail Administrator Guide</i>.</p>
639          * <p>You can associate multiple email domains with an organization, then set your
640          * default email domain from the Amazon WorkMail console. You can also associate a
641          * domain that is managed in an Amazon Route 53 public hosted zone. For more
642          * information, see <a
643          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/add_domain.html">Adding
644          * a domain</a> and <a
645          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/default_domain.html">Choosing
646          * the default domain</a> in the <i>Amazon WorkMail Administrator Guide</i>.</p>
647          * <p>Optionally, you can use a customer managed master key from AWS Key Management
648          * Service (AWS KMS) to encrypt email for your organization. If you don't associate
649          * an AWS KMS key, Amazon WorkMail creates a default AWS managed master key for
650          * you.</p><p><h3>See Also:</h3>   <a
651          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateOrganization">AWS
652          * API Reference</a></p>
653          *
654          * returns a future to the operation so that it can be executed in parallel to other requests.
655          */
656         virtual Model::CreateOrganizationOutcomeCallable CreateOrganizationCallable(const Model::CreateOrganizationRequest& request) const;
657 
658         /**
659          * <p>Creates a new Amazon WorkMail organization. Optionally, you can choose to
660          * associate an existing AWS Directory Service directory with your organization. If
661          * an AWS Directory Service directory ID is specified, the organization alias must
662          * match the directory alias. If you choose not to associate an existing directory
663          * with your organization, then we create a new Amazon WorkMail directory for you.
664          * For more information, see <a
665          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/add_new_organization.html">Adding
666          * an organization</a> in the <i>Amazon WorkMail Administrator Guide</i>.</p>
667          * <p>You can associate multiple email domains with an organization, then set your
668          * default email domain from the Amazon WorkMail console. You can also associate a
669          * domain that is managed in an Amazon Route 53 public hosted zone. For more
670          * information, see <a
671          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/add_domain.html">Adding
672          * a domain</a> and <a
673          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/default_domain.html">Choosing
674          * the default domain</a> in the <i>Amazon WorkMail Administrator Guide</i>.</p>
675          * <p>Optionally, you can use a customer managed master key from AWS Key Management
676          * Service (AWS KMS) to encrypt email for your organization. If you don't associate
677          * an AWS KMS key, Amazon WorkMail creates a default AWS managed master key for
678          * you.</p><p><h3>See Also:</h3>   <a
679          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateOrganization">AWS
680          * API Reference</a></p>
681          *
682          * Queues the request into a thread executor and triggers associated callback when operation has finished.
683          */
684         virtual void CreateOrganizationAsync(const Model::CreateOrganizationRequest& request, const CreateOrganizationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
685 
686         /**
687          * <p>Creates a new Amazon WorkMail resource. </p><p><h3>See Also:</h3>   <a
688          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateResource">AWS
689          * API Reference</a></p>
690          */
691         virtual Model::CreateResourceOutcome CreateResource(const Model::CreateResourceRequest& request) const;
692 
693         /**
694          * <p>Creates a new Amazon WorkMail resource. </p><p><h3>See Also:</h3>   <a
695          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateResource">AWS
696          * API Reference</a></p>
697          *
698          * returns a future to the operation so that it can be executed in parallel to other requests.
699          */
700         virtual Model::CreateResourceOutcomeCallable CreateResourceCallable(const Model::CreateResourceRequest& request) const;
701 
702         /**
703          * <p>Creates a new Amazon WorkMail resource. </p><p><h3>See Also:</h3>   <a
704          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateResource">AWS
705          * API Reference</a></p>
706          *
707          * Queues the request into a thread executor and triggers associated callback when operation has finished.
708          */
709         virtual void CreateResourceAsync(const Model::CreateResourceRequest& request, const CreateResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
710 
711         /**
712          * <p>Creates a user who can be used in Amazon WorkMail by calling the
713          * <a>RegisterToWorkMail</a> operation.</p><p><h3>See Also:</h3>   <a
714          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateUser">AWS
715          * API Reference</a></p>
716          */
717         virtual Model::CreateUserOutcome CreateUser(const Model::CreateUserRequest& request) const;
718 
719         /**
720          * <p>Creates a user who can be used in Amazon WorkMail by calling the
721          * <a>RegisterToWorkMail</a> operation.</p><p><h3>See Also:</h3>   <a
722          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateUser">AWS
723          * API Reference</a></p>
724          *
725          * returns a future to the operation so that it can be executed in parallel to other requests.
726          */
727         virtual Model::CreateUserOutcomeCallable CreateUserCallable(const Model::CreateUserRequest& request) const;
728 
729         /**
730          * <p>Creates a user who can be used in Amazon WorkMail by calling the
731          * <a>RegisterToWorkMail</a> operation.</p><p><h3>See Also:</h3>   <a
732          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/CreateUser">AWS
733          * API Reference</a></p>
734          *
735          * Queues the request into a thread executor and triggers associated callback when operation has finished.
736          */
737         virtual void CreateUserAsync(const Model::CreateUserRequest& request, const CreateUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
738 
739         /**
740          * <p>Deletes an access control rule for the specified WorkMail organization.</p>
741          *  <p>Deleting already deleted and non-existing rules does not produce an
742          * error. In those cases, the service sends back an HTTP 200 response with an empty
743          * HTTP body.</p> <p><h3>See Also:</h3>   <a
744          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteAccessControlRule">AWS
745          * API Reference</a></p>
746          */
747         virtual Model::DeleteAccessControlRuleOutcome DeleteAccessControlRule(const Model::DeleteAccessControlRuleRequest& request) const;
748 
749         /**
750          * <p>Deletes an access control rule for the specified WorkMail organization.</p>
751          *  <p>Deleting already deleted and non-existing rules does not produce an
752          * error. In those cases, the service sends back an HTTP 200 response with an empty
753          * HTTP body.</p> <p><h3>See Also:</h3>   <a
754          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteAccessControlRule">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::DeleteAccessControlRuleOutcomeCallable DeleteAccessControlRuleCallable(const Model::DeleteAccessControlRuleRequest& request) const;
760 
761         /**
762          * <p>Deletes an access control rule for the specified WorkMail organization.</p>
763          *  <p>Deleting already deleted and non-existing rules does not produce an
764          * error. In those cases, the service sends back an HTTP 200 response with an empty
765          * HTTP body.</p> <p><h3>See Also:</h3>   <a
766          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteAccessControlRule">AWS
767          * API Reference</a></p>
768          *
769          * Queues the request into a thread executor and triggers associated callback when operation has finished.
770          */
771         virtual void DeleteAccessControlRuleAsync(const Model::DeleteAccessControlRuleRequest& request, const DeleteAccessControlRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
772 
773         /**
774          * <p>Remove one or more specified aliases from a set of aliases for a given
775          * user.</p><p><h3>See Also:</h3>   <a
776          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteAlias">AWS
777          * API Reference</a></p>
778          */
779         virtual Model::DeleteAliasOutcome DeleteAlias(const Model::DeleteAliasRequest& request) const;
780 
781         /**
782          * <p>Remove one or more specified aliases from a set of aliases for a given
783          * user.</p><p><h3>See Also:</h3>   <a
784          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteAlias">AWS
785          * API Reference</a></p>
786          *
787          * returns a future to the operation so that it can be executed in parallel to other requests.
788          */
789         virtual Model::DeleteAliasOutcomeCallable DeleteAliasCallable(const Model::DeleteAliasRequest& request) const;
790 
791         /**
792          * <p>Remove one or more specified aliases from a set of aliases for a given
793          * user.</p><p><h3>See Also:</h3>   <a
794          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteAlias">AWS
795          * API Reference</a></p>
796          *
797          * Queues the request into a thread executor and triggers associated callback when operation has finished.
798          */
799         virtual void DeleteAliasAsync(const Model::DeleteAliasRequest& request, const DeleteAliasResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
800 
801         /**
802          * <p>Deletes a group from Amazon WorkMail.</p><p><h3>See Also:</h3>   <a
803          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteGroup">AWS
804          * API Reference</a></p>
805          */
806         virtual Model::DeleteGroupOutcome DeleteGroup(const Model::DeleteGroupRequest& request) const;
807 
808         /**
809          * <p>Deletes a group from Amazon WorkMail.</p><p><h3>See Also:</h3>   <a
810          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteGroup">AWS
811          * API Reference</a></p>
812          *
813          * returns a future to the operation so that it can be executed in parallel to other requests.
814          */
815         virtual Model::DeleteGroupOutcomeCallable DeleteGroupCallable(const Model::DeleteGroupRequest& request) const;
816 
817         /**
818          * <p>Deletes a group from Amazon WorkMail.</p><p><h3>See Also:</h3>   <a
819          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteGroup">AWS
820          * API Reference</a></p>
821          *
822          * Queues the request into a thread executor and triggers associated callback when operation has finished.
823          */
824         virtual void DeleteGroupAsync(const Model::DeleteGroupRequest& request, const DeleteGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
825 
826         /**
827          * <p>Deletes permissions granted to a member (user or group).</p><p><h3>See
828          * Also:</h3>   <a
829          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteMailboxPermissions">AWS
830          * API Reference</a></p>
831          */
832         virtual Model::DeleteMailboxPermissionsOutcome DeleteMailboxPermissions(const Model::DeleteMailboxPermissionsRequest& request) const;
833 
834         /**
835          * <p>Deletes permissions granted to a member (user or group).</p><p><h3>See
836          * Also:</h3>   <a
837          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteMailboxPermissions">AWS
838          * API Reference</a></p>
839          *
840          * returns a future to the operation so that it can be executed in parallel to other requests.
841          */
842         virtual Model::DeleteMailboxPermissionsOutcomeCallable DeleteMailboxPermissionsCallable(const Model::DeleteMailboxPermissionsRequest& request) const;
843 
844         /**
845          * <p>Deletes permissions granted to a member (user or group).</p><p><h3>See
846          * Also:</h3>   <a
847          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteMailboxPermissions">AWS
848          * API Reference</a></p>
849          *
850          * Queues the request into a thread executor and triggers associated callback when operation has finished.
851          */
852         virtual void DeleteMailboxPermissionsAsync(const Model::DeleteMailboxPermissionsRequest& request, const DeleteMailboxPermissionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
853 
854         /**
855          * <p>Deletes the mobile device access override for the given WorkMail
856          * organization, user, and device.</p>  <p>Deleting already deleted and
857          * non-existing overrides does not produce an error. In those cases, the service
858          * sends back an HTTP 200 response with an empty HTTP body.</p> <p><h3>See
859          * Also:</h3>   <a
860          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteMobileDeviceAccessOverride">AWS
861          * API Reference</a></p>
862          */
863         virtual Model::DeleteMobileDeviceAccessOverrideOutcome DeleteMobileDeviceAccessOverride(const Model::DeleteMobileDeviceAccessOverrideRequest& request) const;
864 
865         /**
866          * <p>Deletes the mobile device access override for the given WorkMail
867          * organization, user, and device.</p>  <p>Deleting already deleted and
868          * non-existing overrides does not produce an error. In those cases, the service
869          * sends back an HTTP 200 response with an empty HTTP body.</p> <p><h3>See
870          * Also:</h3>   <a
871          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteMobileDeviceAccessOverride">AWS
872          * API Reference</a></p>
873          *
874          * returns a future to the operation so that it can be executed in parallel to other requests.
875          */
876         virtual Model::DeleteMobileDeviceAccessOverrideOutcomeCallable DeleteMobileDeviceAccessOverrideCallable(const Model::DeleteMobileDeviceAccessOverrideRequest& request) const;
877 
878         /**
879          * <p>Deletes the mobile device access override for the given WorkMail
880          * organization, user, and device.</p>  <p>Deleting already deleted and
881          * non-existing overrides does not produce an error. In those cases, the service
882          * sends back an HTTP 200 response with an empty HTTP body.</p> <p><h3>See
883          * Also:</h3>   <a
884          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteMobileDeviceAccessOverride">AWS
885          * API Reference</a></p>
886          *
887          * Queues the request into a thread executor and triggers associated callback when operation has finished.
888          */
889         virtual void DeleteMobileDeviceAccessOverrideAsync(const Model::DeleteMobileDeviceAccessOverrideRequest& request, const DeleteMobileDeviceAccessOverrideResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
890 
891         /**
892          * <p>Deletes a mobile device access rule for the specified Amazon WorkMail
893          * organization.</p>  <p>Deleting already deleted and non-existing rules does
894          * not produce an error. In those cases, the service sends back an HTTP 200
895          * response with an empty HTTP body.</p> <p><h3>See Also:</h3>   <a
896          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteMobileDeviceAccessRule">AWS
897          * API Reference</a></p>
898          */
899         virtual Model::DeleteMobileDeviceAccessRuleOutcome DeleteMobileDeviceAccessRule(const Model::DeleteMobileDeviceAccessRuleRequest& request) const;
900 
901         /**
902          * <p>Deletes a mobile device access rule for the specified Amazon WorkMail
903          * organization.</p>  <p>Deleting already deleted and non-existing rules does
904          * not produce an error. In those cases, the service sends back an HTTP 200
905          * response with an empty HTTP body.</p> <p><h3>See Also:</h3>   <a
906          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteMobileDeviceAccessRule">AWS
907          * API Reference</a></p>
908          *
909          * returns a future to the operation so that it can be executed in parallel to other requests.
910          */
911         virtual Model::DeleteMobileDeviceAccessRuleOutcomeCallable DeleteMobileDeviceAccessRuleCallable(const Model::DeleteMobileDeviceAccessRuleRequest& request) const;
912 
913         /**
914          * <p>Deletes a mobile device access rule for the specified Amazon WorkMail
915          * organization.</p>  <p>Deleting already deleted and non-existing rules does
916          * not produce an error. In those cases, the service sends back an HTTP 200
917          * response with an empty HTTP body.</p> <p><h3>See Also:</h3>   <a
918          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteMobileDeviceAccessRule">AWS
919          * API Reference</a></p>
920          *
921          * Queues the request into a thread executor and triggers associated callback when operation has finished.
922          */
923         virtual void DeleteMobileDeviceAccessRuleAsync(const Model::DeleteMobileDeviceAccessRuleRequest& request, const DeleteMobileDeviceAccessRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
924 
925         /**
926          * <p>Deletes an Amazon WorkMail organization and all underlying AWS resources
927          * managed by Amazon WorkMail as part of the organization. You can choose whether
928          * to delete the associated directory. For more information, see <a
929          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/remove_organization.html">Removing
930          * an organization</a> in the <i>Amazon WorkMail Administrator
931          * Guide</i>.</p><p><h3>See Also:</h3>   <a
932          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteOrganization">AWS
933          * API Reference</a></p>
934          */
935         virtual Model::DeleteOrganizationOutcome DeleteOrganization(const Model::DeleteOrganizationRequest& request) const;
936 
937         /**
938          * <p>Deletes an Amazon WorkMail organization and all underlying AWS resources
939          * managed by Amazon WorkMail as part of the organization. You can choose whether
940          * to delete the associated directory. For more information, see <a
941          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/remove_organization.html">Removing
942          * an organization</a> in the <i>Amazon WorkMail Administrator
943          * Guide</i>.</p><p><h3>See Also:</h3>   <a
944          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteOrganization">AWS
945          * API Reference</a></p>
946          *
947          * returns a future to the operation so that it can be executed in parallel to other requests.
948          */
949         virtual Model::DeleteOrganizationOutcomeCallable DeleteOrganizationCallable(const Model::DeleteOrganizationRequest& request) const;
950 
951         /**
952          * <p>Deletes an Amazon WorkMail organization and all underlying AWS resources
953          * managed by Amazon WorkMail as part of the organization. You can choose whether
954          * to delete the associated directory. For more information, see <a
955          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/remove_organization.html">Removing
956          * an organization</a> in the <i>Amazon WorkMail Administrator
957          * Guide</i>.</p><p><h3>See Also:</h3>   <a
958          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteOrganization">AWS
959          * API Reference</a></p>
960          *
961          * Queues the request into a thread executor and triggers associated callback when operation has finished.
962          */
963         virtual void DeleteOrganizationAsync(const Model::DeleteOrganizationRequest& request, const DeleteOrganizationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
964 
965         /**
966          * <p>Deletes the specified resource. </p><p><h3>See Also:</h3>   <a
967          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteResource">AWS
968          * API Reference</a></p>
969          */
970         virtual Model::DeleteResourceOutcome DeleteResource(const Model::DeleteResourceRequest& request) const;
971 
972         /**
973          * <p>Deletes the specified resource. </p><p><h3>See Also:</h3>   <a
974          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteResource">AWS
975          * API Reference</a></p>
976          *
977          * returns a future to the operation so that it can be executed in parallel to other requests.
978          */
979         virtual Model::DeleteResourceOutcomeCallable DeleteResourceCallable(const Model::DeleteResourceRequest& request) const;
980 
981         /**
982          * <p>Deletes the specified resource. </p><p><h3>See Also:</h3>   <a
983          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteResource">AWS
984          * API Reference</a></p>
985          *
986          * Queues the request into a thread executor and triggers associated callback when operation has finished.
987          */
988         virtual void DeleteResourceAsync(const Model::DeleteResourceRequest& request, const DeleteResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
989 
990         /**
991          * <p>Deletes the specified retention policy from the specified
992          * organization.</p><p><h3>See Also:</h3>   <a
993          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteRetentionPolicy">AWS
994          * API Reference</a></p>
995          */
996         virtual Model::DeleteRetentionPolicyOutcome DeleteRetentionPolicy(const Model::DeleteRetentionPolicyRequest& request) const;
997 
998         /**
999          * <p>Deletes the specified retention policy from the specified
1000          * organization.</p><p><h3>See Also:</h3>   <a
1001          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteRetentionPolicy">AWS
1002          * API Reference</a></p>
1003          *
1004          * returns a future to the operation so that it can be executed in parallel to other requests.
1005          */
1006         virtual Model::DeleteRetentionPolicyOutcomeCallable DeleteRetentionPolicyCallable(const Model::DeleteRetentionPolicyRequest& request) const;
1007 
1008         /**
1009          * <p>Deletes the specified retention policy from the specified
1010          * organization.</p><p><h3>See Also:</h3>   <a
1011          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteRetentionPolicy">AWS
1012          * API Reference</a></p>
1013          *
1014          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1015          */
1016         virtual void DeleteRetentionPolicyAsync(const Model::DeleteRetentionPolicyRequest& request, const DeleteRetentionPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1017 
1018         /**
1019          * <p>Deletes a user from Amazon WorkMail and all subsequent systems. Before you
1020          * can delete a user, the user state must be <code>DISABLED</code>. Use the
1021          * <a>DescribeUser</a> action to confirm the user state.</p> <p>Deleting a user is
1022          * permanent and cannot be undone. WorkMail archives user mailboxes for 30 days
1023          * before they are permanently removed.</p><p><h3>See Also:</h3>   <a
1024          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteUser">AWS
1025          * API Reference</a></p>
1026          */
1027         virtual Model::DeleteUserOutcome DeleteUser(const Model::DeleteUserRequest& request) const;
1028 
1029         /**
1030          * <p>Deletes a user from Amazon WorkMail and all subsequent systems. Before you
1031          * can delete a user, the user state must be <code>DISABLED</code>. Use the
1032          * <a>DescribeUser</a> action to confirm the user state.</p> <p>Deleting a user is
1033          * permanent and cannot be undone. WorkMail archives user mailboxes for 30 days
1034          * before they are permanently removed.</p><p><h3>See Also:</h3>   <a
1035          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteUser">AWS
1036          * API Reference</a></p>
1037          *
1038          * returns a future to the operation so that it can be executed in parallel to other requests.
1039          */
1040         virtual Model::DeleteUserOutcomeCallable DeleteUserCallable(const Model::DeleteUserRequest& request) const;
1041 
1042         /**
1043          * <p>Deletes a user from Amazon WorkMail and all subsequent systems. Before you
1044          * can delete a user, the user state must be <code>DISABLED</code>. Use the
1045          * <a>DescribeUser</a> action to confirm the user state.</p> <p>Deleting a user is
1046          * permanent and cannot be undone. WorkMail archives user mailboxes for 30 days
1047          * before they are permanently removed.</p><p><h3>See Also:</h3>   <a
1048          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeleteUser">AWS
1049          * API Reference</a></p>
1050          *
1051          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1052          */
1053         virtual void DeleteUserAsync(const Model::DeleteUserRequest& request, const DeleteUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1054 
1055         /**
1056          * <p>Mark a user, group, or resource as no longer used in Amazon WorkMail. This
1057          * action disassociates the mailbox and schedules it for clean-up. WorkMail keeps
1058          * mailboxes for 30 days before they are permanently removed. The functionality in
1059          * the console is <i>Disable</i>.</p><p><h3>See Also:</h3>   <a
1060          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeregisterFromWorkMail">AWS
1061          * API Reference</a></p>
1062          */
1063         virtual Model::DeregisterFromWorkMailOutcome DeregisterFromWorkMail(const Model::DeregisterFromWorkMailRequest& request) const;
1064 
1065         /**
1066          * <p>Mark a user, group, or resource as no longer used in Amazon WorkMail. This
1067          * action disassociates the mailbox and schedules it for clean-up. WorkMail keeps
1068          * mailboxes for 30 days before they are permanently removed. The functionality in
1069          * the console is <i>Disable</i>.</p><p><h3>See Also:</h3>   <a
1070          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeregisterFromWorkMail">AWS
1071          * API Reference</a></p>
1072          *
1073          * returns a future to the operation so that it can be executed in parallel to other requests.
1074          */
1075         virtual Model::DeregisterFromWorkMailOutcomeCallable DeregisterFromWorkMailCallable(const Model::DeregisterFromWorkMailRequest& request) const;
1076 
1077         /**
1078          * <p>Mark a user, group, or resource as no longer used in Amazon WorkMail. This
1079          * action disassociates the mailbox and schedules it for clean-up. WorkMail keeps
1080          * mailboxes for 30 days before they are permanently removed. The functionality in
1081          * the console is <i>Disable</i>.</p><p><h3>See Also:</h3>   <a
1082          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeregisterFromWorkMail">AWS
1083          * API Reference</a></p>
1084          *
1085          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1086          */
1087         virtual void DeregisterFromWorkMailAsync(const Model::DeregisterFromWorkMailRequest& request, const DeregisterFromWorkMailResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1088 
1089         /**
1090          * <p>Removes a domain from Amazon WorkMail, stops email routing to WorkMail, and
1091          * removes the authorization allowing WorkMail use. SES keeps the domain because
1092          * other applications may use it. You must first remove any email address used by
1093          * WorkMail entities before you remove the domain.</p><p><h3>See Also:</h3>   <a
1094          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeregisterMailDomain">AWS
1095          * API Reference</a></p>
1096          */
1097         virtual Model::DeregisterMailDomainOutcome DeregisterMailDomain(const Model::DeregisterMailDomainRequest& request) const;
1098 
1099         /**
1100          * <p>Removes a domain from Amazon WorkMail, stops email routing to WorkMail, and
1101          * removes the authorization allowing WorkMail use. SES keeps the domain because
1102          * other applications may use it. You must first remove any email address used by
1103          * WorkMail entities before you remove the domain.</p><p><h3>See Also:</h3>   <a
1104          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeregisterMailDomain">AWS
1105          * API Reference</a></p>
1106          *
1107          * returns a future to the operation so that it can be executed in parallel to other requests.
1108          */
1109         virtual Model::DeregisterMailDomainOutcomeCallable DeregisterMailDomainCallable(const Model::DeregisterMailDomainRequest& request) const;
1110 
1111         /**
1112          * <p>Removes a domain from Amazon WorkMail, stops email routing to WorkMail, and
1113          * removes the authorization allowing WorkMail use. SES keeps the domain because
1114          * other applications may use it. You must first remove any email address used by
1115          * WorkMail entities before you remove the domain.</p><p><h3>See Also:</h3>   <a
1116          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DeregisterMailDomain">AWS
1117          * API Reference</a></p>
1118          *
1119          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1120          */
1121         virtual void DeregisterMailDomainAsync(const Model::DeregisterMailDomainRequest& request, const DeregisterMailDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1122 
1123         /**
1124          * <p>Returns the data available for the group.</p><p><h3>See Also:</h3>   <a
1125          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeGroup">AWS
1126          * API Reference</a></p>
1127          */
1128         virtual Model::DescribeGroupOutcome DescribeGroup(const Model::DescribeGroupRequest& request) const;
1129 
1130         /**
1131          * <p>Returns the data available for the group.</p><p><h3>See Also:</h3>   <a
1132          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeGroup">AWS
1133          * API Reference</a></p>
1134          *
1135          * returns a future to the operation so that it can be executed in parallel to other requests.
1136          */
1137         virtual Model::DescribeGroupOutcomeCallable DescribeGroupCallable(const Model::DescribeGroupRequest& request) const;
1138 
1139         /**
1140          * <p>Returns the data available for the group.</p><p><h3>See Also:</h3>   <a
1141          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeGroup">AWS
1142          * API Reference</a></p>
1143          *
1144          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1145          */
1146         virtual void DescribeGroupAsync(const Model::DescribeGroupRequest& request, const DescribeGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1147 
1148         /**
1149          * <p>Lists the settings in a DMARC policy for a specified
1150          * organization.</p><p><h3>See Also:</h3>   <a
1151          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeInboundDmarcSettings">AWS
1152          * API Reference</a></p>
1153          */
1154         virtual Model::DescribeInboundDmarcSettingsOutcome DescribeInboundDmarcSettings(const Model::DescribeInboundDmarcSettingsRequest& request) const;
1155 
1156         /**
1157          * <p>Lists the settings in a DMARC policy for a specified
1158          * organization.</p><p><h3>See Also:</h3>   <a
1159          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeInboundDmarcSettings">AWS
1160          * API Reference</a></p>
1161          *
1162          * returns a future to the operation so that it can be executed in parallel to other requests.
1163          */
1164         virtual Model::DescribeInboundDmarcSettingsOutcomeCallable DescribeInboundDmarcSettingsCallable(const Model::DescribeInboundDmarcSettingsRequest& request) const;
1165 
1166         /**
1167          * <p>Lists the settings in a DMARC policy for a specified
1168          * organization.</p><p><h3>See Also:</h3>   <a
1169          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeInboundDmarcSettings">AWS
1170          * API Reference</a></p>
1171          *
1172          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1173          */
1174         virtual void DescribeInboundDmarcSettingsAsync(const Model::DescribeInboundDmarcSettingsRequest& request, const DescribeInboundDmarcSettingsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1175 
1176         /**
1177          * <p>Describes the current status of a mailbox export job.</p><p><h3>See
1178          * Also:</h3>   <a
1179          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeMailboxExportJob">AWS
1180          * API Reference</a></p>
1181          */
1182         virtual Model::DescribeMailboxExportJobOutcome DescribeMailboxExportJob(const Model::DescribeMailboxExportJobRequest& request) const;
1183 
1184         /**
1185          * <p>Describes the current status of a mailbox export job.</p><p><h3>See
1186          * Also:</h3>   <a
1187          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeMailboxExportJob">AWS
1188          * API Reference</a></p>
1189          *
1190          * returns a future to the operation so that it can be executed in parallel to other requests.
1191          */
1192         virtual Model::DescribeMailboxExportJobOutcomeCallable DescribeMailboxExportJobCallable(const Model::DescribeMailboxExportJobRequest& request) const;
1193 
1194         /**
1195          * <p>Describes the current status of a mailbox export job.</p><p><h3>See
1196          * Also:</h3>   <a
1197          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeMailboxExportJob">AWS
1198          * API Reference</a></p>
1199          *
1200          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1201          */
1202         virtual void DescribeMailboxExportJobAsync(const Model::DescribeMailboxExportJobRequest& request, const DescribeMailboxExportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1203 
1204         /**
1205          * <p>Provides more information regarding a given organization based on its
1206          * identifier.</p><p><h3>See Also:</h3>   <a
1207          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeOrganization">AWS
1208          * API Reference</a></p>
1209          */
1210         virtual Model::DescribeOrganizationOutcome DescribeOrganization(const Model::DescribeOrganizationRequest& request) const;
1211 
1212         /**
1213          * <p>Provides more information regarding a given organization based on its
1214          * identifier.</p><p><h3>See Also:</h3>   <a
1215          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeOrganization">AWS
1216          * API Reference</a></p>
1217          *
1218          * returns a future to the operation so that it can be executed in parallel to other requests.
1219          */
1220         virtual Model::DescribeOrganizationOutcomeCallable DescribeOrganizationCallable(const Model::DescribeOrganizationRequest& request) const;
1221 
1222         /**
1223          * <p>Provides more information regarding a given organization based on its
1224          * identifier.</p><p><h3>See Also:</h3>   <a
1225          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeOrganization">AWS
1226          * API Reference</a></p>
1227          *
1228          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1229          */
1230         virtual void DescribeOrganizationAsync(const Model::DescribeOrganizationRequest& request, const DescribeOrganizationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1231 
1232         /**
1233          * <p>Returns the data available for the resource.</p><p><h3>See Also:</h3>   <a
1234          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeResource">AWS
1235          * API Reference</a></p>
1236          */
1237         virtual Model::DescribeResourceOutcome DescribeResource(const Model::DescribeResourceRequest& request) const;
1238 
1239         /**
1240          * <p>Returns the data available for the resource.</p><p><h3>See Also:</h3>   <a
1241          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeResource">AWS
1242          * API Reference</a></p>
1243          *
1244          * returns a future to the operation so that it can be executed in parallel to other requests.
1245          */
1246         virtual Model::DescribeResourceOutcomeCallable DescribeResourceCallable(const Model::DescribeResourceRequest& request) const;
1247 
1248         /**
1249          * <p>Returns the data available for the resource.</p><p><h3>See Also:</h3>   <a
1250          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeResource">AWS
1251          * API Reference</a></p>
1252          *
1253          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1254          */
1255         virtual void DescribeResourceAsync(const Model::DescribeResourceRequest& request, const DescribeResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1256 
1257         /**
1258          * <p>Provides information regarding the user.</p><p><h3>See Also:</h3>   <a
1259          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeUser">AWS
1260          * API Reference</a></p>
1261          */
1262         virtual Model::DescribeUserOutcome DescribeUser(const Model::DescribeUserRequest& request) const;
1263 
1264         /**
1265          * <p>Provides information regarding the user.</p><p><h3>See Also:</h3>   <a
1266          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeUser">AWS
1267          * API Reference</a></p>
1268          *
1269          * returns a future to the operation so that it can be executed in parallel to other requests.
1270          */
1271         virtual Model::DescribeUserOutcomeCallable DescribeUserCallable(const Model::DescribeUserRequest& request) const;
1272 
1273         /**
1274          * <p>Provides information regarding the user.</p><p><h3>See Also:</h3>   <a
1275          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DescribeUser">AWS
1276          * API Reference</a></p>
1277          *
1278          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1279          */
1280         virtual void DescribeUserAsync(const Model::DescribeUserRequest& request, const DescribeUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1281 
1282         /**
1283          * <p>Removes a member from the resource's set of delegates.</p><p><h3>See
1284          * Also:</h3>   <a
1285          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DisassociateDelegateFromResource">AWS
1286          * API Reference</a></p>
1287          */
1288         virtual Model::DisassociateDelegateFromResourceOutcome DisassociateDelegateFromResource(const Model::DisassociateDelegateFromResourceRequest& request) const;
1289 
1290         /**
1291          * <p>Removes a member from the resource's set of delegates.</p><p><h3>See
1292          * Also:</h3>   <a
1293          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DisassociateDelegateFromResource">AWS
1294          * API Reference</a></p>
1295          *
1296          * returns a future to the operation so that it can be executed in parallel to other requests.
1297          */
1298         virtual Model::DisassociateDelegateFromResourceOutcomeCallable DisassociateDelegateFromResourceCallable(const Model::DisassociateDelegateFromResourceRequest& request) const;
1299 
1300         /**
1301          * <p>Removes a member from the resource's set of delegates.</p><p><h3>See
1302          * Also:</h3>   <a
1303          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DisassociateDelegateFromResource">AWS
1304          * API Reference</a></p>
1305          *
1306          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1307          */
1308         virtual void DisassociateDelegateFromResourceAsync(const Model::DisassociateDelegateFromResourceRequest& request, const DisassociateDelegateFromResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1309 
1310         /**
1311          * <p>Removes a member from a group.</p><p><h3>See Also:</h3>   <a
1312          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DisassociateMemberFromGroup">AWS
1313          * API Reference</a></p>
1314          */
1315         virtual Model::DisassociateMemberFromGroupOutcome DisassociateMemberFromGroup(const Model::DisassociateMemberFromGroupRequest& request) const;
1316 
1317         /**
1318          * <p>Removes a member from a group.</p><p><h3>See Also:</h3>   <a
1319          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DisassociateMemberFromGroup">AWS
1320          * API Reference</a></p>
1321          *
1322          * returns a future to the operation so that it can be executed in parallel to other requests.
1323          */
1324         virtual Model::DisassociateMemberFromGroupOutcomeCallable DisassociateMemberFromGroupCallable(const Model::DisassociateMemberFromGroupRequest& request) const;
1325 
1326         /**
1327          * <p>Removes a member from a group.</p><p><h3>See Also:</h3>   <a
1328          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/DisassociateMemberFromGroup">AWS
1329          * API Reference</a></p>
1330          *
1331          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1332          */
1333         virtual void DisassociateMemberFromGroupAsync(const Model::DisassociateMemberFromGroupRequest& request, const DisassociateMemberFromGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1334 
1335         /**
1336          * <p>Gets the effects of an organization's access control rules as they apply to a
1337          * specified IPv4 address, access protocol action, or user ID. </p><p><h3>See
1338          * Also:</h3>   <a
1339          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetAccessControlEffect">AWS
1340          * API Reference</a></p>
1341          */
1342         virtual Model::GetAccessControlEffectOutcome GetAccessControlEffect(const Model::GetAccessControlEffectRequest& request) const;
1343 
1344         /**
1345          * <p>Gets the effects of an organization's access control rules as they apply to a
1346          * specified IPv4 address, access protocol action, or user ID. </p><p><h3>See
1347          * Also:</h3>   <a
1348          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetAccessControlEffect">AWS
1349          * API Reference</a></p>
1350          *
1351          * returns a future to the operation so that it can be executed in parallel to other requests.
1352          */
1353         virtual Model::GetAccessControlEffectOutcomeCallable GetAccessControlEffectCallable(const Model::GetAccessControlEffectRequest& request) const;
1354 
1355         /**
1356          * <p>Gets the effects of an organization's access control rules as they apply to a
1357          * specified IPv4 address, access protocol action, or user ID. </p><p><h3>See
1358          * Also:</h3>   <a
1359          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetAccessControlEffect">AWS
1360          * API Reference</a></p>
1361          *
1362          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1363          */
1364         virtual void GetAccessControlEffectAsync(const Model::GetAccessControlEffectRequest& request, const GetAccessControlEffectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1365 
1366         /**
1367          * <p>Gets the default retention policy details for the specified
1368          * organization.</p><p><h3>See Also:</h3>   <a
1369          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetDefaultRetentionPolicy">AWS
1370          * API Reference</a></p>
1371          */
1372         virtual Model::GetDefaultRetentionPolicyOutcome GetDefaultRetentionPolicy(const Model::GetDefaultRetentionPolicyRequest& request) const;
1373 
1374         /**
1375          * <p>Gets the default retention policy details for the specified
1376          * organization.</p><p><h3>See Also:</h3>   <a
1377          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetDefaultRetentionPolicy">AWS
1378          * API Reference</a></p>
1379          *
1380          * returns a future to the operation so that it can be executed in parallel to other requests.
1381          */
1382         virtual Model::GetDefaultRetentionPolicyOutcomeCallable GetDefaultRetentionPolicyCallable(const Model::GetDefaultRetentionPolicyRequest& request) const;
1383 
1384         /**
1385          * <p>Gets the default retention policy details for the specified
1386          * organization.</p><p><h3>See Also:</h3>   <a
1387          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetDefaultRetentionPolicy">AWS
1388          * API Reference</a></p>
1389          *
1390          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1391          */
1392         virtual void GetDefaultRetentionPolicyAsync(const Model::GetDefaultRetentionPolicyRequest& request, const GetDefaultRetentionPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1393 
1394         /**
1395          * <p>Gets details for a mail domain, including domain records required to
1396          * configure your domain with recommended security.</p><p><h3>See Also:</h3>   <a
1397          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetMailDomain">AWS
1398          * API Reference</a></p>
1399          */
1400         virtual Model::GetMailDomainOutcome GetMailDomain(const Model::GetMailDomainRequest& request) const;
1401 
1402         /**
1403          * <p>Gets details for a mail domain, including domain records required to
1404          * configure your domain with recommended security.</p><p><h3>See Also:</h3>   <a
1405          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetMailDomain">AWS
1406          * API Reference</a></p>
1407          *
1408          * returns a future to the operation so that it can be executed in parallel to other requests.
1409          */
1410         virtual Model::GetMailDomainOutcomeCallable GetMailDomainCallable(const Model::GetMailDomainRequest& request) const;
1411 
1412         /**
1413          * <p>Gets details for a mail domain, including domain records required to
1414          * configure your domain with recommended security.</p><p><h3>See Also:</h3>   <a
1415          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetMailDomain">AWS
1416          * API Reference</a></p>
1417          *
1418          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1419          */
1420         virtual void GetMailDomainAsync(const Model::GetMailDomainRequest& request, const GetMailDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1421 
1422         /**
1423          * <p>Requests a user's mailbox details for a specified organization and
1424          * user.</p><p><h3>See Also:</h3>   <a
1425          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetMailboxDetails">AWS
1426          * API Reference</a></p>
1427          */
1428         virtual Model::GetMailboxDetailsOutcome GetMailboxDetails(const Model::GetMailboxDetailsRequest& request) const;
1429 
1430         /**
1431          * <p>Requests a user's mailbox details for a specified organization and
1432          * user.</p><p><h3>See Also:</h3>   <a
1433          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetMailboxDetails">AWS
1434          * API Reference</a></p>
1435          *
1436          * returns a future to the operation so that it can be executed in parallel to other requests.
1437          */
1438         virtual Model::GetMailboxDetailsOutcomeCallable GetMailboxDetailsCallable(const Model::GetMailboxDetailsRequest& request) const;
1439 
1440         /**
1441          * <p>Requests a user's mailbox details for a specified organization and
1442          * user.</p><p><h3>See Also:</h3>   <a
1443          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetMailboxDetails">AWS
1444          * API Reference</a></p>
1445          *
1446          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1447          */
1448         virtual void GetMailboxDetailsAsync(const Model::GetMailboxDetailsRequest& request, const GetMailboxDetailsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1449 
1450         /**
1451          * <p>Simulates the effect of the mobile device access rules for the given
1452          * attributes of a sample access event. Use this method to test the effects of the
1453          * current set of mobile device access rules for the Amazon WorkMail organization
1454          * for a particular user's attributes.</p><p><h3>See Also:</h3>   <a
1455          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetMobileDeviceAccessEffect">AWS
1456          * API Reference</a></p>
1457          */
1458         virtual Model::GetMobileDeviceAccessEffectOutcome GetMobileDeviceAccessEffect(const Model::GetMobileDeviceAccessEffectRequest& request) const;
1459 
1460         /**
1461          * <p>Simulates the effect of the mobile device access rules for the given
1462          * attributes of a sample access event. Use this method to test the effects of the
1463          * current set of mobile device access rules for the Amazon WorkMail organization
1464          * for a particular user's attributes.</p><p><h3>See Also:</h3>   <a
1465          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetMobileDeviceAccessEffect">AWS
1466          * API Reference</a></p>
1467          *
1468          * returns a future to the operation so that it can be executed in parallel to other requests.
1469          */
1470         virtual Model::GetMobileDeviceAccessEffectOutcomeCallable GetMobileDeviceAccessEffectCallable(const Model::GetMobileDeviceAccessEffectRequest& request) const;
1471 
1472         /**
1473          * <p>Simulates the effect of the mobile device access rules for the given
1474          * attributes of a sample access event. Use this method to test the effects of the
1475          * current set of mobile device access rules for the Amazon WorkMail organization
1476          * for a particular user's attributes.</p><p><h3>See Also:</h3>   <a
1477          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetMobileDeviceAccessEffect">AWS
1478          * API Reference</a></p>
1479          *
1480          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1481          */
1482         virtual void GetMobileDeviceAccessEffectAsync(const Model::GetMobileDeviceAccessEffectRequest& request, const GetMobileDeviceAccessEffectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1483 
1484         /**
1485          * <p>Gets the mobile device access override for the given WorkMail organization,
1486          * user, and device.</p><p><h3>See Also:</h3>   <a
1487          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetMobileDeviceAccessOverride">AWS
1488          * API Reference</a></p>
1489          */
1490         virtual Model::GetMobileDeviceAccessOverrideOutcome GetMobileDeviceAccessOverride(const Model::GetMobileDeviceAccessOverrideRequest& request) const;
1491 
1492         /**
1493          * <p>Gets the mobile device access override for the given WorkMail organization,
1494          * user, and device.</p><p><h3>See Also:</h3>   <a
1495          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetMobileDeviceAccessOverride">AWS
1496          * API Reference</a></p>
1497          *
1498          * returns a future to the operation so that it can be executed in parallel to other requests.
1499          */
1500         virtual Model::GetMobileDeviceAccessOverrideOutcomeCallable GetMobileDeviceAccessOverrideCallable(const Model::GetMobileDeviceAccessOverrideRequest& request) const;
1501 
1502         /**
1503          * <p>Gets the mobile device access override for the given WorkMail organization,
1504          * user, and device.</p><p><h3>See Also:</h3>   <a
1505          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/GetMobileDeviceAccessOverride">AWS
1506          * API Reference</a></p>
1507          *
1508          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1509          */
1510         virtual void GetMobileDeviceAccessOverrideAsync(const Model::GetMobileDeviceAccessOverrideRequest& request, const GetMobileDeviceAccessOverrideResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1511 
1512         /**
1513          * <p>Lists the access control rules for the specified organization.</p><p><h3>See
1514          * Also:</h3>   <a
1515          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListAccessControlRules">AWS
1516          * API Reference</a></p>
1517          */
1518         virtual Model::ListAccessControlRulesOutcome ListAccessControlRules(const Model::ListAccessControlRulesRequest& request) const;
1519 
1520         /**
1521          * <p>Lists the access control rules for the specified organization.</p><p><h3>See
1522          * Also:</h3>   <a
1523          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListAccessControlRules">AWS
1524          * API Reference</a></p>
1525          *
1526          * returns a future to the operation so that it can be executed in parallel to other requests.
1527          */
1528         virtual Model::ListAccessControlRulesOutcomeCallable ListAccessControlRulesCallable(const Model::ListAccessControlRulesRequest& request) const;
1529 
1530         /**
1531          * <p>Lists the access control rules for the specified organization.</p><p><h3>See
1532          * Also:</h3>   <a
1533          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListAccessControlRules">AWS
1534          * API Reference</a></p>
1535          *
1536          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1537          */
1538         virtual void ListAccessControlRulesAsync(const Model::ListAccessControlRulesRequest& request, const ListAccessControlRulesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1539 
1540         /**
1541          * <p>Creates a paginated call to list the aliases associated with a given
1542          * entity.</p><p><h3>See Also:</h3>   <a
1543          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListAliases">AWS
1544          * API Reference</a></p>
1545          */
1546         virtual Model::ListAliasesOutcome ListAliases(const Model::ListAliasesRequest& request) const;
1547 
1548         /**
1549          * <p>Creates a paginated call to list the aliases associated with a given
1550          * entity.</p><p><h3>See Also:</h3>   <a
1551          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListAliases">AWS
1552          * API Reference</a></p>
1553          *
1554          * returns a future to the operation so that it can be executed in parallel to other requests.
1555          */
1556         virtual Model::ListAliasesOutcomeCallable ListAliasesCallable(const Model::ListAliasesRequest& request) const;
1557 
1558         /**
1559          * <p>Creates a paginated call to list the aliases associated with a given
1560          * entity.</p><p><h3>See Also:</h3>   <a
1561          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListAliases">AWS
1562          * API Reference</a></p>
1563          *
1564          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1565          */
1566         virtual void ListAliasesAsync(const Model::ListAliasesRequest& request, const ListAliasesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1567 
1568         /**
1569          * <p>Returns an overview of the members of a group. Users and groups can be
1570          * members of a group.</p><p><h3>See Also:</h3>   <a
1571          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListGroupMembers">AWS
1572          * API Reference</a></p>
1573          */
1574         virtual Model::ListGroupMembersOutcome ListGroupMembers(const Model::ListGroupMembersRequest& request) const;
1575 
1576         /**
1577          * <p>Returns an overview of the members of a group. Users and groups can be
1578          * members of a group.</p><p><h3>See Also:</h3>   <a
1579          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListGroupMembers">AWS
1580          * API Reference</a></p>
1581          *
1582          * returns a future to the operation so that it can be executed in parallel to other requests.
1583          */
1584         virtual Model::ListGroupMembersOutcomeCallable ListGroupMembersCallable(const Model::ListGroupMembersRequest& request) const;
1585 
1586         /**
1587          * <p>Returns an overview of the members of a group. Users and groups can be
1588          * members of a group.</p><p><h3>See Also:</h3>   <a
1589          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListGroupMembers">AWS
1590          * API Reference</a></p>
1591          *
1592          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1593          */
1594         virtual void ListGroupMembersAsync(const Model::ListGroupMembersRequest& request, const ListGroupMembersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1595 
1596         /**
1597          * <p>Returns summaries of the organization's groups.</p><p><h3>See Also:</h3>   <a
1598          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListGroups">AWS
1599          * API Reference</a></p>
1600          */
1601         virtual Model::ListGroupsOutcome ListGroups(const Model::ListGroupsRequest& request) const;
1602 
1603         /**
1604          * <p>Returns summaries of the organization's groups.</p><p><h3>See Also:</h3>   <a
1605          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListGroups">AWS
1606          * API Reference</a></p>
1607          *
1608          * returns a future to the operation so that it can be executed in parallel to other requests.
1609          */
1610         virtual Model::ListGroupsOutcomeCallable ListGroupsCallable(const Model::ListGroupsRequest& request) const;
1611 
1612         /**
1613          * <p>Returns summaries of the organization's groups.</p><p><h3>See Also:</h3>   <a
1614          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListGroups">AWS
1615          * API Reference</a></p>
1616          *
1617          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1618          */
1619         virtual void ListGroupsAsync(const Model::ListGroupsRequest& request, const ListGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1620 
1621         /**
1622          * <p>Lists the mail domains in a given Amazon WorkMail organization.</p><p><h3>See
1623          * Also:</h3>   <a
1624          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMailDomains">AWS
1625          * API Reference</a></p>
1626          */
1627         virtual Model::ListMailDomainsOutcome ListMailDomains(const Model::ListMailDomainsRequest& request) const;
1628 
1629         /**
1630          * <p>Lists the mail domains in a given Amazon WorkMail organization.</p><p><h3>See
1631          * Also:</h3>   <a
1632          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMailDomains">AWS
1633          * API Reference</a></p>
1634          *
1635          * returns a future to the operation so that it can be executed in parallel to other requests.
1636          */
1637         virtual Model::ListMailDomainsOutcomeCallable ListMailDomainsCallable(const Model::ListMailDomainsRequest& request) const;
1638 
1639         /**
1640          * <p>Lists the mail domains in a given Amazon WorkMail organization.</p><p><h3>See
1641          * Also:</h3>   <a
1642          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMailDomains">AWS
1643          * API Reference</a></p>
1644          *
1645          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1646          */
1647         virtual void ListMailDomainsAsync(const Model::ListMailDomainsRequest& request, const ListMailDomainsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1648 
1649         /**
1650          * <p>Lists the mailbox export jobs started for the specified organization within
1651          * the last seven days.</p><p><h3>See Also:</h3>   <a
1652          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMailboxExportJobs">AWS
1653          * API Reference</a></p>
1654          */
1655         virtual Model::ListMailboxExportJobsOutcome ListMailboxExportJobs(const Model::ListMailboxExportJobsRequest& request) const;
1656 
1657         /**
1658          * <p>Lists the mailbox export jobs started for the specified organization within
1659          * the last seven days.</p><p><h3>See Also:</h3>   <a
1660          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMailboxExportJobs">AWS
1661          * API Reference</a></p>
1662          *
1663          * returns a future to the operation so that it can be executed in parallel to other requests.
1664          */
1665         virtual Model::ListMailboxExportJobsOutcomeCallable ListMailboxExportJobsCallable(const Model::ListMailboxExportJobsRequest& request) const;
1666 
1667         /**
1668          * <p>Lists the mailbox export jobs started for the specified organization within
1669          * the last seven days.</p><p><h3>See Also:</h3>   <a
1670          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMailboxExportJobs">AWS
1671          * API Reference</a></p>
1672          *
1673          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1674          */
1675         virtual void ListMailboxExportJobsAsync(const Model::ListMailboxExportJobsRequest& request, const ListMailboxExportJobsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1676 
1677         /**
1678          * <p>Lists the mailbox permissions associated with a user, group, or resource
1679          * mailbox.</p><p><h3>See Also:</h3>   <a
1680          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMailboxPermissions">AWS
1681          * API Reference</a></p>
1682          */
1683         virtual Model::ListMailboxPermissionsOutcome ListMailboxPermissions(const Model::ListMailboxPermissionsRequest& request) const;
1684 
1685         /**
1686          * <p>Lists the mailbox permissions associated with a user, group, or resource
1687          * mailbox.</p><p><h3>See Also:</h3>   <a
1688          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMailboxPermissions">AWS
1689          * API Reference</a></p>
1690          *
1691          * returns a future to the operation so that it can be executed in parallel to other requests.
1692          */
1693         virtual Model::ListMailboxPermissionsOutcomeCallable ListMailboxPermissionsCallable(const Model::ListMailboxPermissionsRequest& request) const;
1694 
1695         /**
1696          * <p>Lists the mailbox permissions associated with a user, group, or resource
1697          * mailbox.</p><p><h3>See Also:</h3>   <a
1698          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMailboxPermissions">AWS
1699          * API Reference</a></p>
1700          *
1701          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1702          */
1703         virtual void ListMailboxPermissionsAsync(const Model::ListMailboxPermissionsRequest& request, const ListMailboxPermissionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1704 
1705         /**
1706          * <p>Lists all the mobile device access overrides for any given combination of
1707          * WorkMail organization, user, or device.</p><p><h3>See Also:</h3>   <a
1708          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMobileDeviceAccessOverrides">AWS
1709          * API Reference</a></p>
1710          */
1711         virtual Model::ListMobileDeviceAccessOverridesOutcome ListMobileDeviceAccessOverrides(const Model::ListMobileDeviceAccessOverridesRequest& request) const;
1712 
1713         /**
1714          * <p>Lists all the mobile device access overrides for any given combination of
1715          * WorkMail organization, user, or device.</p><p><h3>See Also:</h3>   <a
1716          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMobileDeviceAccessOverrides">AWS
1717          * API Reference</a></p>
1718          *
1719          * returns a future to the operation so that it can be executed in parallel to other requests.
1720          */
1721         virtual Model::ListMobileDeviceAccessOverridesOutcomeCallable ListMobileDeviceAccessOverridesCallable(const Model::ListMobileDeviceAccessOverridesRequest& request) const;
1722 
1723         /**
1724          * <p>Lists all the mobile device access overrides for any given combination of
1725          * WorkMail organization, user, or device.</p><p><h3>See Also:</h3>   <a
1726          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMobileDeviceAccessOverrides">AWS
1727          * API Reference</a></p>
1728          *
1729          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1730          */
1731         virtual void ListMobileDeviceAccessOverridesAsync(const Model::ListMobileDeviceAccessOverridesRequest& request, const ListMobileDeviceAccessOverridesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1732 
1733         /**
1734          * <p>Lists the mobile device access rules for the specified Amazon WorkMail
1735          * organization.</p><p><h3>See Also:</h3>   <a
1736          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMobileDeviceAccessRules">AWS
1737          * API Reference</a></p>
1738          */
1739         virtual Model::ListMobileDeviceAccessRulesOutcome ListMobileDeviceAccessRules(const Model::ListMobileDeviceAccessRulesRequest& request) const;
1740 
1741         /**
1742          * <p>Lists the mobile device access rules for the specified Amazon WorkMail
1743          * organization.</p><p><h3>See Also:</h3>   <a
1744          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMobileDeviceAccessRules">AWS
1745          * API Reference</a></p>
1746          *
1747          * returns a future to the operation so that it can be executed in parallel to other requests.
1748          */
1749         virtual Model::ListMobileDeviceAccessRulesOutcomeCallable ListMobileDeviceAccessRulesCallable(const Model::ListMobileDeviceAccessRulesRequest& request) const;
1750 
1751         /**
1752          * <p>Lists the mobile device access rules for the specified Amazon WorkMail
1753          * organization.</p><p><h3>See Also:</h3>   <a
1754          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListMobileDeviceAccessRules">AWS
1755          * API Reference</a></p>
1756          *
1757          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1758          */
1759         virtual void ListMobileDeviceAccessRulesAsync(const Model::ListMobileDeviceAccessRulesRequest& request, const ListMobileDeviceAccessRulesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1760 
1761         /**
1762          * <p>Returns summaries of the customer's organizations.</p><p><h3>See Also:</h3>
1763          * <a
1764          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListOrganizations">AWS
1765          * API Reference</a></p>
1766          */
1767         virtual Model::ListOrganizationsOutcome ListOrganizations(const Model::ListOrganizationsRequest& request) const;
1768 
1769         /**
1770          * <p>Returns summaries of the customer's organizations.</p><p><h3>See Also:</h3>
1771          * <a
1772          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListOrganizations">AWS
1773          * API Reference</a></p>
1774          *
1775          * returns a future to the operation so that it can be executed in parallel to other requests.
1776          */
1777         virtual Model::ListOrganizationsOutcomeCallable ListOrganizationsCallable(const Model::ListOrganizationsRequest& request) const;
1778 
1779         /**
1780          * <p>Returns summaries of the customer's organizations.</p><p><h3>See Also:</h3>
1781          * <a
1782          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListOrganizations">AWS
1783          * API Reference</a></p>
1784          *
1785          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1786          */
1787         virtual void ListOrganizationsAsync(const Model::ListOrganizationsRequest& request, const ListOrganizationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1788 
1789         /**
1790          * <p>Lists the delegates associated with a resource. Users and groups can be
1791          * resource delegates and answer requests on behalf of the resource.</p><p><h3>See
1792          * Also:</h3>   <a
1793          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListResourceDelegates">AWS
1794          * API Reference</a></p>
1795          */
1796         virtual Model::ListResourceDelegatesOutcome ListResourceDelegates(const Model::ListResourceDelegatesRequest& request) const;
1797 
1798         /**
1799          * <p>Lists the delegates associated with a resource. Users and groups can be
1800          * resource delegates and answer requests on behalf of the resource.</p><p><h3>See
1801          * Also:</h3>   <a
1802          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListResourceDelegates">AWS
1803          * API Reference</a></p>
1804          *
1805          * returns a future to the operation so that it can be executed in parallel to other requests.
1806          */
1807         virtual Model::ListResourceDelegatesOutcomeCallable ListResourceDelegatesCallable(const Model::ListResourceDelegatesRequest& request) const;
1808 
1809         /**
1810          * <p>Lists the delegates associated with a resource. Users and groups can be
1811          * resource delegates and answer requests on behalf of the resource.</p><p><h3>See
1812          * Also:</h3>   <a
1813          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListResourceDelegates">AWS
1814          * API Reference</a></p>
1815          *
1816          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1817          */
1818         virtual void ListResourceDelegatesAsync(const Model::ListResourceDelegatesRequest& request, const ListResourceDelegatesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1819 
1820         /**
1821          * <p>Returns summaries of the organization's resources.</p><p><h3>See Also:</h3>
1822          * <a
1823          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListResources">AWS
1824          * API Reference</a></p>
1825          */
1826         virtual Model::ListResourcesOutcome ListResources(const Model::ListResourcesRequest& request) const;
1827 
1828         /**
1829          * <p>Returns summaries of the organization's resources.</p><p><h3>See Also:</h3>
1830          * <a
1831          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListResources">AWS
1832          * API Reference</a></p>
1833          *
1834          * returns a future to the operation so that it can be executed in parallel to other requests.
1835          */
1836         virtual Model::ListResourcesOutcomeCallable ListResourcesCallable(const Model::ListResourcesRequest& request) const;
1837 
1838         /**
1839          * <p>Returns summaries of the organization's resources.</p><p><h3>See Also:</h3>
1840          * <a
1841          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListResources">AWS
1842          * API Reference</a></p>
1843          *
1844          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1845          */
1846         virtual void ListResourcesAsync(const Model::ListResourcesRequest& request, const ListResourcesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1847 
1848         /**
1849          * <p>Lists the tags applied to an Amazon WorkMail organization
1850          * resource.</p><p><h3>See Also:</h3>   <a
1851          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListTagsForResource">AWS
1852          * API Reference</a></p>
1853          */
1854         virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const;
1855 
1856         /**
1857          * <p>Lists the tags applied to an Amazon WorkMail organization
1858          * resource.</p><p><h3>See Also:</h3>   <a
1859          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListTagsForResource">AWS
1860          * API Reference</a></p>
1861          *
1862          * returns a future to the operation so that it can be executed in parallel to other requests.
1863          */
1864         virtual Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const Model::ListTagsForResourceRequest& request) const;
1865 
1866         /**
1867          * <p>Lists the tags applied to an Amazon WorkMail organization
1868          * resource.</p><p><h3>See Also:</h3>   <a
1869          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListTagsForResource">AWS
1870          * API Reference</a></p>
1871          *
1872          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1873          */
1874         virtual void ListTagsForResourceAsync(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1875 
1876         /**
1877          * <p>Returns summaries of the organization's users.</p><p><h3>See Also:</h3>   <a
1878          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListUsers">AWS
1879          * API Reference</a></p>
1880          */
1881         virtual Model::ListUsersOutcome ListUsers(const Model::ListUsersRequest& request) const;
1882 
1883         /**
1884          * <p>Returns summaries of the organization's users.</p><p><h3>See Also:</h3>   <a
1885          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListUsers">AWS
1886          * API Reference</a></p>
1887          *
1888          * returns a future to the operation so that it can be executed in parallel to other requests.
1889          */
1890         virtual Model::ListUsersOutcomeCallable ListUsersCallable(const Model::ListUsersRequest& request) const;
1891 
1892         /**
1893          * <p>Returns summaries of the organization's users.</p><p><h3>See Also:</h3>   <a
1894          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ListUsers">AWS
1895          * API Reference</a></p>
1896          *
1897          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1898          */
1899         virtual void ListUsersAsync(const Model::ListUsersRequest& request, const ListUsersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1900 
1901         /**
1902          * <p>Adds a new access control rule for the specified organization. The rule
1903          * allows or denies access to the organization for the specified IPv4 addresses,
1904          * access protocol actions, and user IDs. Adding a new rule with the same name as
1905          * an existing rule replaces the older rule.</p><p><h3>See Also:</h3>   <a
1906          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutAccessControlRule">AWS
1907          * API Reference</a></p>
1908          */
1909         virtual Model::PutAccessControlRuleOutcome PutAccessControlRule(const Model::PutAccessControlRuleRequest& request) const;
1910 
1911         /**
1912          * <p>Adds a new access control rule for the specified organization. The rule
1913          * allows or denies access to the organization for the specified IPv4 addresses,
1914          * access protocol actions, and user IDs. Adding a new rule with the same name as
1915          * an existing rule replaces the older rule.</p><p><h3>See Also:</h3>   <a
1916          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutAccessControlRule">AWS
1917          * API Reference</a></p>
1918          *
1919          * returns a future to the operation so that it can be executed in parallel to other requests.
1920          */
1921         virtual Model::PutAccessControlRuleOutcomeCallable PutAccessControlRuleCallable(const Model::PutAccessControlRuleRequest& request) const;
1922 
1923         /**
1924          * <p>Adds a new access control rule for the specified organization. The rule
1925          * allows or denies access to the organization for the specified IPv4 addresses,
1926          * access protocol actions, and user IDs. Adding a new rule with the same name as
1927          * an existing rule replaces the older rule.</p><p><h3>See Also:</h3>   <a
1928          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutAccessControlRule">AWS
1929          * API Reference</a></p>
1930          *
1931          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1932          */
1933         virtual void PutAccessControlRuleAsync(const Model::PutAccessControlRuleRequest& request, const PutAccessControlRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1934 
1935         /**
1936          * <p>Enables or disables a DMARC policy for a given organization.</p><p><h3>See
1937          * Also:</h3>   <a
1938          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutInboundDmarcSettings">AWS
1939          * API Reference</a></p>
1940          */
1941         virtual Model::PutInboundDmarcSettingsOutcome PutInboundDmarcSettings(const Model::PutInboundDmarcSettingsRequest& request) const;
1942 
1943         /**
1944          * <p>Enables or disables a DMARC policy for a given organization.</p><p><h3>See
1945          * Also:</h3>   <a
1946          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutInboundDmarcSettings">AWS
1947          * API Reference</a></p>
1948          *
1949          * returns a future to the operation so that it can be executed in parallel to other requests.
1950          */
1951         virtual Model::PutInboundDmarcSettingsOutcomeCallable PutInboundDmarcSettingsCallable(const Model::PutInboundDmarcSettingsRequest& request) const;
1952 
1953         /**
1954          * <p>Enables or disables a DMARC policy for a given organization.</p><p><h3>See
1955          * Also:</h3>   <a
1956          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutInboundDmarcSettings">AWS
1957          * API Reference</a></p>
1958          *
1959          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1960          */
1961         virtual void PutInboundDmarcSettingsAsync(const Model::PutInboundDmarcSettingsRequest& request, const PutInboundDmarcSettingsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1962 
1963         /**
1964          * <p>Sets permissions for a user, group, or resource. This replaces any
1965          * pre-existing permissions.</p><p><h3>See Also:</h3>   <a
1966          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutMailboxPermissions">AWS
1967          * API Reference</a></p>
1968          */
1969         virtual Model::PutMailboxPermissionsOutcome PutMailboxPermissions(const Model::PutMailboxPermissionsRequest& request) const;
1970 
1971         /**
1972          * <p>Sets permissions for a user, group, or resource. This replaces any
1973          * pre-existing permissions.</p><p><h3>See Also:</h3>   <a
1974          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutMailboxPermissions">AWS
1975          * API Reference</a></p>
1976          *
1977          * returns a future to the operation so that it can be executed in parallel to other requests.
1978          */
1979         virtual Model::PutMailboxPermissionsOutcomeCallable PutMailboxPermissionsCallable(const Model::PutMailboxPermissionsRequest& request) const;
1980 
1981         /**
1982          * <p>Sets permissions for a user, group, or resource. This replaces any
1983          * pre-existing permissions.</p><p><h3>See Also:</h3>   <a
1984          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutMailboxPermissions">AWS
1985          * API Reference</a></p>
1986          *
1987          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1988          */
1989         virtual void PutMailboxPermissionsAsync(const Model::PutMailboxPermissionsRequest& request, const PutMailboxPermissionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1990 
1991         /**
1992          * <p>Creates or updates a mobile device access override for the given WorkMail
1993          * organization, user, and device.</p><p><h3>See Also:</h3>   <a
1994          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutMobileDeviceAccessOverride">AWS
1995          * API Reference</a></p>
1996          */
1997         virtual Model::PutMobileDeviceAccessOverrideOutcome PutMobileDeviceAccessOverride(const Model::PutMobileDeviceAccessOverrideRequest& request) const;
1998 
1999         /**
2000          * <p>Creates or updates a mobile device access override for the given WorkMail
2001          * organization, user, and device.</p><p><h3>See Also:</h3>   <a
2002          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutMobileDeviceAccessOverride">AWS
2003          * API Reference</a></p>
2004          *
2005          * returns a future to the operation so that it can be executed in parallel to other requests.
2006          */
2007         virtual Model::PutMobileDeviceAccessOverrideOutcomeCallable PutMobileDeviceAccessOverrideCallable(const Model::PutMobileDeviceAccessOverrideRequest& request) const;
2008 
2009         /**
2010          * <p>Creates or updates a mobile device access override for the given WorkMail
2011          * organization, user, and device.</p><p><h3>See Also:</h3>   <a
2012          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutMobileDeviceAccessOverride">AWS
2013          * API Reference</a></p>
2014          *
2015          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2016          */
2017         virtual void PutMobileDeviceAccessOverrideAsync(const Model::PutMobileDeviceAccessOverrideRequest& request, const PutMobileDeviceAccessOverrideResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2018 
2019         /**
2020          * <p>Puts a retention policy to the specified organization.</p><p><h3>See
2021          * Also:</h3>   <a
2022          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutRetentionPolicy">AWS
2023          * API Reference</a></p>
2024          */
2025         virtual Model::PutRetentionPolicyOutcome PutRetentionPolicy(const Model::PutRetentionPolicyRequest& request) const;
2026 
2027         /**
2028          * <p>Puts a retention policy to the specified organization.</p><p><h3>See
2029          * Also:</h3>   <a
2030          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutRetentionPolicy">AWS
2031          * API Reference</a></p>
2032          *
2033          * returns a future to the operation so that it can be executed in parallel to other requests.
2034          */
2035         virtual Model::PutRetentionPolicyOutcomeCallable PutRetentionPolicyCallable(const Model::PutRetentionPolicyRequest& request) const;
2036 
2037         /**
2038          * <p>Puts a retention policy to the specified organization.</p><p><h3>See
2039          * Also:</h3>   <a
2040          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/PutRetentionPolicy">AWS
2041          * API Reference</a></p>
2042          *
2043          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2044          */
2045         virtual void PutRetentionPolicyAsync(const Model::PutRetentionPolicyRequest& request, const PutRetentionPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2046 
2047         /**
2048          * <p>Registers a new domain in Amazon WorkMail and SES, and configures it for use
2049          * by WorkMail. Emails received by SES for this domain are routed to the specified
2050          * WorkMail organization, and WorkMail has permanent permission to use the
2051          * specified domain for sending your users' emails.</p><p><h3>See Also:</h3>   <a
2052          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/RegisterMailDomain">AWS
2053          * API Reference</a></p>
2054          */
2055         virtual Model::RegisterMailDomainOutcome RegisterMailDomain(const Model::RegisterMailDomainRequest& request) const;
2056 
2057         /**
2058          * <p>Registers a new domain in Amazon WorkMail and SES, and configures it for use
2059          * by WorkMail. Emails received by SES for this domain are routed to the specified
2060          * WorkMail organization, and WorkMail has permanent permission to use the
2061          * specified domain for sending your users' emails.</p><p><h3>See Also:</h3>   <a
2062          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/RegisterMailDomain">AWS
2063          * API Reference</a></p>
2064          *
2065          * returns a future to the operation so that it can be executed in parallel to other requests.
2066          */
2067         virtual Model::RegisterMailDomainOutcomeCallable RegisterMailDomainCallable(const Model::RegisterMailDomainRequest& request) const;
2068 
2069         /**
2070          * <p>Registers a new domain in Amazon WorkMail and SES, and configures it for use
2071          * by WorkMail. Emails received by SES for this domain are routed to the specified
2072          * WorkMail organization, and WorkMail has permanent permission to use the
2073          * specified domain for sending your users' emails.</p><p><h3>See Also:</h3>   <a
2074          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/RegisterMailDomain">AWS
2075          * API Reference</a></p>
2076          *
2077          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2078          */
2079         virtual void RegisterMailDomainAsync(const Model::RegisterMailDomainRequest& request, const RegisterMailDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2080 
2081         /**
2082          * <p>Registers an existing and disabled user, group, or resource for Amazon
2083          * WorkMail use by associating a mailbox and calendaring capabilities. It performs
2084          * no change if the user, group, or resource is enabled and fails if the user,
2085          * group, or resource is deleted. This operation results in the accumulation of
2086          * costs. For more information, see <a
2087          * href="https://aws.amazon.com/workmail/pricing">Pricing</a>. The equivalent
2088          * console functionality for this operation is <i>Enable</i>. </p> <p>Users can
2089          * either be created by calling the <a>CreateUser</a> API operation or they can be
2090          * synchronized from your directory. For more information, see
2091          * <a>DeregisterFromWorkMail</a>.</p><p><h3>See Also:</h3>   <a
2092          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/RegisterToWorkMail">AWS
2093          * API Reference</a></p>
2094          */
2095         virtual Model::RegisterToWorkMailOutcome RegisterToWorkMail(const Model::RegisterToWorkMailRequest& request) const;
2096 
2097         /**
2098          * <p>Registers an existing and disabled user, group, or resource for Amazon
2099          * WorkMail use by associating a mailbox and calendaring capabilities. It performs
2100          * no change if the user, group, or resource is enabled and fails if the user,
2101          * group, or resource is deleted. This operation results in the accumulation of
2102          * costs. For more information, see <a
2103          * href="https://aws.amazon.com/workmail/pricing">Pricing</a>. The equivalent
2104          * console functionality for this operation is <i>Enable</i>. </p> <p>Users can
2105          * either be created by calling the <a>CreateUser</a> API operation or they can be
2106          * synchronized from your directory. For more information, see
2107          * <a>DeregisterFromWorkMail</a>.</p><p><h3>See Also:</h3>   <a
2108          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/RegisterToWorkMail">AWS
2109          * API Reference</a></p>
2110          *
2111          * returns a future to the operation so that it can be executed in parallel to other requests.
2112          */
2113         virtual Model::RegisterToWorkMailOutcomeCallable RegisterToWorkMailCallable(const Model::RegisterToWorkMailRequest& request) const;
2114 
2115         /**
2116          * <p>Registers an existing and disabled user, group, or resource for Amazon
2117          * WorkMail use by associating a mailbox and calendaring capabilities. It performs
2118          * no change if the user, group, or resource is enabled and fails if the user,
2119          * group, or resource is deleted. This operation results in the accumulation of
2120          * costs. For more information, see <a
2121          * href="https://aws.amazon.com/workmail/pricing">Pricing</a>. The equivalent
2122          * console functionality for this operation is <i>Enable</i>. </p> <p>Users can
2123          * either be created by calling the <a>CreateUser</a> API operation or they can be
2124          * synchronized from your directory. For more information, see
2125          * <a>DeregisterFromWorkMail</a>.</p><p><h3>See Also:</h3>   <a
2126          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/RegisterToWorkMail">AWS
2127          * API Reference</a></p>
2128          *
2129          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2130          */
2131         virtual void RegisterToWorkMailAsync(const Model::RegisterToWorkMailRequest& request, const RegisterToWorkMailResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2132 
2133         /**
2134          * <p>Allows the administrator to reset the password for a user.</p><p><h3>See
2135          * Also:</h3>   <a
2136          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ResetPassword">AWS
2137          * API Reference</a></p>
2138          */
2139         virtual Model::ResetPasswordOutcome ResetPassword(const Model::ResetPasswordRequest& request) const;
2140 
2141         /**
2142          * <p>Allows the administrator to reset the password for a user.</p><p><h3>See
2143          * Also:</h3>   <a
2144          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ResetPassword">AWS
2145          * API Reference</a></p>
2146          *
2147          * returns a future to the operation so that it can be executed in parallel to other requests.
2148          */
2149         virtual Model::ResetPasswordOutcomeCallable ResetPasswordCallable(const Model::ResetPasswordRequest& request) const;
2150 
2151         /**
2152          * <p>Allows the administrator to reset the password for a user.</p><p><h3>See
2153          * Also:</h3>   <a
2154          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/ResetPassword">AWS
2155          * API Reference</a></p>
2156          *
2157          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2158          */
2159         virtual void ResetPasswordAsync(const Model::ResetPasswordRequest& request, const ResetPasswordResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2160 
2161         /**
2162          * <p>Starts a mailbox export job to export MIME-format email messages and calendar
2163          * items from the specified mailbox to the specified Amazon Simple Storage Service
2164          * (Amazon S3) bucket. For more information, see <a
2165          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/mail-export.html">Exporting
2166          * mailbox content</a> in the <i>Amazon WorkMail Administrator
2167          * Guide</i>.</p><p><h3>See Also:</h3>   <a
2168          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/StartMailboxExportJob">AWS
2169          * API Reference</a></p>
2170          */
2171         virtual Model::StartMailboxExportJobOutcome StartMailboxExportJob(const Model::StartMailboxExportJobRequest& request) const;
2172 
2173         /**
2174          * <p>Starts a mailbox export job to export MIME-format email messages and calendar
2175          * items from the specified mailbox to the specified Amazon Simple Storage Service
2176          * (Amazon S3) bucket. For more information, see <a
2177          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/mail-export.html">Exporting
2178          * mailbox content</a> in the <i>Amazon WorkMail Administrator
2179          * Guide</i>.</p><p><h3>See Also:</h3>   <a
2180          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/StartMailboxExportJob">AWS
2181          * API Reference</a></p>
2182          *
2183          * returns a future to the operation so that it can be executed in parallel to other requests.
2184          */
2185         virtual Model::StartMailboxExportJobOutcomeCallable StartMailboxExportJobCallable(const Model::StartMailboxExportJobRequest& request) const;
2186 
2187         /**
2188          * <p>Starts a mailbox export job to export MIME-format email messages and calendar
2189          * items from the specified mailbox to the specified Amazon Simple Storage Service
2190          * (Amazon S3) bucket. For more information, see <a
2191          * href="https://docs.aws.amazon.com/workmail/latest/adminguide/mail-export.html">Exporting
2192          * mailbox content</a> in the <i>Amazon WorkMail Administrator
2193          * Guide</i>.</p><p><h3>See Also:</h3>   <a
2194          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/StartMailboxExportJob">AWS
2195          * API Reference</a></p>
2196          *
2197          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2198          */
2199         virtual void StartMailboxExportJobAsync(const Model::StartMailboxExportJobRequest& request, const StartMailboxExportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2200 
2201         /**
2202          * <p>Applies the specified tags to the specified Amazon WorkMail organization
2203          * resource.</p><p><h3>See Also:</h3>   <a
2204          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/TagResource">AWS
2205          * API Reference</a></p>
2206          */
2207         virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const;
2208 
2209         /**
2210          * <p>Applies the specified tags to the specified Amazon WorkMail organization
2211          * resource.</p><p><h3>See Also:</h3>   <a
2212          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/TagResource">AWS
2213          * API Reference</a></p>
2214          *
2215          * returns a future to the operation so that it can be executed in parallel to other requests.
2216          */
2217         virtual Model::TagResourceOutcomeCallable TagResourceCallable(const Model::TagResourceRequest& request) const;
2218 
2219         /**
2220          * <p>Applies the specified tags to the specified Amazon WorkMail organization
2221          * resource.</p><p><h3>See Also:</h3>   <a
2222          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/TagResource">AWS
2223          * API Reference</a></p>
2224          *
2225          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2226          */
2227         virtual void TagResourceAsync(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2228 
2229         /**
2230          * <p>Untags the specified tags from the specified Amazon WorkMail organization
2231          * resource.</p><p><h3>See Also:</h3>   <a
2232          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UntagResource">AWS
2233          * API Reference</a></p>
2234          */
2235         virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const;
2236 
2237         /**
2238          * <p>Untags the specified tags from the specified Amazon WorkMail organization
2239          * resource.</p><p><h3>See Also:</h3>   <a
2240          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UntagResource">AWS
2241          * API Reference</a></p>
2242          *
2243          * returns a future to the operation so that it can be executed in parallel to other requests.
2244          */
2245         virtual Model::UntagResourceOutcomeCallable UntagResourceCallable(const Model::UntagResourceRequest& request) const;
2246 
2247         /**
2248          * <p>Untags the specified tags from the specified Amazon WorkMail organization
2249          * resource.</p><p><h3>See Also:</h3>   <a
2250          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UntagResource">AWS
2251          * API Reference</a></p>
2252          *
2253          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2254          */
2255         virtual void UntagResourceAsync(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2256 
2257         /**
2258          * <p>Updates the default mail domain for an organization. The default mail domain
2259          * is used by the WorkMail AWS Console to suggest an email address when enabling a
2260          * mail user. You can only have one default domain.</p><p><h3>See Also:</h3>   <a
2261          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdateDefaultMailDomain">AWS
2262          * API Reference</a></p>
2263          */
2264         virtual Model::UpdateDefaultMailDomainOutcome UpdateDefaultMailDomain(const Model::UpdateDefaultMailDomainRequest& request) const;
2265 
2266         /**
2267          * <p>Updates the default mail domain for an organization. The default mail domain
2268          * is used by the WorkMail AWS Console to suggest an email address when enabling a
2269          * mail user. You can only have one default domain.</p><p><h3>See Also:</h3>   <a
2270          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdateDefaultMailDomain">AWS
2271          * API Reference</a></p>
2272          *
2273          * returns a future to the operation so that it can be executed in parallel to other requests.
2274          */
2275         virtual Model::UpdateDefaultMailDomainOutcomeCallable UpdateDefaultMailDomainCallable(const Model::UpdateDefaultMailDomainRequest& request) const;
2276 
2277         /**
2278          * <p>Updates the default mail domain for an organization. The default mail domain
2279          * is used by the WorkMail AWS Console to suggest an email address when enabling a
2280          * mail user. You can only have one default domain.</p><p><h3>See Also:</h3>   <a
2281          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdateDefaultMailDomain">AWS
2282          * API Reference</a></p>
2283          *
2284          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2285          */
2286         virtual void UpdateDefaultMailDomainAsync(const Model::UpdateDefaultMailDomainRequest& request, const UpdateDefaultMailDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2287 
2288         /**
2289          * <p>Updates a user's current mailbox quota for a specified organization and
2290          * user.</p><p><h3>See Also:</h3>   <a
2291          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdateMailboxQuota">AWS
2292          * API Reference</a></p>
2293          */
2294         virtual Model::UpdateMailboxQuotaOutcome UpdateMailboxQuota(const Model::UpdateMailboxQuotaRequest& request) const;
2295 
2296         /**
2297          * <p>Updates a user's current mailbox quota for a specified organization and
2298          * user.</p><p><h3>See Also:</h3>   <a
2299          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdateMailboxQuota">AWS
2300          * API Reference</a></p>
2301          *
2302          * returns a future to the operation so that it can be executed in parallel to other requests.
2303          */
2304         virtual Model::UpdateMailboxQuotaOutcomeCallable UpdateMailboxQuotaCallable(const Model::UpdateMailboxQuotaRequest& request) const;
2305 
2306         /**
2307          * <p>Updates a user's current mailbox quota for a specified organization and
2308          * user.</p><p><h3>See Also:</h3>   <a
2309          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdateMailboxQuota">AWS
2310          * API Reference</a></p>
2311          *
2312          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2313          */
2314         virtual void UpdateMailboxQuotaAsync(const Model::UpdateMailboxQuotaRequest& request, const UpdateMailboxQuotaResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2315 
2316         /**
2317          * <p>Updates a mobile device access rule for the specified Amazon WorkMail
2318          * organization.</p><p><h3>See Also:</h3>   <a
2319          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdateMobileDeviceAccessRule">AWS
2320          * API Reference</a></p>
2321          */
2322         virtual Model::UpdateMobileDeviceAccessRuleOutcome UpdateMobileDeviceAccessRule(const Model::UpdateMobileDeviceAccessRuleRequest& request) const;
2323 
2324         /**
2325          * <p>Updates a mobile device access rule for the specified Amazon WorkMail
2326          * organization.</p><p><h3>See Also:</h3>   <a
2327          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdateMobileDeviceAccessRule">AWS
2328          * API Reference</a></p>
2329          *
2330          * returns a future to the operation so that it can be executed in parallel to other requests.
2331          */
2332         virtual Model::UpdateMobileDeviceAccessRuleOutcomeCallable UpdateMobileDeviceAccessRuleCallable(const Model::UpdateMobileDeviceAccessRuleRequest& request) const;
2333 
2334         /**
2335          * <p>Updates a mobile device access rule for the specified Amazon WorkMail
2336          * organization.</p><p><h3>See Also:</h3>   <a
2337          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdateMobileDeviceAccessRule">AWS
2338          * API Reference</a></p>
2339          *
2340          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2341          */
2342         virtual void UpdateMobileDeviceAccessRuleAsync(const Model::UpdateMobileDeviceAccessRuleRequest& request, const UpdateMobileDeviceAccessRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2343 
2344         /**
2345          * <p>Updates the primary email for a user, group, or resource. The current email
2346          * is moved into the list of aliases (or swapped between an existing alias and the
2347          * current primary email), and the email provided in the input is promoted as the
2348          * primary.</p><p><h3>See Also:</h3>   <a
2349          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdatePrimaryEmailAddress">AWS
2350          * API Reference</a></p>
2351          */
2352         virtual Model::UpdatePrimaryEmailAddressOutcome UpdatePrimaryEmailAddress(const Model::UpdatePrimaryEmailAddressRequest& request) const;
2353 
2354         /**
2355          * <p>Updates the primary email for a user, group, or resource. The current email
2356          * is moved into the list of aliases (or swapped between an existing alias and the
2357          * current primary email), and the email provided in the input is promoted as the
2358          * primary.</p><p><h3>See Also:</h3>   <a
2359          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdatePrimaryEmailAddress">AWS
2360          * API Reference</a></p>
2361          *
2362          * returns a future to the operation so that it can be executed in parallel to other requests.
2363          */
2364         virtual Model::UpdatePrimaryEmailAddressOutcomeCallable UpdatePrimaryEmailAddressCallable(const Model::UpdatePrimaryEmailAddressRequest& request) const;
2365 
2366         /**
2367          * <p>Updates the primary email for a user, group, or resource. The current email
2368          * is moved into the list of aliases (or swapped between an existing alias and the
2369          * current primary email), and the email provided in the input is promoted as the
2370          * primary.</p><p><h3>See Also:</h3>   <a
2371          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdatePrimaryEmailAddress">AWS
2372          * API Reference</a></p>
2373          *
2374          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2375          */
2376         virtual void UpdatePrimaryEmailAddressAsync(const Model::UpdatePrimaryEmailAddressRequest& request, const UpdatePrimaryEmailAddressResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2377 
2378         /**
2379          * <p>Updates data for the resource. To have the latest information, it must be
2380          * preceded by a <a>DescribeResource</a> call. The dataset in the request should be
2381          * the one expected when performing another <code>DescribeResource</code>
2382          * call.</p><p><h3>See Also:</h3>   <a
2383          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdateResource">AWS
2384          * API Reference</a></p>
2385          */
2386         virtual Model::UpdateResourceOutcome UpdateResource(const Model::UpdateResourceRequest& request) const;
2387 
2388         /**
2389          * <p>Updates data for the resource. To have the latest information, it must be
2390          * preceded by a <a>DescribeResource</a> call. The dataset in the request should be
2391          * the one expected when performing another <code>DescribeResource</code>
2392          * call.</p><p><h3>See Also:</h3>   <a
2393          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdateResource">AWS
2394          * API Reference</a></p>
2395          *
2396          * returns a future to the operation so that it can be executed in parallel to other requests.
2397          */
2398         virtual Model::UpdateResourceOutcomeCallable UpdateResourceCallable(const Model::UpdateResourceRequest& request) const;
2399 
2400         /**
2401          * <p>Updates data for the resource. To have the latest information, it must be
2402          * preceded by a <a>DescribeResource</a> call. The dataset in the request should be
2403          * the one expected when performing another <code>DescribeResource</code>
2404          * call.</p><p><h3>See Also:</h3>   <a
2405          * href="http://docs.aws.amazon.com/goto/WebAPI/workmail-2017-10-01/UpdateResource">AWS
2406          * API Reference</a></p>
2407          *
2408          * Queues the request into a thread executor and triggers associated callback when operation has finished.
2409          */
2410         virtual void UpdateResourceAsync(const Model::UpdateResourceRequest& request, const UpdateResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
2411 
2412 
2413       void OverrideEndpoint(const Aws::String& endpoint);
2414     private:
2415       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
2416         void AssociateDelegateToResourceAsyncHelper(const Model::AssociateDelegateToResourceRequest& request, const AssociateDelegateToResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2417         void AssociateMemberToGroupAsyncHelper(const Model::AssociateMemberToGroupRequest& request, const AssociateMemberToGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2418         void CancelMailboxExportJobAsyncHelper(const Model::CancelMailboxExportJobRequest& request, const CancelMailboxExportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2419         void CreateAliasAsyncHelper(const Model::CreateAliasRequest& request, const CreateAliasResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2420         void CreateGroupAsyncHelper(const Model::CreateGroupRequest& request, const CreateGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2421         void CreateMobileDeviceAccessRuleAsyncHelper(const Model::CreateMobileDeviceAccessRuleRequest& request, const CreateMobileDeviceAccessRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2422         void CreateOrganizationAsyncHelper(const Model::CreateOrganizationRequest& request, const CreateOrganizationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2423         void CreateResourceAsyncHelper(const Model::CreateResourceRequest& request, const CreateResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2424         void CreateUserAsyncHelper(const Model::CreateUserRequest& request, const CreateUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2425         void DeleteAccessControlRuleAsyncHelper(const Model::DeleteAccessControlRuleRequest& request, const DeleteAccessControlRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2426         void DeleteAliasAsyncHelper(const Model::DeleteAliasRequest& request, const DeleteAliasResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2427         void DeleteGroupAsyncHelper(const Model::DeleteGroupRequest& request, const DeleteGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2428         void DeleteMailboxPermissionsAsyncHelper(const Model::DeleteMailboxPermissionsRequest& request, const DeleteMailboxPermissionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2429         void DeleteMobileDeviceAccessOverrideAsyncHelper(const Model::DeleteMobileDeviceAccessOverrideRequest& request, const DeleteMobileDeviceAccessOverrideResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2430         void DeleteMobileDeviceAccessRuleAsyncHelper(const Model::DeleteMobileDeviceAccessRuleRequest& request, const DeleteMobileDeviceAccessRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2431         void DeleteOrganizationAsyncHelper(const Model::DeleteOrganizationRequest& request, const DeleteOrganizationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2432         void DeleteResourceAsyncHelper(const Model::DeleteResourceRequest& request, const DeleteResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2433         void DeleteRetentionPolicyAsyncHelper(const Model::DeleteRetentionPolicyRequest& request, const DeleteRetentionPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2434         void DeleteUserAsyncHelper(const Model::DeleteUserRequest& request, const DeleteUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2435         void DeregisterFromWorkMailAsyncHelper(const Model::DeregisterFromWorkMailRequest& request, const DeregisterFromWorkMailResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2436         void DeregisterMailDomainAsyncHelper(const Model::DeregisterMailDomainRequest& request, const DeregisterMailDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2437         void DescribeGroupAsyncHelper(const Model::DescribeGroupRequest& request, const DescribeGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2438         void DescribeInboundDmarcSettingsAsyncHelper(const Model::DescribeInboundDmarcSettingsRequest& request, const DescribeInboundDmarcSettingsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2439         void DescribeMailboxExportJobAsyncHelper(const Model::DescribeMailboxExportJobRequest& request, const DescribeMailboxExportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2440         void DescribeOrganizationAsyncHelper(const Model::DescribeOrganizationRequest& request, const DescribeOrganizationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2441         void DescribeResourceAsyncHelper(const Model::DescribeResourceRequest& request, const DescribeResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2442         void DescribeUserAsyncHelper(const Model::DescribeUserRequest& request, const DescribeUserResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2443         void DisassociateDelegateFromResourceAsyncHelper(const Model::DisassociateDelegateFromResourceRequest& request, const DisassociateDelegateFromResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2444         void DisassociateMemberFromGroupAsyncHelper(const Model::DisassociateMemberFromGroupRequest& request, const DisassociateMemberFromGroupResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2445         void GetAccessControlEffectAsyncHelper(const Model::GetAccessControlEffectRequest& request, const GetAccessControlEffectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2446         void GetDefaultRetentionPolicyAsyncHelper(const Model::GetDefaultRetentionPolicyRequest& request, const GetDefaultRetentionPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2447         void GetMailDomainAsyncHelper(const Model::GetMailDomainRequest& request, const GetMailDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2448         void GetMailboxDetailsAsyncHelper(const Model::GetMailboxDetailsRequest& request, const GetMailboxDetailsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2449         void GetMobileDeviceAccessEffectAsyncHelper(const Model::GetMobileDeviceAccessEffectRequest& request, const GetMobileDeviceAccessEffectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2450         void GetMobileDeviceAccessOverrideAsyncHelper(const Model::GetMobileDeviceAccessOverrideRequest& request, const GetMobileDeviceAccessOverrideResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2451         void ListAccessControlRulesAsyncHelper(const Model::ListAccessControlRulesRequest& request, const ListAccessControlRulesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2452         void ListAliasesAsyncHelper(const Model::ListAliasesRequest& request, const ListAliasesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2453         void ListGroupMembersAsyncHelper(const Model::ListGroupMembersRequest& request, const ListGroupMembersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2454         void ListGroupsAsyncHelper(const Model::ListGroupsRequest& request, const ListGroupsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2455         void ListMailDomainsAsyncHelper(const Model::ListMailDomainsRequest& request, const ListMailDomainsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2456         void ListMailboxExportJobsAsyncHelper(const Model::ListMailboxExportJobsRequest& request, const ListMailboxExportJobsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2457         void ListMailboxPermissionsAsyncHelper(const Model::ListMailboxPermissionsRequest& request, const ListMailboxPermissionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2458         void ListMobileDeviceAccessOverridesAsyncHelper(const Model::ListMobileDeviceAccessOverridesRequest& request, const ListMobileDeviceAccessOverridesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2459         void ListMobileDeviceAccessRulesAsyncHelper(const Model::ListMobileDeviceAccessRulesRequest& request, const ListMobileDeviceAccessRulesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2460         void ListOrganizationsAsyncHelper(const Model::ListOrganizationsRequest& request, const ListOrganizationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2461         void ListResourceDelegatesAsyncHelper(const Model::ListResourceDelegatesRequest& request, const ListResourceDelegatesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2462         void ListResourcesAsyncHelper(const Model::ListResourcesRequest& request, const ListResourcesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2463         void ListTagsForResourceAsyncHelper(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2464         void ListUsersAsyncHelper(const Model::ListUsersRequest& request, const ListUsersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2465         void PutAccessControlRuleAsyncHelper(const Model::PutAccessControlRuleRequest& request, const PutAccessControlRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2466         void PutInboundDmarcSettingsAsyncHelper(const Model::PutInboundDmarcSettingsRequest& request, const PutInboundDmarcSettingsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2467         void PutMailboxPermissionsAsyncHelper(const Model::PutMailboxPermissionsRequest& request, const PutMailboxPermissionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2468         void PutMobileDeviceAccessOverrideAsyncHelper(const Model::PutMobileDeviceAccessOverrideRequest& request, const PutMobileDeviceAccessOverrideResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2469         void PutRetentionPolicyAsyncHelper(const Model::PutRetentionPolicyRequest& request, const PutRetentionPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2470         void RegisterMailDomainAsyncHelper(const Model::RegisterMailDomainRequest& request, const RegisterMailDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2471         void RegisterToWorkMailAsyncHelper(const Model::RegisterToWorkMailRequest& request, const RegisterToWorkMailResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2472         void ResetPasswordAsyncHelper(const Model::ResetPasswordRequest& request, const ResetPasswordResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2473         void StartMailboxExportJobAsyncHelper(const Model::StartMailboxExportJobRequest& request, const StartMailboxExportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2474         void TagResourceAsyncHelper(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2475         void UntagResourceAsyncHelper(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2476         void UpdateDefaultMailDomainAsyncHelper(const Model::UpdateDefaultMailDomainRequest& request, const UpdateDefaultMailDomainResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2477         void UpdateMailboxQuotaAsyncHelper(const Model::UpdateMailboxQuotaRequest& request, const UpdateMailboxQuotaResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2478         void UpdateMobileDeviceAccessRuleAsyncHelper(const Model::UpdateMobileDeviceAccessRuleRequest& request, const UpdateMobileDeviceAccessRuleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2479         void UpdatePrimaryEmailAddressAsyncHelper(const Model::UpdatePrimaryEmailAddressRequest& request, const UpdatePrimaryEmailAddressResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2480         void UpdateResourceAsyncHelper(const Model::UpdateResourceRequest& request, const UpdateResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
2481 
2482       Aws::String m_uri;
2483       Aws::String m_configScheme;
2484       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
2485   };
2486 
2487 } // namespace WorkMail
2488 } // namespace Aws
2489